From ce7233f4efc3ad8720e58063f3a9c95d8096c9b9 Mon Sep 17 00:00:00 2001 From: Pablo Fernandez Date: Thu, 16 Mar 2023 18:55:16 +0100 Subject: [PATCH 001/773] Initial commit --- LICENSE | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..2a6ea523 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Pablo Fernandez + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. From 09e5e032b2379e1f1574f26e77aad555b161b3f5 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Thu, 16 Mar 2023 18:58:24 +0100 Subject: [PATCH 002/773] initial commit --- .editorconfig | 8 + .eslintignore | 1 + .eslintrc.json | 3 + .gitignore | 4 + .prettierrc.js | 4 + README.md | 175 ++ config/fileTransformer.js | 9 + config/tsconfig.cjs.json | 7 + config/tsconfig.esm.json | 8 + config/tsconfig.types.json | 8 + config/tsconfig.umd.json | 7 + config/webpack.config.js | 30 + examples/README.md | 1 + examples/profile-crawler/README.md | 4 + examples/profile-crawler/config.json | 5 + examples/profile-crawler/package-lock.json | 2061 ++++++++++++++++++++ examples/profile-crawler/package.json | 26 + examples/profile-crawler/src/index.ts | 84 + examples/profile-crawler/src/queue.ts | 75 + examples/profile-crawler/tsconfig.json | 103 + package.json | 37 + src/events/index.ts | 4 + src/index.ts | 85 + src/relay/index.ts | 72 + src/relay/pool/index.ts | 28 + src/relay/score.ts | 2 + src/relay/sets/calculate.ts | 57 + src/relay/sets/index.ts | 48 + src/signers/index.ts | 1 + src/signers/nip07/index.ts | 7 + src/subscription/index.ts | 80 + src/user/index.ts | 114 ++ src/user/profile.ts | 28 + tools/cleanup | 29 + tsconfig.json | 71 + 35 files changed, 3286 insertions(+) create mode 100644 .editorconfig create mode 100644 .eslintignore create mode 100644 .eslintrc.json create mode 100644 .gitignore create mode 100644 .prettierrc.js create mode 100644 README.md create mode 100644 config/fileTransformer.js create mode 100644 config/tsconfig.cjs.json create mode 100644 config/tsconfig.esm.json create mode 100644 config/tsconfig.types.json create mode 100644 config/tsconfig.umd.json create mode 100644 config/webpack.config.js create mode 100644 examples/README.md create mode 100644 examples/profile-crawler/README.md create mode 100644 examples/profile-crawler/config.json create mode 100644 examples/profile-crawler/package-lock.json create mode 100644 examples/profile-crawler/package.json create mode 100644 examples/profile-crawler/src/index.ts create mode 100644 examples/profile-crawler/src/queue.ts create mode 100644 examples/profile-crawler/tsconfig.json create mode 100644 package.json create mode 100644 src/events/index.ts create mode 100644 src/index.ts create mode 100644 src/relay/index.ts create mode 100644 src/relay/pool/index.ts create mode 100644 src/relay/score.ts create mode 100644 src/relay/sets/calculate.ts create mode 100644 src/relay/sets/index.ts create mode 100644 src/signers/index.ts create mode 100644 src/signers/nip07/index.ts create mode 100644 src/subscription/index.ts create mode 100644 src/user/index.ts create mode 100644 src/user/profile.ts create mode 100644 tools/cleanup create mode 100644 tsconfig.json diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..79fe8026 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,8 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +insert_final_newline = true diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 00000000..567609b1 --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +build/ diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 00000000..f95bb333 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "./node_modules/gts/" +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..dfbf1548 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +**/node_modules +**/build +**/dist +**/.vscode diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 00000000..850c00b3 --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,4 @@ +module.exports = { + ...require('gts/.prettierrc.json'), + "tabWidth": 4 +} diff --git a/README.md b/README.md new file mode 100644 index 00000000..8b11f14f --- /dev/null +++ b/README.md @@ -0,0 +1,175 @@ +# NDK + +## Features +- [ ] NIP-01 + - [ ] +- [ ] Caching adapters + * Server-side + - [ ] Redis + - [ ] In-memory + * Client-side + - [ ] LocalStorage + - [ ] IndexDB +- [ ] NIP-26: Event delegation +- [ ] NIP-57: Zaps +- [ ] NIP-65: Contacts' Relay list +* Subscription Management + - [ ] Buffered queries + - [ ] Auto-closing subscriptions +- [ ] Signing Adapters + - [ ] Private key + - [ ] NIP-07 + - [ ] NIP-26 + - [ ] NIP-46 +- [ ] Gossip model + - [ ] relay discovery via NIP-65 + - [ ] implicit relays discovery following pubkey usage + - [ ] implicit relays discovery following `t` tag usage + - [ ] explicit relays blacklist +- [ ] nostr-tools/SimplePool drop-in replacement + +## Caching +NDK provides out-of-the-box database-agnostic caching functionality to improve the +performance of applications. + +### Cached items +THe most important data to cache is *where* a user or note might be found. UX suffers +profoundly when this type of data cannot be found. The nostr protocol leaves beadcrums +of where a user or note might be. + +```ts +const redisAdapter = new RedisAdapter(redisUrl) +const ndk = new NDK({ cacheAdapter: redisAdapter }) +``` + +## Buffered queries +Clients often need to load data (e.g. profile data) from individual components at +once (e.g. initial page render). This typically causes multiple subscriptions to +be submitted fetching the same information and causing poor performance or getting +rate-limited/maxed out by relays. + +NDK implements a convenient subscription model, "buffered queries", where a named +subscription will be created after a customizable amount of time, so that multiple +components can append queries and get those queries + +## Intelligent relay selection +When a client submits a request through NDK, NDK will calculate which relays are +most likely able to satisfy this request. + +Queries submitted by the client might be broken into different queries if NDK +computes different relays. + +For example, say user A follows users B and C. If the NDK client uses + +```ts +const ndk = new NDK({ explicitRelays: ['wss://nos.lol'] }) +const userA = ndk.getUser('userA'); +const feedEvents = await userA.feed(); +``` + +This would result in the following request: + +```json +{ "kinds": [1], "authors": [ "userB", "userC" ] } +``` + +But if NDK has observed that `userB` tends to write to `wss://userb.xyz` and +`userC` tends to write to `wss://userc.io` , NDK will send the following queries. + +```json +// to userA's explicit relay wss://nos.lol *if* userB and userC have been seen on that relay +{ "kinds": [1], "authors": [ "userB", "userC" ] } + +// to wss://userb.xyz +{ "kinds": [1], "authors": [ "userB" ] } + +// to wss://userc.io +{ "kinds": [1], "authors": [ "userC" ] } +``` + + + + +```ts +// Component 1 +ndk.bufferedSubscription({ kinds: [0], authors: ['pubkey-1'] }, "profiles", 500); + +// Component 2 +ndk.bufferedSubscription({ kinds: [0], authors: ['pubkey-2'] }, "profiles", 500); + +// after 500ms of the first call, a subscription will be created with filter +// { kinds: [0], authors: [ 'pubkey-1', 'pubkey-2' ]} +``` + +## Auto-closing subscriptions +Often clients want to fetch data but they don't necessarily need to occupy a connection +to the relay. + +The `autoclose` flag will make the connection close immediately after EOSE is received. +An integer `autoclose` will close the connection after that amount of ms after EOSE is received. + +```ts +ndk.subscription({kinds:[0], authors:['...']}, { autoclose: true }) +``` + +* NDK class provides the main interface +* enables caller to provide a data storage layer for caching things +* NDK provides nice wrappers for convenient things + +```javascript +const ndk = new NDK({ explicitRelays, privateKey }); +const pablo = ndk.getProfile('npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft') +``` + +* Convenience classes provide access to construct events + ```javascript + const pablo = ndk.getProfile('npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft') + pablo.name = 'Pablo'; + await pablo.save(); + ``` + +### Creating events +```ts +const ndk = new NDK({ explicitRelays }) +const event = ndk.event() +event.kind = 0; +event.content = "This is cool, I'm going to autotag @jack@cashapp.com" +await event.publish() +``` + +### Liking someone else's event +```ts +const event = await ndk.events({ author: 'jack@cashapp.com' })[0] +await event.react('🤙') +``` + +* Provides access to see status + +### Signing Events via NIP-46 +```ts +const signingAdapter = new NDK.RemoteSignerAdapter() +const ndk = new NDK({ signingAdapter }) +const event = ndk.event() +event.kind = 0; +event.content = "This event is signed via NIP-46." +await event.publish() +``` + +```ts +const zap = +``` + + +##### Building a profile caching proxy + + + +# Architecture +Users of NDK should instantiate a single NDK instance. + +That instance tracks state with all relays connected, explicit and otherwise. + +All relays are tracked in a single pool that handles connection errors/reconnection logic. + +RelaySets are assembled ad-hoc as needed depending on the queries set, although some +RelaySets might be long-lasting, like the `explicitRelays` specified by the user. \ No newline at end of file diff --git a/config/fileTransformer.js b/config/fileTransformer.js new file mode 100644 index 00000000..39172bce --- /dev/null +++ b/config/fileTransformer.js @@ -0,0 +1,9 @@ +// source: https://jestjs.io/docs/code-transformation#examples + +const path = require('path'); + +module.exports = { + process(src, filename, config, options) { + return 'module.exports = ' + JSON.stringify(path.basename(filename)) + ';'; + }, +}; diff --git a/config/tsconfig.cjs.json b/config/tsconfig.cjs.json new file mode 100644 index 00000000..6c52e127 --- /dev/null +++ b/config/tsconfig.cjs.json @@ -0,0 +1,7 @@ +{ + "extends": "../tsconfig", + "compilerOptions": { + "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, + "outDir": "../dist/cjs" /* Redirect output structure to the directory. */ + } +} diff --git a/config/tsconfig.esm.json b/config/tsconfig.esm.json new file mode 100644 index 00000000..1c3ce177 --- /dev/null +++ b/config/tsconfig.esm.json @@ -0,0 +1,8 @@ +{ + "extends": "../tsconfig", + "compilerOptions": { + "moduleResolution": "node", + "module": "ESNext" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, + "outDir": "../dist/esm" /* Redirect output structure to the directory. */ + } +} diff --git a/config/tsconfig.types.json b/config/tsconfig.types.json new file mode 100644 index 00000000..8de87ee2 --- /dev/null +++ b/config/tsconfig.types.json @@ -0,0 +1,8 @@ +{ + "extends": "../tsconfig", + "compilerOptions": { + "declaration": true /* Generates corresponding '.d.ts' file. */, + "emitDeclarationOnly": true, + "outDir": "../dist/types" /* Redirect output structure to the directory. */ + } +} diff --git a/config/tsconfig.umd.json b/config/tsconfig.umd.json new file mode 100644 index 00000000..5559c666 --- /dev/null +++ b/config/tsconfig.umd.json @@ -0,0 +1,7 @@ +{ + "extends": "../tsconfig", + "compilerOptions": { + "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, + "declaration": false /* Generates corresponding '.d.ts' file. */ + } +} diff --git a/config/webpack.config.js b/config/webpack.config.js new file mode 100644 index 00000000..cbd63885 --- /dev/null +++ b/config/webpack.config.js @@ -0,0 +1,30 @@ +const path = require('path') + +module.exports = { + mode: 'production', + entry: './src/index.ts', + output: { + path: path.resolve(__dirname, '../dist/umd'), + filename: 'index.js', + library: 'exampleTypescriptPackage', + libraryTarget: 'umd', + globalObject: 'this', + }, + module: { + rules: [ + { + test: /\.ts(x*)?$/, + exclude: /node_modules/, + use: { + loader: 'ts-loader', + options: { + configFile: 'config/tsconfig.umd.json', + }, + }, + }, + ], + }, + resolve: { + extensions: ['.ts', '.js', '.tsx', '.jsx'], + }, +} diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 00000000..18553663 --- /dev/null +++ b/examples/README.md @@ -0,0 +1 @@ +This directory contains examples of using NDK. diff --git a/examples/profile-crawler/README.md b/examples/profile-crawler/README.md new file mode 100644 index 00000000..f7adbc47 --- /dev/null +++ b/examples/profile-crawler/README.md @@ -0,0 +1,4 @@ +# Profile Crawler +This example is a real tool that powers building wss://profiles.f7z.io -- a gossip aggregator relay. + +This tool fetches \ No newline at end of file diff --git a/examples/profile-crawler/config.json b/examples/profile-crawler/config.json new file mode 100644 index 00000000..0e748aa3 --- /dev/null +++ b/examples/profile-crawler/config.json @@ -0,0 +1,5 @@ +{ + "explicitRelays": [ + "wss://nos.lol" + ] +} \ No newline at end of file diff --git a/examples/profile-crawler/package-lock.json b/examples/profile-crawler/package-lock.json new file mode 100644 index 00000000..58f9f967 --- /dev/null +++ b/examples/profile-crawler/package-lock.json @@ -0,0 +1,2061 @@ +{ + "name": "profile-crawler", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "profile-crawler", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "knex": "^2.4.2", + "nostr-tools": "^1.7.4", + "pg": "^8.10.0", + "websocket-polyfill": "^0.0.3" + }, + "devDependencies": { + "nodemon": "^2.0.21", + "ts-node": "^10.9.1", + "typescript": "^4.9.5" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@noble/hashes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.0.0.tgz", + "integrity": "sha512-DZVbtY62kc3kkBtMHqwCOfXrT/hnoORy5BJ4+HU1IR59X0KWAOqsfzQPcUl/lQLlG7qXbe/fZ3r/emxtAl+sqg==" + }, + "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/@scure/base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", + "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@scure/bip32": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/@scure/bip32/node_modules/@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@scure/bip39": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/@scure/bip39/node_modules/@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.15.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.1.tgz", + "integrity": "sha512-U2TWca8AeHSmbpi314QBESRk7oPjSZjDsR+c+H4ECC1l+kFgpZf8Ydhv3SJpPy51VyZHHqxlb6mTTqYNNRVAIw==", + "dev": true, + "peer": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer-writer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", + "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/bufferutil": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", + "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==" + }, + "node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "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-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/getopts": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.3.0.tgz", + "integrity": "sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==" + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/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-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true + }, + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/knex": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/knex/-/knex-2.4.2.tgz", + "integrity": "sha512-tMI1M7a+xwHhPxjbl/H9K1kHX+VncEYcvCx5K00M16bWvpYPKAZd6QrCu68PtHAdIZNQPWZn0GVhqVBEthGWCg==", + "dependencies": { + "colorette": "2.0.19", + "commander": "^9.1.0", + "debug": "4.3.4", + "escalade": "^3.1.1", + "esm": "^3.2.25", + "get-package-type": "^0.1.0", + "getopts": "2.3.0", + "interpret": "^2.2.0", + "lodash": "^4.17.21", + "pg-connection-string": "2.5.0", + "rechoir": "^0.8.0", + "resolve-from": "^5.0.0", + "tarn": "^3.0.2", + "tildify": "2.0.0" + }, + "bin": { + "knex": "bin/cli.js" + }, + "engines": { + "node": ">=12" + }, + "peerDependenciesMeta": { + "better-sqlite3": { + "optional": true + }, + "mysql": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "pg": { + "optional": true + }, + "pg-native": { + "optional": true + }, + "sqlite3": { + "optional": true + }, + "tedious": { + "optional": true + } + } + }, + "node_modules/knex/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/knex/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/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "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==", + "dev": true + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "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/nodemon": { + "version": "2.0.21", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.21.tgz", + "integrity": "sha512-djN/n2549DUtY33S7o1djRCd7dEm0kBnj9c7S9XVXqRUbuggN1MZH/Nqa+5RFQr63Fbefq37nFXAE9VU86yL1A==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nostr-tools": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.7.4.tgz", + "integrity": "sha512-YowDJ+S3UW9KCYPDZfZXXMITrJSMjiCmFOK5HohyKkg+w6EipFUTkFRBPRA2BTLXO/qw8gukKXfL0B7Dv3jtcQ==", + "dependencies": { + "@noble/hashes": "1.0.0", + "@noble/secp256k1": "^1.7.1", + "@scure/base": "^1.1.1", + "@scure/bip32": "^1.1.5", + "@scure/bip39": "^1.1.1", + "prettier": "^2.8.4" + } + }, + "node_modules/packet-reader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", + "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/pg": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.10.0.tgz", + "integrity": "sha512-ke7o7qSTMb47iwzOSaZMfeR7xToFdkE71ifIipOAAaLIM0DYzfOAXlgFFmYUIE2BcJtvnVlGCID84ZzCegE8CQ==", + "dependencies": { + "buffer-writer": "2.0.0", + "packet-reader": "1.0.0", + "pg-connection-string": "^2.5.0", + "pg-pool": "^3.6.0", + "pg-protocol": "^1.6.0", + "pg-types": "^2.1.0", + "pgpass": "1.x" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-connection-string": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", + "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-pool": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.0.tgz", + "integrity": "sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ==", + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", + "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "dependencies": { + "split2": "^4.1.0" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prettier": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", + "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/simple-update-notifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", + "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", + "dev": true, + "dependencies": { + "semver": "~7.0.0" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/split2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", + "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tarn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz", + "integrity": "sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/tildify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", + "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tstl": { + "version": "2.5.13", + "resolved": "https://registry.npmjs.org/tstl/-/tstl-2.5.13.tgz", + "integrity": "sha512-h9wayHHFI5+yqt8iau0vqH96cTNhezhZ/Fk/hrIdpfkiMu3lg9nzyvMfs5bIdX51IVzZO6DudLqhkL/rVXpT6g==" + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true + }, + "node_modules/utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/websocket": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", + "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", + "dependencies": { + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/websocket-polyfill": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/websocket-polyfill/-/websocket-polyfill-0.0.3.tgz", + "integrity": "sha512-pF3kR8Uaoau78MpUmFfzbIRxXj9PeQrCuPepGE6JIsfsJ/o/iXr07Q2iQNzKSSblQJ0FiGWlS64N4pVSm+O3Dg==", + "dependencies": { + "tstl": "^2.0.7", + "websocket": "^1.0.28" + } + }, + "node_modules/websocket/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/websocket/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", + "engines": { + "node": ">=0.10.32" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + } + }, + "dependencies": { + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@noble/hashes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.0.0.tgz", + "integrity": "sha512-DZVbtY62kc3kkBtMHqwCOfXrT/hnoORy5BJ4+HU1IR59X0KWAOqsfzQPcUl/lQLlG7qXbe/fZ3r/emxtAl+sqg==" + }, + "@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==" + }, + "@scure/base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", + "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==" + }, + "@scure/bip32": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "requires": { + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" + }, + "dependencies": { + "@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==" + } + } + }, + "@scure/bip39": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "requires": { + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" + }, + "dependencies": { + "@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==" + } + } + }, + "@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, + "@types/node": { + "version": "18.15.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.1.tgz", + "integrity": "sha512-U2TWca8AeHSmbpi314QBESRk7oPjSZjDsR+c+H4ECC1l+kFgpZf8Ydhv3SJpPy51VyZHHqxlb6mTTqYNNRVAIw==", + "dev": true, + "peer": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "buffer-writer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", + "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==" + }, + "bufferutil": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", + "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", + "requires": { + "node-gyp-build": "^4.3.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==" + }, + "commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "requires": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==" + }, + "ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "requires": { + "type": "^2.7.2" + }, + "dependencies": { + "type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" + } + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" + }, + "getopts": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.3.0.tgz", + "integrity": "sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==" + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true + }, + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "requires": { + "has": "^1.0.3" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "knex": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/knex/-/knex-2.4.2.tgz", + "integrity": "sha512-tMI1M7a+xwHhPxjbl/H9K1kHX+VncEYcvCx5K00M16bWvpYPKAZd6QrCu68PtHAdIZNQPWZn0GVhqVBEthGWCg==", + "requires": { + "colorette": "2.0.19", + "commander": "^9.1.0", + "debug": "4.3.4", + "escalade": "^3.1.1", + "esm": "^3.2.25", + "get-package-type": "^0.1.0", + "getopts": "2.3.0", + "interpret": "^2.2.0", + "lodash": "^4.17.21", + "pg-connection-string": "2.5.0", + "rechoir": "^0.8.0", + "resolve-from": "^5.0.0", + "tarn": "^3.0.2", + "tildify": "2.0.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" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "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==" + }, + "nodemon": { + "version": "2.0.21", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.21.tgz", + "integrity": "sha512-djN/n2549DUtY33S7o1djRCd7dEm0kBnj9c7S9XVXqRUbuggN1MZH/Nqa+5RFQr63Fbefq37nFXAE9VU86yL1A==", + "dev": true, + "requires": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + } + }, + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "nostr-tools": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.7.4.tgz", + "integrity": "sha512-YowDJ+S3UW9KCYPDZfZXXMITrJSMjiCmFOK5HohyKkg+w6EipFUTkFRBPRA2BTLXO/qw8gukKXfL0B7Dv3jtcQ==", + "requires": { + "@noble/hashes": "1.0.0", + "@noble/secp256k1": "^1.7.1", + "@scure/base": "^1.1.1", + "@scure/bip32": "^1.1.5", + "@scure/bip39": "^1.1.1", + "prettier": "^2.8.4" + } + }, + "packet-reader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", + "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "pg": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.10.0.tgz", + "integrity": "sha512-ke7o7qSTMb47iwzOSaZMfeR7xToFdkE71ifIipOAAaLIM0DYzfOAXlgFFmYUIE2BcJtvnVlGCID84ZzCegE8CQ==", + "requires": { + "buffer-writer": "2.0.0", + "packet-reader": "1.0.0", + "pg-connection-string": "^2.5.0", + "pg-pool": "^3.6.0", + "pg-protocol": "^1.6.0", + "pg-types": "^2.1.0", + "pgpass": "1.x" + } + }, + "pg-connection-string": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", + "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" + }, + "pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" + }, + "pg-pool": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.0.tgz", + "integrity": "sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ==", + "requires": {} + }, + "pg-protocol": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", + "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" + }, + "pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "requires": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + } + }, + "pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "requires": { + "split2": "^4.1.0" + } + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" + }, + "postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==" + }, + "postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==" + }, + "postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "requires": { + "xtend": "^4.0.0" + } + }, + "prettier": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", + "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==" + }, + "pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "requires": { + "resolve": "^1.20.0" + } + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "simple-update-notifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", + "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", + "dev": true, + "requires": { + "semver": "~7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "split2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", + "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "tarn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz", + "integrity": "sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==" + }, + "tildify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", + "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "requires": { + "nopt": "~1.0.10" + } + }, + "ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + } + }, + "tstl": { + "version": "2.5.13", + "resolved": "https://registry.npmjs.org/tstl/-/tstl-2.5.13.tgz", + "integrity": "sha512-h9wayHHFI5+yqt8iau0vqH96cTNhezhZ/Fk/hrIdpfkiMu3lg9nzyvMfs5bIdX51IVzZO6DudLqhkL/rVXpT6g==" + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true + }, + "undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true + }, + "utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "requires": { + "node-gyp-build": "^4.3.0" + } + }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "websocket": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", + "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", + "requires": { + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "websocket-polyfill": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/websocket-polyfill/-/websocket-polyfill-0.0.3.tgz", + "integrity": "sha512-pF3kR8Uaoau78MpUmFfzbIRxXj9PeQrCuPepGE6JIsfsJ/o/iXr07Q2iQNzKSSblQJ0FiGWlS64N4pVSm+O3Dg==", + "requires": { + "tstl": "^2.0.7", + "websocket": "^1.0.28" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==" + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + } + } +} diff --git a/examples/profile-crawler/package.json b/examples/profile-crawler/package.json new file mode 100644 index 00000000..ba01599b --- /dev/null +++ b/examples/profile-crawler/package.json @@ -0,0 +1,26 @@ +{ + "name": "profile-crawler", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "dev": "ts-node src/index.ts", + "build": "tsc", + "start": "node --es-module-specifier-resolution=node ./dist/index.js", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "pablof7z", + "license": "MIT", + "type": "module", + "devDependencies": { + "nodemon": "^2.0.21", + "ts-node": "^10.9.1", + "typescript": "^4.9.5" + }, + "dependencies": { + "knex": "^2.4.2", + "nostr-tools": "^1.7.4", + "pg": "^8.10.0", + "websocket-polyfill": "^0.0.3" + } +} diff --git a/examples/profile-crawler/src/index.ts b/examples/profile-crawler/src/index.ts new file mode 100644 index 00000000..59b2ba96 --- /dev/null +++ b/examples/profile-crawler/src/index.ts @@ -0,0 +1,84 @@ +import 'websocket-polyfill'; +import NDK from './ndk'; +import NDKUser from './ndk/user'; +import {Queue} from './queue'; + +// Define read NDK -- this seggregation will not be needed +const ndk = new NDK({ + explicitRelayUrls: ['wss://nos.lol', 'wss://relay.nostr.band'], +}); + +// Define write NDK +const writeNdk = new NDK({ + explicitRelayUrls: ['wss://profiles.f7z.io'], +}); + +// Connect both +await ndk.connect(); +await writeNdk.connect(); + +const queue = new Queue(ndk, writeNdk, syncAllContactsFor); + +setupDynamicDelay(ndk, queue); + +queue.on('itemAdded', async () => { + await queue.processNext(); +}); + +const pablo = await ndk.getUser({ + npub: 'npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft', +}); + +if (pablo) { + syncAllContactsFor(ndk, writeNdk, pablo, queue); +} + +function setupDynamicDelay(ndk: NDK, queue: Queue) { + ndk.relayPool.on('notice', (relay, notice) => { + if (notice.includes('too fast') && queue.delayBetweenRequests < 5000) { + queue.delayBetweenRequests += 500; + console.log(`⚠️ Increasing delay to ${queue.delayBetweenRequests}`); + } else { + console.log(`Notice from ${relay.url}: ${notice}`); + } + }); + + setInterval(() => { + console.log(`Queue size: ${queue.items.length}`); + if (queue.delayBetweenRequests > 10) { + queue.delayBetweenRequests -= 10; + console.log(`⚠️ Decreasing delay to ${queue.delayBetweenRequests}`); + } + }, 12000); +} + +async function syncAllContactsFor( + ndk: NDK, + writeNdk: NDK, + user: NDKUser, + queue: Queue +): Promise { + const setMetadataEvents = await user.fetchProfile(); + + if (!setMetadataEvents || setMetadataEvents?.size < 0) { + return; + } + + setMetadataEvents.forEach(e => writeNdk.publish(e)); + + const follows = await user.follows(); + + const relayList = await user.relayList(); + + console.log( + `User ${user.profile?.displayName} has ${follows.size} follows and ${relayList.size} relays` + ); + + if (relayList) { + relayList.forEach(e => writeNdk.publish(e)); + } + + for (const follow of follows) { + queue.add(follow); + } +} diff --git a/examples/profile-crawler/src/queue.ts b/examples/profile-crawler/src/queue.ts new file mode 100644 index 00000000..0e073635 --- /dev/null +++ b/examples/profile-crawler/src/queue.ts @@ -0,0 +1,75 @@ +import NDK from './ndk'; +import { EventEmitter } from 'events'; +import NDKUser from './ndk/user'; +// import knex from 'knex'; + +// const uri = 'postgres://pablofernandez@localhost:5432/psbt_io_development'; +// const db = knex({ +// client: 'pg', +// connection: uri, +// debug: true, +// }); + +// const res = await db.queryBuilder().select('*').from('events').where({id: 'sdsdsd'}) + +export class Queue extends EventEmitter { + readonly items: NDKUser[]; + private processing: boolean; + private processedIds: Set; + private ndk: NDK; + private writeNdk: NDK; + private func; + public delayBetweenRequests = 0; + + constructor(ndk: NDK, writeNdk: NDK, func: Function) { + super(); + this.items = []; + this.processing = false; + this.processedIds = new Set(); + this.ndk = ndk; + this.writeNdk = writeNdk; + this.func = func; + } + + add(user: NDKUser): void { + // only if it hasn't been processed yet + if (this.processedIds.has(user.npub)) { + return; + } + + // only if it's not in the database already + // const res = await db.queryBuilder() + // .select('*') + // .from('events') + // .where({event_kind: 0, event_pubkey: user.hexpubkey()}) + // .then(console.log); + + this.items.push(user); + this.emit('itemAdded'); + } + + async processItem(user: NDKUser): Promise { + try { + await this.func(this.ndk, this.writeNdk, user, this); + } catch (e) { + console.trace(e); + } + } + + async processNext(): Promise { + if (this.processing || this.items.length === 0) return; + + this.processing = true; + const user = this.items.shift(); + + if (user && !this.processedIds.has(user.npub)) { + this.processedIds.add(user.npub); // Add the user id to the processed set + await this.processItem(user); + } + this.processing = false; + + if (this.items.length > 0) { + setTimeout(() => this.processNext(), this.delayBetweenRequests); + } + } +} \ No newline at end of file diff --git a/examples/profile-crawler/tsconfig.json b/examples/profile-crawler/tsconfig.json new file mode 100644 index 00000000..9cc49b6a --- /dev/null +++ b/examples/profile-crawler/tsconfig.json @@ -0,0 +1,103 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2017", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "esnext", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + "outDir": "dist", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..e74339a1 --- /dev/null +++ b/package.json @@ -0,0 +1,37 @@ +{ + "name": "ndk", + "version": "0.0.1", + "description": "Nostr Development Kit", + "main": "dist/cjs/index.js", + "module": "dist/esm/index.js", + "umd:main": "dist/umd/index.js", + "types": "dist/types/index.d.js", + "scripts": { + "build": "npm run build:cjs && npm run build:esm && npm run build:types", + "build:cjs": "node tools/cleanup cjs && tsc -p config/tsconfig.cjs.json", + "build:esm": "node tools/cleanup esm && tsc -p config/tsconfig.esm.json", + "build:types": "node tools/cleanup types && tsc -p config/tsconfig.types.json", + "package": "npm run build && npm pack", + "lint": "gts lint", + "clean": "gts clean", + "compile": "tsc", + "fix": "gts fix", + "prepare": "npm run compile", + "pretest": "npm run compile", + "posttest": "npm run lint" + }, + "keywords": [ + "nostr" + ], + "author": "pablof7z", + "license": "MIT", + "devDependencies": { + "@types/node": "^14.11.2", + "gts": "^3.1.1", + "typescript": "~4.7.0" + }, + "dependencies": { + "nostr-tools": "^1.6.0", + "websocket-polyfill": "^0.0.3" + } +} diff --git a/src/events/index.ts b/src/events/index.ts new file mode 100644 index 00000000..31c3430a --- /dev/null +++ b/src/events/index.ts @@ -0,0 +1,4 @@ +import {Event as NostrEvent} from 'nostr-tools'; + +export type Event = NostrEvent; +export type EventId = string; diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 00000000..38d5d494 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,85 @@ +export * from './relay'; +import {Event} from './events/'; +import {Pool} from './relay/pool/'; +import {Signer} from './signers/'; +import User, {UserParams} from './user/'; +import {RelaySet} from './relay/sets/'; +import {Filter, Subscription, SubscriptionOptions} from './subscription/'; +import { + calculateRelaySetFromFilter, + calculateRelaySetFromEvent, +} from './relay/sets/calculate'; + +export interface NDKConstructorParams { + explicitRelayUrls?: string[]; + signer?: Signer; +} +export interface GetUserParams extends UserParams { + nip05?: string; +} + +export default class NDK { + public relayPool?: Pool; + public signer?: Signer | undefined; + + public constructor(opts: NDKConstructorParams) { + if (opts.explicitRelayUrls) + this.relayPool = new Pool(opts.explicitRelayUrls); + } + + public async connect(): Promise { + return this.relayPool?.connect(); + } + + /** + * Get a User object + * + * @param opts + * @returns + */ + public async getUser(opts: GetUserParams): Promise { + let user: User | undefined; + + if (opts.nip05) { + user = await User.fromNip05(opts.nip05); + } else { + user = new User(opts); + } + + if (user) user.ndk = this; + return user; + } + + public subscribe( + relaySet: RelaySet, + filter: Filter, + opts: SubscriptionOptions + ): Subscription { + return relaySet.subscribe(filter, opts); + } + + public async publish(event: Event): Promise { + const relaySet = await calculateRelaySetFromEvent(this, event); + + return relaySet.publish(event); + } + + /** + * Fetch events + */ + public async fetchEvents(filter: Filter): Promise | null> { + const relaySet = await calculateRelaySetFromFilter(this, filter); + + return new Promise(resolve => { + const events: Set = new Set(); + const s = this.subscribe(relaySet, filter, {closeOnEose: true}); + + s.on('event', (event: Event) => { + events.add(event); + }); + s.on('eose', () => { + resolve(events); + }); + }); + } +} diff --git a/src/relay/index.ts b/src/relay/index.ts new file mode 100644 index 00000000..10aca09f --- /dev/null +++ b/src/relay/index.ts @@ -0,0 +1,72 @@ +import 'websocket-polyfill'; +import {relayInit, Event, Sub} from 'nostr-tools'; +import User from '../user'; +import {RelayScore} from './score'; +import {Subscription} from '../subscription/'; +import EventEmitter from 'events'; + +export class Relay extends EventEmitter { + readonly url: string; + readonly scores: Map; + private relay; + + public constructor(url: string) { + super(); + this.url = url; + this.relay = relayInit(url); + this.scores = new Map(); + + this.relay.on('connect', () => { + this.emit('connect'); + }); + + this.relay.on('disconnect', () => { + this.emit('disconnect'); + }); + + this.relay.on('notice', (notice: string) => this.handleNotice(notice)); + } + + public async connect(): Promise { + try { + await this.relay.connect(); + } catch (e) { + } + } + + async handleNotice(notice: string) { + this.emit('notice', this, notice); + } + + public subscribe(subscription: Subscription): Sub { + const {filter} = subscription; + + const sub = this.relay.sub([filter], { + id: subscription.subId, + }); + + sub.on('event', (event: Event) => { + subscription.eventReceived(event, this); + }); + + sub.on('eose', () => { + subscription.eoseReceived(this); + }); + + return sub; + } + + public async publish(event: Event): Promise { + this.relay.publish(event); + } + + /** + * Called when this relay has responded with an event but + * wasn't the fastest one. + * @param timeDiffInMs The time difference in ms between the fastest and this relay in milliseconds + */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars + public scoreSlowerEvent(timeDiffInMs: number): void { + // TODO + } +} diff --git a/src/relay/pool/index.ts b/src/relay/pool/index.ts new file mode 100644 index 00000000..b1571828 --- /dev/null +++ b/src/relay/pool/index.ts @@ -0,0 +1,28 @@ +import EventEmitter from 'events'; +import {Relay} from '../'; + +export class Pool extends EventEmitter { + public relays = new Map(); + public constructor(relayUrls: string[] = []) { + super(); + relayUrls.forEach(relayUrl => { + const relay = new Relay(relayUrl); + relay.on('notice', (relay, notice) => { + this.emit('notice', relay, notice); + }); + this.relays.set(relayUrl, relay); + }); + } + + public async connect(): Promise { + const promises: Promise[] = []; + this.relays.forEach(relay => { + promises.push(relay.connect()); + }); + await Promise.all(promises); + } + + public size(): number { + return this.relays.size; + } +} diff --git a/src/relay/score.ts b/src/relay/score.ts new file mode 100644 index 00000000..85a6b938 --- /dev/null +++ b/src/relay/score.ts @@ -0,0 +1,2 @@ +// TODO this will probably get more sophisticated +export type RelayScore = number; diff --git a/src/relay/sets/calculate.ts b/src/relay/sets/calculate.ts new file mode 100644 index 00000000..1f263e37 --- /dev/null +++ b/src/relay/sets/calculate.ts @@ -0,0 +1,57 @@ +import NDK from '../../'; +import {Relay} from '../'; +import {Event} from '../../events/'; +import {RelaySet} from './'; +import {Filter} from '../../subscription/'; + +/** + * Creates a RelaySet for the specified event. + * TODO: account for relays where tagged pubkeys or hashtags + * tend to write to. + * @param ndk {NDK} + * @param event {Event} + * @returns Promise + */ +export function calculateRelaySetFromEvent(ndk: NDK, event: Event): RelaySet { + const relays: Set = new Set(); + + ndk.relayPool.relays.forEach(relay => relays.add(relay)); + + return new RelaySet(relays); +} + +/** + * Creates a RelaySet for the specified filter + * @param ndk + * @param filter + * @returns Promise + */ +export function calculateRelaySetFromFilter( + ndk: NDK, + filter: Filter +): RelaySet { + const relays: Set = new Set(); + + ndk.relayPool.relays.forEach(relay => relays.add(relay)); + + return new RelaySet(relays); +} + +/** + * Calculates a number of RelaySets for each filter. + * @param ndk + * @param filters + */ +export function calculateRelaySetsFromFilters( + ndk: NDK, + filters: Filter[] +): Map { + const sets: Map = new Map(); + + filters.forEach(filter => { + const set = calculateRelaySetFromFilter(ndk, filter); + sets.set(filter, set); + }); + + return sets; +} diff --git a/src/relay/sets/index.ts b/src/relay/sets/index.ts new file mode 100644 index 00000000..00af441c --- /dev/null +++ b/src/relay/sets/index.ts @@ -0,0 +1,48 @@ +import {Relay} from '../'; +import {Event} from '../../events/'; +import {Subscription, SubscriptionOptions, Filter} from '../../subscription/'; + +/** + * A relay set is a group of relays. This grouping can be short-living, for a single + * REQ or can be long-lasting, for example for the explicit relay list the user + * has specified. + * + * Requests to relays should be sent through this interface. + */ +export class RelaySet { + readonly relays: Set; + + public constructor(relays: Set) { + this.relays = relays; + } + + public subscribe(filter: Filter, opts: SubscriptionOptions): Subscription { + const subscription = new Subscription(filter, this, opts); + + this.relays.forEach(relay => { + // TODO: if relay is not connected, don't try to send, but rather attach + // to connected event and send it at that moment if this subscription hasn't + // been destroyed + const sub = relay.subscribe(subscription); + subscription.relaySubscriptions.set(relay, sub); + }); + + return subscription; + } + + public async publish(event: Event): Promise { + this.relays.forEach(async relay => { + try { + // TODO: if relay is not connected, don't try to send, but rather attach + // to connected event and send it at that moment + await relay.publish(event); + } catch (e) { + console.log(e); + } + }); + } + + public size(): number { + return this.relays.size; + } +} diff --git a/src/signers/index.ts b/src/signers/index.ts new file mode 100644 index 00000000..31315a43 --- /dev/null +++ b/src/signers/index.ts @@ -0,0 +1 @@ +export class Signer {} diff --git a/src/signers/nip07/index.ts b/src/signers/nip07/index.ts new file mode 100644 index 00000000..1721e173 --- /dev/null +++ b/src/signers/nip07/index.ts @@ -0,0 +1,7 @@ +import {Signer} from '../'; + +export class Nip07Signer extends Signer { + public constructor() { + super(); + } +} diff --git a/src/subscription/index.ts b/src/subscription/index.ts new file mode 100644 index 00000000..0be06d31 --- /dev/null +++ b/src/subscription/index.ts @@ -0,0 +1,80 @@ +import {Filter as NostrFilter, Sub} from 'nostr-tools'; +import EventEmitter from 'events'; +import {Relay} from '../relay'; +import {RelaySet} from '../relay/sets/'; +import {EventId, Event} from '../events/'; + +export type Filter = NostrFilter; + +export interface SubscriptionOptions { + closeOnEose: boolean; +} + +export class Subscription extends EventEmitter { + readonly subId: string; + readonly filter: Filter; + readonly relaySet: RelaySet; + readonly opts: SubscriptionOptions; + public relaySubscriptions: Map; + + public constructor( + filter: Filter, + relaySet: RelaySet, + opts: SubscriptionOptions + ) { + super(); + this.subId = (Math.random() * 1000).toString(); + this.filter = filter; + this.relaySet = relaySet; + this.opts = opts; + this.relaySubscriptions = new Map(); + } + + // EVENT handling + private eventFirstSeen = new Map(); + private events = new Map(); + + public eventReceived(event: Event, relay: Relay) { + const eventAlreadySeen = this.events.has(event.id); + + if (eventAlreadySeen) { + if (this.eventFirstSeen.get(event.id)) { + const timeSinceFirstSeen = + Date.now() - (this.eventFirstSeen.get(event.id) || 0); + relay.scoreSlowerEvent(timeSinceFirstSeen); + } + + return; + } + + this.eventFirstSeen.set(event.id, Date.now()); + this.events.set(event.id, event); + this.emit('event', event, relay); + } + + // EOSE handling + private eosesSeen = new Set(); + private eoseTimeout: ReturnType | undefined; + + public eoseReceived(relay: Relay): void { + if (this.opts.closeOnEose) { + this.relaySubscriptions.get(relay)?.unsub(); + } + + this.eosesSeen.add(relay); + + const hasSeenAllEoses = this.eosesSeen.size === this.relaySet.size(); + + if (hasSeenAllEoses) { + this.emit('eose'); + } else { + if (this.eoseTimeout) { + clearTimeout(this.eoseTimeout); + } + + this.eoseTimeout = setTimeout(() => { + this.emit('eose'); + }, 500); + } + } +} diff --git a/src/user/index.ts b/src/user/index.ts new file mode 100644 index 00000000..cdab67b9 --- /dev/null +++ b/src/user/index.ts @@ -0,0 +1,114 @@ +import {nip05, nip19} from 'nostr-tools'; +import {Event} from '../events/'; +import UserProfile from './profile'; +import NDK from '../'; + +export interface UserParams { + npub?: string; + hexpubkey?: string; + nip05?: string; + relayUrls?: string[]; +} + +/** + * Represents a pubkey. + */ +export default class User { + public ndk: NDK | undefined; + public profile?: UserProfile; + readonly npub: string = ''; + readonly relayUrls: string[] = []; + + public constructor(opts: UserParams) { + if (opts.npub) this.npub = opts.npub; + + if (opts.hexpubkey) { + this.npub = nip19.npubEncode(opts.hexpubkey); + } + + if (opts.relayUrls) { + this.relayUrls = opts.relayUrls; + } + } + + static async fromNip05(nip05Id: string): Promise { + const profile = await nip05.queryProfile(nip05Id); + + if (profile) { + return new User({ + hexpubkey: profile.pubkey, + relayUrls: profile.relays, + }); + } + } + + public hexpubkey(): string { + return nip19.decode(this.npub).data as string; + } + + public async fetchProfile(): Promise | null> { + if (!this.ndk) throw new Error('NDK not set'); + + if (!this.profile) this.profile = new UserProfile(); + + const setMetadataEvents = await this.ndk.fetchEvents({ + kinds: [0], + authors: [this.hexpubkey()], + }); + + if (setMetadataEvents) { + // sort setMetadataEvents by created_at in ascending order + const sortedSetMetadataEvents = Array.from(setMetadataEvents).sort( + (a, b) => a.created_at - b.created_at + ); + + sortedSetMetadataEvents.forEach(event => + this.profile?.mergeEvent(event) + ); + } + + return setMetadataEvents; + } + + public async follows(): Promise> { + if (!this.ndk) throw new Error('NDK not set'); + + const contactListEvents = await this.ndk.fetchEvents({ + kinds: [3], + authors: [this.hexpubkey()], + }); + + if (contactListEvents) { + const contactList = new Set(); + + contactListEvents.forEach(event => { + event.tags.forEach(tag => { + if (tag[0] === 'p') { + const user = new User({hexpubkey: tag[1]}); + user.ndk = this.ndk; + contactList.add(user); + } + }); + }); + + return contactList; + } + + return new Set(); + } + + public async relayList(): Promise> { + if (!this.ndk) throw new Error('NDK not set'); + + const relayListEvents = await this.ndk.fetchEvents({ + kinds: [10002], + authors: [this.hexpubkey()], + }); + + if (relayListEvents) { + return relayListEvents; + } + + return new Set(); + } +} diff --git a/src/user/profile.ts b/src/user/profile.ts new file mode 100644 index 00000000..0021c898 --- /dev/null +++ b/src/user/profile.ts @@ -0,0 +1,28 @@ +import {Event} from '../events/'; + +export default class UserProfile { + name?: string; + displayName?: string; + image?: string; + banner?: string; + bio?: string; + nip05?: string; + lud16?: string; + about?: string; + zapService?: string; + + mergeEvent(event: Event): void { + const payload = JSON.parse(event.content); + + if (payload.name) this.name = payload.name; + if (payload.display_name) this.displayName = payload.display_name; + if (payload.displayName) this.displayName = payload.displayName; + if (payload.image) this.image = payload.image; + if (payload.banner) this.banner = payload.banner; + if (payload.bio) this.bio = payload.bio; + if (payload.nip05) this.nip05 = payload.nip05; + if (payload.lud16) this.lud16 = payload.lud16; + if (payload.about) this.about = payload.about; + if (payload.zapService) this.zapService = payload.zapService; + } +} diff --git a/tools/cleanup b/tools/cleanup new file mode 100644 index 00000000..e3215a48 --- /dev/null +++ b/tools/cleanup @@ -0,0 +1,29 @@ +/* eslint-disable */ +const fs = require('fs') +const Path = require('path') +/* eslint-enable */ + +const deleteFolderRecursive = (path) => { + if (fs.existsSync(path)) { + fs.readdirSync(path).forEach((file) => { + const curPath = Path.join(path, file) + if (fs.lstatSync(curPath).isDirectory()) { + deleteFolderRecursive(curPath) + } else { + fs.unlinkSync(curPath) + } + }) + fs.rmdirSync(path) + } +} + +const folder = process.argv.slice(2)[0] + +if (folder) { + deleteFolderRecursive(Path.join(__dirname, '../dist', folder)) +} else { + deleteFolderRecursive(Path.join(__dirname, '../dist/cjs')) + deleteFolderRecursive(Path.join(__dirname, '../dist/esm')) + deleteFolderRecursive(Path.join(__dirname, '../dist/umd')) + deleteFolderRecursive(Path.join(__dirname, '../dist/types')) +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..557581cf --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,71 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "es5" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, + // "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ + // "lib": [], /* Specify library files to be included in the compilation. */ + // "allowJs": true, /* Allow javascript files to be compiled. */ + // "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + // "declaration": true, /* Generates corresponding '.d.ts' file. */ + // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + // "sourceMap": true, /* Generates corresponding '.map' file. */ + // "outFile": "./", /* Concatenate and emit output to single file. */ + // "outDir": "./", /* Redirect output structure to the directory. */ + // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + + /* Module Resolution Options */ + "moduleResolution": "node" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */, + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + // "resolveJsonModule": true, + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + + /* Advanced Options */ + // "skipLibCheck": true, /* Skip type checking of declaration files. */ + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + }, + "include": ["src/**/*"] +} From 526a6031e6d8805a8487c1ecebdafb9d6cba0174 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Mon, 27 Mar 2023 20:08:34 +0300 Subject: [PATCH 003/773] basically another initial commit --- .prettierrc.js | 4 -- README.md | 103 ++++++++++++++----------------- config/fileTransformer.js | 9 --- config/webpack.config.js | 30 --------- package.json | 8 +++ src/events/index.ts | 76 ++++++++++++++++++++++- src/index.ts | 61 ++++++++++++------ src/relay/index.ts | 18 +++--- src/relay/pool/index.ts | 2 +- src/relay/sets/calculate.ts | 6 +- src/relay/sets/index.ts | 6 +- src/signers/index.ts | 12 +++- src/signers/nip07/index.ts | 23 ++++++- src/signers/private-key/index.ts | 30 +++++++++ src/subscription/index.ts | 14 +++-- src/user/index.ts | 18 +++--- src/user/profile.ts | 33 +++++----- tsconfig.json | 2 +- 18 files changed, 286 insertions(+), 169 deletions(-) delete mode 100644 .prettierrc.js delete mode 100644 config/fileTransformer.js delete mode 100644 config/webpack.config.js create mode 100644 src/signers/private-key/index.ts diff --git a/.prettierrc.js b/.prettierrc.js deleted file mode 100644 index 850c00b3..00000000 --- a/.prettierrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - ...require('gts/.prettierrc.json'), - "tabWidth": 4 -} diff --git a/README.md b/README.md index 8b11f14f..0497f1c8 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ - [ ] LocalStorage - [ ] IndexDB - [ ] NIP-26: Event delegation +- [ ] NIP-41: Relay authentication - [ ] NIP-57: Zaps - [ ] NIP-65: Contacts' Relay list * Subscription Management @@ -21,21 +22,19 @@ - [ ] NIP-07 - [ ] NIP-26 - [ ] NIP-46 -- [ ] Gossip model - - [ ] relay discovery via NIP-65 +- [ ] Relay discovery + - [ ] gossip-model (NIP-65) - [ ] implicit relays discovery following pubkey usage - [ ] implicit relays discovery following `t` tag usage - [ ] explicit relays blacklist -- [ ] nostr-tools/SimplePool drop-in replacement +- [ ] nostr-tools/SimplePool drop-in replacement interface ## Caching NDK provides out-of-the-box database-agnostic caching functionality to improve the performance of applications. ### Cached items -THe most important data to cache is *where* a user or note might be found. UX suffers -profoundly when this type of data cannot be found. The nostr protocol leaves beadcrums -of where a user or note might be. +The most important data to cache is *where* a user or note might be found. UX suffers profoundly when this type of data cannot be found. The nostr protocol leaves beadcrums of where a user or note might be. ```ts const redisAdapter = new RedisAdapter(redisUrl) @@ -48,9 +47,20 @@ once (e.g. initial page render). This typically causes multiple subscriptions to be submitted fetching the same information and causing poor performance or getting rate-limited/maxed out by relays. -NDK implements a convenient subscription model, "buffered queries", where a named +NDK implements a convenient subscription model, *buffered queries*, where a named subscription will be created after a customizable amount of time, so that multiple -components can append queries and get those queries +components can append queries. + +```ts +// Component 1 +ndk.bufferedSubscription({ kinds: [0], authors: ['pubkey-1'] }, "profiles", 500); + +// Component 2 +ndk.bufferedSubscription({ kinds: [0], authors: ['pubkey-2'] }, "profiles", 500); + +// after 500ms of the first call, a subscription will be created with filter +// { kinds: [0], authors: [ 'pubkey-1', 'pubkey-2' ]} +``` ## Intelligent relay selection When a client submits a request through NDK, NDK will calculate which relays are @@ -59,88 +69,72 @@ most likely able to satisfy this request. Queries submitted by the client might be broken into different queries if NDK computes different relays. -For example, say user A follows users B and C. If the NDK client uses +For example, say npub-A follows npub-B and npub-C. If the NDK client uses ```ts const ndk = new NDK({ explicitRelays: ['wss://nos.lol'] }) -const userA = ndk.getUser('userA'); -const feedEvents = await userA.feed(); +const npubA = ndk.getUser('npub-A'); +const feedEvents = await npubA.feed(); ``` This would result in the following request: ```json -{ "kinds": [1], "authors": [ "userB", "userC" ] } +{ "kinds": [1], "authors": [ "npub-B", "npub-C" ] } ``` -But if NDK has observed that `userB` tends to write to `wss://userb.xyz` and -`userC` tends to write to `wss://userc.io` , NDK will send the following queries. +But if NDK has observed that `npub-B` tends to write to `wss://userb.xyz` and +`npub-C` tends to write to `wss://userc.io`, NDK will send the following queries. ```json -// to userA's explicit relay wss://nos.lol *if* userB and userC have been seen on that relay -{ "kinds": [1], "authors": [ "userB", "userC" ] } +// to npub-A's explicit relay wss://nos.lol *if* npub-B and npub-C have been seen on that relay +{ "kinds": [1], "authors": [ "npub-B", "npub-C" ] } // to wss://userb.xyz -{ "kinds": [1], "authors": [ "userB" ] } +{ "kinds": [1], "authors": [ "npub-B" ] } // to wss://userc.io -{ "kinds": [1], "authors": [ "userC" ] } -``` - - - - -```ts -// Component 1 -ndk.bufferedSubscription({ kinds: [0], authors: ['pubkey-1'] }, "profiles", 500); - -// Component 2 -ndk.bufferedSubscription({ kinds: [0], authors: ['pubkey-2'] }, "profiles", 500); - -// after 500ms of the first call, a subscription will be created with filter -// { kinds: [0], authors: [ 'pubkey-1', 'pubkey-2' ]} +{ "kinds": [1], "authors": [ "npub-C" ] } ``` ## Auto-closing subscriptions Often clients want to fetch data but they don't necessarily need to occupy a connection to the relay. -The `autoclose` flag will make the connection close immediately after EOSE is received. -An integer `autoclose` will close the connection after that amount of ms after EOSE is received. +The `autoclose` flag will make the connection close immediately after EOSE is seen. +An integer `autoclose` will close the connection after that amount of ms after EOSE is seen. ```ts ndk.subscription({kinds:[0], authors:['...']}, { autoclose: true }) ``` -* NDK class provides the main interface -* enables caller to provide a data storage layer for caching things -* NDK provides nice wrappers for convenient things +## Convenience classes ```javascript const ndk = new NDK({ explicitRelays, privateKey }); const pablo = ndk.getProfile('npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft') ``` -* Convenience classes provide access to construct events - ```javascript - const pablo = ndk.getProfile('npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft') - pablo.name = 'Pablo'; - await pablo.save(); - ``` +### Convenience classes provide access to construct events +```ts +const pablo = await ndk.getProfile('npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft') +pablo.name = 'Pablo'; +await pablo.publish(); // autosigns +``` ### Creating events ```ts -const ndk = new NDK({ explicitRelays }) -const event = ndk.event() -event.kind = 0; +const ndk = new NDK({ explicitRelays, signer }) +const event = new NDKEvent() +event.kind = 1; event.content = "This is cool, I'm going to autotag @jack@cashapp.com" -await event.publish() +await ndk.publish(event) ``` -### Liking someone else's event +### Liking someone's event ```ts const event = await ndk.events({ author: 'jack@cashapp.com' })[0] -await event.react('🤙') +await event.react('🤙') // signs and publishes ``` * Provides access to see status @@ -155,15 +149,11 @@ event.content = "This event is signed via NIP-46." await event.publish() ``` + ```ts const zap = ``` - -##### Building a profile caching proxy - - - # Architecture Users of NDK should instantiate a single NDK instance. @@ -171,5 +161,6 @@ That instance tracks state with all relays connected, explicit and otherwise. All relays are tracked in a single pool that handles connection errors/reconnection logic. -RelaySets are assembled ad-hoc as needed depending on the queries set, although some -RelaySets might be long-lasting, like the `explicitRelays` specified by the user. \ No newline at end of file +RelaySets are assembled ad-hoc as needed depending on the queries set, although some RelaySets might be long-lasting, like the `explicitRelays` specified by the user. + +RelaySets are always a subset of the pool of all available relays. \ No newline at end of file diff --git a/config/fileTransformer.js b/config/fileTransformer.js deleted file mode 100644 index 39172bce..00000000 --- a/config/fileTransformer.js +++ /dev/null @@ -1,9 +0,0 @@ -// source: https://jestjs.io/docs/code-transformation#examples - -const path = require('path'); - -module.exports = { - process(src, filename, config, options) { - return 'module.exports = ' + JSON.stringify(path.basename(filename)) + ';'; - }, -}; diff --git a/config/webpack.config.js b/config/webpack.config.js deleted file mode 100644 index cbd63885..00000000 --- a/config/webpack.config.js +++ /dev/null @@ -1,30 +0,0 @@ -const path = require('path') - -module.exports = { - mode: 'production', - entry: './src/index.ts', - output: { - path: path.resolve(__dirname, '../dist/umd'), - filename: 'index.js', - library: 'exampleTypescriptPackage', - libraryTarget: 'umd', - globalObject: 'this', - }, - module: { - rules: [ - { - test: /\.ts(x*)?$/, - exclude: /node_modules/, - use: { - loader: 'ts-loader', - options: { - configFile: 'config/tsconfig.umd.json', - }, - }, - }, - ], - }, - resolve: { - extensions: ['.ts', '.js', '.tsx', '.jsx'], - }, -} diff --git a/package.json b/package.json index e74339a1..d33a8bd3 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,13 @@ "module": "dist/esm/index.js", "umd:main": "dist/umd/index.js", "types": "dist/types/index.d.js", + "exports": { + ".": { + "import": "./dist/esm/index.js", + "require": "./dist/cjs/index.js", + "default": "./dist/umd/index.js" + } + }, "scripts": { "build": "npm run build:cjs && npm run build:esm && npm run build:types", "build:cjs": "node tools/cleanup cjs && tsc -p config/tsconfig.cjs.json", @@ -31,6 +38,7 @@ "typescript": "~4.7.0" }, "dependencies": { + "eventemitter3": "^5.0.0", "nostr-tools": "^1.6.0", "websocket-polyfill": "^0.0.3" } diff --git a/src/events/index.ts b/src/events/index.ts index 31c3430a..c63ade5b 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -1,4 +1,76 @@ -import {Event as NostrEvent} from 'nostr-tools'; +import {getEventHash, Kind} from 'nostr-tools'; +import EventEmitter from 'eventemitter3'; +import NDK from '../'; -export type Event = NostrEvent; export type EventId = string; + +export type NostrEvent = { + created_at: number; + content: string; + subject?: string; + tags: string[][]; + kind: Kind; + pubkey: string; + id?: string; + sig?: string; +}; + +export default class Event extends EventEmitter { + public ndk?: NDK; + public created_at?: number; + public content = ''; + public subject: string | undefined; + public tags: string[][] = []; + public kind: Kind = -1; + public id = ''; + public sig?: string; + public pubkey = ''; + + constructor(ndk?: NDK) { + super(); + this.ndk = ndk; + } + + async toNostrEvent(pubkey?: string): Promise { + if (!pubkey) pubkey = await this.ndk?.signer?.user?.hexpubkey(); + + const nostrEvent: NostrEvent = { + created_at: this.created_at || Math.floor(Date.now() / 1000), + content: this.content, + tags: this.tags, + kind: this.kind || 0, + pubkey: pubkey || '', + }; + + if (this.subject) nostrEvent.subject = this.subject; + + try { + nostrEvent.id = getEventHash(nostrEvent); + // eslint-disable-next-line no-empty + } catch (e) {} + + if (this.sig) nostrEvent.sig = this.sig; + + return nostrEvent; + } + + async toString() { + return await this.toNostrEvent(); + } + + async sign() { + this.ndk?.assertSigner(); + + await this.generateTags(); + + const nostrEvent = await this.toNostrEvent(); + this.sig = await this.ndk?.signer?.sign(nostrEvent); + } + + async generateTags() { + // don't autogenerate if there currently are tags + if (this.tags.length > 0) return; + + // split content in words + } +} diff --git a/src/index.ts b/src/index.ts index 38d5d494..f43c725f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,30 +1,39 @@ -export * from './relay'; -import {Event} from './events/'; +import Event from './events/'; import {Pool} from './relay/pool/'; -import {Signer} from './signers/'; +import type {SignerType} from './signers/'; import User, {UserParams} from './user/'; +import {UserProfile} from './user/profile'; import {RelaySet} from './relay/sets/'; import {Filter, Subscription, SubscriptionOptions} from './subscription/'; import { calculateRelaySetFromFilter, calculateRelaySetFromEvent, } from './relay/sets/calculate'; +import EventEmitter from 'eventemitter3'; + +export {Event as NDKEvent}; +export {User as NDKUser}; +export {UserProfile as NDKUserProfile}; +export {Nip07Signer as NDKNip07Signer} from './signers/nip07/'; export interface NDKConstructorParams { explicitRelayUrls?: string[]; - signer?: Signer; + signer?: SignerType; } export interface GetUserParams extends UserParams { - nip05?: string; + npub?: string; + hexpubkey?: string; } -export default class NDK { +export default class NDK extends EventEmitter { public relayPool?: Pool; - public signer?: Signer | undefined; + public signer?: SignerType; public constructor(opts: NDKConstructorParams) { + super(); if (opts.explicitRelayUrls) this.relayPool = new Pool(opts.explicitRelayUrls); + this.signer = opts.signer; } public async connect(): Promise { @@ -37,29 +46,31 @@ export default class NDK { * @param opts * @returns */ - public async getUser(opts: GetUserParams): Promise { - let user: User | undefined; - - if (opts.nip05) { - user = await User.fromNip05(opts.nip05); - } else { - user = new User(opts); - } - - if (user) user.ndk = this; + public getUser(opts: GetUserParams): User { + const user = new User(opts); + user.ndk = this; return user; } public subscribe( - relaySet: RelaySet, filter: Filter, - opts: SubscriptionOptions + relaySet?: RelaySet, + opts?: SubscriptionOptions ): Subscription { + if (!relaySet) { + relaySet = calculateRelaySetFromFilter(this, filter); + } + + if (!relaySet) { + throw new Error('No relay set'); + } + return relaySet.subscribe(filter, opts); } public async publish(event: Event): Promise { const relaySet = await calculateRelaySetFromEvent(this, event); + console.log('publish', relaySet); return relaySet.publish(event); } @@ -72,7 +83,7 @@ export default class NDK { return new Promise(resolve => { const events: Set = new Set(); - const s = this.subscribe(relaySet, filter, {closeOnEose: true}); + const s = this.subscribe(filter, relaySet, {closeOnEose: true}); s.on('event', (event: Event) => { events.add(event); @@ -82,4 +93,14 @@ export default class NDK { }); }); } + + /** + * Ensures that a signer is available to sign an event. + */ + public async assertSigner() { + if (!this.signer) { + this.emit('signerRequired'); + throw new Error('Signer required'); + } + } } diff --git a/src/relay/index.ts b/src/relay/index.ts index 10aca09f..71ad2127 100644 --- a/src/relay/index.ts +++ b/src/relay/index.ts @@ -1,9 +1,11 @@ import 'websocket-polyfill'; -import {relayInit, Event, Sub} from 'nostr-tools'; +import {relayInit, Sub} from 'nostr-tools'; +import type {Event as SignedEvent} from 'nostr-tools'; import User from '../user'; import {RelayScore} from './score'; import {Subscription} from '../subscription/'; -import EventEmitter from 'events'; +import Event, {NostrEvent} from '../events/'; +import EventEmitter from 'eventemitter3'; export class Relay extends EventEmitter { readonly url: string; @@ -30,8 +32,8 @@ export class Relay extends EventEmitter { public async connect(): Promise { try { await this.relay.connect(); - } catch (e) { - } + // eslint-disable-next-line no-empty + } catch (e) {} } async handleNotice(notice: string) { @@ -45,8 +47,9 @@ export class Relay extends EventEmitter { id: subscription.subId, }); - sub.on('event', (event: Event) => { - subscription.eventReceived(event, this); + sub.on('event', (event: NostrEvent) => { + const e = event as unknown; + subscription.eventReceived(e as Event, this); }); sub.on('eose', () => { @@ -57,7 +60,8 @@ export class Relay extends EventEmitter { } public async publish(event: Event): Promise { - this.relay.publish(event); + const nostrEvent = (await event.toNostrEvent()) as SignedEvent; + this.relay.publish(nostrEvent); } /** diff --git a/src/relay/pool/index.ts b/src/relay/pool/index.ts index b1571828..7552efa2 100644 --- a/src/relay/pool/index.ts +++ b/src/relay/pool/index.ts @@ -1,4 +1,4 @@ -import EventEmitter from 'events'; +import EventEmitter from 'eventemitter3'; import {Relay} from '../'; export class Pool extends EventEmitter { diff --git a/src/relay/sets/calculate.ts b/src/relay/sets/calculate.ts index 1f263e37..93970100 100644 --- a/src/relay/sets/calculate.ts +++ b/src/relay/sets/calculate.ts @@ -1,6 +1,6 @@ import NDK from '../../'; import {Relay} from '../'; -import {Event} from '../../events/'; +import Event from '../../events/'; import {RelaySet} from './'; import {Filter} from '../../subscription/'; @@ -15,7 +15,7 @@ import {Filter} from '../../subscription/'; export function calculateRelaySetFromEvent(ndk: NDK, event: Event): RelaySet { const relays: Set = new Set(); - ndk.relayPool.relays.forEach(relay => relays.add(relay)); + ndk.relayPool?.relays.forEach(relay => relays.add(relay)); return new RelaySet(relays); } @@ -32,7 +32,7 @@ export function calculateRelaySetFromFilter( ): RelaySet { const relays: Set = new Set(); - ndk.relayPool.relays.forEach(relay => relays.add(relay)); + ndk.relayPool?.relays.forEach(relay => relays.add(relay)); return new RelaySet(relays); } diff --git a/src/relay/sets/index.ts b/src/relay/sets/index.ts index 00af441c..90b9331b 100644 --- a/src/relay/sets/index.ts +++ b/src/relay/sets/index.ts @@ -1,5 +1,5 @@ import {Relay} from '../'; -import {Event} from '../../events/'; +import Event from '../../events/'; import {Subscription, SubscriptionOptions, Filter} from '../../subscription/'; /** @@ -16,7 +16,7 @@ export class RelaySet { this.relays = relays; } - public subscribe(filter: Filter, opts: SubscriptionOptions): Subscription { + public subscribe(filter: Filter, opts?: SubscriptionOptions): Subscription { const subscription = new Subscription(filter, this, opts); this.relays.forEach(relay => { @@ -34,7 +34,7 @@ export class RelaySet { this.relays.forEach(async relay => { try { // TODO: if relay is not connected, don't try to send, but rather attach - // to connected event and send it at that moment + // to `connected` event and send it at that moment await relay.publish(event); } catch (e) { console.log(e); diff --git a/src/signers/index.ts b/src/signers/index.ts index 31315a43..883b1859 100644 --- a/src/signers/index.ts +++ b/src/signers/index.ts @@ -1 +1,11 @@ -export class Signer {} +import User from '../user'; +import type {NostrEvent} from '../events/'; +import { Nip07Signer } from './nip07'; +import PrivateKeySigner from './private-key'; + +export type SignerType = Nip07Signer | PrivateKeySigner; + +export interface Signer { + user: User | undefined; + sign(event: NostrEvent): Promise; +} diff --git a/src/signers/nip07/index.ts b/src/signers/nip07/index.ts index 1721e173..fe9746c3 100644 --- a/src/signers/nip07/index.ts +++ b/src/signers/nip07/index.ts @@ -1,7 +1,24 @@ import {Signer} from '../'; +import type {NostrEvent} from '../../events'; +import User from '../../user'; -export class Nip07Signer extends Signer { - public constructor() { - super(); +export class Nip07Signer implements Signer { + public user: User | undefined; + private window: any; + + public constructor() {} + + public async configure(window: any) { + this.window = window; + + const pubkey = await this.window.nostr?.getPublicKey(); + this.user = new User({hexpubkey: pubkey}); + + return this.user; + } + + public async sign(event: NostrEvent): Promise { + const signedEvent = await this.window.nostr?.signEvent(event); + return signedEvent.sig; } } diff --git a/src/signers/private-key/index.ts b/src/signers/private-key/index.ts new file mode 100644 index 00000000..9c1e1d5c --- /dev/null +++ b/src/signers/private-key/index.ts @@ -0,0 +1,30 @@ +import {signEvent, generatePrivateKey, getPublicKey} from 'nostr-tools'; +import type {UnsignedEvent} from 'nostr-tools'; +import type {NostrEvent} from '../../events/'; +import {Signer} from '../'; +import User from '../../user'; + +export default class PrivateKeySigner implements Signer { + public user: User | undefined; + privateKey?: string; + + public constructor(privateKey?: string) { + if (privateKey) { + this.privateKey = privateKey; + this.user = new User({hexpubkey: getPublicKey(this.privateKey)}); + } + } + + static generate() { + const privateKey = generatePrivateKey(); + return new PrivateKeySigner(privateKey); + } + + public async sign(event: NostrEvent): Promise { + if (!this.privateKey) { + throw Error('Attempted to sign without a private key'); + } + + return signEvent(event as UnsignedEvent, this.privateKey); + } +} diff --git a/src/subscription/index.ts b/src/subscription/index.ts index 0be06d31..fa2db8f1 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -1,8 +1,9 @@ import {Filter as NostrFilter, Sub} from 'nostr-tools'; -import EventEmitter from 'events'; +import EventEmitter from 'eventemitter3'; import {Relay} from '../relay'; import {RelaySet} from '../relay/sets/'; -import {EventId, Event} from '../events/'; +import {EventId} from '../events/'; +import Event from '../events/'; export type Filter = NostrFilter; @@ -14,16 +15,17 @@ export class Subscription extends EventEmitter { readonly subId: string; readonly filter: Filter; readonly relaySet: RelaySet; - readonly opts: SubscriptionOptions; + readonly opts?: SubscriptionOptions; public relaySubscriptions: Map; public constructor( filter: Filter, relaySet: RelaySet, - opts: SubscriptionOptions + opts?: SubscriptionOptions, + subId?: string ) { super(); - this.subId = (Math.random() * 1000).toString(); + this.subId = subId || Math.floor(Math.random() * 9999991000).toString(); this.filter = filter; this.relaySet = relaySet; this.opts = opts; @@ -57,7 +59,7 @@ export class Subscription extends EventEmitter { private eoseTimeout: ReturnType | undefined; public eoseReceived(relay: Relay): void { - if (this.opts.closeOnEose) { + if (this.opts?.closeOnEose) { this.relaySubscriptions.get(relay)?.unsub(); } diff --git a/src/user/index.ts b/src/user/index.ts index cdab67b9..493be4e8 100644 --- a/src/user/index.ts +++ b/src/user/index.ts @@ -1,6 +1,6 @@ import {nip05, nip19} from 'nostr-tools'; -import {Event} from '../events/'; -import UserProfile from './profile'; +import Event from '../events/'; +import {UserProfile, mergeEvent} from './profile'; import NDK from '../'; export interface UserParams { @@ -49,7 +49,7 @@ export default class User { public async fetchProfile(): Promise | null> { if (!this.ndk) throw new Error('NDK not set'); - if (!this.profile) this.profile = new UserProfile(); + if (!this.profile) this.profile = {}; const setMetadataEvents = await this.ndk.fetchEvents({ kinds: [0], @@ -59,12 +59,14 @@ export default class User { if (setMetadataEvents) { // sort setMetadataEvents by created_at in ascending order const sortedSetMetadataEvents = Array.from(setMetadataEvents).sort( - (a, b) => a.created_at - b.created_at + (a, b) => (a.created_at as number) - (b.created_at as number) ); - sortedSetMetadataEvents.forEach(event => - this.profile?.mergeEvent(event) - ); + sortedSetMetadataEvents.forEach(event => { + console.log(event); + + this.profile = mergeEvent(event, this.profile!); + }); } return setMetadataEvents; @@ -82,7 +84,7 @@ export default class User { const contactList = new Set(); contactListEvents.forEach(event => { - event.tags.forEach(tag => { + event.tags.forEach((tag: string[]) => { if (tag[0] === 'p') { const user = new User({hexpubkey: tag[1]}); user.ndk = this.ndk; diff --git a/src/user/profile.ts b/src/user/profile.ts index 0021c898..14d6581c 100644 --- a/src/user/profile.ts +++ b/src/user/profile.ts @@ -1,6 +1,6 @@ -import {Event} from '../events/'; +import Event from '../events/'; -export default class UserProfile { +export interface UserProfile { name?: string; displayName?: string; image?: string; @@ -10,19 +10,22 @@ export default class UserProfile { lud16?: string; about?: string; zapService?: string; +} + +export function mergeEvent(event: Event, profile: UserProfile): UserProfile { + const payload = JSON.parse(event.content); - mergeEvent(event: Event): void { - const payload = JSON.parse(event.content); + if (payload.name) profile.name = payload.name; + if (payload.display_name) profile.displayName = payload.display_name; + if (payload.displayName) profile.displayName = payload.displayName; + if (payload.image) profile.image = payload.image; + if (payload.picture) profile.image = payload.picture; + if (payload.banner) profile.banner = payload.banner; + if (payload.bio) profile.bio = payload.bio; + if (payload.nip05) profile.nip05 = payload.nip05; + if (payload.lud16) profile.lud16 = payload.lud16; + if (payload.about) profile.about = payload.about; + if (payload.zapService) profile.zapService = payload.zapService; - if (payload.name) this.name = payload.name; - if (payload.display_name) this.displayName = payload.display_name; - if (payload.displayName) this.displayName = payload.displayName; - if (payload.image) this.image = payload.image; - if (payload.banner) this.banner = payload.banner; - if (payload.bio) this.bio = payload.bio; - if (payload.nip05) this.nip05 = payload.nip05; - if (payload.lud16) this.lud16 = payload.lud16; - if (payload.about) this.about = payload.about; - if (payload.zapService) this.zapService = payload.zapService; - } + return profile; } diff --git a/tsconfig.json b/tsconfig.json index 557581cf..0dd82884 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,7 +4,7 @@ /* Basic Options */ // "incremental": true, /* Enable incremental compilation */ - "target": "es5" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, + "target": "esnext" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, // "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ // "lib": [], /* Specify library files to be included in the compilation. */ // "allowJs": true, /* Allow javascript files to be compiled. */ From 31b17585179003e22434369c806fb266b61685e3 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 28 Mar 2023 23:39:20 +0300 Subject: [PATCH 004/773] improve zap support --- .eslintrc.json | 4 +- .prettierrc.json | 8 + package-lock.json | 10278 ++++++++++++++++++++++++++++++++ package.json | 5 + src/events/index.ts | 53 +- src/index.ts | 21 +- src/light-bolt11-decoder.d.ts | 3 + src/relay/index.ts | 4 +- src/zap/index.ts | 110 + src/zap/invoice.ts | 66 + 10 files changed, 10539 insertions(+), 13 deletions(-) create mode 100644 .prettierrc.json create mode 100644 package-lock.json create mode 100644 src/light-bolt11-decoder.d.ts create mode 100644 src/zap/index.ts create mode 100644 src/zap/invoice.ts diff --git a/.eslintrc.json b/.eslintrc.json index f95bb333..9e26dfee 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,3 +1 @@ -{ - "extends": "./node_modules/gts/" -} +{} \ No newline at end of file diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 00000000..8244b35d --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,8 @@ +{ + "importOrder": ["^[./]"], + "tabWidth": 4, + "useTabs": false, + "trailingComma": "none", + "printWidth": 100, + "singleQuote": false +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..72fa80ab --- /dev/null +++ b/package-lock.json @@ -0,0 +1,10278 @@ +{ + "name": "ndk", + "version": "0.0.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "ndk", + "version": "0.0.1", + "license": "MIT", + "dependencies": { + "axios": "^1.3.4", + "eventemitter3": "^5.0.0", + "light-bolt11-decoder": "^3.0.0", + "node-fetch": "^3.3.1", + "nostr-tools": "^1.6.0", + "websocket-polyfill": "^0.0.3" + }, + "devDependencies": { + "@types/jest": "^29.5.0", + "@types/node": "^14.11.2", + "gts": "^3.1.1", + "jest": "^29.5.0", + "typescript": "~4.7.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", + "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.3.tgz", + "integrity": "sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.21.3", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.21.2", + "@babel/helpers": "^7.21.0", + "@babel/parser": "^7.21.3", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.3", + "@babel/types": "^7.21.3", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz", + "integrity": "sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.21.3", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", + "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.2", + "@babel/types": "^7.21.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", + "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz", + "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", + "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template/node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz", + "integrity": "sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.21.3", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.21.3", + "@babel/types": "^7.21.3", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", + "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz", + "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz", + "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.5.0", + "@jest/reporters": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.5.0", + "jest-config": "^29.5.0", + "jest-haste-map": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-resolve-dependencies": "^29.5.0", + "jest-runner": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "jest-watcher": "^29.5.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.5.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/environment": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz", + "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-mock": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz", + "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==", + "dev": true, + "dependencies": { + "expect": "^29.5.0", + "jest-snapshot": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz", + "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.4.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz", + "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.5.0", + "jest-mock": "^29.5.0", + "jest-util": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz", + "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.5.0", + "@jest/expect": "^29.5.0", + "@jest/types": "^29.5.0", + "jest-mock": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz", + "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@jridgewell/trace-mapping": "^0.3.15", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/schemas": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", + "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.25.16" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz", + "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.15", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz", + "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz", + "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.5.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz", + "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.5.0", + "@jridgewell/trace-mapping": "^0.3.15", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform/node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.4.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@noble/hashes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.0.0.tgz", + "integrity": "sha512-DZVbtY62kc3kkBtMHqwCOfXrT/hnoORy5BJ4+HU1IR59X0KWAOqsfzQPcUl/lQLlG7qXbe/fZ3r/emxtAl+sqg==" + }, + "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/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@scure/base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", + "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@scure/bip32": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/@scure/bip32/node_modules/@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@scure/bip39": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/@scure/bip39/node_modules/@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@sinclair/typebox": { + "version": "0.25.24", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", + "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", + "dev": true + }, + "node_modules/@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz", + "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^2.0.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", + "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz", + "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.3.0" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.0.tgz", + "integrity": "sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "14.18.36", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", + "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==", + "dev": true + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "node_modules/@types/prettier": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", + "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", + "dev": true + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", + "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", + "dev": true, + "dependencies": { + "@typescript-eslint/experimental-utils": "4.33.0", + "@typescript-eslint/scope-manager": "4.33.0", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^4.0.0", + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", + "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", + "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "debug": "^4.3.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", + "dev": true, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz", + "integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-jest": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", + "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.5.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.5.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", + "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", + "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.5.0", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bufferutil": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", + "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001472", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001472.tgz", + "integrity": "sha512-xWC/0+hHHQgj3/vrKYY0AAzeIUgr7L9wlELIcAvZdDUHlhL/kNxMdnQLOSOQfP8R51ZzPhmHdyMkI0MMpmxCfg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.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==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dev": true, + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/diff-sequences": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", + "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.341", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.341.tgz", + "integrity": "sha512-R4A8VfUBQY9WmAhuqY5tjHRf5fH2AAf6vqitBOE0y6u2PgHgqHSrhZmu78dIX3fVZtjqlwJNX1i2zwC3VpHtQQ==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz", + "integrity": "sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "dev": true, + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "dev": true, + "dependencies": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" + } + }, + "node_modules/eslint-plugin-node/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-node/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-node/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", + "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "eslint": ">=5.0.0", + "prettier": ">=1.13.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", + "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.0.tgz", + "integrity": "sha512-riuVbElZZNXLeLEoprfNYoDSwTBRR44X3mnhdI1YcnENpWTCsTTVZ2zFuqQcpoyqPQIUXdiPEU0ECAq0KQRaHg==" + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz", + "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/gts": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/gts/-/gts-3.1.1.tgz", + "integrity": "sha512-Jw44aBbzMnd1vtZs7tZt3LMstKQukCBg7N4CKVGzviIQ45Cz5b9lxDJGXVKj/9ySuGv6TYEeijZJGbiiVcM27w==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "^4.2.0", + "@typescript-eslint/parser": "^4.2.0", + "chalk": "^4.1.0", + "eslint": "^7.10.0", + "eslint-config-prettier": "^7.0.0", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prettier": "^3.1.4", + "execa": "^5.0.0", + "inquirer": "^7.3.3", + "json5": "^2.1.3", + "meow": "^9.0.0", + "ncp": "^2.0.0", + "prettier": "^2.1.2", + "rimraf": "^3.0.2", + "write-file-atomic": "^3.0.3" + }, + "bin": { + "gts": "build/src/cli.js" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "typescript": ">=3" + } + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", + "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", + "dev": true, + "dependencies": { + "@jest/core": "^29.5.0", + "@jest/types": "^29.5.0", + "import-local": "^3.0.2", + "jest-cli": "^29.5.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", + "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-changed-files/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-circus": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz", + "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.5.0", + "@jest/expect": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.5.0", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.5.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-cli": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz", + "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==", + "dev": true, + "dependencies": { + "@jest/core": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "prompts": "^2.0.1", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz", + "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.5.0", + "@jest/types": "^29.5.0", + "babel-jest": "^29.5.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.5.0", + "jest-environment-node": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-runner": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.5.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", + "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.4.3", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", + "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz", + "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.4.3", + "jest-util": "^29.5.0", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz", + "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.5.0", + "@jest/fake-timers": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-mock": "^29.5.0", + "jest-util": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", + "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz", + "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz", + "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz", + "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.5.0", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", + "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.5.0", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.5.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/jest-mock": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz", + "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-util": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", + "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz", + "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz", + "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==", + "dev": true, + "dependencies": { + "jest-regex-util": "^29.4.3", + "jest-snapshot": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz", + "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.5.0", + "@jest/environment": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.4.3", + "jest-environment-node": "^29.5.0", + "jest-haste-map": "^29.5.0", + "jest-leak-detector": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-resolve": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-util": "^29.5.0", + "jest-watcher": "^29.5.0", + "jest-worker": "^29.5.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-runtime": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz", + "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.5.0", + "@jest/fake-timers": "^29.5.0", + "@jest/globals": "^29.5.0", + "@jest/source-map": "^29.4.3", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-mock": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz", + "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/babel__traverse": "^7.0.6", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.5.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.5.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz", + "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.4.3", + "leven": "^3.1.0", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz", + "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.5.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", + "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.5.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/light-bolt11-decoder": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/light-bolt11-decoder/-/light-bolt11-decoder-3.0.0.tgz", + "integrity": "sha512-AKvOigD2pmC8ktnn2TIqdJu0K0qk6ukUmTvHwF3JNkm8uWCqt18Ijn33A/a7gaRZ4PghJ59X+8+MXrzLKdBTmQ==", + "dependencies": { + "@scure/base": "1.1.1" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-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/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "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==", + "dev": true + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", + "dev": true, + "bin": { + "ncp": "bin/ncp" + } + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", + "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "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/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "dev": true + }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nostr-tools": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.7.4.tgz", + "integrity": "sha512-YowDJ+S3UW9KCYPDZfZXXMITrJSMjiCmFOK5HohyKkg+w6EipFUTkFRBPRA2BTLXO/qw8gukKXfL0B7Dv3jtcQ==", + "dependencies": { + "@noble/hashes": "1.0.0", + "@noble/secp256k1": "^1.7.1", + "@scure/base": "^1.1.1", + "@scure/bip32": "^1.1.5", + "@scure/bip39": "^1.1.1", + "prettier": "^2.8.4" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=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==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", + "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-format": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.1.tgz", + "integrity": "sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/table": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tstl": { + "version": "2.5.13", + "resolved": "https://registry.npmjs.org/tstl/-/tstl-2.5.13.tgz", + "integrity": "sha512-h9wayHHFI5+yqt8iau0vqH96cTNhezhZ/Fk/hrIdpfkiMu3lg9nzyvMfs5bIdX51IVzZO6DudLqhkL/rVXpT6g==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/v8-to-istanbul": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/websocket": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", + "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", + "dependencies": { + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/websocket-polyfill": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/websocket-polyfill/-/websocket-polyfill-0.0.3.tgz", + "integrity": "sha512-pF3kR8Uaoau78MpUmFfzbIRxXj9PeQrCuPepGE6JIsfsJ/o/iXr07Q2iQNzKSSblQJ0FiGWlS64N4pVSm+O3Dg==", + "dependencies": { + "tstl": "^2.0.7", + "websocket": "^1.0.28" + } + }, + "node_modules/websocket/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/websocket/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "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==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", + "engines": { + "node": ">=0.10.32" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", + "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/compat-data": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", + "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", + "dev": true + }, + "@babel/core": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.3.tgz", + "integrity": "sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.21.3", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.21.2", + "@babel/helpers": "^7.21.0", + "@babel/parser": "^7.21.3", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.3", + "@babel/types": "^7.21.3", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz", + "integrity": "sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==", + "dev": true, + "requires": { + "@babel/types": "^7.21.3", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true + }, + "@babel/helper-function-name": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "dev": true, + "requires": { + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", + "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.2", + "@babel/types": "^7.21.2" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true + }, + "@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "requires": { + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "dev": true + }, + "@babel/helpers": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", + "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", + "dev": true, + "requires": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz", + "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==", + "dev": true + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", + "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + } + } + }, + "@babel/traverse": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz", + "integrity": "sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.21.3", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.21.3", + "@babel/types": "^7.21.3", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", + "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/console": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz", + "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==", + "dev": true, + "requires": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "slash": "^3.0.0" + } + }, + "@jest/core": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz", + "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==", + "dev": true, + "requires": { + "@jest/console": "^29.5.0", + "@jest/reporters": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.5.0", + "jest-config": "^29.5.0", + "jest-haste-map": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-resolve-dependencies": "^29.5.0", + "jest-runner": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "jest-watcher": "^29.5.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.5.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "@jest/environment": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz", + "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==", + "dev": true, + "requires": { + "@jest/fake-timers": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-mock": "^29.5.0" + } + }, + "@jest/expect": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz", + "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==", + "dev": true, + "requires": { + "expect": "^29.5.0", + "jest-snapshot": "^29.5.0" + } + }, + "@jest/expect-utils": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz", + "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==", + "dev": true, + "requires": { + "jest-get-type": "^29.4.3" + } + }, + "@jest/fake-timers": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz", + "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==", + "dev": true, + "requires": { + "@jest/types": "^29.5.0", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.5.0", + "jest-mock": "^29.5.0", + "jest-util": "^29.5.0" + } + }, + "@jest/globals": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz", + "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==", + "dev": true, + "requires": { + "@jest/environment": "^29.5.0", + "@jest/expect": "^29.5.0", + "@jest/types": "^29.5.0", + "jest-mock": "^29.5.0" + } + }, + "@jest/reporters": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz", + "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@jridgewell/trace-mapping": "^0.3.15", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + } + }, + "@jest/schemas": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", + "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.25.16" + } + }, + "@jest/source-map": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz", + "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.15", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + } + }, + "@jest/test-result": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz", + "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==", + "dev": true, + "requires": { + "@jest/console": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz", + "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==", + "dev": true, + "requires": { + "@jest/test-result": "^29.5.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "slash": "^3.0.0" + } + }, + "@jest/transform": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz", + "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.5.0", + "@jridgewell/trace-mapping": "^0.3.15", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "dependencies": { + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } + } + } + }, + "@jest/types": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", + "dev": true, + "requires": { + "@jest/schemas": "^29.4.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "@noble/hashes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.0.0.tgz", + "integrity": "sha512-DZVbtY62kc3kkBtMHqwCOfXrT/hnoORy5BJ4+HU1IR59X0KWAOqsfzQPcUl/lQLlG7qXbe/fZ3r/emxtAl+sqg==" + }, + "@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==" + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@scure/base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", + "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==" + }, + "@scure/bip32": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "requires": { + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" + }, + "dependencies": { + "@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==" + } + } + }, + "@scure/bip39": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "requires": { + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" + }, + "dependencies": { + "@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==" + } + } + }, + "@sinclair/typebox": { + "version": "0.25.24", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", + "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", + "dev": true + }, + "@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz", + "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==", + "dev": true, + "requires": { + "@sinonjs/commons": "^2.0.0" + } + }, + "@types/babel__core": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", + "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", + "dev": true, + "requires": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz", + "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/graceful-fs": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.0.tgz", + "integrity": "sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==", + "dev": true, + "requires": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "@types/node": { + "version": "14.18.36", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", + "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "@types/prettier": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", + "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", + "dev": true + }, + "@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", + "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "4.33.0", + "@typescript-eslint/scope-manager": "4.33.0", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", + "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", + "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "debug": "^4.3.1" + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" + } + }, + "@typescript-eslint/types": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.33.0", + "eslint-visitor-keys": "^2.0.0" + } + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "axios": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz", + "integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==", + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "babel-jest": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", + "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==", + "dev": true, + "requires": { + "@jest/transform": "^29.5.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.5.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", + "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", + "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^29.5.0", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "bufferutil": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", + "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", + "requires": { + "node-gyp-build": "^4.3.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + } + }, + "caniuse-lite": { + "version": "1.0.30001472", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001472.tgz", + "integrity": "sha512-xWC/0+hHHQgj3/vrKYY0AAzeIUgr7L9wlELIcAvZdDUHlhL/kNxMdnQLOSOQfP8R51ZzPhmHdyMkI0MMpmxCfg==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true + }, + "cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true + }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==" + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, + "decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true + } + } + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, + "diff-sequences": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", + "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "electron-to-chromium": { + "version": "1.4.341", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.341.tgz", + "integrity": "sha512-R4A8VfUBQY9WmAhuqY5tjHRf5fH2AAf6vqitBOE0y6u2PgHgqHSrhZmu78dIX3fVZtjqlwJNX1i2zwC3VpHtQQ==", + "dev": true + }, + "emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "requires": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + } + } + }, + "eslint-config-prettier": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz", + "integrity": "sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==", + "dev": true, + "requires": {} + }, + "eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "dev": true, + "requires": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "dependencies": { + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "dev": true, + "requires": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "dependencies": { + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "eslint-plugin-prettier": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", + "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", + "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "eventemitter3": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.0.tgz", + "integrity": "sha512-riuVbElZZNXLeLEoprfNYoDSwTBRR44X3mnhdI1YcnENpWTCsTTVZ2zFuqQcpoyqPQIUXdiPEU0ECAq0KQRaHg==" + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true + }, + "expect": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz", + "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==", + "dev": true, + "requires": { + "@jest/expect-utils": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0" + } + }, + "ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "requires": { + "type": "^2.7.2" + }, + "dependencies": { + "type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "requires": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + } + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "requires": { + "fetch-blob": "^3.1.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "gts": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/gts/-/gts-3.1.1.tgz", + "integrity": "sha512-Jw44aBbzMnd1vtZs7tZt3LMstKQukCBg7N4CKVGzviIQ45Cz5b9lxDJGXVKj/9ySuGv6TYEeijZJGbiiVcM27w==", + "dev": true, + "requires": { + "@typescript-eslint/eslint-plugin": "^4.2.0", + "@typescript-eslint/parser": "^4.2.0", + "chalk": "^4.1.0", + "eslint": "^7.10.0", + "eslint-config-prettier": "^7.0.0", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prettier": "^3.1.4", + "execa": "^5.0.0", + "inquirer": "^7.3.3", + "json5": "^2.1.3", + "meow": "^9.0.0", + "ncp": "^2.0.0", + "prettier": "^2.1.2", + "rimraf": "^3.0.2", + "write-file-atomic": "^3.0.3" + } + }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jest": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", + "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", + "dev": true, + "requires": { + "@jest/core": "^29.5.0", + "@jest/types": "^29.5.0", + "import-local": "^3.0.2", + "jest-cli": "^29.5.0" + } + }, + "jest-changed-files": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", + "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", + "dev": true, + "requires": { + "execa": "^5.0.0", + "p-limit": "^3.1.0" + }, + "dependencies": { + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + } + } + }, + "jest-circus": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz", + "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==", + "dev": true, + "requires": { + "@jest/environment": "^29.5.0", + "@jest/expect": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.5.0", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.5.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + } + } + }, + "jest-cli": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz", + "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==", + "dev": true, + "requires": { + "@jest/core": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "prompts": "^2.0.1", + "yargs": "^17.3.1" + } + }, + "jest-config": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz", + "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.5.0", + "@jest/types": "^29.5.0", + "babel-jest": "^29.5.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.5.0", + "jest-environment-node": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-runner": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.5.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + } + }, + "jest-diff": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", + "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^29.4.3", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + } + }, + "jest-docblock": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", + "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz", + "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==", + "dev": true, + "requires": { + "@jest/types": "^29.5.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.4.3", + "jest-util": "^29.5.0", + "pretty-format": "^29.5.0" + } + }, + "jest-environment-node": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz", + "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==", + "dev": true, + "requires": { + "@jest/environment": "^29.5.0", + "@jest/fake-timers": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-mock": "^29.5.0", + "jest-util": "^29.5.0" + } + }, + "jest-get-type": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", + "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", + "dev": true + }, + "jest-haste-map": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz", + "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", + "dev": true, + "requires": { + "@jest/types": "^29.5.0", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + } + }, + "jest-leak-detector": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz", + "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==", + "dev": true, + "requires": { + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + } + }, + "jest-matcher-utils": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz", + "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^29.5.0", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + } + }, + "jest-message-util": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", + "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.5.0", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.5.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + } + } + }, + "jest-mock": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz", + "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==", + "dev": true, + "requires": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-util": "^29.5.0" + } + }, + "jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "requires": {} + }, + "jest-regex-util": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", + "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", + "dev": true + }, + "jest-resolve": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz", + "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz", + "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==", + "dev": true, + "requires": { + "jest-regex-util": "^29.4.3", + "jest-snapshot": "^29.5.0" + } + }, + "jest-runner": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz", + "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==", + "dev": true, + "requires": { + "@jest/console": "^29.5.0", + "@jest/environment": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.4.3", + "jest-environment-node": "^29.5.0", + "jest-haste-map": "^29.5.0", + "jest-leak-detector": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-resolve": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-util": "^29.5.0", + "jest-watcher": "^29.5.0", + "jest-worker": "^29.5.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "dependencies": { + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + } + } + }, + "jest-runtime": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz", + "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==", + "dev": true, + "requires": { + "@jest/environment": "^29.5.0", + "@jest/fake-timers": "^29.5.0", + "@jest/globals": "^29.5.0", + "@jest/source-map": "^29.4.3", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-mock": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + } + }, + "jest-snapshot": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz", + "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/babel__traverse": "^7.0.6", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.5.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.5.0", + "semver": "^7.3.5" + } + }, + "jest-util": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", + "dev": true, + "requires": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-validate": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz", + "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==", + "dev": true, + "requires": { + "@jest/types": "^29.5.0", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.4.3", + "leven": "^3.1.0", + "pretty-format": "^29.5.0" + }, + "dependencies": { + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + } + } + }, + "jest-watcher": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz", + "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==", + "dev": true, + "requires": { + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.5.0", + "string-length": "^4.0.1" + } + }, + "jest-worker": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", + "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", + "dev": true, + "requires": { + "@types/node": "*", + "jest-util": "^29.5.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "light-bolt11-decoder": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/light-bolt11-decoder/-/light-bolt11-decoder-3.0.0.tgz", + "integrity": "sha512-AKvOigD2pmC8ktnn2TIqdJu0K0qk6ukUmTvHwF3JNkm8uWCqt18Ijn33A/a7gaRZ4PghJ59X+8+MXrzLKdBTmQ==", + "requires": { + "@scure/base": "1.1.1" + } + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "requires": { + "tmpl": "1.0.5" + } + }, + "map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true + }, + "meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "dependencies": { + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "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" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", + "dev": true + }, + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" + }, + "node-fetch": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", + "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + }, + "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==" + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node-releases": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "dev": true + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "nostr-tools": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.7.4.tgz", + "integrity": "sha512-YowDJ+S3UW9KCYPDZfZXXMITrJSMjiCmFOK5HohyKkg+w6EipFUTkFRBPRA2BTLXO/qw8gukKXfL0B7Dv3jtcQ==", + "requires": { + "@noble/hashes": "1.0.0", + "@noble/secp256k1": "^1.7.1", + "@scure/base": "^1.1.1", + "@scure/bip32": "^1.1.5", + "@scure/bip39": "^1.1.1", + "prettier": "^2.8.4" + } + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "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==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prettier": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", + "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==" + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "pretty-format": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "dev": true, + "requires": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true + }, + "pure-rand": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.1.tgz", + "integrity": "sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, + "string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "table": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "dev": true, + "requires": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tstl": { + "version": "2.5.13", + "resolved": "https://registry.npmjs.org/tstl/-/tstl-2.5.13.tgz", + "integrity": "sha512-h9wayHHFI5+yqt8iau0vqH96cTNhezhZ/Fk/hrIdpfkiMu3lg9nzyvMfs5bIdX51IVzZO6DudLqhkL/rVXpT6g==" + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "requires": { + "node-gyp-build": "^4.3.0" + } + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "v8-to-istanbul": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + }, + "dependencies": { + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + } + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "requires": { + "makeerror": "1.0.12" + } + }, + "web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==" + }, + "websocket": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", + "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", + "requires": { + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "websocket-polyfill": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/websocket-polyfill/-/websocket-polyfill-0.0.3.tgz", + "integrity": "sha512-pF3kR8Uaoau78MpUmFfzbIRxXj9PeQrCuPepGE6JIsfsJ/o/iXr07Q2iQNzKSSblQJ0FiGWlS64N4pVSm+O3Dg==", + "requires": { + "tstl": "^2.0.7", + "websocket": "^1.0.28" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", + "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "dependencies": { + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + } + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } +} diff --git a/package.json b/package.json index d33a8bd3..196897cb 100644 --- a/package.json +++ b/package.json @@ -33,12 +33,17 @@ "author": "pablof7z", "license": "MIT", "devDependencies": { + "@types/jest": "^29.5.0", "@types/node": "^14.11.2", "gts": "^3.1.1", + "jest": "^29.5.0", "typescript": "~4.7.0" }, "dependencies": { + "axios": "^1.3.4", "eventemitter3": "^5.0.0", + "light-bolt11-decoder": "^3.0.0", + "node-fetch": "^3.3.1", "nostr-tools": "^1.6.0", "websocket-polyfill": "^0.0.3" } diff --git a/src/events/index.ts b/src/events/index.ts index c63ade5b..2f468ebf 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -1,8 +1,10 @@ -import {getEventHash, Kind} from 'nostr-tools'; -import EventEmitter from 'eventemitter3'; -import NDK from '../'; +import { getEventHash, Kind } from "nostr-tools"; +import EventEmitter from "eventemitter3"; +import NDK from "../"; +import Zap from '../zap'; export type EventId = string; +export type Tag = string[]; export type NostrEvent = { created_at: number; @@ -20,15 +22,23 @@ export default class Event extends EventEmitter { public created_at?: number; public content = ''; public subject: string | undefined; - public tags: string[][] = []; + public tags: Tag[] = []; public kind: Kind = -1; - public id = ''; + public id = ""; public sig?: string; public pubkey = ''; - constructor(ndk?: NDK) { + constructor(ndk?: NDK, event?: NostrEvent) { super(); this.ndk = ndk; + this.created_at = event?.created_at; + this.content = event?.content || ''; + this.subject = event?.subject; + this.tags = event?.tags || []; + this.kind = event?.kind || -1; + this.id = event?.id || ''; + this.sig = event?.sig; + this.pubkey = event?.pubkey || ''; } async toNostrEvent(pubkey?: string): Promise { @@ -42,6 +52,8 @@ export default class Event extends EventEmitter { pubkey: pubkey || '', }; + this.generateTags(); + if (this.subject) nostrEvent.subject = this.subject; try { @@ -54,6 +66,13 @@ export default class Event extends EventEmitter { return nostrEvent; } + /** + * Get all tags with the given name + */ + getMatchingTags(tagName: string): Tag[] { + return this.tags.filter((tag) => tag[0] === tagName); + } + async toString() { return await this.toNostrEvent(); } @@ -68,9 +87,31 @@ export default class Event extends EventEmitter { } async generateTags() { + // if this is a paramterized repleacable event, check there's a d tag, if not, generate it + if (this.kind >= 30000 && this.kind <= 40000) { + const dTag = this.getMatchingTags('d')[0]; + if (!dTag) { + this.tags.push(['d', ""]); + } + } + // don't autogenerate if there currently are tags if (this.tags.length > 0) return; // split content in words } + + async zap(amount: number, comment?: string): Promise { + this.ndk?.assertSigner(); + + const zap = new Zap({ + ndk: this.ndk, + zappedEvent: this + }); + + const paymentRequest = await zap.createZapRequest(amount, comment); + + // await zap.publish(amount); + return paymentRequest; + } } diff --git a/src/index.ts b/src/index.ts index f43c725f..e2159ea3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -13,8 +13,11 @@ import EventEmitter from 'eventemitter3'; export {Event as NDKEvent}; export {User as NDKUser}; +export {Filter as NDKFilter}; export {UserProfile as NDKUserProfile}; export {Nip07Signer as NDKNip07Signer} from './signers/nip07/'; +export {ZapInvoice as NDKZapInvoice} from './zap/invoice'; +export {zapInvoiceFromEvent} from './zap/invoice'; export interface NDKConstructorParams { explicitRelayUrls?: string[]; @@ -70,15 +73,29 @@ export default class NDK extends EventEmitter { public async publish(event: Event): Promise { const relaySet = await calculateRelaySetFromEvent(this, event); - console.log('publish', relaySet); return relaySet.publish(event); } + /** + * Fetch a single event + */ + public async fetchEvent(filter: Filter): Promise { + const relaySet = await calculateRelaySetFromFilter(this, filter); + + return new Promise(resolve => { + const s = this.subscribe(filter, relaySet, {closeOnEose: true}); + s.on('event', event => { + event.ndk = this; + resolve(event); + }); + }); + } + /** * Fetch events */ - public async fetchEvents(filter: Filter): Promise | null> { + public async fetchEvents(filter: Filter): Promise> { const relaySet = await calculateRelaySetFromFilter(this, filter); return new Promise(resolve => { diff --git a/src/light-bolt11-decoder.d.ts b/src/light-bolt11-decoder.d.ts new file mode 100644 index 00000000..5b18b343 --- /dev/null +++ b/src/light-bolt11-decoder.d.ts @@ -0,0 +1,3 @@ +declare module 'light-bolt11-decoder' { + function decode(paymentRequest: string): any; +} diff --git a/src/relay/index.ts b/src/relay/index.ts index 71ad2127..3cad2b39 100644 --- a/src/relay/index.ts +++ b/src/relay/index.ts @@ -48,8 +48,8 @@ export class Relay extends EventEmitter { }); sub.on('event', (event: NostrEvent) => { - const e = event as unknown; - subscription.eventReceived(e as Event, this); + const e = new Event(undefined, event); + subscription.eventReceived(e, this); }); sub.on('eose', () => { diff --git a/src/zap/index.ts b/src/zap/index.ts new file mode 100644 index 00000000..ab957bb6 --- /dev/null +++ b/src/zap/index.ts @@ -0,0 +1,110 @@ +import NDK from "../"; +import EventEmitter from 'eventemitter3'; +import Event from "../events"; +import type {NostrEvent} from "../events"; +import User from "../user"; +import axios from "axios"; +import {nip57} from "nostr-tools"; + +interface ZapConstructorParams { + ndk?: NDK; + zappedEvent?: Event; + zappedUser?: User; +} + +export default class Zap extends EventEmitter { + public ndk?: NDK; + public zappedEvent?: Event; + public zappedUser: User; + + public constructor(args: ZapConstructorParams) { + super(); + this.ndk = args.ndk; + this.zappedEvent = args.zappedEvent; + this.zappedUser = args.zappedUser!; + + if (!this.zappedUser && this.zappedEvent) { + this.zappedUser = this.ndk?.getUser({hexpubkey: this.zappedEvent.pubkey})!; + } + } + + public async getZapEndpoint(): Promise { + let lud16: string | undefined; + let zapEndpoint: string | undefined; + + // check if event has zap tag + // otherwise use the user's zap endpoint + // if no zap endpoint, throw error + if (this.zappedEvent) { + const zapTag = (await this.zappedEvent.getMatchingTags('zap'))[0]; + + if (zapTag) { + switch (zapTag[2]) { + case 'lud16': lud16 = zapTag[1]; break; + default: + throw new Error(`Unknown zap tag ${zapTag}`); + } + } + } + + if (this.zappedUser) { + // check if user has a profile, otherwise request it + if (!this.zappedUser.profile) { + await this.zappedUser.fetchProfile(); + } + + lud16 = (this.zappedUser.profile || {}).lud16; + + console.log('this.zappedUser.profile', this.zappedUser.profile); + } + + if (lud16) { + let [name, domain] = lud16.split('@') + zapEndpoint = `https://${domain}/.well-known/lnurlp/${name}` + + const response = await axios.get(zapEndpoint); + console.log('response', response); + + if (response?.data?.allowNostr && response?.data?.nostrPubkey) { + zapEndpoint = response?.data?.callback; + } + } + + return zapEndpoint; + } + + public async createZapRequest(amount: number, comment?: string): Promise { + const zapEndpoint = await this.getZapEndpoint() + + if (!zapEndpoint) { + throw new Error('No zap endpoint found'); + } + + const zapRequest = nip57.makeZapRequest({ + profile: this.zappedUser.hexpubkey(), + event: this.zappedEvent?.id!, + amount, + comment: comment!, + relays: ['wss://nos.lol'], + }) + + // sign + const zapRequestEvent = new Event(this.ndk, zapRequest as NostrEvent); + await zapRequestEvent.sign(); + + console.log('zapRequestEvent', await zapRequestEvent.toNostrEvent()); + + + // get with axios on zapEndpoint adding to querystring amount=amount and nostr with a URI encoded zapRequest + const response = await axios.get(zapEndpoint, { + params: { + amount, + nostr: JSON.stringify(await zapRequestEvent.toNostrEvent()), + } + }); + + console.log('response', response); + + return response.data?.pr; + } +} diff --git a/src/zap/invoice.ts b/src/zap/invoice.ts new file mode 100644 index 00000000..b9e4697f --- /dev/null +++ b/src/zap/invoice.ts @@ -0,0 +1,66 @@ +import Event, {type EventId, type NostrEvent} from '../events/'; +import lightningPayReq from 'light-bolt11-decoder'; + +export interface ZapInvoice { + id?: EventId; + zapper: string; // pubkey of zapper app + zappee: string; // pubkey of user sending zap + zapped: string; // pubkey of user receiving zap + zappedEvent?: string; // event zapped + amount: number; + comment?: string; +} + +export function zapInvoiceFromEvent(event: Event): ZapInvoice | null { + let zap; + let description = event.getMatchingTags('description')[0]; + let bolt11 = event.getMatchingTags('bolt11')[0]; + let decodedInvoice; + let zapRequest: NostrEvent; + + if (!description || !bolt11 || !bolt11[1]) { + return null; + } + + try { + let zapRequestPayload = description[1]; + if (zapRequestPayload.startsWith("%")) { + zapRequestPayload = decodeURIComponent(zapRequestPayload); + } + if (zapRequestPayload === "") { return null; } + + zapRequest = JSON.parse(zapRequestPayload); + decodedInvoice = lightningPayReq.decode(bolt11[1]) + } catch (e) { + // console.log(e, {description, event}); + return null; + } + + const amountSection = decodedInvoice.sections.find((s: any) => s.name === 'amount') + if (!amountSection) { return null; } + + const amount = parseInt(amountSection.value) / 1000; + if (!amount) { return null; } + + const content = zapRequest.content; + const sender = zapRequest.pubkey; + const recipientTag = event.getMatchingTags('p')[0]; + const recipient = recipientTag[1]; + const zappedEvent = event.getMatchingTags('e')[0]; + const zappedEventId = zappedEvent ? zappedEvent[1] : undefined; + + // ignore self-zaps (TODO: configurable?) + // if (sender === recipient) { return null; } XXX + + const zapInvoice: ZapInvoice = { + id: event.id, + zapper: event.pubkey, + zappee: sender, + zapped: recipient, + zappedEvent: zappedEventId, + amount, + comment: content, + } + + return zapInvoice; +} From 3b1ad0deb6f7da63b1887fad8c76dec538d9de4b Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 28 Mar 2023 23:39:59 +0300 Subject: [PATCH 005/773] bump version --- examples/profile-crawler/package.json | 2 +- examples/profile-crawler/src/index.ts | 4 ++-- examples/profile-crawler/tsconfig.json | 2 +- package.json | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/profile-crawler/package.json b/examples/profile-crawler/package.json index ba01599b..616c5c1d 100644 --- a/examples/profile-crawler/package.json +++ b/examples/profile-crawler/package.json @@ -4,7 +4,7 @@ "description": "", "main": "index.js", "scripts": { - "dev": "ts-node src/index.ts", + "dev": "nodemon src/index.ts", "build": "tsc", "start": "node --es-module-specifier-resolution=node ./dist/index.js", "test": "echo \"Error: no test specified\" && exit 1" diff --git a/examples/profile-crawler/src/index.ts b/examples/profile-crawler/src/index.ts index 59b2ba96..a6a0f9e7 100644 --- a/examples/profile-crawler/src/index.ts +++ b/examples/profile-crawler/src/index.ts @@ -1,5 +1,5 @@ import 'websocket-polyfill'; -import NDK from './ndk'; +import NDK from './ndk/'; import NDKUser from './ndk/user'; import {Queue} from './queue'; @@ -34,7 +34,7 @@ if (pablo) { } function setupDynamicDelay(ndk: NDK, queue: Queue) { - ndk.relayPool.on('notice', (relay, notice) => { + ndk.relayPool?.on('notice', (relay, notice) => { if (notice.includes('too fast') && queue.delayBetweenRequests < 5000) { queue.delayBetweenRequests += 500; console.log(`⚠️ Increasing delay to ${queue.delayBetweenRequests}`); diff --git a/examples/profile-crawler/tsconfig.json b/examples/profile-crawler/tsconfig.json index 9cc49b6a..d199b95d 100644 --- a/examples/profile-crawler/tsconfig.json +++ b/examples/profile-crawler/tsconfig.json @@ -11,7 +11,7 @@ // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ /* Language and Environment */ - "target": "es2017", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + "target": "es5", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ // "jsx": "preserve", /* Specify what JSX code is generated. */ // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ diff --git a/package.json b/package.json index 196897cb..004ee090 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ndk", - "version": "0.0.1", + "version": "0.0.2", "description": "Nostr Development Kit", "main": "dist/cjs/index.js", "module": "dist/esm/index.js", From f752896e2b0038624291425155624e100ac4b103 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Wed, 29 Mar 2023 00:26:28 +0300 Subject: [PATCH 006/773] update package name --- package.json | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 004ee090..7ded6ee5 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,12 @@ { - "name": "ndk", + "name": "nostrdevkit", "version": "0.0.2", - "description": "Nostr Development Kit", + "description": "NDK - Nostr Development Kit", "main": "dist/cjs/index.js", "module": "dist/esm/index.js", "umd:main": "dist/umd/index.js", "types": "dist/types/index.d.js", + "homepage": "https://github.com/pablof7z/ndk", "exports": { ".": { "import": "./dist/esm/index.js", @@ -19,10 +20,8 @@ "build:esm": "node tools/cleanup esm && tsc -p config/tsconfig.esm.json", "build:types": "node tools/cleanup types && tsc -p config/tsconfig.types.json", "package": "npm run build && npm pack", - "lint": "gts lint", - "clean": "gts clean", + "clean": "node tools/cleanup cjs && node tools/cleanup esm && node tools/cleanup types", "compile": "tsc", - "fix": "gts fix", "prepare": "npm run compile", "pretest": "npm run compile", "posttest": "npm run lint" From b8ee5d99762cc2ca5003fd4eab39f65092417833 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Wed, 29 Mar 2023 00:31:24 +0300 Subject: [PATCH 007/773] rename package --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7ded6ee5..215de8c3 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "nostrdevkit", + "name": "nostr-dev-kit", "version": "0.0.2", "description": "NDK - Nostr Development Kit", "main": "dist/cjs/index.js", From d1043d7258152fb5cb3d14e11477db4b4ee9e1e3 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Fri, 31 Mar 2023 23:56:20 +0300 Subject: [PATCH 008/773] LUD06 support --- .prettierignore | 2 + README.md | 10 +- examples/README.md | 1 - examples/profile-crawler/README.md | 4 - examples/profile-crawler/config.json | 5 - examples/profile-crawler/package-lock.json | 2061 -------------------- examples/profile-crawler/package.json | 26 - examples/profile-crawler/src/index.ts | 84 - examples/profile-crawler/src/queue.ts | 75 - examples/profile-crawler/tsconfig.json | 103 - package-lock.json | 174 +- package.json | 10 +- src/user/index.ts | 2 - src/user/profile.ts | 2 + src/zap/index.ts | 54 +- 15 files changed, 64 insertions(+), 2549 deletions(-) create mode 100644 .prettierignore delete mode 100644 examples/README.md delete mode 100644 examples/profile-crawler/README.md delete mode 100644 examples/profile-crawler/config.json delete mode 100644 examples/profile-crawler/package-lock.json delete mode 100644 examples/profile-crawler/package.json delete mode 100644 examples/profile-crawler/src/index.ts delete mode 100644 examples/profile-crawler/src/queue.ts delete mode 100644 examples/profile-crawler/tsconfig.json diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..5498e0f4 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,2 @@ +build +coverage diff --git a/README.md b/README.md index 0497f1c8..58048e43 100644 --- a/README.md +++ b/README.md @@ -12,14 +12,16 @@ - [ ] IndexDB - [ ] NIP-26: Event delegation - [ ] NIP-41: Relay authentication -- [ ] NIP-57: Zaps +- [x] NIP-57: Zaps + - [x] LUD06 + - [x] LUD16 - [ ] NIP-65: Contacts' Relay list * Subscription Management - [ ] Buffered queries - - [ ] Auto-closing subscriptions + - [x] Auto-closing subscriptions - [ ] Signing Adapters - [ ] Private key - - [ ] NIP-07 + - [x] NIP-07 - [ ] NIP-26 - [ ] NIP-46 - [ ] Relay discovery @@ -110,7 +112,7 @@ ndk.subscription({kinds:[0], authors:['...']}, { autoclose: true }) ## Convenience classes -```javascript +```ts const ndk = new NDK({ explicitRelays, privateKey }); const pablo = ndk.getProfile('npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft') ``` diff --git a/examples/README.md b/examples/README.md deleted file mode 100644 index 18553663..00000000 --- a/examples/README.md +++ /dev/null @@ -1 +0,0 @@ -This directory contains examples of using NDK. diff --git a/examples/profile-crawler/README.md b/examples/profile-crawler/README.md deleted file mode 100644 index f7adbc47..00000000 --- a/examples/profile-crawler/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# Profile Crawler -This example is a real tool that powers building wss://profiles.f7z.io -- a gossip aggregator relay. - -This tool fetches \ No newline at end of file diff --git a/examples/profile-crawler/config.json b/examples/profile-crawler/config.json deleted file mode 100644 index 0e748aa3..00000000 --- a/examples/profile-crawler/config.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "explicitRelays": [ - "wss://nos.lol" - ] -} \ No newline at end of file diff --git a/examples/profile-crawler/package-lock.json b/examples/profile-crawler/package-lock.json deleted file mode 100644 index 58f9f967..00000000 --- a/examples/profile-crawler/package-lock.json +++ /dev/null @@ -1,2061 +0,0 @@ -{ - "name": "profile-crawler", - "version": "1.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "profile-crawler", - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "knex": "^2.4.2", - "nostr-tools": "^1.7.4", - "pg": "^8.10.0", - "websocket-polyfill": "^0.0.3" - }, - "devDependencies": { - "nodemon": "^2.0.21", - "ts-node": "^10.9.1", - "typescript": "^4.9.5" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@noble/hashes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.0.0.tgz", - "integrity": "sha512-DZVbtY62kc3kkBtMHqwCOfXrT/hnoORy5BJ4+HU1IR59X0KWAOqsfzQPcUl/lQLlG7qXbe/fZ3r/emxtAl+sqg==" - }, - "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/@scure/base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", - "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, - "node_modules/@scure/bip32": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", - "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "@noble/hashes": "~1.2.0", - "@noble/secp256k1": "~1.7.0", - "@scure/base": "~1.1.0" - } - }, - "node_modules/@scure/bip32/node_modules/@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, - "node_modules/@scure/bip39": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", - "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "@noble/hashes": "~1.2.0", - "@scure/base": "~1.1.0" - } - }, - "node_modules/@scure/bip39/node_modules/@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.15.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.1.tgz", - "integrity": "sha512-U2TWca8AeHSmbpi314QBESRk7oPjSZjDsR+c+H4ECC1l+kFgpZf8Ydhv3SJpPy51VyZHHqxlb6mTTqYNNRVAIw==", - "dev": true, - "peer": true - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/buffer-writer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", - "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/bufferutil": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", - "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==" - }, - "node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "hasInstallScript": true, - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/esm": { - "version": "3.2.25", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", - "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "dependencies": { - "type": "^2.7.2" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "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-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/getopts": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.3.0.tgz", - "integrity": "sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==" - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/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-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", - "dev": true - }, - "node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "node_modules/knex": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/knex/-/knex-2.4.2.tgz", - "integrity": "sha512-tMI1M7a+xwHhPxjbl/H9K1kHX+VncEYcvCx5K00M16bWvpYPKAZd6QrCu68PtHAdIZNQPWZn0GVhqVBEthGWCg==", - "dependencies": { - "colorette": "2.0.19", - "commander": "^9.1.0", - "debug": "4.3.4", - "escalade": "^3.1.1", - "esm": "^3.2.25", - "get-package-type": "^0.1.0", - "getopts": "2.3.0", - "interpret": "^2.2.0", - "lodash": "^4.17.21", - "pg-connection-string": "2.5.0", - "rechoir": "^0.8.0", - "resolve-from": "^5.0.0", - "tarn": "^3.0.2", - "tildify": "2.0.0" - }, - "bin": { - "knex": "bin/cli.js" - }, - "engines": { - "node": ">=12" - }, - "peerDependenciesMeta": { - "better-sqlite3": { - "optional": true - }, - "mysql": { - "optional": true - }, - "mysql2": { - "optional": true - }, - "pg": { - "optional": true - }, - "pg-native": { - "optional": true - }, - "sqlite3": { - "optional": true - }, - "tedious": { - "optional": true - } - } - }, - "node_modules/knex/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/knex/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/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "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==", - "dev": true - }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "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/nodemon": { - "version": "2.0.21", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.21.tgz", - "integrity": "sha512-djN/n2549DUtY33S7o1djRCd7dEm0kBnj9c7S9XVXqRUbuggN1MZH/Nqa+5RFQr63Fbefq37nFXAE9VU86yL1A==", - "dev": true, - "dependencies": { - "chokidar": "^3.5.2", - "debug": "^3.2.7", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.1.2", - "pstree.remy": "^1.1.8", - "semver": "^5.7.1", - "simple-update-notifier": "^1.0.7", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" - }, - "bin": { - "nodemon": "bin/nodemon.js" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" - } - }, - "node_modules/nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nostr-tools": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.7.4.tgz", - "integrity": "sha512-YowDJ+S3UW9KCYPDZfZXXMITrJSMjiCmFOK5HohyKkg+w6EipFUTkFRBPRA2BTLXO/qw8gukKXfL0B7Dv3jtcQ==", - "dependencies": { - "@noble/hashes": "1.0.0", - "@noble/secp256k1": "^1.7.1", - "@scure/base": "^1.1.1", - "@scure/bip32": "^1.1.5", - "@scure/bip39": "^1.1.1", - "prettier": "^2.8.4" - } - }, - "node_modules/packet-reader": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", - "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/pg": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.10.0.tgz", - "integrity": "sha512-ke7o7qSTMb47iwzOSaZMfeR7xToFdkE71ifIipOAAaLIM0DYzfOAXlgFFmYUIE2BcJtvnVlGCID84ZzCegE8CQ==", - "dependencies": { - "buffer-writer": "2.0.0", - "packet-reader": "1.0.0", - "pg-connection-string": "^2.5.0", - "pg-pool": "^3.6.0", - "pg-protocol": "^1.6.0", - "pg-types": "^2.1.0", - "pgpass": "1.x" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "pg-native": ">=3.0.1" - }, - "peerDependenciesMeta": { - "pg-native": { - "optional": true - } - } - }, - "node_modules/pg-connection-string": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", - "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" - }, - "node_modules/pg-int8": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", - "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/pg-pool": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.0.tgz", - "integrity": "sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ==", - "peerDependencies": { - "pg": ">=8.0" - } - }, - "node_modules/pg-protocol": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", - "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" - }, - "node_modules/pg-types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", - "dependencies": { - "pg-int8": "1.0.1", - "postgres-array": "~2.0.0", - "postgres-bytea": "~1.0.0", - "postgres-date": "~1.0.4", - "postgres-interval": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pgpass": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", - "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", - "dependencies": { - "split2": "^4.1.0" - } - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/postgres-array": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/postgres-bytea": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postgres-date": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", - "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postgres-interval": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", - "dependencies": { - "xtend": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/prettier": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", - "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", - "dev": true - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/rechoir": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", - "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", - "dependencies": { - "resolve": "^1.20.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/simple-update-notifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", - "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", - "dev": true, - "dependencies": { - "semver": "~7.0.0" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/simple-update-notifier/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/split2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", - "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==", - "engines": { - "node": ">= 10.x" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tarn": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz", - "integrity": "sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/tildify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", - "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dev": true, - "dependencies": { - "nopt": "~1.0.10" - }, - "bin": { - "nodetouch": "bin/nodetouch.js" - } - }, - "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/tstl": { - "version": "2.5.13", - "resolved": "https://registry.npmjs.org/tstl/-/tstl-2.5.13.tgz", - "integrity": "sha512-h9wayHHFI5+yqt8iau0vqH96cTNhezhZ/Fk/hrIdpfkiMu3lg9nzyvMfs5bIdX51IVzZO6DudLqhkL/rVXpT6g==" - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", - "dev": true - }, - "node_modules/utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "node_modules/websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", - "dependencies": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/websocket-polyfill": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/websocket-polyfill/-/websocket-polyfill-0.0.3.tgz", - "integrity": "sha512-pF3kR8Uaoau78MpUmFfzbIRxXj9PeQrCuPepGE6JIsfsJ/o/iXr07Q2iQNzKSSblQJ0FiGWlS64N4pVSm+O3Dg==", - "dependencies": { - "tstl": "^2.0.7", - "websocket": "^1.0.28" - } - }, - "node_modules/websocket/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/websocket/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", - "engines": { - "node": ">=0.10.32" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } - } - }, - "dependencies": { - "@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@noble/hashes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.0.0.tgz", - "integrity": "sha512-DZVbtY62kc3kkBtMHqwCOfXrT/hnoORy5BJ4+HU1IR59X0KWAOqsfzQPcUl/lQLlG7qXbe/fZ3r/emxtAl+sqg==" - }, - "@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==" - }, - "@scure/base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", - "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==" - }, - "@scure/bip32": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", - "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", - "requires": { - "@noble/hashes": "~1.2.0", - "@noble/secp256k1": "~1.7.0", - "@scure/base": "~1.1.0" - }, - "dependencies": { - "@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==" - } - } - }, - "@scure/bip39": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", - "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", - "requires": { - "@noble/hashes": "~1.2.0", - "@scure/base": "~1.1.0" - }, - "dependencies": { - "@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==" - } - } - }, - "@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true - }, - "@types/node": { - "version": "18.15.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.1.tgz", - "integrity": "sha512-U2TWca8AeHSmbpi314QBESRk7oPjSZjDsR+c+H4ECC1l+kFgpZf8Ydhv3SJpPy51VyZHHqxlb6mTTqYNNRVAIw==", - "dev": true, - "peer": true - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true - }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "buffer-writer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", - "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==" - }, - "bufferutil": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", - "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", - "requires": { - "node-gyp-build": "^4.3.0" - } - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==" - }, - "commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "requires": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "esm": { - "version": "3.2.25", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", - "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==" - }, - "ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "requires": { - "type": "^2.7.2" - }, - "dependencies": { - "type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - } - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" - }, - "getopts": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.3.0.tgz", - "integrity": "sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==" - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", - "dev": true - }, - "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==" - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "requires": { - "has": "^1.0.3" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "knex": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/knex/-/knex-2.4.2.tgz", - "integrity": "sha512-tMI1M7a+xwHhPxjbl/H9K1kHX+VncEYcvCx5K00M16bWvpYPKAZd6QrCu68PtHAdIZNQPWZn0GVhqVBEthGWCg==", - "requires": { - "colorette": "2.0.19", - "commander": "^9.1.0", - "debug": "4.3.4", - "escalade": "^3.1.1", - "esm": "^3.2.25", - "get-package-type": "^0.1.0", - "getopts": "2.3.0", - "interpret": "^2.2.0", - "lodash": "^4.17.21", - "pg-connection-string": "2.5.0", - "rechoir": "^0.8.0", - "resolve-from": "^5.0.0", - "tarn": "^3.0.2", - "tildify": "2.0.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" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "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==" - }, - "nodemon": { - "version": "2.0.21", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.21.tgz", - "integrity": "sha512-djN/n2549DUtY33S7o1djRCd7dEm0kBnj9c7S9XVXqRUbuggN1MZH/Nqa+5RFQr63Fbefq37nFXAE9VU86yL1A==", - "dev": true, - "requires": { - "chokidar": "^3.5.2", - "debug": "^3.2.7", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.1.2", - "pstree.remy": "^1.1.8", - "semver": "^5.7.1", - "simple-update-notifier": "^1.0.7", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" - } - }, - "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "nostr-tools": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.7.4.tgz", - "integrity": "sha512-YowDJ+S3UW9KCYPDZfZXXMITrJSMjiCmFOK5HohyKkg+w6EipFUTkFRBPRA2BTLXO/qw8gukKXfL0B7Dv3jtcQ==", - "requires": { - "@noble/hashes": "1.0.0", - "@noble/secp256k1": "^1.7.1", - "@scure/base": "^1.1.1", - "@scure/bip32": "^1.1.5", - "@scure/bip39": "^1.1.1", - "prettier": "^2.8.4" - } - }, - "packet-reader": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", - "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "pg": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.10.0.tgz", - "integrity": "sha512-ke7o7qSTMb47iwzOSaZMfeR7xToFdkE71ifIipOAAaLIM0DYzfOAXlgFFmYUIE2BcJtvnVlGCID84ZzCegE8CQ==", - "requires": { - "buffer-writer": "2.0.0", - "packet-reader": "1.0.0", - "pg-connection-string": "^2.5.0", - "pg-pool": "^3.6.0", - "pg-protocol": "^1.6.0", - "pg-types": "^2.1.0", - "pgpass": "1.x" - } - }, - "pg-connection-string": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", - "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" - }, - "pg-int8": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", - "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" - }, - "pg-pool": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.0.tgz", - "integrity": "sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ==", - "requires": {} - }, - "pg-protocol": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", - "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" - }, - "pg-types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", - "requires": { - "pg-int8": "1.0.1", - "postgres-array": "~2.0.0", - "postgres-bytea": "~1.0.0", - "postgres-date": "~1.0.4", - "postgres-interval": "^1.1.0" - } - }, - "pgpass": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", - "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", - "requires": { - "split2": "^4.1.0" - } - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "postgres-array": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" - }, - "postgres-bytea": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==" - }, - "postgres-date": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", - "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==" - }, - "postgres-interval": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", - "requires": { - "xtend": "^4.0.0" - } - }, - "prettier": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", - "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==" - }, - "pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", - "dev": true - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "rechoir": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", - "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", - "requires": { - "resolve": "^1.20.0" - } - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "simple-update-notifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", - "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", - "dev": true, - "requires": { - "semver": "~7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } - } - }, - "split2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", - "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - }, - "tarn": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz", - "integrity": "sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==" - }, - "tildify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", - "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==" - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dev": true, - "requires": { - "nopt": "~1.0.10" - } - }, - "ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "requires": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - } - }, - "tstl": { - "version": "2.5.13", - "resolved": "https://registry.npmjs.org/tstl/-/tstl-2.5.13.tgz", - "integrity": "sha512-h9wayHHFI5+yqt8iau0vqH96cTNhezhZ/Fk/hrIdpfkiMu3lg9nzyvMfs5bIdX51IVzZO6DudLqhkL/rVXpT6g==" - }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true - }, - "undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", - "dev": true - }, - "utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "requires": { - "node-gyp-build": "^4.3.0" - } - }, - "v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", - "requires": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "websocket-polyfill": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/websocket-polyfill/-/websocket-polyfill-0.0.3.tgz", - "integrity": "sha512-pF3kR8Uaoau78MpUmFfzbIRxXj9PeQrCuPepGE6JIsfsJ/o/iXr07Q2iQNzKSSblQJ0FiGWlS64N4pVSm+O3Dg==", - "requires": { - "tstl": "^2.0.7", - "websocket": "^1.0.28" - } - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, - "yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==" - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true - } - } -} diff --git a/examples/profile-crawler/package.json b/examples/profile-crawler/package.json deleted file mode 100644 index 616c5c1d..00000000 --- a/examples/profile-crawler/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "profile-crawler", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "dev": "nodemon src/index.ts", - "build": "tsc", - "start": "node --es-module-specifier-resolution=node ./dist/index.js", - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "pablof7z", - "license": "MIT", - "type": "module", - "devDependencies": { - "nodemon": "^2.0.21", - "ts-node": "^10.9.1", - "typescript": "^4.9.5" - }, - "dependencies": { - "knex": "^2.4.2", - "nostr-tools": "^1.7.4", - "pg": "^8.10.0", - "websocket-polyfill": "^0.0.3" - } -} diff --git a/examples/profile-crawler/src/index.ts b/examples/profile-crawler/src/index.ts deleted file mode 100644 index a6a0f9e7..00000000 --- a/examples/profile-crawler/src/index.ts +++ /dev/null @@ -1,84 +0,0 @@ -import 'websocket-polyfill'; -import NDK from './ndk/'; -import NDKUser from './ndk/user'; -import {Queue} from './queue'; - -// Define read NDK -- this seggregation will not be needed -const ndk = new NDK({ - explicitRelayUrls: ['wss://nos.lol', 'wss://relay.nostr.band'], -}); - -// Define write NDK -const writeNdk = new NDK({ - explicitRelayUrls: ['wss://profiles.f7z.io'], -}); - -// Connect both -await ndk.connect(); -await writeNdk.connect(); - -const queue = new Queue(ndk, writeNdk, syncAllContactsFor); - -setupDynamicDelay(ndk, queue); - -queue.on('itemAdded', async () => { - await queue.processNext(); -}); - -const pablo = await ndk.getUser({ - npub: 'npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft', -}); - -if (pablo) { - syncAllContactsFor(ndk, writeNdk, pablo, queue); -} - -function setupDynamicDelay(ndk: NDK, queue: Queue) { - ndk.relayPool?.on('notice', (relay, notice) => { - if (notice.includes('too fast') && queue.delayBetweenRequests < 5000) { - queue.delayBetweenRequests += 500; - console.log(`⚠️ Increasing delay to ${queue.delayBetweenRequests}`); - } else { - console.log(`Notice from ${relay.url}: ${notice}`); - } - }); - - setInterval(() => { - console.log(`Queue size: ${queue.items.length}`); - if (queue.delayBetweenRequests > 10) { - queue.delayBetweenRequests -= 10; - console.log(`⚠️ Decreasing delay to ${queue.delayBetweenRequests}`); - } - }, 12000); -} - -async function syncAllContactsFor( - ndk: NDK, - writeNdk: NDK, - user: NDKUser, - queue: Queue -): Promise { - const setMetadataEvents = await user.fetchProfile(); - - if (!setMetadataEvents || setMetadataEvents?.size < 0) { - return; - } - - setMetadataEvents.forEach(e => writeNdk.publish(e)); - - const follows = await user.follows(); - - const relayList = await user.relayList(); - - console.log( - `User ${user.profile?.displayName} has ${follows.size} follows and ${relayList.size} relays` - ); - - if (relayList) { - relayList.forEach(e => writeNdk.publish(e)); - } - - for (const follow of follows) { - queue.add(follow); - } -} diff --git a/examples/profile-crawler/src/queue.ts b/examples/profile-crawler/src/queue.ts deleted file mode 100644 index 0e073635..00000000 --- a/examples/profile-crawler/src/queue.ts +++ /dev/null @@ -1,75 +0,0 @@ -import NDK from './ndk'; -import { EventEmitter } from 'events'; -import NDKUser from './ndk/user'; -// import knex from 'knex'; - -// const uri = 'postgres://pablofernandez@localhost:5432/psbt_io_development'; -// const db = knex({ -// client: 'pg', -// connection: uri, -// debug: true, -// }); - -// const res = await db.queryBuilder().select('*').from('events').where({id: 'sdsdsd'}) - -export class Queue extends EventEmitter { - readonly items: NDKUser[]; - private processing: boolean; - private processedIds: Set; - private ndk: NDK; - private writeNdk: NDK; - private func; - public delayBetweenRequests = 0; - - constructor(ndk: NDK, writeNdk: NDK, func: Function) { - super(); - this.items = []; - this.processing = false; - this.processedIds = new Set(); - this.ndk = ndk; - this.writeNdk = writeNdk; - this.func = func; - } - - add(user: NDKUser): void { - // only if it hasn't been processed yet - if (this.processedIds.has(user.npub)) { - return; - } - - // only if it's not in the database already - // const res = await db.queryBuilder() - // .select('*') - // .from('events') - // .where({event_kind: 0, event_pubkey: user.hexpubkey()}) - // .then(console.log); - - this.items.push(user); - this.emit('itemAdded'); - } - - async processItem(user: NDKUser): Promise { - try { - await this.func(this.ndk, this.writeNdk, user, this); - } catch (e) { - console.trace(e); - } - } - - async processNext(): Promise { - if (this.processing || this.items.length === 0) return; - - this.processing = true; - const user = this.items.shift(); - - if (user && !this.processedIds.has(user.npub)) { - this.processedIds.add(user.npub); // Add the user id to the processed set - await this.processItem(user); - } - this.processing = false; - - if (this.items.length > 0) { - setTimeout(() => this.processNext(), this.delayBetweenRequests); - } - } -} \ No newline at end of file diff --git a/examples/profile-crawler/tsconfig.json b/examples/profile-crawler/tsconfig.json deleted file mode 100644 index d199b95d..00000000 --- a/examples/profile-crawler/tsconfig.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "compilerOptions": { - /* Visit https://aka.ms/tsconfig to read more about this file */ - - /* Projects */ - // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - - /* Language and Environment */ - "target": "es5", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - // "jsx": "preserve", /* Specify what JSX code is generated. */ - // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ - // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ - - /* Modules */ - "module": "esnext", /* Specify what module code is generated. */ - // "rootDir": "./", /* Specify the root folder within your source files. */ - "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ - // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - // "types": [], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ - // "resolveJsonModule": true, /* Enable importing .json files. */ - // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ - - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ - - /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - "outDir": "dist", /* Specify an output folder for all emitted files. */ - // "removeComments": true, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ - - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ - - /* Type Checking */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ - // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ - // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ - } -} diff --git a/package-lock.json b/package-lock.json index 72fa80ab..fae7bfb4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,19 +1,19 @@ { - "name": "ndk", - "version": "0.0.1", + "name": "nostr-dev-kit", + "version": "0.0.3", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "ndk", - "version": "0.0.1", + "name": "nostr-dev-kit", + "version": "0.0.3", "license": "MIT", "dependencies": { - "axios": "^1.3.4", "eventemitter3": "^5.0.0", "light-bolt11-decoder": "^3.0.0", "node-fetch": "^3.3.1", "nostr-tools": "^1.6.0", + "utf8-buffer": "^1.0.0", "websocket-polyfill": "^0.0.3" }, "devDependencies": { @@ -1683,21 +1683,6 @@ "node": ">=8" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/axios": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz", - "integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==", - "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, "node_modules/babel-jest": { "version": "29.5.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", @@ -2048,17 +2033,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2174,14 +2148,6 @@ "node": ">=0.10.0" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -2918,38 +2884,6 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/formdata-polyfill": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", @@ -4364,25 +4298,6 @@ "node": ">=8.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/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", @@ -4845,11 +4760,6 @@ "node": ">= 6" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, "node_modules/punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", @@ -5675,6 +5585,14 @@ "node": ">=6.14.2" } }, + "node_modules/utf8-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utf8-buffer/-/utf8-buffer-1.0.0.tgz", + "integrity": "sha512-ueuhzvWnp5JU5CiGSY4WdKbiN/PO2AZ/lpeLiz2l38qwdLy/cW40XobgyuIWucNyum0B33bVB0owjFCeGBSLqg==", + "engines": { + "node": ">=8" + } + }, "node_modules/v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", @@ -7163,21 +7081,6 @@ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "axios": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz", - "integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==", - "requires": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, "babel-jest": { "version": "29.5.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", @@ -7424,14 +7327,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -7520,11 +7415,6 @@ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - }, "detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -8073,21 +7963,6 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, "formdata-polyfill": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", @@ -9155,19 +9030,6 @@ "picomatch": "^2.3.1" } }, - "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" - } - }, "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", @@ -9496,11 +9358,6 @@ "sisteransi": "^1.0.5" } }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, "punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", @@ -10092,6 +9949,11 @@ "node-gyp-build": "^4.3.0" } }, + "utf8-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utf8-buffer/-/utf8-buffer-1.0.0.tgz", + "integrity": "sha512-ueuhzvWnp5JU5CiGSY4WdKbiN/PO2AZ/lpeLiz2l38qwdLy/cW40XobgyuIWucNyum0B33bVB0owjFCeGBSLqg==" + }, "v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", diff --git a/package.json b/package.json index 215de8c3..36aa0976 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,16 @@ { "name": "nostr-dev-kit", - "version": "0.0.2", + "version": "0.0.3", "description": "NDK - Nostr Development Kit", "main": "dist/cjs/index.js", "module": "dist/esm/index.js", "umd:main": "dist/umd/index.js", "types": "dist/types/index.d.js", - "homepage": "https://github.com/pablof7z/ndk", + "homepage": "https://ndk.fyi", + "repository": { + "type": "git", + "url": "https://github.com/pablof7z/ndk" + }, "exports": { ".": { "import": "./dist/esm/index.js", @@ -39,11 +43,11 @@ "typescript": "~4.7.0" }, "dependencies": { - "axios": "^1.3.4", "eventemitter3": "^5.0.0", "light-bolt11-decoder": "^3.0.0", "node-fetch": "^3.3.1", "nostr-tools": "^1.6.0", + "utf8-buffer": "^1.0.0", "websocket-polyfill": "^0.0.3" } } diff --git a/src/user/index.ts b/src/user/index.ts index 493be4e8..40df215c 100644 --- a/src/user/index.ts +++ b/src/user/index.ts @@ -63,8 +63,6 @@ export default class User { ); sortedSetMetadataEvents.forEach(event => { - console.log(event); - this.profile = mergeEvent(event, this.profile!); }); } diff --git a/src/user/profile.ts b/src/user/profile.ts index 14d6581c..dabf38ac 100644 --- a/src/user/profile.ts +++ b/src/user/profile.ts @@ -7,6 +7,7 @@ export interface UserProfile { banner?: string; bio?: string; nip05?: string; + lud06?: string; lud16?: string; about?: string; zapService?: string; @@ -23,6 +24,7 @@ export function mergeEvent(event: Event, profile: UserProfile): UserProfile { if (payload.banner) profile.banner = payload.banner; if (payload.bio) profile.bio = payload.bio; if (payload.nip05) profile.nip05 = payload.nip05; + if (payload.lud06) profile.lud06 = payload.lud06; if (payload.lud16) profile.lud16 = payload.lud16; if (payload.about) profile.about = payload.about; if (payload.zapService) profile.zapService = payload.zapService; diff --git a/src/zap/index.ts b/src/zap/index.ts index ab957bb6..d1280f4b 100644 --- a/src/zap/index.ts +++ b/src/zap/index.ts @@ -3,9 +3,8 @@ import EventEmitter from 'eventemitter3'; import Event from "../events"; import type {NostrEvent} from "../events"; import User from "../user"; -import axios from "axios"; import {nip57} from "nostr-tools"; - +import {bech32} from '@scure/base' interface ZapConstructorParams { ndk?: NDK; zappedEvent?: Event; @@ -29,8 +28,10 @@ export default class Zap extends EventEmitter { } public async getZapEndpoint(): Promise { + let lud06: string | undefined; let lud16: string | undefined; let zapEndpoint: string | undefined; + let zapEndpointCallback: string | undefined; // check if event has zap tag // otherwise use the user's zap endpoint @@ -40,6 +41,7 @@ export default class Zap extends EventEmitter { if (zapTag) { switch (zapTag[2]) { + case "lud06": lud06 = zapTag[1]; break; case 'lud16': lud16 = zapTag[1]; break; default: throw new Error(`Unknown zap tag ${zapTag}`); @@ -53,24 +55,32 @@ export default class Zap extends EventEmitter { await this.zappedUser.fetchProfile(); } + lud06 = (this.zappedUser.profile || {}).lud06; lud16 = (this.zappedUser.profile || {}).lud16; - - console.log('this.zappedUser.profile', this.zappedUser.profile); } if (lud16) { let [name, domain] = lud16.split('@') zapEndpoint = `https://${domain}/.well-known/lnurlp/${name}` + } else if (lud06) { + let {words} = bech32.decode(lud06, 1000); + let data = bech32.fromWords(words); + const utf8Decoder = new TextDecoder('utf-8'); + zapEndpoint = utf8Decoder.decode(data); + } + + if (!zapEndpoint) { + throw new Error('No zap endpoint found'); + } - const response = await axios.get(zapEndpoint); - console.log('response', response); + const response = await fetch(zapEndpoint); + const body: any = await response.json(); - if (response?.data?.allowNostr && response?.data?.nostrPubkey) { - zapEndpoint = response?.data?.callback; - } + if (body?.allowsNostr && body?.nostrPubkey) { + zapEndpointCallback = body.callback; } - return zapEndpoint; + return zapEndpointCallback; } public async createZapRequest(amount: number, comment?: string): Promise { @@ -85,26 +95,20 @@ export default class Zap extends EventEmitter { event: this.zappedEvent?.id!, amount, comment: comment!, - relays: ['wss://nos.lol'], + relays: ['wss://nos.lol', 'wss://relay.nostr.band', 'wss://relay.f7z.io', 'wss://relay.damus.io', 'wss://nostr.mom', 'wss://no.str.cr'], }) - // sign const zapRequestEvent = new Event(this.ndk, zapRequest as NostrEvent); await zapRequestEvent.sign(); + const zapRequestNostrEvent = await zapRequestEvent.toNostrEvent(); - console.log('zapRequestEvent', await zapRequestEvent.toNostrEvent()); - - - // get with axios on zapEndpoint adding to querystring amount=amount and nostr with a URI encoded zapRequest - const response = await axios.get(zapEndpoint, { - params: { - amount, - nostr: JSON.stringify(await zapRequestEvent.toNostrEvent()), - } - }); - - console.log('response', response); + const response = await fetch(`${zapEndpoint}?` + new URLSearchParams({ + amount: amount.toString(), + nostr: JSON.stringify(zapRequestNostrEvent), + }) + ); + const body: any = await response.json(); - return response.data?.pr; + return body.pr; } } From bd82b6f3e0bdd35128afd95e9944d52ee7f46941 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 1 Apr 2023 10:25:09 +0300 Subject: [PATCH 009/773] change to nostr-dev-kit org --- .gitignore | 5 +++++ package.json | 6 +++--- src/index.ts | 15 +++++++++++++-- src/subscription/index.ts | 4 ++++ tsconfig.json | 4 ++-- 5 files changed, 27 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index dfbf1548..1f6b30a3 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,8 @@ **/build **/dist **/.vscode +pnpm-lock.yaml +**/*.js +**/*.d.ts +**/*.d.ts.map +*.tgz diff --git a/package.json b/package.json index 36aa0976..967acd00 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "nostr-dev-kit", - "version": "0.0.3", + "name": "@nostr-dev-kit/ndk", + "version": "0.0.4", "description": "NDK - Nostr Development Kit", "main": "dist/cjs/index.js", "module": "dist/esm/index.js", @@ -24,7 +24,7 @@ "build:esm": "node tools/cleanup esm && tsc -p config/tsconfig.esm.json", "build:types": "node tools/cleanup types && tsc -p config/tsconfig.types.json", "package": "npm run build && npm pack", - "clean": "node tools/cleanup cjs && node tools/cleanup esm && node tools/cleanup types", + "clean": "node tools/cleanup cjs && node tools/cleanup esm && node tools/cleanup types && find src -iname '*.js' -delete", "compile": "tsc", "prepare": "npm run compile", "pretest": "npm run compile", diff --git a/src/index.ts b/src/index.ts index e2159ea3..1d94e1e4 100644 --- a/src/index.ts +++ b/src/index.ts @@ -4,7 +4,7 @@ import type {SignerType} from './signers/'; import User, {UserParams} from './user/'; import {UserProfile} from './user/profile'; import {RelaySet} from './relay/sets/'; -import {Filter, Subscription, SubscriptionOptions} from './subscription/'; +import {Filter, FilterOptions, Subscription, SubscriptionOptions} from './subscription/'; import { calculateRelaySetFromFilter, calculateRelaySetFromEvent, @@ -22,15 +22,21 @@ export {zapInvoiceFromEvent} from './zap/invoice'; export interface NDKConstructorParams { explicitRelayUrls?: string[]; signer?: SignerType; + cacheAdapter?: NDKCacheAdapter; } export interface GetUserParams extends UserParams { npub?: string; hexpubkey?: string; } +export interface NDKCacheAdapter { + getEvents(filter: Filter): Promise>; +} + export default class NDK extends EventEmitter { public relayPool?: Pool; public signer?: SignerType; + public cacheAdapter?: NDKCacheAdapter; public constructor(opts: NDKConstructorParams) { super(); @@ -95,7 +101,12 @@ export default class NDK extends EventEmitter { /** * Fetch events */ - public async fetchEvents(filter: Filter): Promise> { + public async fetchEvents(filter: Filter, opts?: FilterOptions): Promise> { + // check for cached event + if (!opts?.skipCache && this.cacheAdapter) { + const cachedEvents = await this.cacheAdapter.getEvents(filter); + } + const relaySet = await calculateRelaySetFromFilter(this, filter); return new Promise(resolve => { diff --git a/src/subscription/index.ts b/src/subscription/index.ts index fa2db8f1..189ce4c4 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -7,6 +7,10 @@ import Event from '../events/'; export type Filter = NostrFilter; +export interface FilterOptions { + skipCache?: boolean; +} + export interface SubscriptionOptions { closeOnEose: boolean; } diff --git a/tsconfig.json b/tsconfig.json index 0dd82884..cf79f99e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,8 +10,8 @@ // "allowJs": true, /* Allow javascript files to be compiled. */ // "checkJs": true, /* Report errors in .js files. */ // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - // "declaration": true, /* Generates corresponding '.d.ts' file. */ - // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + "declaration": true, /* Generates corresponding '.d.ts' file. */ + "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ // "sourceMap": true, /* Generates corresponding '.map' file. */ // "outFile": "./", /* Concatenate and emit output to single file. */ // "outDir": "./", /* Redirect output structure to the directory. */ From 5f5aa14609e564dd7be6ba716639c72168fe4fd4 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 1 Apr 2023 13:15:32 +0300 Subject: [PATCH 010/773] prefix all types --- .eslintrc.json | 28 ++++++++++++- .prettierrc.json | 3 +- package.json | 19 ++++++--- src/cache/index.ts | 6 +++ src/events/index.ts | 27 +++++++------ src/index.ts | 69 +++++++++++++++----------------- src/relay/index.ts | 18 ++++----- src/relay/pool/index.ts | 8 ++-- src/relay/score.ts | 2 +- src/relay/sets/calculate.ts | 34 ++++++++-------- src/relay/sets/index.ts | 14 +++---- src/signers/index.ts | 11 ++--- src/signers/nip07/index.ts | 10 ++--- src/signers/private-key/index.ts | 4 +- src/subscription/index.ts | 42 +++++++++---------- src/user/index.ts | 22 +++++----- src/user/profile.ts | 6 +-- src/zap/index.ts | 40 +++++++++--------- src/zap/invoice.ts | 21 +++++----- 19 files changed, 209 insertions(+), 175 deletions(-) create mode 100644 src/cache/index.ts diff --git a/.eslintrc.json b/.eslintrc.json index 9e26dfee..9fffbcde 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1 +1,27 @@ -{} \ No newline at end of file +{ + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "prettier" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "sourceType": "module", + "ecmaVersion": 2021 + }, + "plugins": ["@typescript-eslint"], + "env": { + "jest": true + }, + "rules": { + "@typescript-eslint/no-unused-vars": ["warn", { "args": "none" }], // No warnings for unused function arguments, which might be used in the future. + "no-constant-binary-expression": "error", + "semi": ["error", "always"] + }, + "globals": { + "Buffer": true, + "expect": true, + "process": true, + "test": true + } +} diff --git a/.prettierrc.json b/.prettierrc.json index 8244b35d..ace5cc88 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -4,5 +4,6 @@ "useTabs": false, "trailingComma": "none", "printWidth": 100, - "singleQuote": false + "singleQuote": false, + "semi": true } \ No newline at end of file diff --git a/package.json b/package.json index 967acd00..42f99c5d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.4", + "version": "0.0.6", "description": "NDK - Nostr Development Kit", "main": "dist/cjs/index.js", "module": "dist/esm/index.js", @@ -19,16 +19,18 @@ } }, "scripts": { - "build": "npm run build:cjs && npm run build:esm && npm run build:types", + "dev": "node tools/cleanup esm && tsc -w -p config/tsconfig.esm.json", + "build": "pnpm build:cjs && pnpm build:esm && pnpm build:types", "build:cjs": "node tools/cleanup cjs && tsc -p config/tsconfig.cjs.json", "build:esm": "node tools/cleanup esm && tsc -p config/tsconfig.esm.json", "build:types": "node tools/cleanup types && tsc -p config/tsconfig.types.json", - "package": "npm run build && npm pack", + "package": "pnpm build && pnpm pack", "clean": "node tools/cleanup cjs && node tools/cleanup esm && node tools/cleanup types && find src -iname '*.js' -delete", + "lint": "eslint src/**/*.ts", "compile": "tsc", - "prepare": "npm run compile", - "pretest": "npm run compile", - "posttest": "npm run lint" + "prepare": "pnpm compile", + "pretest": "pnpm compile", + "posttest": "pnpm lint" }, "keywords": [ "nostr" @@ -43,6 +45,11 @@ "typescript": "~4.7.0" }, "dependencies": { + "@typescript-eslint/eslint-plugin": "^5.57.0", + "@typescript-eslint/parser": "^5.57.0", + "eslint": "^8.37.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-import": "^2.27.5", "eventemitter3": "^5.0.0", "light-bolt11-decoder": "^3.0.0", "node-fetch": "^3.3.1", diff --git a/src/cache/index.ts b/src/cache/index.ts new file mode 100644 index 00000000..8a51eea7 --- /dev/null +++ b/src/cache/index.ts @@ -0,0 +1,6 @@ +import {NDKFilter} from '../subscription/'; +import NDKEvent from '../events/'; + +export interface NDKCacheAdapter { + getEvents(filter: NDKFilter): Promise>; +} \ No newline at end of file diff --git a/src/events/index.ts b/src/events/index.ts index 2f468ebf..83c6c43e 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -1,17 +1,18 @@ -import { getEventHash, Kind } from "nostr-tools"; +import { getEventHash, Kind, UnsignedEvent } from "nostr-tools"; import EventEmitter from "eventemitter3"; import NDK from "../"; import Zap from '../zap'; -export type EventId = string; -export type Tag = string[]; +export type NDKEventId = string; +export type NDKTag = string[]; +export type NDKKind = Kind; export type NostrEvent = { created_at: number; content: string; subject?: string; tags: string[][]; - kind: Kind; + kind?: NDKKind; pubkey: string; id?: string; sig?: string; @@ -22,8 +23,8 @@ export default class Event extends EventEmitter { public created_at?: number; public content = ''; public subject: string | undefined; - public tags: Tag[] = []; - public kind: Kind = -1; + public tags: NDKTag[] = []; + public kind?: NDKKind; public id = ""; public sig?: string; public pubkey = ''; @@ -35,10 +36,10 @@ export default class Event extends EventEmitter { this.content = event?.content || ''; this.subject = event?.subject; this.tags = event?.tags || []; - this.kind = event?.kind || -1; this.id = event?.id || ''; this.sig = event?.sig; this.pubkey = event?.pubkey || ''; + event?.kind && (this.kind = event?.kind); } async toNostrEvent(pubkey?: string): Promise { @@ -57,7 +58,7 @@ export default class Event extends EventEmitter { if (this.subject) nostrEvent.subject = this.subject; try { - nostrEvent.id = getEventHash(nostrEvent); + nostrEvent.id = getEventHash(nostrEvent as UnsignedEvent); // eslint-disable-next-line no-empty } catch (e) {} @@ -69,7 +70,7 @@ export default class Event extends EventEmitter { /** * Get all tags with the given name */ - getMatchingTags(tagName: string): Tag[] { + getMatchingTags(tagName: string): NDKTag[] { return this.tags.filter((tag) => tag[0] === tagName); } @@ -88,7 +89,7 @@ export default class Event extends EventEmitter { async generateTags() { // if this is a paramterized repleacable event, check there's a d tag, if not, generate it - if (this.kind >= 30000 && this.kind <= 40000) { + if (this.kind && this.kind >= 30000 && this.kind <= 40000) { const dTag = this.getMatchingTags('d')[0]; if (!dTag) { this.tags.push(['d', ""]); @@ -102,11 +103,13 @@ export default class Event extends EventEmitter { } async zap(amount: number, comment?: string): Promise { - this.ndk?.assertSigner(); + if (!this.ndk) throw new Error('No NDK instance found'); + + this.ndk.assertSigner(); const zap = new Zap({ ndk: this.ndk, - zappedEvent: this + zappedEvent: this, }); const paymentRequest = await zap.createZapRequest(amount, comment); diff --git a/src/index.ts b/src/index.ts index 1d94e1e4..a370ec6b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,47 +1,44 @@ -import Event from './events/'; -import {Pool} from './relay/pool/'; -import type {SignerType} from './signers/'; -import User, {UserParams} from './user/'; -import {UserProfile} from './user/profile'; -import {RelaySet} from './relay/sets/'; -import {Filter, FilterOptions, Subscription, SubscriptionOptions} from './subscription/'; +import NDKEvent from './events/'; +import {NDKPool} from './relay/pool/'; +import type {NDKSigner} from './signers/'; +import NDKUser, {NDKUserParams} from './user/'; +import {NDKUserProfile} from './user/profile'; +import {NDKRelaySet} from './relay/sets/'; +import {NDKFilter, NDKFilterOptions, NDKSubscription, NDKSubscriptionOptions} from './subscription/'; +import { NDKCacheAdapter } from './cache'; import { calculateRelaySetFromFilter, calculateRelaySetFromEvent, } from './relay/sets/calculate'; import EventEmitter from 'eventemitter3'; -export {Event as NDKEvent}; -export {User as NDKUser}; -export {Filter as NDKFilter}; -export {UserProfile as NDKUserProfile}; -export {Nip07Signer as NDKNip07Signer} from './signers/nip07/'; -export {ZapInvoice as NDKZapInvoice} from './zap/invoice'; +export {NDKEvent}; +export {NDKUser}; +export {NDKFilter}; +export {NDKUserProfile}; +export {NDKNip07Signer} from './signers/nip07/'; +export {NDKZapInvoice} from './zap/invoice'; export {zapInvoiceFromEvent} from './zap/invoice'; export interface NDKConstructorParams { explicitRelayUrls?: string[]; - signer?: SignerType; + signer?: NDKSigner; cacheAdapter?: NDKCacheAdapter; } -export interface GetUserParams extends UserParams { +export interface GetUserParams extends NDKUserParams { npub?: string; hexpubkey?: string; } -export interface NDKCacheAdapter { - getEvents(filter: Filter): Promise>; -} - export default class NDK extends EventEmitter { - public relayPool?: Pool; - public signer?: SignerType; + public relayPool?: NDKPool; + public signer?: NDKSigner; public cacheAdapter?: NDKCacheAdapter; public constructor(opts: NDKConstructorParams) { super(); if (opts.explicitRelayUrls) - this.relayPool = new Pool(opts.explicitRelayUrls); + this.relayPool = new NDKPool(opts.explicitRelayUrls); this.signer = opts.signer; } @@ -50,22 +47,22 @@ export default class NDK extends EventEmitter { } /** - * Get a User object + * Get a NDKUser object * * @param opts * @returns */ - public getUser(opts: GetUserParams): User { - const user = new User(opts); + public getUser(opts: GetUserParams): NDKUser { + const user = new NDKUser(opts); user.ndk = this; return user; } public subscribe( - filter: Filter, - relaySet?: RelaySet, - opts?: SubscriptionOptions - ): Subscription { + filter: NDKFilter, + relaySet?: NDKRelaySet, + opts?: NDKSubscriptionOptions + ): NDKSubscription { if (!relaySet) { relaySet = calculateRelaySetFromFilter(this, filter); } @@ -77,8 +74,8 @@ export default class NDK extends EventEmitter { return relaySet.subscribe(filter, opts); } - public async publish(event: Event): Promise { - const relaySet = await calculateRelaySetFromEvent(this, event); + public async publish(event: NDKEvent): Promise { + const relaySet = calculateRelaySetFromEvent(this, event); return relaySet.publish(event); } @@ -86,8 +83,8 @@ export default class NDK extends EventEmitter { /** * Fetch a single event */ - public async fetchEvent(filter: Filter): Promise { - const relaySet = await calculateRelaySetFromFilter(this, filter); + public async fetchEvent(filter: NDKFilter): Promise { + const relaySet = calculateRelaySetFromFilter(this, filter); return new Promise(resolve => { const s = this.subscribe(filter, relaySet, {closeOnEose: true}); @@ -101,7 +98,7 @@ export default class NDK extends EventEmitter { /** * Fetch events */ - public async fetchEvents(filter: Filter, opts?: FilterOptions): Promise> { + public async fetchEvents(filter: NDKFilter, opts?: NDKFilterOptions): Promise> { // check for cached event if (!opts?.skipCache && this.cacheAdapter) { const cachedEvents = await this.cacheAdapter.getEvents(filter); @@ -110,10 +107,10 @@ export default class NDK extends EventEmitter { const relaySet = await calculateRelaySetFromFilter(this, filter); return new Promise(resolve => { - const events: Set = new Set(); + const events: Set = new Set(); const s = this.subscribe(filter, relaySet, {closeOnEose: true}); - s.on('event', (event: Event) => { + s.on('event', (event: NDKEvent) => { events.add(event); }); s.on('eose', () => { diff --git a/src/relay/index.ts b/src/relay/index.ts index 3cad2b39..9f72a583 100644 --- a/src/relay/index.ts +++ b/src/relay/index.ts @@ -2,21 +2,21 @@ import 'websocket-polyfill'; import {relayInit, Sub} from 'nostr-tools'; import type {Event as SignedEvent} from 'nostr-tools'; import User from '../user'; -import {RelayScore} from './score'; -import {Subscription} from '../subscription/'; -import Event, {NostrEvent} from '../events/'; +import {NDKRelayScore} from './score'; +import {NDKSubscription} from '../subscription/'; +import NDKEvent, {NostrEvent} from '../events/'; import EventEmitter from 'eventemitter3'; -export class Relay extends EventEmitter { +export class NDKRelay extends EventEmitter { readonly url: string; - readonly scores: Map; + readonly scores: Map; private relay; public constructor(url: string) { super(); this.url = url; this.relay = relayInit(url); - this.scores = new Map(); + this.scores = new Map(); this.relay.on('connect', () => { this.emit('connect'); @@ -40,7 +40,7 @@ export class Relay extends EventEmitter { this.emit('notice', this, notice); } - public subscribe(subscription: Subscription): Sub { + public subscribe(subscription: NDKSubscription): Sub { const {filter} = subscription; const sub = this.relay.sub([filter], { @@ -48,7 +48,7 @@ export class Relay extends EventEmitter { }); sub.on('event', (event: NostrEvent) => { - const e = new Event(undefined, event); + const e = new NDKEvent(undefined, event); subscription.eventReceived(e, this); }); @@ -59,7 +59,7 @@ export class Relay extends EventEmitter { return sub; } - public async publish(event: Event): Promise { + public async publish(event: NDKEvent): Promise { const nostrEvent = (await event.toNostrEvent()) as SignedEvent; this.relay.publish(nostrEvent); } diff --git a/src/relay/pool/index.ts b/src/relay/pool/index.ts index 7552efa2..da2b7c1d 100644 --- a/src/relay/pool/index.ts +++ b/src/relay/pool/index.ts @@ -1,12 +1,12 @@ import EventEmitter from 'eventemitter3'; -import {Relay} from '../'; +import {NDKRelay} from '../'; -export class Pool extends EventEmitter { - public relays = new Map(); +export class NDKPool extends EventEmitter { + public relays = new Map(); public constructor(relayUrls: string[] = []) { super(); relayUrls.forEach(relayUrl => { - const relay = new Relay(relayUrl); + const relay = new NDKRelay(relayUrl); relay.on('notice', (relay, notice) => { this.emit('notice', relay, notice); }); diff --git a/src/relay/score.ts b/src/relay/score.ts index 85a6b938..d363e7ea 100644 --- a/src/relay/score.ts +++ b/src/relay/score.ts @@ -1,2 +1,2 @@ // TODO this will probably get more sophisticated -export type RelayScore = number; +export type NDKRelayScore = number; diff --git a/src/relay/sets/calculate.ts b/src/relay/sets/calculate.ts index 93970100..8cb1857f 100644 --- a/src/relay/sets/calculate.ts +++ b/src/relay/sets/calculate.ts @@ -1,40 +1,40 @@ import NDK from '../../'; -import {Relay} from '../'; +import {NDKRelay} from '../'; import Event from '../../events/'; -import {RelaySet} from './'; -import {Filter} from '../../subscription/'; +import {NDKRelaySet} from './'; +import {NDKFilter} from '../../subscription/'; /** - * Creates a RelaySet for the specified event. + * Creates a NDKRelaySet for the specified event. * TODO: account for relays where tagged pubkeys or hashtags * tend to write to. * @param ndk {NDK} * @param event {Event} - * @returns Promise + * @returns Promise */ -export function calculateRelaySetFromEvent(ndk: NDK, event: Event): RelaySet { - const relays: Set = new Set(); +export function calculateRelaySetFromEvent(ndk: NDK, event: Event): NDKRelaySet { + const relays: Set = new Set(); ndk.relayPool?.relays.forEach(relay => relays.add(relay)); - return new RelaySet(relays); + return new NDKRelaySet(relays); } /** - * Creates a RelaySet for the specified filter + * Creates a NDKRelaySet for the specified filter * @param ndk * @param filter - * @returns Promise + * @returns Promise */ export function calculateRelaySetFromFilter( ndk: NDK, - filter: Filter -): RelaySet { - const relays: Set = new Set(); + filter: NDKFilter +): NDKRelaySet { + const relays: Set = new Set(); ndk.relayPool?.relays.forEach(relay => relays.add(relay)); - return new RelaySet(relays); + return new NDKRelaySet(relays); } /** @@ -44,9 +44,9 @@ export function calculateRelaySetFromFilter( */ export function calculateRelaySetsFromFilters( ndk: NDK, - filters: Filter[] -): Map { - const sets: Map = new Map(); + filters: NDKFilter[] +): Map { + const sets: Map = new Map(); filters.forEach(filter => { const set = calculateRelaySetFromFilter(ndk, filter); diff --git a/src/relay/sets/index.ts b/src/relay/sets/index.ts index 90b9331b..eb697e4e 100644 --- a/src/relay/sets/index.ts +++ b/src/relay/sets/index.ts @@ -1,6 +1,6 @@ -import {Relay} from '../'; +import {NDKRelay} from '../'; import Event from '../../events/'; -import {Subscription, SubscriptionOptions, Filter} from '../../subscription/'; +import {NDKSubscription, NDKSubscriptionOptions, NDKFilter} from '../../subscription/'; /** * A relay set is a group of relays. This grouping can be short-living, for a single @@ -9,15 +9,15 @@ import {Subscription, SubscriptionOptions, Filter} from '../../subscription/'; * * Requests to relays should be sent through this interface. */ -export class RelaySet { - readonly relays: Set; +export class NDKRelaySet { + readonly relays: Set; - public constructor(relays: Set) { + public constructor(relays: Set) { this.relays = relays; } - public subscribe(filter: Filter, opts?: SubscriptionOptions): Subscription { - const subscription = new Subscription(filter, this, opts); + public subscribe(filter: NDKFilter, opts?: NDKSubscriptionOptions): NDKSubscription { + const subscription = new NDKSubscription(filter, this, opts); this.relays.forEach(relay => { // TODO: if relay is not connected, don't try to send, but rather attach diff --git a/src/signers/index.ts b/src/signers/index.ts index 883b1859..f0aef4fc 100644 --- a/src/signers/index.ts +++ b/src/signers/index.ts @@ -1,11 +1,8 @@ -import User from '../user'; +import NDKUser from '../user'; import type {NostrEvent} from '../events/'; -import { Nip07Signer } from './nip07'; -import PrivateKeySigner from './private-key'; -export type SignerType = Nip07Signer | PrivateKeySigner; - -export interface Signer { - user: User | undefined; +export interface NDKSigner { + user: NDKUser | undefined; sign(event: NostrEvent): Promise; } + diff --git a/src/signers/nip07/index.ts b/src/signers/nip07/index.ts index fe9746c3..81fdfa8b 100644 --- a/src/signers/nip07/index.ts +++ b/src/signers/nip07/index.ts @@ -1,9 +1,9 @@ -import {Signer} from '../'; +import {NDKSigner} from '../'; import type {NostrEvent} from '../../events'; -import User from '../../user'; +import NDKUser from '../../user'; -export class Nip07Signer implements Signer { - public user: User | undefined; +export class NDKNip07Signer implements NDKSigner { + public user: NDKUser | undefined; private window: any; public constructor() {} @@ -12,7 +12,7 @@ export class Nip07Signer implements Signer { this.window = window; const pubkey = await this.window.nostr?.getPublicKey(); - this.user = new User({hexpubkey: pubkey}); + this.user = new NDKUser({hexpubkey: pubkey}); return this.user; } diff --git a/src/signers/private-key/index.ts b/src/signers/private-key/index.ts index 9c1e1d5c..76c7901e 100644 --- a/src/signers/private-key/index.ts +++ b/src/signers/private-key/index.ts @@ -1,10 +1,10 @@ import {signEvent, generatePrivateKey, getPublicKey} from 'nostr-tools'; import type {UnsignedEvent} from 'nostr-tools'; import type {NostrEvent} from '../../events/'; -import {Signer} from '../'; +import {NDKSigner} from '../'; import User from '../../user'; -export default class PrivateKeySigner implements Signer { +export default class PrivateKeySigner implements NDKSigner { public user: User | undefined; privateKey?: string; diff --git a/src/subscription/index.ts b/src/subscription/index.ts index 189ce4c4..9819c817 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -1,31 +1,31 @@ import {Filter as NostrFilter, Sub} from 'nostr-tools'; import EventEmitter from 'eventemitter3'; -import {Relay} from '../relay'; -import {RelaySet} from '../relay/sets/'; -import {EventId} from '../events/'; -import Event from '../events/'; +import {NDKRelay} from '../relay'; +import {NDKRelaySet} from '../relay/sets/'; +import {NDKEventId} from '../events/'; +import NDKEvent from '../events/'; -export type Filter = NostrFilter; +export type NDKFilter = NostrFilter; -export interface FilterOptions { +export interface NDKFilterOptions { skipCache?: boolean; } -export interface SubscriptionOptions { +export interface NDKSubscriptionOptions { closeOnEose: boolean; } -export class Subscription extends EventEmitter { +export class NDKSubscription extends EventEmitter { readonly subId: string; - readonly filter: Filter; - readonly relaySet: RelaySet; - readonly opts?: SubscriptionOptions; - public relaySubscriptions: Map; + readonly filter: NDKFilter; + readonly relaySet: NDKRelaySet; + readonly opts?: NDKSubscriptionOptions; + public relaySubscriptions: Map; public constructor( - filter: Filter, - relaySet: RelaySet, - opts?: SubscriptionOptions, + filter: NDKFilter, + relaySet: NDKRelaySet, + opts?: NDKSubscriptionOptions, subId?: string ) { super(); @@ -33,14 +33,14 @@ export class Subscription extends EventEmitter { this.filter = filter; this.relaySet = relaySet; this.opts = opts; - this.relaySubscriptions = new Map(); + this.relaySubscriptions = new Map(); } // EVENT handling - private eventFirstSeen = new Map(); - private events = new Map(); + private eventFirstSeen = new Map(); + private events = new Map(); - public eventReceived(event: Event, relay: Relay) { + public eventReceived(event: NDKEvent, relay: NDKRelay) { const eventAlreadySeen = this.events.has(event.id); if (eventAlreadySeen) { @@ -59,10 +59,10 @@ export class Subscription extends EventEmitter { } // EOSE handling - private eosesSeen = new Set(); + private eosesSeen = new Set(); private eoseTimeout: ReturnType | undefined; - public eoseReceived(relay: Relay): void { + public eoseReceived(relay: NDKRelay): void { if (this.opts?.closeOnEose) { this.relaySubscriptions.get(relay)?.unsub(); } diff --git a/src/user/index.ts b/src/user/index.ts index 40df215c..714a64d0 100644 --- a/src/user/index.ts +++ b/src/user/index.ts @@ -1,9 +1,9 @@ import {nip05, nip19} from 'nostr-tools'; import Event from '../events/'; -import {UserProfile, mergeEvent} from './profile'; +import {NDKUserProfile, mergeEvent} from './profile'; import NDK from '../'; -export interface UserParams { +export interface NDKUserParams { npub?: string; hexpubkey?: string; nip05?: string; @@ -13,13 +13,13 @@ export interface UserParams { /** * Represents a pubkey. */ -export default class User { +export default class NDKUser { public ndk: NDK | undefined; - public profile?: UserProfile; + public profile?: NDKUserProfile; readonly npub: string = ''; readonly relayUrls: string[] = []; - public constructor(opts: UserParams) { + public constructor(opts: NDKUserParams) { if (opts.npub) this.npub = opts.npub; if (opts.hexpubkey) { @@ -31,11 +31,11 @@ export default class User { } } - static async fromNip05(nip05Id: string): Promise { + static async fromNip05(nip05Id: string): Promise { const profile = await nip05.queryProfile(nip05Id); if (profile) { - return new User({ + return new NDKUser({ hexpubkey: profile.pubkey, relayUrls: profile.relays, }); @@ -70,7 +70,7 @@ export default class User { return setMetadataEvents; } - public async follows(): Promise> { + public async follows(): Promise> { if (!this.ndk) throw new Error('NDK not set'); const contactListEvents = await this.ndk.fetchEvents({ @@ -79,12 +79,12 @@ export default class User { }); if (contactListEvents) { - const contactList = new Set(); + const contactList = new Set(); contactListEvents.forEach(event => { event.tags.forEach((tag: string[]) => { if (tag[0] === 'p') { - const user = new User({hexpubkey: tag[1]}); + const user = new NDKUser({hexpubkey: tag[1]}); user.ndk = this.ndk; contactList.add(user); } @@ -94,7 +94,7 @@ export default class User { return contactList; } - return new Set(); + return new Set(); } public async relayList(): Promise> { diff --git a/src/user/profile.ts b/src/user/profile.ts index dabf38ac..0f63cf93 100644 --- a/src/user/profile.ts +++ b/src/user/profile.ts @@ -1,6 +1,6 @@ -import Event from '../events/'; +import NDKEvent from '../events/'; -export interface UserProfile { +export interface NDKUserProfile { name?: string; displayName?: string; image?: string; @@ -13,7 +13,7 @@ export interface UserProfile { zapService?: string; } -export function mergeEvent(event: Event, profile: UserProfile): UserProfile { +export function mergeEvent(event: NDKEvent, profile: NDKUserProfile): NDKUserProfile { const payload = JSON.parse(event.content); if (payload.name) profile.name = payload.name; diff --git a/src/zap/index.ts b/src/zap/index.ts index d1280f4b..477bbe9d 100644 --- a/src/zap/index.ts +++ b/src/zap/index.ts @@ -4,27 +4,26 @@ import Event from "../events"; import type {NostrEvent} from "../events"; import User from "../user"; import {nip57} from "nostr-tools"; -import {bech32} from '@scure/base' +import {bech32} from '@scure/base'; interface ZapConstructorParams { - ndk?: NDK; + ndk: NDK; zappedEvent?: Event; zappedUser?: User; } +type ZapConstructorParamsRequired = Required> & Pick & ZapConstructorParams; + export default class Zap extends EventEmitter { public ndk?: NDK; public zappedEvent?: Event; public zappedUser: User; - public constructor(args: ZapConstructorParams) { + public constructor(args: ZapConstructorParamsRequired) { super(); this.ndk = args.ndk; this.zappedEvent = args.zappedEvent; - this.zappedUser = args.zappedUser!; - if (!this.zappedUser && this.zappedEvent) { - this.zappedUser = this.ndk?.getUser({hexpubkey: this.zappedEvent.pubkey})!; - } + this.zappedUser = args.zappedUser || this.ndk.getUser({hexpubkey: this.zappedEvent.pubkey}); } public async getZapEndpoint(): Promise { @@ -33,9 +32,6 @@ export default class Zap extends EventEmitter { let zapEndpoint: string | undefined; let zapEndpointCallback: string | undefined; - // check if event has zap tag - // otherwise use the user's zap endpoint - // if no zap endpoint, throw error if (this.zappedEvent) { const zapTag = (await this.zappedEvent.getMatchingTags('zap'))[0]; @@ -60,11 +56,11 @@ export default class Zap extends EventEmitter { } if (lud16) { - let [name, domain] = lud16.split('@') - zapEndpoint = `https://${domain}/.well-known/lnurlp/${name}` + const [name, domain] = lud16.split('@'); + zapEndpoint = `https://${domain}/.well-known/lnurlp/${name}`; } else if (lud06) { - let {words} = bech32.decode(lud06, 1000); - let data = bech32.fromWords(words); + const {words} = bech32.decode(lud06, 1000); + const data = bech32.fromWords(words); const utf8Decoder = new TextDecoder('utf-8'); zapEndpoint = utf8Decoder.decode(data); } @@ -74,7 +70,7 @@ export default class Zap extends EventEmitter { } const response = await fetch(zapEndpoint); - const body: any = await response.json(); + const body = await response.json(); if (body?.allowsNostr && body?.nostrPubkey) { zapEndpointCallback = body.callback; @@ -84,19 +80,21 @@ export default class Zap extends EventEmitter { } public async createZapRequest(amount: number, comment?: string): Promise { - const zapEndpoint = await this.getZapEndpoint() + const zapEndpoint = await this.getZapEndpoint(); if (!zapEndpoint) { throw new Error('No zap endpoint found'); } + if (!this.zappedEvent) throw new Error('No zapped event found'); + const zapRequest = nip57.makeZapRequest({ profile: this.zappedUser.hexpubkey(), - event: this.zappedEvent?.id!, + event: this.zappedEvent?.id, amount, - comment: comment!, - relays: ['wss://nos.lol', 'wss://relay.nostr.band', 'wss://relay.f7z.io', 'wss://relay.damus.io', 'wss://nostr.mom', 'wss://no.str.cr'], - }) + comment: comment || '', + relays: ['wss://nos.lol', 'wss://relay.nostr.band', 'wss://relay.f7z.io', 'wss://relay.damus.io', 'wss://nostr.mom', 'wss://no.str.cr'], // TODO: fix this + }); const zapRequestEvent = new Event(this.ndk, zapRequest as NostrEvent); await zapRequestEvent.sign(); @@ -107,7 +105,7 @@ export default class Zap extends EventEmitter { nostr: JSON.stringify(zapRequestNostrEvent), }) ); - const body: any = await response.json(); + const body = await response.json(); return body.pr; } diff --git a/src/zap/invoice.ts b/src/zap/invoice.ts index b9e4697f..c6179ece 100644 --- a/src/zap/invoice.ts +++ b/src/zap/invoice.ts @@ -1,8 +1,8 @@ -import Event, {type EventId, type NostrEvent} from '../events/'; +import NDKEvent, {type NDKEventId, type NostrEvent} from '../events/'; import lightningPayReq from 'light-bolt11-decoder'; -export interface ZapInvoice { - id?: EventId; +export interface NDKZapInvoice { + id?: NDKEventId; zapper: string; // pubkey of zapper app zappee: string; // pubkey of user sending zap zapped: string; // pubkey of user receiving zap @@ -11,10 +11,9 @@ export interface ZapInvoice { comment?: string; } -export function zapInvoiceFromEvent(event: Event): ZapInvoice | null { - let zap; - let description = event.getMatchingTags('description')[0]; - let bolt11 = event.getMatchingTags('bolt11')[0]; +export function zapInvoiceFromEvent(event: NDKEvent): NDKZapInvoice | null { + const description = event.getMatchingTags('description')[0]; + const bolt11 = event.getMatchingTags('bolt11')[0]; let decodedInvoice; let zapRequest: NostrEvent; @@ -30,13 +29,13 @@ export function zapInvoiceFromEvent(event: Event): ZapInvoice | null { if (zapRequestPayload === "") { return null; } zapRequest = JSON.parse(zapRequestPayload); - decodedInvoice = lightningPayReq.decode(bolt11[1]) + decodedInvoice = lightningPayReq.decode(bolt11[1]); } catch (e) { // console.log(e, {description, event}); return null; } - const amountSection = decodedInvoice.sections.find((s: any) => s.name === 'amount') + const amountSection = decodedInvoice.sections.find((s: any) => s.name === 'amount'); if (!amountSection) { return null; } const amount = parseInt(amountSection.value) / 1000; @@ -52,7 +51,7 @@ export function zapInvoiceFromEvent(event: Event): ZapInvoice | null { // ignore self-zaps (TODO: configurable?) // if (sender === recipient) { return null; } XXX - const zapInvoice: ZapInvoice = { + const zapInvoice: NDKZapInvoice = { id: event.id, zapper: event.pubkey, zappee: sender, @@ -60,7 +59,7 @@ export function zapInvoiceFromEvent(event: Event): ZapInvoice | null { zappedEvent: zappedEventId, amount, comment: content, - } + }; return zapInvoice; } From 15a400f5799a5579b9faf263ea2cb24ace9002c1 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 1 Apr 2023 17:11:36 +0300 Subject: [PATCH 011/773] wip --- package.json | 11 ++++-- src/cache/index.ts | 5 ++- src/index.ts | 46 ++++++++++------------ src/relay/sets/index.ts | 4 +- src/subscription/index.ts | 83 ++++++++++++++++++++++++++++++++------- 5 files changed, 101 insertions(+), 48 deletions(-) diff --git a/package.json b/package.json index 42f99c5d..147ee5c5 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,11 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.6", + "version": "0.0.9", "description": "NDK - Nostr Development Kit", "main": "dist/cjs/index.js", "module": "dist/esm/index.js", "umd:main": "dist/umd/index.js", - "types": "dist/types/index.d.js", + "types": "dist/types/index.d.ts", "homepage": "https://ndk.fyi", "repository": { "type": "git", @@ -18,6 +18,10 @@ "default": "./dist/umd/index.js" } }, + "files": [ + "dist", + "README.md" + ], "scripts": { "dev": "node tools/cleanup esm && tsc -w -p config/tsconfig.esm.json", "build": "pnpm build:cjs && pnpm build:esm && pnpm build:types", @@ -45,6 +49,7 @@ "typescript": "~4.7.0" }, "dependencies": { + "@scure/base": "^1.1.1", "@typescript-eslint/eslint-plugin": "^5.57.0", "@typescript-eslint/parser": "^5.57.0", "eslint": "^8.37.0", @@ -53,7 +58,7 @@ "eventemitter3": "^5.0.0", "light-bolt11-decoder": "^3.0.0", "node-fetch": "^3.3.1", - "nostr-tools": "^1.6.0", + "nostr-tools": "^1.8.1", "utf8-buffer": "^1.0.0", "websocket-polyfill": "^0.0.3" } diff --git a/src/cache/index.ts b/src/cache/index.ts index 8a51eea7..8344069d 100644 --- a/src/cache/index.ts +++ b/src/cache/index.ts @@ -1,6 +1,7 @@ -import {NDKFilter} from '../subscription/'; +import {NDKSubscription} from '../subscription/'; import NDKEvent from '../events/'; export interface NDKCacheAdapter { - getEvents(filter: NDKFilter): Promise>; + query(subscription: NDKSubscription): void; + setEvent(event: NDKEvent): Promise; } \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index a370ec6b..d69fba34 100644 --- a/src/index.ts +++ b/src/index.ts @@ -12,10 +12,13 @@ import { } from './relay/sets/calculate'; import EventEmitter from 'eventemitter3'; -export {NDKEvent}; -export {NDKUser}; -export {NDKFilter}; -export {NDKUserProfile}; +export { + NDKEvent, + NDKUser, + NDKFilter, + NDKUserProfile, + NDKCacheAdapter, +}; export {NDKNip07Signer} from './signers/nip07/'; export {NDKZapInvoice} from './zap/invoice'; export {zapInvoiceFromEvent} from './zap/invoice'; @@ -37,6 +40,7 @@ export default class NDK extends EventEmitter { public constructor(opts: NDKConstructorParams) { super(); + if (opts.explicitRelayUrls) this.relayPool = new NDKPool(opts.explicitRelayUrls); this.signer = opts.signer; @@ -60,18 +64,12 @@ export default class NDK extends EventEmitter { public subscribe( filter: NDKFilter, - relaySet?: NDKRelaySet, opts?: NDKSubscriptionOptions ): NDKSubscription { - if (!relaySet) { - relaySet = calculateRelaySetFromFilter(this, filter); - } + const subscription = new NDKSubscription(this, filter, opts) + .start(); - if (!relaySet) { - throw new Error('No relay set'); - } - - return relaySet.subscribe(filter, opts); + return subscription; } public async publish(event: NDKEvent): Promise { @@ -84,10 +82,8 @@ export default class NDK extends EventEmitter { * Fetch a single event */ public async fetchEvent(filter: NDKFilter): Promise { - const relaySet = calculateRelaySetFromFilter(this, filter); - return new Promise(resolve => { - const s = this.subscribe(filter, relaySet, {closeOnEose: true}); + const s = this.subscribe(filter, {closeOnEose: true}); s.on('event', event => { event.ndk = this; resolve(event); @@ -99,21 +95,19 @@ export default class NDK extends EventEmitter { * Fetch events */ public async fetchEvents(filter: NDKFilter, opts?: NDKFilterOptions): Promise> { - // check for cached event - if (!opts?.skipCache && this.cacheAdapter) { - const cachedEvents = await this.cacheAdapter.getEvents(filter); - } - - const relaySet = await calculateRelaySetFromFilter(this, filter); - return new Promise(resolve => { const events: Set = new Set(); - const s = this.subscribe(filter, relaySet, {closeOnEose: true}); - s.on('event', (event: NDKEvent) => { + const relaySetSubscription = this.subscribe(filter, {closeOnEose: true}); + + relaySetSubscription.on('event', (event: NDKEvent) => { + if (this.cacheAdapter) { + this.cacheAdapter.setEvent(event); + } + events.add(event); }); - s.on('eose', () => { + relaySetSubscription.on('eose', () => { resolve(events); }); }); diff --git a/src/relay/sets/index.ts b/src/relay/sets/index.ts index eb697e4e..c275e714 100644 --- a/src/relay/sets/index.ts +++ b/src/relay/sets/index.ts @@ -16,9 +16,7 @@ export class NDKRelaySet { this.relays = relays; } - public subscribe(filter: NDKFilter, opts?: NDKSubscriptionOptions): NDKSubscription { - const subscription = new NDKSubscription(filter, this, opts); - + public subscribe(subscription: NDKSubscription): NDKSubscription { this.relays.forEach(relay => { // TODO: if relay is not connected, don't try to send, but rather attach // to connected event and send it at that moment if this subscription hasn't diff --git a/src/subscription/index.ts b/src/subscription/index.ts index 9819c817..3ee9d20a 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -1,9 +1,14 @@ +import NDK from '../'; import {Filter as NostrFilter, Sub} from 'nostr-tools'; import EventEmitter from 'eventemitter3'; import {NDKRelay} from '../relay'; import {NDKRelaySet} from '../relay/sets/'; import {NDKEventId} from '../events/'; import NDKEvent from '../events/'; +import { + calculateRelaySetFromFilter, + calculateRelaySetFromEvent, +} from '../relay/sets/calculate'; export type NDKFilter = NostrFilter; @@ -13,48 +18,98 @@ export interface NDKFilterOptions { export interface NDKSubscriptionOptions { closeOnEose: boolean; + cacheUsage?: NDKSubscriptionCacheUsage; +} + +export enum NDKSubscriptionCacheUsage { + // Only use cache, don't subscribe to relays + ONLY = 'ONLY', + + // Skip cache, don't use it + SKIP = 'SKIP', + + // Only write to cache, don't read from it + WRITE_ONLY = 'WRITE_ONLY', } export class NDKSubscription extends EventEmitter { readonly subId: string; readonly filter: NDKFilter; - readonly relaySet: NDKRelaySet; readonly opts?: NDKSubscriptionOptions; + public relaySet?: NDKRelaySet; + public ndk: NDK; public relaySubscriptions: Map; public constructor( + ndk: NDK, filter: NDKFilter, - relaySet: NDKRelaySet, opts?: NDKSubscriptionOptions, + relaySet?: NDKRelaySet, subId?: string ) { super(); - this.subId = subId || Math.floor(Math.random() * 9999991000).toString(); + this.ndk = ndk; + this.subId = subId || Math.floor(Math.random() * 9999991000).toString(); // TODO: use UUID this.filter = filter; this.relaySet = relaySet; this.opts = opts; this.relaySubscriptions = new Map(); } + /** + * Start the subscription. This is the main method that should be called + * after creating a subscription. + */ + public start(): NDKSubscription { + if (this.opts?.cacheUsage !== NDKSubscriptionCacheUsage.SKIP) { + this.startWithCache(); + } + + if (this.opts?.cacheUsage !== NDKSubscriptionCacheUsage.ONLY) { + this.startWithRelaySet(); + } + + return this; + } + + private startWithCache(): void { + if (this.ndk.cacheAdapter?.query) { + this.ndk.cacheAdapter.query(this); + } + } + + private startWithRelaySet(): void { + if (!this.relaySet) { + this.relaySet = calculateRelaySetFromFilter(this.ndk, this.filter); + } + + if (this.relaySet) { + this.relaySet.subscribe(this); + } + } + // EVENT handling private eventFirstSeen = new Map(); private events = new Map(); - public eventReceived(event: NDKEvent, relay: NDKRelay) { - const eventAlreadySeen = this.events.has(event.id); + public eventReceived(event: NDKEvent, relay: NDKRelay, fromCache = false) { + if (fromCache) { + const eventAlreadySeen = this.events.has(event.id); + + if (eventAlreadySeen) { + if (this.eventFirstSeen.get(event.id)) { + const timeSinceFirstSeen = + Date.now() - (this.eventFirstSeen.get(event.id) || 0); + relay.scoreSlowerEvent(timeSinceFirstSeen); + } - if (eventAlreadySeen) { - if (this.eventFirstSeen.get(event.id)) { - const timeSinceFirstSeen = - Date.now() - (this.eventFirstSeen.get(event.id) || 0); - relay.scoreSlowerEvent(timeSinceFirstSeen); + return; } - return; + this.eventFirstSeen.set(event.id, Date.now()); + this.events.set(event.id, event); } - this.eventFirstSeen.set(event.id, Date.now()); - this.events.set(event.id, event); this.emit('event', event, relay); } @@ -69,7 +124,7 @@ export class NDKSubscription extends EventEmitter { this.eosesSeen.add(relay); - const hasSeenAllEoses = this.eosesSeen.size === this.relaySet.size(); + const hasSeenAllEoses = this.eosesSeen.size === this.relaySet?.size(); if (hasSeenAllEoses) { this.emit('eose'); From fc90801fcd2bd8df86f9870bde2081acab006e6c Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sun, 2 Apr 2023 00:15:26 +0300 Subject: [PATCH 012/773] add caching support --- README.md | 6 +- package-lock.json | 3478 ++++++++++++++++++++++++++++++------- package.json | 4 +- src/cache/index.ts | 13 +- src/events/index.ts | 9 +- src/index.ts | 19 +- src/subscription/index.ts | 90 +- 7 files changed, 2991 insertions(+), 628 deletions(-) diff --git a/README.md b/README.md index 58048e43..fc9f09ac 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,9 @@ ## Features - [ ] NIP-01 - [ ] -- [ ] Caching adapters +- [x] Caching adapters * Server-side - - [ ] Redis + - [x] [Redis](https://github.com/pablof7z/ndk-cache-redis) - [ ] In-memory * Client-side - [ ] LocalStorage @@ -165,4 +165,4 @@ All relays are tracked in a single pool that handles connection errors/reconnect RelaySets are assembled ad-hoc as needed depending on the queries set, although some RelaySets might be long-lasting, like the `explicitRelays` specified by the user. -RelaySets are always a subset of the pool of all available relays. \ No newline at end of file +RelaySets are always a subset of the pool of all available relays. diff --git a/package-lock.json b/package-lock.json index fae7bfb4..b6a14a65 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,22 +1,30 @@ { - "name": "nostr-dev-kit", - "version": "0.0.3", + "name": "@nostr-dev-kit/ndk", + "version": "0.0.9", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "nostr-dev-kit", - "version": "0.0.3", + "name": "@nostr-dev-kit/ndk", + "version": "0.0.9", "license": "MIT", "dependencies": { + "@scure/base": "^1.1.1", + "@typescript-eslint/eslint-plugin": "^5.57.0", + "@typescript-eslint/parser": "^5.57.0", + "debug": "^4.3.4", + "eslint": "^8.37.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-import": "^2.27.5", "eventemitter3": "^5.0.0", "light-bolt11-decoder": "^3.0.0", "node-fetch": "^3.3.1", - "nostr-tools": "^1.6.0", + "nostr-tools": "^1.8.1", "utf8-buffer": "^1.0.0", "websocket-polyfill": "^0.0.3" }, "devDependencies": { + "@types/debug": "^4.1.7", "@types/jest": "^29.5.0", "@types/node": "^14.11.2", "gts": "^3.1.1", @@ -685,54 +693,103 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", + "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", + "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", "dependencies": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", + "debug": "^4.3.2", + "espree": "^9.5.1", + "globals": "^13.19.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/js": { + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.37.0.tgz", + "integrity": "sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==", "engines": { - "node": ">= 4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", + "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", @@ -1126,7 +1183,6 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -1139,7 +1195,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, "engines": { "node": ">= 8" } @@ -1148,7 +1203,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -1286,6 +1340,15 @@ "@babel/types": "^7.3.0" } }, + "node_modules/@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dev": true, + "dependencies": { + "@types/ms": "*" + } + }, "node_modules/@types/graceful-fs": { "version": "4.1.6", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", @@ -1332,8 +1395,12 @@ "node_modules/@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" }, "node_modules/@types/minimist": { "version": "1.2.2", @@ -1341,6 +1408,12 @@ "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", "dev": true }, + "node_modules/@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "dev": true + }, "node_modules/@types/node": { "version": "14.18.36", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", @@ -1359,6 +1432,11 @@ "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", "dev": true }, + "node_modules/@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==" + }, "node_modules/@types/stack-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", @@ -1381,30 +1459,31 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", - "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", - "dev": true, - "dependencies": { - "@typescript-eslint/experimental-utils": "4.33.0", - "@typescript-eslint/scope-manager": "4.33.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.1.0", - "semver": "^7.3.5", + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.0.tgz", + "integrity": "sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==", + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.57.0", + "@typescript-eslint/type-utils": "5.57.0", + "@typescript-eslint/utils": "5.57.0", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^4.0.0", - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -1436,34 +1515,7 @@ "eslint": "*" } }, - "node_modules/@typescript-eslint/parser": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", - "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "debug": "^4.3.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/scope-manager": { "version": "4.33.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", @@ -1480,7 +1532,7 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/types": { + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/types": { "version": "4.33.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", @@ -1493,7 +1545,7 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/typescript-estree": { + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": { "version": "4.33.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", @@ -1520,7 +1572,7 @@ } } }, - "node_modules/@typescript-eslint/visitor-keys": { + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/visitor-keys": { "version": "4.33.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", @@ -1537,11 +1589,166 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.57.0.tgz", + "integrity": "sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==", + "dependencies": { + "@typescript-eslint/scope-manager": "5.57.0", + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/typescript-estree": "5.57.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.57.0.tgz", + "integrity": "sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==", + "dependencies": { + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/visitor-keys": "5.57.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.57.0.tgz", + "integrity": "sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==", + "dependencies": { + "@typescript-eslint/typescript-estree": "5.57.0", + "@typescript-eslint/utils": "5.57.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.57.0.tgz", + "integrity": "sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.0.tgz", + "integrity": "sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==", + "dependencies": { + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/visitor-keys": "5.57.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.57.0.tgz", + "integrity": "sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.57.0", + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/typescript-estree": "5.57.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.0.tgz", + "integrity": "sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==", + "dependencies": { + "@typescript-eslint/types": "5.57.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "bin": { "acorn": "bin/acorn" }, @@ -1553,7 +1760,6 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -1562,7 +1768,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -1614,7 +1819,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -1623,7 +1827,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -1656,15 +1859,78 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, "engines": { "node": ">=8" } }, + "node_modules/array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -1683,6 +1949,17 @@ "node": ">=8" } }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/babel-jest": { "version": "29.5.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", @@ -1777,14 +2054,12 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1794,7 +2069,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -1857,11 +2131,22 @@ "node": ">=6.14.2" } }, + "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/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, "engines": { "node": ">=6" } @@ -1916,7 +2201,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2019,7 +2303,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -2030,14 +2313,12 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/convert-source-map": { "version": "2.0.0", @@ -2049,7 +2330,6 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -2080,7 +2360,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -2136,8 +2415,7 @@ "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" }, "node_modules/deepmerge": { "version": "4.3.1", @@ -2148,6 +2426,21 @@ "node": ">=0.10.0" } }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -2170,7 +2463,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, "dependencies": { "path-type": "^4.0.0" }, @@ -2182,7 +2474,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, "dependencies": { "esutils": "^2.0.2" }, @@ -2235,6 +2526,90 @@ "is-arrayish": "^0.2.1" } }, + "node_modules/es-abstract": { + "version": "1.21.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", + "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.0", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/es5-ext": { "version": "0.10.62", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", @@ -2281,7 +2656,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, "engines": { "node": ">=10" }, @@ -2290,67 +2664,65 @@ } }, "node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.37.0.tgz", + "integrity": "sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.2", + "@eslint/js": "8.37.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.4.0", + "espree": "^9.5.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-config-prettier": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz", - "integrity": "sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==", - "dev": true, + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", + "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -2358,6 +2730,48 @@ "eslint": ">=7.0.0" } }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", + "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" + } + }, + "node_modules/eslint-import-resolver-node/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/eslint-module-utils": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/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/eslint-plugin-es": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", @@ -2401,6 +2815,61 @@ "node": ">=4" } }, + "node_modules/eslint-plugin-import": { + "version": "2.27.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", + "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.7.4", + "has": "^1.0.3", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.6", + "resolve": "^1.22.1", + "semver": "^6.3.0", + "tsconfig-paths": "^3.14.1" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/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/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/eslint-plugin-node": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", @@ -2479,7 +2948,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -2506,7 +2974,7 @@ "eslint": ">=5" } }, - "node_modules/eslint-visitor-keys": { + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", @@ -2515,60 +2983,124 @@ "node": ">=10" } }, - "node_modules/eslint/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, + "node_modules/eslint-visitor-keys": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, "engines": { - "node": ">= 4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "p-limit": "^3.0.2" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, + "node_modules/espree": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", + "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.0" + }, "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esprima": { @@ -2588,7 +3120,6 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", - "dev": true, "dependencies": { "estraverse": "^5.1.0" }, @@ -2600,7 +3131,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, "engines": { "node": ">=4.0" } @@ -2609,7 +3139,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, "dependencies": { "estraverse": "^5.2.0" }, @@ -2621,7 +3150,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, "engines": { "node": ">=4.0" } @@ -2630,7 +3158,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, "engines": { "node": ">=4.0" } @@ -2639,7 +3166,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2727,8 +3253,7 @@ "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-diff": { "version": "1.2.0", @@ -2740,7 +3265,6 @@ "version": "3.2.12", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -2752,23 +3276,31 @@ "node": ">=8.6.0" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, "node_modules/fastq": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, "dependencies": { "reusify": "^1.0.4" } @@ -2832,7 +3364,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, "dependencies": { "flat-cache": "^3.0.4" }, @@ -2844,7 +3375,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -2869,7 +3399,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, "dependencies": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -2881,8 +3410,15 @@ "node_modules/flatted": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } }, "node_modules/formdata-polyfill": { "version": "4.0.10", @@ -2898,8 +3434,7 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.2", @@ -2918,8 +3453,24 @@ "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/functional-red-black-tree": { "version": "1.0.1", @@ -2927,6 +3478,14 @@ "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", "dev": true }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -2945,6 +3504,19 @@ "node": "6.* || 8.* || >= 10.*" } }, + "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/get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", @@ -2966,11 +3538,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2987,22 +3573,20 @@ } }, "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dependencies": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" } }, "node_modules/globals": { "version": "13.20.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, "dependencies": { "type-fest": "^0.20.2" }, @@ -3013,11 +3597,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -3033,12 +3630,28 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" + }, "node_modules/gts": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/gts/-/gts-3.1.1.tgz", @@ -3071,6 +3684,340 @@ "typescript": ">=3" } }, + "node_modules/gts/node_modules/@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/gts/node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/gts/node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/gts/node_modules/@typescript-eslint/eslint-plugin": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", + "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", + "dev": true, + "dependencies": { + "@typescript-eslint/experimental-utils": "4.33.0", + "@typescript-eslint/scope-manager": "4.33.0", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^4.0.0", + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/gts/node_modules/@typescript-eslint/parser": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", + "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "debug": "^4.3.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/gts/node_modules/@typescript-eslint/scope-manager": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/gts/node_modules/@typescript-eslint/types": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", + "dev": true, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/gts/node_modules/@typescript-eslint/typescript-estree": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/gts/node_modules/@typescript-eslint/visitor-keys": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/gts/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/gts/node_modules/eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/gts/node_modules/eslint-config-prettier": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz", + "integrity": "sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/gts/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/gts/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/gts/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/gts/node_modules/eslint/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/gts/node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/gts/node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/gts/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -3084,7 +4031,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "dependencies": { "function-bind": "^1.1.1" }, @@ -3092,15 +4038,69 @@ "node": ">= 0.4.0" } }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -3144,7 +4144,6 @@ "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, "engines": { "node": ">= 4" } @@ -3153,7 +4152,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -3188,7 +4186,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, "engines": { "node": ">=0.8.19" } @@ -3206,7 +4203,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -3215,8 +4211,7 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/inquirer": { "version": "7.3.3", @@ -3242,17 +4237,79 @@ "node": ">=8.0.0" } }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-core-module": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, "dependencies": { "has": "^1.0.3" }, @@ -3260,11 +4317,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -3291,7 +4361,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -3299,15 +4368,47 @@ "node": ">=0.10.0" } }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "engines": { "node": ">=0.12.0" } }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "engines": { + "node": ">=8" + } + }, "node_modules/is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -3317,6 +4418,32 @@ "node": ">=0.10.0" } }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -3329,16 +4456,72 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", @@ -4030,6 +5213,15 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/js-sdsl": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", + "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -4070,14 +5262,12 @@ "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" }, "node_modules/json5": { "version": "2.2.3", @@ -4122,7 +5312,6 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -4166,8 +5355,7 @@ "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, "node_modules/lodash.truncate": { "version": "4.4.2", @@ -4179,7 +5367,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -4280,7 +5467,6 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, "engines": { "node": ">= 8" } @@ -4289,7 +5475,6 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -4320,7 +5505,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -4328,6 +5512,14 @@ "node": "*" } }, + "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/minimist-options": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", @@ -4345,8 +5537,7 @@ "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==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/mute-stream": { "version": "0.0.8", @@ -4357,8 +5548,12 @@ "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==" }, "node_modules/ncp": { "version": "2.0.0", @@ -4456,9 +5651,9 @@ } }, "node_modules/nostr-tools": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.7.4.tgz", - "integrity": "sha512-YowDJ+S3UW9KCYPDZfZXXMITrJSMjiCmFOK5HohyKkg+w6EipFUTkFRBPRA2BTLXO/qw8gukKXfL0B7Dv3jtcQ==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.8.1.tgz", + "integrity": "sha512-/2IUe5xINUYT5hYBoEz51dfRaodbRHnyF8n+ZbKWCoh0ZRX6AL88OoDNrWaWWo7tP5j5OyzSL9g/z4TP7bshEA==", "dependencies": { "@noble/hashes": "1.0.0", "@noble/secp256k1": "^1.7.1", @@ -4480,11 +5675,59 @@ "node": ">=8" } }, + "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/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "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==", - "dev": true, "dependencies": { "wrappy": "1" } @@ -4508,7 +5751,6 @@ "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -4570,7 +5812,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "dependencies": { "callsites": "^3.0.0" }, @@ -4600,7 +5841,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, "engines": { "node": ">=8" } @@ -4609,7 +5849,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -4618,7 +5857,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, "engines": { "node": ">=8" } @@ -4626,14 +5864,12 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, "engines": { "node": ">=8" } @@ -4648,7 +5884,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "engines": { "node": ">=8.6" }, @@ -4681,7 +5916,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, "engines": { "node": ">= 0.8.0" } @@ -4764,7 +5998,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, "engines": { "node": ">=6" } @@ -4789,7 +6022,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, "funding": [ { "type": "github", @@ -4910,6 +6142,22 @@ "node": ">=8" } }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -4944,7 +6192,6 @@ "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, "dependencies": { "is-core-module": "^2.9.0", "path-parse": "^1.0.7", @@ -4982,7 +6229,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, "engines": { "node": ">=4" } @@ -5013,7 +6259,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -5023,7 +6268,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, "dependencies": { "glob": "^7.1.3" }, @@ -5047,7 +6291,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "funding": [ { "type": "github", @@ -5078,6 +6321,19 @@ "npm": ">=2.0.0" } }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -5088,7 +6344,6 @@ "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -5103,7 +6358,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -5115,11 +6369,23 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, "engines": { "node": ">=8" } }, + "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/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -5136,7 +6402,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, "engines": { "node": ">=8" } @@ -5263,11 +6528,52 @@ "node": ">=8" } }, + "node_modules/string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -5309,7 +6615,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, "engines": { "node": ">=8" }, @@ -5321,7 +6626,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -5333,7 +6637,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -5396,8 +6699,7 @@ "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" }, "node_modules/through": { "version": "2.3.8", @@ -5436,7 +6738,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -5453,11 +6754,40 @@ "node": ">=8" } }, + "node_modules/tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "engines": { + "node": ">=4" + } + }, "node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/tstl": { "version": "2.5.13", @@ -5468,7 +6798,6 @@ "version": "3.21.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, "dependencies": { "tslib": "^1.8.1" }, @@ -5488,7 +6817,6 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, "dependencies": { "prelude-ls": "^1.2.1" }, @@ -5509,7 +6837,6 @@ "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, "engines": { "node": ">=10" }, @@ -5517,6 +6844,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -5529,7 +6869,6 @@ "version": "4.7.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -5538,6 +6877,20 @@ "node": ">=4.2.0" } }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/update-browserslist-db": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", @@ -5568,7 +6921,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "dependencies": { "punycode": "^2.1.0" } @@ -5688,7 +7040,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -5699,11 +7050,44 @@ "node": ">= 8" } }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -5728,8 +7112,7 @@ "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==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/write-file-atomic": { "version": "3.0.3", @@ -5763,8 +7146,7 @@ "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yargs": { "version": "17.7.1", @@ -5806,7 +7188,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, "engines": { "node": ">=10" }, @@ -6326,47 +7707,74 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", + "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==" + }, "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", + "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", "requires": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", + "debug": "^4.3.2", + "espree": "^9.5.1", + "globals": "^13.19.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "dependencies": { - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } } } }, + "@eslint/js": { + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.37.0.tgz", + "integrity": "sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==" + }, "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", "requires": { - "@humanwhocodes/object-schema": "^1.2.0", + "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5" } }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" + }, "@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", @@ -6679,7 +8087,6 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "requires": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -6688,14 +8095,12 @@ "@nodelib/fs.stat": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" }, "@nodelib/fs.walk": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, "requires": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -6804,6 +8209,15 @@ "@babel/types": "^7.3.0" } }, + "@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dev": true, + "requires": { + "@types/ms": "*" + } + }, "@types/graceful-fs": { "version": "4.1.6", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", @@ -6850,8 +8264,12 @@ "@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" }, "@types/minimist": { "version": "1.2.2", @@ -6859,6 +8277,12 @@ "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", "dev": true }, + "@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "dev": true + }, "@types/node": { "version": "14.18.36", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", @@ -6877,6 +8301,11 @@ "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", "dev": true }, + "@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==" + }, "@types/stack-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", @@ -6899,18 +8328,19 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", - "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", - "dev": true, - "requires": { - "@typescript-eslint/experimental-utils": "4.33.0", - "@typescript-eslint/scope-manager": "4.33.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.1.0", - "semver": "^7.3.5", + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.0.tgz", + "integrity": "sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==", + "requires": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.57.0", + "@typescript-eslint/type-utils": "5.57.0", + "@typescript-eslint/utils": "5.57.0", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", "tsutils": "^3.21.0" } }, @@ -6926,79 +8356,146 @@ "@typescript-eslint/typescript-estree": "4.33.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" + } + }, + "@typescript-eslint/types": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.33.0", + "eslint-visitor-keys": "^2.0.0" + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } } }, "@typescript-eslint/parser": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", - "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", - "dev": true, + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.57.0.tgz", + "integrity": "sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==", "requires": { - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "debug": "^4.3.1" + "@typescript-eslint/scope-manager": "5.57.0", + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/typescript-estree": "5.57.0", + "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", - "dev": true, + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.57.0.tgz", + "integrity": "sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==", "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/visitor-keys": "5.57.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.57.0.tgz", + "integrity": "sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==", + "requires": { + "@typescript-eslint/typescript-estree": "5.57.0", + "@typescript-eslint/utils": "5.57.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", - "dev": true + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.57.0.tgz", + "integrity": "sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==" }, "@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.0.tgz", + "integrity": "sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==", + "requires": { + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/visitor-keys": "5.57.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", "tsutils": "^3.21.0" } }, + "@typescript-eslint/utils": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.57.0.tgz", + "integrity": "sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==", + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.57.0", + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/typescript-estree": "5.57.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + } + }, "@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", - "dev": true, + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.0.tgz", + "integrity": "sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==", "requires": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" + "@typescript-eslint/types": "5.57.0", + "eslint-visitor-keys": "^3.3.0" } }, "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==" }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, "requires": {} }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -7032,14 +8529,12 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -7063,11 +8558,53 @@ "sprintf-js": "~1.0.2" } }, + "array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "requires": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + } + }, + "array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + } + }, "array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + }, + "array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + } }, "arrify": { "version": "1.0.1", @@ -7081,6 +8618,11 @@ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + }, "babel-jest": { "version": "29.5.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", @@ -7154,14 +8696,12 @@ "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -7171,7 +8711,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "requires": { "fill-range": "^7.0.1" } @@ -7211,11 +8750,19 @@ "node-gyp-build": "^4.3.0" } }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" }, "camelcase": { "version": "5.3.1", @@ -7244,7 +8791,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7316,7 +8862,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -7324,14 +8869,12 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "convert-source-map": { "version": "2.0.0", @@ -7343,7 +8886,6 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -7368,7 +8910,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "requires": { "ms": "2.1.2" } @@ -7406,8 +8947,7 @@ "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" }, "deepmerge": { "version": "4.3.1", @@ -7415,6 +8955,15 @@ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true }, + "define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, "detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -7431,7 +8980,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, "requires": { "path-type": "^4.0.0" } @@ -7440,7 +8988,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, "requires": { "esutils": "^2.0.2" } @@ -7481,6 +9028,75 @@ "is-arrayish": "^0.2.1" } }, + "es-abstract": { + "version": "1.21.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", + "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", + "requires": { + "array-buffer-byte-length": "^1.0.0", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.0", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + } + }, + "es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "requires": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + } + }, + "es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "requires": { + "has": "^1.0.3" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, "es5-ext": { "version": "0.10.62", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", @@ -7519,89 +9135,161 @@ "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, - "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.37.0.tgz", + "integrity": "sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==", + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.2", + "@eslint/js": "8.37.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.4.0", + "espree": "^9.5.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "dependencies": { - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" } }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "requires": { + "p-limit": "^3.0.2" + } } } }, "eslint-config-prettier": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz", - "integrity": "sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==", - "dev": true, + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", + "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", "requires": {} }, + "eslint-import-resolver-node": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", + "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", + "requires": { + "debug": "^3.2.7", + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" + }, + "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" + } + } + } + }, + "eslint-module-utils": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "requires": { + "debug": "^3.2.7" + }, + "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" + } + } + } + }, "eslint-plugin-es": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", @@ -7629,6 +9317,51 @@ } } }, + "eslint-plugin-import": { + "version": "2.27.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", + "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", + "requires": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.7.4", + "has": "^1.0.3", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.6", + "resolve": "^1.22.1", + "semver": "^6.3.0", + "tsconfig-paths": "^3.14.1" + }, + "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" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "requires": { + "esutils": "^2.0.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, "eslint-plugin-node": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", @@ -7679,7 +9412,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, "requires": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -7692,31 +9424,29 @@ "dev": true, "requires": { "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } } }, "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==" }, "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", + "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.0" } }, "esprima": { @@ -7729,7 +9459,6 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", - "dev": true, "requires": { "estraverse": "^5.1.0" }, @@ -7737,8 +9466,7 @@ "estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" } } }, @@ -7746,7 +9474,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, "requires": { "estraverse": "^5.2.0" }, @@ -7754,22 +9481,19 @@ "estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" } } }, "estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "eventemitter3": { "version": "5.0.0", @@ -7841,8 +9565,7 @@ "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-diff": { "version": "1.2.0", @@ -7854,32 +9577,38 @@ "version": "3.2.12", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + } } }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, "fastq": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, "requires": { "reusify": "^1.0.4" } @@ -7923,7 +9652,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, "requires": { "flat-cache": "^3.0.4" } @@ -7932,7 +9660,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "requires": { "to-regex-range": "^5.0.1" } @@ -7951,7 +9678,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, "requires": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -7960,8 +9686,15 @@ "flatted": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } }, "formdata-polyfill": { "version": "4.0.10", @@ -7974,8 +9707,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "fsevents": { "version": "2.3.2", @@ -7987,8 +9719,18 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } }, "functional-red-black-tree": { "version": "1.0.1", @@ -7996,6 +9738,11 @@ "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", "dev": true }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -8008,6 +9755,16 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, + "get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, "get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", @@ -8020,11 +9777,19 @@ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -8035,28 +9800,33 @@ } }, "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "requires": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" } }, "globals": { "version": "13.20.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, "requires": { "type-fest": "^0.20.2" } }, + "globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "requires": { + "define-properties": "^1.1.3" + } + }, "globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, "requires": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -8066,12 +9836,25 @@ "slash": "^3.0.0" } }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, "graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" + }, "gts": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/gts/-/gts-3.1.1.tgz", @@ -8093,6 +9876,233 @@ "prettier": "^2.1.2", "rimraf": "^3.0.2", "write-file-atomic": "^3.0.3" + }, + "dependencies": { + "@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@typescript-eslint/eslint-plugin": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", + "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "4.33.0", + "@typescript-eslint/scope-manager": "4.33.0", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/parser": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", + "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "debug": "^4.3.1" + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" + } + }, + "@typescript-eslint/types": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.33.0", + "eslint-visitor-keys": "^2.0.0" + } + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + } + } + }, + "eslint-config-prettier": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz", + "integrity": "sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==", + "dev": true, + "requires": {} + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } } }, "hard-rejection": { @@ -8105,16 +10115,45 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "requires": { "function-bind": "^1.1.1" } }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + }, + "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" + } }, "hosted-git-info": { "version": "4.1.0", @@ -8149,14 +10188,12 @@ "ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -8175,8 +10212,7 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" }, "indent-string": { "version": "4.0.0", @@ -8188,7 +10224,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -8197,8 +10232,7 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "inquirer": { "version": "7.3.3", @@ -8221,26 +10255,74 @@ "through": "^2.3.6" } }, + "internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "requires": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" + }, "is-core-module": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, "requires": { "has": "^1.0.3" } }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" }, "is-fullwidth-code-point": { "version": "3.0.0", @@ -8258,16 +10340,32 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "requires": { "is-extglob": "^2.1.1" } }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" }, "is-plain-obj": { "version": "1.1.0", @@ -8275,22 +10373,74 @@ "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "requires": { + "call-bind": "^1.0.2" + } + }, "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "requires": { + "call-bind": "^1.0.2" + } + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "istanbul-lib-coverage": { "version": "3.2.0", @@ -8824,6 +10974,11 @@ } } }, + "js-sdsl": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", + "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==" + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -8855,14 +11010,12 @@ "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" }, "json5": { "version": "2.2.3", @@ -8892,7 +11045,6 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, "requires": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -8930,8 +11082,7 @@ "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, "lodash.truncate": { "version": "4.4.2", @@ -8943,7 +11094,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "requires": { "yallist": "^4.0.0" } @@ -9017,14 +11167,12 @@ "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" }, "micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, "requires": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -9046,11 +11194,15 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + }, "minimist-options": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", @@ -9065,8 +11217,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "mute-stream": { "version": "0.0.8", @@ -9077,8 +11228,12 @@ "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==" }, "ncp": { "version": "2.0.0", @@ -9142,9 +11297,9 @@ "dev": true }, "nostr-tools": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.7.4.tgz", - "integrity": "sha512-YowDJ+S3UW9KCYPDZfZXXMITrJSMjiCmFOK5HohyKkg+w6EipFUTkFRBPRA2BTLXO/qw8gukKXfL0B7Dv3jtcQ==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.8.1.tgz", + "integrity": "sha512-/2IUe5xINUYT5hYBoEz51dfRaodbRHnyF8n+ZbKWCoh0ZRX6AL88OoDNrWaWWo7tP5j5OyzSL9g/z4TP7bshEA==", "requires": { "@noble/hashes": "1.0.0", "@noble/secp256k1": "^1.7.1", @@ -9163,11 +11318,41 @@ "path-key": "^3.0.0" } }, + "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==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "requires": { "wrappy": "1" } @@ -9185,7 +11370,6 @@ "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, "requires": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -9229,7 +11413,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "requires": { "callsites": "^3.0.0" } @@ -9249,32 +11432,27 @@ "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, "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==", - "dev": true + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" }, "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" }, "picocolors": { "version": "1.0.0", @@ -9285,8 +11463,7 @@ "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, "pirates": { "version": "4.0.5", @@ -9306,8 +11483,7 @@ "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" }, "prettier": { "version": "2.8.7", @@ -9361,8 +11537,7 @@ "punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" }, "pure-rand": { "version": "6.0.1", @@ -9373,8 +11548,7 @@ "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" }, "quick-lru": { "version": "4.0.1", @@ -9461,6 +11635,16 @@ "strip-indent": "^3.0.0" } }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, "regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -9483,7 +11667,6 @@ "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, "requires": { "is-core-module": "^2.9.0", "path-parse": "^1.0.7", @@ -9510,8 +11693,7 @@ "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" }, "resolve.exports": { "version": "2.0.2", @@ -9532,14 +11714,12 @@ "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, "requires": { "glob": "^7.1.3" } @@ -9554,7 +11734,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "requires": { "queue-microtask": "^1.2.2" } @@ -9568,6 +11747,16 @@ "tslib": "^1.9.0" } }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -9578,7 +11767,6 @@ "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, "requires": { "lru-cache": "^6.0.0" } @@ -9587,7 +11775,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "requires": { "shebang-regex": "^3.0.0" } @@ -9595,8 +11782,17 @@ "shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } }, "signal-exit": { "version": "3.0.7", @@ -9613,8 +11809,7 @@ "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" }, "slice-ansi": { "version": "4.0.0", @@ -9719,11 +11914,40 @@ "strip-ansi": "^6.0.1" } }, + "string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -9752,14 +11976,12 @@ "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -9767,8 +11989,7 @@ "supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, "table": { "version": "6.8.1", @@ -9817,8 +12038,7 @@ "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" }, "through": { "version": "2.3.8", @@ -9851,7 +12071,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "requires": { "is-number": "^7.0.0" } @@ -9862,11 +12081,36 @@ "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true }, + "tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "requires": { + "minimist": "^1.2.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" + } + } + }, "tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "tstl": { "version": "2.5.13", @@ -9877,7 +12121,6 @@ "version": "3.21.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, "requires": { "tslib": "^1.8.1" } @@ -9891,7 +12134,6 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, "requires": { "prelude-ls": "^1.2.1" } @@ -9905,8 +12147,17 @@ "type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + }, + "typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + } }, "typedarray-to-buffer": { "version": "3.1.5", @@ -9919,8 +12170,18 @@ "typescript": { "version": "4.7.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==" + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } }, "update-browserslist-db": { "version": "1.0.10", @@ -9936,7 +12197,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "requires": { "punycode": "^2.1.0" } @@ -10044,16 +12304,39 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "requires": { "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + } + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" }, "wrap-ansi": { "version": "7.0.0", @@ -10069,8 +12352,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "write-file-atomic": { "version": "3.0.3", @@ -10098,8 +12380,7 @@ "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yargs": { "version": "17.7.1", @@ -10133,8 +12414,7 @@ "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" } } } diff --git a/package.json b/package.json index 147ee5c5..6fe9e410 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.9", + "version": "0.0.10", "description": "NDK - Nostr Development Kit", "main": "dist/cjs/index.js", "module": "dist/esm/index.js", @@ -42,6 +42,7 @@ "author": "pablof7z", "license": "MIT", "devDependencies": { + "@types/debug": "^4.1.7", "@types/jest": "^29.5.0", "@types/node": "^14.11.2", "gts": "^3.1.1", @@ -52,6 +53,7 @@ "@scure/base": "^1.1.1", "@typescript-eslint/eslint-plugin": "^5.57.0", "@typescript-eslint/parser": "^5.57.0", + "debug": "^4.3.4", "eslint": "^8.37.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-import": "^2.27.5", diff --git a/src/cache/index.ts b/src/cache/index.ts index 8344069d..a8373082 100644 --- a/src/cache/index.ts +++ b/src/cache/index.ts @@ -1,7 +1,14 @@ -import {NDKSubscription} from '../subscription/'; +import {NDKFilter, NDKSubscription} from '../subscription/'; import NDKEvent from '../events/'; export interface NDKCacheAdapter { - query(subscription: NDKSubscription): void; - setEvent(event: NDKEvent): Promise; + /** + * Whether this cache adapter is expected to be fast. + * If this is true, the cache will be queried before the relays. + * When this is false, the cache will be queried in addition to the relays. + */ + locking: boolean; + + query(subscription: NDKSubscription): Promise; + setEvent(event: NDKEvent, filter: NDKFilter): Promise; } \ No newline at end of file diff --git a/src/events/index.ts b/src/events/index.ts index 83c6c43e..701b1c66 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -28,6 +28,7 @@ export default class Event extends EventEmitter { public id = ""; public sig?: string; public pubkey = ''; + public _event?: NostrEvent; constructor(ndk?: NDK, event?: NostrEvent) { super(); @@ -39,10 +40,13 @@ export default class Event extends EventEmitter { this.id = event?.id || ''; this.sig = event?.sig; this.pubkey = event?.pubkey || ''; - event?.kind && (this.kind = event?.kind); + if (event?.kind) this.kind = event?.kind; + this._event = event; } async toNostrEvent(pubkey?: string): Promise { + if (this._event) return this._event; + if (!pubkey) pubkey = await this.ndk?.signer?.user?.hexpubkey(); const nostrEvent: NostrEvent = { @@ -50,7 +54,8 @@ export default class Event extends EventEmitter { content: this.content, tags: this.tags, kind: this.kind || 0, - pubkey: pubkey || '', + pubkey: pubkey || this.pubkey, + id: this.id, }; this.generateTags(); diff --git a/src/index.ts b/src/index.ts index d69fba34..2058178d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -11,6 +11,7 @@ import { calculateRelaySetFromEvent, } from './relay/sets/calculate'; import EventEmitter from 'eventemitter3'; +import debug from 'debug'; export { NDKEvent, @@ -18,6 +19,7 @@ export { NDKFilter, NDKUserProfile, NDKCacheAdapter, + NDKSubscription }; export {NDKNip07Signer} from './signers/nip07/'; export {NDKZapInvoice} from './zap/invoice'; @@ -27,6 +29,7 @@ export interface NDKConstructorParams { explicitRelayUrls?: string[]; signer?: NDKSigner; cacheAdapter?: NDKCacheAdapter; + debug?: debug.Debugger; } export interface GetUserParams extends NDKUserParams { npub?: string; @@ -37,6 +40,7 @@ export default class NDK extends EventEmitter { public relayPool?: NDKPool; public signer?: NDKSigner; public cacheAdapter?: NDKCacheAdapter; + public debug: debug.Debugger; public constructor(opts: NDKConstructorParams) { super(); @@ -44,9 +48,18 @@ export default class NDK extends EventEmitter { if (opts.explicitRelayUrls) this.relayPool = new NDKPool(opts.explicitRelayUrls); this.signer = opts.signer; + this.cacheAdapter = opts.cacheAdapter; + this.debug = opts.debug || debug('ndk'); + + this.debug('initialized', { + relays: opts.explicitRelayUrls, + signer: opts.signer?.constructor.name || 'none', + cacheAdapter: opts.cacheAdapter?.constructor.name || 'none', + }); } public async connect(): Promise { + this.debug('Connecting to relays'); return this.relayPool?.connect(); } @@ -67,7 +80,7 @@ export default class NDK extends EventEmitter { opts?: NDKSubscriptionOptions ): NDKSubscription { const subscription = new NDKSubscription(this, filter, opts) - .start(); + subscription.start(); return subscription; } @@ -101,10 +114,6 @@ export default class NDK extends EventEmitter { const relaySetSubscription = this.subscribe(filter, {closeOnEose: true}); relaySetSubscription.on('event', (event: NDKEvent) => { - if (this.cacheAdapter) { - this.cacheAdapter.setEvent(event); - } - events.add(event); }); relaySetSubscription.on('eose', () => { diff --git a/src/subscription/index.ts b/src/subscription/index.ts index 3ee9d20a..c064e9d3 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -23,13 +23,16 @@ export interface NDKSubscriptionOptions { export enum NDKSubscriptionCacheUsage { // Only use cache, don't subscribe to relays - ONLY = 'ONLY', + ONLY_CACHE = 'ONLY_CACHE', - // Skip cache, don't use it - SKIP = 'SKIP', + // Use cache, if no matches, use relays + CACHE_FIRST = 'CACHE_FIRST', - // Only write to cache, don't read from it - WRITE_ONLY = 'WRITE_ONLY', + // Use cache in addition to relays + PARALLEL = 'PARALLEL', + + // Skip cache, don't query it + ONLY_RELAY = 'ONLY_RELAY', } export class NDKSubscription extends EventEmitter { @@ -39,6 +42,7 @@ export class NDKSubscription extends EventEmitter { public relaySet?: NDKRelaySet; public ndk: NDK; public relaySubscriptions: Map; + private debug: debug.Debugger; public constructor( ndk: NDK, @@ -54,27 +58,77 @@ export class NDKSubscription extends EventEmitter { this.relaySet = relaySet; this.opts = opts; this.relaySubscriptions = new Map(); + this.debug = ndk.debug.extend('subscription'); + + // validate that the caller is not expecting a persistent + // subscription is using an option that might only hit the cache + if ( + opts?.cacheUsage === NDKSubscriptionCacheUsage.ONLY_CACHE || + opts?.cacheUsage === NDKSubscriptionCacheUsage.CACHE_FIRST + ) { + throw new Error( + 'Cannot use cache-only options with a persistent subscription' + ); + } + + } + + private shouldQueryCache(): boolean { + return ( + this.opts?.cacheUsage !== NDKSubscriptionCacheUsage.ONLY_RELAY + ); + } + + private shouldQueryRelays(): boolean { + return ( + this.opts?.cacheUsage !== NDKSubscriptionCacheUsage.ONLY_CACHE + ) } /** * Start the subscription. This is the main method that should be called * after creating a subscription. */ - public start(): NDKSubscription { - if (this.opts?.cacheUsage !== NDKSubscriptionCacheUsage.SKIP) { - this.startWithCache(); + public async start(): Promise { + let cachePromise; + + if (this.shouldQueryCache()) { + cachePromise = this.startWithCache(); + + const shouldWaitForCache = ( + this.ndk.cacheAdapter?.locking && + this.shouldQueryRelays() && + this.opts?.cacheUsage !== NDKSubscriptionCacheUsage.PARALLEL + ); + + if (shouldWaitForCache) { + this.debug('waiting for cache to finish'); + await cachePromise; + + // if the cache has a hit, return early + if (this.events.size > 0) { + this.debug('cache hit, skipping relay query'); + this.emit('eose'); + return; + } + } } - if (this.opts?.cacheUsage !== NDKSubscriptionCacheUsage.ONLY) { + if (this.shouldQueryRelays()) { this.startWithRelaySet(); } - return this; + return; } - private startWithCache(): void { + private async startWithCache(): Promise { if (this.ndk.cacheAdapter?.query) { - this.ndk.cacheAdapter.query(this); + this.debug('querying cache'); + const promise = this.ndk.cacheAdapter.query(this); + + if (this.ndk.cacheAdapter.locking) { + await promise; + } } } @@ -84,6 +138,7 @@ export class NDKSubscription extends EventEmitter { } if (this.relaySet) { + this.debug('querying relays'); this.relaySet.subscribe(this); } } @@ -92,8 +147,8 @@ export class NDKSubscription extends EventEmitter { private eventFirstSeen = new Map(); private events = new Map(); - public eventReceived(event: NDKEvent, relay: NDKRelay, fromCache = false) { - if (fromCache) { + public eventReceived(event: NDKEvent, relay: NDKRelay | undefined, fromCache = false) { + if (!fromCache && relay) { const eventAlreadySeen = this.events.has(event.id); if (eventAlreadySeen) { @@ -106,10 +161,15 @@ export class NDKSubscription extends EventEmitter { return; } + if (this.ndk.cacheAdapter) { + this.ndk.cacheAdapter.setEvent(event, this.filter); + } + this.eventFirstSeen.set(event.id, Date.now()); - this.events.set(event.id, event); } + this.events.set(event.id, event); + this.emit('event', event, relay); } From 9d0b5685ff6db58c6a9fce84128ceb1fb90c00c6 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sun, 2 Apr 2023 00:17:26 +0300 Subject: [PATCH 013/773] go back to npm, pnpm is giving too much trouble with local-linking out of date --- package-lock.json | 4 ++-- package.json | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index b6a14a65..f46a4b6f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.9", + "version": "0.0.10", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@nostr-dev-kit/ndk", - "version": "0.0.9", + "version": "0.0.10", "license": "MIT", "dependencies": { "@scure/base": "^1.1.1", diff --git a/package.json b/package.json index 6fe9e410..d785cd70 100644 --- a/package.json +++ b/package.json @@ -24,11 +24,10 @@ ], "scripts": { "dev": "node tools/cleanup esm && tsc -w -p config/tsconfig.esm.json", - "build": "pnpm build:cjs && pnpm build:esm && pnpm build:types", + "build": "npm run build:cjs && npm run build:esm && npm run build:types", "build:cjs": "node tools/cleanup cjs && tsc -p config/tsconfig.cjs.json", "build:esm": "node tools/cleanup esm && tsc -p config/tsconfig.esm.json", "build:types": "node tools/cleanup types && tsc -p config/tsconfig.types.json", - "package": "pnpm build && pnpm pack", "clean": "node tools/cleanup cjs && node tools/cleanup esm && node tools/cleanup types && find src -iname '*.js' -delete", "lint": "eslint src/**/*.ts", "compile": "tsc", From e2c3c816ad5d9c636cb516657a891b25e312f7a5 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sun, 2 Apr 2023 20:06:14 +0300 Subject: [PATCH 014/773] fix imports --- README.md | 10 ++++++++++ package.json | 2 +- src/cache/index.ts | 4 ++-- src/events/index.ts | 4 ++-- src/index.ts | 23 +++++++++-------------- src/relay/index.ts | 6 +++--- src/relay/pool/index.ts | 2 +- src/relay/sets/calculate.ts | 10 +++++----- src/relay/sets/index.ts | 6 +++--- src/signers/index.ts | 2 +- src/signers/nip07/index.ts | 6 +++--- src/signers/private-key/index.ts | 4 ++-- src/subscription/index.ts | 13 +++++-------- src/user/index.ts | 7 +++++-- src/user/profile.ts | 2 +- src/zap/index.ts | 8 ++++---- src/zap/invoice.ts | 2 +- 17 files changed, 58 insertions(+), 53 deletions(-) diff --git a/README.md b/README.md index fc9f09ac..9ef2311d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,15 @@ # NDK +## Installation + +```sh +npm add @nostr-dev-kit/ndk +``` + +## Support + +[NDK NIP-28 group chat](https://app.coracle.social/chat/note15m6rdfvlmd0z836hk83sg7r59xtv23qnmamhsslq5uc6744fdm4qfkeat3) + ## Features - [ ] NIP-01 - [ ] diff --git a/package.json b/package.json index d785cd70..585cdb5c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.10", + "version": "0.0.12", "description": "NDK - Nostr Development Kit", "main": "dist/cjs/index.js", "module": "dist/esm/index.js", diff --git a/src/cache/index.ts b/src/cache/index.ts index a8373082..fa4a6823 100644 --- a/src/cache/index.ts +++ b/src/cache/index.ts @@ -1,5 +1,5 @@ -import {NDKFilter, NDKSubscription} from '../subscription/'; -import NDKEvent from '../events/'; +import {NDKFilter, NDKSubscription} from '../subscription/index'; +import NDKEvent from '../events/index'; export interface NDKCacheAdapter { /** diff --git a/src/events/index.ts b/src/events/index.ts index 701b1c66..ea8c4833 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -1,7 +1,7 @@ import { getEventHash, Kind, UnsignedEvent } from "nostr-tools"; import EventEmitter from "eventemitter3"; -import NDK from "../"; -import Zap from '../zap'; +import NDK from "../index"; +import Zap from '../zap/index'; export type NDKEventId = string; export type NDKTag = string[]; diff --git a/src/index.ts b/src/index.ts index 2058178d..c107ebf7 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,15 +1,11 @@ -import NDKEvent from './events/'; -import {NDKPool} from './relay/pool/'; -import type {NDKSigner} from './signers/'; -import NDKUser, {NDKUserParams} from './user/'; +import NDKEvent from './events/index'; +import {NDKPool} from './relay/pool/index'; +import type {NDKSigner} from './signers/index'; +import NDKUser, {NDKUserParams} from './user/index'; import {NDKUserProfile} from './user/profile'; -import {NDKRelaySet} from './relay/sets/'; -import {NDKFilter, NDKFilterOptions, NDKSubscription, NDKSubscriptionOptions} from './subscription/'; -import { NDKCacheAdapter } from './cache'; -import { - calculateRelaySetFromFilter, - calculateRelaySetFromEvent, -} from './relay/sets/calculate'; +import {NDKFilter, NDKFilterOptions, NDKSubscription, NDKSubscriptionOptions} from './subscription/index'; +import { NDKCacheAdapter } from './cache/index'; +import { calculateRelaySetFromEvent } from './relay/sets/calculate'; import EventEmitter from 'eventemitter3'; import debug from 'debug'; @@ -21,9 +17,8 @@ export { NDKCacheAdapter, NDKSubscription }; -export {NDKNip07Signer} from './signers/nip07/'; -export {NDKZapInvoice} from './zap/invoice'; -export {zapInvoiceFromEvent} from './zap/invoice'; +export {NDKNip07Signer} from './signers/nip07/index'; +export {NDKZapInvoice, zapInvoiceFromEvent} from './zap/invoice'; export interface NDKConstructorParams { explicitRelayUrls?: string[]; diff --git a/src/relay/index.ts b/src/relay/index.ts index 9f72a583..3754596d 100644 --- a/src/relay/index.ts +++ b/src/relay/index.ts @@ -1,10 +1,10 @@ import 'websocket-polyfill'; import {relayInit, Sub} from 'nostr-tools'; import type {Event as SignedEvent} from 'nostr-tools'; -import User from '../user'; +import User from '../user/index'; import {NDKRelayScore} from './score'; -import {NDKSubscription} from '../subscription/'; -import NDKEvent, {NostrEvent} from '../events/'; +import {NDKSubscription} from '../subscription/index'; +import NDKEvent, {NostrEvent} from '../events/index'; import EventEmitter from 'eventemitter3'; export class NDKRelay extends EventEmitter { diff --git a/src/relay/pool/index.ts b/src/relay/pool/index.ts index da2b7c1d..5a724de3 100644 --- a/src/relay/pool/index.ts +++ b/src/relay/pool/index.ts @@ -1,5 +1,5 @@ import EventEmitter from 'eventemitter3'; -import {NDKRelay} from '../'; +import {NDKRelay} from '../index'; export class NDKPool extends EventEmitter { public relays = new Map(); diff --git a/src/relay/sets/calculate.ts b/src/relay/sets/calculate.ts index 8cb1857f..53c1c081 100644 --- a/src/relay/sets/calculate.ts +++ b/src/relay/sets/calculate.ts @@ -1,8 +1,8 @@ -import NDK from '../../'; -import {NDKRelay} from '../'; -import Event from '../../events/'; -import {NDKRelaySet} from './'; -import {NDKFilter} from '../../subscription/'; +import NDK from '../../index'; +import {NDKRelay} from '../index'; +import Event from '../../events/index'; +import {NDKRelaySet} from './index'; +import {NDKFilter} from '../../subscription/index'; /** * Creates a NDKRelaySet for the specified event. diff --git a/src/relay/sets/index.ts b/src/relay/sets/index.ts index c275e714..8209451f 100644 --- a/src/relay/sets/index.ts +++ b/src/relay/sets/index.ts @@ -1,6 +1,6 @@ -import {NDKRelay} from '../'; -import Event from '../../events/'; -import {NDKSubscription, NDKSubscriptionOptions, NDKFilter} from '../../subscription/'; +import {NDKRelay} from '../index'; +import Event from '../../events/index'; +import {NDKSubscription} from '../../subscription/index'; /** * A relay set is a group of relays. This grouping can be short-living, for a single diff --git a/src/signers/index.ts b/src/signers/index.ts index f0aef4fc..3cce8999 100644 --- a/src/signers/index.ts +++ b/src/signers/index.ts @@ -1,5 +1,5 @@ import NDKUser from '../user'; -import type {NostrEvent} from '../events/'; +import type {NostrEvent} from '../events/index'; export interface NDKSigner { user: NDKUser | undefined; diff --git a/src/signers/nip07/index.ts b/src/signers/nip07/index.ts index 81fdfa8b..810a92de 100644 --- a/src/signers/nip07/index.ts +++ b/src/signers/nip07/index.ts @@ -1,6 +1,6 @@ -import {NDKSigner} from '../'; -import type {NostrEvent} from '../../events'; -import NDKUser from '../../user'; +import {NDKSigner} from '../index'; +import type {NostrEvent} from '../../events/index'; +import NDKUser from '../../user/index'; export class NDKNip07Signer implements NDKSigner { public user: NDKUser | undefined; diff --git a/src/signers/private-key/index.ts b/src/signers/private-key/index.ts index 76c7901e..817ea676 100644 --- a/src/signers/private-key/index.ts +++ b/src/signers/private-key/index.ts @@ -1,7 +1,7 @@ import {signEvent, generatePrivateKey, getPublicKey} from 'nostr-tools'; import type {UnsignedEvent} from 'nostr-tools'; -import type {NostrEvent} from '../../events/'; -import {NDKSigner} from '../'; +import type {NostrEvent} from '../../events/index'; +import {NDKSigner} from '../index'; import User from '../../user'; export default class PrivateKeySigner implements NDKSigner { diff --git a/src/subscription/index.ts b/src/subscription/index.ts index c064e9d3..a91cb345 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -1,14 +1,11 @@ -import NDK from '../'; +import NDK from '../index'; import {Filter as NostrFilter, Sub} from 'nostr-tools'; import EventEmitter from 'eventemitter3'; import {NDKRelay} from '../relay'; -import {NDKRelaySet} from '../relay/sets/'; -import {NDKEventId} from '../events/'; -import NDKEvent from '../events/'; -import { - calculateRelaySetFromFilter, - calculateRelaySetFromEvent, -} from '../relay/sets/calculate'; +import {NDKRelaySet} from '../relay/sets/index'; +import {NDKEventId} from '../events/index'; +import NDKEvent from '../events/index'; +import { calculateRelaySetFromFilter } from '../relay/sets/calculate'; export type NDKFilter = NostrFilter; diff --git a/src/user/index.ts b/src/user/index.ts index 714a64d0..7bab6d4a 100644 --- a/src/user/index.ts +++ b/src/user/index.ts @@ -1,7 +1,7 @@ import {nip05, nip19} from 'nostr-tools'; -import Event from '../events/'; +import Event from '../events/index'; import {NDKUserProfile, mergeEvent} from './profile'; -import NDK from '../'; +import NDK from '../index'; export interface NDKUserParams { npub?: string; @@ -70,6 +70,9 @@ export default class NDKUser { return setMetadataEvents; } + /** + * Returns a set of users that this user follows. + */ public async follows(): Promise> { if (!this.ndk) throw new Error('NDK not set'); diff --git a/src/user/profile.ts b/src/user/profile.ts index 0f63cf93..45e1d039 100644 --- a/src/user/profile.ts +++ b/src/user/profile.ts @@ -1,4 +1,4 @@ -import NDKEvent from '../events/'; +import NDKEvent from '../events/index'; export interface NDKUserProfile { name?: string; diff --git a/src/zap/index.ts b/src/zap/index.ts index 477bbe9d..8bcead7f 100644 --- a/src/zap/index.ts +++ b/src/zap/index.ts @@ -1,8 +1,8 @@ -import NDK from "../"; +import NDK from "../index"; import EventEmitter from 'eventemitter3'; -import Event from "../events"; -import type {NostrEvent} from "../events"; -import User from "../user"; +import Event from "../events/index"; +import type {NostrEvent} from "../events/index"; +import User from "../user/index"; import {nip57} from "nostr-tools"; import {bech32} from '@scure/base'; interface ZapConstructorParams { diff --git a/src/zap/invoice.ts b/src/zap/invoice.ts index c6179ece..692d7696 100644 --- a/src/zap/invoice.ts +++ b/src/zap/invoice.ts @@ -1,4 +1,4 @@ -import NDKEvent, {type NDKEventId, type NostrEvent} from '../events/'; +import NDKEvent, {type NDKEventId, type NostrEvent} from '../events/index'; import lightningPayReq from 'light-bolt11-decoder'; export interface NDKZapInvoice { From 9daa3db0e3c48bb12e39160ef6a5731eaf5a6a9d Mon Sep 17 00:00:00 2001 From: pablof7z Date: Mon, 3 Apr 2023 00:22:18 +0300 Subject: [PATCH 015/773] =?UTF-8?q?=E2=9C=85=20Support=20for=20auto-taggin?= =?UTF-8?q?g=20=E2=9C=85=20Improve=20documentation=20=E2=9C=85=20Add=20tes?= =?UTF-8?q?ts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 36 +++++++- package-lock.json | 127 +++++++++++++++++++++++++- package.json | 7 +- src/events/content-tagger.test.ts | 43 +++++++++ src/events/content-tagger.ts | 35 +++++++ src/events/index.ts | 30 ++++-- src/index.ts | 2 +- src/signers/index.ts | 21 ++++- src/signers/nip07/index.ts | 62 ++++++++++--- src/signers/private-key/index.test.ts | 43 +++++++++ src/signers/private-key/index.ts | 30 ++++-- src/subscription/index.ts | 2 +- 12 files changed, 398 insertions(+), 40 deletions(-) create mode 100644 src/events/content-tagger.test.ts create mode 100644 src/events/content-tagger.ts create mode 100644 src/signers/private-key/index.test.ts diff --git a/README.md b/README.md index 9ef2311d..02743745 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,13 @@ # NDK +NDK is a development kit that seeks to make the experience of building Nostr-related applications, whether +they are relays, clients, or anything in between, better, more reliable and overall nicer to work with than +existing solutions. + +Behind the scenes, NDK seeks to do work to increase the decentralizing tendencies of nostr tooling, so there +is a lot of emphasis in it's goal designs to bridge the gap of user, notes, tags, relays discoverability without +depending on any one central point of coordination (such as large relays) + ## Installation ```sh @@ -11,8 +19,7 @@ npm add @nostr-dev-kit/ndk [NDK NIP-28 group chat](https://app.coracle.social/chat/note15m6rdfvlmd0z836hk83sg7r59xtv23qnmamhsslq5uc6744fdm4qfkeat3) ## Features -- [ ] NIP-01 - - [ ] +- [x] NIP-01 - [x] Caching adapters * Server-side - [x] [Redis](https://github.com/pablof7z/ndk-cache-redis) @@ -29,8 +36,8 @@ npm add @nostr-dev-kit/ndk * Subscription Management - [ ] Buffered queries - [x] Auto-closing subscriptions -- [ ] Signing Adapters - - [ ] Private key +- * Signing Adapters + - [x] Private key - [x] NIP-07 - [ ] NIP-26 - [ ] NIP-46 @@ -41,6 +48,27 @@ npm add @nostr-dev-kit/ndk - [ ] explicit relays blacklist - [ ] nostr-tools/SimplePool drop-in replacement interface +## Signers +NDK uses signers *optionally* passed in to sign events. Note that it is possible to use NDK without signing events +(e.g. [to get someone's profile](https://github.com/nostr-dev-kit/ndk-cli/blob/master/src/commands/profile.ts)). + +Signer adapters can be passed in when NDK is instantiated or later during runtime. + +### Using a NIP-07 browser extension (e.g. getalby, nos2x) +```ts +const nip07signer = new NDKNip07Signer(); +const ndk = new NDK({ signer: nip07signer }); +``` + +Now NDK can sign events using your users' NIP-07 extension. + +```ts +const ndkEvent = new NDKEvent(ndk); +ndkEvent.kind = 1; +ndkEvent.content = 'Hello, world!'; +ndkEvent.publish(); +``` + ## Caching NDK provides out-of-the-box database-agnostic caching functionality to improve the performance of applications. diff --git a/package-lock.json b/package-lock.json index f46a4b6f..5672d7eb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.10", + "version": "0.0.13", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@nostr-dev-kit/ndk", - "version": "0.0.10", + "version": "0.0.13", "license": "MIT", "dependencies": { "@scure/base": "^1.1.1", @@ -24,11 +24,13 @@ "websocket-polyfill": "^0.0.3" }, "devDependencies": { + "@jest/globals": "^29.5.0", "@types/debug": "^4.1.7", "@types/jest": "^29.5.0", "@types/node": "^14.11.2", "gts": "^3.1.1", "jest": "^29.5.0", + "ts-jest": "^29.1.0", "typescript": "~4.7.0" } }, @@ -2104,6 +2106,18 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/bser": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", @@ -5352,6 +5366,12 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -5398,6 +5418,12 @@ "semver": "bin/semver.js" } }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, "node_modules/makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", @@ -6754,6 +6780,58 @@ "node": ">=8" } }, + "node_modules/ts-jest": { + "version": "29.1.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz", + "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/tsconfig-paths": { "version": "3.14.2", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", @@ -8727,6 +8805,15 @@ "update-browserslist-db": "^1.0.10" } }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, "bser": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", @@ -11079,6 +11166,12 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -11115,6 +11208,12 @@ } } }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, "makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", @@ -12081,6 +12180,30 @@ "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true }, + "ts-jest": { + "version": "29.1.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz", + "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "^21.0.1" + }, + "dependencies": { + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + } + } + }, "tsconfig-paths": { "version": "3.14.2", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", diff --git a/package.json b/package.json index 585cdb5c..d3108b25 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.12", + "version": "0.0.13", "description": "NDK - Nostr Development Kit", "main": "dist/cjs/index.js", "module": "dist/esm/index.js", @@ -9,7 +9,7 @@ "homepage": "https://ndk.fyi", "repository": { "type": "git", - "url": "https://github.com/pablof7z/ndk" + "url": "https://github.com/nostr-dev-kit/ndk" }, "exports": { ".": { @@ -29,6 +29,7 @@ "build:esm": "node tools/cleanup esm && tsc -p config/tsconfig.esm.json", "build:types": "node tools/cleanup types && tsc -p config/tsconfig.types.json", "clean": "node tools/cleanup cjs && node tools/cleanup esm && node tools/cleanup types && find src -iname '*.js' -delete", + "test": "jest", "lint": "eslint src/**/*.ts", "compile": "tsc", "prepare": "pnpm compile", @@ -41,11 +42,13 @@ "author": "pablof7z", "license": "MIT", "devDependencies": { + "@jest/globals": "^29.5.0", "@types/debug": "^4.1.7", "@types/jest": "^29.5.0", "@types/node": "^14.11.2", "gts": "^3.1.1", "jest": "^29.5.0", + "ts-jest": "^29.1.0", "typescript": "~4.7.0" }, "dependencies": { diff --git a/src/events/content-tagger.test.ts b/src/events/content-tagger.test.ts new file mode 100644 index 00000000..a256d9c9 --- /dev/null +++ b/src/events/content-tagger.test.ts @@ -0,0 +1,43 @@ +import { generateContentTags } from './content-tagger'; +import { NDKTag } from './index'; + +describe('generateContentTags', () => { + it('should replace valid tags and store decoded data in the tags array', () => { + const content = 'This is a sample content with @npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft and @note1d2mheza0d5z5yycucu94nw37e6gyl4vwl6gavyku86rshkhexq6q30s0g7 tags.'; + const tags: NDKTag[] = []; + + const { content: processedContent, tags: processedTags } = generateContentTags(content, tags); + + expect(processedContent).toEqual('This is a sample content with #[0] and #[1] tags.'); + expect(processedTags.length).toEqual(2); + expect(processedTags).toEqual([ + ['p', 'fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52'], + ['e', '6ab77c8baf6d0542131cc70b59ba3ece904fd58efe91d612dc3e870bdaf93034'], + ]); + }); + + it('should not replace invalid tags and leave the tags array unchanged', () => { + const content = 'This is a sample content with an @invalidTag.'; + const tags: NDKTag[] = []; + + const { content: processedContent, tags: processedTags } = generateContentTags(content, tags); + + expect(processedContent).toEqual(content); + expect(processedTags.length).toEqual(0); + }); + + it('should handle existing tags and update indexes accordingly', () => { + const content = 'This is a sample content with @npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft and @note1d2mheza0d5z5yycucu94nw37e6gyl4vwl6gavyku86rshkhexq6q30s0g7 tags.'; + const tags: NDKTag[] = [['p', 'existing_p']]; + + const { content: processedContent, tags: processedTags } = generateContentTags(content, tags); + + expect(processedContent).toEqual('This is a sample content with #[1] and #[2] tags.'); + expect(processedTags.length).toEqual(3); + expect(processedTags).toEqual([ + ['p', 'existing_p'], + ['p', 'fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52'], + ['e', '6ab77c8baf6d0542131cc70b59ba3ece904fd58efe91d612dc3e870bdaf93034'] + ]); + }); +}); diff --git a/src/events/content-tagger.ts b/src/events/content-tagger.ts new file mode 100644 index 00000000..a40ad58a --- /dev/null +++ b/src/events/content-tagger.ts @@ -0,0 +1,35 @@ +import {nip19} from 'nostr-tools'; +import { NDKTag } from './index'; +import { EventPointer, ProfilePointer } from 'nostr-tools/lib/nip19'; + +export function generateContentTags(content: string, tags: NDKTag[] = []): {content: string; tags: NDKTag[]} { + const tagRegex = /@(npub|nprofile|note)[a-zA-Z0-9]+/g; + + content = content.replace(tagRegex, (tag) => { + try { + const {type, data} = nip19.decode(tag.slice(1)); + const tagIndex = tags.length; + + switch (type) { + case 'npub': + tags.push(['p', data as string]); + break; + case 'nprofile': + tags.push(['p', (data as ProfilePointer).pubkey as string]); + break; + case 'nevent': + tags.push(['e', (data as EventPointer).id as string]); + break; + case 'note': + tags.push(['e', data as string]); + break; + } + + return `#[${tagIndex}]`; + } catch (error) { + return tag; + } + }); + + return {content, tags}; +} \ No newline at end of file diff --git a/src/events/index.ts b/src/events/index.ts index ea8c4833..c48e8b8f 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -2,6 +2,7 @@ import { getEventHash, Kind, UnsignedEvent } from "nostr-tools"; import EventEmitter from "eventemitter3"; import NDK from "../index"; import Zap from '../zap/index'; +import { generateContentTags } from "./content-tagger"; export type NDKEventId = string; export type NDKTag = string[]; @@ -11,7 +12,7 @@ export type NostrEvent = { created_at: number; content: string; subject?: string; - tags: string[][]; + tags: NDKTag[]; kind?: NDKKind; pubkey: string; id?: string; @@ -47,7 +48,10 @@ export default class Event extends EventEmitter { async toNostrEvent(pubkey?: string): Promise { if (this._event) return this._event; - if (!pubkey) pubkey = await this.ndk?.signer?.user?.hexpubkey(); + if (!pubkey) { + const user = await this.ndk?.signer?.user(); + pubkey = user?.hexpubkey(); + } const nostrEvent: NostrEvent = { created_at: this.created_at || Math.floor(Date.now() / 1000), @@ -75,15 +79,15 @@ export default class Event extends EventEmitter { /** * Get all tags with the given name */ - getMatchingTags(tagName: string): NDKTag[] { + public getMatchingTags(tagName: string): NDKTag[] { return this.tags.filter((tag) => tag[0] === tagName); } - async toString() { + public async toString() { return await this.toNostrEvent(); } - async sign() { + public async sign() { this.ndk?.assertSigner(); await this.generateTags(); @@ -92,8 +96,14 @@ export default class Event extends EventEmitter { this.sig = await this.ndk?.signer?.sign(nostrEvent); } - async generateTags() { - // if this is a paramterized repleacable event, check there's a d tag, if not, generate it + public async publish() : Promise { + if (!this.sig) await this.sign(); + + return this.ndk?.publish(this); + } + + private async generateTags() { + // if this is a paramterized repleacable event, check if there's a d tag, if not, generate it if (this.kind && this.kind >= 30000 && this.kind <= 40000) { const dTag = this.getMatchingTags('d')[0]; if (!dTag) { @@ -105,8 +115,14 @@ export default class Event extends EventEmitter { if (this.tags.length > 0) return; // split content in words + const { content, tags } = generateContentTags(this.content, this.tags); + this.content = content; + this.tags = tags; } + /** + * Create a zap request for an existing event + */ async zap(amount: number, comment?: string): Promise { if (!this.ndk) throw new Error('No NDK instance found'); diff --git a/src/index.ts b/src/index.ts index c107ebf7..4505ca08 100644 --- a/src/index.ts +++ b/src/index.ts @@ -74,7 +74,7 @@ export default class NDK extends EventEmitter { filter: NDKFilter, opts?: NDKSubscriptionOptions ): NDKSubscription { - const subscription = new NDKSubscription(this, filter, opts) + const subscription = new NDKSubscription(this, filter, opts); subscription.start(); return subscription; diff --git a/src/signers/index.ts b/src/signers/index.ts index 3cce8999..5abb7f38 100644 --- a/src/signers/index.ts +++ b/src/signers/index.ts @@ -1,8 +1,23 @@ import NDKUser from '../user'; -import type {NostrEvent} from '../events/index'; +import type { NostrEvent } from '../events/index'; export interface NDKSigner { - user: NDKUser | undefined; + /** + * Blocks until the signer is ready and returns the associated NDKUser. + * @returns A promise that resolves to the NDKUser instance. + */ + blockUntilReady(): Promise; + + /** + * Getter for the user property. + * @returns A promise that resolves to the NDKUser instance. + */ + user(): Promise; + + /** + * Signs the given Nostr event. + * @param event - The Nostr event to be signed. + * @returns A promise that resolves to the signature of the signed event. + */ sign(event: NostrEvent): Promise; } - diff --git a/src/signers/nip07/index.ts b/src/signers/nip07/index.ts index 810a92de..aa7ae2b6 100644 --- a/src/signers/nip07/index.ts +++ b/src/signers/nip07/index.ts @@ -1,24 +1,64 @@ -import {NDKSigner} from '../index'; -import type {NostrEvent} from '../../events/index'; +import { NDKSigner } from '../index'; +import type { NostrEvent } from '../../events/index'; import NDKUser from '../../user/index'; +/** + * NDKNip07Signer implements the NDKSigner interface for signing Nostr events + * with a NIP-07 browser extension (e.g., getalby, nos2x). + */ export class NDKNip07Signer implements NDKSigner { - public user: NDKUser | undefined; - private window: any; + private _userPromise: Promise | undefined; - public constructor() {} + public constructor() { + if (!window.nostr) { + throw new Error('NIP-07 extension not available'); + } + } + + public async blockUntilReady(): Promise { + const pubkey = await window.nostr?.getPublicKey(); - public async configure(window: any) { - this.window = window; + // If the user rejects granting access, error out + if (!pubkey) { + throw new Error('User rejected access'); + } + + return new NDKUser({ hexpubkey: pubkey }); + } - const pubkey = await this.window.nostr?.getPublicKey(); - this.user = new NDKUser({hexpubkey: pubkey}); + /** + * Getter for the user property. + * @returns The NDKUser instance. + */ + public async user(): Promise { + if (!this._userPromise) { + this._userPromise = this.blockUntilReady(); + } - return this.user; + return this._userPromise; } + /** + * Signs the given Nostr event. + * @param event - The Nostr event to be signed. + * @returns The signature of the signed event. + * @throws Error if the NIP-07 is not available on the window object. + */ public async sign(event: NostrEvent): Promise { - const signedEvent = await this.window.nostr?.signEvent(event); + if (!window.nostr) { + throw new Error('NIP-07 extension not available'); + } + + const signedEvent = await window.nostr.signEvent(event); return signedEvent.sig; } } + +declare global { + interface Window { + nostr?: { + getPublicKey(): Promise; + signEvent(event: NostrEvent): Promise<{ sig: string }>; + }; + } +} diff --git a/src/signers/private-key/index.test.ts b/src/signers/private-key/index.test.ts new file mode 100644 index 00000000..e003d4c5 --- /dev/null +++ b/src/signers/private-key/index.test.ts @@ -0,0 +1,43 @@ +import PrivateKeySigner from './index'; +import { NostrEvent } from '../../events/index'; +import User from '../../user'; + +describe('PrivateKeySigner', () => { + it('generates a new PrivateKeySigner instance with a private key', () => { + const signer = PrivateKeySigner.generate(); + expect(signer).toBeInstanceOf(PrivateKeySigner); + expect(signer.privateKey).toBeDefined(); + }); + + it('creates a new PrivateKeySigner instance with a provided private key', () => { + const privateKey = '00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff'; + const signer = new PrivateKeySigner(privateKey); + expect(signer).toBeInstanceOf(PrivateKeySigner); + expect(signer.privateKey).toBe(privateKey); + }); + + it('returns a user instance with a public key corresponding to the private key', async () => { + const privateKey = 'e8eb7464168139c6ccb9111f768777f332fa1289dff11244ccfe89970ff776d4'; + const signer = new PrivateKeySigner(privateKey); + const user = await signer.user(); + expect(user).toBeInstanceOf(User); + expect(user.hexpubkey()).toBe('07f61c41b44a923952db82e6e7bcd184b059fe087f58f9d9a918da391f38d503'); + }); + + it('signs a NostrEvent with the private key', async () => { + const privateKey = '00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff'; + const signer = new PrivateKeySigner(privateKey); + + const event: NostrEvent = { + pubkey: '07f61c41b44a923952db82e6e7bcd184b059fe087f58f9d9a918da391f38d503', + created_at: Math.floor(Date.now() / 1000), + tags: [], + content: 'Test content', + kind: 1, + }; + + const signature = await signer.sign(event); + expect(signature).toBeDefined(); + expect(signature.length).toBe(128); + }); +}); diff --git a/src/signers/private-key/index.ts b/src/signers/private-key/index.ts index 817ea676..8e70d460 100644 --- a/src/signers/private-key/index.ts +++ b/src/signers/private-key/index.ts @@ -1,17 +1,17 @@ -import {signEvent, generatePrivateKey, getPublicKey} from 'nostr-tools'; -import type {UnsignedEvent} from 'nostr-tools'; -import type {NostrEvent} from '../../events/index'; -import {NDKSigner} from '../index'; +import { signEvent, generatePrivateKey, getPublicKey } from 'nostr-tools'; +import type { UnsignedEvent } from 'nostr-tools'; +import type { NostrEvent } from '../../events/index'; +import { NDKSigner } from '../index'; import User from '../../user'; export default class PrivateKeySigner implements NDKSigner { - public user: User | undefined; + private _user: User | undefined; privateKey?: string; public constructor(privateKey?: string) { if (privateKey) { - this.privateKey = privateKey; - this.user = new User({hexpubkey: getPublicKey(this.privateKey)}); + this.privateKey = privateKey; + this._user = new User({ hexpubkey: getPublicKey(this.privateKey) }); } } @@ -20,11 +20,23 @@ export default class PrivateKeySigner implements NDKSigner { return new PrivateKeySigner(privateKey); } + public async blockUntilReady(): Promise { + if (!this._user) { + throw new Error('User not initialized'); + } + return this._user; + } + + public async user(): Promise { + await this.blockUntilReady(); + return this._user as User; + } + public async sign(event: NostrEvent): Promise { if (!this.privateKey) { - throw Error('Attempted to sign without a private key'); + throw Error('Attempted to sign without a private key'); } return signEvent(event as UnsignedEvent, this.privateKey); } -} +} \ No newline at end of file diff --git a/src/subscription/index.ts b/src/subscription/index.ts index a91cb345..f376fb1f 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -79,7 +79,7 @@ export class NDKSubscription extends EventEmitter { private shouldQueryRelays(): boolean { return ( this.opts?.cacheUsage !== NDKSubscriptionCacheUsage.ONLY_CACHE - ) + ); } /** From e6bc0b3aac8970ab35e22b8eae88e1672fd7e070 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 4 Apr 2023 12:57:29 +0300 Subject: [PATCH 016/773] improve packaging --- .gitignore | 1 + config/tsconfig.esm.json | 2 +- package.json | 29 +++++------ src/cache/index.ts | 4 +- src/events/content-tagger.test.ts | 2 +- src/events/content-tagger.ts | 2 +- src/events/index.ts | 6 +-- src/index.ts | 21 ++++---- src/relay/index.ts | 6 +-- src/relay/pool/index.ts | 2 +- src/relay/sets/calculate.ts | 10 ++-- src/relay/sets/index.ts | 6 +-- src/signers/index.ts | 2 +- src/signers/nip07/index.ts | 6 +-- src/signers/private-key/index.ts | 4 +- src/subscription/index.ts | 8 ++-- src/user/index.ts | 4 +- src/user/profile.ts | 2 +- src/zap/index.ts | 8 ++-- src/zap/invoice.ts | 2 +- tsconfig.json | 80 +++++-------------------------- 21 files changed, 75 insertions(+), 132 deletions(-) diff --git a/.gitignore b/.gitignore index 1f6b30a3..45b0dd2e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ **/node_modules **/build **/dist +**/lib **/.vscode pnpm-lock.yaml **/*.js diff --git a/config/tsconfig.esm.json b/config/tsconfig.esm.json index 1c3ce177..ce4808b0 100644 --- a/config/tsconfig.esm.json +++ b/config/tsconfig.esm.json @@ -3,6 +3,6 @@ "compilerOptions": { "moduleResolution": "node", "module": "ESNext" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, - "outDir": "../dist/esm" /* Redirect output structure to the directory. */ + "outDir": "../lib/esm" /* Redirect output structure to the directory. */ } } diff --git a/package.json b/package.json index d3108b25..474f4729 100644 --- a/package.json +++ b/package.json @@ -1,34 +1,27 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.13", + "version": "0.0.14", "description": "NDK - Nostr Development Kit", - "main": "dist/cjs/index.js", - "module": "dist/esm/index.js", - "umd:main": "dist/umd/index.js", - "types": "dist/types/index.d.ts", "homepage": "https://ndk.fyi", "repository": { "type": "git", "url": "https://github.com/nostr-dev-kit/ndk" }, + "types": "./lib/src/index.d.ts", + "main": "lib/ndk.cjs.js", + "module": "lib/esm/ndk.mjs", "exports": { - ".": { - "import": "./dist/esm/index.js", - "require": "./dist/cjs/index.js", - "default": "./dist/umd/index.js" - } + "import": "./lib/esm/ndk.mjs", + "require": "./lib/ndk.cjs.js" }, "files": [ - "dist", + "lib", "README.md" ], "scripts": { "dev": "node tools/cleanup esm && tsc -w -p config/tsconfig.esm.json", - "build": "npm run build:cjs && npm run build:esm && npm run build:types", - "build:cjs": "node tools/cleanup cjs && tsc -p config/tsconfig.cjs.json", - "build:esm": "node tools/cleanup esm && tsc -p config/tsconfig.esm.json", - "build:types": "node tools/cleanup types && tsc -p config/tsconfig.types.json", - "clean": "node tools/cleanup cjs && node tools/cleanup esm && node tools/cleanup types && find src -iname '*.js' -delete", + "build": "rm -rf lib && node build.js && tsc", + "clean": "rm -rf lib", "test": "jest", "lint": "eslint src/**/*.ts", "compile": "tsc", @@ -56,13 +49,17 @@ "@typescript-eslint/eslint-plugin": "^5.57.0", "@typescript-eslint/parser": "^5.57.0", "debug": "^4.3.4", + "esbuild": "^0.17.15", + "esbuild-plugin-alias": "^0.2.1", "eslint": "^8.37.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-import": "^2.27.5", + "esm-loader-typescript": "^1.0.4", "eventemitter3": "^5.0.0", "light-bolt11-decoder": "^3.0.0", "node-fetch": "^3.3.1", "nostr-tools": "^1.8.1", + "tsd": "^0.28.1", "utf8-buffer": "^1.0.0", "websocket-polyfill": "^0.0.3" } diff --git a/src/cache/index.ts b/src/cache/index.ts index fa4a6823..bd5475b4 100644 --- a/src/cache/index.ts +++ b/src/cache/index.ts @@ -1,5 +1,5 @@ -import {NDKFilter, NDKSubscription} from '../subscription/index'; -import NDKEvent from '../events/index'; +import {NDKFilter, NDKSubscription} from '../subscription/index.js'; +import NDKEvent from '../events/index.js'; export interface NDKCacheAdapter { /** diff --git a/src/events/content-tagger.test.ts b/src/events/content-tagger.test.ts index a256d9c9..a9b33b36 100644 --- a/src/events/content-tagger.test.ts +++ b/src/events/content-tagger.test.ts @@ -1,5 +1,5 @@ import { generateContentTags } from './content-tagger'; -import { NDKTag } from './index'; +import { NDKTag } from './index.js'; describe('generateContentTags', () => { it('should replace valid tags and store decoded data in the tags array', () => { diff --git a/src/events/content-tagger.ts b/src/events/content-tagger.ts index a40ad58a..257df376 100644 --- a/src/events/content-tagger.ts +++ b/src/events/content-tagger.ts @@ -1,5 +1,5 @@ import {nip19} from 'nostr-tools'; -import { NDKTag } from './index'; +import { NDKTag } from './index.js'; import { EventPointer, ProfilePointer } from 'nostr-tools/lib/nip19'; export function generateContentTags(content: string, tags: NDKTag[] = []): {content: string; tags: NDKTag[]} { diff --git a/src/events/index.ts b/src/events/index.ts index c48e8b8f..2a1a3028 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -1,8 +1,8 @@ import { getEventHash, Kind, UnsignedEvent } from "nostr-tools"; import EventEmitter from "eventemitter3"; -import NDK from "../index"; -import Zap from '../zap/index'; -import { generateContentTags } from "./content-tagger"; +import NDK from "../index.js"; +import Zap from '../zap/index.js'; +import { generateContentTags } from "./content-tagger.js"; export type NDKEventId = string; export type NDKTag = string[]; diff --git a/src/index.ts b/src/index.ts index 4505ca08..8cbc50b8 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,11 +1,11 @@ -import NDKEvent from './events/index'; -import {NDKPool} from './relay/pool/index'; -import type {NDKSigner} from './signers/index'; -import NDKUser, {NDKUserParams} from './user/index'; -import {NDKUserProfile} from './user/profile'; -import {NDKFilter, NDKFilterOptions, NDKSubscription, NDKSubscriptionOptions} from './subscription/index'; -import { NDKCacheAdapter } from './cache/index'; -import { calculateRelaySetFromEvent } from './relay/sets/calculate'; +import NDKEvent from './events/index.js'; +import {NDKPool} from './relay/pool/index.js'; +import type {NDKSigner} from './signers/index.js'; +import NDKUser, {NDKUserParams} from './user/index.js'; +import {NDKUserProfile} from './user/profile.js'; +import {NDKFilter, NDKFilterOptions, NDKSubscription, NDKSubscriptionOptions} from './subscription/index.js'; +import { NDKCacheAdapter } from './cache/index.js'; +import { calculateRelaySetFromEvent } from './relay/sets/calculate.js'; import EventEmitter from 'eventemitter3'; import debug from 'debug'; @@ -17,8 +17,8 @@ export { NDKCacheAdapter, NDKSubscription }; -export {NDKNip07Signer} from './signers/nip07/index'; -export {NDKZapInvoice, zapInvoiceFromEvent} from './zap/invoice'; +export {NDKNip07Signer} from './signers/nip07/index.js'; +export {NDKZapInvoice, zapInvoiceFromEvent} from './zap/invoice.js'; export interface NDKConstructorParams { explicitRelayUrls?: string[]; @@ -109,6 +109,7 @@ export default class NDK extends EventEmitter { const relaySetSubscription = this.subscribe(filter, {closeOnEose: true}); relaySetSubscription.on('event', (event: NDKEvent) => { + event.ndk = this; events.add(event); }); relaySetSubscription.on('eose', () => { diff --git a/src/relay/index.ts b/src/relay/index.ts index 3754596d..9eac414b 100644 --- a/src/relay/index.ts +++ b/src/relay/index.ts @@ -1,10 +1,10 @@ import 'websocket-polyfill'; import {relayInit, Sub} from 'nostr-tools'; import type {Event as SignedEvent} from 'nostr-tools'; -import User from '../user/index'; +import User from '../user/index.js'; import {NDKRelayScore} from './score'; -import {NDKSubscription} from '../subscription/index'; -import NDKEvent, {NostrEvent} from '../events/index'; +import {NDKSubscription} from '../subscription/index.js'; +import NDKEvent, {NostrEvent} from '../events/index.js'; import EventEmitter from 'eventemitter3'; export class NDKRelay extends EventEmitter { diff --git a/src/relay/pool/index.ts b/src/relay/pool/index.ts index 5a724de3..c2ce1d6b 100644 --- a/src/relay/pool/index.ts +++ b/src/relay/pool/index.ts @@ -1,5 +1,5 @@ import EventEmitter from 'eventemitter3'; -import {NDKRelay} from '../index'; +import {NDKRelay} from '../index.js'; export class NDKPool extends EventEmitter { public relays = new Map(); diff --git a/src/relay/sets/calculate.ts b/src/relay/sets/calculate.ts index 53c1c081..e02dd9b3 100644 --- a/src/relay/sets/calculate.ts +++ b/src/relay/sets/calculate.ts @@ -1,8 +1,8 @@ -import NDK from '../../index'; -import {NDKRelay} from '../index'; -import Event from '../../events/index'; -import {NDKRelaySet} from './index'; -import {NDKFilter} from '../../subscription/index'; +import NDK from '../../index.js'; +import {NDKRelay} from '../index.js'; +import Event from '../../events/index.js'; +import {NDKRelaySet} from './index.js'; +import {NDKFilter} from '../../subscription/index.js'; /** * Creates a NDKRelaySet for the specified event. diff --git a/src/relay/sets/index.ts b/src/relay/sets/index.ts index 8209451f..b670fe74 100644 --- a/src/relay/sets/index.ts +++ b/src/relay/sets/index.ts @@ -1,6 +1,6 @@ -import {NDKRelay} from '../index'; -import Event from '../../events/index'; -import {NDKSubscription} from '../../subscription/index'; +import {NDKRelay} from '../index.js'; +import Event from '../../events/index.js'; +import {NDKSubscription} from '../../subscription/index.js'; /** * A relay set is a group of relays. This grouping can be short-living, for a single diff --git a/src/signers/index.ts b/src/signers/index.ts index 5abb7f38..68db0ed9 100644 --- a/src/signers/index.ts +++ b/src/signers/index.ts @@ -1,5 +1,5 @@ import NDKUser from '../user'; -import type { NostrEvent } from '../events/index'; +import type { NostrEvent } from '../events/index.js'; export interface NDKSigner { /** diff --git a/src/signers/nip07/index.ts b/src/signers/nip07/index.ts index aa7ae2b6..7a3671f0 100644 --- a/src/signers/nip07/index.ts +++ b/src/signers/nip07/index.ts @@ -1,6 +1,6 @@ -import { NDKSigner } from '../index'; -import type { NostrEvent } from '../../events/index'; -import NDKUser from '../../user/index'; +import { NDKSigner } from '../index.js'; +import type { NostrEvent } from '../../events/index.js'; +import NDKUser from '../../user/index.js'; /** * NDKNip07Signer implements the NDKSigner interface for signing Nostr events diff --git a/src/signers/private-key/index.ts b/src/signers/private-key/index.ts index 8e70d460..653f7a9c 100644 --- a/src/signers/private-key/index.ts +++ b/src/signers/private-key/index.ts @@ -1,7 +1,7 @@ import { signEvent, generatePrivateKey, getPublicKey } from 'nostr-tools'; import type { UnsignedEvent } from 'nostr-tools'; -import type { NostrEvent } from '../../events/index'; -import { NDKSigner } from '../index'; +import type { NostrEvent } from '../../events/index.js'; +import { NDKSigner } from '../index.js'; import User from '../../user'; export default class PrivateKeySigner implements NDKSigner { diff --git a/src/subscription/index.ts b/src/subscription/index.ts index f376fb1f..50b918af 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -1,10 +1,10 @@ -import NDK from '../index'; +import NDK from '../index.js'; import {Filter as NostrFilter, Sub} from 'nostr-tools'; import EventEmitter from 'eventemitter3'; import {NDKRelay} from '../relay'; -import {NDKRelaySet} from '../relay/sets/index'; -import {NDKEventId} from '../events/index'; -import NDKEvent from '../events/index'; +import {NDKRelaySet} from '../relay/sets/index.js'; +import {NDKEventId} from '../events/index.js'; +import NDKEvent from '../events/index.js'; import { calculateRelaySetFromFilter } from '../relay/sets/calculate'; export type NDKFilter = NostrFilter; diff --git a/src/user/index.ts b/src/user/index.ts index 7bab6d4a..cbd5c68c 100644 --- a/src/user/index.ts +++ b/src/user/index.ts @@ -1,7 +1,7 @@ import {nip05, nip19} from 'nostr-tools'; -import Event from '../events/index'; +import Event from '../events/index.js'; import {NDKUserProfile, mergeEvent} from './profile'; -import NDK from '../index'; +import NDK from '../index.js'; export interface NDKUserParams { npub?: string; diff --git a/src/user/profile.ts b/src/user/profile.ts index 45e1d039..55b9da1b 100644 --- a/src/user/profile.ts +++ b/src/user/profile.ts @@ -1,4 +1,4 @@ -import NDKEvent from '../events/index'; +import NDKEvent from '../events/index.js'; export interface NDKUserProfile { name?: string; diff --git a/src/zap/index.ts b/src/zap/index.ts index 8bcead7f..7e2af8db 100644 --- a/src/zap/index.ts +++ b/src/zap/index.ts @@ -1,8 +1,8 @@ -import NDK from "../index"; +import NDK from "../index.js"; import EventEmitter from 'eventemitter3'; -import Event from "../events/index"; -import type {NostrEvent} from "../events/index"; -import User from "../user/index"; +import Event from "../events/index.js"; +import type {NostrEvent} from "../events/index.js"; +import User from "../user/index.js"; import {nip57} from "nostr-tools"; import {bech32} from '@scure/base'; interface ZapConstructorParams { diff --git a/src/zap/invoice.ts b/src/zap/invoice.ts index 692d7696..fd123fe5 100644 --- a/src/zap/invoice.ts +++ b/src/zap/invoice.ts @@ -1,4 +1,4 @@ -import NDKEvent, {type NDKEventId, type NostrEvent} from '../events/index'; +import NDKEvent, {type NDKEventId, type NostrEvent} from '../events/index.js'; import lightningPayReq from 'light-bolt11-decoder'; export interface NDKZapInvoice { diff --git a/tsconfig.json b/tsconfig.json index cf79f99e..feb3821a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,71 +1,15 @@ { "compilerOptions": { - /* Visit https://aka.ms/tsconfig.json to read more about this file */ - - /* Basic Options */ - // "incremental": true, /* Enable incremental compilation */ - "target": "esnext" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, - // "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ - // "lib": [], /* Specify library files to be included in the compilation. */ - // "allowJs": true, /* Allow javascript files to be compiled. */ - // "checkJs": true, /* Report errors in .js files. */ - // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - "declaration": true, /* Generates corresponding '.d.ts' file. */ - "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ - // "sourceMap": true, /* Generates corresponding '.map' file. */ - // "outFile": "./", /* Concatenate and emit output to single file. */ - // "outDir": "./", /* Redirect output structure to the directory. */ - // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ - // "composite": true, /* Enable project compilation */ - // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ - // "removeComments": true, /* Do not emit comments to output. */ - // "noEmit": true, /* Do not emit outputs. */ - // "importHelpers": true, /* Import emit helpers from 'tslib'. */ - // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ - // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ - - /* Strict Type-Checking Options */ - "strict": true /* Enable all strict type-checking options. */, - // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* Enable strict null checks. */ - // "strictFunctionTypes": true, /* Enable strict checking of function types. */ - // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ - // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ - // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ - // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ - - /* Additional Checks */ - // "noUnusedLocals": true, /* Report errors on unused locals. */ - // "noUnusedParameters": true, /* Report errors on unused parameters. */ - // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ - // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - - /* Module Resolution Options */ - "moduleResolution": "node" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */, - // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ - // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ - // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ - // "typeRoots": [], /* List of folders to include type definitions from. */ - // "types": [], /* Type declaration files to be included in compilation. */ - // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - // "resolveJsonModule": true, - "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, - // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - - /* Source Map Options */ - // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ - // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ - - /* Experimental Options */ - // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ - // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ - - /* Advanced Options */ - // "skipLibCheck": true, /* Skip type checking of declaration files. */ - "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ - }, - "include": ["src/**/*"] + "module": "esnext", + "target": "esnext", + "lib": ["dom", "dom.iterable", "esnext"], + "declaration": true, + "strict": true, + "moduleResolution": "node", + "skipLibCheck": true, + "esModuleInterop": true, + "emitDeclarationOnly": true, + "outDir": "lib", + "rootDir": "." + } } From e05d5a228fe7c0032ff899158e7142c12783b4b9 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 4 Apr 2023 14:16:47 +0300 Subject: [PATCH 017/773] handle contact lists with incorrect data (fixes: #1) --- package-lock.json | 1594 +++++++++++++++++++++++++++++---- package.json | 3 +- src/index.ts | 2 +- src/light-bolt11-decoder.d.ts | 4 +- src/user/follows.test.ts | 41 + src/user/follows.ts | 30 + src/user/index.test.ts | 70 ++ src/user/index.ts | 28 +- src/zap/invoice.ts | 4 +- 9 files changed, 1545 insertions(+), 231 deletions(-) create mode 100644 src/user/follows.test.ts create mode 100644 src/user/follows.ts create mode 100644 src/user/index.test.ts diff --git a/package-lock.json b/package-lock.json index 5672d7eb..f2f703a6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,25 +1,29 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.13", + "version": "0.0.14", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@nostr-dev-kit/ndk", - "version": "0.0.13", + "version": "0.0.14", "license": "MIT", "dependencies": { "@scure/base": "^1.1.1", "@typescript-eslint/eslint-plugin": "^5.57.0", "@typescript-eslint/parser": "^5.57.0", "debug": "^4.3.4", + "esbuild": "^0.17.15", + "esbuild-plugin-alias": "^0.2.1", "eslint": "^8.37.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-import": "^2.27.5", + "esm-loader-typescript": "^1.0.4", "eventemitter3": "^5.0.0", "light-bolt11-decoder": "^3.0.0", "node-fetch": "^3.3.1", "nostr-tools": "^1.8.1", + "tsd": "^0.28.1", "utf8-buffer": "^1.0.0", "websocket-polyfill": "^0.0.3" }, @@ -30,6 +34,7 @@ "@types/node": "^14.11.2", "gts": "^3.1.1", "jest": "^29.5.0", + "prettier-plugin-organize-imports": "^3.2.2", "ts-jest": "^29.1.0", "typescript": "~4.7.0" } @@ -51,7 +56,6 @@ "version": "7.12.11", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, "dependencies": { "@babel/highlight": "^7.10.4" } @@ -305,7 +309,6 @@ "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -337,7 +340,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", @@ -351,7 +353,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -363,7 +364,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -377,7 +377,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "dependencies": { "color-name": "1.1.3" } @@ -385,14 +384,12 @@ "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, "engines": { "node": ">=0.8.0" } @@ -401,7 +398,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, "engines": { "node": ">=4" } @@ -410,7 +406,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -695,6 +690,336 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "node_modules/@esbuild/android-arm": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.15.tgz", + "integrity": "sha512-sRSOVlLawAktpMvDyJIkdLI/c/kdRTOqo8t6ImVxg8yT7LQDUYV5Rp2FKeEosLr6ZCja9UjYAzyRSxGteSJPYg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.15.tgz", + "integrity": "sha512-0kOB6Y7Br3KDVgHeg8PRcvfLkq+AccreK///B4Z6fNZGr/tNHX0z2VywCc7PTeWp+bPvjA5WMvNXltHw5QjAIA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.15.tgz", + "integrity": "sha512-MzDqnNajQZ63YkaUWVl9uuhcWyEyh69HGpMIrf+acR4otMkfLJ4sUCxqwbCyPGicE9dVlrysI3lMcDBjGiBBcQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.15.tgz", + "integrity": "sha512-7siLjBc88Z4+6qkMDxPT2juf2e8SJxmsbNVKFY2ifWCDT72v5YJz9arlvBw5oB4W/e61H1+HDB/jnu8nNg0rLA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.15.tgz", + "integrity": "sha512-NbImBas2rXwYI52BOKTW342Tm3LTeVlaOQ4QPZ7XuWNKiO226DisFk/RyPk3T0CKZkKMuU69yOvlapJEmax7cg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.15.tgz", + "integrity": "sha512-Xk9xMDjBVG6CfgoqlVczHAdJnCs0/oeFOspFap5NkYAmRCT2qTn1vJWA2f419iMtsHSLm+O8B6SLV/HlY5cYKg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.15.tgz", + "integrity": "sha512-3TWAnnEOdclvb2pnfsTWtdwthPfOz7qAfcwDLcfZyGJwm1SRZIMOeB5FODVhnM93mFSPsHB9b/PmxNNbSnd0RQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.15.tgz", + "integrity": "sha512-MLTgiXWEMAMr8nmS9Gigx43zPRmEfeBfGCwxFQEMgJ5MC53QKajaclW6XDPjwJvhbebv+RzK05TQjvH3/aM4Xw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.15.tgz", + "integrity": "sha512-T0MVnYw9KT6b83/SqyznTs/3Jg2ODWrZfNccg11XjDehIved2oQfrX/wVuev9N936BpMRaTR9I1J0tdGgUgpJA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.15.tgz", + "integrity": "sha512-wp02sHs015T23zsQtU4Cj57WiteiuASHlD7rXjKUyAGYzlOKDAjqK6bk5dMi2QEl/KVOcsjwL36kD+WW7vJt8Q==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.15.tgz", + "integrity": "sha512-k7FsUJjGGSxwnBmMh8d7IbObWu+sF/qbwc+xKZkBe/lTAF16RqxRCnNHA7QTd3oS2AfGBAnHlXL67shV5bBThQ==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.15.tgz", + "integrity": "sha512-ZLWk6czDdog+Q9kE/Jfbilu24vEe/iW/Sj2d8EVsmiixQ1rM2RKH2n36qfxK4e8tVcaXkvuV3mU5zTZviE+NVQ==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.15.tgz", + "integrity": "sha512-mY6dPkIRAiFHRsGfOYZC8Q9rmr8vOBZBme0/j15zFUKM99d4ILY4WpOC7i/LqoY+RE7KaMaSfvY8CqjJtuO4xg==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.15.tgz", + "integrity": "sha512-EcyUtxffdDtWjjwIH8sKzpDRLcVtqANooMNASO59y+xmqqRYBBM7xVLQhqF7nksIbm2yHABptoioS9RAbVMWVA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.15.tgz", + "integrity": "sha512-BuS6Jx/ezxFuHxgsfvz7T4g4YlVrmCmg7UAwboeyNNg0OzNzKsIZXpr3Sb/ZREDXWgt48RO4UQRDBxJN3B9Rbg==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.15.tgz", + "integrity": "sha512-JsdS0EgEViwuKsw5tiJQo9UdQdUJYuB+Mf6HxtJSPN35vez1hlrNb1KajvKWF5Sa35j17+rW1ECEO9iNrIXbNg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.15.tgz", + "integrity": "sha512-R6fKjtUysYGym6uXf6qyNephVUQAGtf3n2RCsOST/neIwPqRWcnc3ogcielOd6pT+J0RDR1RGcy0ZY7d3uHVLA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.15.tgz", + "integrity": "sha512-mVD4PGc26b8PI60QaPUltYKeSX0wxuy0AltC+WCTFwvKCq2+OgLP4+fFd+hZXzO2xW1HPKcytZBdjqL6FQFa7w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.15.tgz", + "integrity": "sha512-U6tYPovOkw3459t2CBwGcFYfFRjivcJJc1WC8Q3funIwX8x4fP+R6xL/QuTPNGOblbq/EUDxj9GU+dWKX0oWlQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.15.tgz", + "integrity": "sha512-W+Z5F++wgKAleDABemiyXVnzXgvRFs+GVKThSI+mGgleLWluv0D7Diz4oQpgdpNzh4i2nNDzQtWbjJiqutRp6Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.15.tgz", + "integrity": "sha512-Muz/+uGgheShKGqSVS1KsHtCyEzcdOn/W/Xbh6H91Etm+wiIfwZaBn1W58MeGtfI8WA961YMHFYTthBdQs4t+w==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.15.tgz", + "integrity": "sha512-DjDa9ywLUUmjhV2Y9wUTIF+1XsmuFGvZoCmOWkli1XcNAh5t25cc7fgsCx4Zi/Uurep3TTLyDiKATgGEg61pkA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -1010,7 +1335,6 @@ "version": "29.4.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", - "dev": true, "dependencies": { "@sinclair/typebox": "^0.25.16" }, @@ -1280,8 +1604,7 @@ "node_modules/@sinclair/typebox": { "version": "0.25.24", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", - "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", - "dev": true + "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==" }, "node_modules/@sinonjs/commons": { "version": "2.0.0", @@ -1301,6 +1624,11 @@ "@sinonjs/commons": "^2.0.0" } }, + "node_modules/@tsd/typescript": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@tsd/typescript/-/typescript-5.0.3.tgz", + "integrity": "sha512-dGYlmePDOyea9ZsHdwZx67e1Al8TkDqLgTNnxkmUXpRMawDo+HyXeJFw3Ee8j6ODqLiuYjH82BKJuzmEDhN62w==" + }, "node_modules/@types/babel__core": { "version": "7.20.0", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", @@ -1351,6 +1679,20 @@ "@types/ms": "*" } }, + "node_modules/@types/eslint": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", + "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" + }, "node_modules/@types/graceful-fs": { "version": "4.1.6", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", @@ -1407,8 +1749,7 @@ "node_modules/@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" }, "node_modules/@types/ms": { "version": "0.7.31", @@ -1425,8 +1766,7 @@ "node_modules/@types/normalize-package-data": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" }, "node_modules/@types/prettier": { "version": "2.7.2", @@ -1794,7 +2134,6 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, "dependencies": { "type-fest": "^0.21.3" }, @@ -1809,7 +2148,6 @@ "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, "engines": { "node": ">=10" }, @@ -1937,7 +2275,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2169,7 +2506,6 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, "engines": { "node": ">=6" } @@ -2178,7 +2514,6 @@ "version": "6.2.2", "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, "dependencies": { "camelcase": "^5.3.1", "map-obj": "^4.0.0", @@ -2340,6 +2675,17 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, + "node_modules/create-esm-loader": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/create-esm-loader/-/create-esm-loader-0.2.3.tgz", + "integrity": "sha512-cllzD6IU/mzXBs5OdQVWL3+ne5Elpu3Wdm7h5OldMbGXk76yr9XzHlQXWJ4zfs0ZAibe26rkbs4KvMAJm7fIZA==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=14.x" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -2390,7 +2736,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2399,7 +2744,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "dev": true, "dependencies": { "decamelize": "^1.1.0", "map-obj": "^1.0.0" @@ -2415,7 +2759,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2468,7 +2811,6 @@ "version": "29.4.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", - "dev": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -2516,8 +2858,7 @@ "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/enquirer": { "version": "2.3.6", @@ -2535,7 +2876,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "dependencies": { "is-arrayish": "^0.2.1" } @@ -2657,6 +2997,47 @@ "ext": "^1.1.2" } }, + "node_modules/esbuild": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.15.tgz", + "integrity": "sha512-LBUV2VsUIc/iD9ME75qhT4aJj0r75abCVS0jakhFzOtR7TQsqQA5w0tZ+KTKnwl3kXE0MhskNdHDh/I5aCR1Zw==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.15", + "@esbuild/android-arm64": "0.17.15", + "@esbuild/android-x64": "0.17.15", + "@esbuild/darwin-arm64": "0.17.15", + "@esbuild/darwin-x64": "0.17.15", + "@esbuild/freebsd-arm64": "0.17.15", + "@esbuild/freebsd-x64": "0.17.15", + "@esbuild/linux-arm": "0.17.15", + "@esbuild/linux-arm64": "0.17.15", + "@esbuild/linux-ia32": "0.17.15", + "@esbuild/linux-loong64": "0.17.15", + "@esbuild/linux-mips64el": "0.17.15", + "@esbuild/linux-ppc64": "0.17.15", + "@esbuild/linux-riscv64": "0.17.15", + "@esbuild/linux-s390x": "0.17.15", + "@esbuild/linux-x64": "0.17.15", + "@esbuild/netbsd-x64": "0.17.15", + "@esbuild/openbsd-x64": "0.17.15", + "@esbuild/sunos-x64": "0.17.15", + "@esbuild/win32-arm64": "0.17.15", + "@esbuild/win32-ia32": "0.17.15", + "@esbuild/win32-x64": "0.17.15" + } + }, + "node_modules/esbuild-plugin-alias": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/esbuild-plugin-alias/-/esbuild-plugin-alias-0.2.1.tgz", + "integrity": "sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==" + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -2744,6 +3125,27 @@ "eslint": ">=7.0.0" } }, + "node_modules/eslint-formatter-pretty": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-formatter-pretty/-/eslint-formatter-pretty-4.1.0.tgz", + "integrity": "sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==", + "dependencies": { + "@types/eslint": "^7.2.13", + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "eslint-rule-docs": "^1.1.5", + "log-symbols": "^4.0.0", + "plur": "^4.0.0", + "string-width": "^4.2.0", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint-import-resolver-node": { "version": "0.3.7", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", @@ -2958,6 +3360,11 @@ } } }, + "node_modules/eslint-rule-docs": { + "version": "1.1.235", + "resolved": "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.235.tgz", + "integrity": "sha512-+TQ+x4JdTnDoFEXXb3fDvfGOwnyNV7duH8fXWTPD1ieaBmB8omj7Gw/pMBBu4uI2uJCCU8APDaQJzWuXnTsH4A==" + }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -3101,6 +3508,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/esm-loader-typescript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esm-loader-typescript/-/esm-loader-typescript-1.0.4.tgz", + "integrity": "sha512-ejo2f+NKIt23jaJKVpjcRQC0xTa6cTqt6VA+z8Ef/A/TCjQ5u7opPO1J4fJFeTiiHEo8JqU92EG4I1KwuXYZMg==", + "dependencies": { + "create-esm-loader": "^0.2.3", + "npm-run-all": "^4.1.5", + "semver": "^7.3.8", + "typescript": "^5.0.2" + } + }, + "node_modules/esm-loader-typescript/node_modules/typescript": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.3.tgz", + "integrity": "sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=12.20" + } + }, "node_modules/espree": { "version": "9.5.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", @@ -3400,7 +3830,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -3658,8 +4087,7 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/grapheme-splitter": { "version": "1.0.4", @@ -4036,7 +4464,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true, "engines": { "node": ">=6" } @@ -4119,7 +4546,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -4208,7 +4634,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, "engines": { "node": ">=8" } @@ -4264,7 +4689,15 @@ "node": ">= 0.4" } }, - "node_modules/is-array-buffer": { + "node_modules/irregular-plurals": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", + "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-array-buffer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", @@ -4280,8 +4713,7 @@ "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" }, "node_modules/is-bigint": { "version": "1.0.4", @@ -4357,7 +4789,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "engines": { "node": ">=8" } @@ -4427,7 +4858,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -4521,6 +4951,17 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -4795,7 +5236,6 @@ "version": "29.5.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", - "dev": true, "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^29.4.3", @@ -4855,7 +5295,6 @@ "version": "29.4.3", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", - "dev": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -5239,8 +5678,7 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "3.14.1", @@ -5267,11 +5705,15 @@ "node": ">=4" } }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, "node_modules/json-schema-traverse": { "version": "0.4.1", @@ -5299,7 +5741,6 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -5345,14 +5786,46 @@ "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "engines": { + "node": ">=4" + } }, "node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, "dependencies": { "p-locate": "^4.1.0" }, @@ -5383,6 +5856,21 @@ "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "dev": true }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -5437,7 +5925,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true, "engines": { "node": ">=8" }, @@ -5445,11 +5932,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "engines": { + "node": ">= 0.10.0" + } + }, "node_modules/meow": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "dev": true, "dependencies": { "@types/minimist": "^1.2.0", "camelcase-keys": "^6.2.2", @@ -5475,7 +5969,6 @@ "version": "0.18.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true, "engines": { "node": ">=10" }, @@ -5522,7 +6015,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, "engines": { "node": ">=4" } @@ -5550,7 +6042,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, "dependencies": { "arrify": "^1.0.1", "is-plain-obj": "^1.1.0", @@ -5595,6 +6086,11 @@ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, "node_modules/node-domexception": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", @@ -5656,7 +6152,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, "dependencies": { "hosted-git-info": "^4.0.1", "is-core-module": "^2.5.0", @@ -5689,6 +6184,195 @@ "prettier": "^2.8.4" } }, + "node_modules/npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm-run-all/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/npm-run-all/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/npm-run-all/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/npm-run-all/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/npm-run-all/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "node_modules/npm-run-all/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/npm-run-all/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-all/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -5802,7 +6486,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, "dependencies": { "p-try": "^2.0.0" }, @@ -5817,7 +6500,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, "dependencies": { "p-limit": "^2.2.0" }, @@ -5829,7 +6511,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, "engines": { "node": ">=6" } @@ -5849,7 +6530,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -5917,6 +6597,25 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "engines": { + "node": ">=4" + } + }, "node_modules/pirates": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", @@ -5938,6 +6637,20 @@ "node": ">=8" } }, + "node_modules/plur": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/plur/-/plur-4.0.0.tgz", + "integrity": "sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==", + "dependencies": { + "irregular-plurals": "^3.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -5972,11 +6685,30 @@ "node": ">=6.0.0" } }, + "node_modules/prettier-plugin-organize-imports": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-3.2.2.tgz", + "integrity": "sha512-e97lE6odGSiHonHJMTYC0q0iLXQyw0u5z/PJpvP/3vRy6/Zi9kLBwFAbEGjDzIowpjQv8b+J04PDamoUSQbzGA==", + "dev": true, + "peerDependencies": { + "@volar/vue-language-plugin-pug": "^1.0.4", + "@volar/vue-typescript": "^1.0.4", + "prettier": ">=2.0", + "typescript": ">=2.9" + }, + "peerDependenciesMeta": { + "@volar/vue-language-plugin-pug": { + "optional": true + }, + "@volar/vue-typescript": { + "optional": true + } + } + }, "node_modules/pretty-format": { "version": "29.5.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", - "dev": true, "dependencies": { "@jest/schemas": "^29.4.3", "ansi-styles": "^5.0.0", @@ -5990,7 +6722,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, "engines": { "node": ">=10" }, @@ -6067,7 +6798,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true, "engines": { "node": ">=8" } @@ -6075,14 +6805,12 @@ "node_modules/react-is": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, "node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, "dependencies": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", @@ -6097,7 +6825,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, "dependencies": { "find-up": "^4.1.0", "read-pkg": "^5.2.0", @@ -6114,7 +6841,6 @@ "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, "engines": { "node": ">=8" } @@ -6122,14 +6848,12 @@ "node_modules/read-pkg/node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" }, "node_modules/read-pkg/node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -6141,7 +6865,6 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, "bin": { "semver": "bin/semver" } @@ -6150,7 +6873,6 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, "engines": { "node": ">=8" } @@ -6159,7 +6881,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, "dependencies": { "indent-string": "^4.0.0", "strip-indent": "^3.0.0" @@ -6399,6 +7120,14 @@ "node": ">=8" } }, + "node_modules/shell-quote": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", + "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -6472,7 +7201,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -6481,14 +7209,12 @@ "node_modules/spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -6497,8 +7223,7 @@ "node_modules/spdx-license-ids": { "version": "3.0.12", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", - "dev": true + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" }, "node_modules/sprintf-js": { "version": "1.0.3", @@ -6544,7 +7269,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -6554,6 +7278,22 @@ "node": ">=8" } }, + "node_modules/string.prototype.padend": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz", + "integrity": "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/string.prototype.trim": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", @@ -6629,7 +7369,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, "dependencies": { "min-indent": "^1.0.0" }, @@ -6659,6 +7398,18 @@ "node": ">=8" } }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -6775,7 +7526,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true, "engines": { "node": ">=8" } @@ -6862,6 +7612,26 @@ "node": ">=4" } }, + "node_modules/tsd": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/tsd/-/tsd-0.28.1.tgz", + "integrity": "sha512-FeYrfJ05QgEMW/qOukNCr4fAJHww4SaKnivAXRv4g5kj4FeLpNV7zH4dorzB9zAfVX4wmA7zWu/wQf7kkcvfbw==", + "dependencies": { + "@tsd/typescript": "~5.0.2", + "eslint-formatter-pretty": "^4.1.0", + "globby": "^11.0.1", + "jest-diff": "^29.0.3", + "meow": "^9.0.0", + "path-exists": "^4.0.0", + "read-pkg-up": "^7.0.0" + }, + "bin": { + "tsd": "dist/cli.js" + }, + "engines": { + "node": ">=14.16" + } + }, "node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -7053,7 +7823,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -7248,7 +8017,6 @@ "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, "engines": { "node": ">=10" } @@ -7289,7 +8057,6 @@ "version": "7.12.11", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, "requires": { "@babel/highlight": "^7.10.4" } @@ -7490,8 +8257,7 @@ "@babel/helper-validator-identifier": { "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" }, "@babel/helper-validator-option": { "version": "7.21.0", @@ -7514,7 +8280,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", @@ -7525,7 +8290,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -7534,7 +8298,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -7545,7 +8308,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -7553,26 +8315,22 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -7785,6 +8543,138 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "@esbuild/android-arm": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.15.tgz", + "integrity": "sha512-sRSOVlLawAktpMvDyJIkdLI/c/kdRTOqo8t6ImVxg8yT7LQDUYV5Rp2FKeEosLr6ZCja9UjYAzyRSxGteSJPYg==", + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.15.tgz", + "integrity": "sha512-0kOB6Y7Br3KDVgHeg8PRcvfLkq+AccreK///B4Z6fNZGr/tNHX0z2VywCc7PTeWp+bPvjA5WMvNXltHw5QjAIA==", + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.15.tgz", + "integrity": "sha512-MzDqnNajQZ63YkaUWVl9uuhcWyEyh69HGpMIrf+acR4otMkfLJ4sUCxqwbCyPGicE9dVlrysI3lMcDBjGiBBcQ==", + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.15.tgz", + "integrity": "sha512-7siLjBc88Z4+6qkMDxPT2juf2e8SJxmsbNVKFY2ifWCDT72v5YJz9arlvBw5oB4W/e61H1+HDB/jnu8nNg0rLA==", + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.15.tgz", + "integrity": "sha512-NbImBas2rXwYI52BOKTW342Tm3LTeVlaOQ4QPZ7XuWNKiO226DisFk/RyPk3T0CKZkKMuU69yOvlapJEmax7cg==", + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.15.tgz", + "integrity": "sha512-Xk9xMDjBVG6CfgoqlVczHAdJnCs0/oeFOspFap5NkYAmRCT2qTn1vJWA2f419iMtsHSLm+O8B6SLV/HlY5cYKg==", + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.15.tgz", + "integrity": "sha512-3TWAnnEOdclvb2pnfsTWtdwthPfOz7qAfcwDLcfZyGJwm1SRZIMOeB5FODVhnM93mFSPsHB9b/PmxNNbSnd0RQ==", + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.15.tgz", + "integrity": "sha512-MLTgiXWEMAMr8nmS9Gigx43zPRmEfeBfGCwxFQEMgJ5MC53QKajaclW6XDPjwJvhbebv+RzK05TQjvH3/aM4Xw==", + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.15.tgz", + "integrity": "sha512-T0MVnYw9KT6b83/SqyznTs/3Jg2ODWrZfNccg11XjDehIved2oQfrX/wVuev9N936BpMRaTR9I1J0tdGgUgpJA==", + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.15.tgz", + "integrity": "sha512-wp02sHs015T23zsQtU4Cj57WiteiuASHlD7rXjKUyAGYzlOKDAjqK6bk5dMi2QEl/KVOcsjwL36kD+WW7vJt8Q==", + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.15.tgz", + "integrity": "sha512-k7FsUJjGGSxwnBmMh8d7IbObWu+sF/qbwc+xKZkBe/lTAF16RqxRCnNHA7QTd3oS2AfGBAnHlXL67shV5bBThQ==", + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.15.tgz", + "integrity": "sha512-ZLWk6czDdog+Q9kE/Jfbilu24vEe/iW/Sj2d8EVsmiixQ1rM2RKH2n36qfxK4e8tVcaXkvuV3mU5zTZviE+NVQ==", + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.15.tgz", + "integrity": "sha512-mY6dPkIRAiFHRsGfOYZC8Q9rmr8vOBZBme0/j15zFUKM99d4ILY4WpOC7i/LqoY+RE7KaMaSfvY8CqjJtuO4xg==", + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.15.tgz", + "integrity": "sha512-EcyUtxffdDtWjjwIH8sKzpDRLcVtqANooMNASO59y+xmqqRYBBM7xVLQhqF7nksIbm2yHABptoioS9RAbVMWVA==", + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.15.tgz", + "integrity": "sha512-BuS6Jx/ezxFuHxgsfvz7T4g4YlVrmCmg7UAwboeyNNg0OzNzKsIZXpr3Sb/ZREDXWgt48RO4UQRDBxJN3B9Rbg==", + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.15.tgz", + "integrity": "sha512-JsdS0EgEViwuKsw5tiJQo9UdQdUJYuB+Mf6HxtJSPN35vez1hlrNb1KajvKWF5Sa35j17+rW1ECEO9iNrIXbNg==", + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.15.tgz", + "integrity": "sha512-R6fKjtUysYGym6uXf6qyNephVUQAGtf3n2RCsOST/neIwPqRWcnc3ogcielOd6pT+J0RDR1RGcy0ZY7d3uHVLA==", + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.15.tgz", + "integrity": "sha512-mVD4PGc26b8PI60QaPUltYKeSX0wxuy0AltC+WCTFwvKCq2+OgLP4+fFd+hZXzO2xW1HPKcytZBdjqL6FQFa7w==", + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.15.tgz", + "integrity": "sha512-U6tYPovOkw3459t2CBwGcFYfFRjivcJJc1WC8Q3funIwX8x4fP+R6xL/QuTPNGOblbq/EUDxj9GU+dWKX0oWlQ==", + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.15.tgz", + "integrity": "sha512-W+Z5F++wgKAleDABemiyXVnzXgvRFs+GVKThSI+mGgleLWluv0D7Diz4oQpgdpNzh4i2nNDzQtWbjJiqutRp6Q==", + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.15.tgz", + "integrity": "sha512-Muz/+uGgheShKGqSVS1KsHtCyEzcdOn/W/Xbh6H91Etm+wiIfwZaBn1W58MeGtfI8WA961YMHFYTthBdQs4t+w==", + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.15.tgz", + "integrity": "sha512-DjDa9ywLUUmjhV2Y9wUTIF+1XsmuFGvZoCmOWkli1XcNAh5t25cc7fgsCx4Zi/Uurep3TTLyDiKATgGEg61pkA==", + "optional": true + }, "@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -8024,7 +8914,6 @@ "version": "29.4.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", - "dev": true, "requires": { "@sinclair/typebox": "^0.25.16" } @@ -8225,8 +9114,7 @@ "@sinclair/typebox": { "version": "0.25.24", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", - "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", - "dev": true + "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==" }, "@sinonjs/commons": { "version": "2.0.0", @@ -8246,6 +9134,11 @@ "@sinonjs/commons": "^2.0.0" } }, + "@tsd/typescript": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@tsd/typescript/-/typescript-5.0.3.tgz", + "integrity": "sha512-dGYlmePDOyea9ZsHdwZx67e1Al8TkDqLgTNnxkmUXpRMawDo+HyXeJFw3Ee8j6ODqLiuYjH82BKJuzmEDhN62w==" + }, "@types/babel__core": { "version": "7.20.0", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", @@ -8296,6 +9189,20 @@ "@types/ms": "*" } }, + "@types/eslint": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", + "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" + }, "@types/graceful-fs": { "version": "4.1.6", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", @@ -8352,8 +9259,7 @@ "@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" }, "@types/ms": { "version": "0.7.31", @@ -8370,8 +9276,7 @@ "@types/normalize-package-data": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" }, "@types/prettier": { "version": "2.7.2", @@ -8591,7 +9496,6 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, "requires": { "type-fest": "^0.21.3" }, @@ -8599,8 +9503,7 @@ "type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" } } }, @@ -8687,8 +9590,7 @@ "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==" }, "astral-regex": { "version": "2.0.0", @@ -8854,14 +9756,12 @@ "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, "camelcase-keys": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, "requires": { "camelcase": "^5.3.1", "map-obj": "^4.0.0", @@ -8969,6 +9869,14 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, + "create-esm-loader": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/create-esm-loader/-/create-esm-loader-0.2.3.tgz", + "integrity": "sha512-cllzD6IU/mzXBs5OdQVWL3+ne5Elpu3Wdm7h5OldMbGXk76yr9XzHlQXWJ4zfs0ZAibe26rkbs4KvMAJm7fIZA==", + "requires": { + "semver": "^7.3.5" + } + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -9004,14 +9912,12 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" }, "decamelize-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "dev": true, "requires": { "decamelize": "^1.1.0", "map-obj": "^1.0.0" @@ -9020,8 +9926,7 @@ "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==" } } }, @@ -9060,8 +9965,7 @@ "diff-sequences": { "version": "29.4.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", - "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", - "dev": true + "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==" }, "dir-glob": { "version": "3.0.1", @@ -9094,8 +9998,7 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "enquirer": { "version": "2.3.6", @@ -9110,7 +10013,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "requires": { "is-arrayish": "^0.2.1" } @@ -9213,6 +10115,40 @@ "ext": "^1.1.2" } }, + "esbuild": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.15.tgz", + "integrity": "sha512-LBUV2VsUIc/iD9ME75qhT4aJj0r75abCVS0jakhFzOtR7TQsqQA5w0tZ+KTKnwl3kXE0MhskNdHDh/I5aCR1Zw==", + "requires": { + "@esbuild/android-arm": "0.17.15", + "@esbuild/android-arm64": "0.17.15", + "@esbuild/android-x64": "0.17.15", + "@esbuild/darwin-arm64": "0.17.15", + "@esbuild/darwin-x64": "0.17.15", + "@esbuild/freebsd-arm64": "0.17.15", + "@esbuild/freebsd-x64": "0.17.15", + "@esbuild/linux-arm": "0.17.15", + "@esbuild/linux-arm64": "0.17.15", + "@esbuild/linux-ia32": "0.17.15", + "@esbuild/linux-loong64": "0.17.15", + "@esbuild/linux-mips64el": "0.17.15", + "@esbuild/linux-ppc64": "0.17.15", + "@esbuild/linux-riscv64": "0.17.15", + "@esbuild/linux-s390x": "0.17.15", + "@esbuild/linux-x64": "0.17.15", + "@esbuild/netbsd-x64": "0.17.15", + "@esbuild/openbsd-x64": "0.17.15", + "@esbuild/sunos-x64": "0.17.15", + "@esbuild/win32-arm64": "0.17.15", + "@esbuild/win32-ia32": "0.17.15", + "@esbuild/win32-x64": "0.17.15" + } + }, + "esbuild-plugin-alias": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/esbuild-plugin-alias/-/esbuild-plugin-alias-0.2.1.tgz", + "integrity": "sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==" + }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -9339,6 +10275,21 @@ "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", "requires": {} }, + "eslint-formatter-pretty": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-formatter-pretty/-/eslint-formatter-pretty-4.1.0.tgz", + "integrity": "sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==", + "requires": { + "@types/eslint": "^7.2.13", + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "eslint-rule-docs": "^1.1.5", + "log-symbols": "^4.0.0", + "plur": "^4.0.0", + "string-width": "^4.2.0", + "supports-hyperlinks": "^2.0.0" + } + }, "eslint-import-resolver-node": { "version": "0.3.7", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", @@ -9495,6 +10446,11 @@ "prettier-linter-helpers": "^1.0.0" } }, + "eslint-rule-docs": { + "version": "1.1.235", + "resolved": "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.235.tgz", + "integrity": "sha512-+TQ+x4JdTnDoFEXXb3fDvfGOwnyNV7duH8fXWTPD1ieaBmB8omj7Gw/pMBBu4uI2uJCCU8APDaQJzWuXnTsH4A==" + }, "eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -9526,6 +10482,24 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==" }, + "esm-loader-typescript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esm-loader-typescript/-/esm-loader-typescript-1.0.4.tgz", + "integrity": "sha512-ejo2f+NKIt23jaJKVpjcRQC0xTa6cTqt6VA+z8Ef/A/TCjQ5u7opPO1J4fJFeTiiHEo8JqU92EG4I1KwuXYZMg==", + "requires": { + "create-esm-loader": "^0.2.3", + "npm-run-all": "^4.1.5", + "semver": "^7.3.8", + "typescript": "^5.0.2" + }, + "dependencies": { + "typescript": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.3.tgz", + "integrity": "sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==" + } + } + }, "espree": { "version": "9.5.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", @@ -9755,7 +10729,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, "requires": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -9934,8 +10907,7 @@ "graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "grapheme-splitter": { "version": "1.0.4", @@ -10195,8 +11167,7 @@ "hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==" }, "has": { "version": "1.0.3", @@ -10246,7 +11217,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, "requires": { "lru-cache": "^6.0.0" } @@ -10304,8 +11274,7 @@ "indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" }, "inflight": { "version": "1.0.6", @@ -10352,6 +11321,11 @@ "side-channel": "^1.0.4" } }, + "irregular-plurals": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", + "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==" + }, "is-array-buffer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", @@ -10365,8 +11339,7 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" }, "is-bigint": { "version": "1.0.4", @@ -10414,8 +11387,7 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-generator-fn": { "version": "2.1.0", @@ -10457,8 +11429,7 @@ "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==" }, "is-regex": { "version": "1.1.4", @@ -10516,6 +11487,11 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" + }, "is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -10714,7 +11690,6 @@ "version": "29.5.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", - "dev": true, "requires": { "chalk": "^4.0.0", "diff-sequences": "^29.4.3", @@ -10761,8 +11736,7 @@ "jest-get-type": { "version": "29.4.3", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", - "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", - "dev": true + "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==" }, "jest-haste-map": { "version": "29.5.0", @@ -11069,8 +12043,7 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { "version": "3.14.1", @@ -11088,11 +12061,15 @@ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, "json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, "json-schema-traverse": { "version": "0.4.1", @@ -11113,8 +12090,7 @@ "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" }, "kleur": { "version": "3.0.3", @@ -11148,14 +12124,39 @@ "lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" + } + } }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, "requires": { "p-locate": "^4.1.0" } @@ -11183,6 +12184,15 @@ "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "dev": true }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -11226,14 +12236,17 @@ "map-obj": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==" + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==" }, "meow": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "dev": true, "requires": { "@types/minimist": "^1.2.0", "camelcase-keys": "^6.2.2", @@ -11252,8 +12265,7 @@ "type-fest": { "version": "0.18.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==" } } }, @@ -11286,8 +12298,7 @@ "min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" }, "minimatch": { "version": "3.1.2", @@ -11306,7 +12317,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, "requires": { "arrify": "^1.0.1", "is-plain-obj": "^1.1.0", @@ -11345,6 +12355,11 @@ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, "node-domexception": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", @@ -11381,7 +12396,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, "requires": { "hosted-git-info": "^4.0.1", "is-core-module": "^2.5.0", @@ -11408,6 +12422,150 @@ "prettier": "^2.8.4" } }, + "npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "requires": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "requires": { + "pify": "^3.0.0" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -11488,7 +12646,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, "requires": { "p-try": "^2.0.0" } @@ -11497,7 +12654,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, "requires": { "p-limit": "^2.2.0" } @@ -11505,8 +12661,7 @@ "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, "parent-module": { "version": "1.0.1", @@ -11520,7 +12675,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -11564,6 +12718,16 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, + "pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==" + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" + }, "pirates": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", @@ -11579,6 +12743,14 @@ "find-up": "^4.0.0" } }, + "plur": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/plur/-/plur-4.0.0.tgz", + "integrity": "sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==", + "requires": { + "irregular-plurals": "^3.2.0" + } + }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -11598,11 +12770,17 @@ "fast-diff": "^1.1.2" } }, + "prettier-plugin-organize-imports": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-3.2.2.tgz", + "integrity": "sha512-e97lE6odGSiHonHJMTYC0q0iLXQyw0u5z/PJpvP/3vRy6/Zi9kLBwFAbEGjDzIowpjQv8b+J04PDamoUSQbzGA==", + "dev": true, + "requires": {} + }, "pretty-format": { "version": "29.5.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", - "dev": true, "requires": { "@jest/schemas": "^29.4.3", "ansi-styles": "^5.0.0", @@ -11612,8 +12790,7 @@ "ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" } } }, @@ -11652,20 +12829,17 @@ "quick-lru": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==" }, "react-is": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, "read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, "requires": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", @@ -11676,14 +12850,12 @@ "hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, "requires": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -11694,14 +12866,12 @@ "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, "type-fest": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" } } }, @@ -11709,7 +12879,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, "requires": { "find-up": "^4.1.0", "read-pkg": "^5.2.0", @@ -11719,8 +12888,7 @@ "type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" } } }, @@ -11728,7 +12896,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, "requires": { "indent-string": "^4.0.0", "strip-indent": "^3.0.0" @@ -11883,6 +13050,11 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, + "shell-quote": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", + "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==" + }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -11941,7 +13113,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -11950,14 +13121,12 @@ "spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" }, "spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, "requires": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -11966,8 +13135,7 @@ "spdx-license-ids": { "version": "3.0.12", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", - "dev": true + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" }, "sprintf-js": { "version": "1.0.3", @@ -12006,13 +13174,22 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, + "string.prototype.padend": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz", + "integrity": "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, "string.prototype.trim": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", @@ -12067,7 +13244,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, "requires": { "min-indent": "^1.0.0" } @@ -12085,6 +13261,15 @@ "has-flag": "^4.0.0" } }, + "supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + } + }, "supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -12177,8 +13362,7 @@ "trim-newlines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==" }, "ts-jest": { "version": "29.1.0", @@ -12230,6 +13414,20 @@ } } }, + "tsd": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/tsd/-/tsd-0.28.1.tgz", + "integrity": "sha512-FeYrfJ05QgEMW/qOukNCr4fAJHww4SaKnivAXRv4g5kj4FeLpNV7zH4dorzB9zAfVX4wmA7zWu/wQf7kkcvfbw==", + "requires": { + "@tsd/typescript": "~5.0.2", + "eslint-formatter-pretty": "^4.1.0", + "globby": "^11.0.1", + "jest-diff": "^29.0.3", + "meow": "^9.0.0", + "path-exists": "^4.0.0", + "read-pkg-up": "^7.0.0" + } + }, "tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -12366,7 +13564,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, "requires": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -12531,8 +13728,7 @@ "yargs-parser": { "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" }, "yocto-queue": { "version": "0.1.0", diff --git a/package.json b/package.json index 474f4729..78049281 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.14", + "version": "0.0.15", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "repository": { @@ -41,6 +41,7 @@ "@types/node": "^14.11.2", "gts": "^3.1.1", "jest": "^29.5.0", + "prettier-plugin-organize-imports": "^3.2.2", "ts-jest": "^29.1.0", "typescript": "~4.7.0" }, diff --git a/src/index.ts b/src/index.ts index 8cbc50b8..4baca69b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -37,7 +37,7 @@ export default class NDK extends EventEmitter { public cacheAdapter?: NDKCacheAdapter; public debug: debug.Debugger; - public constructor(opts: NDKConstructorParams) { + public constructor(opts: NDKConstructorParams = {}) { super(); if (opts.explicitRelayUrls) diff --git a/src/light-bolt11-decoder.d.ts b/src/light-bolt11-decoder.d.ts index 5b18b343..522c2b57 100644 --- a/src/light-bolt11-decoder.d.ts +++ b/src/light-bolt11-decoder.d.ts @@ -1,3 +1,3 @@ declare module 'light-bolt11-decoder' { - function decode(paymentRequest: string): any; -} + export function decode(bolt11: string): any; +} \ No newline at end of file diff --git a/src/user/follows.test.ts b/src/user/follows.test.ts new file mode 100644 index 00000000..20a595f4 --- /dev/null +++ b/src/user/follows.test.ts @@ -0,0 +1,41 @@ +import NDK from '../index'; +import NDKUser from './index'; +import NDKEvent from '../events/index'; + +jest.mock('../index.js', () => { + return { + __esModule: true, + default: jest.fn().mockImplementation(() => { + return { + fetchEvents: jest.fn(), + }; + }), + }; +}); + +describe('follows', () => { + it('skips tags on the contact list with invalid pubkeys', async () => { + const ndk = new NDK(); + const user = new NDKUser({ hexpubkey: 'fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52' }); + user.ndk = ndk; + + const followedHexpubkey = 'fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52'; + + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + (user.ndk!.fetchEvents as jest.Mock).mockImplementation(() => { + const e = new NDKEvent(ndk); + e.tags = [['p', 'invalid-pubkey']]; + e.tags = [['p', followedHexpubkey]]; + return new Set([e]); + }); + + const followedUsers = await user.follows(); + expect(followedUsers.size).toBe(1); + + for (const followedUser of followedUsers) { + expect(followedUser).toBeInstanceOf(NDKUser); + expect(followedUser.hexpubkey()).toBe(followedHexpubkey); + expect(followedUser.ndk).toBe(user.ndk); + } + }); +}); diff --git a/src/user/follows.ts b/src/user/follows.ts new file mode 100644 index 00000000..a0d26fef --- /dev/null +++ b/src/user/follows.ts @@ -0,0 +1,30 @@ +import NDKUser from './index.js'; + +export async function follows(this: NDKUser): Promise> { + if (!this.ndk) throw new Error('NDK not set'); + + const contactListEvents = await this.ndk.fetchEvents({ + kinds: [3], + authors: [this.hexpubkey()], + }); + + if (contactListEvents) { + const contactList = new Set(); + + contactListEvents.forEach(event => { + event.tags.forEach((tag: string[]) => { + if (tag[0] === 'p') { + try { + const user = new NDKUser({hexpubkey: tag[1]}); + user.ndk = this.ndk; + contactList.add(user); + } catch (e) { /* empty */ } + } + }); + }); + + return contactList; + } + + return new Set(); +} diff --git a/src/user/index.test.ts b/src/user/index.test.ts new file mode 100644 index 00000000..60129499 --- /dev/null +++ b/src/user/index.test.ts @@ -0,0 +1,70 @@ +import {nip05, nip19} from 'nostr-tools'; +import NDKUser, {NDKUserParams} from './index.js'; + +jest.mock('nostr-tools', () => ({ + nip05: { + queryProfile: jest.fn(), + }, + nip19: { + npubEncode: jest.fn(), + decode: jest.fn(), + }, +})); + +jest.mock('../index.js', () => ({ + fetchEvents: jest.fn(), +})); + +describe('NDKUser', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + describe('constructor', () => { + it('sets npub from provided npub', () => { + const opts: NDKUserParams = { + npub: 'npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft', + }; + + const user = new NDKUser(opts); + + expect(user.npub).toEqual('npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft'); + }); + + it('sets npub from provided hexpubkey', () => { + const opts: NDKUserParams = { + hexpubkey: 'fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52', + }; + + (nip19.npubEncode as jest.Mock).mockReturnValue('encoded_npub'); + + const user = new NDKUser(opts); + + expect(nip19.npubEncode).toHaveBeenCalledWith('fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52'); + expect(user.npub).toEqual('encoded_npub'); + }); + + it('sets relayUrls from provided relayUrls', () => { + const opts: NDKUserParams = { + relayUrls: ['url1', 'url2'], + }; + + const user = new NDKUser(opts); + + expect(user.relayUrls).toEqual(['url1', 'url2']); + }); + }); + + describe('hexpubkey', () => { + it('returns the decoded hexpubkey', () => { + const user = new NDKUser({npub: 'npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft'}); + + (nip19.decode as jest.Mock).mockReturnValue({data: 'decoded_hexpubkey'}); + + const hexpubkey = user.hexpubkey(); + + expect(nip19.decode).toHaveBeenCalledWith('npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft'); + expect(hexpubkey).toEqual('decoded_hexpubkey'); + }); + }); +}); \ No newline at end of file diff --git a/src/user/index.ts b/src/user/index.ts index cbd5c68c..ce1d7dfb 100644 --- a/src/user/index.ts +++ b/src/user/index.ts @@ -2,6 +2,7 @@ import {nip05, nip19} from 'nostr-tools'; import Event from '../events/index.js'; import {NDKUserProfile, mergeEvent} from './profile'; import NDK from '../index.js'; +import { follows } from './follows.js'; export interface NDKUserParams { npub?: string; @@ -73,32 +74,7 @@ export default class NDKUser { /** * Returns a set of users that this user follows. */ - public async follows(): Promise> { - if (!this.ndk) throw new Error('NDK not set'); - - const contactListEvents = await this.ndk.fetchEvents({ - kinds: [3], - authors: [this.hexpubkey()], - }); - - if (contactListEvents) { - const contactList = new Set(); - - contactListEvents.forEach(event => { - event.tags.forEach((tag: string[]) => { - if (tag[0] === 'p') { - const user = new NDKUser({hexpubkey: tag[1]}); - user.ndk = this.ndk; - contactList.add(user); - } - }); - }); - - return contactList; - } - - return new Set(); - } + public follows = follows.bind(this); public async relayList(): Promise> { if (!this.ndk) throw new Error('NDK not set'); diff --git a/src/zap/invoice.ts b/src/zap/invoice.ts index fd123fe5..a02482be 100644 --- a/src/zap/invoice.ts +++ b/src/zap/invoice.ts @@ -1,5 +1,5 @@ import NDKEvent, {type NDKEventId, type NostrEvent} from '../events/index.js'; -import lightningPayReq from 'light-bolt11-decoder'; +import {decode} from 'light-bolt11-decoder'; export interface NDKZapInvoice { id?: NDKEventId; @@ -29,7 +29,7 @@ export function zapInvoiceFromEvent(event: NDKEvent): NDKZapInvoice | null { if (zapRequestPayload === "") { return null; } zapRequest = JSON.parse(zapRequestPayload); - decodedInvoice = lightningPayReq.decode(bolt11[1]); + decodedInvoice = decode(bolt11[1]); } catch (e) { // console.log(e, {description, event}); return null; From 8a109fbeddd0be6658e475936144095dd8378f82 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Wed, 5 Apr 2023 00:22:21 +0300 Subject: [PATCH 018/773] allow any number to be a kind --- package.json | 2 +- src/events/index.ts | 4 ++-- src/events/kind.ts | 20 ++++++++++++++++++++ src/index.ts | 1 + 4 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 src/events/kind.ts diff --git a/package.json b/package.json index 78049281..4729d480 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.15", + "version": "0.0.16", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "repository": { diff --git a/src/events/index.ts b/src/events/index.ts index 2a1a3028..a7d988ac 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -3,17 +3,17 @@ import EventEmitter from "eventemitter3"; import NDK from "../index.js"; import Zap from '../zap/index.js'; import { generateContentTags } from "./content-tagger.js"; +import { NDKKind } from "./kind.js"; export type NDKEventId = string; export type NDKTag = string[]; -export type NDKKind = Kind; export type NostrEvent = { created_at: number; content: string; subject?: string; tags: NDKTag[]; - kind?: NDKKind; + kind?: NDKKind | number; pubkey: string; id?: string; sig?: string; diff --git a/src/events/kind.ts b/src/events/kind.ts new file mode 100644 index 00000000..40420bf3 --- /dev/null +++ b/src/events/kind.ts @@ -0,0 +1,20 @@ +export declare enum NDKKind { + Metadata = 0, + Text = 1, + RecommendRelay = 2, + Contacts = 3, + EncryptedDirectMessage = 4, + EventDeletion = 5, + Reaction = 7, + ChannelCreation = 40, + ChannelMetadata = 41, + ChannelMessage = 42, + ChannelHideMessage = 43, + ChannelMuteUser = 44, + Report = 1984, + ZapRequest = 9734, + Zap = 9735, + RelayList = 10002, + ClientAuth = 22242, + Article = 30023 +} \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 4baca69b..a454def9 100644 --- a/src/index.ts +++ b/src/index.ts @@ -17,6 +17,7 @@ export { NDKCacheAdapter, NDKSubscription }; +export {NDKKind} from './events/kind.js'; export {NDKNip07Signer} from './signers/nip07/index.js'; export {NDKZapInvoice, zapInvoiceFromEvent} from './zap/invoice.js'; From 001f9fd348da2342f6ec00bb9ee4028d20f76285 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Wed, 5 Apr 2023 01:31:44 +0300 Subject: [PATCH 019/773] generate random id for new NIP-33s --- package.json | 2 +- src/events/index.ts | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 4729d480..e4eb44c7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.16", + "version": "0.0.17", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "repository": { diff --git a/src/events/index.ts b/src/events/index.ts index a7d988ac..1dd0ccbb 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -106,8 +106,10 @@ export default class Event extends EventEmitter { // if this is a paramterized repleacable event, check if there's a d tag, if not, generate it if (this.kind && this.kind >= 30000 && this.kind <= 40000) { const dTag = this.getMatchingTags('d')[0]; + // generate a string of 32 random bytes if (!dTag) { - this.tags.push(['d', ""]); + const str = [...Array(16)].map(() => Math.random().toString(36)[2]).join(''); + this.tags.push(['d', str]); } } From d4fbfdb162b2a739a9fba426bc5d559e0c519041 Mon Sep 17 00:00:00 2001 From: Jeff Gardner <202880+erskingardner@users.noreply.github.com> Date: Wed, 5 Apr 2023 11:36:19 +0100 Subject: [PATCH 020/773] Update Readme to reflect current state of development --- .prettierrc.json | 6 +- README.md | 297 ++++++++++++++++++++++++++++++----------------- 2 files changed, 195 insertions(+), 108 deletions(-) diff --git a/.prettierrc.json b/.prettierrc.json index ace5cc88..6f05d0f7 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -1,9 +1,11 @@ { - "importOrder": ["^[./]"], + "importOrder": [ + "^[./]" + ], "tabWidth": 4, "useTabs": false, "trailingComma": "none", "printWidth": 100, "singleQuote": false, "semi": true -} \ No newline at end of file +} diff --git a/README.md b/README.md index 02743745..74a7f247 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,10 @@ # NDK -NDK is a development kit that seeks to make the experience of building Nostr-related applications, whether +NDK is a Nostr development kit that makes the experience of building Nostr-related applications, whether they are relays, clients, or anything in between, better, more reliable and overall nicer to work with than existing solutions. -Behind the scenes, NDK seeks to do work to increase the decentralizing tendencies of nostr tooling, so there -is a lot of emphasis in it's goal designs to bridge the gap of user, notes, tags, relays discoverability without -depending on any one central point of coordination (such as large relays) +Besides improving the developer experience, the core goal of NDK is to improve the decentralization of Nostr via intelligent conventions and data discovery features without depending on any one central point of coordination (such as large relays or centralized search providers). ## Installation @@ -16,115 +14,175 @@ npm add @nostr-dev-kit/ndk ## Support -[NDK NIP-28 group chat](https://app.coracle.social/chat/note15m6rdfvlmd0z836hk83sg7r59xtv23qnmamhsslq5uc6744fdm4qfkeat3) +- [NDK NIP-28 group chat](https://app.coracle.social/chat/note15m6rdfvlmd0z836hk83sg7r59xtv23qnmamhsslq5uc6744fdm4qfkeat3) (Note, Coracle is the only client so far that has implemented NIP-28 group chat.) ## Features -- [x] NIP-01 -- [x] Caching adapters - * Server-side - - [x] [Redis](https://github.com/pablof7z/ndk-cache-redis) - - [ ] In-memory - * Client-side - - [ ] LocalStorage - - [ ] IndexDB -- [ ] NIP-26: Event delegation -- [ ] NIP-41: Relay authentication -- [x] NIP-57: Zaps - - [x] LUD06 - - [x] LUD16 -- [ ] NIP-65: Contacts' Relay list -* Subscription Management - - [ ] Buffered queries - - [x] Auto-closing subscriptions -- * Signing Adapters - - [x] Private key - - [x] NIP-07 - - [ ] NIP-26 - - [ ] NIP-46 -- [ ] Relay discovery - - [ ] gossip-model (NIP-65) - - [ ] implicit relays discovery following pubkey usage - - [ ] implicit relays discovery following `t` tag usage - - [ ] explicit relays blacklist -- [ ] nostr-tools/SimplePool drop-in replacement interface + +- [x] NIP-01 +- [x] Caching adapters + - Server-side + - [x] [Redis](https://github.com/pablof7z/ndk-cache-redis) + - [ ] In-memory + - Client-side + - [ ] LocalStorage + - [ ] IndexDB +- [ ] NIP-26: Event delegation +- [ ] NIP-41: Relay authentication +- [x] NIP-57: Zaps + - [x] LUD06 + - [x] LUD16 +- [ ] NIP-65: Contacts' Relay list + +* Subscription Management + - [ ] Buffered queries + - [x] Auto-closing subscriptions + +- - Signing Adapters + - [x] Private key + - [x] NIP-07 + - [ ] NIP-26 + - [ ] NIP-46 +- [ ] Relay discovery + - [ ] Gossip-model (NIP-65) + - [ ] Implicit relays discovery following pubkey usage + - [ ] Implicit relays discovery following `t` tag usage + - [ ] Explicit relays blacklist +- [ ] nostr-tools/SimplePool drop-in replacement interface + +## Instantiate an NDK instance + +You can pass an object with several options to a newly created instance of NDK. + +- `explicitRelayUrls` – an array of relay URLs. +- `signer` - an instance of a [signer](#signers). +- `cacheAdapter` - an instance of a [Cache Adapter](#caching) +- `debug` - boolean true/false to turn on degbugging + +```ts +// Create a new NDK instance with explicit relays +ndk = new NDK({ explicitRelayUrls: ["wss://a.relay", "wss://another.relay"] }); +``` + +Note: In normal client use, it's best practice to instantiate NDK as a singleton class. [See more below](#architecture). + +## Connecting + +After you've instatiated NDK, you need to tell it to connect before you'll be able to interact with any relays. + +```ts +// Create a new NDK instance with explicit relays +ndk = new NDK({ explicitRelayUrls: ["wss://a.relay", "wss://another.relay"] }); + +// Now connect to specified relays +await ndk.connect(); +``` ## Signers -NDK uses signers *optionally* passed in to sign events. Note that it is possible to use NDK without signing events -(e.g. [to get someone's profile](https://github.com/nostr-dev-kit/ndk-cli/blob/master/src/commands/profile.ts)). -Signer adapters can be passed in when NDK is instantiated or later during runtime. +NDK uses signers _optionally_ passed in to sign events. Note that it is possible to use NDK without signing events (e.g. [to get someone's profile](https://github.com/nostr-dev-kit/ndk-cli/blob/master/src/commands/profile.ts)). + +Signing adapters can be passed in when NDK is instantiated or later during runtime. + +### Using a NIP-07 browser extension (e.g. Alby, nos2x) + +Instatiate NDK with a NIP-07 signer -### Using a NIP-07 browser extension (e.g. getalby, nos2x) ```ts const nip07signer = new NDKNip07Signer(); const ndk = new NDK({ signer: nip07signer }); ``` -Now NDK can sign events using your users' NIP-07 extension. +NDK can now ask for permission, via their NIP-07 extension, to... + +**Read the user's public key** + +```ts +signer.user().then(async (user) => { + if (!!user.npub) { + console.log("Permission granted to read their public key."); + } +}); +``` + +**Sign & publish events** ```ts const ndkEvent = new NDKEvent(ndk); ndkEvent.kind = 1; -ndkEvent.content = 'Hello, world!'; -ndkEvent.publish(); +ndkEvent.content = "Hello, world!"; +ndkEvent.publish(); // This will trigger the extension to ask the user to confirm signing. ``` + + ## Caching -NDK provides out-of-the-box database-agnostic caching functionality to improve the -performance of applications. -### Cached items -The most important data to cache is *where* a user or note might be found. UX suffers profoundly when this type of data cannot be found. The nostr protocol leaves beadcrums of where a user or note might be. +NDK provides database-agnostic caching functionality out-of-the-box to improve the performance of your application and reduce load on relays. + +NDK will eventually allow you to use multiple caches simultaneously and allow for selective storage of data in the cache store that makes the most sense for your application. + +### Where to look is more important that long-term storage + +The most important data to cache is _where_ a user or note might be found. UX suffers profoundly when this type of data cannot be found. By design, the Nostr protocol leaves beadcrums of where a user or note might be found and NDK does it's best to store this data automatically and use it when you query for events. + +### Instantiating and using a cache adapter ```ts -const redisAdapter = new RedisAdapter(redisUrl) -const ndk = new NDK({ cacheAdapter: redisAdapter }) +const redisAdapter = new RedisAdapter(redisUrl); +const ndk = new NDK({ cacheAdapter: redisAdapter }); ``` -## Buffered queries -Clients often need to load data (e.g. profile data) from individual components at -once (e.g. initial page render). This typically causes multiple subscriptions to -be submitted fetching the same information and causing poor performance or getting -rate-limited/maxed out by relays. +## Buffered queries (COMING SOON) -NDK implements a convenient subscription model, *buffered queries*, where a named -subscription will be created after a customizable amount of time, so that multiple -components can append queries. +Clients often need to load data (e.g. profile data) from individual components at once (e.g. initial page render). This typically causes multiple subscriptions to be submitted fetching the same information and causing poor performance or getting rate-limited/maxed out by relays. + +NDK implements a convenient subscription model, _buffered queries_, where a named subscription will be created after a customizable amount of time, so that multiple components can append queries. ```ts // Component 1 -ndk.bufferedSubscription({ kinds: [0], authors: ['pubkey-1'] }, "profiles", 500); +ndk.bufferedSubscription({ kinds: [0], authors: ["pubkey-1"] }, "profiles", 500); // Component 2 -ndk.bufferedSubscription({ kinds: [0], authors: ['pubkey-2'] }, "profiles", 500); +ndk.bufferedSubscription({ kinds: [0], authors: ["pubkey-2"] }, "profiles", 500); +``` -// after 500ms of the first call, a subscription will be created with filter -// { kinds: [0], authors: [ 'pubkey-1', 'pubkey-2' ]} +In this example, NDK will wait 500ms before creating a subscription with the filter: + +```ts +{kinds: [0], authors: ['pubkey-1', 'pubkey-2'] } ``` ## Intelligent relay selection -When a client submits a request through NDK, NDK will calculate which relays are -most likely able to satisfy this request. -Queries submitted by the client might be broken into different queries if NDK -computes different relays. +When a client submits a request through NDK, NDK will calculate which relays are most likely able to satisfy this request. -For example, say npub-A follows npub-B and npub-C. If the NDK client uses +Queries submitted by the client might be broken into different queries if NDK computes different relays. + +For example, say npub-A follows npub-B and npub-C. If the NDK client uses: ```ts -const ndk = new NDK({ explicitRelays: ['wss://nos.lol'] }) -const npubA = ndk.getUser('npub-A'); +const ndk = new NDK({ explicitRelays: ["wss://nos.lol"] }); +const npubA = ndk.getUser("npub-A"); const feedEvents = await npubA.feed(); ``` This would result in the following request: ```json -{ "kinds": [1], "authors": [ "npub-B", "npub-C" ] } +{ "kinds": [1], "authors": ["npub-B", "npub-C"] } ``` But if NDK has observed that `npub-B` tends to write to `wss://userb.xyz` and -`npub-C` tends to write to `wss://userc.io`, NDK will send the following queries. +`npub-C` tends to write to `wss://userc.io`, NDK will instead send the following queries. ```json // to npub-A's explicit relay wss://nos.lol *if* npub-B and npub-C have been seen on that relay @@ -138,69 +196,96 @@ But if NDK has observed that `npub-B` tends to write to `wss://userb.xyz` and ``` ## Auto-closing subscriptions -Often clients want to fetch data but they don't necessarily need to occupy a connection -to the relay. -The `autoclose` flag will make the connection close immediately after EOSE is seen. -An integer `autoclose` will close the connection after that amount of ms after EOSE is seen. +Often, clients need to fetch data but don't need to maintain an open connection to the relay. This is true of profile metadata requests especially. + +- The `autoclose` flag will make the connection close immediately after EOSE is seen. +- An integer `autoclose` will close the connection after that amount of ms after EOSE is seen. ```ts -ndk.subscription({kinds:[0], authors:['...']}, { autoclose: true }) +ndk.subscription({ kinds: [0], authors: ["..."] }, { autoclose: true }); ``` -## Convenience classes +## Convenience methods -```ts -const ndk = new NDK({ explicitRelays, privateKey }); -const pablo = ndk.getProfile('npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft') -``` +NDK implements several conveience methods for common queries. + +### Instantiate a user by npub or hex pubkey + +This is a handy method for instantiating a new `NDKUser` and associating the current NDK instance with that user for future calls. -### Convenience classes provide access to construct events ```ts -const pablo = await ndk.getProfile('npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft') -pablo.name = 'Pablo'; -await pablo.publish(); // autosigns +const pablo = ndk.getUser({ + npub: "npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft" +}); + +const jeff = ndk.getUser({ + hexpubkey: "1739d937dc8c0c7370aa27585938c119e25c41f6c441a5d34c6d38503e3136ef" +}); ``` -### Creating events +### Fetch a user's profile and publish updates + +You can easily fetch a user's profile data from `kind: 0` events on relays. Calling `.fetchProfile()` will update the `profile` attribute on the user object instead of returning the profile directly. NDK then makes it trivial to update values and publish those updates back to relays. + ```ts -const ndk = new NDK({ explicitRelays, signer }) -const event = new NDKEvent() -event.kind = 1; -event.content = "This is cool, I'm going to autotag @jack@cashapp.com" -await ndk.publish(event) +const pablo = ndk.getUser({ + npub: "npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft" +}); +await pablo.fetchProfile(); + +const pabloFullProfile = pablo.profile; + +pablo.profile.name = "Pablo"; +// COMING SOON +await pablo.publish(); // Triggers signing via signer ``` -### Liking someone's event +### Finding a single event or all events matching a filter + +You can fetch the first event or all events that match a given set of filters. + ```ts -const event = await ndk.events({ author: 'jack@cashapp.com' })[0] -await event.react('🤙') // signs and publishes +// Create a filter +const filter: NDKFilter = { kinds: [1], authors: [hexpubkey1, hexpubkey2] }; + +// Will return only the first event +event = await ndk.fetchEvent(filter); + +// Will return all found events +events = await ndk.fetchEvents(filter); ``` -* Provides access to see status +### Creating & publishing events -### Signing Events via NIP-46 ```ts -const signingAdapter = new NDK.RemoteSignerAdapter() -const ndk = new NDK({ signingAdapter }) -const event = ndk.event() -event.kind = 0; -event.content = "This event is signed via NIP-46." -await event.publish() +const ndk = new NDK({ explicitRelays, signer }); +const event = new NDKEvent(); +event.kind = 1; +event.content = "PV Nostr! 🤙🏼"; +await ndk.publish(event); ``` +### Reacting to (Liking) an event ```ts -const zap = +// Find the first event from @jack, and react/like it. +const event = await ndk.events({ author: "jack@cashapp.com" })[0]; +await event.react("🤙"); ``` -# Architecture -Users of NDK should instantiate a single NDK instance. +### Zap an event -That instance tracks state with all relays connected, explicit and otherwise. - -All relays are tracked in a single pool that handles connection errors/reconnection logic. +```ts +// Find the first event from @jack, and zap it. +const event = await ndk.events({ author: "jack@cashapp.com" })[0]; +await event.zap(1337, "Zapping your post!"); // Returns a zap request +``` -RelaySets are assembled ad-hoc as needed depending on the queries set, although some RelaySets might be long-lasting, like the `explicitRelays` specified by the user. +## Architecture decisions & suggestions -RelaySets are always a subset of the pool of all available relays. +- Users of NDK should instantiate a single NDK instance. +- That instance tracks state with all relays connected, explicit and otherwise. +- All relays are tracked in a single pool that handles connection errors/reconnection logic. +- RelaySets are assembled ad-hoc as needed depending on the queries set, although some RelaySets might be long-lasting, like the `explicitRelays` specified by the user. +- RelaySets are always a subset of the pool of all available relays. From 814b399306038b0397b3dc1a61a509d87a28a5b2 Mon Sep 17 00:00:00 2001 From: Jeff Gardner <202880+erskingardner@users.noreply.github.com> Date: Wed, 5 Apr 2023 11:38:55 +0100 Subject: [PATCH 021/773] Remove line breaks in readme --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 74a7f247..2dd28cf5 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,6 @@ # NDK -NDK is a Nostr development kit that makes the experience of building Nostr-related applications, whether -they are relays, clients, or anything in between, better, more reliable and overall nicer to work with than -existing solutions. +NDK is a Nostr development kit that makes the experience of building Nostr-related applications, whether they are relays, clients, or anything in between, better, more reliable and overall nicer to work with than existing solutions. Besides improving the developer experience, the core goal of NDK is to improve the decentralization of Nostr via intelligent conventions and data discovery features without depending on any one central point of coordination (such as large relays or centralized search providers). From ad3f2b3276d6445468903a7cd0aaaa0a9f2fe018 Mon Sep 17 00:00:00 2001 From: Jeff Gardner <202880+erskingardner@users.noreply.github.com> Date: Wed, 5 Apr 2023 12:49:39 +0200 Subject: [PATCH 022/773] Update README.md Remove "Liking" from reactions Co-authored-by: Pablo Fernandez --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2dd28cf5..2a6898b9 100644 --- a/README.md +++ b/README.md @@ -264,7 +264,7 @@ event.content = "PV Nostr! 🤙🏼"; await ndk.publish(event); ``` -### Reacting to (Liking) an event +### Reacting to an event ```ts // Find the first event from @jack, and react/like it. From 8d0df38a2eba2faef1a5341122451fe73b0be68a Mon Sep 17 00:00:00 2001 From: Jeff Gardner <202880+erskingardner@users.noreply.github.com> Date: Wed, 5 Apr 2023 12:21:29 +0100 Subject: [PATCH 023/773] Adding other known kinds --- src/events/kind.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/events/kind.ts b/src/events/kind.ts index 40420bf3..e1cee04c 100644 --- a/src/events/kind.ts +++ b/src/events/kind.ts @@ -5,7 +5,9 @@ export declare enum NDKKind { Contacts = 3, EncryptedDirectMessage = 4, EventDeletion = 5, + Repost = 6, Reaction = 7, + BadgeAward = 8, ChannelCreation = 40, ChannelMetadata = 41, ChannelMessage = 42, @@ -14,7 +16,15 @@ export declare enum NDKKind { Report = 1984, ZapRequest = 9734, Zap = 9735, + MuteList = 10000, + PinList = 10001, RelayList = 10002, ClientAuth = 22242, - Article = 30023 -} \ No newline at end of file + NostrConnect = 24133, + CategorizedPeopleList = 30000, + CategorizedBookmarkList = 30001, + ProfileBadge = 30008, + BadgeDefinition = 30009, + Article = 30023, + AppSpecificData = 30078 +} From 1342eb2e4266d2ba480c6361e27b9b5b9eda7dac Mon Sep 17 00:00:00 2001 From: pablof7z Date: Wed, 5 Apr 2023 15:32:43 +0300 Subject: [PATCH 024/773] add tagReference to NDKEvent closes: #10 --- package.json | 2 +- src/events/index.test.ts | 48 ++++++++++++++++++++++++++++++++++++++++ src/events/index.ts | 25 +++++++++++++++++++-- 3 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 src/events/index.test.ts diff --git a/package.json b/package.json index e4eb44c7..14d74b20 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.17", + "version": "0.0.19", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "repository": { diff --git a/src/events/index.test.ts b/src/events/index.test.ts new file mode 100644 index 00000000..6f06b353 --- /dev/null +++ b/src/events/index.test.ts @@ -0,0 +1,48 @@ +import NDK from "../index"; +import NDKEvent from "./index"; + +describe("NDKEvent", () => { + let ndk: NDK; + let event: NDKEvent; + + beforeEach(() => { + ndk = new NDK(); + event = new NDKEvent(ndk); + }); + + describe("toNostrEvent", () => { + it("returns a NostrEvent object", async () => { + const nostrEvent = await event.toNostrEvent(); + expect(nostrEvent).toHaveProperty("created_at"); + expect(nostrEvent).toHaveProperty("content"); + expect(nostrEvent).toHaveProperty("tags"); + expect(nostrEvent).toHaveProperty("kind"); + expect(nostrEvent).toHaveProperty("pubkey"); + expect(nostrEvent).toHaveProperty("id"); + }); + }); + + describe("tagReference", () => { + it("returns the correct tag for referencing the event", () => { + const event1 = new NDKEvent(ndk, { + created_at: Date.now()/1000, + content: "", + kind: 30000, + pubkey: "pubkey", + tags: [["d", "d-code"]], + }); + + const event2 = new NDKEvent(ndk, { + created_at: Date.now()/1000, + content: "", + tags: [], + kind: 1, + pubkey: "pubkey", + id: "eventid", + }); + + expect(event1.tagReference()).toEqual(["d", "30000:pubkey:d-code"]); + expect(event2.tagReference()).toEqual(["e", "eventid"]); + }); + }); +}); diff --git a/src/events/index.ts b/src/events/index.ts index 1dd0ccbb..cff38ddb 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -1,4 +1,4 @@ -import { getEventHash, Kind, UnsignedEvent } from "nostr-tools"; +import { getEventHash, UnsignedEvent } from "nostr-tools"; import EventEmitter from "eventemitter3"; import NDK from "../index.js"; import Zap from '../zap/index.js'; @@ -19,7 +19,7 @@ export type NostrEvent = { sig?: string; }; -export default class Event extends EventEmitter { +export default class NDKEvent extends EventEmitter { public ndk?: NDK; public created_at?: number; public content = ''; @@ -122,6 +122,27 @@ export default class Event extends EventEmitter { this.tags = tags; } + /** + * Get the tag that can be used to reference this event from another event + * @example + * event = new NDKEvent(ndk, { kind: 30000, pubkey: 'pubkey', tags: [ ["d", "d-code"] ] }); + * event.tagReference(); // ["a", "30000:pubkey:d-code"] + * + * event = new NDKEvent(ndk, { kind: 1, pubkey: 'pubkey', id: "eventid" }); + * event.tagReference(); // ["e", "eventid"] + */ + tagReference() { + // NIP-33 + if (this.kind && this.kind >= 30000 && this.kind <= 40000) { + const dTag = this.getMatchingTags('d')[0]; + const dTagId = dTag ? dTag[1] : ''; + + return ["d", `${this.kind}:${this.pubkey}:${dTagId}`]; + } + + return ["e", this.id]; + } + /** * Create a zap request for an existing event */ From a54664cbe67b2353ffe04ab10c3f38b07534ac74 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Wed, 5 Apr 2023 15:56:09 +0300 Subject: [PATCH 025/773] properly tag with "a" NIP-33 events --- package.json | 2 +- src/events/index.test.ts | 4 ++-- src/events/index.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 14d74b20..42b91601 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.19", + "version": "0.0.21", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "repository": { diff --git a/src/events/index.test.ts b/src/events/index.test.ts index 6f06b353..78616e64 100644 --- a/src/events/index.test.ts +++ b/src/events/index.test.ts @@ -29,7 +29,7 @@ describe("NDKEvent", () => { content: "", kind: 30000, pubkey: "pubkey", - tags: [["d", "d-code"]], + tags: [["e", "d-code"]], }); const event2 = new NDKEvent(ndk, { @@ -41,7 +41,7 @@ describe("NDKEvent", () => { id: "eventid", }); - expect(event1.tagReference()).toEqual(["d", "30000:pubkey:d-code"]); + expect(event1.tagReference()).toEqual(["a", "30000:pubkey:d-code"]); expect(event2.tagReference()).toEqual(["e", "eventid"]); }); }); diff --git a/src/events/index.ts b/src/events/index.ts index cff38ddb..c38f4764 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -137,7 +137,7 @@ export default class NDKEvent extends EventEmitter { const dTag = this.getMatchingTags('d')[0]; const dTagId = dTag ? dTag[1] : ''; - return ["d", `${this.kind}:${this.pubkey}:${dTagId}`]; + return ["a", `${this.kind}:${this.pubkey}:${dTagId}`]; } return ["e", this.id]; From ce0ebb4790f8df303c1adcb75d74dc5239355ae1 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Wed, 5 Apr 2023 19:00:09 +0300 Subject: [PATCH 026/773] dedup events --- package.json | 2 +- src/events/dedup.ts | 14 ++++++++++++++ src/events/index.test.ts | 33 ++++++++++++++++++++++++++++++--- src/events/index.ts | 26 +++++++++++++++++--------- src/index.ts | 12 +++++++++--- src/relay/sets/index.ts | 8 +++----- src/user/index.ts | 4 +++- 7 files changed, 77 insertions(+), 22 deletions(-) create mode 100644 src/events/dedup.ts diff --git a/package.json b/package.json index 42b91601..ae98e453 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.21", + "version": "0.0.22", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "repository": { diff --git a/src/events/dedup.ts b/src/events/dedup.ts new file mode 100644 index 00000000..4c963108 --- /dev/null +++ b/src/events/dedup.ts @@ -0,0 +1,14 @@ +import {NDKEvent} from '../index.js'; + +/** + * Receives two events and returns the "correct" event to use. + * #nip-33 + */ +export default function dedup(event1: NDKEvent, event2: NDKEvent) { + // return the newest of the two + if (event1.created_at! > event2.created_at!) { + return event1; + } + + return event2; +} \ No newline at end of file diff --git a/src/events/index.test.ts b/src/events/index.test.ts index 78616e64..1ad144b8 100644 --- a/src/events/index.test.ts +++ b/src/events/index.test.ts @@ -1,5 +1,5 @@ -import NDK from "../index"; -import NDKEvent from "./index"; +import NDK, { NDKEvent, NDKSubscription } from "../index"; +import EventEmitter from "eventemitter3"; describe("NDKEvent", () => { let ndk: NDK; @@ -10,6 +10,33 @@ describe("NDKEvent", () => { event = new NDKEvent(ndk); }); + describe("fetchEvents", () => { + it("correctly handles a relay sending old replaced events", async () => { + const eventData = { kind: 300001, tags: [ ["d", "" ] ], content: "", pubkey: ""}; + const event1 = new NDKEvent(ndk, { ...eventData, created_at: (Date.now()/1000)-3600 }); + const event2 = new NDKEvent(ndk, { ...eventData, created_at: (Date.now()/1000) }); + + ndk.subscribe = jest.fn((filter, opts?): NDKSubscription => { + const sub = new NDKSubscription(ndk, filter, opts); + + setTimeout(() => { + sub.emit('event', event1); + sub.emit('event', event2); + sub.emit('eose'); + }, 100); + + return sub; + }); + + const events = await ndk.fetchEvents({ kinds: [30001] }); + + expect(events.size).toBe(1); + const dedupedEvent = events.values().next().value; + + expect(dedupedEvent).toEqual(event2); + }); + }); + describe("toNostrEvent", () => { it("returns a NostrEvent object", async () => { const nostrEvent = await event.toNostrEvent(); @@ -29,7 +56,7 @@ describe("NDKEvent", () => { content: "", kind: 30000, pubkey: "pubkey", - tags: [["e", "d-code"]], + tags: [["d", "d-code"]], }); const event2 = new NDKEvent(ndk, { diff --git a/src/events/index.ts b/src/events/index.ts index c38f4764..fc60d415 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -29,7 +29,6 @@ export default class NDKEvent extends EventEmitter { public id = ""; public sig?: string; public pubkey = ''; - public _event?: NostrEvent; constructor(ndk?: NDK, event?: NostrEvent) { super(); @@ -42,12 +41,9 @@ export default class NDKEvent extends EventEmitter { this.sig = event?.sig; this.pubkey = event?.pubkey || ''; if (event?.kind) this.kind = event?.kind; - this._event = event; } async toNostrEvent(pubkey?: string): Promise { - if (this._event) return this._event; - if (!pubkey) { const user = await this.ndk?.signer?.user(); pubkey = user?.hexpubkey(); @@ -122,6 +118,21 @@ export default class NDKEvent extends EventEmitter { this.tags = tags; } + /** + * @returns the id of the event, or if it's a parameterized event, the id of the event with the d tag + */ + tagId() { + // NIP-33 + if (this.kind && this.kind >= 30000 && this.kind <= 40000) { + const dTag = this.getMatchingTags('d')[0]; + const dTagId = dTag ? dTag[1] : ''; + + return `${this.kind}:${this.pubkey}:${dTagId}`; + } + + return this.id; + } + /** * Get the tag that can be used to reference this event from another event * @example @@ -134,13 +145,10 @@ export default class NDKEvent extends EventEmitter { tagReference() { // NIP-33 if (this.kind && this.kind >= 30000 && this.kind <= 40000) { - const dTag = this.getMatchingTags('d')[0]; - const dTagId = dTag ? dTag[1] : ''; - - return ["a", `${this.kind}:${this.pubkey}:${dTagId}`]; + return ["a", this.tagId()]; } - return ["e", this.id]; + return ["e", this.tagId()]; } /** diff --git a/src/index.ts b/src/index.ts index a454def9..b372699e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -6,6 +6,7 @@ import {NDKUserProfile} from './user/profile.js'; import {NDKFilter, NDKFilterOptions, NDKSubscription, NDKSubscriptionOptions} from './subscription/index.js'; import { NDKCacheAdapter } from './cache/index.js'; import { calculateRelaySetFromEvent } from './relay/sets/calculate.js'; +import dedupEvent from './events/dedup.js'; import EventEmitter from 'eventemitter3'; import debug from 'debug'; @@ -105,16 +106,21 @@ export default class NDK extends EventEmitter { */ public async fetchEvents(filter: NDKFilter, opts?: NDKFilterOptions): Promise> { return new Promise(resolve => { - const events: Set = new Set(); + const events: Map = new Map(); const relaySetSubscription = this.subscribe(filter, {closeOnEose: true}); relaySetSubscription.on('event', (event: NDKEvent) => { + const existingEvent = events.get(event.tagId()); + if (existingEvent) { + event = dedupEvent(existingEvent, event); + } + event.ndk = this; - events.add(event); + events.set(event.tagId(), event); }); relaySetSubscription.on('eose', () => { - resolve(events); + resolve(new Set(events.values())); }); }); } diff --git a/src/relay/sets/index.ts b/src/relay/sets/index.ts index b670fe74..940e8ee1 100644 --- a/src/relay/sets/index.ts +++ b/src/relay/sets/index.ts @@ -1,5 +1,5 @@ import {NDKRelay} from '../index.js'; -import Event from '../../events/index.js'; +import NDKEvent from '../../events/index.js'; import {NDKSubscription} from '../../subscription/index.js'; /** @@ -28,15 +28,13 @@ export class NDKRelaySet { return subscription; } - public async publish(event: Event): Promise { + public async publish(event: NDKEvent): Promise { this.relays.forEach(async relay => { try { // TODO: if relay is not connected, don't try to send, but rather attach // to `connected` event and send it at that moment await relay.publish(event); - } catch (e) { - console.log(e); - } + } catch (e) {} }); } diff --git a/src/user/index.ts b/src/user/index.ts index ce1d7dfb..370ccc3e 100644 --- a/src/user/index.ts +++ b/src/user/index.ts @@ -64,7 +64,9 @@ export default class NDKUser { ); sortedSetMetadataEvents.forEach(event => { - this.profile = mergeEvent(event, this.profile!); + try { + this.profile = mergeEvent(event, this.profile!); + } catch (e) {} }); } From e2af72c06acd6a08e594d28a72451f90a797a719 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Thu, 6 Apr 2023 13:44:34 +0300 Subject: [PATCH 027/773] support encoding naddr --- package.json | 1 - src/events/index.ts | 7 +++++++ src/events/kind.ts | 18 ++++++++++++++++++ src/events/nip19.ts | 12 ++++++++++++ 4 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 src/events/nip19.ts diff --git a/package.json b/package.json index ae98e453..18664c67 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,6 @@ "author": "pablof7z", "license": "MIT", "devDependencies": { - "@jest/globals": "^29.5.0", "@types/debug": "^4.1.7", "@types/jest": "^29.5.0", "@types/node": "^14.11.2", diff --git a/src/events/index.ts b/src/events/index.ts index fc60d415..0033b2b9 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -4,6 +4,9 @@ import NDK from "../index.js"; import Zap from '../zap/index.js'; import { generateContentTags } from "./content-tagger.js"; import { NDKKind } from "./kind.js"; +import { isParamReplaceable, isReplaceable } from "./kind.js"; +import { encode } from "./nip19.js"; +import { type } from "os"; export type NDKEventId = string; export type NDKTag = string[]; @@ -72,6 +75,10 @@ export default class NDKEvent extends EventEmitter { return nostrEvent; } + public isReplaceable = isReplaceable.bind(this); + public isParamReplaceable = isParamReplaceable.bind(this); + public encode = encode.bind(this); + /** * Get all tags with the given name */ diff --git a/src/events/kind.ts b/src/events/kind.ts index e1cee04c..ffce6a55 100644 --- a/src/events/kind.ts +++ b/src/events/kind.ts @@ -1,3 +1,5 @@ +import NDKEvent from './index.js'; + export declare enum NDKKind { Metadata = 0, Text = 1, @@ -28,3 +30,19 @@ export declare enum NDKKind { Article = 30023, AppSpecificData = 30078 } + +export function isReplaceable(this: NDKEvent): boolean { + if (!this.kind) throw new Error('Kind not set'); + return ( + this.kind >= 10000 && + this.kind <= 30000 + ); +} + +export function isParamReplaceable(this: NDKEvent): boolean { + if (!this.kind) throw new Error('Kind not set'); + return ( + this.kind >= 30000 && + this.kind <= 40000 + ); +} \ No newline at end of file diff --git a/src/events/nip19.ts b/src/events/nip19.ts new file mode 100644 index 00000000..ab27cfbe --- /dev/null +++ b/src/events/nip19.ts @@ -0,0 +1,12 @@ +import { nip19 } from 'nostr-tools'; +import NDKEvent from '.'; + +export function encode(this: NDKEvent) { + if (this.isParamReplaceable()) { + return nip19.naddrEncode({ + kind: this.kind as number, + pubkey: this.pubkey, + identifier: this.tagId() + }); + } +} \ No newline at end of file From e2bfa268e285f5b20532b15f6652f648cd904515 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Thu, 6 Apr 2023 19:45:04 +0300 Subject: [PATCH 028/773] fix replaceable event d tag generation --- package.json | 2 +- src/events/index.ts | 21 +++++++++++---------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 18664c67..8e076fed 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.22", + "version": "0.0.23", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "repository": { diff --git a/src/events/index.ts b/src/events/index.ts index 0033b2b9..8b1ee99a 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -6,7 +6,6 @@ import { generateContentTags } from "./content-tagger.js"; import { NDKKind } from "./kind.js"; import { isParamReplaceable, isReplaceable } from "./kind.js"; import { encode } from "./nip19.js"; -import { type } from "os"; export type NDKEventId = string; export type NDKTag = string[]; @@ -28,7 +27,7 @@ export default class NDKEvent extends EventEmitter { public content = ''; public subject: string | undefined; public tags: NDKTag[] = []; - public kind?: NDKKind; + public kind?: NDKKind | number; public id = ""; public sig?: string; public pubkey = ''; @@ -106,23 +105,25 @@ export default class NDKEvent extends EventEmitter { } private async generateTags() { + // don't autogenerate if there currently are tags + if (this.tags.length > 0) { + const { content, tags } = generateContentTags(this.content, this.tags); + this.content = content; + this.tags = tags; + } + // if this is a paramterized repleacable event, check if there's a d tag, if not, generate it if (this.kind && this.kind >= 30000 && this.kind <= 40000) { const dTag = this.getMatchingTags('d')[0]; // generate a string of 32 random bytes if (!dTag) { + console.log('generating d tag', this) const str = [...Array(16)].map(() => Math.random().toString(36)[2]).join(''); this.tags.push(['d', str]); + } else { + console.log('d tag already exists', this.tags); } } - - // don't autogenerate if there currently are tags - if (this.tags.length > 0) return; - - // split content in words - const { content, tags } = generateContentTags(this.content, this.tags); - this.content = content; - this.tags = tags; } /** From f71a03c915ab2f2044df080d89cfc70ffd9edf26 Mon Sep 17 00:00:00 2001 From: Fryheid <80047487+fryheid@users.noreply.github.com> Date: Fri, 7 Apr 2023 11:39:46 +0200 Subject: [PATCH 029/773] Added import statements to examples --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 2a6898b9..96436d0d 100644 --- a/README.md +++ b/README.md @@ -57,6 +57,8 @@ You can pass an object with several options to a newly created instance of NDK. - `debug` - boolean true/false to turn on degbugging ```ts +// Import the package +import NDK from "@nostr-dev-kit/ndk"; // Create a new NDK instance with explicit relays ndk = new NDK({ explicitRelayUrls: ["wss://a.relay", "wss://another.relay"] }); ``` @@ -68,6 +70,8 @@ Note: In normal client use, it's best practice to instantiate NDK as a singleton After you've instatiated NDK, you need to tell it to connect before you'll be able to interact with any relays. ```ts +// Import the package +import NDK from "@nostr-dev-kit/ndk"; // Create a new NDK instance with explicit relays ndk = new NDK({ explicitRelayUrls: ["wss://a.relay", "wss://another.relay"] }); @@ -86,6 +90,9 @@ Signing adapters can be passed in when NDK is instantiated or later during runti Instatiate NDK with a NIP-07 signer ```ts +// Import the package, NIP-07 signer and NDK event +import NDK, { NDKNip07Signer, NDKEvent } from "@nostr-dev-kit/ndk"; + const nip07signer = new NDKNip07Signer(); const ndk = new NDK({ signer: nip07signer }); ``` From bbc99060773067be3770d086705d162f0ab56453 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Fri, 7 Apr 2023 13:36:42 +0300 Subject: [PATCH 030/773] optional timeout for initial connection --- README.md | 71 +++++++++++++++++++++-------------------- package.json | 2 +- src/index.ts | 23 +++++++------ src/relay/pool/index.ts | 43 ++++++++++++++++++++++--- 4 files changed, 89 insertions(+), 50 deletions(-) diff --git a/README.md b/README.md index 96436d0d..ca943964 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # NDK +drawing + NDK is a Nostr development kit that makes the experience of building Nostr-related applications, whether they are relays, clients, or anything in between, better, more reliable and overall nicer to work with than existing solutions. Besides improving the developer experience, the core goal of NDK is to improve the decentralization of Nostr via intelligent conventions and data discovery features without depending on any one central point of coordination (such as large relays or centralized search providers). @@ -12,40 +14,41 @@ npm add @nostr-dev-kit/ndk ## Support -- [NDK NIP-28 group chat](https://app.coracle.social/chat/note15m6rdfvlmd0z836hk83sg7r59xtv23qnmamhsslq5uc6744fdm4qfkeat3) (Note, Coracle is the only client so far that has implemented NIP-28 group chat.) +### NDK NIP-28 group chat + * note15m6rdfvlmd0z836hk83sg7r59xtv23qnmamhsslq5uc6744fdm4qfkeat3 + * [Coracle](https://app.coracle.social/chat/note15m6rdfvlmd0z836hk83sg7r59xtv23qnmamhsslq5uc6744fdm4qfkeat3) + * [Nostrchat](https://www.nostrchat.io/channel/a6f436a59fdb5e23c757b1e30478742996c54413df777843e0a731af56a96eea) ## Features -- [x] NIP-01 -- [x] Caching adapters - - Server-side - - [x] [Redis](https://github.com/pablof7z/ndk-cache-redis) - - [ ] In-memory - - Client-side - - [ ] LocalStorage - - [ ] IndexDB -- [ ] NIP-26: Event delegation -- [ ] NIP-41: Relay authentication -- [x] NIP-57: Zaps - - [x] LUD06 - - [x] LUD16 -- [ ] NIP-65: Contacts' Relay list - -* Subscription Management - - [ ] Buffered queries - - [x] Auto-closing subscriptions - -- - Signing Adapters - - [x] Private key - - [x] NIP-07 - - [ ] NIP-26 - - [ ] NIP-46 -- [ ] Relay discovery - - [ ] Gossip-model (NIP-65) - - [ ] Implicit relays discovery following pubkey usage - - [ ] Implicit relays discovery following `t` tag usage - - [ ] Explicit relays blacklist -- [ ] nostr-tools/SimplePool drop-in replacement interface +- [x] NIP-01 +- [x] Caching adapters + * Server-side + - [x] [Redis](https://github.com/pablof7z/ndk-cache-redis) + - [ ] In-memory + * Client-side + - [ ] LocalStorage + - [ ] IndexDB +- [ ] NIP-26: Event delegation +- [ ] NIP-41: Relay authentication +- [x] NIP-57: Zaps + - [x] LUD06 + - [x] LUD16 +- [ ] NIP-65: Contacts' Relay list +- Subscription Management + - [ ] Buffered queries + - [x] Auto-closing subscriptions +- Signing Adapters + - [x] Private key + - [x] NIP-07 + - [ ] NIP-26 + - [ ] NIP-46 +- Relay discovery + - [ ] Gossip-model (NIP-65) + - [ ] Implicit relays discovery following pubkey usage + - [ ] Implicit relays discovery following `t` tag usage + - [ ] Explicit relays blacklist +- [ ] nostr-tools/SimplePool drop-in replacement interface ## Instantiate an NDK instance @@ -265,7 +268,7 @@ events = await ndk.fetchEvents(filter); ```ts const ndk = new NDK({ explicitRelays, signer }); -const event = new NDKEvent(); +const event = new NDKEvent(ndk); event.kind = 1; event.content = "PV Nostr! 🤙🏼"; await ndk.publish(event); @@ -275,7 +278,7 @@ await ndk.publish(event); ```ts // Find the first event from @jack, and react/like it. -const event = await ndk.events({ author: "jack@cashapp.com" })[0]; +const event = await ndk.fetchEvent({ author: "jack@cashapp.com" })[0]; await event.react("🤙"); ``` @@ -283,7 +286,7 @@ await event.react("🤙"); ```ts // Find the first event from @jack, and zap it. -const event = await ndk.events({ author: "jack@cashapp.com" })[0]; +const event = await ndk.fetchEvent({ author: "jack@cashapp.com" })[0]; await event.zap(1337, "Zapping your post!"); // Returns a zap request ``` diff --git a/package.json b/package.json index 8e076fed..5a3c2c25 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.23", + "version": "0.0.24", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "repository": { diff --git a/src/index.ts b/src/index.ts index b372699e..17f98b44 100644 --- a/src/index.ts +++ b/src/index.ts @@ -34,7 +34,7 @@ export interface GetUserParams extends NDKUserParams { } export default class NDK extends EventEmitter { - public relayPool?: NDKPool; + public relayPool: NDKPool; public signer?: NDKSigner; public cacheAdapter?: NDKCacheAdapter; public debug: debug.Debugger; @@ -42,11 +42,10 @@ export default class NDK extends EventEmitter { public constructor(opts: NDKConstructorParams = {}) { super(); - if (opts.explicitRelayUrls) - this.relayPool = new NDKPool(opts.explicitRelayUrls); + this.debug = opts.debug || debug('ndk'); + this.relayPool = new NDKPool(opts.explicitRelayUrls||[], this); this.signer = opts.signer; this.cacheAdapter = opts.cacheAdapter; - this.debug = opts.debug || debug('ndk'); this.debug('initialized', { relays: opts.explicitRelayUrls, @@ -55,9 +54,13 @@ export default class NDK extends EventEmitter { }); } - public async connect(): Promise { + /** + * Connect to relays with optional timeout. + * If the timeout is reached, the connection will be continued to be established in the background. + */ + public async connect(timeoutMs?: number): Promise { this.debug('Connecting to relays'); - return this.relayPool?.connect(); + return this.relayPool.connect(timeoutMs); } /** @@ -91,9 +94,9 @@ export default class NDK extends EventEmitter { /** * Fetch a single event */ - public async fetchEvent(filter: NDKFilter): Promise { + public async fetchEvent(filter: NDKFilter, opts: NDKFilterOptions = {}): Promise { return new Promise(resolve => { - const s = this.subscribe(filter, {closeOnEose: true}); + const s = this.subscribe(filter, {...opts, closeOnEose: true}); s.on('event', event => { event.ndk = this; resolve(event); @@ -104,11 +107,11 @@ export default class NDK extends EventEmitter { /** * Fetch events */ - public async fetchEvents(filter: NDKFilter, opts?: NDKFilterOptions): Promise> { + public async fetchEvents(filter: NDKFilter, opts: NDKFilterOptions = {}): Promise> { return new Promise(resolve => { const events: Map = new Map(); - const relaySetSubscription = this.subscribe(filter, {closeOnEose: true}); + const relaySetSubscription = this.subscribe(filter, {...opts, closeOnEose: true}); relaySetSubscription.on('event', (event: NDKEvent) => { const existingEvent = events.get(event.tagId()); diff --git a/src/relay/pool/index.ts b/src/relay/pool/index.ts index c2ce1d6b..2f58d607 100644 --- a/src/relay/pool/index.ts +++ b/src/relay/pool/index.ts @@ -1,10 +1,14 @@ import EventEmitter from 'eventemitter3'; import {NDKRelay} from '../index.js'; +import NDK from '../../index.js'; export class NDKPool extends EventEmitter { public relays = new Map(); - public constructor(relayUrls: string[] = []) { + private debug: debug.Debugger; + + public constructor(relayUrls: string[] = [], ndk: NDK) { super(); + this.debug = ndk.debug.extend('pool'); relayUrls.forEach(relayUrl => { const relay = new NDKRelay(relayUrl); relay.on('notice', (relay, notice) => { @@ -14,14 +18,43 @@ export class NDKPool extends EventEmitter { }); } - public async connect(): Promise { + /** + * Attempts to establish a connection to each relay in the pool. + * + * @async + * @param {number} [timeoutMs] - Optional timeout in milliseconds for each connection attempt. + * @returns {Promise} A promise that resolves when all connection attempts have completed. + * @throws {Error} If any of the connection attempts result in an error or timeout. + */ + public async connect(timeoutMs?: number): Promise { const promises: Promise[] = []; - this.relays.forEach(relay => { - promises.push(relay.connect()); - }); + + this.debug(`Connecting to ${this.relays.size} relays${timeoutMs ? `, timeout ${timeoutMs}...` : ''}`); + + for (const relay of this.relays.values()) { + if (timeoutMs) { + const timeoutPromise = new Promise((_, reject) => { + setTimeout(() => reject(`Timed out after ${timeoutMs}ms`), timeoutMs); + }); + + promises.push( + Promise.race([ + relay.connect(), + timeoutPromise, + ]).catch((e) => { + console.log(`Failed to connect to relay ${relay.url}: ${e}`); + }) + ); + } else { + promises.push(relay.connect()); + } + } + await Promise.all(promises); } + + public size(): number { return this.relays.size; } From ca80fef47064347451f7e2524c561c1268f59b49 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Fri, 7 Apr 2023 14:18:10 +0300 Subject: [PATCH 031/773] emit an event when a duplicate is receive --- src/events/index.ts | 3 --- src/relay/pool/index.ts | 2 +- src/subscription/index.ts | 31 ++++++++++++++++++++++++++----- src/zap/invoice.ts | 1 - 4 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/events/index.ts b/src/events/index.ts index 8b1ee99a..18e7c29f 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -117,11 +117,8 @@ export default class NDKEvent extends EventEmitter { const dTag = this.getMatchingTags('d')[0]; // generate a string of 32 random bytes if (!dTag) { - console.log('generating d tag', this) const str = [...Array(16)].map(() => Math.random().toString(36)[2]).join(''); this.tags.push(['d', str]); - } else { - console.log('d tag already exists', this.tags); } } } diff --git a/src/relay/pool/index.ts b/src/relay/pool/index.ts index 2f58d607..4be5d0cf 100644 --- a/src/relay/pool/index.ts +++ b/src/relay/pool/index.ts @@ -42,7 +42,7 @@ export class NDKPool extends EventEmitter { relay.connect(), timeoutPromise, ]).catch((e) => { - console.log(`Failed to connect to relay ${relay.url}: ${e}`); + this.debug(`Failed to connect to relay ${relay.url}: ${e}`); }) ); } else { diff --git a/src/subscription/index.ts b/src/subscription/index.ts index 50b918af..e65f830c 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -32,6 +32,22 @@ export enum NDKSubscriptionCacheUsage { ONLY_RELAY = 'ONLY_RELAY', } +/** + * Represents a subscription to an NDK event stream. + * + * @event NDKSubscription#event + * Emitted when an event is received by the subscription. + * @param {NDKEvent} event - The event received by the subscription. + * @param {NDKRelay} relay - The relay that received the event. + * + * @event NDKSubscription#event:dup + * Emitted when a duplicate event is received by the subscription. + * @param {NDKEvent} event - The duplicate event received by the subscription. + * @param {NDKRelay} relay - The relay that received the event. + * @param {number} timeSinceFirstSeen - The time elapsed since the first time the event was seen. + * + * @event NDKSubscription#eose - Emitted when all relays have reached the end of the event stream. + */ export class NDKSubscription extends EventEmitter { readonly subId: string; readonly filter: NDKFilter; @@ -144,16 +160,21 @@ export class NDKSubscription extends EventEmitter { private eventFirstSeen = new Map(); private events = new Map(); + /** + * Called when an event is received from a relay or the cache + * @param event + * @param relay + * @param fromCache Whether the event was received from the cache + */ public eventReceived(event: NDKEvent, relay: NDKRelay | undefined, fromCache = false) { if (!fromCache && relay) { const eventAlreadySeen = this.events.has(event.id); if (eventAlreadySeen) { - if (this.eventFirstSeen.get(event.id)) { - const timeSinceFirstSeen = - Date.now() - (this.eventFirstSeen.get(event.id) || 0); - relay.scoreSlowerEvent(timeSinceFirstSeen); - } + const timeSinceFirstSeen = Date.now() - (this.eventFirstSeen.get(event.id) || 0); + relay.scoreSlowerEvent(timeSinceFirstSeen); + + this.emit('event:dup', event, relay, timeSinceFirstSeen); return; } diff --git a/src/zap/invoice.ts b/src/zap/invoice.ts index a02482be..f956464a 100644 --- a/src/zap/invoice.ts +++ b/src/zap/invoice.ts @@ -31,7 +31,6 @@ export function zapInvoiceFromEvent(event: NDKEvent): NDKZapInvoice | null { zapRequest = JSON.parse(zapRequestPayload); decodedInvoice = decode(bolt11[1]); } catch (e) { - // console.log(e, {description, event}); return null; } From 7519b25ae41d45915c84076f876b3fc2a7365870 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Fri, 7 Apr 2023 14:22:14 +0300 Subject: [PATCH 032/773] docs --- docs/.nojekyll | 1 + docs/README.md | 301 +++++++++++++++++++ docs/classes/NDKEvent.md | 373 ++++++++++++++++++++++++ docs/classes/NDKNip07Signer.md | 104 +++++++ docs/classes/NDKSubscription.md | 205 +++++++++++++ docs/classes/NDKUser.md | 170 +++++++++++ docs/classes/default.md | 240 +++++++++++++++ docs/enums/NDKKind.md | 316 ++++++++++++++++++++ docs/interfaces/GetUserParams.md | 74 +++++ docs/interfaces/NDKCacheAdapter.md | 69 +++++ docs/interfaces/NDKConstructorParams.md | 52 ++++ docs/interfaces/NDKUserProfile.md | 118 ++++++++ docs/interfaces/NDKZapInvoice.md | 85 ++++++ docs/modules.md | 66 +++++ package.json | 5 +- typedoc.json | 11 + 16 files changed, 2189 insertions(+), 1 deletion(-) create mode 100644 docs/.nojekyll create mode 100644 docs/README.md create mode 100644 docs/classes/NDKEvent.md create mode 100644 docs/classes/NDKNip07Signer.md create mode 100644 docs/classes/NDKSubscription.md create mode 100644 docs/classes/NDKUser.md create mode 100644 docs/classes/default.md create mode 100644 docs/enums/NDKKind.md create mode 100644 docs/interfaces/GetUserParams.md create mode 100644 docs/interfaces/NDKCacheAdapter.md create mode 100644 docs/interfaces/NDKConstructorParams.md create mode 100644 docs/interfaces/NDKUserProfile.md create mode 100644 docs/interfaces/NDKZapInvoice.md create mode 100644 docs/modules.md create mode 100644 typedoc.json diff --git a/docs/.nojekyll b/docs/.nojekyll new file mode 100644 index 00000000..e2ac6616 --- /dev/null +++ b/docs/.nojekyll @@ -0,0 +1 @@ +TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false. \ No newline at end of file diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 00000000..91083ba8 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,301 @@ +NDK / [Exports](modules.md) + +# NDK + +drawing + +NDK is a Nostr development kit that makes the experience of building Nostr-related applications, whether they are relays, clients, or anything in between, better, more reliable and overall nicer to work with than existing solutions. + +Besides improving the developer experience, the core goal of NDK is to improve the decentralization of Nostr via intelligent conventions and data discovery features without depending on any one central point of coordination (such as large relays or centralized search providers). + +## Installation + +```sh +npm add @nostr-dev-kit/ndk +``` + +## Support + +### NDK NIP-28 group chat + * note15m6rdfvlmd0z836hk83sg7r59xtv23qnmamhsslq5uc6744fdm4qfkeat3 + * [Coracle](https://app.coracle.social/chat/note15m6rdfvlmd0z836hk83sg7r59xtv23qnmamhsslq5uc6744fdm4qfkeat3) + * [Nostrchat](https://www.nostrchat.io/channel/a6f436a59fdb5e23c757b1e30478742996c54413df777843e0a731af56a96eea) + +## Features + +- [x] NIP-01 +- [x] Caching adapters + * Server-side + - [x] [Redis](https://github.com/pablof7z/ndk-cache-redis) + - [ ] In-memory + * Client-side + - [ ] LocalStorage + - [ ] IndexDB +- [ ] NIP-26: Event delegation +- [ ] NIP-41: Relay authentication +- [x] NIP-57: Zaps + - [x] LUD06 + - [x] LUD16 +- [ ] NIP-65: Contacts' Relay list +- Subscription Management + - [ ] Buffered queries + - [x] Auto-closing subscriptions +- Signing Adapters + - [x] Private key + - [x] NIP-07 + - [ ] NIP-26 + - [ ] NIP-46 +- Relay discovery + - [ ] Gossip-model (NIP-65) + - [ ] Implicit relays discovery following pubkey usage + - [ ] Implicit relays discovery following `t` tag usage + - [ ] Explicit relays blacklist +- [ ] nostr-tools/SimplePool drop-in replacement interface + +## Instantiate an NDK instance + +You can pass an object with several options to a newly created instance of NDK. + +- `explicitRelayUrls` – an array of relay URLs. +- `signer` - an instance of a [signer](#signers). +- `cacheAdapter` - an instance of a [Cache Adapter](#caching) +- `debug` - boolean true/false to turn on degbugging + +```ts +// Import the package +import NDK from "@nostr-dev-kit/ndk"; +// Create a new NDK instance with explicit relays +ndk = new NDK({ explicitRelayUrls: ["wss://a.relay", "wss://another.relay"] }); +``` + +Note: In normal client use, it's best practice to instantiate NDK as a singleton class. [See more below](#architecture). + +## Connecting + +After you've instatiated NDK, you need to tell it to connect before you'll be able to interact with any relays. + +```ts +// Import the package +import NDK from "@nostr-dev-kit/ndk"; +// Create a new NDK instance with explicit relays +ndk = new NDK({ explicitRelayUrls: ["wss://a.relay", "wss://another.relay"] }); + +// Now connect to specified relays +await ndk.connect(); +``` + +## Signers + +NDK uses signers _optionally_ passed in to sign events. Note that it is possible to use NDK without signing events (e.g. [to get someone's profile](https://github.com/nostr-dev-kit/ndk-cli/blob/master/src/commands/profile.ts)). + +Signing adapters can be passed in when NDK is instantiated or later during runtime. + +### Using a NIP-07 browser extension (e.g. Alby, nos2x) + +Instatiate NDK with a NIP-07 signer + +```ts +// Import the package, NIP-07 signer and NDK event +import NDK, { NDKNip07Signer, NDKEvent } from "@nostr-dev-kit/ndk"; + +const nip07signer = new NDKNip07Signer(); +const ndk = new NDK({ signer: nip07signer }); +``` + +NDK can now ask for permission, via their NIP-07 extension, to... + +**Read the user's public key** + +```ts +signer.user().then(async (user) => { + if (!!user.npub) { + console.log("Permission granted to read their public key."); + } +}); +``` + +**Sign & publish events** + +```ts +const ndkEvent = new NDKEvent(ndk); +ndkEvent.kind = 1; +ndkEvent.content = "Hello, world!"; +ndkEvent.publish(); // This will trigger the extension to ask the user to confirm signing. +``` + + + +## Caching + +NDK provides database-agnostic caching functionality out-of-the-box to improve the performance of your application and reduce load on relays. + +NDK will eventually allow you to use multiple caches simultaneously and allow for selective storage of data in the cache store that makes the most sense for your application. + +### Where to look is more important that long-term storage + +The most important data to cache is _where_ a user or note might be found. UX suffers profoundly when this type of data cannot be found. By design, the Nostr protocol leaves beadcrums of where a user or note might be found and NDK does it's best to store this data automatically and use it when you query for events. + +### Instantiating and using a cache adapter + +```ts +const redisAdapter = new RedisAdapter(redisUrl); +const ndk = new NDK({ cacheAdapter: redisAdapter }); +``` + +## Buffered queries (COMING SOON) + +Clients often need to load data (e.g. profile data) from individual components at once (e.g. initial page render). This typically causes multiple subscriptions to be submitted fetching the same information and causing poor performance or getting rate-limited/maxed out by relays. + +NDK implements a convenient subscription model, _buffered queries_, where a named subscription will be created after a customizable amount of time, so that multiple components can append queries. + +```ts +// Component 1 +ndk.bufferedSubscription({ kinds: [0], authors: ["pubkey-1"] }, "profiles", 500); + +// Component 2 +ndk.bufferedSubscription({ kinds: [0], authors: ["pubkey-2"] }, "profiles", 500); +``` + +In this example, NDK will wait 500ms before creating a subscription with the filter: + +```ts +{kinds: [0], authors: ['pubkey-1', 'pubkey-2'] } +``` + +## Intelligent relay selection + +When a client submits a request through NDK, NDK will calculate which relays are most likely able to satisfy this request. + +Queries submitted by the client might be broken into different queries if NDK computes different relays. + +For example, say npub-A follows npub-B and npub-C. If the NDK client uses: + +```ts +const ndk = new NDK({ explicitRelays: ["wss://nos.lol"] }); +const npubA = ndk.getUser("npub-A"); +const feedEvents = await npubA.feed(); +``` + +This would result in the following request: + +```json +{ "kinds": [1], "authors": ["npub-B", "npub-C"] } +``` + +But if NDK has observed that `npub-B` tends to write to `wss://userb.xyz` and +`npub-C` tends to write to `wss://userc.io`, NDK will instead send the following queries. + +```json +// to npub-A's explicit relay wss://nos.lol *if* npub-B and npub-C have been seen on that relay +{ "kinds": [1], "authors": [ "npub-B", "npub-C" ] } + +// to wss://userb.xyz +{ "kinds": [1], "authors": [ "npub-B" ] } + +// to wss://userc.io +{ "kinds": [1], "authors": [ "npub-C" ] } +``` + +## Auto-closing subscriptions + +Often, clients need to fetch data but don't need to maintain an open connection to the relay. This is true of profile metadata requests especially. + +- The `autoclose` flag will make the connection close immediately after EOSE is seen. +- An integer `autoclose` will close the connection after that amount of ms after EOSE is seen. + +```ts +ndk.subscription({ kinds: [0], authors: ["..."] }, { autoclose: true }); +``` + +## Convenience methods + +NDK implements several conveience methods for common queries. + +### Instantiate a user by npub or hex pubkey + +This is a handy method for instantiating a new `NDKUser` and associating the current NDK instance with that user for future calls. + +```ts +const pablo = ndk.getUser({ + npub: "npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft" +}); + +const jeff = ndk.getUser({ + hexpubkey: "1739d937dc8c0c7370aa27585938c119e25c41f6c441a5d34c6d38503e3136ef" +}); +``` + +### Fetch a user's profile and publish updates + +You can easily fetch a user's profile data from `kind: 0` events on relays. Calling `.fetchProfile()` will update the `profile` attribute on the user object instead of returning the profile directly. NDK then makes it trivial to update values and publish those updates back to relays. + +```ts +const pablo = ndk.getUser({ + npub: "npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft" +}); +await pablo.fetchProfile(); + +const pabloFullProfile = pablo.profile; + +pablo.profile.name = "Pablo"; +// COMING SOON +await pablo.publish(); // Triggers signing via signer +``` + +### Finding a single event or all events matching a filter + +You can fetch the first event or all events that match a given set of filters. + +```ts +// Create a filter +const filter: NDKFilter = { kinds: [1], authors: [hexpubkey1, hexpubkey2] }; + +// Will return only the first event +event = await ndk.fetchEvent(filter); + +// Will return all found events +events = await ndk.fetchEvents(filter); +``` + +### Creating & publishing events + +```ts +const ndk = new NDK({ explicitRelays, signer }); +const event = new NDKEvent(ndk); +event.kind = 1; +event.content = "PV Nostr! 🤙🏼"; +await ndk.publish(event); +``` + +### Reacting to an event + +```ts +// Find the first event from @jack, and react/like it. +const event = await ndk.fetchEvent({ author: "jack@cashapp.com" })[0]; +await event.react("🤙"); +``` + +### Zap an event + +```ts +// Find the first event from @jack, and zap it. +const event = await ndk.fetchEvent({ author: "jack@cashapp.com" })[0]; +await event.zap(1337, "Zapping your post!"); // Returns a zap request +``` + +## Architecture decisions & suggestions + +- Users of NDK should instantiate a single NDK instance. +- That instance tracks state with all relays connected, explicit and otherwise. +- All relays are tracked in a single pool that handles connection errors/reconnection logic. +- RelaySets are assembled ad-hoc as needed depending on the queries set, although some RelaySets might be long-lasting, like the `explicitRelays` specified by the user. +- RelaySets are always a subset of the pool of all available relays. diff --git a/docs/classes/NDKEvent.md b/docs/classes/NDKEvent.md new file mode 100644 index 00000000..684492ad --- /dev/null +++ b/docs/classes/NDKEvent.md @@ -0,0 +1,373 @@ +[NDK](../README.md) / [Exports](../modules.md) / NDKEvent + +# Class: NDKEvent + +## Hierarchy + +- `EventEmitter` + + ↳ **`NDKEvent`** + +## Table of contents + +### Constructors + +- [constructor](NDKEvent.md#constructor) + +### Properties + +- [content](NDKEvent.md#content) +- [created\_at](NDKEvent.md#created_at) +- [encode](NDKEvent.md#encode) +- [id](NDKEvent.md#id) +- [isParamReplaceable](NDKEvent.md#isparamreplaceable) +- [isReplaceable](NDKEvent.md#isreplaceable) +- [kind](NDKEvent.md#kind) +- [ndk](NDKEvent.md#ndk) +- [pubkey](NDKEvent.md#pubkey) +- [sig](NDKEvent.md#sig) +- [subject](NDKEvent.md#subject) +- [tags](NDKEvent.md#tags) + +### Methods + +- [getMatchingTags](NDKEvent.md#getmatchingtags) +- [publish](NDKEvent.md#publish) +- [sign](NDKEvent.md#sign) +- [tagId](NDKEvent.md#tagid) +- [tagReference](NDKEvent.md#tagreference) +- [toNostrEvent](NDKEvent.md#tonostrevent) +- [toString](NDKEvent.md#tostring) +- [zap](NDKEvent.md#zap) + +## Constructors + +### constructor + +• **new NDKEvent**(`ndk?`, `event?`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `ndk?` | [`default`](default.md) | +| `event?` | `NostrEvent` | + +#### Overrides + +EventEmitter.constructor + +#### Defined in + +[src/events/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L35) + +## Properties + +### content + +• **content**: `string` = `''` + +#### Defined in + +[src/events/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L27) + +___ + +### created\_at + +• `Optional` **created\_at**: `number` + +#### Defined in + +[src/events/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L26) + +___ + +### encode + +• **encode**: (...`args`: []) => `undefined` \| `string` + +#### Type declaration + +▸ (`...args`): `undefined` \| `string` + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `...args` | [] | + +##### Returns + +`undefined` \| `string` + +#### Defined in + +[src/events/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L79) + +___ + +### id + +• **id**: `string` = `""` + +#### Defined in + +[src/events/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L31) + +___ + +### isParamReplaceable + +• **isParamReplaceable**: (...`args`: []) => `boolean` + +#### Type declaration + +▸ (`...args`): `boolean` + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `...args` | [] | + +##### Returns + +`boolean` + +#### Defined in + +[src/events/index.ts:78](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L78) + +___ + +### isReplaceable + +• **isReplaceable**: (...`args`: []) => `boolean` + +#### Type declaration + +▸ (`...args`): `boolean` + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `...args` | [] | + +##### Returns + +`boolean` + +#### Defined in + +[src/events/index.ts:77](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L77) + +___ + +### kind + +• `Optional` **kind**: `number` + +#### Defined in + +[src/events/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L30) + +___ + +### ndk + +• `Optional` **ndk**: [`default`](default.md) + +#### Defined in + +[src/events/index.ts:25](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L25) + +___ + +### pubkey + +• **pubkey**: `string` = `''` + +#### Defined in + +[src/events/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L33) + +___ + +### sig + +• `Optional` **sig**: `string` + +#### Defined in + +[src/events/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L32) + +___ + +### subject + +• **subject**: `undefined` \| `string` + +#### Defined in + +[src/events/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L28) + +___ + +### tags + +• **tags**: `NDKTag`[] = `[]` + +#### Defined in + +[src/events/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L29) + +## Methods + +### getMatchingTags + +▸ **getMatchingTags**(`tagName`): `NDKTag`[] + +Get all tags with the given name + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `tagName` | `string` | + +#### Returns + +`NDKTag`[] + +#### Defined in + +[src/events/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L84) + +___ + +### publish + +▸ **publish**(): `Promise`<`void`\> + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/events/index.ts:101](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L101) + +___ + +### sign + +▸ **sign**(): `Promise`<`void`\> + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/events/index.ts:92](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L92) + +___ + +### tagId + +▸ **tagId**(): `string` + +#### Returns + +`string` + +the id of the event, or if it's a parameterized event, the id of the event with the d tag + +#### Defined in + +[src/events/index.ts:129](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L129) + +___ + +### tagReference + +▸ **tagReference**(): `string`[] + +Get the tag that can be used to reference this event from another event + +**`Example`** + +```ts +event = new NDKEvent(ndk, { kind: 30000, pubkey: 'pubkey', tags: [ ["d", "d-code"] ] }); + event.tagReference(); // ["a", "30000:pubkey:d-code"] + + event = new NDKEvent(ndk, { kind: 1, pubkey: 'pubkey', id: "eventid" }); + event.tagReference(); // ["e", "eventid"] +``` + +#### Returns + +`string`[] + +#### Defined in + +[src/events/index.ts:150](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L150) + +___ + +### toNostrEvent + +▸ **toNostrEvent**(`pubkey?`): `Promise`<`NostrEvent`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `pubkey?` | `string` | + +#### Returns + +`Promise`<`NostrEvent`\> + +#### Defined in + +[src/events/index.ts:48](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L48) + +___ + +### toString + +▸ **toString**(): `Promise`<`NostrEvent`\> + +#### Returns + +`Promise`<`NostrEvent`\> + +#### Defined in + +[src/events/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L88) + +___ + +### zap + +▸ **zap**(`amount`, `comment?`): `Promise`<``null`` \| `string`\> + +Create a zap request for an existing event + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `amount` | `number` | +| `comment?` | `string` | + +#### Returns + +`Promise`<``null`` \| `string`\> + +#### Defined in + +[src/events/index.ts:162](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L162) diff --git a/docs/classes/NDKNip07Signer.md b/docs/classes/NDKNip07Signer.md new file mode 100644 index 00000000..4fd202d6 --- /dev/null +++ b/docs/classes/NDKNip07Signer.md @@ -0,0 +1,104 @@ +[NDK](../README.md) / [Exports](../modules.md) / NDKNip07Signer + +# Class: NDKNip07Signer + +NDKNip07Signer implements the NDKSigner interface for signing Nostr events +with a NIP-07 browser extension (e.g., getalby, nos2x). + +## Implements + +- `NDKSigner` + +## Table of contents + +### Constructors + +- [constructor](NDKNip07Signer.md#constructor) + +### Methods + +- [blockUntilReady](NDKNip07Signer.md#blockuntilready) +- [sign](NDKNip07Signer.md#sign) +- [user](NDKNip07Signer.md#user) + +## Constructors + +### constructor + +• **new NDKNip07Signer**() + +#### Defined in + +[src/signers/nip07/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/signers/nip07/index.ts#L12) + +## Methods + +### blockUntilReady + +▸ **blockUntilReady**(): `Promise`<[`NDKUser`](NDKUser.md)\> + +#### Returns + +`Promise`<[`NDKUser`](NDKUser.md)\> + +#### Implementation of + +NDKSigner.blockUntilReady + +#### Defined in + +[src/signers/nip07/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/signers/nip07/index.ts#L18) + +___ + +### sign + +▸ **sign**(`event`): `Promise`<`string`\> + +Signs the given Nostr event. + +**`Throws`** + +Error if the NIP-07 is not available on the window object. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `event` | `NostrEvent` | The Nostr event to be signed. | + +#### Returns + +`Promise`<`string`\> + +The signature of the signed event. + +#### Implementation of + +NDKSigner.sign + +#### Defined in + +[src/signers/nip07/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/signers/nip07/index.ts#L47) + +___ + +### user + +▸ **user**(): `Promise`<[`NDKUser`](NDKUser.md)\> + +Getter for the user property. + +#### Returns + +`Promise`<[`NDKUser`](NDKUser.md)\> + +The NDKUser instance. + +#### Implementation of + +NDKSigner.user + +#### Defined in + +[src/signers/nip07/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/signers/nip07/index.ts#L33) diff --git a/docs/classes/NDKSubscription.md b/docs/classes/NDKSubscription.md new file mode 100644 index 00000000..6cca8a77 --- /dev/null +++ b/docs/classes/NDKSubscription.md @@ -0,0 +1,205 @@ +[NDK](../README.md) / [Exports](../modules.md) / NDKSubscription + +# Class: NDKSubscription + +Represents a subscription to an NDK event stream. + + NDKSubscription#event +Emitted when an event is received by the subscription. + +**`Param`** + +The event received by the subscription. + +**`Param`** + +The relay that received the event. + + NDKSubscription#event:dup +Emitted when a duplicate event is received by the subscription. + +**`Param`** + +The duplicate event received by the subscription. + +**`Param`** + +The relay that received the event. + +**`Param`** + +The time elapsed since the first time the event was seen. + + NDKSubscription#eose - Emitted when all relays have reached the end of the event stream. + +## Hierarchy + +- `EventEmitter` + + ↳ **`NDKSubscription`** + +## Table of contents + +### Constructors + +- [constructor](NDKSubscription.md#constructor) + +### Properties + +- [filter](NDKSubscription.md#filter) +- [ndk](NDKSubscription.md#ndk) +- [opts](NDKSubscription.md#opts) +- [relaySet](NDKSubscription.md#relayset) +- [relaySubscriptions](NDKSubscription.md#relaysubscriptions) +- [subId](NDKSubscription.md#subid) + +### Methods + +- [eoseReceived](NDKSubscription.md#eosereceived) +- [eventReceived](NDKSubscription.md#eventreceived) +- [start](NDKSubscription.md#start) + +## Constructors + +### constructor + +• **new NDKSubscription**(`ndk`, `filter`, `opts?`, `relaySet?`, `subId?`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `ndk` | [`default`](default.md) | +| `filter` | `Filter` | +| `opts?` | `NDKSubscriptionOptions` | +| `relaySet?` | `NDKRelaySet` | +| `subId?` | `string` | + +#### Overrides + +EventEmitter.constructor + +#### Defined in + +[src/subscription/index.ts:60](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/subscription/index.ts#L60) + +## Properties + +### filter + +• `Readonly` **filter**: `Filter` + +#### Defined in + +[src/subscription/index.ts:53](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/subscription/index.ts#L53) + +___ + +### ndk + +• **ndk**: [`default`](default.md) + +#### Defined in + +[src/subscription/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/subscription/index.ts#L56) + +___ + +### opts + +• `Optional` `Readonly` **opts**: `NDKSubscriptionOptions` + +#### Defined in + +[src/subscription/index.ts:54](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/subscription/index.ts#L54) + +___ + +### relaySet + +• `Optional` **relaySet**: `NDKRelaySet` + +#### Defined in + +[src/subscription/index.ts:55](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/subscription/index.ts#L55) + +___ + +### relaySubscriptions + +• **relaySubscriptions**: `Map`<`NDKRelay`, `Sub`\> + +#### Defined in + +[src/subscription/index.ts:57](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/subscription/index.ts#L57) + +___ + +### subId + +• `Readonly` **subId**: `string` + +#### Defined in + +[src/subscription/index.ts:52](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/subscription/index.ts#L52) + +## Methods + +### eoseReceived + +▸ **eoseReceived**(`relay`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `relay` | `NDKRelay` | + +#### Returns + +`void` + +#### Defined in + +[src/subscription/index.ts:198](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/subscription/index.ts#L198) + +___ + +### eventReceived + +▸ **eventReceived**(`event`, `relay`, `fromCache?`): `void` + +Called when an event is received from a relay or the cache + +#### Parameters + +| Name | Type | Default value | Description | +| :------ | :------ | :------ | :------ | +| `event` | [`NDKEvent`](NDKEvent.md) | `undefined` | | +| `relay` | `undefined` \| `NDKRelay` | `undefined` | | +| `fromCache` | `boolean` | `false` | Whether the event was received from the cache | + +#### Returns + +`void` + +#### Defined in + +[src/subscription/index.ts:169](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/subscription/index.ts#L169) + +___ + +### start + +▸ **start**(): `Promise`<`void`\> + +Start the subscription. This is the main method that should be called +after creating a subscription. + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/subscription/index.ts:105](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/subscription/index.ts#L105) diff --git a/docs/classes/NDKUser.md b/docs/classes/NDKUser.md new file mode 100644 index 00000000..8f74ddf0 --- /dev/null +++ b/docs/classes/NDKUser.md @@ -0,0 +1,170 @@ +[NDK](../README.md) / [Exports](../modules.md) / NDKUser + +# Class: NDKUser + +Represents a pubkey. + +## Table of contents + +### Constructors + +- [constructor](NDKUser.md#constructor) + +### Properties + +- [follows](NDKUser.md#follows) +- [ndk](NDKUser.md#ndk) +- [npub](NDKUser.md#npub) +- [profile](NDKUser.md#profile) +- [relayUrls](NDKUser.md#relayurls) + +### Methods + +- [fetchProfile](NDKUser.md#fetchprofile) +- [hexpubkey](NDKUser.md#hexpubkey) +- [relayList](NDKUser.md#relaylist) +- [fromNip05](NDKUser.md#fromnip05) + +## Constructors + +### constructor + +• **new NDKUser**(`opts`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts` | `NDKUserParams` | + +#### Defined in + +[src/user/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/index.ts#L23) + +## Properties + +### follows + +• **follows**: (...`args`: []) => `Promise`<`Set`<[`NDKUser`](NDKUser.md)\>\> + +#### Type declaration + +▸ (`...args`): `Promise`<`Set`<[`NDKUser`](NDKUser.md)\>\> + +Returns a set of users that this user follows. + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `...args` | [] | + +##### Returns + +`Promise`<`Set`<[`NDKUser`](NDKUser.md)\>\> + +#### Defined in + +[src/user/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/index.ts#L79) + +___ + +### ndk + +• **ndk**: `undefined` \| [`default`](default.md) + +#### Defined in + +[src/user/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/index.ts#L18) + +___ + +### npub + +• `Readonly` **npub**: `string` = `''` + +#### Defined in + +[src/user/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/index.ts#L20) + +___ + +### profile + +• `Optional` **profile**: [`NDKUserProfile`](../interfaces/NDKUserProfile.md) + +#### Defined in + +[src/user/index.ts:19](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/index.ts#L19) + +___ + +### relayUrls + +• `Readonly` **relayUrls**: `string`[] = `[]` + +#### Defined in + +[src/user/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/index.ts#L21) + +## Methods + +### fetchProfile + +▸ **fetchProfile**(): `Promise`<``null`` \| `Set`<[`NDKEvent`](NDKEvent.md)\>\> + +#### Returns + +`Promise`<``null`` \| `Set`<[`NDKEvent`](NDKEvent.md)\>\> + +#### Defined in + +[src/user/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/index.ts#L50) + +___ + +### hexpubkey + +▸ **hexpubkey**(): `string` + +#### Returns + +`string` + +#### Defined in + +[src/user/index.ts:46](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/index.ts#L46) + +___ + +### relayList + +▸ **relayList**(): `Promise`<`Set`<[`NDKEvent`](NDKEvent.md)\>\> + +#### Returns + +`Promise`<`Set`<[`NDKEvent`](NDKEvent.md)\>\> + +#### Defined in + +[src/user/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/index.ts#L81) + +___ + +### fromNip05 + +▸ `Static` **fromNip05**(`nip05Id`): `Promise`<`undefined` \| [`NDKUser`](NDKUser.md)\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `nip05Id` | `string` | + +#### Returns + +`Promise`<`undefined` \| [`NDKUser`](NDKUser.md)\> + +#### Defined in + +[src/user/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/index.ts#L35) diff --git a/docs/classes/default.md b/docs/classes/default.md new file mode 100644 index 00000000..bed790fd --- /dev/null +++ b/docs/classes/default.md @@ -0,0 +1,240 @@ +[NDK](../README.md) / [Exports](../modules.md) / default + +# Class: default + +## Hierarchy + +- `EventEmitter` + + ↳ **`default`** + +## Table of contents + +### Constructors + +- [constructor](default.md#constructor) + +### Properties + +- [cacheAdapter](default.md#cacheadapter) +- [debug](default.md#debug) +- [relayPool](default.md#relaypool) +- [signer](default.md#signer) + +### Methods + +- [assertSigner](default.md#assertsigner) +- [connect](default.md#connect) +- [fetchEvent](default.md#fetchevent) +- [fetchEvents](default.md#fetchevents) +- [getUser](default.md#getuser) +- [publish](default.md#publish) +- [subscribe](default.md#subscribe) + +## Constructors + +### constructor + +• **new default**(`opts?`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts` | [`NDKConstructorParams`](../interfaces/NDKConstructorParams.md) | + +#### Overrides + +EventEmitter.constructor + +#### Defined in + +[src/index.ts:42](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L42) + +## Properties + +### cacheAdapter + +• `Optional` **cacheAdapter**: [`NDKCacheAdapter`](../interfaces/NDKCacheAdapter.md) + +#### Defined in + +[src/index.ts:39](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L39) + +___ + +### debug + +• **debug**: `Debugger` + +#### Defined in + +[src/index.ts:40](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L40) + +___ + +### relayPool + +• **relayPool**: `NDKPool` + +#### Defined in + +[src/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L37) + +___ + +### signer + +• `Optional` **signer**: `NDKSigner` + +#### Defined in + +[src/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L38) + +## Methods + +### assertSigner + +▸ **assertSigner**(): `Promise`<`void`\> + +Ensures that a signer is available to sign an event. + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/index.ts:134](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L134) + +___ + +### connect + +▸ **connect**(`timeoutMs?`): `Promise`<`void`\> + +Connect to relays with optional timeout. +If the timeout is reached, the connection will be continued to be established in the background. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `timeoutMs?` | `number` | + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/index.ts:61](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L61) + +___ + +### fetchEvent + +▸ **fetchEvent**(`filter`, `opts?`): `Promise`<[`NDKEvent`](NDKEvent.md)\> + +Fetch a single event + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `filter` | `Filter` | +| `opts` | `NDKFilterOptions` | + +#### Returns + +`Promise`<[`NDKEvent`](NDKEvent.md)\> + +#### Defined in + +[src/index.ts:97](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L97) + +___ + +### fetchEvents + +▸ **fetchEvents**(`filter`, `opts?`): `Promise`<`Set`<[`NDKEvent`](NDKEvent.md)\>\> + +Fetch events + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `filter` | `Filter` | +| `opts` | `NDKFilterOptions` | + +#### Returns + +`Promise`<`Set`<[`NDKEvent`](NDKEvent.md)\>\> + +#### Defined in + +[src/index.ts:110](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L110) + +___ + +### getUser + +▸ **getUser**(`opts`): [`NDKUser`](NDKUser.md) + +Get a NDKUser object + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts` | [`GetUserParams`](../interfaces/GetUserParams.md) | + +#### Returns + +[`NDKUser`](NDKUser.md) + +#### Defined in + +[src/index.ts:72](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L72) + +___ + +### publish + +▸ **publish**(`event`): `Promise`<`void`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `event` | [`NDKEvent`](NDKEvent.md) | + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L88) + +___ + +### subscribe + +▸ **subscribe**(`filter`, `opts?`): [`NDKSubscription`](NDKSubscription.md) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `filter` | `Filter` | +| `opts?` | `NDKSubscriptionOptions` | + +#### Returns + +[`NDKSubscription`](NDKSubscription.md) + +#### Defined in + +[src/index.ts:78](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L78) diff --git a/docs/enums/NDKKind.md b/docs/enums/NDKKind.md new file mode 100644 index 00000000..c3240a3a --- /dev/null +++ b/docs/enums/NDKKind.md @@ -0,0 +1,316 @@ +[NDK](../README.md) / [Exports](../modules.md) / NDKKind + +# Enumeration: NDKKind + +## Table of contents + +### Enumeration Members + +- [AppSpecificData](NDKKind.md#appspecificdata) +- [Article](NDKKind.md#article) +- [BadgeAward](NDKKind.md#badgeaward) +- [BadgeDefinition](NDKKind.md#badgedefinition) +- [CategorizedBookmarkList](NDKKind.md#categorizedbookmarklist) +- [CategorizedPeopleList](NDKKind.md#categorizedpeoplelist) +- [ChannelCreation](NDKKind.md#channelcreation) +- [ChannelHideMessage](NDKKind.md#channelhidemessage) +- [ChannelMessage](NDKKind.md#channelmessage) +- [ChannelMetadata](NDKKind.md#channelmetadata) +- [ChannelMuteUser](NDKKind.md#channelmuteuser) +- [ClientAuth](NDKKind.md#clientauth) +- [Contacts](NDKKind.md#contacts) +- [EncryptedDirectMessage](NDKKind.md#encrypteddirectmessage) +- [EventDeletion](NDKKind.md#eventdeletion) +- [Metadata](NDKKind.md#metadata) +- [MuteList](NDKKind.md#mutelist) +- [NostrConnect](NDKKind.md#nostrconnect) +- [PinList](NDKKind.md#pinlist) +- [ProfileBadge](NDKKind.md#profilebadge) +- [Reaction](NDKKind.md#reaction) +- [RecommendRelay](NDKKind.md#recommendrelay) +- [RelayList](NDKKind.md#relaylist) +- [Report](NDKKind.md#report) +- [Repost](NDKKind.md#repost) +- [Text](NDKKind.md#text) +- [Zap](NDKKind.md#zap) +- [ZapRequest](NDKKind.md#zaprequest) + +## Enumeration Members + +### AppSpecificData + +• **AppSpecificData** = ``30078`` + +#### Defined in + +[src/events/kind.ts:31](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L31) + +___ + +### Article + +• **Article** = ``30023`` + +#### Defined in + +[src/events/kind.ts:30](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L30) + +___ + +### BadgeAward + +• **BadgeAward** = ``8`` + +#### Defined in + +[src/events/kind.ts:12](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L12) + +___ + +### BadgeDefinition + +• **BadgeDefinition** = ``30009`` + +#### Defined in + +[src/events/kind.ts:29](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L29) + +___ + +### CategorizedBookmarkList + +• **CategorizedBookmarkList** = ``30001`` + +#### Defined in + +[src/events/kind.ts:27](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L27) + +___ + +### CategorizedPeopleList + +• **CategorizedPeopleList** = ``30000`` + +#### Defined in + +[src/events/kind.ts:26](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L26) + +___ + +### ChannelCreation + +• **ChannelCreation** = ``40`` + +#### Defined in + +[src/events/kind.ts:13](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L13) + +___ + +### ChannelHideMessage + +• **ChannelHideMessage** = ``43`` + +#### Defined in + +[src/events/kind.ts:16](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L16) + +___ + +### ChannelMessage + +• **ChannelMessage** = ``42`` + +#### Defined in + +[src/events/kind.ts:15](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L15) + +___ + +### ChannelMetadata + +• **ChannelMetadata** = ``41`` + +#### Defined in + +[src/events/kind.ts:14](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L14) + +___ + +### ChannelMuteUser + +• **ChannelMuteUser** = ``44`` + +#### Defined in + +[src/events/kind.ts:17](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L17) + +___ + +### ClientAuth + +• **ClientAuth** = ``22242`` + +#### Defined in + +[src/events/kind.ts:24](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L24) + +___ + +### Contacts + +• **Contacts** = ``3`` + +#### Defined in + +[src/events/kind.ts:7](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L7) + +___ + +### EncryptedDirectMessage + +• **EncryptedDirectMessage** = ``4`` + +#### Defined in + +[src/events/kind.ts:8](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L8) + +___ + +### EventDeletion + +• **EventDeletion** = ``5`` + +#### Defined in + +[src/events/kind.ts:9](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L9) + +___ + +### Metadata + +• **Metadata** = ``0`` + +#### Defined in + +[src/events/kind.ts:4](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L4) + +___ + +### MuteList + +• **MuteList** = ``10000`` + +#### Defined in + +[src/events/kind.ts:21](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L21) + +___ + +### NostrConnect + +• **NostrConnect** = ``24133`` + +#### Defined in + +[src/events/kind.ts:25](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L25) + +___ + +### PinList + +• **PinList** = ``10001`` + +#### Defined in + +[src/events/kind.ts:22](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L22) + +___ + +### ProfileBadge + +• **ProfileBadge** = ``30008`` + +#### Defined in + +[src/events/kind.ts:28](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L28) + +___ + +### Reaction + +• **Reaction** = ``7`` + +#### Defined in + +[src/events/kind.ts:11](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L11) + +___ + +### RecommendRelay + +• **RecommendRelay** = ``2`` + +#### Defined in + +[src/events/kind.ts:6](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L6) + +___ + +### RelayList + +• **RelayList** = ``10002`` + +#### Defined in + +[src/events/kind.ts:23](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L23) + +___ + +### Report + +• **Report** = ``1984`` + +#### Defined in + +[src/events/kind.ts:18](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L18) + +___ + +### Repost + +• **Repost** = ``6`` + +#### Defined in + +[src/events/kind.ts:10](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L10) + +___ + +### Text + +• **Text** = ``1`` + +#### Defined in + +[src/events/kind.ts:5](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L5) + +___ + +### Zap + +• **Zap** = ``9735`` + +#### Defined in + +[src/events/kind.ts:20](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L20) + +___ + +### ZapRequest + +• **ZapRequest** = ``9734`` + +#### Defined in + +[src/events/kind.ts:19](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L19) diff --git a/docs/interfaces/GetUserParams.md b/docs/interfaces/GetUserParams.md new file mode 100644 index 00000000..60ea1c02 --- /dev/null +++ b/docs/interfaces/GetUserParams.md @@ -0,0 +1,74 @@ +[NDK](../README.md) / [Exports](../modules.md) / GetUserParams + +# Interface: GetUserParams + +## Hierarchy + +- `NDKUserParams` + + ↳ **`GetUserParams`** + +## Table of contents + +### Properties + +- [hexpubkey](GetUserParams.md#hexpubkey) +- [nip05](GetUserParams.md#nip05) +- [npub](GetUserParams.md#npub) +- [relayUrls](GetUserParams.md#relayurls) + +## Properties + +### hexpubkey + +• `Optional` **hexpubkey**: `string` + +#### Overrides + +NDKUserParams.hexpubkey + +#### Defined in + +[src/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L33) + +___ + +### nip05 + +• `Optional` **nip05**: `string` + +#### Inherited from + +NDKUserParams.nip05 + +#### Defined in + +[src/user/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/index.ts#L10) + +___ + +### npub + +• `Optional` **npub**: `string` + +#### Overrides + +NDKUserParams.npub + +#### Defined in + +[src/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L32) + +___ + +### relayUrls + +• `Optional` **relayUrls**: `string`[] + +#### Inherited from + +NDKUserParams.relayUrls + +#### Defined in + +[src/user/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/index.ts#L11) diff --git a/docs/interfaces/NDKCacheAdapter.md b/docs/interfaces/NDKCacheAdapter.md new file mode 100644 index 00000000..c077b15f --- /dev/null +++ b/docs/interfaces/NDKCacheAdapter.md @@ -0,0 +1,69 @@ +[NDK](../README.md) / [Exports](../modules.md) / NDKCacheAdapter + +# Interface: NDKCacheAdapter + +## Table of contents + +### Properties + +- [locking](NDKCacheAdapter.md#locking) + +### Methods + +- [query](NDKCacheAdapter.md#query) +- [setEvent](NDKCacheAdapter.md#setevent) + +## Properties + +### locking + +• **locking**: `boolean` + +Whether this cache adapter is expected to be fast. +If this is true, the cache will be queried before the relays. +When this is false, the cache will be queried in addition to the relays. + +#### Defined in + +[src/cache/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/cache/index.ts#L10) + +## Methods + +### query + +▸ **query**(`subscription`): `Promise`<`void`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `subscription` | [`NDKSubscription`](../classes/NDKSubscription.md) | + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/cache/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/cache/index.ts#L12) + +___ + +### setEvent + +▸ **setEvent**(`event`, `filter`): `Promise`<`void`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `event` | [`NDKEvent`](../classes/NDKEvent.md) | +| `filter` | `Filter` | + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/cache/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/cache/index.ts#L13) diff --git a/docs/interfaces/NDKConstructorParams.md b/docs/interfaces/NDKConstructorParams.md new file mode 100644 index 00000000..de0d72ec --- /dev/null +++ b/docs/interfaces/NDKConstructorParams.md @@ -0,0 +1,52 @@ +[NDK](../README.md) / [Exports](../modules.md) / NDKConstructorParams + +# Interface: NDKConstructorParams + +## Table of contents + +### Properties + +- [cacheAdapter](NDKConstructorParams.md#cacheadapter) +- [debug](NDKConstructorParams.md#debug) +- [explicitRelayUrls](NDKConstructorParams.md#explicitrelayurls) +- [signer](NDKConstructorParams.md#signer) + +## Properties + +### cacheAdapter + +• `Optional` **cacheAdapter**: [`NDKCacheAdapter`](NDKCacheAdapter.md) + +#### Defined in + +[src/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L28) + +___ + +### debug + +• `Optional` **debug**: `Debugger` + +#### Defined in + +[src/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L29) + +___ + +### explicitRelayUrls + +• `Optional` **explicitRelayUrls**: `string`[] + +#### Defined in + +[src/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L26) + +___ + +### signer + +• `Optional` **signer**: `NDKSigner` + +#### Defined in + +[src/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L27) diff --git a/docs/interfaces/NDKUserProfile.md b/docs/interfaces/NDKUserProfile.md new file mode 100644 index 00000000..73e6e563 --- /dev/null +++ b/docs/interfaces/NDKUserProfile.md @@ -0,0 +1,118 @@ +[NDK](../README.md) / [Exports](../modules.md) / NDKUserProfile + +# Interface: NDKUserProfile + +## Table of contents + +### Properties + +- [about](NDKUserProfile.md#about) +- [banner](NDKUserProfile.md#banner) +- [bio](NDKUserProfile.md#bio) +- [displayName](NDKUserProfile.md#displayname) +- [image](NDKUserProfile.md#image) +- [lud06](NDKUserProfile.md#lud06) +- [lud16](NDKUserProfile.md#lud16) +- [name](NDKUserProfile.md#name) +- [nip05](NDKUserProfile.md#nip05) +- [zapService](NDKUserProfile.md#zapservice) + +## Properties + +### about + +• `Optional` **about**: `string` + +#### Defined in + +[src/user/profile.ts:12](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/profile.ts#L12) + +___ + +### banner + +• `Optional` **banner**: `string` + +#### Defined in + +[src/user/profile.ts:7](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/profile.ts#L7) + +___ + +### bio + +• `Optional` **bio**: `string` + +#### Defined in + +[src/user/profile.ts:8](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/profile.ts#L8) + +___ + +### displayName + +• `Optional` **displayName**: `string` + +#### Defined in + +[src/user/profile.ts:5](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/profile.ts#L5) + +___ + +### image + +• `Optional` **image**: `string` + +#### Defined in + +[src/user/profile.ts:6](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/profile.ts#L6) + +___ + +### lud06 + +• `Optional` **lud06**: `string` + +#### Defined in + +[src/user/profile.ts:10](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/profile.ts#L10) + +___ + +### lud16 + +• `Optional` **lud16**: `string` + +#### Defined in + +[src/user/profile.ts:11](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/profile.ts#L11) + +___ + +### name + +• `Optional` **name**: `string` + +#### Defined in + +[src/user/profile.ts:4](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/profile.ts#L4) + +___ + +### nip05 + +• `Optional` **nip05**: `string` + +#### Defined in + +[src/user/profile.ts:9](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/profile.ts#L9) + +___ + +### zapService + +• `Optional` **zapService**: `string` + +#### Defined in + +[src/user/profile.ts:13](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/profile.ts#L13) diff --git a/docs/interfaces/NDKZapInvoice.md b/docs/interfaces/NDKZapInvoice.md new file mode 100644 index 00000000..339e19c8 --- /dev/null +++ b/docs/interfaces/NDKZapInvoice.md @@ -0,0 +1,85 @@ +[NDK](../README.md) / [Exports](../modules.md) / NDKZapInvoice + +# Interface: NDKZapInvoice + +## Table of contents + +### Properties + +- [amount](NDKZapInvoice.md#amount) +- [comment](NDKZapInvoice.md#comment) +- [id](NDKZapInvoice.md#id) +- [zapped](NDKZapInvoice.md#zapped) +- [zappedEvent](NDKZapInvoice.md#zappedevent) +- [zappee](NDKZapInvoice.md#zappee) +- [zapper](NDKZapInvoice.md#zapper) + +## Properties + +### amount + +• **amount**: `number` + +#### Defined in + +[src/zap/invoice.ts:10](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/zap/invoice.ts#L10) + +___ + +### comment + +• `Optional` **comment**: `string` + +#### Defined in + +[src/zap/invoice.ts:11](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/zap/invoice.ts#L11) + +___ + +### id + +• `Optional` **id**: `string` + +#### Defined in + +[src/zap/invoice.ts:5](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/zap/invoice.ts#L5) + +___ + +### zapped + +• **zapped**: `string` + +#### Defined in + +[src/zap/invoice.ts:8](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/zap/invoice.ts#L8) + +___ + +### zappedEvent + +• `Optional` **zappedEvent**: `string` + +#### Defined in + +[src/zap/invoice.ts:9](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/zap/invoice.ts#L9) + +___ + +### zappee + +• **zappee**: `string` + +#### Defined in + +[src/zap/invoice.ts:7](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/zap/invoice.ts#L7) + +___ + +### zapper + +• **zapper**: `string` + +#### Defined in + +[src/zap/invoice.ts:6](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/zap/invoice.ts#L6) diff --git a/docs/modules.md b/docs/modules.md new file mode 100644 index 00000000..2af15e5a --- /dev/null +++ b/docs/modules.md @@ -0,0 +1,66 @@ +[NDK](README.md) / Exports + +# NDK + +## Table of contents + +### Enumerations + +- [NDKKind](enums/NDKKind.md) + +### Classes + +- [NDKEvent](classes/NDKEvent.md) +- [NDKNip07Signer](classes/NDKNip07Signer.md) +- [NDKUser](classes/NDKUser.md) +- [default](classes/default.md) + +### Events + +- [NDKSubscription](classes/NDKSubscription.md) + +### Interfaces + +- [GetUserParams](interfaces/GetUserParams.md) +- [NDKCacheAdapter](interfaces/NDKCacheAdapter.md) +- [NDKConstructorParams](interfaces/NDKConstructorParams.md) +- [NDKUserProfile](interfaces/NDKUserProfile.md) +- [NDKZapInvoice](interfaces/NDKZapInvoice.md) + +### Type Aliases + +- [NDKFilter](modules.md#ndkfilter) + +### Functions + +- [zapInvoiceFromEvent](modules.md#zapinvoicefromevent) + +## Type Aliases + +### NDKFilter + +Ƭ **NDKFilter**: `NostrFilter` + +#### Defined in + +[src/subscription/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/subscription/index.ts#L10) + +## Functions + +### zapInvoiceFromEvent + +▸ **zapInvoiceFromEvent**(`event`): [`NDKZapInvoice`](interfaces/NDKZapInvoice.md) \| ``null`` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `event` | [`NDKEvent`](classes/NDKEvent.md) | + +#### Returns + +[`NDKZapInvoice`](interfaces/NDKZapInvoice.md) \| ``null`` + +#### Defined in + +[src/zap/invoice.ts:14](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/zap/invoice.ts#L14) diff --git a/package.json b/package.json index 5a3c2c25..e5dd4722 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,8 @@ "test": "jest", "lint": "eslint src/**/*.ts", "compile": "tsc", - "prepare": "pnpm compile", + "prepare": "pnpm build && pnpm typedoc", + "publish": "pnpm prepare && pnpm publish", "pretest": "pnpm compile", "posttest": "pnpm lint" }, @@ -42,6 +43,8 @@ "jest": "^29.5.0", "prettier-plugin-organize-imports": "^3.2.2", "ts-jest": "^29.1.0", + "typedoc": "^0.23.28", + "typedoc-plugin-markdown": "^3.14.0", "typescript": "~4.7.0" }, "dependencies": { diff --git a/typedoc.json b/typedoc.json new file mode 100644 index 00000000..7532baeb --- /dev/null +++ b/typedoc.json @@ -0,0 +1,11 @@ +{ + "entryPoints": ["src/index.ts"], + "out": "docs", + "name": "NDK", + "exclude": ["**/*.test.ts"], + "plugin": ["typedoc-plugin-markdown"], + "theme": "default", + "excludeExternals": true, + "excludePrivate": true, + "excludeProtected": true +} \ No newline at end of file From 3bb0c8afdb0f35bfa5a8dc906b11134655dcf0ed Mon Sep 17 00:00:00 2001 From: pablof7z Date: Fri, 7 Apr 2023 14:28:02 +0300 Subject: [PATCH 033/773] link to docs --- README.md | 1 + package.json | 1 + 2 files changed, 2 insertions(+) diff --git a/README.md b/README.md index ca943964..bccca200 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ npm add @nostr-dev-kit/ndk * note15m6rdfvlmd0z836hk83sg7r59xtv23qnmamhsslq5uc6744fdm4qfkeat3 * [Coracle](https://app.coracle.social/chat/note15m6rdfvlmd0z836hk83sg7r59xtv23qnmamhsslq5uc6744fdm4qfkeat3) * [Nostrchat](https://www.nostrchat.io/channel/a6f436a59fdb5e23c757b1e30478742996c54413df777843e0a731af56a96eea) + * [WIP documentation](https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md) ## Features diff --git a/package.json b/package.json index e5dd4722..567334a6 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "0.0.24", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", + "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", "repository": { "type": "git", "url": "https://github.com/nostr-dev-kit/ndk" From 3b87141f06718bf38c22a8824f34069c0604f99e Mon Sep 17 00:00:00 2001 From: pablof7z Date: Fri, 7 Apr 2023 23:15:56 +0300 Subject: [PATCH 034/773] Track relay status on the pool --- src/index.ts | 7 ++++--- src/relay/index.ts | 20 ++++++++++++++++-- src/relay/pool/index.ts | 42 +++++++++++++++++++++++++++++++------ src/relay/sets/calculate.ts | 4 ++-- 4 files changed, 60 insertions(+), 13 deletions(-) diff --git a/src/index.ts b/src/index.ts index 17f98b44..1d184317 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,6 @@ import NDKEvent from './events/index.js'; import {NDKPool} from './relay/pool/index.js'; +import {NDKRelay} from './relay/index.js'; import type {NDKSigner} from './signers/index.js'; import NDKUser, {NDKUserParams} from './user/index.js'; import {NDKUserProfile} from './user/profile.js'; @@ -34,7 +35,7 @@ export interface GetUserParams extends NDKUserParams { } export default class NDK extends EventEmitter { - public relayPool: NDKPool; + public pool: NDKPool; public signer?: NDKSigner; public cacheAdapter?: NDKCacheAdapter; public debug: debug.Debugger; @@ -43,7 +44,7 @@ export default class NDK extends EventEmitter { super(); this.debug = opts.debug || debug('ndk'); - this.relayPool = new NDKPool(opts.explicitRelayUrls||[], this); + this.pool = new NDKPool(opts.explicitRelayUrls||[], this); this.signer = opts.signer; this.cacheAdapter = opts.cacheAdapter; @@ -60,7 +61,7 @@ export default class NDK extends EventEmitter { */ public async connect(timeoutMs?: number): Promise { this.debug('Connecting to relays'); - return this.relayPool.connect(timeoutMs); + return this.pool.connect(timeoutMs); } /** diff --git a/src/relay/index.ts b/src/relay/index.ts index 9eac414b..071d1b39 100644 --- a/src/relay/index.ts +++ b/src/relay/index.ts @@ -7,33 +7,49 @@ import {NDKSubscription} from '../subscription/index.js'; import NDKEvent, {NostrEvent} from '../events/index.js'; import EventEmitter from 'eventemitter3'; +export enum NDKRelayStatus { + CONNECTING, + CONNECTED, + DISCONNECTED, + ERROR, + RECONNECTING, +}; + export class NDKRelay extends EventEmitter { readonly url: string; readonly scores: Map; private relay; + private _status: NDKRelayStatus; public constructor(url: string) { super(); this.url = url; this.relay = relayInit(url); this.scores = new Map(); + this._status = NDKRelayStatus.DISCONNECTED; this.relay.on('connect', () => { this.emit('connect'); + this._status = NDKRelayStatus.CONNECTED; }); this.relay.on('disconnect', () => { this.emit('disconnect'); + this._status = NDKRelayStatus.DISCONNECTED; }); this.relay.on('notice', (notice: string) => this.handleNotice(notice)); } + get status(): NDKRelayStatus { + return this._status; + } + public async connect(): Promise { try { + this._status = NDKRelayStatus.CONNECTING; await this.relay.connect(); - // eslint-disable-next-line no-empty - } catch (e) {} + } catch (e) { /* empty */ } } async handleNotice(notice: string) { diff --git a/src/relay/pool/index.ts b/src/relay/pool/index.ts index 4be5d0cf..b39cad4c 100644 --- a/src/relay/pool/index.ts +++ b/src/relay/pool/index.ts @@ -1,7 +1,13 @@ import EventEmitter from 'eventemitter3'; -import {NDKRelay} from '../index.js'; +import {NDKRelay, NDKRelayStatus} from '../index.js'; import NDK from '../../index.js'; +export type NDKPoolStats = { + total: number, + connected: number, + disconnected: number, + connecting: number, +}; export class NDKPool extends EventEmitter { public relays = new Map(); private debug: debug.Debugger; @@ -11,9 +17,9 @@ export class NDKPool extends EventEmitter { this.debug = ndk.debug.extend('pool'); relayUrls.forEach(relayUrl => { const relay = new NDKRelay(relayUrl); - relay.on('notice', (relay, notice) => { - this.emit('notice', relay, notice); - }); + relay.on('notice', (relay, notice) => this.emit('notice', relay, notice)); + relay.on('connect', () => this.emit('connect', relay)); + relay.on('disconnect', () => this.emit('disconnect', relay)); this.relays.set(relayUrl, relay); }); } @@ -53,9 +59,33 @@ export class NDKPool extends EventEmitter { await Promise.all(promises); } - - public size(): number { return this.relays.size; } + + /** + * Returns the status of each relay in the pool. + * @returns {NDKPoolStats} An object containing the number of relays in each status. + */ + public stats(): NDKPoolStats { + const stats: NDKPoolStats = { + total: 0, + connected: 0, + disconnected: 0, + connecting: 0, + }; + + for (const relay of this.relays.values()) { + stats.total++; + if (relay.status === NDKRelayStatus.CONNECTED) { + stats.connected++; + } else if (relay.status === NDKRelayStatus.DISCONNECTED) { + stats.disconnected++; + } else if (relay.status === NDKRelayStatus.CONNECTING) { + stats.connecting++; + } + } + + return stats; + } } diff --git a/src/relay/sets/calculate.ts b/src/relay/sets/calculate.ts index e02dd9b3..a9ff2f6b 100644 --- a/src/relay/sets/calculate.ts +++ b/src/relay/sets/calculate.ts @@ -15,7 +15,7 @@ import {NDKFilter} from '../../subscription/index.js'; export function calculateRelaySetFromEvent(ndk: NDK, event: Event): NDKRelaySet { const relays: Set = new Set(); - ndk.relayPool?.relays.forEach(relay => relays.add(relay)); + ndk.pool?.relays.forEach(relay => relays.add(relay)); return new NDKRelaySet(relays); } @@ -32,7 +32,7 @@ export function calculateRelaySetFromFilter( ): NDKRelaySet { const relays: Set = new Set(); - ndk.relayPool?.relays.forEach(relay => relays.add(relay)); + ndk.pool?.relays.forEach(relay => relays.add(relay)); return new NDKRelaySet(relays); } From e1d90e2fe2a8d6529e056d9b51b993b0d22dea70 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Fri, 7 Apr 2023 23:16:07 +0300 Subject: [PATCH 035/773] bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 567334a6..d8a60ee4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.24", + "version": "0.0.25", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", From 4f99398242e07b41e6e59a55d04344c04eea2ff8 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Fri, 7 Apr 2023 23:17:56 +0300 Subject: [PATCH 036/773] docs --- docs/README.md | 1 + docs/classes/NDKEvent.md | 42 +++++++++---------- docs/classes/NDKNip07Signer.md | 8 ++-- docs/classes/NDKSubscription.md | 20 ++++----- docs/classes/NDKUser.md | 20 ++++----- docs/classes/default.md | 30 ++++++------- docs/enums/NDKKind.md | 56 ++++++++++++------------- docs/interfaces/GetUserParams.md | 8 ++-- docs/interfaces/NDKCacheAdapter.md | 6 +-- docs/interfaces/NDKConstructorParams.md | 8 ++-- docs/interfaces/NDKUserProfile.md | 20 ++++----- docs/interfaces/NDKZapInvoice.md | 14 +++---- docs/modules.md | 4 +- 13 files changed, 119 insertions(+), 118 deletions(-) diff --git a/docs/README.md b/docs/README.md index 91083ba8..39b62635 100644 --- a/docs/README.md +++ b/docs/README.md @@ -20,6 +20,7 @@ npm add @nostr-dev-kit/ndk * note15m6rdfvlmd0z836hk83sg7r59xtv23qnmamhsslq5uc6744fdm4qfkeat3 * [Coracle](https://app.coracle.social/chat/note15m6rdfvlmd0z836hk83sg7r59xtv23qnmamhsslq5uc6744fdm4qfkeat3) * [Nostrchat](https://www.nostrchat.io/channel/a6f436a59fdb5e23c757b1e30478742996c54413df777843e0a731af56a96eea) + * [WIP documentation](https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md) ## Features diff --git a/docs/classes/NDKEvent.md b/docs/classes/NDKEvent.md index 684492ad..152c49fb 100644 --- a/docs/classes/NDKEvent.md +++ b/docs/classes/NDKEvent.md @@ -59,7 +59,7 @@ EventEmitter.constructor #### Defined in -[src/events/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L35) +[src/events/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L35) ## Properties @@ -69,7 +69,7 @@ EventEmitter.constructor #### Defined in -[src/events/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L27) +[src/events/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L27) ___ @@ -79,7 +79,7 @@ ___ #### Defined in -[src/events/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L26) +[src/events/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L26) ___ @@ -103,7 +103,7 @@ ___ #### Defined in -[src/events/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L79) +[src/events/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L79) ___ @@ -113,7 +113,7 @@ ___ #### Defined in -[src/events/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L31) +[src/events/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L31) ___ @@ -137,7 +137,7 @@ ___ #### Defined in -[src/events/index.ts:78](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L78) +[src/events/index.ts:78](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L78) ___ @@ -161,7 +161,7 @@ ___ #### Defined in -[src/events/index.ts:77](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L77) +[src/events/index.ts:77](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L77) ___ @@ -171,7 +171,7 @@ ___ #### Defined in -[src/events/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L30) +[src/events/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L30) ___ @@ -181,7 +181,7 @@ ___ #### Defined in -[src/events/index.ts:25](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L25) +[src/events/index.ts:25](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L25) ___ @@ -191,7 +191,7 @@ ___ #### Defined in -[src/events/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L33) +[src/events/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L33) ___ @@ -201,7 +201,7 @@ ___ #### Defined in -[src/events/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L32) +[src/events/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L32) ___ @@ -211,7 +211,7 @@ ___ #### Defined in -[src/events/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L28) +[src/events/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L28) ___ @@ -221,7 +221,7 @@ ___ #### Defined in -[src/events/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L29) +[src/events/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L29) ## Methods @@ -243,7 +243,7 @@ Get all tags with the given name #### Defined in -[src/events/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L84) +[src/events/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L84) ___ @@ -257,7 +257,7 @@ ___ #### Defined in -[src/events/index.ts:101](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L101) +[src/events/index.ts:101](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L101) ___ @@ -271,7 +271,7 @@ ___ #### Defined in -[src/events/index.ts:92](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L92) +[src/events/index.ts:92](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L92) ___ @@ -287,7 +287,7 @@ the id of the event, or if it's a parameterized event, the id of the event with #### Defined in -[src/events/index.ts:129](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L129) +[src/events/index.ts:129](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L129) ___ @@ -313,7 +313,7 @@ event = new NDKEvent(ndk, { kind: 30000, pubkey: 'pubkey', tags: [ ["d", "d-code #### Defined in -[src/events/index.ts:150](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L150) +[src/events/index.ts:150](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L150) ___ @@ -333,7 +333,7 @@ ___ #### Defined in -[src/events/index.ts:48](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L48) +[src/events/index.ts:48](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L48) ___ @@ -347,7 +347,7 @@ ___ #### Defined in -[src/events/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L88) +[src/events/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L88) ___ @@ -370,4 +370,4 @@ Create a zap request for an existing event #### Defined in -[src/events/index.ts:162](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/index.ts#L162) +[src/events/index.ts:162](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L162) diff --git a/docs/classes/NDKNip07Signer.md b/docs/classes/NDKNip07Signer.md index 4fd202d6..0ae77cab 100644 --- a/docs/classes/NDKNip07Signer.md +++ b/docs/classes/NDKNip07Signer.md @@ -29,7 +29,7 @@ with a NIP-07 browser extension (e.g., getalby, nos2x). #### Defined in -[src/signers/nip07/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/signers/nip07/index.ts#L12) +[src/signers/nip07/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/signers/nip07/index.ts#L12) ## Methods @@ -47,7 +47,7 @@ NDKSigner.blockUntilReady #### Defined in -[src/signers/nip07/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/signers/nip07/index.ts#L18) +[src/signers/nip07/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/signers/nip07/index.ts#L18) ___ @@ -79,7 +79,7 @@ NDKSigner.sign #### Defined in -[src/signers/nip07/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/signers/nip07/index.ts#L47) +[src/signers/nip07/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/signers/nip07/index.ts#L47) ___ @@ -101,4 +101,4 @@ NDKSigner.user #### Defined in -[src/signers/nip07/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/signers/nip07/index.ts#L33) +[src/signers/nip07/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/signers/nip07/index.ts#L33) diff --git a/docs/classes/NDKSubscription.md b/docs/classes/NDKSubscription.md index 6cca8a77..d71d15cd 100644 --- a/docs/classes/NDKSubscription.md +++ b/docs/classes/NDKSubscription.md @@ -81,7 +81,7 @@ EventEmitter.constructor #### Defined in -[src/subscription/index.ts:60](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/subscription/index.ts#L60) +[src/subscription/index.ts:60](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/subscription/index.ts#L60) ## Properties @@ -91,7 +91,7 @@ EventEmitter.constructor #### Defined in -[src/subscription/index.ts:53](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/subscription/index.ts#L53) +[src/subscription/index.ts:53](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/subscription/index.ts#L53) ___ @@ -101,7 +101,7 @@ ___ #### Defined in -[src/subscription/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/subscription/index.ts#L56) +[src/subscription/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/subscription/index.ts#L56) ___ @@ -111,7 +111,7 @@ ___ #### Defined in -[src/subscription/index.ts:54](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/subscription/index.ts#L54) +[src/subscription/index.ts:54](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/subscription/index.ts#L54) ___ @@ -121,7 +121,7 @@ ___ #### Defined in -[src/subscription/index.ts:55](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/subscription/index.ts#L55) +[src/subscription/index.ts:55](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/subscription/index.ts#L55) ___ @@ -131,7 +131,7 @@ ___ #### Defined in -[src/subscription/index.ts:57](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/subscription/index.ts#L57) +[src/subscription/index.ts:57](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/subscription/index.ts#L57) ___ @@ -141,7 +141,7 @@ ___ #### Defined in -[src/subscription/index.ts:52](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/subscription/index.ts#L52) +[src/subscription/index.ts:52](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/subscription/index.ts#L52) ## Methods @@ -161,7 +161,7 @@ ___ #### Defined in -[src/subscription/index.ts:198](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/subscription/index.ts#L198) +[src/subscription/index.ts:198](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/subscription/index.ts#L198) ___ @@ -185,7 +185,7 @@ Called when an event is received from a relay or the cache #### Defined in -[src/subscription/index.ts:169](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/subscription/index.ts#L169) +[src/subscription/index.ts:169](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/subscription/index.ts#L169) ___ @@ -202,4 +202,4 @@ after creating a subscription. #### Defined in -[src/subscription/index.ts:105](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/subscription/index.ts#L105) +[src/subscription/index.ts:105](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/subscription/index.ts#L105) diff --git a/docs/classes/NDKUser.md b/docs/classes/NDKUser.md index 8f74ddf0..39f98264 100644 --- a/docs/classes/NDKUser.md +++ b/docs/classes/NDKUser.md @@ -39,7 +39,7 @@ Represents a pubkey. #### Defined in -[src/user/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/index.ts#L23) +[src/user/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/index.ts#L23) ## Properties @@ -65,7 +65,7 @@ Returns a set of users that this user follows. #### Defined in -[src/user/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/index.ts#L79) +[src/user/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/index.ts#L79) ___ @@ -75,7 +75,7 @@ ___ #### Defined in -[src/user/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/index.ts#L18) +[src/user/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/index.ts#L18) ___ @@ -85,7 +85,7 @@ ___ #### Defined in -[src/user/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/index.ts#L20) +[src/user/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/index.ts#L20) ___ @@ -95,7 +95,7 @@ ___ #### Defined in -[src/user/index.ts:19](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/index.ts#L19) +[src/user/index.ts:19](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/index.ts#L19) ___ @@ -105,7 +105,7 @@ ___ #### Defined in -[src/user/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/index.ts#L21) +[src/user/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/index.ts#L21) ## Methods @@ -119,7 +119,7 @@ ___ #### Defined in -[src/user/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/index.ts#L50) +[src/user/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/index.ts#L50) ___ @@ -133,7 +133,7 @@ ___ #### Defined in -[src/user/index.ts:46](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/index.ts#L46) +[src/user/index.ts:46](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/index.ts#L46) ___ @@ -147,7 +147,7 @@ ___ #### Defined in -[src/user/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/index.ts#L81) +[src/user/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/index.ts#L81) ___ @@ -167,4 +167,4 @@ ___ #### Defined in -[src/user/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/index.ts#L35) +[src/user/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/index.ts#L35) diff --git a/docs/classes/default.md b/docs/classes/default.md index bed790fd..079c06f8 100644 --- a/docs/classes/default.md +++ b/docs/classes/default.md @@ -18,7 +18,7 @@ - [cacheAdapter](default.md#cacheadapter) - [debug](default.md#debug) -- [relayPool](default.md#relaypool) +- [pool](default.md#pool) - [signer](default.md#signer) ### Methods @@ -49,7 +49,7 @@ EventEmitter.constructor #### Defined in -[src/index.ts:42](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L42) +[src/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L43) ## Properties @@ -59,7 +59,7 @@ EventEmitter.constructor #### Defined in -[src/index.ts:39](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L39) +[src/index.ts:40](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L40) ___ @@ -69,17 +69,17 @@ ___ #### Defined in -[src/index.ts:40](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L40) +[src/index.ts:41](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L41) ___ -### relayPool +### pool -• **relayPool**: `NDKPool` +• **pool**: `NDKPool` #### Defined in -[src/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L37) +[src/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L38) ___ @@ -89,7 +89,7 @@ ___ #### Defined in -[src/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L38) +[src/index.ts:39](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L39) ## Methods @@ -105,7 +105,7 @@ Ensures that a signer is available to sign an event. #### Defined in -[src/index.ts:134](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L134) +[src/index.ts:135](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L135) ___ @@ -128,7 +128,7 @@ If the timeout is reached, the connection will be continued to be established in #### Defined in -[src/index.ts:61](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L61) +[src/index.ts:62](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L62) ___ @@ -151,7 +151,7 @@ Fetch a single event #### Defined in -[src/index.ts:97](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L97) +[src/index.ts:98](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L98) ___ @@ -174,7 +174,7 @@ Fetch events #### Defined in -[src/index.ts:110](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L110) +[src/index.ts:111](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L111) ___ @@ -196,7 +196,7 @@ Get a NDKUser object #### Defined in -[src/index.ts:72](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L72) +[src/index.ts:73](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L73) ___ @@ -216,7 +216,7 @@ ___ #### Defined in -[src/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L88) +[src/index.ts:89](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L89) ___ @@ -237,4 +237,4 @@ ___ #### Defined in -[src/index.ts:78](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L78) +[src/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L79) diff --git a/docs/enums/NDKKind.md b/docs/enums/NDKKind.md index c3240a3a..6f72348b 100644 --- a/docs/enums/NDKKind.md +++ b/docs/enums/NDKKind.md @@ -43,7 +43,7 @@ #### Defined in -[src/events/kind.ts:31](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L31) +[src/events/kind.ts:31](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L31) ___ @@ -53,7 +53,7 @@ ___ #### Defined in -[src/events/kind.ts:30](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L30) +[src/events/kind.ts:30](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L30) ___ @@ -63,7 +63,7 @@ ___ #### Defined in -[src/events/kind.ts:12](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L12) +[src/events/kind.ts:12](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L12) ___ @@ -73,7 +73,7 @@ ___ #### Defined in -[src/events/kind.ts:29](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L29) +[src/events/kind.ts:29](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L29) ___ @@ -83,7 +83,7 @@ ___ #### Defined in -[src/events/kind.ts:27](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L27) +[src/events/kind.ts:27](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L27) ___ @@ -93,7 +93,7 @@ ___ #### Defined in -[src/events/kind.ts:26](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L26) +[src/events/kind.ts:26](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L26) ___ @@ -103,7 +103,7 @@ ___ #### Defined in -[src/events/kind.ts:13](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L13) +[src/events/kind.ts:13](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L13) ___ @@ -113,7 +113,7 @@ ___ #### Defined in -[src/events/kind.ts:16](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L16) +[src/events/kind.ts:16](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L16) ___ @@ -123,7 +123,7 @@ ___ #### Defined in -[src/events/kind.ts:15](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L15) +[src/events/kind.ts:15](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L15) ___ @@ -133,7 +133,7 @@ ___ #### Defined in -[src/events/kind.ts:14](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L14) +[src/events/kind.ts:14](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L14) ___ @@ -143,7 +143,7 @@ ___ #### Defined in -[src/events/kind.ts:17](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L17) +[src/events/kind.ts:17](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L17) ___ @@ -153,7 +153,7 @@ ___ #### Defined in -[src/events/kind.ts:24](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L24) +[src/events/kind.ts:24](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L24) ___ @@ -163,7 +163,7 @@ ___ #### Defined in -[src/events/kind.ts:7](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L7) +[src/events/kind.ts:7](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L7) ___ @@ -173,7 +173,7 @@ ___ #### Defined in -[src/events/kind.ts:8](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L8) +[src/events/kind.ts:8](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L8) ___ @@ -183,7 +183,7 @@ ___ #### Defined in -[src/events/kind.ts:9](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L9) +[src/events/kind.ts:9](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L9) ___ @@ -193,7 +193,7 @@ ___ #### Defined in -[src/events/kind.ts:4](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L4) +[src/events/kind.ts:4](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L4) ___ @@ -203,7 +203,7 @@ ___ #### Defined in -[src/events/kind.ts:21](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L21) +[src/events/kind.ts:21](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L21) ___ @@ -213,7 +213,7 @@ ___ #### Defined in -[src/events/kind.ts:25](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L25) +[src/events/kind.ts:25](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L25) ___ @@ -223,7 +223,7 @@ ___ #### Defined in -[src/events/kind.ts:22](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L22) +[src/events/kind.ts:22](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L22) ___ @@ -233,7 +233,7 @@ ___ #### Defined in -[src/events/kind.ts:28](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L28) +[src/events/kind.ts:28](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L28) ___ @@ -243,7 +243,7 @@ ___ #### Defined in -[src/events/kind.ts:11](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L11) +[src/events/kind.ts:11](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L11) ___ @@ -253,7 +253,7 @@ ___ #### Defined in -[src/events/kind.ts:6](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L6) +[src/events/kind.ts:6](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L6) ___ @@ -263,7 +263,7 @@ ___ #### Defined in -[src/events/kind.ts:23](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L23) +[src/events/kind.ts:23](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L23) ___ @@ -273,7 +273,7 @@ ___ #### Defined in -[src/events/kind.ts:18](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L18) +[src/events/kind.ts:18](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L18) ___ @@ -283,7 +283,7 @@ ___ #### Defined in -[src/events/kind.ts:10](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L10) +[src/events/kind.ts:10](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L10) ___ @@ -293,7 +293,7 @@ ___ #### Defined in -[src/events/kind.ts:5](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L5) +[src/events/kind.ts:5](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L5) ___ @@ -303,7 +303,7 @@ ___ #### Defined in -[src/events/kind.ts:20](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L20) +[src/events/kind.ts:20](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L20) ___ @@ -313,4 +313,4 @@ ___ #### Defined in -[src/events/kind.ts:19](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/events/kind.ts#L19) +[src/events/kind.ts:19](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L19) diff --git a/docs/interfaces/GetUserParams.md b/docs/interfaces/GetUserParams.md index 60ea1c02..792fd5b8 100644 --- a/docs/interfaces/GetUserParams.md +++ b/docs/interfaces/GetUserParams.md @@ -29,7 +29,7 @@ NDKUserParams.hexpubkey #### Defined in -[src/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L33) +[src/index.ts:34](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L34) ___ @@ -43,7 +43,7 @@ NDKUserParams.nip05 #### Defined in -[src/user/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/index.ts#L10) +[src/user/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/index.ts#L10) ___ @@ -57,7 +57,7 @@ NDKUserParams.npub #### Defined in -[src/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L32) +[src/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L33) ___ @@ -71,4 +71,4 @@ NDKUserParams.relayUrls #### Defined in -[src/user/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/index.ts#L11) +[src/user/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/index.ts#L11) diff --git a/docs/interfaces/NDKCacheAdapter.md b/docs/interfaces/NDKCacheAdapter.md index c077b15f..c7d92754 100644 --- a/docs/interfaces/NDKCacheAdapter.md +++ b/docs/interfaces/NDKCacheAdapter.md @@ -25,7 +25,7 @@ When this is false, the cache will be queried in addition to the relays. #### Defined in -[src/cache/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/cache/index.ts#L10) +[src/cache/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/cache/index.ts#L10) ## Methods @@ -45,7 +45,7 @@ When this is false, the cache will be queried in addition to the relays. #### Defined in -[src/cache/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/cache/index.ts#L12) +[src/cache/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/cache/index.ts#L12) ___ @@ -66,4 +66,4 @@ ___ #### Defined in -[src/cache/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/cache/index.ts#L13) +[src/cache/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/cache/index.ts#L13) diff --git a/docs/interfaces/NDKConstructorParams.md b/docs/interfaces/NDKConstructorParams.md index de0d72ec..7ecb5ecf 100644 --- a/docs/interfaces/NDKConstructorParams.md +++ b/docs/interfaces/NDKConstructorParams.md @@ -19,7 +19,7 @@ #### Defined in -[src/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L28) +[src/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L29) ___ @@ -29,7 +29,7 @@ ___ #### Defined in -[src/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L29) +[src/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L30) ___ @@ -39,7 +39,7 @@ ___ #### Defined in -[src/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L26) +[src/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L27) ___ @@ -49,4 +49,4 @@ ___ #### Defined in -[src/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/index.ts#L27) +[src/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L28) diff --git a/docs/interfaces/NDKUserProfile.md b/docs/interfaces/NDKUserProfile.md index 73e6e563..a60abad0 100644 --- a/docs/interfaces/NDKUserProfile.md +++ b/docs/interfaces/NDKUserProfile.md @@ -25,7 +25,7 @@ #### Defined in -[src/user/profile.ts:12](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/profile.ts#L12) +[src/user/profile.ts:12](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/profile.ts#L12) ___ @@ -35,7 +35,7 @@ ___ #### Defined in -[src/user/profile.ts:7](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/profile.ts#L7) +[src/user/profile.ts:7](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/profile.ts#L7) ___ @@ -45,7 +45,7 @@ ___ #### Defined in -[src/user/profile.ts:8](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/profile.ts#L8) +[src/user/profile.ts:8](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/profile.ts#L8) ___ @@ -55,7 +55,7 @@ ___ #### Defined in -[src/user/profile.ts:5](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/profile.ts#L5) +[src/user/profile.ts:5](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/profile.ts#L5) ___ @@ -65,7 +65,7 @@ ___ #### Defined in -[src/user/profile.ts:6](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/profile.ts#L6) +[src/user/profile.ts:6](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/profile.ts#L6) ___ @@ -75,7 +75,7 @@ ___ #### Defined in -[src/user/profile.ts:10](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/profile.ts#L10) +[src/user/profile.ts:10](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/profile.ts#L10) ___ @@ -85,7 +85,7 @@ ___ #### Defined in -[src/user/profile.ts:11](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/profile.ts#L11) +[src/user/profile.ts:11](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/profile.ts#L11) ___ @@ -95,7 +95,7 @@ ___ #### Defined in -[src/user/profile.ts:4](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/profile.ts#L4) +[src/user/profile.ts:4](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/profile.ts#L4) ___ @@ -105,7 +105,7 @@ ___ #### Defined in -[src/user/profile.ts:9](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/profile.ts#L9) +[src/user/profile.ts:9](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/profile.ts#L9) ___ @@ -115,4 +115,4 @@ ___ #### Defined in -[src/user/profile.ts:13](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/user/profile.ts#L13) +[src/user/profile.ts:13](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/profile.ts#L13) diff --git a/docs/interfaces/NDKZapInvoice.md b/docs/interfaces/NDKZapInvoice.md index 339e19c8..efd4067e 100644 --- a/docs/interfaces/NDKZapInvoice.md +++ b/docs/interfaces/NDKZapInvoice.md @@ -22,7 +22,7 @@ #### Defined in -[src/zap/invoice.ts:10](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/zap/invoice.ts#L10) +[src/zap/invoice.ts:10](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/zap/invoice.ts#L10) ___ @@ -32,7 +32,7 @@ ___ #### Defined in -[src/zap/invoice.ts:11](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/zap/invoice.ts#L11) +[src/zap/invoice.ts:11](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/zap/invoice.ts#L11) ___ @@ -42,7 +42,7 @@ ___ #### Defined in -[src/zap/invoice.ts:5](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/zap/invoice.ts#L5) +[src/zap/invoice.ts:5](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/zap/invoice.ts#L5) ___ @@ -52,7 +52,7 @@ ___ #### Defined in -[src/zap/invoice.ts:8](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/zap/invoice.ts#L8) +[src/zap/invoice.ts:8](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/zap/invoice.ts#L8) ___ @@ -62,7 +62,7 @@ ___ #### Defined in -[src/zap/invoice.ts:9](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/zap/invoice.ts#L9) +[src/zap/invoice.ts:9](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/zap/invoice.ts#L9) ___ @@ -72,7 +72,7 @@ ___ #### Defined in -[src/zap/invoice.ts:7](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/zap/invoice.ts#L7) +[src/zap/invoice.ts:7](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/zap/invoice.ts#L7) ___ @@ -82,4 +82,4 @@ ___ #### Defined in -[src/zap/invoice.ts:6](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/zap/invoice.ts#L6) +[src/zap/invoice.ts:6](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/zap/invoice.ts#L6) diff --git a/docs/modules.md b/docs/modules.md index 2af15e5a..b5b691e5 100644 --- a/docs/modules.md +++ b/docs/modules.md @@ -43,7 +43,7 @@ #### Defined in -[src/subscription/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/subscription/index.ts#L10) +[src/subscription/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/subscription/index.ts#L10) ## Functions @@ -63,4 +63,4 @@ #### Defined in -[src/zap/invoice.ts:14](https://github.com/nostr-dev-kit/ndk/blob/ca80fef/src/zap/invoice.ts#L14) +[src/zap/invoice.ts:14](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/zap/invoice.ts#L14) From af5cad8d0236d9f08370237527c18358a231d2c2 Mon Sep 17 00:00:00 2001 From: Fryheid <80047487+fryheid@users.noreply.github.com> Date: Fri, 7 Apr 2023 22:59:02 +0200 Subject: [PATCH 037/773] Same variable name for NIP-07 signer example code Make it clear to users that they need the same NIP-07 signer variable (nip07signer), from the previous example code above, to use the .user() function. Also added the user.npub to the console.log message for improved insight. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index bccca200..aba31cdc 100644 --- a/README.md +++ b/README.md @@ -106,9 +106,9 @@ NDK can now ask for permission, via their NIP-07 extension, to... **Read the user's public key** ```ts -signer.user().then(async (user) => { +nip07signer.user().then(async (user) => { if (!!user.npub) { - console.log("Permission granted to read their public key."); + console.log("Permission granted to read their public key:", user.npub); } }); ``` From beec5dcf62c01e41e0468360aec9770f119a5502 Mon Sep 17 00:00:00 2001 From: Fryheid <80047487+fryheid@users.noreply.github.com> Date: Fri, 7 Apr 2023 23:05:57 +0200 Subject: [PATCH 038/773] Make the same changes to the docs/README --- docs/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/README.md b/docs/README.md index 39b62635..84eb8b81 100644 --- a/docs/README.md +++ b/docs/README.md @@ -108,9 +108,9 @@ NDK can now ask for permission, via their NIP-07 extension, to... **Read the user's public key** ```ts -signer.user().then(async (user) => { +nip07signer.user().then(async (user) => { if (!!user.npub) { - console.log("Permission granted to read their public key."); + console.log("Permission granted to read their public key:", user.npub); } }); ``` From 7f329bbe231d9117fd8de88287e2e9ee82b92bd3 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 8 Apr 2023 12:40:41 +0300 Subject: [PATCH 039/773] Fix memory leak --- src/subscription/index.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/subscription/index.ts b/src/subscription/index.ts index e65f830c..35246875 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -119,7 +119,7 @@ export class NDKSubscription extends EventEmitter { await cachePromise; // if the cache has a hit, return early - if (this.events.size > 0) { + if (this.eventIds.size > 0) { this.debug('cache hit, skipping relay query'); this.emit('eose'); return; @@ -158,7 +158,7 @@ export class NDKSubscription extends EventEmitter { // EVENT handling private eventFirstSeen = new Map(); - private events = new Map(); + private eventIds = new Set(); /** * Called when an event is received from a relay or the cache @@ -168,7 +168,7 @@ export class NDKSubscription extends EventEmitter { */ public eventReceived(event: NDKEvent, relay: NDKRelay | undefined, fromCache = false) { if (!fromCache && relay) { - const eventAlreadySeen = this.events.has(event.id); + const eventAlreadySeen = this.eventIds.has(event.id); if (eventAlreadySeen) { const timeSinceFirstSeen = Date.now() - (this.eventFirstSeen.get(event.id) || 0); @@ -186,7 +186,7 @@ export class NDKSubscription extends EventEmitter { this.eventFirstSeen.set(event.id, Date.now()); } - this.events.set(event.id, event); + this.eventIds.add(event.id); this.emit('event', event, relay); } From 3ea6e4de9613157eb9bb543478c067ad4ea0adf7 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 8 Apr 2023 12:41:14 +0300 Subject: [PATCH 040/773] Send active subscriptions to relays in a set as they become available --- src/relay/sets/index.ts | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/relay/sets/index.ts b/src/relay/sets/index.ts index 940e8ee1..5aa99b9f 100644 --- a/src/relay/sets/index.ts +++ b/src/relay/sets/index.ts @@ -1,4 +1,4 @@ -import {NDKRelay} from '../index.js'; +import {NDKRelay, NDKRelayStatus} from '../index.js'; import NDKEvent from '../../events/index.js'; import {NDKSubscription} from '../../subscription/index.js'; @@ -16,13 +16,21 @@ export class NDKRelaySet { this.relays = relays; } + private subscribeOnRelay(relay: NDKRelay, subscription: NDKSubscription) { + const sub = relay.subscribe(subscription); + subscription.relaySubscriptions.set(relay, sub); + } + public subscribe(subscription: NDKSubscription): NDKSubscription { this.relays.forEach(relay => { - // TODO: if relay is not connected, don't try to send, but rather attach - // to connected event and send it at that moment if this subscription hasn't - // been destroyed - const sub = relay.subscribe(subscription); - subscription.relaySubscriptions.set(relay, sub); + if (relay.status === NDKRelayStatus.CONNECTED) { + this.subscribeOnRelay(relay, subscription); + } + }); + + this.relays.forEach(relay => { + // TODO need to remove this listener when the subscription is closed + relay.on('connect', () => this.subscribeOnRelay(relay, subscription)); }); return subscription; From 516dc275c9d0848ec8533ca5dfce42b519135dc9 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 8 Apr 2023 12:57:08 +0300 Subject: [PATCH 041/773] gather relay connectivity stats --- src/index.ts | 2 +- src/relay/index.ts | 82 ++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 81 insertions(+), 3 deletions(-) diff --git a/src/index.ts b/src/index.ts index 1d184317..b79c82bb 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,5 @@ import NDKEvent from './events/index.js'; import {NDKPool} from './relay/pool/index.js'; -import {NDKRelay} from './relay/index.js'; import type {NDKSigner} from './signers/index.js'; import NDKUser, {NDKUserParams} from './user/index.js'; import {NDKUserProfile} from './user/profile.js'; @@ -19,6 +18,7 @@ export { NDKCacheAdapter, NDKSubscription }; +export {NDKRelay} from './relay/index.js'; export {NDKKind} from './events/kind.js'; export {NDKNip07Signer} from './signers/nip07/index.js'; export {NDKZapInvoice, zapInvoiceFromEvent} from './zap/invoice.js'; diff --git a/src/relay/index.ts b/src/relay/index.ts index 071d1b39..fef3a2a3 100644 --- a/src/relay/index.ts +++ b/src/relay/index.ts @@ -2,7 +2,7 @@ import 'websocket-polyfill'; import {relayInit, Sub} from 'nostr-tools'; import type {Event as SignedEvent} from 'nostr-tools'; import User from '../user/index.js'; -import {NDKRelayScore} from './score'; +import {NDKRelayScore} from './score.js'; import {NDKSubscription} from '../subscription/index.js'; import NDKEvent, {NostrEvent} from '../events/index.js'; import EventEmitter from 'eventemitter3'; @@ -15,11 +15,44 @@ export enum NDKRelayStatus { RECONNECTING, }; +interface NDKRelayConnectionStats { + /** + * The number of times a connection has been attempted. + */ + attempts: number; + + /** + * The number of times a connection has been successfully established. + */ + success: number; + + /** + * The durations of the last 100 connections in milliseconds. + */ + durations: number[]; + + /** + * The time the current connection was established in milliseconds. + */ + connectedAt?: number; +} + +/** + * The NDKRelay class represents a connection to a relay. + * + * @emits NDKRelay#connect + * @emits NDKRelay#disconnect + * @emits NDKRelay#notice + * @emits NDKRelay#event + * @emits NDKRelay#eose + */ export class NDKRelay extends EventEmitter { readonly url: string; readonly scores: Map; private relay; private _status: NDKRelayStatus; + private connectedAt?: number; + private _connectionStats: NDKRelayConnectionStats = {attempts: 0, success: 0, durations: []}; public constructor(url: string) { super(); @@ -29,13 +62,25 @@ export class NDKRelay extends EventEmitter { this._status = NDKRelayStatus.DISCONNECTED; this.relay.on('connect', () => { + this.updateConnectionStats.connected(); this.emit('connect'); this._status = NDKRelayStatus.CONNECTED; }); this.relay.on('disconnect', () => { + this.updateConnectionStats.disconnected(); this.emit('disconnect'); - this._status = NDKRelayStatus.DISCONNECTED; + + if (this._status === NDKRelayStatus.CONNECTED) { + this._status = NDKRelayStatus.DISCONNECTED; + + // if the last connection was less than 5 seconds ago, wait some time before trying to reconnect + if (this.connectedAt && Date.now() - this.connectedAt < 5000) { + setTimeout(() => this.connect(), 60000); + } else { + this.connect(); + } + } }); this.relay.on('notice', (notice: string) => this.handleNotice(notice)); @@ -47,6 +92,7 @@ export class NDKRelay extends EventEmitter { public async connect(): Promise { try { + this.updateConnectionStats.attempt(); this._status = NDKRelayStatus.CONNECTING; await this.relay.connect(); } catch (e) { /* empty */ } @@ -89,4 +135,36 @@ export class NDKRelay extends EventEmitter { public scoreSlowerEvent(timeDiffInMs: number): void { // TODO } + + /** + * Utility functions to update the connection stats. + */ + private updateConnectionStats = { + connected: () => { + this._connectionStats.success++; + this._connectionStats.connectedAt = Date.now(); + }, + + disconnected: () => { + if (this._connectionStats.connectedAt) { + this._connectionStats.durations.push(Date.now() - this._connectionStats.connectedAt); + + if (this._connectionStats.durations.length > 100) { + this._connectionStats.durations.shift(); + } + } + this._connectionStats.connectedAt = undefined; + }, + + attempt: () => { + this._connectionStats.attempts++; + } + }; + + /** + * Number of times this relay has been successfully connected to. + */ + get connectionStats(): NDKRelayConnectionStats { + return this._connectionStats; + } } From 5bceb9f055e6f22b8c080bc25fdc3c02f48a0463 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 8 Apr 2023 12:57:18 +0300 Subject: [PATCH 042/773] bump --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index d8a60ee4..2a096821 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.25", + "version": "0.0.26", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", @@ -22,7 +22,7 @@ "scripts": { "dev": "node tools/cleanup esm && tsc -w -p config/tsconfig.esm.json", "build": "rm -rf lib && node build.js && tsc", - "clean": "rm -rf lib", + "clean": "rm -rf lib docs", "test": "jest", "lint": "eslint src/**/*.ts", "compile": "tsc", From 95446a77f50dd2e3454f70bef7bd196ab0c8d8cc Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 8 Apr 2023 12:59:37 +0300 Subject: [PATCH 043/773] docs --- docs/classes/NDKEvent.md | 42 ++--- docs/classes/NDKNip07Signer.md | 8 +- docs/classes/NDKRelay.md | 222 ++++++++++++++++++++++++ docs/classes/NDKSubscription.md | 26 +-- docs/classes/NDKUser.md | 20 +-- docs/classes/default.md | 24 +-- docs/enums/NDKKind.md | 56 +++--- docs/interfaces/GetUserParams.md | 8 +- docs/interfaces/NDKCacheAdapter.md | 6 +- docs/interfaces/NDKConstructorParams.md | 8 +- docs/interfaces/NDKUserProfile.md | 20 +-- docs/interfaces/NDKZapInvoice.md | 14 +- docs/modules.md | 5 +- 13 files changed, 341 insertions(+), 118 deletions(-) create mode 100644 docs/classes/NDKRelay.md diff --git a/docs/classes/NDKEvent.md b/docs/classes/NDKEvent.md index 152c49fb..36a8b856 100644 --- a/docs/classes/NDKEvent.md +++ b/docs/classes/NDKEvent.md @@ -59,7 +59,7 @@ EventEmitter.constructor #### Defined in -[src/events/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L35) +[src/events/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L35) ## Properties @@ -69,7 +69,7 @@ EventEmitter.constructor #### Defined in -[src/events/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L27) +[src/events/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L27) ___ @@ -79,7 +79,7 @@ ___ #### Defined in -[src/events/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L26) +[src/events/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L26) ___ @@ -103,7 +103,7 @@ ___ #### Defined in -[src/events/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L79) +[src/events/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L79) ___ @@ -113,7 +113,7 @@ ___ #### Defined in -[src/events/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L31) +[src/events/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L31) ___ @@ -137,7 +137,7 @@ ___ #### Defined in -[src/events/index.ts:78](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L78) +[src/events/index.ts:78](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L78) ___ @@ -161,7 +161,7 @@ ___ #### Defined in -[src/events/index.ts:77](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L77) +[src/events/index.ts:77](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L77) ___ @@ -171,7 +171,7 @@ ___ #### Defined in -[src/events/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L30) +[src/events/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L30) ___ @@ -181,7 +181,7 @@ ___ #### Defined in -[src/events/index.ts:25](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L25) +[src/events/index.ts:25](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L25) ___ @@ -191,7 +191,7 @@ ___ #### Defined in -[src/events/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L33) +[src/events/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L33) ___ @@ -201,7 +201,7 @@ ___ #### Defined in -[src/events/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L32) +[src/events/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L32) ___ @@ -211,7 +211,7 @@ ___ #### Defined in -[src/events/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L28) +[src/events/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L28) ___ @@ -221,7 +221,7 @@ ___ #### Defined in -[src/events/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L29) +[src/events/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L29) ## Methods @@ -243,7 +243,7 @@ Get all tags with the given name #### Defined in -[src/events/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L84) +[src/events/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L84) ___ @@ -257,7 +257,7 @@ ___ #### Defined in -[src/events/index.ts:101](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L101) +[src/events/index.ts:101](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L101) ___ @@ -271,7 +271,7 @@ ___ #### Defined in -[src/events/index.ts:92](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L92) +[src/events/index.ts:92](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L92) ___ @@ -287,7 +287,7 @@ the id of the event, or if it's a parameterized event, the id of the event with #### Defined in -[src/events/index.ts:129](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L129) +[src/events/index.ts:129](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L129) ___ @@ -313,7 +313,7 @@ event = new NDKEvent(ndk, { kind: 30000, pubkey: 'pubkey', tags: [ ["d", "d-code #### Defined in -[src/events/index.ts:150](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L150) +[src/events/index.ts:150](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L150) ___ @@ -333,7 +333,7 @@ ___ #### Defined in -[src/events/index.ts:48](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L48) +[src/events/index.ts:48](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L48) ___ @@ -347,7 +347,7 @@ ___ #### Defined in -[src/events/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L88) +[src/events/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L88) ___ @@ -370,4 +370,4 @@ Create a zap request for an existing event #### Defined in -[src/events/index.ts:162](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/index.ts#L162) +[src/events/index.ts:162](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L162) diff --git a/docs/classes/NDKNip07Signer.md b/docs/classes/NDKNip07Signer.md index 0ae77cab..78722685 100644 --- a/docs/classes/NDKNip07Signer.md +++ b/docs/classes/NDKNip07Signer.md @@ -29,7 +29,7 @@ with a NIP-07 browser extension (e.g., getalby, nos2x). #### Defined in -[src/signers/nip07/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/signers/nip07/index.ts#L12) +[src/signers/nip07/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/signers/nip07/index.ts#L12) ## Methods @@ -47,7 +47,7 @@ NDKSigner.blockUntilReady #### Defined in -[src/signers/nip07/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/signers/nip07/index.ts#L18) +[src/signers/nip07/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/signers/nip07/index.ts#L18) ___ @@ -79,7 +79,7 @@ NDKSigner.sign #### Defined in -[src/signers/nip07/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/signers/nip07/index.ts#L47) +[src/signers/nip07/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/signers/nip07/index.ts#L47) ___ @@ -101,4 +101,4 @@ NDKSigner.user #### Defined in -[src/signers/nip07/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/signers/nip07/index.ts#L33) +[src/signers/nip07/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/signers/nip07/index.ts#L33) diff --git a/docs/classes/NDKRelay.md b/docs/classes/NDKRelay.md new file mode 100644 index 00000000..5ea7f0a3 --- /dev/null +++ b/docs/classes/NDKRelay.md @@ -0,0 +1,222 @@ +[NDK](../README.md) / [Exports](../modules.md) / NDKRelay + +# Class: NDKRelay + +The NDKRelay class represents a connection to a relay. + +**`Emits`** + +NDKRelay#connect + +**`Emits`** + +NDKRelay#disconnect + +**`Emits`** + +NDKRelay#notice + +**`Emits`** + +NDKRelay#event + +**`Emits`** + +NDKRelay#eose + +## Hierarchy + +- `EventEmitter` + + ↳ **`NDKRelay`** + +## Table of contents + +### Constructors + +- [constructor](NDKRelay.md#constructor) + +### Properties + +- [scores](NDKRelay.md#scores) +- [url](NDKRelay.md#url) + +### Accessors + +- [connectionStats](NDKRelay.md#connectionstats) +- [status](NDKRelay.md#status) + +### Methods + +- [connect](NDKRelay.md#connect) +- [handleNotice](NDKRelay.md#handlenotice) +- [publish](NDKRelay.md#publish) +- [scoreSlowerEvent](NDKRelay.md#scoreslowerevent) +- [subscribe](NDKRelay.md#subscribe) + +## Constructors + +### constructor + +• **new NDKRelay**(`url`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `url` | `string` | + +#### Overrides + +EventEmitter.constructor + +#### Defined in + +[src/relay/index.ts:57](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/relay/index.ts#L57) + +## Properties + +### scores + +• `Readonly` **scores**: `Map`<[`NDKUser`](NDKUser.md), `number`\> + +#### Defined in + +[src/relay/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/relay/index.ts#L51) + +___ + +### url + +• `Readonly` **url**: `string` + +#### Defined in + +[src/relay/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/relay/index.ts#L50) + +## Accessors + +### connectionStats + +• `get` **connectionStats**(): `NDKRelayConnectionStats` + +Number of times this relay has been successfully connected to. + +#### Returns + +`NDKRelayConnectionStats` + +#### Defined in + +[src/relay/index.ts:167](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/relay/index.ts#L167) + +___ + +### status + +• `get` **status**(): `NDKRelayStatus` + +#### Returns + +`NDKRelayStatus` + +#### Defined in + +[src/relay/index.ts:89](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/relay/index.ts#L89) + +## Methods + +### connect + +▸ **connect**(): `Promise`<`void`\> + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/relay/index.ts:93](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/relay/index.ts#L93) + +___ + +### handleNotice + +▸ **handleNotice**(`notice`): `Promise`<`void`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `notice` | `string` | + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/relay/index.ts:101](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/relay/index.ts#L101) + +___ + +### publish + +▸ **publish**(`event`): `Promise`<`void`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `event` | [`NDKEvent`](NDKEvent.md) | + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/relay/index.ts:124](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/relay/index.ts#L124) + +___ + +### scoreSlowerEvent + +▸ **scoreSlowerEvent**(`timeDiffInMs`): `void` + +Called when this relay has responded with an event but +wasn't the fastest one. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `timeDiffInMs` | `number` | The time difference in ms between the fastest and this relay in milliseconds | + +#### Returns + +`void` + +#### Defined in + +[src/relay/index.ts:135](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/relay/index.ts#L135) + +___ + +### subscribe + +▸ **subscribe**(`subscription`): `Sub` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `subscription` | [`NDKSubscription`](NDKSubscription.md) | + +#### Returns + +`Sub` + +#### Defined in + +[src/relay/index.ts:105](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/relay/index.ts#L105) diff --git a/docs/classes/NDKSubscription.md b/docs/classes/NDKSubscription.md index d71d15cd..ad63d049 100644 --- a/docs/classes/NDKSubscription.md +++ b/docs/classes/NDKSubscription.md @@ -81,7 +81,7 @@ EventEmitter.constructor #### Defined in -[src/subscription/index.ts:60](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/subscription/index.ts#L60) +[src/subscription/index.ts:60](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/subscription/index.ts#L60) ## Properties @@ -91,7 +91,7 @@ EventEmitter.constructor #### Defined in -[src/subscription/index.ts:53](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/subscription/index.ts#L53) +[src/subscription/index.ts:53](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/subscription/index.ts#L53) ___ @@ -101,7 +101,7 @@ ___ #### Defined in -[src/subscription/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/subscription/index.ts#L56) +[src/subscription/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/subscription/index.ts#L56) ___ @@ -111,7 +111,7 @@ ___ #### Defined in -[src/subscription/index.ts:54](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/subscription/index.ts#L54) +[src/subscription/index.ts:54](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/subscription/index.ts#L54) ___ @@ -121,17 +121,17 @@ ___ #### Defined in -[src/subscription/index.ts:55](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/subscription/index.ts#L55) +[src/subscription/index.ts:55](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/subscription/index.ts#L55) ___ ### relaySubscriptions -• **relaySubscriptions**: `Map`<`NDKRelay`, `Sub`\> +• **relaySubscriptions**: `Map`<[`NDKRelay`](NDKRelay.md), `Sub`\> #### Defined in -[src/subscription/index.ts:57](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/subscription/index.ts#L57) +[src/subscription/index.ts:57](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/subscription/index.ts#L57) ___ @@ -141,7 +141,7 @@ ___ #### Defined in -[src/subscription/index.ts:52](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/subscription/index.ts#L52) +[src/subscription/index.ts:52](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/subscription/index.ts#L52) ## Methods @@ -153,7 +153,7 @@ ___ | Name | Type | | :------ | :------ | -| `relay` | `NDKRelay` | +| `relay` | [`NDKRelay`](NDKRelay.md) | #### Returns @@ -161,7 +161,7 @@ ___ #### Defined in -[src/subscription/index.ts:198](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/subscription/index.ts#L198) +[src/subscription/index.ts:198](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/subscription/index.ts#L198) ___ @@ -176,7 +176,7 @@ Called when an event is received from a relay or the cache | Name | Type | Default value | Description | | :------ | :------ | :------ | :------ | | `event` | [`NDKEvent`](NDKEvent.md) | `undefined` | | -| `relay` | `undefined` \| `NDKRelay` | `undefined` | | +| `relay` | `undefined` \| [`NDKRelay`](NDKRelay.md) | `undefined` | | | `fromCache` | `boolean` | `false` | Whether the event was received from the cache | #### Returns @@ -185,7 +185,7 @@ Called when an event is received from a relay or the cache #### Defined in -[src/subscription/index.ts:169](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/subscription/index.ts#L169) +[src/subscription/index.ts:169](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/subscription/index.ts#L169) ___ @@ -202,4 +202,4 @@ after creating a subscription. #### Defined in -[src/subscription/index.ts:105](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/subscription/index.ts#L105) +[src/subscription/index.ts:105](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/subscription/index.ts#L105) diff --git a/docs/classes/NDKUser.md b/docs/classes/NDKUser.md index 39f98264..c9d629ff 100644 --- a/docs/classes/NDKUser.md +++ b/docs/classes/NDKUser.md @@ -39,7 +39,7 @@ Represents a pubkey. #### Defined in -[src/user/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/index.ts#L23) +[src/user/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/index.ts#L23) ## Properties @@ -65,7 +65,7 @@ Returns a set of users that this user follows. #### Defined in -[src/user/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/index.ts#L79) +[src/user/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/index.ts#L79) ___ @@ -75,7 +75,7 @@ ___ #### Defined in -[src/user/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/index.ts#L18) +[src/user/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/index.ts#L18) ___ @@ -85,7 +85,7 @@ ___ #### Defined in -[src/user/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/index.ts#L20) +[src/user/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/index.ts#L20) ___ @@ -95,7 +95,7 @@ ___ #### Defined in -[src/user/index.ts:19](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/index.ts#L19) +[src/user/index.ts:19](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/index.ts#L19) ___ @@ -105,7 +105,7 @@ ___ #### Defined in -[src/user/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/index.ts#L21) +[src/user/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/index.ts#L21) ## Methods @@ -119,7 +119,7 @@ ___ #### Defined in -[src/user/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/index.ts#L50) +[src/user/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/index.ts#L50) ___ @@ -133,7 +133,7 @@ ___ #### Defined in -[src/user/index.ts:46](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/index.ts#L46) +[src/user/index.ts:46](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/index.ts#L46) ___ @@ -147,7 +147,7 @@ ___ #### Defined in -[src/user/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/index.ts#L81) +[src/user/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/index.ts#L81) ___ @@ -167,4 +167,4 @@ ___ #### Defined in -[src/user/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/index.ts#L35) +[src/user/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/index.ts#L35) diff --git a/docs/classes/default.md b/docs/classes/default.md index 079c06f8..03618747 100644 --- a/docs/classes/default.md +++ b/docs/classes/default.md @@ -49,7 +49,7 @@ EventEmitter.constructor #### Defined in -[src/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L43) +[src/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L43) ## Properties @@ -59,7 +59,7 @@ EventEmitter.constructor #### Defined in -[src/index.ts:40](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L40) +[src/index.ts:40](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L40) ___ @@ -69,7 +69,7 @@ ___ #### Defined in -[src/index.ts:41](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L41) +[src/index.ts:41](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L41) ___ @@ -79,7 +79,7 @@ ___ #### Defined in -[src/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L38) +[src/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L38) ___ @@ -89,7 +89,7 @@ ___ #### Defined in -[src/index.ts:39](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L39) +[src/index.ts:39](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L39) ## Methods @@ -105,7 +105,7 @@ Ensures that a signer is available to sign an event. #### Defined in -[src/index.ts:135](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L135) +[src/index.ts:135](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L135) ___ @@ -128,7 +128,7 @@ If the timeout is reached, the connection will be continued to be established in #### Defined in -[src/index.ts:62](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L62) +[src/index.ts:62](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L62) ___ @@ -151,7 +151,7 @@ Fetch a single event #### Defined in -[src/index.ts:98](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L98) +[src/index.ts:98](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L98) ___ @@ -174,7 +174,7 @@ Fetch events #### Defined in -[src/index.ts:111](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L111) +[src/index.ts:111](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L111) ___ @@ -196,7 +196,7 @@ Get a NDKUser object #### Defined in -[src/index.ts:73](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L73) +[src/index.ts:73](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L73) ___ @@ -216,7 +216,7 @@ ___ #### Defined in -[src/index.ts:89](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L89) +[src/index.ts:89](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L89) ___ @@ -237,4 +237,4 @@ ___ #### Defined in -[src/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L79) +[src/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L79) diff --git a/docs/enums/NDKKind.md b/docs/enums/NDKKind.md index 6f72348b..d8195fe8 100644 --- a/docs/enums/NDKKind.md +++ b/docs/enums/NDKKind.md @@ -43,7 +43,7 @@ #### Defined in -[src/events/kind.ts:31](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L31) +[src/events/kind.ts:31](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L31) ___ @@ -53,7 +53,7 @@ ___ #### Defined in -[src/events/kind.ts:30](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L30) +[src/events/kind.ts:30](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L30) ___ @@ -63,7 +63,7 @@ ___ #### Defined in -[src/events/kind.ts:12](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L12) +[src/events/kind.ts:12](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L12) ___ @@ -73,7 +73,7 @@ ___ #### Defined in -[src/events/kind.ts:29](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L29) +[src/events/kind.ts:29](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L29) ___ @@ -83,7 +83,7 @@ ___ #### Defined in -[src/events/kind.ts:27](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L27) +[src/events/kind.ts:27](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L27) ___ @@ -93,7 +93,7 @@ ___ #### Defined in -[src/events/kind.ts:26](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L26) +[src/events/kind.ts:26](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L26) ___ @@ -103,7 +103,7 @@ ___ #### Defined in -[src/events/kind.ts:13](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L13) +[src/events/kind.ts:13](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L13) ___ @@ -113,7 +113,7 @@ ___ #### Defined in -[src/events/kind.ts:16](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L16) +[src/events/kind.ts:16](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L16) ___ @@ -123,7 +123,7 @@ ___ #### Defined in -[src/events/kind.ts:15](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L15) +[src/events/kind.ts:15](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L15) ___ @@ -133,7 +133,7 @@ ___ #### Defined in -[src/events/kind.ts:14](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L14) +[src/events/kind.ts:14](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L14) ___ @@ -143,7 +143,7 @@ ___ #### Defined in -[src/events/kind.ts:17](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L17) +[src/events/kind.ts:17](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L17) ___ @@ -153,7 +153,7 @@ ___ #### Defined in -[src/events/kind.ts:24](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L24) +[src/events/kind.ts:24](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L24) ___ @@ -163,7 +163,7 @@ ___ #### Defined in -[src/events/kind.ts:7](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L7) +[src/events/kind.ts:7](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L7) ___ @@ -173,7 +173,7 @@ ___ #### Defined in -[src/events/kind.ts:8](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L8) +[src/events/kind.ts:8](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L8) ___ @@ -183,7 +183,7 @@ ___ #### Defined in -[src/events/kind.ts:9](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L9) +[src/events/kind.ts:9](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L9) ___ @@ -193,7 +193,7 @@ ___ #### Defined in -[src/events/kind.ts:4](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L4) +[src/events/kind.ts:4](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L4) ___ @@ -203,7 +203,7 @@ ___ #### Defined in -[src/events/kind.ts:21](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L21) +[src/events/kind.ts:21](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L21) ___ @@ -213,7 +213,7 @@ ___ #### Defined in -[src/events/kind.ts:25](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L25) +[src/events/kind.ts:25](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L25) ___ @@ -223,7 +223,7 @@ ___ #### Defined in -[src/events/kind.ts:22](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L22) +[src/events/kind.ts:22](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L22) ___ @@ -233,7 +233,7 @@ ___ #### Defined in -[src/events/kind.ts:28](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L28) +[src/events/kind.ts:28](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L28) ___ @@ -243,7 +243,7 @@ ___ #### Defined in -[src/events/kind.ts:11](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L11) +[src/events/kind.ts:11](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L11) ___ @@ -253,7 +253,7 @@ ___ #### Defined in -[src/events/kind.ts:6](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L6) +[src/events/kind.ts:6](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L6) ___ @@ -263,7 +263,7 @@ ___ #### Defined in -[src/events/kind.ts:23](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L23) +[src/events/kind.ts:23](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L23) ___ @@ -273,7 +273,7 @@ ___ #### Defined in -[src/events/kind.ts:18](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L18) +[src/events/kind.ts:18](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L18) ___ @@ -283,7 +283,7 @@ ___ #### Defined in -[src/events/kind.ts:10](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L10) +[src/events/kind.ts:10](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L10) ___ @@ -293,7 +293,7 @@ ___ #### Defined in -[src/events/kind.ts:5](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L5) +[src/events/kind.ts:5](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L5) ___ @@ -303,7 +303,7 @@ ___ #### Defined in -[src/events/kind.ts:20](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L20) +[src/events/kind.ts:20](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L20) ___ @@ -313,4 +313,4 @@ ___ #### Defined in -[src/events/kind.ts:19](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/events/kind.ts#L19) +[src/events/kind.ts:19](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L19) diff --git a/docs/interfaces/GetUserParams.md b/docs/interfaces/GetUserParams.md index 792fd5b8..0d9f02e0 100644 --- a/docs/interfaces/GetUserParams.md +++ b/docs/interfaces/GetUserParams.md @@ -29,7 +29,7 @@ NDKUserParams.hexpubkey #### Defined in -[src/index.ts:34](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L34) +[src/index.ts:34](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L34) ___ @@ -43,7 +43,7 @@ NDKUserParams.nip05 #### Defined in -[src/user/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/index.ts#L10) +[src/user/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/index.ts#L10) ___ @@ -57,7 +57,7 @@ NDKUserParams.npub #### Defined in -[src/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L33) +[src/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L33) ___ @@ -71,4 +71,4 @@ NDKUserParams.relayUrls #### Defined in -[src/user/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/index.ts#L11) +[src/user/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/index.ts#L11) diff --git a/docs/interfaces/NDKCacheAdapter.md b/docs/interfaces/NDKCacheAdapter.md index c7d92754..be5bee4f 100644 --- a/docs/interfaces/NDKCacheAdapter.md +++ b/docs/interfaces/NDKCacheAdapter.md @@ -25,7 +25,7 @@ When this is false, the cache will be queried in addition to the relays. #### Defined in -[src/cache/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/cache/index.ts#L10) +[src/cache/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/cache/index.ts#L10) ## Methods @@ -45,7 +45,7 @@ When this is false, the cache will be queried in addition to the relays. #### Defined in -[src/cache/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/cache/index.ts#L12) +[src/cache/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/cache/index.ts#L12) ___ @@ -66,4 +66,4 @@ ___ #### Defined in -[src/cache/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/cache/index.ts#L13) +[src/cache/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/cache/index.ts#L13) diff --git a/docs/interfaces/NDKConstructorParams.md b/docs/interfaces/NDKConstructorParams.md index 7ecb5ecf..59999d8b 100644 --- a/docs/interfaces/NDKConstructorParams.md +++ b/docs/interfaces/NDKConstructorParams.md @@ -19,7 +19,7 @@ #### Defined in -[src/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L29) +[src/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L29) ___ @@ -29,7 +29,7 @@ ___ #### Defined in -[src/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L30) +[src/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L30) ___ @@ -39,7 +39,7 @@ ___ #### Defined in -[src/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L27) +[src/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L27) ___ @@ -49,4 +49,4 @@ ___ #### Defined in -[src/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/index.ts#L28) +[src/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L28) diff --git a/docs/interfaces/NDKUserProfile.md b/docs/interfaces/NDKUserProfile.md index a60abad0..5e9badc3 100644 --- a/docs/interfaces/NDKUserProfile.md +++ b/docs/interfaces/NDKUserProfile.md @@ -25,7 +25,7 @@ #### Defined in -[src/user/profile.ts:12](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/profile.ts#L12) +[src/user/profile.ts:12](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/profile.ts#L12) ___ @@ -35,7 +35,7 @@ ___ #### Defined in -[src/user/profile.ts:7](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/profile.ts#L7) +[src/user/profile.ts:7](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/profile.ts#L7) ___ @@ -45,7 +45,7 @@ ___ #### Defined in -[src/user/profile.ts:8](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/profile.ts#L8) +[src/user/profile.ts:8](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/profile.ts#L8) ___ @@ -55,7 +55,7 @@ ___ #### Defined in -[src/user/profile.ts:5](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/profile.ts#L5) +[src/user/profile.ts:5](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/profile.ts#L5) ___ @@ -65,7 +65,7 @@ ___ #### Defined in -[src/user/profile.ts:6](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/profile.ts#L6) +[src/user/profile.ts:6](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/profile.ts#L6) ___ @@ -75,7 +75,7 @@ ___ #### Defined in -[src/user/profile.ts:10](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/profile.ts#L10) +[src/user/profile.ts:10](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/profile.ts#L10) ___ @@ -85,7 +85,7 @@ ___ #### Defined in -[src/user/profile.ts:11](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/profile.ts#L11) +[src/user/profile.ts:11](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/profile.ts#L11) ___ @@ -95,7 +95,7 @@ ___ #### Defined in -[src/user/profile.ts:4](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/profile.ts#L4) +[src/user/profile.ts:4](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/profile.ts#L4) ___ @@ -105,7 +105,7 @@ ___ #### Defined in -[src/user/profile.ts:9](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/profile.ts#L9) +[src/user/profile.ts:9](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/profile.ts#L9) ___ @@ -115,4 +115,4 @@ ___ #### Defined in -[src/user/profile.ts:13](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/user/profile.ts#L13) +[src/user/profile.ts:13](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/profile.ts#L13) diff --git a/docs/interfaces/NDKZapInvoice.md b/docs/interfaces/NDKZapInvoice.md index efd4067e..d1b9bae6 100644 --- a/docs/interfaces/NDKZapInvoice.md +++ b/docs/interfaces/NDKZapInvoice.md @@ -22,7 +22,7 @@ #### Defined in -[src/zap/invoice.ts:10](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/zap/invoice.ts#L10) +[src/zap/invoice.ts:10](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/zap/invoice.ts#L10) ___ @@ -32,7 +32,7 @@ ___ #### Defined in -[src/zap/invoice.ts:11](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/zap/invoice.ts#L11) +[src/zap/invoice.ts:11](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/zap/invoice.ts#L11) ___ @@ -42,7 +42,7 @@ ___ #### Defined in -[src/zap/invoice.ts:5](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/zap/invoice.ts#L5) +[src/zap/invoice.ts:5](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/zap/invoice.ts#L5) ___ @@ -52,7 +52,7 @@ ___ #### Defined in -[src/zap/invoice.ts:8](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/zap/invoice.ts#L8) +[src/zap/invoice.ts:8](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/zap/invoice.ts#L8) ___ @@ -62,7 +62,7 @@ ___ #### Defined in -[src/zap/invoice.ts:9](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/zap/invoice.ts#L9) +[src/zap/invoice.ts:9](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/zap/invoice.ts#L9) ___ @@ -72,7 +72,7 @@ ___ #### Defined in -[src/zap/invoice.ts:7](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/zap/invoice.ts#L7) +[src/zap/invoice.ts:7](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/zap/invoice.ts#L7) ___ @@ -82,4 +82,4 @@ ___ #### Defined in -[src/zap/invoice.ts:6](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/zap/invoice.ts#L6) +[src/zap/invoice.ts:6](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/zap/invoice.ts#L6) diff --git a/docs/modules.md b/docs/modules.md index b5b691e5..d3319993 100644 --- a/docs/modules.md +++ b/docs/modules.md @@ -12,6 +12,7 @@ - [NDKEvent](classes/NDKEvent.md) - [NDKNip07Signer](classes/NDKNip07Signer.md) +- [NDKRelay](classes/NDKRelay.md) - [NDKUser](classes/NDKUser.md) - [default](classes/default.md) @@ -43,7 +44,7 @@ #### Defined in -[src/subscription/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/subscription/index.ts#L10) +[src/subscription/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/subscription/index.ts#L10) ## Functions @@ -63,4 +64,4 @@ #### Defined in -[src/zap/invoice.ts:14](https://github.com/nostr-dev-kit/ndk/blob/e1d90e2/src/zap/invoice.ts#L14) +[src/zap/invoice.ts:14](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/zap/invoice.ts#L14) From 3ad55b0eadec138823e047999040dc02be7d782d Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 8 Apr 2023 14:06:15 +0300 Subject: [PATCH 044/773] detect flapping relays and begin handling pool eviction --- docs/classes/NDKEvent.md | 42 ++++++++--------- docs/classes/NDKNip07Signer.md | 8 ++-- docs/classes/NDKRelay.md | 45 +++++++++++++----- docs/classes/NDKSubscription.md | 20 ++++---- docs/classes/NDKUser.md | 20 ++++---- docs/classes/default.md | 24 +++++----- docs/enums/NDKKind.md | 56 +++++++++++----------- docs/interfaces/GetUserParams.md | 8 ++-- docs/interfaces/NDKCacheAdapter.md | 6 +-- docs/interfaces/NDKConstructorParams.md | 8 ++-- docs/interfaces/NDKUserProfile.md | 20 ++++---- docs/interfaces/NDKZapInvoice.md | 14 +++--- docs/modules.md | 4 +- package.json | 2 +- src/relay/index.ts | 63 +++++++++++++++++++++---- src/relay/pool/index.ts | 9 ++++ 16 files changed, 213 insertions(+), 136 deletions(-) diff --git a/docs/classes/NDKEvent.md b/docs/classes/NDKEvent.md index 36a8b856..ec940cd2 100644 --- a/docs/classes/NDKEvent.md +++ b/docs/classes/NDKEvent.md @@ -59,7 +59,7 @@ EventEmitter.constructor #### Defined in -[src/events/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L35) +[src/events/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L35) ## Properties @@ -69,7 +69,7 @@ EventEmitter.constructor #### Defined in -[src/events/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L27) +[src/events/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L27) ___ @@ -79,7 +79,7 @@ ___ #### Defined in -[src/events/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L26) +[src/events/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L26) ___ @@ -103,7 +103,7 @@ ___ #### Defined in -[src/events/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L79) +[src/events/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L79) ___ @@ -113,7 +113,7 @@ ___ #### Defined in -[src/events/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L31) +[src/events/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L31) ___ @@ -137,7 +137,7 @@ ___ #### Defined in -[src/events/index.ts:78](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L78) +[src/events/index.ts:78](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L78) ___ @@ -161,7 +161,7 @@ ___ #### Defined in -[src/events/index.ts:77](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L77) +[src/events/index.ts:77](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L77) ___ @@ -171,7 +171,7 @@ ___ #### Defined in -[src/events/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L30) +[src/events/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L30) ___ @@ -181,7 +181,7 @@ ___ #### Defined in -[src/events/index.ts:25](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L25) +[src/events/index.ts:25](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L25) ___ @@ -191,7 +191,7 @@ ___ #### Defined in -[src/events/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L33) +[src/events/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L33) ___ @@ -201,7 +201,7 @@ ___ #### Defined in -[src/events/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L32) +[src/events/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L32) ___ @@ -211,7 +211,7 @@ ___ #### Defined in -[src/events/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L28) +[src/events/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L28) ___ @@ -221,7 +221,7 @@ ___ #### Defined in -[src/events/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L29) +[src/events/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L29) ## Methods @@ -243,7 +243,7 @@ Get all tags with the given name #### Defined in -[src/events/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L84) +[src/events/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L84) ___ @@ -257,7 +257,7 @@ ___ #### Defined in -[src/events/index.ts:101](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L101) +[src/events/index.ts:101](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L101) ___ @@ -271,7 +271,7 @@ ___ #### Defined in -[src/events/index.ts:92](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L92) +[src/events/index.ts:92](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L92) ___ @@ -287,7 +287,7 @@ the id of the event, or if it's a parameterized event, the id of the event with #### Defined in -[src/events/index.ts:129](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L129) +[src/events/index.ts:129](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L129) ___ @@ -313,7 +313,7 @@ event = new NDKEvent(ndk, { kind: 30000, pubkey: 'pubkey', tags: [ ["d", "d-code #### Defined in -[src/events/index.ts:150](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L150) +[src/events/index.ts:150](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L150) ___ @@ -333,7 +333,7 @@ ___ #### Defined in -[src/events/index.ts:48](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L48) +[src/events/index.ts:48](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L48) ___ @@ -347,7 +347,7 @@ ___ #### Defined in -[src/events/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L88) +[src/events/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L88) ___ @@ -370,4 +370,4 @@ Create a zap request for an existing event #### Defined in -[src/events/index.ts:162](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/index.ts#L162) +[src/events/index.ts:162](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L162) diff --git a/docs/classes/NDKNip07Signer.md b/docs/classes/NDKNip07Signer.md index 78722685..aab751a2 100644 --- a/docs/classes/NDKNip07Signer.md +++ b/docs/classes/NDKNip07Signer.md @@ -29,7 +29,7 @@ with a NIP-07 browser extension (e.g., getalby, nos2x). #### Defined in -[src/signers/nip07/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/signers/nip07/index.ts#L12) +[src/signers/nip07/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/signers/nip07/index.ts#L12) ## Methods @@ -47,7 +47,7 @@ NDKSigner.blockUntilReady #### Defined in -[src/signers/nip07/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/signers/nip07/index.ts#L18) +[src/signers/nip07/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/signers/nip07/index.ts#L18) ___ @@ -79,7 +79,7 @@ NDKSigner.sign #### Defined in -[src/signers/nip07/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/signers/nip07/index.ts#L47) +[src/signers/nip07/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/signers/nip07/index.ts#L47) ___ @@ -101,4 +101,4 @@ NDKSigner.user #### Defined in -[src/signers/nip07/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/signers/nip07/index.ts#L33) +[src/signers/nip07/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/signers/nip07/index.ts#L33) diff --git a/docs/classes/NDKRelay.md b/docs/classes/NDKRelay.md index 5ea7f0a3..f48b3938 100644 --- a/docs/classes/NDKRelay.md +++ b/docs/classes/NDKRelay.md @@ -49,6 +49,7 @@ NDKRelay#eose ### Methods - [connect](NDKRelay.md#connect) +- [disconnect](NDKRelay.md#disconnect) - [handleNotice](NDKRelay.md#handlenotice) - [publish](NDKRelay.md#publish) - [scoreSlowerEvent](NDKRelay.md#scoreslowerevent) @@ -72,7 +73,7 @@ EventEmitter.constructor #### Defined in -[src/relay/index.ts:57](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/relay/index.ts#L57) +[src/relay/index.ts:57](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/relay/index.ts#L57) ## Properties @@ -82,7 +83,7 @@ EventEmitter.constructor #### Defined in -[src/relay/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/relay/index.ts#L51) +[src/relay/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/relay/index.ts#L51) ___ @@ -92,7 +93,7 @@ ___ #### Defined in -[src/relay/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/relay/index.ts#L50) +[src/relay/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/relay/index.ts#L50) ## Accessors @@ -100,7 +101,7 @@ ___ • `get` **connectionStats**(): `NDKRelayConnectionStats` -Number of times this relay has been successfully connected to. +Returns the connection stats. #### Returns @@ -108,7 +109,7 @@ Number of times this relay has been successfully connected to. #### Defined in -[src/relay/index.ts:167](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/relay/index.ts#L167) +[src/relay/index.ts:212](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/relay/index.ts#L212) ___ @@ -122,7 +123,7 @@ ___ #### Defined in -[src/relay/index.ts:89](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/relay/index.ts#L89) +[src/relay/index.ts:117](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/relay/index.ts#L117) ## Methods @@ -130,13 +131,31 @@ ___ ▸ **connect**(): `Promise`<`void`\> +Connects to the relay. + #### Returns `Promise`<`void`\> #### Defined in -[src/relay/index.ts:93](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/relay/index.ts#L93) +[src/relay/index.ts:124](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/relay/index.ts#L124) + +___ + +### disconnect + +▸ **disconnect**(): `void` + +Disconnects from the relay. + +#### Returns + +`void` + +#### Defined in + +[src/relay/index.ts:135](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/relay/index.ts#L135) ___ @@ -156,7 +175,7 @@ ___ #### Defined in -[src/relay/index.ts:101](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/relay/index.ts#L101) +[src/relay/index.ts:140](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/relay/index.ts#L140) ___ @@ -164,6 +183,8 @@ ___ ▸ **publish**(`event`): `Promise`<`void`\> +Publishes an event to the relay. + #### Parameters | Name | Type | @@ -176,7 +197,7 @@ ___ #### Defined in -[src/relay/index.ts:124](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/relay/index.ts#L124) +[src/relay/index.ts:169](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/relay/index.ts#L169) ___ @@ -199,7 +220,7 @@ wasn't the fastest one. #### Defined in -[src/relay/index.ts:135](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/relay/index.ts#L135) +[src/relay/index.ts:180](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/relay/index.ts#L180) ___ @@ -207,6 +228,8 @@ ___ ▸ **subscribe**(`subscription`): `Sub` +Subscribes to a subscription. + #### Parameters | Name | Type | @@ -219,4 +242,4 @@ ___ #### Defined in -[src/relay/index.ts:105](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/relay/index.ts#L105) +[src/relay/index.ts:147](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/relay/index.ts#L147) diff --git a/docs/classes/NDKSubscription.md b/docs/classes/NDKSubscription.md index ad63d049..07fe2da0 100644 --- a/docs/classes/NDKSubscription.md +++ b/docs/classes/NDKSubscription.md @@ -81,7 +81,7 @@ EventEmitter.constructor #### Defined in -[src/subscription/index.ts:60](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/subscription/index.ts#L60) +[src/subscription/index.ts:60](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/subscription/index.ts#L60) ## Properties @@ -91,7 +91,7 @@ EventEmitter.constructor #### Defined in -[src/subscription/index.ts:53](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/subscription/index.ts#L53) +[src/subscription/index.ts:53](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/subscription/index.ts#L53) ___ @@ -101,7 +101,7 @@ ___ #### Defined in -[src/subscription/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/subscription/index.ts#L56) +[src/subscription/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/subscription/index.ts#L56) ___ @@ -111,7 +111,7 @@ ___ #### Defined in -[src/subscription/index.ts:54](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/subscription/index.ts#L54) +[src/subscription/index.ts:54](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/subscription/index.ts#L54) ___ @@ -121,7 +121,7 @@ ___ #### Defined in -[src/subscription/index.ts:55](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/subscription/index.ts#L55) +[src/subscription/index.ts:55](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/subscription/index.ts#L55) ___ @@ -131,7 +131,7 @@ ___ #### Defined in -[src/subscription/index.ts:57](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/subscription/index.ts#L57) +[src/subscription/index.ts:57](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/subscription/index.ts#L57) ___ @@ -141,7 +141,7 @@ ___ #### Defined in -[src/subscription/index.ts:52](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/subscription/index.ts#L52) +[src/subscription/index.ts:52](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/subscription/index.ts#L52) ## Methods @@ -161,7 +161,7 @@ ___ #### Defined in -[src/subscription/index.ts:198](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/subscription/index.ts#L198) +[src/subscription/index.ts:198](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/subscription/index.ts#L198) ___ @@ -185,7 +185,7 @@ Called when an event is received from a relay or the cache #### Defined in -[src/subscription/index.ts:169](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/subscription/index.ts#L169) +[src/subscription/index.ts:169](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/subscription/index.ts#L169) ___ @@ -202,4 +202,4 @@ after creating a subscription. #### Defined in -[src/subscription/index.ts:105](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/subscription/index.ts#L105) +[src/subscription/index.ts:105](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/subscription/index.ts#L105) diff --git a/docs/classes/NDKUser.md b/docs/classes/NDKUser.md index c9d629ff..07d47732 100644 --- a/docs/classes/NDKUser.md +++ b/docs/classes/NDKUser.md @@ -39,7 +39,7 @@ Represents a pubkey. #### Defined in -[src/user/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/index.ts#L23) +[src/user/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/index.ts#L23) ## Properties @@ -65,7 +65,7 @@ Returns a set of users that this user follows. #### Defined in -[src/user/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/index.ts#L79) +[src/user/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/index.ts#L79) ___ @@ -75,7 +75,7 @@ ___ #### Defined in -[src/user/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/index.ts#L18) +[src/user/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/index.ts#L18) ___ @@ -85,7 +85,7 @@ ___ #### Defined in -[src/user/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/index.ts#L20) +[src/user/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/index.ts#L20) ___ @@ -95,7 +95,7 @@ ___ #### Defined in -[src/user/index.ts:19](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/index.ts#L19) +[src/user/index.ts:19](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/index.ts#L19) ___ @@ -105,7 +105,7 @@ ___ #### Defined in -[src/user/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/index.ts#L21) +[src/user/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/index.ts#L21) ## Methods @@ -119,7 +119,7 @@ ___ #### Defined in -[src/user/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/index.ts#L50) +[src/user/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/index.ts#L50) ___ @@ -133,7 +133,7 @@ ___ #### Defined in -[src/user/index.ts:46](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/index.ts#L46) +[src/user/index.ts:46](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/index.ts#L46) ___ @@ -147,7 +147,7 @@ ___ #### Defined in -[src/user/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/index.ts#L81) +[src/user/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/index.ts#L81) ___ @@ -167,4 +167,4 @@ ___ #### Defined in -[src/user/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/index.ts#L35) +[src/user/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/index.ts#L35) diff --git a/docs/classes/default.md b/docs/classes/default.md index 03618747..9e0721dc 100644 --- a/docs/classes/default.md +++ b/docs/classes/default.md @@ -49,7 +49,7 @@ EventEmitter.constructor #### Defined in -[src/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L43) +[src/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L43) ## Properties @@ -59,7 +59,7 @@ EventEmitter.constructor #### Defined in -[src/index.ts:40](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L40) +[src/index.ts:40](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L40) ___ @@ -69,7 +69,7 @@ ___ #### Defined in -[src/index.ts:41](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L41) +[src/index.ts:41](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L41) ___ @@ -79,7 +79,7 @@ ___ #### Defined in -[src/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L38) +[src/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L38) ___ @@ -89,7 +89,7 @@ ___ #### Defined in -[src/index.ts:39](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L39) +[src/index.ts:39](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L39) ## Methods @@ -105,7 +105,7 @@ Ensures that a signer is available to sign an event. #### Defined in -[src/index.ts:135](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L135) +[src/index.ts:135](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L135) ___ @@ -128,7 +128,7 @@ If the timeout is reached, the connection will be continued to be established in #### Defined in -[src/index.ts:62](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L62) +[src/index.ts:62](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L62) ___ @@ -151,7 +151,7 @@ Fetch a single event #### Defined in -[src/index.ts:98](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L98) +[src/index.ts:98](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L98) ___ @@ -174,7 +174,7 @@ Fetch events #### Defined in -[src/index.ts:111](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L111) +[src/index.ts:111](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L111) ___ @@ -196,7 +196,7 @@ Get a NDKUser object #### Defined in -[src/index.ts:73](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L73) +[src/index.ts:73](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L73) ___ @@ -216,7 +216,7 @@ ___ #### Defined in -[src/index.ts:89](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L89) +[src/index.ts:89](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L89) ___ @@ -237,4 +237,4 @@ ___ #### Defined in -[src/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L79) +[src/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L79) diff --git a/docs/enums/NDKKind.md b/docs/enums/NDKKind.md index d8195fe8..098214bd 100644 --- a/docs/enums/NDKKind.md +++ b/docs/enums/NDKKind.md @@ -43,7 +43,7 @@ #### Defined in -[src/events/kind.ts:31](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L31) +[src/events/kind.ts:31](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L31) ___ @@ -53,7 +53,7 @@ ___ #### Defined in -[src/events/kind.ts:30](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L30) +[src/events/kind.ts:30](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L30) ___ @@ -63,7 +63,7 @@ ___ #### Defined in -[src/events/kind.ts:12](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L12) +[src/events/kind.ts:12](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L12) ___ @@ -73,7 +73,7 @@ ___ #### Defined in -[src/events/kind.ts:29](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L29) +[src/events/kind.ts:29](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L29) ___ @@ -83,7 +83,7 @@ ___ #### Defined in -[src/events/kind.ts:27](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L27) +[src/events/kind.ts:27](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L27) ___ @@ -93,7 +93,7 @@ ___ #### Defined in -[src/events/kind.ts:26](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L26) +[src/events/kind.ts:26](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L26) ___ @@ -103,7 +103,7 @@ ___ #### Defined in -[src/events/kind.ts:13](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L13) +[src/events/kind.ts:13](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L13) ___ @@ -113,7 +113,7 @@ ___ #### Defined in -[src/events/kind.ts:16](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L16) +[src/events/kind.ts:16](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L16) ___ @@ -123,7 +123,7 @@ ___ #### Defined in -[src/events/kind.ts:15](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L15) +[src/events/kind.ts:15](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L15) ___ @@ -133,7 +133,7 @@ ___ #### Defined in -[src/events/kind.ts:14](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L14) +[src/events/kind.ts:14](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L14) ___ @@ -143,7 +143,7 @@ ___ #### Defined in -[src/events/kind.ts:17](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L17) +[src/events/kind.ts:17](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L17) ___ @@ -153,7 +153,7 @@ ___ #### Defined in -[src/events/kind.ts:24](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L24) +[src/events/kind.ts:24](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L24) ___ @@ -163,7 +163,7 @@ ___ #### Defined in -[src/events/kind.ts:7](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L7) +[src/events/kind.ts:7](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L7) ___ @@ -173,7 +173,7 @@ ___ #### Defined in -[src/events/kind.ts:8](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L8) +[src/events/kind.ts:8](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L8) ___ @@ -183,7 +183,7 @@ ___ #### Defined in -[src/events/kind.ts:9](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L9) +[src/events/kind.ts:9](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L9) ___ @@ -193,7 +193,7 @@ ___ #### Defined in -[src/events/kind.ts:4](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L4) +[src/events/kind.ts:4](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L4) ___ @@ -203,7 +203,7 @@ ___ #### Defined in -[src/events/kind.ts:21](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L21) +[src/events/kind.ts:21](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L21) ___ @@ -213,7 +213,7 @@ ___ #### Defined in -[src/events/kind.ts:25](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L25) +[src/events/kind.ts:25](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L25) ___ @@ -223,7 +223,7 @@ ___ #### Defined in -[src/events/kind.ts:22](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L22) +[src/events/kind.ts:22](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L22) ___ @@ -233,7 +233,7 @@ ___ #### Defined in -[src/events/kind.ts:28](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L28) +[src/events/kind.ts:28](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L28) ___ @@ -243,7 +243,7 @@ ___ #### Defined in -[src/events/kind.ts:11](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L11) +[src/events/kind.ts:11](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L11) ___ @@ -253,7 +253,7 @@ ___ #### Defined in -[src/events/kind.ts:6](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L6) +[src/events/kind.ts:6](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L6) ___ @@ -263,7 +263,7 @@ ___ #### Defined in -[src/events/kind.ts:23](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L23) +[src/events/kind.ts:23](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L23) ___ @@ -273,7 +273,7 @@ ___ #### Defined in -[src/events/kind.ts:18](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L18) +[src/events/kind.ts:18](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L18) ___ @@ -283,7 +283,7 @@ ___ #### Defined in -[src/events/kind.ts:10](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L10) +[src/events/kind.ts:10](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L10) ___ @@ -293,7 +293,7 @@ ___ #### Defined in -[src/events/kind.ts:5](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L5) +[src/events/kind.ts:5](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L5) ___ @@ -303,7 +303,7 @@ ___ #### Defined in -[src/events/kind.ts:20](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L20) +[src/events/kind.ts:20](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L20) ___ @@ -313,4 +313,4 @@ ___ #### Defined in -[src/events/kind.ts:19](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/events/kind.ts#L19) +[src/events/kind.ts:19](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L19) diff --git a/docs/interfaces/GetUserParams.md b/docs/interfaces/GetUserParams.md index 0d9f02e0..d4cb626a 100644 --- a/docs/interfaces/GetUserParams.md +++ b/docs/interfaces/GetUserParams.md @@ -29,7 +29,7 @@ NDKUserParams.hexpubkey #### Defined in -[src/index.ts:34](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L34) +[src/index.ts:34](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L34) ___ @@ -43,7 +43,7 @@ NDKUserParams.nip05 #### Defined in -[src/user/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/index.ts#L10) +[src/user/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/index.ts#L10) ___ @@ -57,7 +57,7 @@ NDKUserParams.npub #### Defined in -[src/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L33) +[src/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L33) ___ @@ -71,4 +71,4 @@ NDKUserParams.relayUrls #### Defined in -[src/user/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/index.ts#L11) +[src/user/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/index.ts#L11) diff --git a/docs/interfaces/NDKCacheAdapter.md b/docs/interfaces/NDKCacheAdapter.md index be5bee4f..13adccf2 100644 --- a/docs/interfaces/NDKCacheAdapter.md +++ b/docs/interfaces/NDKCacheAdapter.md @@ -25,7 +25,7 @@ When this is false, the cache will be queried in addition to the relays. #### Defined in -[src/cache/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/cache/index.ts#L10) +[src/cache/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/cache/index.ts#L10) ## Methods @@ -45,7 +45,7 @@ When this is false, the cache will be queried in addition to the relays. #### Defined in -[src/cache/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/cache/index.ts#L12) +[src/cache/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/cache/index.ts#L12) ___ @@ -66,4 +66,4 @@ ___ #### Defined in -[src/cache/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/cache/index.ts#L13) +[src/cache/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/cache/index.ts#L13) diff --git a/docs/interfaces/NDKConstructorParams.md b/docs/interfaces/NDKConstructorParams.md index 59999d8b..61ece478 100644 --- a/docs/interfaces/NDKConstructorParams.md +++ b/docs/interfaces/NDKConstructorParams.md @@ -19,7 +19,7 @@ #### Defined in -[src/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L29) +[src/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L29) ___ @@ -29,7 +29,7 @@ ___ #### Defined in -[src/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L30) +[src/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L30) ___ @@ -39,7 +39,7 @@ ___ #### Defined in -[src/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L27) +[src/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L27) ___ @@ -49,4 +49,4 @@ ___ #### Defined in -[src/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/index.ts#L28) +[src/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L28) diff --git a/docs/interfaces/NDKUserProfile.md b/docs/interfaces/NDKUserProfile.md index 5e9badc3..240f90da 100644 --- a/docs/interfaces/NDKUserProfile.md +++ b/docs/interfaces/NDKUserProfile.md @@ -25,7 +25,7 @@ #### Defined in -[src/user/profile.ts:12](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/profile.ts#L12) +[src/user/profile.ts:12](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/profile.ts#L12) ___ @@ -35,7 +35,7 @@ ___ #### Defined in -[src/user/profile.ts:7](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/profile.ts#L7) +[src/user/profile.ts:7](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/profile.ts#L7) ___ @@ -45,7 +45,7 @@ ___ #### Defined in -[src/user/profile.ts:8](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/profile.ts#L8) +[src/user/profile.ts:8](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/profile.ts#L8) ___ @@ -55,7 +55,7 @@ ___ #### Defined in -[src/user/profile.ts:5](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/profile.ts#L5) +[src/user/profile.ts:5](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/profile.ts#L5) ___ @@ -65,7 +65,7 @@ ___ #### Defined in -[src/user/profile.ts:6](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/profile.ts#L6) +[src/user/profile.ts:6](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/profile.ts#L6) ___ @@ -75,7 +75,7 @@ ___ #### Defined in -[src/user/profile.ts:10](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/profile.ts#L10) +[src/user/profile.ts:10](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/profile.ts#L10) ___ @@ -85,7 +85,7 @@ ___ #### Defined in -[src/user/profile.ts:11](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/profile.ts#L11) +[src/user/profile.ts:11](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/profile.ts#L11) ___ @@ -95,7 +95,7 @@ ___ #### Defined in -[src/user/profile.ts:4](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/profile.ts#L4) +[src/user/profile.ts:4](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/profile.ts#L4) ___ @@ -105,7 +105,7 @@ ___ #### Defined in -[src/user/profile.ts:9](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/profile.ts#L9) +[src/user/profile.ts:9](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/profile.ts#L9) ___ @@ -115,4 +115,4 @@ ___ #### Defined in -[src/user/profile.ts:13](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/user/profile.ts#L13) +[src/user/profile.ts:13](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/profile.ts#L13) diff --git a/docs/interfaces/NDKZapInvoice.md b/docs/interfaces/NDKZapInvoice.md index d1b9bae6..23ee7576 100644 --- a/docs/interfaces/NDKZapInvoice.md +++ b/docs/interfaces/NDKZapInvoice.md @@ -22,7 +22,7 @@ #### Defined in -[src/zap/invoice.ts:10](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/zap/invoice.ts#L10) +[src/zap/invoice.ts:10](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/zap/invoice.ts#L10) ___ @@ -32,7 +32,7 @@ ___ #### Defined in -[src/zap/invoice.ts:11](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/zap/invoice.ts#L11) +[src/zap/invoice.ts:11](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/zap/invoice.ts#L11) ___ @@ -42,7 +42,7 @@ ___ #### Defined in -[src/zap/invoice.ts:5](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/zap/invoice.ts#L5) +[src/zap/invoice.ts:5](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/zap/invoice.ts#L5) ___ @@ -52,7 +52,7 @@ ___ #### Defined in -[src/zap/invoice.ts:8](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/zap/invoice.ts#L8) +[src/zap/invoice.ts:8](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/zap/invoice.ts#L8) ___ @@ -62,7 +62,7 @@ ___ #### Defined in -[src/zap/invoice.ts:9](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/zap/invoice.ts#L9) +[src/zap/invoice.ts:9](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/zap/invoice.ts#L9) ___ @@ -72,7 +72,7 @@ ___ #### Defined in -[src/zap/invoice.ts:7](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/zap/invoice.ts#L7) +[src/zap/invoice.ts:7](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/zap/invoice.ts#L7) ___ @@ -82,4 +82,4 @@ ___ #### Defined in -[src/zap/invoice.ts:6](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/zap/invoice.ts#L6) +[src/zap/invoice.ts:6](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/zap/invoice.ts#L6) diff --git a/docs/modules.md b/docs/modules.md index d3319993..42a96c27 100644 --- a/docs/modules.md +++ b/docs/modules.md @@ -44,7 +44,7 @@ #### Defined in -[src/subscription/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/subscription/index.ts#L10) +[src/subscription/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/subscription/index.ts#L10) ## Functions @@ -64,4 +64,4 @@ #### Defined in -[src/zap/invoice.ts:14](https://github.com/nostr-dev-kit/ndk/blob/5bceb9f/src/zap/invoice.ts#L14) +[src/zap/invoice.ts:14](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/zap/invoice.ts#L14) diff --git a/package.json b/package.json index 2a096821..d9e2cc52 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.26", + "version": "0.0.27", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/relay/index.ts b/src/relay/index.ts index fef3a2a3..16581489 100644 --- a/src/relay/index.ts +++ b/src/relay/index.ts @@ -10,12 +10,12 @@ import EventEmitter from 'eventemitter3'; export enum NDKRelayStatus { CONNECTING, CONNECTED, + DISCONNECTING, DISCONNECTED, - ERROR, RECONNECTING, }; -interface NDKRelayConnectionStats { +export interface NDKRelayConnectionStats { /** * The number of times a connection has been attempted. */ @@ -74,22 +74,53 @@ export class NDKRelay extends EventEmitter { if (this._status === NDKRelayStatus.CONNECTED) { this._status = NDKRelayStatus.DISCONNECTED; - // if the last connection was less than 5 seconds ago, wait some time before trying to reconnect - if (this.connectedAt && Date.now() - this.connectedAt < 5000) { - setTimeout(() => this.connect(), 60000); - } else { - this.connect(); - } + this.handleReconnection(); } }); this.relay.on('notice', (notice: string) => this.handleNotice(notice)); } + /** + * Evaluates the connection stats to determine if the relay is flapping. + */ + private isFlapping(): boolean { + const durations = this._connectionStats.durations; + if (durations.length < 10) return false; + + const sum = durations.reduce((a, b) => a + b, 0); + const avg = sum / durations.length; + const variance = durations.map((x) => Math.pow(x - avg, 2)).reduce((a, b) => a + b, 0) / durations.length; + const stdDev = Math.sqrt(variance); + const isFlapping = stdDev < 1000; + + console.log(this.relay.url, { sum, avg, variance, stdDev, isFlapping }); + + return isFlapping; + } + + /** + * Called when the relay is unexpectedly disconnected. + */ + private handleReconnection() { + if (this.isFlapping()) { + this.emit('flapping', this, this._connectionStats); + } + + if (this.connectedAt && Date.now() - this.connectedAt < 5000) { + setTimeout(() => this.connect(), 60000); + } else { + this.connect(); + } + } + get status(): NDKRelayStatus { return this._status; } + /** + * Connects to the relay. + */ public async connect(): Promise { try { this.updateConnectionStats.attempt(); @@ -98,10 +129,21 @@ export class NDKRelay extends EventEmitter { } catch (e) { /* empty */ } } + /** + * Disconnects from the relay. + */ + public disconnect(): void { + this._status = NDKRelayStatus.DISCONNECTING; + this.relay.close(); + } + async handleNotice(notice: string) { this.emit('notice', this, notice); } + /** + * Subscribes to a subscription. + */ public subscribe(subscription: NDKSubscription): Sub { const {filter} = subscription; @@ -121,6 +163,9 @@ export class NDKRelay extends EventEmitter { return sub; } + /** + * Publishes an event to the relay. + */ public async publish(event: NDKEvent): Promise { const nostrEvent = (await event.toNostrEvent()) as SignedEvent; this.relay.publish(nostrEvent); @@ -162,7 +207,7 @@ export class NDKRelay extends EventEmitter { }; /** - * Number of times this relay has been successfully connected to. + * Returns the connection stats. */ get connectionStats(): NDKRelayConnectionStats { return this._connectionStats; diff --git a/src/relay/pool/index.ts b/src/relay/pool/index.ts index b39cad4c..304d8755 100644 --- a/src/relay/pool/index.ts +++ b/src/relay/pool/index.ts @@ -20,6 +20,7 @@ export class NDKPool extends EventEmitter { relay.on('notice', (relay, notice) => this.emit('notice', relay, notice)); relay.on('connect', () => this.emit('connect', relay)); relay.on('disconnect', () => this.emit('disconnect', relay)); + relay.on('flapping', () => this.handleFlapping(relay)); this.relays.set(relayUrl, relay); }); } @@ -59,6 +60,14 @@ export class NDKPool extends EventEmitter { await Promise.all(promises); } + private handleFlapping(relay: NDKRelay) { + this.debug(`Relay ${relay.url} is flapping`); + + // TODO: Be smarter about this. + this.relays.delete(relay.url); + this.emit('flapping', relay); + } + public size(): number { return this.relays.size; } From d3177f851d1b448ddda6340f7fdbf6bbd8c32194 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 8 Apr 2023 14:08:31 +0300 Subject: [PATCH 045/773] remove console --- package.json | 2 +- src/relay/index.ts | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/package.json b/package.json index d9e2cc52..d7402062 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "test": "jest", "lint": "eslint src/**/*.ts", "compile": "tsc", - "prepare": "pnpm build && pnpm typedoc", + "prepare": "pnpm build", "publish": "pnpm prepare && pnpm publish", "pretest": "pnpm compile", "posttest": "pnpm lint" diff --git a/src/relay/index.ts b/src/relay/index.ts index 16581489..7507cedc 100644 --- a/src/relay/index.ts +++ b/src/relay/index.ts @@ -94,8 +94,6 @@ export class NDKRelay extends EventEmitter { const stdDev = Math.sqrt(variance); const isFlapping = stdDev < 1000; - console.log(this.relay.url, { sum, avg, variance, stdDev, isFlapping }); - return isFlapping; } From 24f570034888f5967221322603818c77d57d91bf Mon Sep 17 00:00:00 2001 From: pablof7z Date: Mon, 10 Apr 2023 14:36:03 +0300 Subject: [PATCH 046/773] exports --- src/index.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index b79c82bb..6a540c5a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -18,7 +18,8 @@ export { NDKCacheAdapter, NDKSubscription }; -export {NDKRelay} from './relay/index.js'; +export {NDKRelay, NDKRelayStatus} from './relay/index.js'; +export {NDKRelaySet} from './relay/sets/index.js'; export {NDKKind} from './events/kind.js'; export {NDKNip07Signer} from './signers/nip07/index.js'; export {NDKZapInvoice, zapInvoiceFromEvent} from './zap/invoice.js'; From 1136a55cbf2ffa6321417855a9cf88dbb1cd5b80 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Mon, 10 Apr 2023 14:40:01 +0300 Subject: [PATCH 047/773] fix memory leak --- src/events/index.ts | 14 ++++++++++++++ src/relay/index.ts | 14 ++++++++++++++ src/relay/sets/calculate.ts | 8 +++++++- src/relay/sets/index.ts | 10 +++++----- src/subscription/index.ts | 20 ++++++++++++++------ 5 files changed, 54 insertions(+), 12 deletions(-) diff --git a/src/events/index.ts b/src/events/index.ts index 18e7c29f..d41610a0 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -45,6 +45,20 @@ export default class NDKEvent extends EventEmitter { if (event?.kind) this.kind = event?.kind; } + /** + * Returns the event as is. + */ + public rawEvent(): NostrEvent { + return { + created_at: this.created_at!, + content: this.content, + tags: this.tags, + kind: this.kind, + pubkey: this.pubkey, + id: this.id, + }; + } + async toNostrEvent(pubkey?: string): Promise { if (!pubkey) { const user = await this.ndk?.signer?.user(); diff --git a/src/relay/index.ts b/src/relay/index.ts index 7507cedc..142b8501 100644 --- a/src/relay/index.ts +++ b/src/relay/index.ts @@ -53,6 +53,7 @@ export class NDKRelay extends EventEmitter { private _status: NDKRelayStatus; private connectedAt?: number; private _connectionStats: NDKRelayConnectionStats = {attempts: 0, success: 0, durations: []}; + public complaining = false; public constructor(url: string) { super(); @@ -136,6 +137,19 @@ export class NDKRelay extends EventEmitter { } async handleNotice(notice: string) { + // This is a prototype; if the relay seems to be complaining + // remove it from relay set selection for a minute. + if (notice.includes('oo many') || notice.includes('aximum')) { + this.disconnect(); + setTimeout(() => this.connect(), 2000); + console.log(this.relay.url, 'Relay complaining?', notice); + // this.complaining = true; + // setTimeout(() => { + // this.complaining = false; + // console.log(this.relay.url, 'Reactivate relay'); + // }, 60000); + } + this.emit('notice', this, notice); } diff --git a/src/relay/sets/calculate.ts b/src/relay/sets/calculate.ts index a9ff2f6b..48a0851e 100644 --- a/src/relay/sets/calculate.ts +++ b/src/relay/sets/calculate.ts @@ -32,7 +32,13 @@ export function calculateRelaySetFromFilter( ): NDKRelaySet { const relays: Set = new Set(); - ndk.pool?.relays.forEach(relay => relays.add(relay)); + ndk.pool?.relays.forEach(relay => { + if (!relay.complaining) { + relays.add(relay); + } else { + console.log(`Relay ${relay.url} is complaining, not adding to set`); + } + }); return new NDKRelaySet(relays); } diff --git a/src/relay/sets/index.ts b/src/relay/sets/index.ts index 5aa99b9f..ed4338a7 100644 --- a/src/relay/sets/index.ts +++ b/src/relay/sets/index.ts @@ -22,17 +22,17 @@ export class NDKRelaySet { } public subscribe(subscription: NDKSubscription): NDKSubscription { + // If the relay is connected, send the subscription + // If the relay is not connected, wait for it to connect (during the lifetime of the subscription) this.relays.forEach(relay => { if (relay.status === NDKRelayStatus.CONNECTED) { this.subscribeOnRelay(relay, subscription); + // } else { + // relay.on('connect', () => this.subscribeOnRelay(relay, subscription), this.relaysetContext); + // relay.off('connect') } }); - this.relays.forEach(relay => { - // TODO need to remove this listener when the subscription is closed - relay.on('connect', () => this.subscribeOnRelay(relay, subscription)); - }); - return subscription; } diff --git a/src/subscription/index.ts b/src/subscription/index.ts index 35246875..aade4b1a 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -47,6 +47,9 @@ export enum NDKSubscriptionCacheUsage { * @param {number} timeSinceFirstSeen - The time elapsed since the first time the event was seen. * * @event NDKSubscription#eose - Emitted when all relays have reached the end of the event stream. + * + * @event NDKSubscription#close - Emitted when the subscription is closed. + * @param {NDKSubscription} subscription - The subscription that was closed. */ export class NDKSubscription extends EventEmitter { readonly subId: string; @@ -119,7 +122,7 @@ export class NDKSubscription extends EventEmitter { await cachePromise; // if the cache has a hit, return early - if (this.eventIds.size > 0) { + if (this.eventFirstSeen.size > 0) { this.debug('cache hit, skipping relay query'); this.emit('eose'); return; @@ -134,6 +137,12 @@ export class NDKSubscription extends EventEmitter { return; } + public stop(): void { + this.relaySubscriptions.forEach((sub) => sub.unsub()); + this.relaySubscriptions.clear(); + this.emit('close', this); + } + private async startWithCache(): Promise { if (this.ndk.cacheAdapter?.query) { this.debug('querying cache'); @@ -158,7 +167,6 @@ export class NDKSubscription extends EventEmitter { // EVENT handling private eventFirstSeen = new Map(); - private eventIds = new Set(); /** * Called when an event is received from a relay or the cache @@ -168,7 +176,7 @@ export class NDKSubscription extends EventEmitter { */ public eventReceived(event: NDKEvent, relay: NDKRelay | undefined, fromCache = false) { if (!fromCache && relay) { - const eventAlreadySeen = this.eventIds.has(event.id); + const eventAlreadySeen = this.eventFirstSeen.has(event.id); if (eventAlreadySeen) { const timeSinceFirstSeen = Date.now() - (this.eventFirstSeen.get(event.id) || 0); @@ -183,11 +191,11 @@ export class NDKSubscription extends EventEmitter { this.ndk.cacheAdapter.setEvent(event, this.filter); } - this.eventFirstSeen.set(event.id, Date.now()); + this.eventFirstSeen.set(`${event.id}`, Date.now()); + } else { + this.eventFirstSeen.set(`${event.id}`, 0); } - this.eventIds.add(event.id); - this.emit('event', event, relay); } From d523603eb6da548625e9b060f6a7aa48a210ab8e Mon Sep 17 00:00:00 2001 From: pablof7z Date: Mon, 10 Apr 2023 14:49:28 +0300 Subject: [PATCH 048/773] add docs for toNostrEvent --- src/events/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/events/index.ts b/src/events/index.ts index d41610a0..7afb4d5f 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -59,6 +59,10 @@ export default class NDKEvent extends EventEmitter { }; } + /** + * Return a NostrEvent object, trying to fill in missing fields + * when possible. + */ async toNostrEvent(pubkey?: string): Promise { if (!pubkey) { const user = await this.ndk?.signer?.user(); From 6ee0a4ccbd2717fd5c7c901c1cec6b0bee3e1a6a Mon Sep 17 00:00:00 2001 From: pablof7z Date: Mon, 10 Apr 2023 22:39:18 +0300 Subject: [PATCH 049/773] add justfile to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 45b0dd2e..c75f7daa 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ **/dist **/lib **/.vscode +justfile pnpm-lock.yaml **/*.js **/*.d.ts From ea3580827e83cfa0db40564a6ce4709766822a1d Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 11 Apr 2023 12:00:27 +0300 Subject: [PATCH 050/773] release 0.0.28 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d7402062..86952a4d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.27", + "version": "0.0.28", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", From e2c669f0be89cb50f9ead6b585e7f815172b646d Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 11 Apr 2023 12:01:35 +0300 Subject: [PATCH 051/773] release 0.0.29 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 86952a4d..7fa02a67 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.28", + "version": "0.0.29", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", From f0b2b4c7eca1b2ec1ecaa8c15ac8be9254042e86 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 11 Apr 2023 15:46:00 +0300 Subject: [PATCH 052/773] fix kind load --- package.json | 2 +- src/events/index.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 7fa02a67..2753b4ad 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.29", + "version": "0.0.30", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/index.ts b/src/events/index.ts index 7afb4d5f..c4e25f44 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -42,7 +42,7 @@ export default class NDKEvent extends EventEmitter { this.id = event?.id || ''; this.sig = event?.sig; this.pubkey = event?.pubkey || ''; - if (event?.kind) this.kind = event?.kind; + this.kind = event?.kind; } /** @@ -73,7 +73,7 @@ export default class NDKEvent extends EventEmitter { created_at: this.created_at || Math.floor(Date.now() / 1000), content: this.content, tags: this.tags, - kind: this.kind || 0, + kind: this.kind, pubkey: pubkey || this.pubkey, id: this.id, }; From 9f545471078c56f6b0513177b7ce7882baefa8ec Mon Sep 17 00:00:00 2001 From: pablof7z Date: Wed, 12 Apr 2023 09:52:20 +0300 Subject: [PATCH 053/773] emit subscription events with the NDKSubscription object --- package.json | 2 +- src/subscription/index.ts | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 2753b4ad..3d04634d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.30", + "version": "0.0.31", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/subscription/index.ts b/src/subscription/index.ts index aade4b1a..7a0e1288 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -39,14 +39,17 @@ export enum NDKSubscriptionCacheUsage { * Emitted when an event is received by the subscription. * @param {NDKEvent} event - The event received by the subscription. * @param {NDKRelay} relay - The relay that received the event. + * @param {NDKSubscription} subscription - The subscription that received the event. * * @event NDKSubscription#event:dup * Emitted when a duplicate event is received by the subscription. * @param {NDKEvent} event - The duplicate event received by the subscription. * @param {NDKRelay} relay - The relay that received the event. * @param {number} timeSinceFirstSeen - The time elapsed since the first time the event was seen. + * @param {NDKSubscription} subscription - The subscription that received the event. * * @event NDKSubscription#eose - Emitted when all relays have reached the end of the event stream. + * @param {NDKSubscription} subscription - The subscription that received EOSE. * * @event NDKSubscription#close - Emitted when the subscription is closed. * @param {NDKSubscription} subscription - The subscription that was closed. @@ -124,7 +127,7 @@ export class NDKSubscription extends EventEmitter { // if the cache has a hit, return early if (this.eventFirstSeen.size > 0) { this.debug('cache hit, skipping relay query'); - this.emit('eose'); + this.emit('eose', this); return; } } @@ -182,7 +185,7 @@ export class NDKSubscription extends EventEmitter { const timeSinceFirstSeen = Date.now() - (this.eventFirstSeen.get(event.id) || 0); relay.scoreSlowerEvent(timeSinceFirstSeen); - this.emit('event:dup', event, relay, timeSinceFirstSeen); + this.emit('event:dup', event, relay, timeSinceFirstSeen, this); return; } @@ -196,7 +199,7 @@ export class NDKSubscription extends EventEmitter { this.eventFirstSeen.set(`${event.id}`, 0); } - this.emit('event', event, relay); + this.emit('event', event, relay, this); } // EOSE handling From 346846493f13a27133156e690683d30bee81c9cf Mon Sep 17 00:00:00 2001 From: pablof7z Date: Thu, 13 Apr 2023 12:02:46 +0300 Subject: [PATCH 054/773] fix bug where NDKSubscription wasn't emitting`close` after auto-closing due to EOSE --- package.json | 2 +- src/index.ts | 6 +++--- src/subscription/index.ts | 6 ++++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 3d04634d..f95a01d3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.31", + "version": "0.0.32", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/index.ts b/src/index.ts index 6a540c5a..fad89573 100644 --- a/src/index.ts +++ b/src/index.ts @@ -16,10 +16,10 @@ export { NDKFilter, NDKUserProfile, NDKCacheAdapter, - NDKSubscription }; -export {NDKRelay, NDKRelayStatus} from './relay/index.js'; -export {NDKRelaySet} from './relay/sets/index.js'; +export * from './subscription/index.js'; +export * from './relay/index.js'; +export * from './relay/sets/index.js'; export {NDKKind} from './events/kind.js'; export {NDKNip07Signer} from './signers/nip07/index.js'; export {NDKZapInvoice, zapInvoiceFromEvent} from './zap/invoice.js'; diff --git a/src/subscription/index.ts b/src/subscription/index.ts index 7a0e1288..10208712 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -209,6 +209,12 @@ export class NDKSubscription extends EventEmitter { public eoseReceived(relay: NDKRelay): void { if (this.opts?.closeOnEose) { this.relaySubscriptions.get(relay)?.unsub(); + this.relaySubscriptions.delete(relay); + + // if this was the last relay that needed to EOSE, emit that this subscription is closed + if (this.relaySubscriptions.size === 0) { + this.emit('close', this); + } } this.eosesSeen.add(relay); From bbca95efca3454e9c58a4c2d45ceba998766dd33 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 15 Apr 2023 00:28:04 +0300 Subject: [PATCH 055/773] persist storage of pubkey once a nostr event is computed --- src/events/index.ts | 6 +++--- src/index.ts | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/events/index.ts b/src/events/index.ts index c4e25f44..847ca3c2 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -64,9 +64,9 @@ export default class NDKEvent extends EventEmitter { * when possible. */ async toNostrEvent(pubkey?: string): Promise { - if (!pubkey) { + if (!pubkey && this.pubkey === '') { const user = await this.ndk?.signer?.user(); - pubkey = user?.hexpubkey(); + this.pubkey = user?.hexpubkey() || ''; } const nostrEvent: NostrEvent = { @@ -74,7 +74,7 @@ export default class NDKEvent extends EventEmitter { content: this.content, tags: this.tags, kind: this.kind, - pubkey: pubkey || this.pubkey, + pubkey: this.pubkey, id: this.id, }; diff --git a/src/index.ts b/src/index.ts index fad89573..98ec5094 100644 --- a/src/index.ts +++ b/src/index.ts @@ -20,6 +20,7 @@ export { export * from './subscription/index.js'; export * from './relay/index.js'; export * from './relay/sets/index.js'; +export * from './signers/private-key/index.js'; export {NDKKind} from './events/kind.js'; export {NDKNip07Signer} from './signers/nip07/index.js'; export {NDKZapInvoice, zapInvoiceFromEvent} from './zap/invoice.js'; From 4e414946a4dd7a2ecf63eec622a9163ddf4a37db Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 15 Apr 2023 00:28:25 +0300 Subject: [PATCH 056/773] track active subscriptions per relay --- package.json | 2 +- src/relay/index.ts | 10 ++++++++++ src/signers/private-key/index.test.ts | 20 ++++++++++---------- src/signers/private-key/index.ts | 10 +++++----- 4 files changed, 26 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index f95a01d3..d7ec8790 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.32", + "version": "0.0.33", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/relay/index.ts b/src/relay/index.ts index 142b8501..2d80b703 100644 --- a/src/relay/index.ts +++ b/src/relay/index.ts @@ -55,6 +55,11 @@ export class NDKRelay extends EventEmitter { private _connectionStats: NDKRelayConnectionStats = {attempts: 0, success: 0, durations: []}; public complaining = false; + /** + * Active subscriptions this relay is connected to + */ + public activeSubscriptions = new Set(); + public constructor(url: string) { super(); this.url = url; @@ -172,6 +177,11 @@ export class NDKRelay extends EventEmitter { subscription.eoseReceived(this); }); + this.activeSubscriptions.add(subscription); + subscription.on('close', () => { + this.activeSubscriptions.delete(subscription); + }); + return sub; } diff --git a/src/signers/private-key/index.test.ts b/src/signers/private-key/index.test.ts index e003d4c5..f4af114f 100644 --- a/src/signers/private-key/index.test.ts +++ b/src/signers/private-key/index.test.ts @@ -1,24 +1,24 @@ -import PrivateKeySigner from './index'; +import {NDKPrivateKeySigner} from './index'; import { NostrEvent } from '../../events/index'; import User from '../../user'; -describe('PrivateKeySigner', () => { - it('generates a new PrivateKeySigner instance with a private key', () => { - const signer = PrivateKeySigner.generate(); - expect(signer).toBeInstanceOf(PrivateKeySigner); +describe('NDKPrivateKeySigner', () => { + it('generates a new NDKPrivateKeySigner instance with a private key', () => { + const signer = NDKPrivateKeySigner.generate(); + expect(signer).toBeInstanceOf(NDKPrivateKeySigner); expect(signer.privateKey).toBeDefined(); }); - it('creates a new PrivateKeySigner instance with a provided private key', () => { + it('creates a new NDKPrivateKeySigner instance with a provided private key', () => { const privateKey = '00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff'; - const signer = new PrivateKeySigner(privateKey); - expect(signer).toBeInstanceOf(PrivateKeySigner); + const signer = new NDKPrivateKeySigner(privateKey); + expect(signer).toBeInstanceOf(NDKPrivateKeySigner); expect(signer.privateKey).toBe(privateKey); }); it('returns a user instance with a public key corresponding to the private key', async () => { const privateKey = 'e8eb7464168139c6ccb9111f768777f332fa1289dff11244ccfe89970ff776d4'; - const signer = new PrivateKeySigner(privateKey); + const signer = new NDKPrivateKeySigner(privateKey); const user = await signer.user(); expect(user).toBeInstanceOf(User); expect(user.hexpubkey()).toBe('07f61c41b44a923952db82e6e7bcd184b059fe087f58f9d9a918da391f38d503'); @@ -26,7 +26,7 @@ describe('PrivateKeySigner', () => { it('signs a NostrEvent with the private key', async () => { const privateKey = '00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff'; - const signer = new PrivateKeySigner(privateKey); + const signer = new NDKPrivateKeySigner(privateKey); const event: NostrEvent = { pubkey: '07f61c41b44a923952db82e6e7bcd184b059fe087f58f9d9a918da391f38d503', diff --git a/src/signers/private-key/index.ts b/src/signers/private-key/index.ts index 653f7a9c..9be4049f 100644 --- a/src/signers/private-key/index.ts +++ b/src/signers/private-key/index.ts @@ -4,20 +4,20 @@ import type { NostrEvent } from '../../events/index.js'; import { NDKSigner } from '../index.js'; import User from '../../user'; -export default class PrivateKeySigner implements NDKSigner { +export class NDKPrivateKeySigner implements NDKSigner { private _user: User | undefined; privateKey?: string; public constructor(privateKey?: string) { if (privateKey) { - this.privateKey = privateKey; - this._user = new User({ hexpubkey: getPublicKey(this.privateKey) }); + this.privateKey = privateKey; + this._user = new User({ hexpubkey: getPublicKey(this.privateKey) }); } } - static generate() { + public static generate() { const privateKey = generatePrivateKey(); - return new PrivateKeySigner(privateKey); + return new NDKPrivateKeySigner(privateKey); } public async blockUntilReady(): Promise { From a63b16b4d657f3a1f6fc759f796de56f02d50918 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 15 Apr 2023 00:29:00 +0300 Subject: [PATCH 057/773] update docs --- docs/classes/NDKEvent.md | 62 +++++++---- docs/classes/NDKNip07Signer.md | 8 +- docs/classes/NDKPrivateKeySigner.md | 124 +++++++++++++++++++++ docs/classes/NDKRelay.md | 54 ++++++--- docs/classes/NDKRelaySet.md | 105 +++++++++++++++++ docs/classes/NDKSubscription.md | 61 +++++++--- docs/classes/NDKUser.md | 20 ++-- docs/classes/default.md | 30 ++--- docs/enums/NDKKind.md | 56 +++++----- docs/enums/NDKRelayStatus.md | 63 +++++++++++ docs/enums/NDKSubscriptionCacheUsage.md | 52 +++++++++ docs/interfaces/GetUserParams.md | 8 +- docs/interfaces/NDKCacheAdapter.md | 6 +- docs/interfaces/NDKConstructorParams.md | 8 +- docs/interfaces/NDKFilterOptions.md | 19 ++++ docs/interfaces/NDKRelayConnectionStats.md | 60 ++++++++++ docs/interfaces/NDKSubscriptionOptions.md | 30 +++++ docs/interfaces/NDKUserProfile.md | 20 ++-- docs/interfaces/NDKZapInvoice.md | 14 +-- docs/modules.md | 11 +- 20 files changed, 674 insertions(+), 137 deletions(-) create mode 100644 docs/classes/NDKPrivateKeySigner.md create mode 100644 docs/classes/NDKRelaySet.md create mode 100644 docs/enums/NDKRelayStatus.md create mode 100644 docs/enums/NDKSubscriptionCacheUsage.md create mode 100644 docs/interfaces/NDKFilterOptions.md create mode 100644 docs/interfaces/NDKRelayConnectionStats.md create mode 100644 docs/interfaces/NDKSubscriptionOptions.md diff --git a/docs/classes/NDKEvent.md b/docs/classes/NDKEvent.md index ec940cd2..b6ea73a1 100644 --- a/docs/classes/NDKEvent.md +++ b/docs/classes/NDKEvent.md @@ -33,6 +33,7 @@ - [getMatchingTags](NDKEvent.md#getmatchingtags) - [publish](NDKEvent.md#publish) +- [rawEvent](NDKEvent.md#rawevent) - [sign](NDKEvent.md#sign) - [tagId](NDKEvent.md#tagid) - [tagReference](NDKEvent.md#tagreference) @@ -59,7 +60,7 @@ EventEmitter.constructor #### Defined in -[src/events/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L35) +[src/events/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L35) ## Properties @@ -69,7 +70,7 @@ EventEmitter.constructor #### Defined in -[src/events/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L27) +[src/events/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L27) ___ @@ -79,7 +80,7 @@ ___ #### Defined in -[src/events/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L26) +[src/events/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L26) ___ @@ -103,7 +104,7 @@ ___ #### Defined in -[src/events/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L79) +[src/events/index.ts:97](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L97) ___ @@ -113,7 +114,7 @@ ___ #### Defined in -[src/events/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L31) +[src/events/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L31) ___ @@ -137,7 +138,7 @@ ___ #### Defined in -[src/events/index.ts:78](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L78) +[src/events/index.ts:96](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L96) ___ @@ -161,7 +162,7 @@ ___ #### Defined in -[src/events/index.ts:77](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L77) +[src/events/index.ts:95](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L95) ___ @@ -171,7 +172,7 @@ ___ #### Defined in -[src/events/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L30) +[src/events/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L30) ___ @@ -181,7 +182,7 @@ ___ #### Defined in -[src/events/index.ts:25](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L25) +[src/events/index.ts:25](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L25) ___ @@ -191,7 +192,7 @@ ___ #### Defined in -[src/events/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L33) +[src/events/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L33) ___ @@ -201,7 +202,7 @@ ___ #### Defined in -[src/events/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L32) +[src/events/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L32) ___ @@ -211,7 +212,7 @@ ___ #### Defined in -[src/events/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L28) +[src/events/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L28) ___ @@ -221,7 +222,7 @@ ___ #### Defined in -[src/events/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L29) +[src/events/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L29) ## Methods @@ -243,7 +244,7 @@ Get all tags with the given name #### Defined in -[src/events/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L84) +[src/events/index.ts:102](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L102) ___ @@ -257,7 +258,23 @@ ___ #### Defined in -[src/events/index.ts:101](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L101) +[src/events/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L119) + +___ + +### rawEvent + +▸ **rawEvent**(): `NostrEvent` + +Returns the event as is. + +#### Returns + +`NostrEvent` + +#### Defined in + +[src/events/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L51) ___ @@ -271,7 +288,7 @@ ___ #### Defined in -[src/events/index.ts:92](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L92) +[src/events/index.ts:110](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L110) ___ @@ -287,7 +304,7 @@ the id of the event, or if it's a parameterized event, the id of the event with #### Defined in -[src/events/index.ts:129](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L129) +[src/events/index.ts:147](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L147) ___ @@ -313,7 +330,7 @@ event = new NDKEvent(ndk, { kind: 30000, pubkey: 'pubkey', tags: [ ["d", "d-code #### Defined in -[src/events/index.ts:150](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L150) +[src/events/index.ts:168](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L168) ___ @@ -321,6 +338,9 @@ ___ ▸ **toNostrEvent**(`pubkey?`): `Promise`<`NostrEvent`\> +Return a NostrEvent object, trying to fill in missing fields +when possible. + #### Parameters | Name | Type | @@ -333,7 +353,7 @@ ___ #### Defined in -[src/events/index.ts:48](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L48) +[src/events/index.ts:66](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L66) ___ @@ -347,7 +367,7 @@ ___ #### Defined in -[src/events/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L88) +[src/events/index.ts:106](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L106) ___ @@ -370,4 +390,4 @@ Create a zap request for an existing event #### Defined in -[src/events/index.ts:162](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/index.ts#L162) +[src/events/index.ts:180](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L180) diff --git a/docs/classes/NDKNip07Signer.md b/docs/classes/NDKNip07Signer.md index aab751a2..8abc7f61 100644 --- a/docs/classes/NDKNip07Signer.md +++ b/docs/classes/NDKNip07Signer.md @@ -29,7 +29,7 @@ with a NIP-07 browser extension (e.g., getalby, nos2x). #### Defined in -[src/signers/nip07/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/signers/nip07/index.ts#L12) +[src/signers/nip07/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/signers/nip07/index.ts#L12) ## Methods @@ -47,7 +47,7 @@ NDKSigner.blockUntilReady #### Defined in -[src/signers/nip07/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/signers/nip07/index.ts#L18) +[src/signers/nip07/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/signers/nip07/index.ts#L18) ___ @@ -79,7 +79,7 @@ NDKSigner.sign #### Defined in -[src/signers/nip07/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/signers/nip07/index.ts#L47) +[src/signers/nip07/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/signers/nip07/index.ts#L47) ___ @@ -101,4 +101,4 @@ NDKSigner.user #### Defined in -[src/signers/nip07/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/signers/nip07/index.ts#L33) +[src/signers/nip07/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/signers/nip07/index.ts#L33) diff --git a/docs/classes/NDKPrivateKeySigner.md b/docs/classes/NDKPrivateKeySigner.md new file mode 100644 index 00000000..54c283ba --- /dev/null +++ b/docs/classes/NDKPrivateKeySigner.md @@ -0,0 +1,124 @@ +[NDK](../README.md) / [Exports](../modules.md) / NDKPrivateKeySigner + +# Class: NDKPrivateKeySigner + +## Implements + +- `NDKSigner` + +## Table of contents + +### Constructors + +- [constructor](NDKPrivateKeySigner.md#constructor) + +### Properties + +- [privateKey](NDKPrivateKeySigner.md#privatekey) + +### Methods + +- [blockUntilReady](NDKPrivateKeySigner.md#blockuntilready) +- [sign](NDKPrivateKeySigner.md#sign) +- [user](NDKPrivateKeySigner.md#user) +- [generate](NDKPrivateKeySigner.md#generate) + +## Constructors + +### constructor + +• **new NDKPrivateKeySigner**(`privateKey?`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `privateKey?` | `string` | + +#### Defined in + +[src/signers/private-key/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/signers/private-key/index.ts#L11) + +## Properties + +### privateKey + +• `Optional` **privateKey**: `string` + +#### Defined in + +[src/signers/private-key/index.ts:9](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/signers/private-key/index.ts#L9) + +## Methods + +### blockUntilReady + +▸ **blockUntilReady**(): `Promise`<[`NDKUser`](NDKUser.md)\> + +#### Returns + +`Promise`<[`NDKUser`](NDKUser.md)\> + +#### Implementation of + +NDKSigner.blockUntilReady + +#### Defined in + +[src/signers/private-key/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/signers/private-key/index.ts#L23) + +___ + +### sign + +▸ **sign**(`event`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `event` | `NostrEvent` | + +#### Returns + +`Promise`<`string`\> + +#### Implementation of + +NDKSigner.sign + +#### Defined in + +[src/signers/private-key/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/signers/private-key/index.ts#L35) + +___ + +### user + +▸ **user**(): `Promise`<[`NDKUser`](NDKUser.md)\> + +#### Returns + +`Promise`<[`NDKUser`](NDKUser.md)\> + +#### Implementation of + +NDKSigner.user + +#### Defined in + +[src/signers/private-key/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/signers/private-key/index.ts#L30) + +___ + +### generate + +▸ `Static` **generate**(): [`NDKPrivateKeySigner`](NDKPrivateKeySigner.md) + +#### Returns + +[`NDKPrivateKeySigner`](NDKPrivateKeySigner.md) + +#### Defined in + +[src/signers/private-key/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/signers/private-key/index.ts#L18) diff --git a/docs/classes/NDKRelay.md b/docs/classes/NDKRelay.md index f48b3938..9985e72b 100644 --- a/docs/classes/NDKRelay.md +++ b/docs/classes/NDKRelay.md @@ -38,6 +38,8 @@ NDKRelay#eose ### Properties +- [activeSubscriptions](NDKRelay.md#activesubscriptions) +- [complaining](NDKRelay.md#complaining) - [scores](NDKRelay.md#scores) - [url](NDKRelay.md#url) @@ -73,17 +75,39 @@ EventEmitter.constructor #### Defined in -[src/relay/index.ts:57](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/relay/index.ts#L57) +[src/relay/index.ts:63](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L63) ## Properties +### activeSubscriptions + +• **activeSubscriptions**: `Set`<[`NDKSubscription`](NDKSubscription.md)\> + +Active subscriptions this relay is connected to + +#### Defined in + +[src/relay/index.ts:61](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L61) + +___ + +### complaining + +• **complaining**: `boolean` = `false` + +#### Defined in + +[src/relay/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L56) + +___ + ### scores • `Readonly` **scores**: `Map`<[`NDKUser`](NDKUser.md), `number`\> #### Defined in -[src/relay/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/relay/index.ts#L51) +[src/relay/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L51) ___ @@ -93,37 +117,37 @@ ___ #### Defined in -[src/relay/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/relay/index.ts#L50) +[src/relay/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L50) ## Accessors ### connectionStats -• `get` **connectionStats**(): `NDKRelayConnectionStats` +• `get` **connectionStats**(): [`NDKRelayConnectionStats`](../interfaces/NDKRelayConnectionStats.md) Returns the connection stats. #### Returns -`NDKRelayConnectionStats` +[`NDKRelayConnectionStats`](../interfaces/NDKRelayConnectionStats.md) #### Defined in -[src/relay/index.ts:212](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/relay/index.ts#L212) +[src/relay/index.ts:234](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L234) ___ ### status -• `get` **status**(): `NDKRelayStatus` +• `get` **status**(): [`NDKRelayStatus`](../enums/NDKRelayStatus.md) #### Returns -`NDKRelayStatus` +[`NDKRelayStatus`](../enums/NDKRelayStatus.md) #### Defined in -[src/relay/index.ts:117](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/relay/index.ts#L117) +[src/relay/index.ts:121](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L121) ## Methods @@ -139,7 +163,7 @@ Connects to the relay. #### Defined in -[src/relay/index.ts:124](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/relay/index.ts#L124) +[src/relay/index.ts:128](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L128) ___ @@ -155,7 +179,7 @@ Disconnects from the relay. #### Defined in -[src/relay/index.ts:135](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/relay/index.ts#L135) +[src/relay/index.ts:139](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L139) ___ @@ -175,7 +199,7 @@ ___ #### Defined in -[src/relay/index.ts:140](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/relay/index.ts#L140) +[src/relay/index.ts:144](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L144) ___ @@ -197,7 +221,7 @@ Publishes an event to the relay. #### Defined in -[src/relay/index.ts:169](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/relay/index.ts#L169) +[src/relay/index.ts:191](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L191) ___ @@ -220,7 +244,7 @@ wasn't the fastest one. #### Defined in -[src/relay/index.ts:180](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/relay/index.ts#L180) +[src/relay/index.ts:202](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L202) ___ @@ -242,4 +266,4 @@ Subscribes to a subscription. #### Defined in -[src/relay/index.ts:147](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/relay/index.ts#L147) +[src/relay/index.ts:164](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L164) diff --git a/docs/classes/NDKRelaySet.md b/docs/classes/NDKRelaySet.md new file mode 100644 index 00000000..9331253e --- /dev/null +++ b/docs/classes/NDKRelaySet.md @@ -0,0 +1,105 @@ +[NDK](../README.md) / [Exports](../modules.md) / NDKRelaySet + +# Class: NDKRelaySet + +A relay set is a group of relays. This grouping can be short-living, for a single +REQ or can be long-lasting, for example for the explicit relay list the user +has specified. + +Requests to relays should be sent through this interface. + +## Table of contents + +### Constructors + +- [constructor](NDKRelaySet.md#constructor) + +### Properties + +- [relays](NDKRelaySet.md#relays) + +### Methods + +- [publish](NDKRelaySet.md#publish) +- [size](NDKRelaySet.md#size) +- [subscribe](NDKRelaySet.md#subscribe) + +## Constructors + +### constructor + +• **new NDKRelaySet**(`relays`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `relays` | `Set`<[`NDKRelay`](NDKRelay.md)\> | + +#### Defined in + +[src/relay/sets/index.ts:15](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/sets/index.ts#L15) + +## Properties + +### relays + +• `Readonly` **relays**: `Set`<[`NDKRelay`](NDKRelay.md)\> + +#### Defined in + +[src/relay/sets/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/sets/index.ts#L13) + +## Methods + +### publish + +▸ **publish**(`event`): `Promise`<`void`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `event` | [`NDKEvent`](NDKEvent.md) | + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/relay/sets/index.ts:39](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/sets/index.ts#L39) + +___ + +### size + +▸ **size**(): `number` + +#### Returns + +`number` + +#### Defined in + +[src/relay/sets/index.ts:49](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/sets/index.ts#L49) + +___ + +### subscribe + +▸ **subscribe**(`subscription`): [`NDKSubscription`](NDKSubscription.md) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `subscription` | [`NDKSubscription`](NDKSubscription.md) | + +#### Returns + +[`NDKSubscription`](NDKSubscription.md) + +#### Defined in + +[src/relay/sets/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/sets/index.ts#L24) diff --git a/docs/classes/NDKSubscription.md b/docs/classes/NDKSubscription.md index 07fe2da0..fb232c0d 100644 --- a/docs/classes/NDKSubscription.md +++ b/docs/classes/NDKSubscription.md @@ -15,6 +15,10 @@ The event received by the subscription. The relay that received the event. +**`Param`** + +The subscription that received the event. + NDKSubscription#event:dup Emitted when a duplicate event is received by the subscription. @@ -30,8 +34,22 @@ The relay that received the event. The time elapsed since the first time the event was seen. +**`Param`** + +The subscription that received the event. + NDKSubscription#eose - Emitted when all relays have reached the end of the event stream. +**`Param`** + +The subscription that received EOSE. + + NDKSubscription#close - Emitted when the subscription is closed. + +**`Param`** + +The subscription that was closed. + ## Hierarchy - `EventEmitter` @@ -58,6 +76,7 @@ The time elapsed since the first time the event was seen. - [eoseReceived](NDKSubscription.md#eosereceived) - [eventReceived](NDKSubscription.md#eventreceived) - [start](NDKSubscription.md#start) +- [stop](NDKSubscription.md#stop) ## Constructors @@ -71,8 +90,8 @@ The time elapsed since the first time the event was seen. | :------ | :------ | | `ndk` | [`default`](default.md) | | `filter` | `Filter` | -| `opts?` | `NDKSubscriptionOptions` | -| `relaySet?` | `NDKRelaySet` | +| `opts?` | [`NDKSubscriptionOptions`](../interfaces/NDKSubscriptionOptions.md) | +| `relaySet?` | [`NDKRelaySet`](NDKRelaySet.md) | | `subId?` | `string` | #### Overrides @@ -81,7 +100,7 @@ EventEmitter.constructor #### Defined in -[src/subscription/index.ts:60](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/subscription/index.ts#L60) +[src/subscription/index.ts:66](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L66) ## Properties @@ -91,7 +110,7 @@ EventEmitter.constructor #### Defined in -[src/subscription/index.ts:53](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/subscription/index.ts#L53) +[src/subscription/index.ts:59](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L59) ___ @@ -101,27 +120,27 @@ ___ #### Defined in -[src/subscription/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/subscription/index.ts#L56) +[src/subscription/index.ts:62](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L62) ___ ### opts -• `Optional` `Readonly` **opts**: `NDKSubscriptionOptions` +• `Optional` `Readonly` **opts**: [`NDKSubscriptionOptions`](../interfaces/NDKSubscriptionOptions.md) #### Defined in -[src/subscription/index.ts:54](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/subscription/index.ts#L54) +[src/subscription/index.ts:60](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L60) ___ ### relaySet -• `Optional` **relaySet**: `NDKRelaySet` +• `Optional` **relaySet**: [`NDKRelaySet`](NDKRelaySet.md) #### Defined in -[src/subscription/index.ts:55](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/subscription/index.ts#L55) +[src/subscription/index.ts:61](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L61) ___ @@ -131,7 +150,7 @@ ___ #### Defined in -[src/subscription/index.ts:57](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/subscription/index.ts#L57) +[src/subscription/index.ts:63](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L63) ___ @@ -141,7 +160,7 @@ ___ #### Defined in -[src/subscription/index.ts:52](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/subscription/index.ts#L52) +[src/subscription/index.ts:58](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L58) ## Methods @@ -161,7 +180,7 @@ ___ #### Defined in -[src/subscription/index.ts:198](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/subscription/index.ts#L198) +[src/subscription/index.ts:209](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L209) ___ @@ -185,7 +204,7 @@ Called when an event is received from a relay or the cache #### Defined in -[src/subscription/index.ts:169](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/subscription/index.ts#L169) +[src/subscription/index.ts:180](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L180) ___ @@ -202,4 +221,18 @@ after creating a subscription. #### Defined in -[src/subscription/index.ts:105](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/subscription/index.ts#L105) +[src/subscription/index.ts:111](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L111) + +___ + +### stop + +▸ **stop**(): `void` + +#### Returns + +`void` + +#### Defined in + +[src/subscription/index.ts:143](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L143) diff --git a/docs/classes/NDKUser.md b/docs/classes/NDKUser.md index 07d47732..76a34e3d 100644 --- a/docs/classes/NDKUser.md +++ b/docs/classes/NDKUser.md @@ -39,7 +39,7 @@ Represents a pubkey. #### Defined in -[src/user/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/index.ts#L23) +[src/user/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/index.ts#L23) ## Properties @@ -65,7 +65,7 @@ Returns a set of users that this user follows. #### Defined in -[src/user/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/index.ts#L79) +[src/user/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/index.ts#L79) ___ @@ -75,7 +75,7 @@ ___ #### Defined in -[src/user/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/index.ts#L18) +[src/user/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/index.ts#L18) ___ @@ -85,7 +85,7 @@ ___ #### Defined in -[src/user/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/index.ts#L20) +[src/user/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/index.ts#L20) ___ @@ -95,7 +95,7 @@ ___ #### Defined in -[src/user/index.ts:19](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/index.ts#L19) +[src/user/index.ts:19](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/index.ts#L19) ___ @@ -105,7 +105,7 @@ ___ #### Defined in -[src/user/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/index.ts#L21) +[src/user/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/index.ts#L21) ## Methods @@ -119,7 +119,7 @@ ___ #### Defined in -[src/user/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/index.ts#L50) +[src/user/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/index.ts#L50) ___ @@ -133,7 +133,7 @@ ___ #### Defined in -[src/user/index.ts:46](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/index.ts#L46) +[src/user/index.ts:46](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/index.ts#L46) ___ @@ -147,7 +147,7 @@ ___ #### Defined in -[src/user/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/index.ts#L81) +[src/user/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/index.ts#L81) ___ @@ -167,4 +167,4 @@ ___ #### Defined in -[src/user/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/index.ts#L35) +[src/user/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/index.ts#L35) diff --git a/docs/classes/default.md b/docs/classes/default.md index 9e0721dc..54ceacc5 100644 --- a/docs/classes/default.md +++ b/docs/classes/default.md @@ -49,7 +49,7 @@ EventEmitter.constructor #### Defined in -[src/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L43) +[src/index.ts:45](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L45) ## Properties @@ -59,7 +59,7 @@ EventEmitter.constructor #### Defined in -[src/index.ts:40](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L40) +[src/index.ts:42](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L42) ___ @@ -69,7 +69,7 @@ ___ #### Defined in -[src/index.ts:41](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L41) +[src/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L43) ___ @@ -79,7 +79,7 @@ ___ #### Defined in -[src/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L38) +[src/index.ts:40](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L40) ___ @@ -89,7 +89,7 @@ ___ #### Defined in -[src/index.ts:39](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L39) +[src/index.ts:41](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L41) ## Methods @@ -105,7 +105,7 @@ Ensures that a signer is available to sign an event. #### Defined in -[src/index.ts:135](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L135) +[src/index.ts:137](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L137) ___ @@ -128,7 +128,7 @@ If the timeout is reached, the connection will be continued to be established in #### Defined in -[src/index.ts:62](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L62) +[src/index.ts:64](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L64) ___ @@ -143,7 +143,7 @@ Fetch a single event | Name | Type | | :------ | :------ | | `filter` | `Filter` | -| `opts` | `NDKFilterOptions` | +| `opts` | [`NDKFilterOptions`](../interfaces/NDKFilterOptions.md) | #### Returns @@ -151,7 +151,7 @@ Fetch a single event #### Defined in -[src/index.ts:98](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L98) +[src/index.ts:100](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L100) ___ @@ -166,7 +166,7 @@ Fetch events | Name | Type | | :------ | :------ | | `filter` | `Filter` | -| `opts` | `NDKFilterOptions` | +| `opts` | [`NDKFilterOptions`](../interfaces/NDKFilterOptions.md) | #### Returns @@ -174,7 +174,7 @@ Fetch events #### Defined in -[src/index.ts:111](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L111) +[src/index.ts:113](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L113) ___ @@ -196,7 +196,7 @@ Get a NDKUser object #### Defined in -[src/index.ts:73](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L73) +[src/index.ts:75](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L75) ___ @@ -216,7 +216,7 @@ ___ #### Defined in -[src/index.ts:89](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L89) +[src/index.ts:91](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L91) ___ @@ -229,7 +229,7 @@ ___ | Name | Type | | :------ | :------ | | `filter` | `Filter` | -| `opts?` | `NDKSubscriptionOptions` | +| `opts?` | [`NDKSubscriptionOptions`](../interfaces/NDKSubscriptionOptions.md) | #### Returns @@ -237,4 +237,4 @@ ___ #### Defined in -[src/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L79) +[src/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L81) diff --git a/docs/enums/NDKKind.md b/docs/enums/NDKKind.md index 098214bd..8962415a 100644 --- a/docs/enums/NDKKind.md +++ b/docs/enums/NDKKind.md @@ -43,7 +43,7 @@ #### Defined in -[src/events/kind.ts:31](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L31) +[src/events/kind.ts:31](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L31) ___ @@ -53,7 +53,7 @@ ___ #### Defined in -[src/events/kind.ts:30](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L30) +[src/events/kind.ts:30](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L30) ___ @@ -63,7 +63,7 @@ ___ #### Defined in -[src/events/kind.ts:12](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L12) +[src/events/kind.ts:12](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L12) ___ @@ -73,7 +73,7 @@ ___ #### Defined in -[src/events/kind.ts:29](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L29) +[src/events/kind.ts:29](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L29) ___ @@ -83,7 +83,7 @@ ___ #### Defined in -[src/events/kind.ts:27](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L27) +[src/events/kind.ts:27](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L27) ___ @@ -93,7 +93,7 @@ ___ #### Defined in -[src/events/kind.ts:26](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L26) +[src/events/kind.ts:26](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L26) ___ @@ -103,7 +103,7 @@ ___ #### Defined in -[src/events/kind.ts:13](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L13) +[src/events/kind.ts:13](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L13) ___ @@ -113,7 +113,7 @@ ___ #### Defined in -[src/events/kind.ts:16](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L16) +[src/events/kind.ts:16](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L16) ___ @@ -123,7 +123,7 @@ ___ #### Defined in -[src/events/kind.ts:15](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L15) +[src/events/kind.ts:15](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L15) ___ @@ -133,7 +133,7 @@ ___ #### Defined in -[src/events/kind.ts:14](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L14) +[src/events/kind.ts:14](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L14) ___ @@ -143,7 +143,7 @@ ___ #### Defined in -[src/events/kind.ts:17](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L17) +[src/events/kind.ts:17](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L17) ___ @@ -153,7 +153,7 @@ ___ #### Defined in -[src/events/kind.ts:24](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L24) +[src/events/kind.ts:24](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L24) ___ @@ -163,7 +163,7 @@ ___ #### Defined in -[src/events/kind.ts:7](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L7) +[src/events/kind.ts:7](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L7) ___ @@ -173,7 +173,7 @@ ___ #### Defined in -[src/events/kind.ts:8](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L8) +[src/events/kind.ts:8](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L8) ___ @@ -183,7 +183,7 @@ ___ #### Defined in -[src/events/kind.ts:9](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L9) +[src/events/kind.ts:9](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L9) ___ @@ -193,7 +193,7 @@ ___ #### Defined in -[src/events/kind.ts:4](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L4) +[src/events/kind.ts:4](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L4) ___ @@ -203,7 +203,7 @@ ___ #### Defined in -[src/events/kind.ts:21](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L21) +[src/events/kind.ts:21](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L21) ___ @@ -213,7 +213,7 @@ ___ #### Defined in -[src/events/kind.ts:25](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L25) +[src/events/kind.ts:25](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L25) ___ @@ -223,7 +223,7 @@ ___ #### Defined in -[src/events/kind.ts:22](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L22) +[src/events/kind.ts:22](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L22) ___ @@ -233,7 +233,7 @@ ___ #### Defined in -[src/events/kind.ts:28](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L28) +[src/events/kind.ts:28](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L28) ___ @@ -243,7 +243,7 @@ ___ #### Defined in -[src/events/kind.ts:11](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L11) +[src/events/kind.ts:11](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L11) ___ @@ -253,7 +253,7 @@ ___ #### Defined in -[src/events/kind.ts:6](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L6) +[src/events/kind.ts:6](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L6) ___ @@ -263,7 +263,7 @@ ___ #### Defined in -[src/events/kind.ts:23](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L23) +[src/events/kind.ts:23](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L23) ___ @@ -273,7 +273,7 @@ ___ #### Defined in -[src/events/kind.ts:18](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L18) +[src/events/kind.ts:18](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L18) ___ @@ -283,7 +283,7 @@ ___ #### Defined in -[src/events/kind.ts:10](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L10) +[src/events/kind.ts:10](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L10) ___ @@ -293,7 +293,7 @@ ___ #### Defined in -[src/events/kind.ts:5](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L5) +[src/events/kind.ts:5](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L5) ___ @@ -303,7 +303,7 @@ ___ #### Defined in -[src/events/kind.ts:20](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L20) +[src/events/kind.ts:20](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L20) ___ @@ -313,4 +313,4 @@ ___ #### Defined in -[src/events/kind.ts:19](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/events/kind.ts#L19) +[src/events/kind.ts:19](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L19) diff --git a/docs/enums/NDKRelayStatus.md b/docs/enums/NDKRelayStatus.md new file mode 100644 index 00000000..3b679a77 --- /dev/null +++ b/docs/enums/NDKRelayStatus.md @@ -0,0 +1,63 @@ +[NDK](../README.md) / [Exports](../modules.md) / NDKRelayStatus + +# Enumeration: NDKRelayStatus + +## Table of contents + +### Enumeration Members + +- [CONNECTED](NDKRelayStatus.md#connected) +- [CONNECTING](NDKRelayStatus.md#connecting) +- [DISCONNECTED](NDKRelayStatus.md#disconnected) +- [DISCONNECTING](NDKRelayStatus.md#disconnecting) +- [RECONNECTING](NDKRelayStatus.md#reconnecting) + +## Enumeration Members + +### CONNECTED + +• **CONNECTED** = ``1`` + +#### Defined in + +[src/relay/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L12) + +___ + +### CONNECTING + +• **CONNECTING** = ``0`` + +#### Defined in + +[src/relay/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L11) + +___ + +### DISCONNECTED + +• **DISCONNECTED** = ``3`` + +#### Defined in + +[src/relay/index.ts:14](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L14) + +___ + +### DISCONNECTING + +• **DISCONNECTING** = ``2`` + +#### Defined in + +[src/relay/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L13) + +___ + +### RECONNECTING + +• **RECONNECTING** = ``4`` + +#### Defined in + +[src/relay/index.ts:15](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L15) diff --git a/docs/enums/NDKSubscriptionCacheUsage.md b/docs/enums/NDKSubscriptionCacheUsage.md new file mode 100644 index 00000000..4843dc62 --- /dev/null +++ b/docs/enums/NDKSubscriptionCacheUsage.md @@ -0,0 +1,52 @@ +[NDK](../README.md) / [Exports](../modules.md) / NDKSubscriptionCacheUsage + +# Enumeration: NDKSubscriptionCacheUsage + +## Table of contents + +### Enumeration Members + +- [CACHE\_FIRST](NDKSubscriptionCacheUsage.md#cache_first) +- [ONLY\_CACHE](NDKSubscriptionCacheUsage.md#only_cache) +- [ONLY\_RELAY](NDKSubscriptionCacheUsage.md#only_relay) +- [PARALLEL](NDKSubscriptionCacheUsage.md#parallel) + +## Enumeration Members + +### CACHE\_FIRST + +• **CACHE\_FIRST** = ``"CACHE_FIRST"`` + +#### Defined in + +[src/subscription/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L26) + +___ + +### ONLY\_CACHE + +• **ONLY\_CACHE** = ``"ONLY_CACHE"`` + +#### Defined in + +[src/subscription/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L23) + +___ + +### ONLY\_RELAY + +• **ONLY\_RELAY** = ``"ONLY_RELAY"`` + +#### Defined in + +[src/subscription/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L32) + +___ + +### PARALLEL + +• **PARALLEL** = ``"PARALLEL"`` + +#### Defined in + +[src/subscription/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L29) diff --git a/docs/interfaces/GetUserParams.md b/docs/interfaces/GetUserParams.md index d4cb626a..59671808 100644 --- a/docs/interfaces/GetUserParams.md +++ b/docs/interfaces/GetUserParams.md @@ -29,7 +29,7 @@ NDKUserParams.hexpubkey #### Defined in -[src/index.ts:34](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L34) +[src/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L36) ___ @@ -43,7 +43,7 @@ NDKUserParams.nip05 #### Defined in -[src/user/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/index.ts#L10) +[src/user/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/index.ts#L10) ___ @@ -57,7 +57,7 @@ NDKUserParams.npub #### Defined in -[src/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L33) +[src/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L35) ___ @@ -71,4 +71,4 @@ NDKUserParams.relayUrls #### Defined in -[src/user/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/index.ts#L11) +[src/user/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/index.ts#L11) diff --git a/docs/interfaces/NDKCacheAdapter.md b/docs/interfaces/NDKCacheAdapter.md index 13adccf2..8443e931 100644 --- a/docs/interfaces/NDKCacheAdapter.md +++ b/docs/interfaces/NDKCacheAdapter.md @@ -25,7 +25,7 @@ When this is false, the cache will be queried in addition to the relays. #### Defined in -[src/cache/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/cache/index.ts#L10) +[src/cache/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/cache/index.ts#L10) ## Methods @@ -45,7 +45,7 @@ When this is false, the cache will be queried in addition to the relays. #### Defined in -[src/cache/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/cache/index.ts#L12) +[src/cache/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/cache/index.ts#L12) ___ @@ -66,4 +66,4 @@ ___ #### Defined in -[src/cache/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/cache/index.ts#L13) +[src/cache/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/cache/index.ts#L13) diff --git a/docs/interfaces/NDKConstructorParams.md b/docs/interfaces/NDKConstructorParams.md index 61ece478..56ebf553 100644 --- a/docs/interfaces/NDKConstructorParams.md +++ b/docs/interfaces/NDKConstructorParams.md @@ -19,7 +19,7 @@ #### Defined in -[src/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L29) +[src/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L31) ___ @@ -29,7 +29,7 @@ ___ #### Defined in -[src/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L30) +[src/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L32) ___ @@ -39,7 +39,7 @@ ___ #### Defined in -[src/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L27) +[src/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L29) ___ @@ -49,4 +49,4 @@ ___ #### Defined in -[src/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/index.ts#L28) +[src/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L30) diff --git a/docs/interfaces/NDKFilterOptions.md b/docs/interfaces/NDKFilterOptions.md new file mode 100644 index 00000000..a50670f2 --- /dev/null +++ b/docs/interfaces/NDKFilterOptions.md @@ -0,0 +1,19 @@ +[NDK](../README.md) / [Exports](../modules.md) / NDKFilterOptions + +# Interface: NDKFilterOptions + +## Table of contents + +### Properties + +- [skipCache](NDKFilterOptions.md#skipcache) + +## Properties + +### skipCache + +• `Optional` **skipCache**: `boolean` + +#### Defined in + +[src/subscription/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L13) diff --git a/docs/interfaces/NDKRelayConnectionStats.md b/docs/interfaces/NDKRelayConnectionStats.md new file mode 100644 index 00000000..e944add8 --- /dev/null +++ b/docs/interfaces/NDKRelayConnectionStats.md @@ -0,0 +1,60 @@ +[NDK](../README.md) / [Exports](../modules.md) / NDKRelayConnectionStats + +# Interface: NDKRelayConnectionStats + +## Table of contents + +### Properties + +- [attempts](NDKRelayConnectionStats.md#attempts) +- [connectedAt](NDKRelayConnectionStats.md#connectedat) +- [durations](NDKRelayConnectionStats.md#durations) +- [success](NDKRelayConnectionStats.md#success) + +## Properties + +### attempts + +• **attempts**: `number` + +The number of times a connection has been attempted. + +#### Defined in + +[src/relay/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L22) + +___ + +### connectedAt + +• `Optional` **connectedAt**: `number` + +The time the current connection was established in milliseconds. + +#### Defined in + +[src/relay/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L37) + +___ + +### durations + +• **durations**: `number`[] + +The durations of the last 100 connections in milliseconds. + +#### Defined in + +[src/relay/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L32) + +___ + +### success + +• **success**: `number` + +The number of times a connection has been successfully established. + +#### Defined in + +[src/relay/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L27) diff --git a/docs/interfaces/NDKSubscriptionOptions.md b/docs/interfaces/NDKSubscriptionOptions.md new file mode 100644 index 00000000..933b7954 --- /dev/null +++ b/docs/interfaces/NDKSubscriptionOptions.md @@ -0,0 +1,30 @@ +[NDK](../README.md) / [Exports](../modules.md) / NDKSubscriptionOptions + +# Interface: NDKSubscriptionOptions + +## Table of contents + +### Properties + +- [cacheUsage](NDKSubscriptionOptions.md#cacheusage) +- [closeOnEose](NDKSubscriptionOptions.md#closeoneose) + +## Properties + +### cacheUsage + +• `Optional` **cacheUsage**: [`NDKSubscriptionCacheUsage`](../enums/NDKSubscriptionCacheUsage.md) + +#### Defined in + +[src/subscription/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L18) + +___ + +### closeOnEose + +• **closeOnEose**: `boolean` + +#### Defined in + +[src/subscription/index.ts:17](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L17) diff --git a/docs/interfaces/NDKUserProfile.md b/docs/interfaces/NDKUserProfile.md index 240f90da..e6949c9f 100644 --- a/docs/interfaces/NDKUserProfile.md +++ b/docs/interfaces/NDKUserProfile.md @@ -25,7 +25,7 @@ #### Defined in -[src/user/profile.ts:12](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/profile.ts#L12) +[src/user/profile.ts:12](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/profile.ts#L12) ___ @@ -35,7 +35,7 @@ ___ #### Defined in -[src/user/profile.ts:7](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/profile.ts#L7) +[src/user/profile.ts:7](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/profile.ts#L7) ___ @@ -45,7 +45,7 @@ ___ #### Defined in -[src/user/profile.ts:8](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/profile.ts#L8) +[src/user/profile.ts:8](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/profile.ts#L8) ___ @@ -55,7 +55,7 @@ ___ #### Defined in -[src/user/profile.ts:5](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/profile.ts#L5) +[src/user/profile.ts:5](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/profile.ts#L5) ___ @@ -65,7 +65,7 @@ ___ #### Defined in -[src/user/profile.ts:6](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/profile.ts#L6) +[src/user/profile.ts:6](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/profile.ts#L6) ___ @@ -75,7 +75,7 @@ ___ #### Defined in -[src/user/profile.ts:10](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/profile.ts#L10) +[src/user/profile.ts:10](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/profile.ts#L10) ___ @@ -85,7 +85,7 @@ ___ #### Defined in -[src/user/profile.ts:11](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/profile.ts#L11) +[src/user/profile.ts:11](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/profile.ts#L11) ___ @@ -95,7 +95,7 @@ ___ #### Defined in -[src/user/profile.ts:4](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/profile.ts#L4) +[src/user/profile.ts:4](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/profile.ts#L4) ___ @@ -105,7 +105,7 @@ ___ #### Defined in -[src/user/profile.ts:9](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/profile.ts#L9) +[src/user/profile.ts:9](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/profile.ts#L9) ___ @@ -115,4 +115,4 @@ ___ #### Defined in -[src/user/profile.ts:13](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/user/profile.ts#L13) +[src/user/profile.ts:13](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/profile.ts#L13) diff --git a/docs/interfaces/NDKZapInvoice.md b/docs/interfaces/NDKZapInvoice.md index 23ee7576..971a29e9 100644 --- a/docs/interfaces/NDKZapInvoice.md +++ b/docs/interfaces/NDKZapInvoice.md @@ -22,7 +22,7 @@ #### Defined in -[src/zap/invoice.ts:10](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/zap/invoice.ts#L10) +[src/zap/invoice.ts:10](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/zap/invoice.ts#L10) ___ @@ -32,7 +32,7 @@ ___ #### Defined in -[src/zap/invoice.ts:11](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/zap/invoice.ts#L11) +[src/zap/invoice.ts:11](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/zap/invoice.ts#L11) ___ @@ -42,7 +42,7 @@ ___ #### Defined in -[src/zap/invoice.ts:5](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/zap/invoice.ts#L5) +[src/zap/invoice.ts:5](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/zap/invoice.ts#L5) ___ @@ -52,7 +52,7 @@ ___ #### Defined in -[src/zap/invoice.ts:8](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/zap/invoice.ts#L8) +[src/zap/invoice.ts:8](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/zap/invoice.ts#L8) ___ @@ -62,7 +62,7 @@ ___ #### Defined in -[src/zap/invoice.ts:9](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/zap/invoice.ts#L9) +[src/zap/invoice.ts:9](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/zap/invoice.ts#L9) ___ @@ -72,7 +72,7 @@ ___ #### Defined in -[src/zap/invoice.ts:7](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/zap/invoice.ts#L7) +[src/zap/invoice.ts:7](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/zap/invoice.ts#L7) ___ @@ -82,4 +82,4 @@ ___ #### Defined in -[src/zap/invoice.ts:6](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/zap/invoice.ts#L6) +[src/zap/invoice.ts:6](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/zap/invoice.ts#L6) diff --git a/docs/modules.md b/docs/modules.md index 42a96c27..a8c83b9b 100644 --- a/docs/modules.md +++ b/docs/modules.md @@ -7,12 +7,16 @@ ### Enumerations - [NDKKind](enums/NDKKind.md) +- [NDKRelayStatus](enums/NDKRelayStatus.md) +- [NDKSubscriptionCacheUsage](enums/NDKSubscriptionCacheUsage.md) ### Classes - [NDKEvent](classes/NDKEvent.md) - [NDKNip07Signer](classes/NDKNip07Signer.md) +- [NDKPrivateKeySigner](classes/NDKPrivateKeySigner.md) - [NDKRelay](classes/NDKRelay.md) +- [NDKRelaySet](classes/NDKRelaySet.md) - [NDKUser](classes/NDKUser.md) - [default](classes/default.md) @@ -25,6 +29,9 @@ - [GetUserParams](interfaces/GetUserParams.md) - [NDKCacheAdapter](interfaces/NDKCacheAdapter.md) - [NDKConstructorParams](interfaces/NDKConstructorParams.md) +- [NDKFilterOptions](interfaces/NDKFilterOptions.md) +- [NDKRelayConnectionStats](interfaces/NDKRelayConnectionStats.md) +- [NDKSubscriptionOptions](interfaces/NDKSubscriptionOptions.md) - [NDKUserProfile](interfaces/NDKUserProfile.md) - [NDKZapInvoice](interfaces/NDKZapInvoice.md) @@ -44,7 +51,7 @@ #### Defined in -[src/subscription/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/subscription/index.ts#L10) +[src/subscription/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L10) ## Functions @@ -64,4 +71,4 @@ #### Defined in -[src/zap/invoice.ts:14](https://github.com/nostr-dev-kit/ndk/blob/e085a7c/src/zap/invoice.ts#L14) +[src/zap/invoice.ts:14](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/zap/invoice.ts#L14) From 0c0b17a0dd0b588b4ce6589036ff4adcfd078862 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 15 Apr 2023 00:30:15 +0300 Subject: [PATCH 058/773] bump ndk version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d7ec8790..7d68a5b5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.33", + "version": "0.0.34", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", From 8bd9c5c536bbdbc4b3d365e370e6d2c3c829f2dd Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 15 Apr 2023 00:36:44 +0300 Subject: [PATCH 059/773] bump ndk version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7d68a5b5..5ffd4614 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.34", + "version": "0.0.35", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", From 294a2b5701b2d5ce488c2978c3fef8dcc213f7c0 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 15 Apr 2023 11:29:43 +0300 Subject: [PATCH 060/773] encode non replaceable events --- package.json | 2 +- src/events/nip19.ts | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 5ffd4614..c9a2f301 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.35", + "version": "0.0.36", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/nip19.ts b/src/events/nip19.ts index ab27cfbe..fef6496e 100644 --- a/src/events/nip19.ts +++ b/src/events/nip19.ts @@ -8,5 +8,7 @@ export function encode(this: NDKEvent) { pubkey: this.pubkey, identifier: this.tagId() }); + } else { + return nip19.noteEncode(this.tagId()); } -} \ No newline at end of file +} From bdedd0e0a835b1066341cd638deffcd4e72ca288 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 15 Apr 2023 14:02:30 +0300 Subject: [PATCH 061/773] fix nip19 identifier --- package.json | 2 +- src/events/index.ts | 17 +++++++++++++++-- src/events/nip19.ts | 2 +- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index c9a2f301..a73c9dc0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.36", + "version": "0.0.37", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/index.ts b/src/events/index.ts index 847ca3c2..85eb9380 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -141,14 +141,27 @@ export default class NDKEvent extends EventEmitter { } } + /** + * @returns the `d` tag of a parameterized replaceable event + */ + replaceableDTag() { + if (this.kind && this.kind >= 30000 && this.kind <= 40000) { + const dTag = this.getMatchingTags('d')[0]; + const dTagId = dTag ? dTag[1] : ''; + + return dTagId; + } + + throw new Error('Event is not a parameterized replaceable event'); + } + /** * @returns the id of the event, or if it's a parameterized event, the id of the event with the d tag */ tagId() { // NIP-33 if (this.kind && this.kind >= 30000 && this.kind <= 40000) { - const dTag = this.getMatchingTags('d')[0]; - const dTagId = dTag ? dTag[1] : ''; + const dTagId = this.replaceableDTag(); return `${this.kind}:${this.pubkey}:${dTagId}`; } diff --git a/src/events/nip19.ts b/src/events/nip19.ts index fef6496e..398fee05 100644 --- a/src/events/nip19.ts +++ b/src/events/nip19.ts @@ -6,7 +6,7 @@ export function encode(this: NDKEvent) { return nip19.naddrEncode({ kind: this.kind as number, pubkey: this.pubkey, - identifier: this.tagId() + identifier: this.replaceableDTag() }); } else { return nip19.noteEncode(this.tagId()); From ee8c6ef075873a8df33bd1e188986cc6e4c32ac6 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Mon, 17 Apr 2023 09:57:06 +0300 Subject: [PATCH 062/773] add subscription grouping by default --- docs/classes/NDKEvent.md | 67 ++++++++++++++-------- docs/classes/NDKNip07Signer.md | 8 +-- docs/classes/NDKPrivateKeySigner.md | 12 ++-- docs/classes/NDKRelay.md | 26 ++++----- docs/classes/NDKRelaySet.md | 15 +++-- docs/classes/NDKSubscription.md | 43 ++++++++++---- docs/classes/NDKUser.md | 20 +++---- docs/classes/default.md | 24 ++++---- docs/enums/NDKKind.md | 56 +++++++++--------- docs/enums/NDKRelayStatus.md | 10 ++-- docs/enums/NDKSubscriptionCacheUsage.md | 8 +-- docs/interfaces/GetUserParams.md | 8 +-- docs/interfaces/NDKCacheAdapter.md | 6 +- docs/interfaces/NDKConstructorParams.md | 8 +-- docs/interfaces/NDKFilterOptions.md | 2 +- docs/interfaces/NDKRelayConnectionStats.md | 8 +-- docs/interfaces/NDKSubscriptionOptions.md | 35 ++++++++++- docs/interfaces/NDKUserProfile.md | 20 +++---- docs/interfaces/NDKZapInvoice.md | 14 ++--- docs/modules.md | 20 ++++++- package.json | 2 +- src/relay/sets/calculate.ts | 4 +- src/relay/sets/index.ts | 51 +++++++++++++++- src/signers/index.ts | 3 + src/subscription/index.ts | 59 ++++++++++++++++--- 25 files changed, 356 insertions(+), 173 deletions(-) diff --git a/docs/classes/NDKEvent.md b/docs/classes/NDKEvent.md index b6ea73a1..ef971bf1 100644 --- a/docs/classes/NDKEvent.md +++ b/docs/classes/NDKEvent.md @@ -34,6 +34,7 @@ - [getMatchingTags](NDKEvent.md#getmatchingtags) - [publish](NDKEvent.md#publish) - [rawEvent](NDKEvent.md#rawevent) +- [replaceableDTag](NDKEvent.md#replaceabledtag) - [sign](NDKEvent.md#sign) - [tagId](NDKEvent.md#tagid) - [tagReference](NDKEvent.md#tagreference) @@ -60,7 +61,7 @@ EventEmitter.constructor #### Defined in -[src/events/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L35) +[src/events/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L35) ## Properties @@ -70,7 +71,7 @@ EventEmitter.constructor #### Defined in -[src/events/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L27) +[src/events/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L27) ___ @@ -80,17 +81,17 @@ ___ #### Defined in -[src/events/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L26) +[src/events/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L26) ___ ### encode -• **encode**: (...`args`: []) => `undefined` \| `string` +• **encode**: (...`args`: []) => `string` #### Type declaration -▸ (`...args`): `undefined` \| `string` +▸ (`...args`): `string` ##### Parameters @@ -100,11 +101,11 @@ ___ ##### Returns -`undefined` \| `string` +`string` #### Defined in -[src/events/index.ts:97](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L97) +[src/events/index.ts:97](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L97) ___ @@ -114,7 +115,7 @@ ___ #### Defined in -[src/events/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L31) +[src/events/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L31) ___ @@ -138,7 +139,7 @@ ___ #### Defined in -[src/events/index.ts:96](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L96) +[src/events/index.ts:96](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L96) ___ @@ -162,7 +163,7 @@ ___ #### Defined in -[src/events/index.ts:95](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L95) +[src/events/index.ts:95](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L95) ___ @@ -172,7 +173,7 @@ ___ #### Defined in -[src/events/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L30) +[src/events/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L30) ___ @@ -182,7 +183,7 @@ ___ #### Defined in -[src/events/index.ts:25](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L25) +[src/events/index.ts:25](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L25) ___ @@ -192,7 +193,7 @@ ___ #### Defined in -[src/events/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L33) +[src/events/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L33) ___ @@ -202,7 +203,7 @@ ___ #### Defined in -[src/events/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L32) +[src/events/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L32) ___ @@ -212,7 +213,7 @@ ___ #### Defined in -[src/events/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L28) +[src/events/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L28) ___ @@ -222,7 +223,7 @@ ___ #### Defined in -[src/events/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L29) +[src/events/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L29) ## Methods @@ -244,7 +245,7 @@ Get all tags with the given name #### Defined in -[src/events/index.ts:102](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L102) +[src/events/index.ts:102](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L102) ___ @@ -258,7 +259,7 @@ ___ #### Defined in -[src/events/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L119) +[src/events/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L119) ___ @@ -274,7 +275,23 @@ Returns the event as is. #### Defined in -[src/events/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L51) +[src/events/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L51) + +___ + +### replaceableDTag + +▸ **replaceableDTag**(): `string` + +#### Returns + +`string` + +the `d` tag of a parameterized replaceable event + +#### Defined in + +[src/events/index.ts:147](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L147) ___ @@ -288,7 +305,7 @@ ___ #### Defined in -[src/events/index.ts:110](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L110) +[src/events/index.ts:110](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L110) ___ @@ -304,7 +321,7 @@ the id of the event, or if it's a parameterized event, the id of the event with #### Defined in -[src/events/index.ts:147](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L147) +[src/events/index.ts:161](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L161) ___ @@ -330,7 +347,7 @@ event = new NDKEvent(ndk, { kind: 30000, pubkey: 'pubkey', tags: [ ["d", "d-code #### Defined in -[src/events/index.ts:168](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L168) +[src/events/index.ts:181](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L181) ___ @@ -353,7 +370,7 @@ when possible. #### Defined in -[src/events/index.ts:66](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L66) +[src/events/index.ts:66](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L66) ___ @@ -367,7 +384,7 @@ ___ #### Defined in -[src/events/index.ts:106](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L106) +[src/events/index.ts:106](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L106) ___ @@ -390,4 +407,4 @@ Create a zap request for an existing event #### Defined in -[src/events/index.ts:180](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/index.ts#L180) +[src/events/index.ts:193](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L193) diff --git a/docs/classes/NDKNip07Signer.md b/docs/classes/NDKNip07Signer.md index 8abc7f61..809be54b 100644 --- a/docs/classes/NDKNip07Signer.md +++ b/docs/classes/NDKNip07Signer.md @@ -29,7 +29,7 @@ with a NIP-07 browser extension (e.g., getalby, nos2x). #### Defined in -[src/signers/nip07/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/signers/nip07/index.ts#L12) +[src/signers/nip07/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/signers/nip07/index.ts#L12) ## Methods @@ -47,7 +47,7 @@ NDKSigner.blockUntilReady #### Defined in -[src/signers/nip07/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/signers/nip07/index.ts#L18) +[src/signers/nip07/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/signers/nip07/index.ts#L18) ___ @@ -79,7 +79,7 @@ NDKSigner.sign #### Defined in -[src/signers/nip07/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/signers/nip07/index.ts#L47) +[src/signers/nip07/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/signers/nip07/index.ts#L47) ___ @@ -101,4 +101,4 @@ NDKSigner.user #### Defined in -[src/signers/nip07/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/signers/nip07/index.ts#L33) +[src/signers/nip07/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/signers/nip07/index.ts#L33) diff --git a/docs/classes/NDKPrivateKeySigner.md b/docs/classes/NDKPrivateKeySigner.md index 54c283ba..0a952e4d 100644 --- a/docs/classes/NDKPrivateKeySigner.md +++ b/docs/classes/NDKPrivateKeySigner.md @@ -37,7 +37,7 @@ #### Defined in -[src/signers/private-key/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/signers/private-key/index.ts#L11) +[src/signers/private-key/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/signers/private-key/index.ts#L11) ## Properties @@ -47,7 +47,7 @@ #### Defined in -[src/signers/private-key/index.ts:9](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/signers/private-key/index.ts#L9) +[src/signers/private-key/index.ts:9](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/signers/private-key/index.ts#L9) ## Methods @@ -65,7 +65,7 @@ NDKSigner.blockUntilReady #### Defined in -[src/signers/private-key/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/signers/private-key/index.ts#L23) +[src/signers/private-key/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/signers/private-key/index.ts#L23) ___ @@ -89,7 +89,7 @@ NDKSigner.sign #### Defined in -[src/signers/private-key/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/signers/private-key/index.ts#L35) +[src/signers/private-key/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/signers/private-key/index.ts#L35) ___ @@ -107,7 +107,7 @@ NDKSigner.user #### Defined in -[src/signers/private-key/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/signers/private-key/index.ts#L30) +[src/signers/private-key/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/signers/private-key/index.ts#L30) ___ @@ -121,4 +121,4 @@ ___ #### Defined in -[src/signers/private-key/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/signers/private-key/index.ts#L18) +[src/signers/private-key/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/signers/private-key/index.ts#L18) diff --git a/docs/classes/NDKRelay.md b/docs/classes/NDKRelay.md index 9985e72b..b11da4a4 100644 --- a/docs/classes/NDKRelay.md +++ b/docs/classes/NDKRelay.md @@ -75,7 +75,7 @@ EventEmitter.constructor #### Defined in -[src/relay/index.ts:63](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L63) +[src/relay/index.ts:63](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L63) ## Properties @@ -87,7 +87,7 @@ Active subscriptions this relay is connected to #### Defined in -[src/relay/index.ts:61](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L61) +[src/relay/index.ts:61](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L61) ___ @@ -97,7 +97,7 @@ ___ #### Defined in -[src/relay/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L56) +[src/relay/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L56) ___ @@ -107,7 +107,7 @@ ___ #### Defined in -[src/relay/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L51) +[src/relay/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L51) ___ @@ -117,7 +117,7 @@ ___ #### Defined in -[src/relay/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L50) +[src/relay/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L50) ## Accessors @@ -133,7 +133,7 @@ Returns the connection stats. #### Defined in -[src/relay/index.ts:234](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L234) +[src/relay/index.ts:234](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L234) ___ @@ -147,7 +147,7 @@ ___ #### Defined in -[src/relay/index.ts:121](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L121) +[src/relay/index.ts:121](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L121) ## Methods @@ -163,7 +163,7 @@ Connects to the relay. #### Defined in -[src/relay/index.ts:128](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L128) +[src/relay/index.ts:128](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L128) ___ @@ -179,7 +179,7 @@ Disconnects from the relay. #### Defined in -[src/relay/index.ts:139](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L139) +[src/relay/index.ts:139](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L139) ___ @@ -199,7 +199,7 @@ ___ #### Defined in -[src/relay/index.ts:144](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L144) +[src/relay/index.ts:144](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L144) ___ @@ -221,7 +221,7 @@ Publishes an event to the relay. #### Defined in -[src/relay/index.ts:191](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L191) +[src/relay/index.ts:191](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L191) ___ @@ -244,7 +244,7 @@ wasn't the fastest one. #### Defined in -[src/relay/index.ts:202](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L202) +[src/relay/index.ts:202](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L202) ___ @@ -266,4 +266,4 @@ Subscribes to a subscription. #### Defined in -[src/relay/index.ts:164](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L164) +[src/relay/index.ts:164](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L164) diff --git a/docs/classes/NDKRelaySet.md b/docs/classes/NDKRelaySet.md index 9331253e..67c14582 100644 --- a/docs/classes/NDKRelaySet.md +++ b/docs/classes/NDKRelaySet.md @@ -28,17 +28,18 @@ Requests to relays should be sent through this interface. ### constructor -• **new NDKRelaySet**(`relays`) +• **new NDKRelaySet**(`relays`, `debug`) #### Parameters | Name | Type | | :------ | :------ | | `relays` | `Set`<[`NDKRelay`](NDKRelay.md)\> | +| `debug` | `Debugger` | #### Defined in -[src/relay/sets/index.ts:15](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/sets/index.ts#L15) +[src/relay/sets/index.ts:17](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/sets/index.ts#L17) ## Properties @@ -48,7 +49,7 @@ Requests to relays should be sent through this interface. #### Defined in -[src/relay/sets/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/sets/index.ts#L13) +[src/relay/sets/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/sets/index.ts#L13) ## Methods @@ -68,7 +69,7 @@ Requests to relays should be sent through this interface. #### Defined in -[src/relay/sets/index.ts:39](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/sets/index.ts#L39) +[src/relay/sets/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/sets/index.ts#L88) ___ @@ -82,7 +83,7 @@ ___ #### Defined in -[src/relay/sets/index.ts:49](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/sets/index.ts#L49) +[src/relay/sets/index.ts:98](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/sets/index.ts#L98) ___ @@ -90,6 +91,8 @@ ___ ▸ **subscribe**(`subscription`): [`NDKSubscription`](NDKSubscription.md) +Add a subscription to this relay set + #### Parameters | Name | Type | @@ -102,4 +105,4 @@ ___ #### Defined in -[src/relay/sets/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/sets/index.ts#L24) +[src/relay/sets/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/sets/index.ts#L31) diff --git a/docs/classes/NDKSubscription.md b/docs/classes/NDKSubscription.md index fb232c0d..de676d98 100644 --- a/docs/classes/NDKSubscription.md +++ b/docs/classes/NDKSubscription.md @@ -75,6 +75,7 @@ The subscription that was closed. - [eoseReceived](NDKSubscription.md#eosereceived) - [eventReceived](NDKSubscription.md#eventreceived) +- [groupableId](NDKSubscription.md#groupableid) - [start](NDKSubscription.md#start) - [stop](NDKSubscription.md#stop) @@ -100,7 +101,7 @@ EventEmitter.constructor #### Defined in -[src/subscription/index.ts:66](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L66) +[src/subscription/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L88) ## Properties @@ -110,7 +111,7 @@ EventEmitter.constructor #### Defined in -[src/subscription/index.ts:59](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L59) +[src/subscription/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L81) ___ @@ -120,17 +121,17 @@ ___ #### Defined in -[src/subscription/index.ts:62](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L62) +[src/subscription/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L84) ___ ### opts -• `Optional` `Readonly` **opts**: [`NDKSubscriptionOptions`](../interfaces/NDKSubscriptionOptions.md) +• `Readonly` **opts**: [`NDKSubscriptionOptions`](../interfaces/NDKSubscriptionOptions.md) #### Defined in -[src/subscription/index.ts:60](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L60) +[src/subscription/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L82) ___ @@ -140,7 +141,7 @@ ___ #### Defined in -[src/subscription/index.ts:61](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L61) +[src/subscription/index.ts:83](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L83) ___ @@ -150,7 +151,7 @@ ___ #### Defined in -[src/subscription/index.ts:63](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L63) +[src/subscription/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L85) ___ @@ -160,7 +161,7 @@ ___ #### Defined in -[src/subscription/index.ts:58](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L58) +[src/subscription/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L80) ## Methods @@ -180,7 +181,7 @@ ___ #### Defined in -[src/subscription/index.ts:209](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L209) +[src/subscription/index.ts:254](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L254) ___ @@ -204,7 +205,25 @@ Called when an event is received from a relay or the cache #### Defined in -[src/subscription/index.ts:180](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L180) +[src/subscription/index.ts:225](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L225) + +___ + +### groupableId + +▸ **groupableId**(): ``null`` \| `string` + +Calculates the groupable ID for this subscription. + +#### Returns + +``null`` \| `string` + +The groupable ID, or null if the subscription is not groupable. + +#### Defined in + +[src/subscription/index.ts:121](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L121) ___ @@ -221,7 +240,7 @@ after creating a subscription. #### Defined in -[src/subscription/index.ts:111](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L111) +[src/subscription/index.ts:156](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L156) ___ @@ -235,4 +254,4 @@ ___ #### Defined in -[src/subscription/index.ts:143](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L143) +[src/subscription/index.ts:188](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L188) diff --git a/docs/classes/NDKUser.md b/docs/classes/NDKUser.md index 76a34e3d..6bd64f9c 100644 --- a/docs/classes/NDKUser.md +++ b/docs/classes/NDKUser.md @@ -39,7 +39,7 @@ Represents a pubkey. #### Defined in -[src/user/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/index.ts#L23) +[src/user/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/index.ts#L23) ## Properties @@ -65,7 +65,7 @@ Returns a set of users that this user follows. #### Defined in -[src/user/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/index.ts#L79) +[src/user/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/index.ts#L79) ___ @@ -75,7 +75,7 @@ ___ #### Defined in -[src/user/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/index.ts#L18) +[src/user/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/index.ts#L18) ___ @@ -85,7 +85,7 @@ ___ #### Defined in -[src/user/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/index.ts#L20) +[src/user/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/index.ts#L20) ___ @@ -95,7 +95,7 @@ ___ #### Defined in -[src/user/index.ts:19](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/index.ts#L19) +[src/user/index.ts:19](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/index.ts#L19) ___ @@ -105,7 +105,7 @@ ___ #### Defined in -[src/user/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/index.ts#L21) +[src/user/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/index.ts#L21) ## Methods @@ -119,7 +119,7 @@ ___ #### Defined in -[src/user/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/index.ts#L50) +[src/user/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/index.ts#L50) ___ @@ -133,7 +133,7 @@ ___ #### Defined in -[src/user/index.ts:46](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/index.ts#L46) +[src/user/index.ts:46](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/index.ts#L46) ___ @@ -147,7 +147,7 @@ ___ #### Defined in -[src/user/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/index.ts#L81) +[src/user/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/index.ts#L81) ___ @@ -167,4 +167,4 @@ ___ #### Defined in -[src/user/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/index.ts#L35) +[src/user/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/index.ts#L35) diff --git a/docs/classes/default.md b/docs/classes/default.md index 54ceacc5..d94b3cb8 100644 --- a/docs/classes/default.md +++ b/docs/classes/default.md @@ -49,7 +49,7 @@ EventEmitter.constructor #### Defined in -[src/index.ts:45](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L45) +[src/index.ts:45](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L45) ## Properties @@ -59,7 +59,7 @@ EventEmitter.constructor #### Defined in -[src/index.ts:42](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L42) +[src/index.ts:42](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L42) ___ @@ -69,7 +69,7 @@ ___ #### Defined in -[src/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L43) +[src/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L43) ___ @@ -79,7 +79,7 @@ ___ #### Defined in -[src/index.ts:40](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L40) +[src/index.ts:40](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L40) ___ @@ -89,7 +89,7 @@ ___ #### Defined in -[src/index.ts:41](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L41) +[src/index.ts:41](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L41) ## Methods @@ -105,7 +105,7 @@ Ensures that a signer is available to sign an event. #### Defined in -[src/index.ts:137](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L137) +[src/index.ts:137](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L137) ___ @@ -128,7 +128,7 @@ If the timeout is reached, the connection will be continued to be established in #### Defined in -[src/index.ts:64](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L64) +[src/index.ts:64](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L64) ___ @@ -151,7 +151,7 @@ Fetch a single event #### Defined in -[src/index.ts:100](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L100) +[src/index.ts:100](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L100) ___ @@ -174,7 +174,7 @@ Fetch events #### Defined in -[src/index.ts:113](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L113) +[src/index.ts:113](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L113) ___ @@ -196,7 +196,7 @@ Get a NDKUser object #### Defined in -[src/index.ts:75](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L75) +[src/index.ts:75](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L75) ___ @@ -216,7 +216,7 @@ ___ #### Defined in -[src/index.ts:91](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L91) +[src/index.ts:91](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L91) ___ @@ -237,4 +237,4 @@ ___ #### Defined in -[src/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L81) +[src/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L81) diff --git a/docs/enums/NDKKind.md b/docs/enums/NDKKind.md index 8962415a..dce42d5f 100644 --- a/docs/enums/NDKKind.md +++ b/docs/enums/NDKKind.md @@ -43,7 +43,7 @@ #### Defined in -[src/events/kind.ts:31](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L31) +[src/events/kind.ts:31](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L31) ___ @@ -53,7 +53,7 @@ ___ #### Defined in -[src/events/kind.ts:30](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L30) +[src/events/kind.ts:30](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L30) ___ @@ -63,7 +63,7 @@ ___ #### Defined in -[src/events/kind.ts:12](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L12) +[src/events/kind.ts:12](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L12) ___ @@ -73,7 +73,7 @@ ___ #### Defined in -[src/events/kind.ts:29](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L29) +[src/events/kind.ts:29](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L29) ___ @@ -83,7 +83,7 @@ ___ #### Defined in -[src/events/kind.ts:27](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L27) +[src/events/kind.ts:27](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L27) ___ @@ -93,7 +93,7 @@ ___ #### Defined in -[src/events/kind.ts:26](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L26) +[src/events/kind.ts:26](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L26) ___ @@ -103,7 +103,7 @@ ___ #### Defined in -[src/events/kind.ts:13](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L13) +[src/events/kind.ts:13](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L13) ___ @@ -113,7 +113,7 @@ ___ #### Defined in -[src/events/kind.ts:16](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L16) +[src/events/kind.ts:16](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L16) ___ @@ -123,7 +123,7 @@ ___ #### Defined in -[src/events/kind.ts:15](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L15) +[src/events/kind.ts:15](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L15) ___ @@ -133,7 +133,7 @@ ___ #### Defined in -[src/events/kind.ts:14](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L14) +[src/events/kind.ts:14](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L14) ___ @@ -143,7 +143,7 @@ ___ #### Defined in -[src/events/kind.ts:17](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L17) +[src/events/kind.ts:17](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L17) ___ @@ -153,7 +153,7 @@ ___ #### Defined in -[src/events/kind.ts:24](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L24) +[src/events/kind.ts:24](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L24) ___ @@ -163,7 +163,7 @@ ___ #### Defined in -[src/events/kind.ts:7](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L7) +[src/events/kind.ts:7](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L7) ___ @@ -173,7 +173,7 @@ ___ #### Defined in -[src/events/kind.ts:8](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L8) +[src/events/kind.ts:8](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L8) ___ @@ -183,7 +183,7 @@ ___ #### Defined in -[src/events/kind.ts:9](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L9) +[src/events/kind.ts:9](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L9) ___ @@ -193,7 +193,7 @@ ___ #### Defined in -[src/events/kind.ts:4](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L4) +[src/events/kind.ts:4](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L4) ___ @@ -203,7 +203,7 @@ ___ #### Defined in -[src/events/kind.ts:21](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L21) +[src/events/kind.ts:21](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L21) ___ @@ -213,7 +213,7 @@ ___ #### Defined in -[src/events/kind.ts:25](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L25) +[src/events/kind.ts:25](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L25) ___ @@ -223,7 +223,7 @@ ___ #### Defined in -[src/events/kind.ts:22](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L22) +[src/events/kind.ts:22](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L22) ___ @@ -233,7 +233,7 @@ ___ #### Defined in -[src/events/kind.ts:28](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L28) +[src/events/kind.ts:28](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L28) ___ @@ -243,7 +243,7 @@ ___ #### Defined in -[src/events/kind.ts:11](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L11) +[src/events/kind.ts:11](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L11) ___ @@ -253,7 +253,7 @@ ___ #### Defined in -[src/events/kind.ts:6](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L6) +[src/events/kind.ts:6](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L6) ___ @@ -263,7 +263,7 @@ ___ #### Defined in -[src/events/kind.ts:23](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L23) +[src/events/kind.ts:23](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L23) ___ @@ -273,7 +273,7 @@ ___ #### Defined in -[src/events/kind.ts:18](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L18) +[src/events/kind.ts:18](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L18) ___ @@ -283,7 +283,7 @@ ___ #### Defined in -[src/events/kind.ts:10](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L10) +[src/events/kind.ts:10](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L10) ___ @@ -293,7 +293,7 @@ ___ #### Defined in -[src/events/kind.ts:5](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L5) +[src/events/kind.ts:5](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L5) ___ @@ -303,7 +303,7 @@ ___ #### Defined in -[src/events/kind.ts:20](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L20) +[src/events/kind.ts:20](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L20) ___ @@ -313,4 +313,4 @@ ___ #### Defined in -[src/events/kind.ts:19](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/events/kind.ts#L19) +[src/events/kind.ts:19](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L19) diff --git a/docs/enums/NDKRelayStatus.md b/docs/enums/NDKRelayStatus.md index 3b679a77..d5c5e7d7 100644 --- a/docs/enums/NDKRelayStatus.md +++ b/docs/enums/NDKRelayStatus.md @@ -20,7 +20,7 @@ #### Defined in -[src/relay/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L12) +[src/relay/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L12) ___ @@ -30,7 +30,7 @@ ___ #### Defined in -[src/relay/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L11) +[src/relay/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L11) ___ @@ -40,7 +40,7 @@ ___ #### Defined in -[src/relay/index.ts:14](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L14) +[src/relay/index.ts:14](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L14) ___ @@ -50,7 +50,7 @@ ___ #### Defined in -[src/relay/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L13) +[src/relay/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L13) ___ @@ -60,4 +60,4 @@ ___ #### Defined in -[src/relay/index.ts:15](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L15) +[src/relay/index.ts:15](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L15) diff --git a/docs/enums/NDKSubscriptionCacheUsage.md b/docs/enums/NDKSubscriptionCacheUsage.md index 4843dc62..60e66a55 100644 --- a/docs/enums/NDKSubscriptionCacheUsage.md +++ b/docs/enums/NDKSubscriptionCacheUsage.md @@ -19,7 +19,7 @@ #### Defined in -[src/subscription/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L26) +[src/subscription/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L21) ___ @@ -29,7 +29,7 @@ ___ #### Defined in -[src/subscription/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L23) +[src/subscription/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L18) ___ @@ -39,7 +39,7 @@ ___ #### Defined in -[src/subscription/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L32) +[src/subscription/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L27) ___ @@ -49,4 +49,4 @@ ___ #### Defined in -[src/subscription/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L29) +[src/subscription/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L24) diff --git a/docs/interfaces/GetUserParams.md b/docs/interfaces/GetUserParams.md index 59671808..3546b1b0 100644 --- a/docs/interfaces/GetUserParams.md +++ b/docs/interfaces/GetUserParams.md @@ -29,7 +29,7 @@ NDKUserParams.hexpubkey #### Defined in -[src/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L36) +[src/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L36) ___ @@ -43,7 +43,7 @@ NDKUserParams.nip05 #### Defined in -[src/user/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/index.ts#L10) +[src/user/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/index.ts#L10) ___ @@ -57,7 +57,7 @@ NDKUserParams.npub #### Defined in -[src/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L35) +[src/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L35) ___ @@ -71,4 +71,4 @@ NDKUserParams.relayUrls #### Defined in -[src/user/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/index.ts#L11) +[src/user/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/index.ts#L11) diff --git a/docs/interfaces/NDKCacheAdapter.md b/docs/interfaces/NDKCacheAdapter.md index 8443e931..c04a97e1 100644 --- a/docs/interfaces/NDKCacheAdapter.md +++ b/docs/interfaces/NDKCacheAdapter.md @@ -25,7 +25,7 @@ When this is false, the cache will be queried in addition to the relays. #### Defined in -[src/cache/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/cache/index.ts#L10) +[src/cache/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/cache/index.ts#L10) ## Methods @@ -45,7 +45,7 @@ When this is false, the cache will be queried in addition to the relays. #### Defined in -[src/cache/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/cache/index.ts#L12) +[src/cache/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/cache/index.ts#L12) ___ @@ -66,4 +66,4 @@ ___ #### Defined in -[src/cache/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/cache/index.ts#L13) +[src/cache/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/cache/index.ts#L13) diff --git a/docs/interfaces/NDKConstructorParams.md b/docs/interfaces/NDKConstructorParams.md index 56ebf553..6dafc70d 100644 --- a/docs/interfaces/NDKConstructorParams.md +++ b/docs/interfaces/NDKConstructorParams.md @@ -19,7 +19,7 @@ #### Defined in -[src/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L31) +[src/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L31) ___ @@ -29,7 +29,7 @@ ___ #### Defined in -[src/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L32) +[src/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L32) ___ @@ -39,7 +39,7 @@ ___ #### Defined in -[src/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L29) +[src/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L29) ___ @@ -49,4 +49,4 @@ ___ #### Defined in -[src/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/index.ts#L30) +[src/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L30) diff --git a/docs/interfaces/NDKFilterOptions.md b/docs/interfaces/NDKFilterOptions.md index a50670f2..9c1153de 100644 --- a/docs/interfaces/NDKFilterOptions.md +++ b/docs/interfaces/NDKFilterOptions.md @@ -16,4 +16,4 @@ #### Defined in -[src/subscription/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L13) +[src/subscription/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L13) diff --git a/docs/interfaces/NDKRelayConnectionStats.md b/docs/interfaces/NDKRelayConnectionStats.md index e944add8..2edb8191 100644 --- a/docs/interfaces/NDKRelayConnectionStats.md +++ b/docs/interfaces/NDKRelayConnectionStats.md @@ -21,7 +21,7 @@ The number of times a connection has been attempted. #### Defined in -[src/relay/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L22) +[src/relay/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L22) ___ @@ -33,7 +33,7 @@ The time the current connection was established in milliseconds. #### Defined in -[src/relay/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L37) +[src/relay/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L37) ___ @@ -45,7 +45,7 @@ The durations of the last 100 connections in milliseconds. #### Defined in -[src/relay/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L32) +[src/relay/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L32) ___ @@ -57,4 +57,4 @@ The number of times a connection has been successfully established. #### Defined in -[src/relay/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/relay/index.ts#L27) +[src/relay/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L27) diff --git a/docs/interfaces/NDKSubscriptionOptions.md b/docs/interfaces/NDKSubscriptionOptions.md index 933b7954..5f42e7de 100644 --- a/docs/interfaces/NDKSubscriptionOptions.md +++ b/docs/interfaces/NDKSubscriptionOptions.md @@ -8,6 +8,8 @@ - [cacheUsage](NDKSubscriptionOptions.md#cacheusage) - [closeOnEose](NDKSubscriptionOptions.md#closeoneose) +- [groupable](NDKSubscriptionOptions.md#groupable) +- [groupableDelay](NDKSubscriptionOptions.md#groupabledelay) ## Properties @@ -17,7 +19,7 @@ #### Defined in -[src/subscription/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L18) +[src/subscription/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L32) ___ @@ -27,4 +29,33 @@ ___ #### Defined in -[src/subscription/index.ts:17](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L17) +[src/subscription/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L31) + +___ + +### groupable + +• `Optional` **groupable**: `boolean` + +Groupable subscriptions are created with a slight time +delayed to allow similar filters to be grouped together. + +#### Defined in + +[src/subscription/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L38) + +___ + +### groupableDelay + +• `Optional` **groupableDelay**: `number` + +The delay to use when grouping subscriptions, specified in milliseconds. + +**`Default`** + +100 + +#### Defined in + +[src/subscription/index.ts:44](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L44) diff --git a/docs/interfaces/NDKUserProfile.md b/docs/interfaces/NDKUserProfile.md index e6949c9f..fb094259 100644 --- a/docs/interfaces/NDKUserProfile.md +++ b/docs/interfaces/NDKUserProfile.md @@ -25,7 +25,7 @@ #### Defined in -[src/user/profile.ts:12](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/profile.ts#L12) +[src/user/profile.ts:12](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/profile.ts#L12) ___ @@ -35,7 +35,7 @@ ___ #### Defined in -[src/user/profile.ts:7](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/profile.ts#L7) +[src/user/profile.ts:7](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/profile.ts#L7) ___ @@ -45,7 +45,7 @@ ___ #### Defined in -[src/user/profile.ts:8](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/profile.ts#L8) +[src/user/profile.ts:8](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/profile.ts#L8) ___ @@ -55,7 +55,7 @@ ___ #### Defined in -[src/user/profile.ts:5](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/profile.ts#L5) +[src/user/profile.ts:5](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/profile.ts#L5) ___ @@ -65,7 +65,7 @@ ___ #### Defined in -[src/user/profile.ts:6](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/profile.ts#L6) +[src/user/profile.ts:6](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/profile.ts#L6) ___ @@ -75,7 +75,7 @@ ___ #### Defined in -[src/user/profile.ts:10](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/profile.ts#L10) +[src/user/profile.ts:10](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/profile.ts#L10) ___ @@ -85,7 +85,7 @@ ___ #### Defined in -[src/user/profile.ts:11](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/profile.ts#L11) +[src/user/profile.ts:11](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/profile.ts#L11) ___ @@ -95,7 +95,7 @@ ___ #### Defined in -[src/user/profile.ts:4](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/profile.ts#L4) +[src/user/profile.ts:4](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/profile.ts#L4) ___ @@ -105,7 +105,7 @@ ___ #### Defined in -[src/user/profile.ts:9](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/profile.ts#L9) +[src/user/profile.ts:9](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/profile.ts#L9) ___ @@ -115,4 +115,4 @@ ___ #### Defined in -[src/user/profile.ts:13](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/user/profile.ts#L13) +[src/user/profile.ts:13](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/profile.ts#L13) diff --git a/docs/interfaces/NDKZapInvoice.md b/docs/interfaces/NDKZapInvoice.md index 971a29e9..77aa419d 100644 --- a/docs/interfaces/NDKZapInvoice.md +++ b/docs/interfaces/NDKZapInvoice.md @@ -22,7 +22,7 @@ #### Defined in -[src/zap/invoice.ts:10](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/zap/invoice.ts#L10) +[src/zap/invoice.ts:10](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/zap/invoice.ts#L10) ___ @@ -32,7 +32,7 @@ ___ #### Defined in -[src/zap/invoice.ts:11](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/zap/invoice.ts#L11) +[src/zap/invoice.ts:11](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/zap/invoice.ts#L11) ___ @@ -42,7 +42,7 @@ ___ #### Defined in -[src/zap/invoice.ts:5](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/zap/invoice.ts#L5) +[src/zap/invoice.ts:5](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/zap/invoice.ts#L5) ___ @@ -52,7 +52,7 @@ ___ #### Defined in -[src/zap/invoice.ts:8](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/zap/invoice.ts#L8) +[src/zap/invoice.ts:8](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/zap/invoice.ts#L8) ___ @@ -62,7 +62,7 @@ ___ #### Defined in -[src/zap/invoice.ts:9](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/zap/invoice.ts#L9) +[src/zap/invoice.ts:9](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/zap/invoice.ts#L9) ___ @@ -72,7 +72,7 @@ ___ #### Defined in -[src/zap/invoice.ts:7](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/zap/invoice.ts#L7) +[src/zap/invoice.ts:7](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/zap/invoice.ts#L7) ___ @@ -82,4 +82,4 @@ ___ #### Defined in -[src/zap/invoice.ts:6](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/zap/invoice.ts#L6) +[src/zap/invoice.ts:6](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/zap/invoice.ts#L6) diff --git a/docs/modules.md b/docs/modules.md index a8c83b9b..7ca62598 100644 --- a/docs/modules.md +++ b/docs/modules.md @@ -39,6 +39,10 @@ - [NDKFilter](modules.md#ndkfilter) +### Variables + +- [defaultOpts](modules.md#defaultopts) + ### Functions - [zapInvoiceFromEvent](modules.md#zapinvoicefromevent) @@ -51,7 +55,19 @@ #### Defined in -[src/subscription/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/subscription/index.ts#L10) +[src/subscription/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L10) + +## Variables + +### defaultOpts + +• `Const` **defaultOpts**: [`NDKSubscriptionOptions`](interfaces/NDKSubscriptionOptions.md) + +Default subscription options. + +#### Defined in + +[src/subscription/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L50) ## Functions @@ -71,4 +87,4 @@ #### Defined in -[src/zap/invoice.ts:14](https://github.com/nostr-dev-kit/ndk/blob/4e41494/src/zap/invoice.ts#L14) +[src/zap/invoice.ts:14](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/zap/invoice.ts#L14) diff --git a/package.json b/package.json index a73c9dc0..8715c6b1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.37", + "version": "0.1.0", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/relay/sets/calculate.ts b/src/relay/sets/calculate.ts index 48a0851e..24d0c0a1 100644 --- a/src/relay/sets/calculate.ts +++ b/src/relay/sets/calculate.ts @@ -17,7 +17,7 @@ export function calculateRelaySetFromEvent(ndk: NDK, event: Event): NDKRelaySet ndk.pool?.relays.forEach(relay => relays.add(relay)); - return new NDKRelaySet(relays); + return new NDKRelaySet(relays, ndk.debug); } /** @@ -40,7 +40,7 @@ export function calculateRelaySetFromFilter( } }); - return new NDKRelaySet(relays); + return new NDKRelaySet(relays, ndk.debug); } /** diff --git a/src/relay/sets/index.ts b/src/relay/sets/index.ts index ed4338a7..d3ac5c42 100644 --- a/src/relay/sets/index.ts +++ b/src/relay/sets/index.ts @@ -11,9 +11,13 @@ import {NDKSubscription} from '../../subscription/index.js'; */ export class NDKRelaySet { readonly relays: Set; + private delayedSubscriptions: Map; + private debug: debug.Debugger; - public constructor(relays: Set) { + public constructor(relays: Set, debug: debug.Debugger) { this.relays = relays; + this.delayedSubscriptions = new Map(); + this.debug = debug.extend('ndk:relayset'); } private subscribeOnRelay(relay: NDKRelay, subscription: NDKSubscription) { @@ -21,7 +25,52 @@ export class NDKRelaySet { subscription.relaySubscriptions.set(relay, sub); } + /** + * Add a subscription to this relay set + */ public subscribe(subscription: NDKSubscription): NDKSubscription { + const groupableId = subscription.groupableId(); + + if (!groupableId) { + this.executeSubscription(subscription); + return subscription; + } + + const delayedSubscription = this.delayedSubscriptions.get(groupableId); + if (delayedSubscription) { + this.debug('Adding to existing subscription', {groupableId}); + + delayedSubscription.push(subscription); + } else { + this.debug('New subscription timeout', {groupableId}); + + setTimeout(() => { + this.executeDelayedSubscription(groupableId); + }, subscription.opts.groupableDelay); + + this.delayedSubscriptions.set(groupableId, [subscription]); + } + + return subscription; + } + + private executeDelayedSubscription(groupableId: string) { + const subscriptions = this.delayedSubscriptions.get(groupableId); + this.debug('Creating subscriptions', {groupableId, count: subscriptions?.length}); + this.delayedSubscriptions.delete(groupableId); + + if (subscriptions) { + this.executeSubscriptions(subscriptions); + } + } + + private executeSubscriptions(subscriptions: NDKSubscription[]) { + for (const subscription of subscriptions) { + this.executeSubscription(subscription); + } + } + + private executeSubscription(subscription: NDKSubscription): NDKSubscription { // If the relay is connected, send the subscription // If the relay is not connected, wait for it to connect (during the lifetime of the subscription) this.relays.forEach(relay => { diff --git a/src/signers/index.ts b/src/signers/index.ts index 68db0ed9..f4b05ba5 100644 --- a/src/signers/index.ts +++ b/src/signers/index.ts @@ -1,6 +1,9 @@ import NDKUser from '../user'; import type { NostrEvent } from '../events/index.js'; +/** + * Interface for NDK signers. + */ export interface NDKSigner { /** * Blocks until the signer is ready and returns the associated NDKUser. diff --git a/src/subscription/index.ts b/src/subscription/index.ts index 10208712..083348de 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -13,11 +13,6 @@ export interface NDKFilterOptions { skipCache?: boolean; } -export interface NDKSubscriptionOptions { - closeOnEose: boolean; - cacheUsage?: NDKSubscriptionCacheUsage; -} - export enum NDKSubscriptionCacheUsage { // Only use cache, don't subscribe to relays ONLY_CACHE = 'ONLY_CACHE', @@ -32,6 +27,33 @@ export enum NDKSubscriptionCacheUsage { ONLY_RELAY = 'ONLY_RELAY', } +export interface NDKSubscriptionOptions { + closeOnEose: boolean; + cacheUsage?: NDKSubscriptionCacheUsage; + + /** + * Groupable subscriptions are created with a slight time + * delayed to allow similar filters to be grouped together. + */ + groupable?: boolean; + + /** + * The delay to use when grouping subscriptions, specified in milliseconds. + * @default 100 + */ + groupableDelay?: number; +} + +/** + * Default subscription options. + */ +export const defaultOpts: NDKSubscriptionOptions = { + closeOnEose: true, + cacheUsage: NDKSubscriptionCacheUsage.CACHE_FIRST, + groupable: true, + groupableDelay: 100, +}; + /** * Represents a subscription to an NDK event stream. * @@ -57,7 +79,7 @@ export enum NDKSubscriptionCacheUsage { export class NDKSubscription extends EventEmitter { readonly subId: string; readonly filter: NDKFilter; - readonly opts?: NDKSubscriptionOptions; + readonly opts: NDKSubscriptionOptions; public relaySet?: NDKRelaySet; public ndk: NDK; public relaySubscriptions: Map; @@ -75,7 +97,7 @@ export class NDKSubscription extends EventEmitter { this.subId = subId || Math.floor(Math.random() * 9999991000).toString(); // TODO: use UUID this.filter = filter; this.relaySet = relaySet; - this.opts = opts; + this.opts = opts || defaultOpts; this.relaySubscriptions = new Map(); this.debug = ndk.debug.extend('subscription'); @@ -89,7 +111,30 @@ export class NDKSubscription extends EventEmitter { 'Cannot use cache-only options with a persistent subscription' ); } + } + + /** + * Calculates the groupable ID for this subscription. + * + * @returns The groupable ID, or null if the subscription is not groupable. + */ + public groupableId(): string | null { + if (!this.opts?.groupable) { + return null; + } + + // Check if there is a kind and no time-based filters + if ( + (this.filter.kinds?.length||0) > 0 && + !this.filter.since && + !this.filter.until + ) { + const id = this.filter.kinds!.join(','); + this.debug(`groupable ID: ${id}`); + return id; + } + return null; } private shouldQueryCache(): boolean { From 2bb66fa98db0bb55f002e791dc01d99dc7100e87 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Mon, 17 Apr 2023 14:31:57 +0300 Subject: [PATCH 063/773] merge filters --- package.json | 2 +- src/index.ts | 6 +- src/relay/sets/calculate.ts | 6 +- src/relay/sets/index.ts | 58 ++++++++++++------- src/subscription/index.ts | 109 ++++++++++++++++++++++++++++++++---- src/user/index.ts | 5 +- 6 files changed, 148 insertions(+), 38 deletions(-) diff --git a/package.json b/package.json index 8715c6b1..3b354c65 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.1.0", + "version": "0.1.1", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/index.ts b/src/index.ts index 98ec5094..c28c2f35 100644 --- a/src/index.ts +++ b/src/index.ts @@ -17,6 +17,7 @@ export { NDKUserProfile, NDKCacheAdapter, }; +export * from './user/profile.js'; export * from './subscription/index.js'; export * from './relay/index.js'; export * from './relay/sets/index.js'; @@ -42,6 +43,8 @@ export default class NDK extends EventEmitter { public cacheAdapter?: NDKCacheAdapter; public debug: debug.Debugger; + public delayedSubscriptions: Map; + public constructor(opts: NDKConstructorParams = {}) { super(); @@ -49,6 +52,7 @@ export default class NDK extends EventEmitter { this.pool = new NDKPool(opts.explicitRelayUrls||[], this); this.signer = opts.signer; this.cacheAdapter = opts.cacheAdapter; + this.delayedSubscriptions = new Map(); this.debug('initialized', { relays: opts.explicitRelayUrls, @@ -62,7 +66,7 @@ export default class NDK extends EventEmitter { * If the timeout is reached, the connection will be continued to be established in the background. */ public async connect(timeoutMs?: number): Promise { - this.debug('Connecting to relays'); + this.debug('Connecting to relays', {timeoutMs}); return this.pool.connect(timeoutMs); } diff --git a/src/relay/sets/calculate.ts b/src/relay/sets/calculate.ts index 24d0c0a1..69812124 100644 --- a/src/relay/sets/calculate.ts +++ b/src/relay/sets/calculate.ts @@ -17,7 +17,7 @@ export function calculateRelaySetFromEvent(ndk: NDK, event: Event): NDKRelaySet ndk.pool?.relays.forEach(relay => relays.add(relay)); - return new NDKRelaySet(relays, ndk.debug); + return new NDKRelaySet(relays, ndk); } /** @@ -36,11 +36,11 @@ export function calculateRelaySetFromFilter( if (!relay.complaining) { relays.add(relay); } else { - console.log(`Relay ${relay.url} is complaining, not adding to set`); + ndk.debug(`Relay ${relay.url} is complaining, not adding to set`); } }); - return new NDKRelaySet(relays, ndk.debug); + return new NDKRelaySet(relays, ndk); } /** diff --git a/src/relay/sets/index.ts b/src/relay/sets/index.ts index d3ac5c42..a8857ed2 100644 --- a/src/relay/sets/index.ts +++ b/src/relay/sets/index.ts @@ -1,6 +1,9 @@ import {NDKRelay, NDKRelayStatus} from '../index.js'; import NDKEvent from '../../events/index.js'; -import {NDKSubscription} from '../../subscription/index.js'; +import {NDKSubscription, NDKSubscriptionGroup} from '../../subscription/index.js'; +import * as secp256k1 from '@noble/secp256k1'; +import {sha256} from '@noble/hashes/sha256'; +import type NDK from '../../index.js'; /** * A relay set is a group of relays. This grouping can be short-living, for a single @@ -11,13 +14,13 @@ import {NDKSubscription} from '../../subscription/index.js'; */ export class NDKRelaySet { readonly relays: Set; - private delayedSubscriptions: Map; private debug: debug.Debugger; + private ndk: NDK; - public constructor(relays: Set, debug: debug.Debugger) { + public constructor(relays: Set, ndk: NDK) { this.relays = relays; - this.delayedSubscriptions = new Map(); - this.debug = debug.extend('ndk:relayset'); + this.ndk = ndk; + this.debug = ndk.debug.extend('relayset'); } private subscribeOnRelay(relay: NDKRelay, subscription: NDKSubscription) { @@ -25,54 +28,71 @@ export class NDKRelaySet { subscription.relaySubscriptions.set(relay, sub); } + /** + * Calculates an ID of this specific combination of relays. + */ + public getId() { + const urls = Array.from(this.relays).map(r => r.url); + const urlString = urls.sort().join(','); + return secp256k1.utils.bytesToHex(sha256(urlString)); + } + /** * Add a subscription to this relay set */ public subscribe(subscription: NDKSubscription): NDKSubscription { - const groupableId = subscription.groupableId(); + const subGroupableId = subscription.groupableId(); + const groupableId = `${this.getId()}:${subGroupableId}`; if (!groupableId) { this.executeSubscription(subscription); return subscription; } - const delayedSubscription = this.delayedSubscriptions.get(groupableId); + const delayedSubscription = this.ndk.delayedSubscriptions.get(groupableId); if (delayedSubscription) { - this.debug('Adding to existing subscription', {groupableId}); - delayedSubscription.push(subscription); } else { - this.debug('New subscription timeout', {groupableId}); - setTimeout(() => { this.executeDelayedSubscription(groupableId); }, subscription.opts.groupableDelay); - this.delayedSubscriptions.set(groupableId, [subscription]); + this.ndk.delayedSubscriptions.set(groupableId, [subscription]); } return subscription; } private executeDelayedSubscription(groupableId: string) { - const subscriptions = this.delayedSubscriptions.get(groupableId); - this.debug('Creating subscriptions', {groupableId, count: subscriptions?.length}); - this.delayedSubscriptions.delete(groupableId); + const subscriptions = this.ndk.delayedSubscriptions.get(groupableId); + this.ndk.delayedSubscriptions.delete(groupableId); if (subscriptions) { - this.executeSubscriptions(subscriptions); + if (subscriptions.length > 1) { + this.executeSubscriptions(subscriptions); + } else { + this.executeSubscription(subscriptions[0]); + } } } + /** + * This function takes a similar group of subscriptions, merges the filters + * and sends a single subscription to the relay. + */ private executeSubscriptions(subscriptions: NDKSubscription[]) { - for (const subscription of subscriptions) { - this.executeSubscription(subscription); - } + const ndk = subscriptions[0].ndk; + const subGroup = new NDKSubscriptionGroup(ndk, subscriptions); + + this.executeSubscription(subGroup); } private executeSubscription(subscription: NDKSubscription): NDKSubscription { // If the relay is connected, send the subscription // If the relay is not connected, wait for it to connect (during the lifetime of the subscription) + + this.debug('subscribing', {filter: subscription.filter}); + this.relays.forEach(relay => { if (relay.status === NDKRelayStatus.CONNECTED) { this.subscribeOnRelay(relay, subscription); diff --git a/src/subscription/index.ts b/src/subscription/index.ts index 083348de..bd0f68f0 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -97,16 +97,14 @@ export class NDKSubscription extends EventEmitter { this.subId = subId || Math.floor(Math.random() * 9999991000).toString(); // TODO: use UUID this.filter = filter; this.relaySet = relaySet; - this.opts = opts || defaultOpts; + this.opts = { ...defaultOpts, ...(opts||{}) }; this.relaySubscriptions = new Map(); this.debug = ndk.debug.extend('subscription'); // validate that the caller is not expecting a persistent - // subscription is using an option that might only hit the cache - if ( - opts?.cacheUsage === NDKSubscriptionCacheUsage.ONLY_CACHE || - opts?.cacheUsage === NDKSubscriptionCacheUsage.CACHE_FIRST - ) { + // subscription while using an option that will only hit the cache + + if (this.opts.cacheUsage === NDKSubscriptionCacheUsage.ONLY_CACHE && !this.opts.closeOnEose) { throw new Error( 'Cannot use cache-only options with a persistent subscription' ); @@ -124,13 +122,12 @@ export class NDKSubscription extends EventEmitter { } // Check if there is a kind and no time-based filters - if ( - (this.filter.kinds?.length||0) > 0 && - !this.filter.since && - !this.filter.until - ) { + const hasKind = (this.filter.kinds?.length||0) > 0; + const noTimeConstraints = (!this.filter.since && !this.filter.until); + const noLimit = !this.filter.limit; + + if (hasKind && noTimeConstraints && noLimit) { const id = this.filter.kinds!.join(','); - this.debug(`groupable ID: ${id}`); return id; } @@ -279,3 +276,91 @@ export class NDKSubscription extends EventEmitter { } } } + +/** + * Represents a group of subscriptions. + * + * Events emitted from the group will be emitted from each subscription. + */ +export class NDKSubscriptionGroup extends NDKSubscription { + private subscriptions: NDKSubscription[]; + + constructor( + ndk: NDK, + subscriptions: NDKSubscription[] + ) { + const debug = ndk.debug.extend('subscription-group'); + + const filters = mergeFilters(subscriptions.map(s => s.filter)); + + super( + ndk, + filters, + subscriptions[0].opts, // TODO: This should be merged + subscriptions[0].relaySet // TODO: This should be merged + ); + + this.subscriptions = subscriptions; + + debug('merged filters', { + count: subscriptions.length, + mergedFilters: this.filter + }); + + // forward events to each subscription + // TODO: This functions should only forward events to the + // specific subscription that it is for. + this.on('event', this.forwardEvent); + this.on('event:dup', this.forwardEventDup); + this.on('eose', this.forwardEose); + this.on('close', this.forwardClose); + } + + private forwardEvent(event: NDKEvent, relay: NDKRelay) { + for (const subscription of this.subscriptions) { + subscription.emit('event', event, relay, subscription); + } + } + + private forwardEventDup(event: NDKEvent, relay: NDKRelay, timeSinceFirstSeen: number) { + for (const subscription of this.subscriptions) { + subscription.emit('event:dup', event, relay, timeSinceFirstSeen, subscription); + } + } + + private forwardEose() { + for (const subscription of this.subscriptions) { + subscription.emit('eose', subscription); + } + } + + private forwardClose() { + for (const subscription of this.subscriptions) { + subscription.emit('close', subscription); + } + } +} + +/** + * Go through all the passed filters, which should be + * relatively similar, and merge them. + */ +export function mergeFilters(filters: NDKFilter[]): NDKFilter { + const result: any = {}; + + filters.forEach(filter => { + Object.entries(filter).forEach(([key, value]) => { + if (Array.isArray(value)) { + if (result[key] === undefined) { + result[key] = [...value]; + } else { + result[key] = Array.from(new Set([...result[key], ...value])); + } + } else { + result[key] = value; + } + }); + }); + + return result as NDKFilter; +} diff --git a/src/user/index.ts b/src/user/index.ts index 370ccc3e..9464fc22 100644 --- a/src/user/index.ts +++ b/src/user/index.ts @@ -3,6 +3,7 @@ import Event from '../events/index.js'; import {NDKUserProfile, mergeEvent} from './profile'; import NDK from '../index.js'; import { follows } from './follows.js'; +import { NDKFilterOptions } from '../subscription/index.js'; export interface NDKUserParams { npub?: string; @@ -47,7 +48,7 @@ export default class NDKUser { return nip19.decode(this.npub).data as string; } - public async fetchProfile(): Promise | null> { + public async fetchProfile(opts?: NDKFilterOptions): Promise | null> { if (!this.ndk) throw new Error('NDK not set'); if (!this.profile) this.profile = {}; @@ -55,7 +56,7 @@ export default class NDKUser { const setMetadataEvents = await this.ndk.fetchEvents({ kinds: [0], authors: [this.hexpubkey()], - }); + }, opts); if (setMetadataEvents) { // sort setMetadataEvents by created_at in ascending order From 701d68db0a18460a19782f2a89627de22c003b34 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Mon, 17 Apr 2023 14:32:15 +0300 Subject: [PATCH 064/773] update docs --- docs/classes/NDKEvent.md | 46 +++++++++--------- docs/classes/NDKNip07Signer.md | 8 ++-- docs/classes/NDKPrivateKeySigner.md | 12 ++--- docs/classes/NDKRelay.md | 26 +++++----- docs/classes/NDKRelaySet.md | 31 +++++++++--- docs/classes/NDKSubscription.md | 26 +++++----- docs/classes/NDKUser.md | 28 ++++++----- docs/classes/default.md | 35 +++++++++----- docs/enums/NDKKind.md | 56 +++++++++++----------- docs/enums/NDKRelayStatus.md | 10 ++-- docs/enums/NDKSubscriptionCacheUsage.md | 8 ++-- docs/interfaces/GetUserParams.md | 8 ++-- docs/interfaces/NDKCacheAdapter.md | 6 +-- docs/interfaces/NDKConstructorParams.md | 8 ++-- docs/interfaces/NDKFilterOptions.md | 2 +- docs/interfaces/NDKRelayConnectionStats.md | 8 ++-- docs/interfaces/NDKSubscriptionOptions.md | 8 ++-- docs/interfaces/NDKUserProfile.md | 20 ++++---- docs/interfaces/NDKZapInvoice.md | 14 +++--- docs/modules.md | 53 ++++++++++++++++++-- 20 files changed, 248 insertions(+), 165 deletions(-) diff --git a/docs/classes/NDKEvent.md b/docs/classes/NDKEvent.md index ef971bf1..864370d4 100644 --- a/docs/classes/NDKEvent.md +++ b/docs/classes/NDKEvent.md @@ -61,7 +61,7 @@ EventEmitter.constructor #### Defined in -[src/events/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L35) +[src/events/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L35) ## Properties @@ -71,7 +71,7 @@ EventEmitter.constructor #### Defined in -[src/events/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L27) +[src/events/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L27) ___ @@ -81,7 +81,7 @@ ___ #### Defined in -[src/events/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L26) +[src/events/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L26) ___ @@ -105,7 +105,7 @@ ___ #### Defined in -[src/events/index.ts:97](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L97) +[src/events/index.ts:97](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L97) ___ @@ -115,7 +115,7 @@ ___ #### Defined in -[src/events/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L31) +[src/events/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L31) ___ @@ -139,7 +139,7 @@ ___ #### Defined in -[src/events/index.ts:96](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L96) +[src/events/index.ts:96](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L96) ___ @@ -163,7 +163,7 @@ ___ #### Defined in -[src/events/index.ts:95](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L95) +[src/events/index.ts:95](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L95) ___ @@ -173,7 +173,7 @@ ___ #### Defined in -[src/events/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L30) +[src/events/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L30) ___ @@ -183,7 +183,7 @@ ___ #### Defined in -[src/events/index.ts:25](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L25) +[src/events/index.ts:25](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L25) ___ @@ -193,7 +193,7 @@ ___ #### Defined in -[src/events/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L33) +[src/events/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L33) ___ @@ -203,7 +203,7 @@ ___ #### Defined in -[src/events/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L32) +[src/events/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L32) ___ @@ -213,7 +213,7 @@ ___ #### Defined in -[src/events/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L28) +[src/events/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L28) ___ @@ -223,7 +223,7 @@ ___ #### Defined in -[src/events/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L29) +[src/events/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L29) ## Methods @@ -245,7 +245,7 @@ Get all tags with the given name #### Defined in -[src/events/index.ts:102](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L102) +[src/events/index.ts:102](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L102) ___ @@ -259,7 +259,7 @@ ___ #### Defined in -[src/events/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L119) +[src/events/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L119) ___ @@ -275,7 +275,7 @@ Returns the event as is. #### Defined in -[src/events/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L51) +[src/events/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L51) ___ @@ -291,7 +291,7 @@ the `d` tag of a parameterized replaceable event #### Defined in -[src/events/index.ts:147](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L147) +[src/events/index.ts:147](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L147) ___ @@ -305,7 +305,7 @@ ___ #### Defined in -[src/events/index.ts:110](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L110) +[src/events/index.ts:110](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L110) ___ @@ -321,7 +321,7 @@ the id of the event, or if it's a parameterized event, the id of the event with #### Defined in -[src/events/index.ts:161](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L161) +[src/events/index.ts:161](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L161) ___ @@ -347,7 +347,7 @@ event = new NDKEvent(ndk, { kind: 30000, pubkey: 'pubkey', tags: [ ["d", "d-code #### Defined in -[src/events/index.ts:181](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L181) +[src/events/index.ts:181](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L181) ___ @@ -370,7 +370,7 @@ when possible. #### Defined in -[src/events/index.ts:66](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L66) +[src/events/index.ts:66](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L66) ___ @@ -384,7 +384,7 @@ ___ #### Defined in -[src/events/index.ts:106](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L106) +[src/events/index.ts:106](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L106) ___ @@ -407,4 +407,4 @@ Create a zap request for an existing event #### Defined in -[src/events/index.ts:193](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/index.ts#L193) +[src/events/index.ts:193](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L193) diff --git a/docs/classes/NDKNip07Signer.md b/docs/classes/NDKNip07Signer.md index 809be54b..c19a50fc 100644 --- a/docs/classes/NDKNip07Signer.md +++ b/docs/classes/NDKNip07Signer.md @@ -29,7 +29,7 @@ with a NIP-07 browser extension (e.g., getalby, nos2x). #### Defined in -[src/signers/nip07/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/signers/nip07/index.ts#L12) +[src/signers/nip07/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/signers/nip07/index.ts#L12) ## Methods @@ -47,7 +47,7 @@ NDKSigner.blockUntilReady #### Defined in -[src/signers/nip07/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/signers/nip07/index.ts#L18) +[src/signers/nip07/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/signers/nip07/index.ts#L18) ___ @@ -79,7 +79,7 @@ NDKSigner.sign #### Defined in -[src/signers/nip07/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/signers/nip07/index.ts#L47) +[src/signers/nip07/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/signers/nip07/index.ts#L47) ___ @@ -101,4 +101,4 @@ NDKSigner.user #### Defined in -[src/signers/nip07/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/signers/nip07/index.ts#L33) +[src/signers/nip07/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/signers/nip07/index.ts#L33) diff --git a/docs/classes/NDKPrivateKeySigner.md b/docs/classes/NDKPrivateKeySigner.md index 0a952e4d..d48ddfe7 100644 --- a/docs/classes/NDKPrivateKeySigner.md +++ b/docs/classes/NDKPrivateKeySigner.md @@ -37,7 +37,7 @@ #### Defined in -[src/signers/private-key/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/signers/private-key/index.ts#L11) +[src/signers/private-key/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/signers/private-key/index.ts#L11) ## Properties @@ -47,7 +47,7 @@ #### Defined in -[src/signers/private-key/index.ts:9](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/signers/private-key/index.ts#L9) +[src/signers/private-key/index.ts:9](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/signers/private-key/index.ts#L9) ## Methods @@ -65,7 +65,7 @@ NDKSigner.blockUntilReady #### Defined in -[src/signers/private-key/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/signers/private-key/index.ts#L23) +[src/signers/private-key/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/signers/private-key/index.ts#L23) ___ @@ -89,7 +89,7 @@ NDKSigner.sign #### Defined in -[src/signers/private-key/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/signers/private-key/index.ts#L35) +[src/signers/private-key/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/signers/private-key/index.ts#L35) ___ @@ -107,7 +107,7 @@ NDKSigner.user #### Defined in -[src/signers/private-key/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/signers/private-key/index.ts#L30) +[src/signers/private-key/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/signers/private-key/index.ts#L30) ___ @@ -121,4 +121,4 @@ ___ #### Defined in -[src/signers/private-key/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/signers/private-key/index.ts#L18) +[src/signers/private-key/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/signers/private-key/index.ts#L18) diff --git a/docs/classes/NDKRelay.md b/docs/classes/NDKRelay.md index b11da4a4..6ccad5c1 100644 --- a/docs/classes/NDKRelay.md +++ b/docs/classes/NDKRelay.md @@ -75,7 +75,7 @@ EventEmitter.constructor #### Defined in -[src/relay/index.ts:63](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L63) +[src/relay/index.ts:63](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L63) ## Properties @@ -87,7 +87,7 @@ Active subscriptions this relay is connected to #### Defined in -[src/relay/index.ts:61](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L61) +[src/relay/index.ts:61](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L61) ___ @@ -97,7 +97,7 @@ ___ #### Defined in -[src/relay/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L56) +[src/relay/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L56) ___ @@ -107,7 +107,7 @@ ___ #### Defined in -[src/relay/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L51) +[src/relay/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L51) ___ @@ -117,7 +117,7 @@ ___ #### Defined in -[src/relay/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L50) +[src/relay/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L50) ## Accessors @@ -133,7 +133,7 @@ Returns the connection stats. #### Defined in -[src/relay/index.ts:234](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L234) +[src/relay/index.ts:234](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L234) ___ @@ -147,7 +147,7 @@ ___ #### Defined in -[src/relay/index.ts:121](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L121) +[src/relay/index.ts:121](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L121) ## Methods @@ -163,7 +163,7 @@ Connects to the relay. #### Defined in -[src/relay/index.ts:128](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L128) +[src/relay/index.ts:128](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L128) ___ @@ -179,7 +179,7 @@ Disconnects from the relay. #### Defined in -[src/relay/index.ts:139](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L139) +[src/relay/index.ts:139](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L139) ___ @@ -199,7 +199,7 @@ ___ #### Defined in -[src/relay/index.ts:144](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L144) +[src/relay/index.ts:144](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L144) ___ @@ -221,7 +221,7 @@ Publishes an event to the relay. #### Defined in -[src/relay/index.ts:191](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L191) +[src/relay/index.ts:191](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L191) ___ @@ -244,7 +244,7 @@ wasn't the fastest one. #### Defined in -[src/relay/index.ts:202](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L202) +[src/relay/index.ts:202](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L202) ___ @@ -266,4 +266,4 @@ Subscribes to a subscription. #### Defined in -[src/relay/index.ts:164](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L164) +[src/relay/index.ts:164](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L164) diff --git a/docs/classes/NDKRelaySet.md b/docs/classes/NDKRelaySet.md index 67c14582..9cab04f5 100644 --- a/docs/classes/NDKRelaySet.md +++ b/docs/classes/NDKRelaySet.md @@ -20,6 +20,7 @@ Requests to relays should be sent through this interface. ### Methods +- [getId](NDKRelaySet.md#getid) - [publish](NDKRelaySet.md#publish) - [size](NDKRelaySet.md#size) - [subscribe](NDKRelaySet.md#subscribe) @@ -28,18 +29,18 @@ Requests to relays should be sent through this interface. ### constructor -• **new NDKRelaySet**(`relays`, `debug`) +• **new NDKRelaySet**(`relays`, `ndk`) #### Parameters | Name | Type | | :------ | :------ | | `relays` | `Set`<[`NDKRelay`](NDKRelay.md)\> | -| `debug` | `Debugger` | +| `ndk` | [`default`](default.md) | #### Defined in -[src/relay/sets/index.ts:17](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/sets/index.ts#L17) +[src/relay/sets/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/sets/index.ts#L20) ## Properties @@ -49,10 +50,26 @@ Requests to relays should be sent through this interface. #### Defined in -[src/relay/sets/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/sets/index.ts#L13) +[src/relay/sets/index.ts:16](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/sets/index.ts#L16) ## Methods +### getId + +▸ **getId**(): `string` + +Calculates an ID of this specific combination of relays. + +#### Returns + +`string` + +#### Defined in + +[src/relay/sets/index.ts:34](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/sets/index.ts#L34) + +___ + ### publish ▸ **publish**(`event`): `Promise`<`void`\> @@ -69,7 +86,7 @@ Requests to relays should be sent through this interface. #### Defined in -[src/relay/sets/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/sets/index.ts#L88) +[src/relay/sets/index.ts:108](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/sets/index.ts#L108) ___ @@ -83,7 +100,7 @@ ___ #### Defined in -[src/relay/sets/index.ts:98](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/sets/index.ts#L98) +[src/relay/sets/index.ts:118](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/sets/index.ts#L118) ___ @@ -105,4 +122,4 @@ Add a subscription to this relay set #### Defined in -[src/relay/sets/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/sets/index.ts#L31) +[src/relay/sets/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/sets/index.ts#L43) diff --git a/docs/classes/NDKSubscription.md b/docs/classes/NDKSubscription.md index de676d98..4d428cc1 100644 --- a/docs/classes/NDKSubscription.md +++ b/docs/classes/NDKSubscription.md @@ -56,6 +56,8 @@ The subscription that was closed. ↳ **`NDKSubscription`** + ↳↳ [`NDKSubscriptionGroup`](NDKSubscriptionGroup.md) + ## Table of contents ### Constructors @@ -101,7 +103,7 @@ EventEmitter.constructor #### Defined in -[src/subscription/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L88) +[src/subscription/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L88) ## Properties @@ -111,7 +113,7 @@ EventEmitter.constructor #### Defined in -[src/subscription/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L81) +[src/subscription/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L81) ___ @@ -121,7 +123,7 @@ ___ #### Defined in -[src/subscription/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L84) +[src/subscription/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L84) ___ @@ -131,7 +133,7 @@ ___ #### Defined in -[src/subscription/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L82) +[src/subscription/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L82) ___ @@ -141,7 +143,7 @@ ___ #### Defined in -[src/subscription/index.ts:83](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L83) +[src/subscription/index.ts:83](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L83) ___ @@ -151,7 +153,7 @@ ___ #### Defined in -[src/subscription/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L85) +[src/subscription/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L85) ___ @@ -161,7 +163,7 @@ ___ #### Defined in -[src/subscription/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L80) +[src/subscription/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L80) ## Methods @@ -181,7 +183,7 @@ ___ #### Defined in -[src/subscription/index.ts:254](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L254) +[src/subscription/index.ts:251](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L251) ___ @@ -205,7 +207,7 @@ Called when an event is received from a relay or the cache #### Defined in -[src/subscription/index.ts:225](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L225) +[src/subscription/index.ts:222](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L222) ___ @@ -223,7 +225,7 @@ The groupable ID, or null if the subscription is not groupable. #### Defined in -[src/subscription/index.ts:121](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L121) +[src/subscription/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L119) ___ @@ -240,7 +242,7 @@ after creating a subscription. #### Defined in -[src/subscription/index.ts:156](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L156) +[src/subscription/index.ts:153](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L153) ___ @@ -254,4 +256,4 @@ ___ #### Defined in -[src/subscription/index.ts:188](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L188) +[src/subscription/index.ts:185](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L185) diff --git a/docs/classes/NDKUser.md b/docs/classes/NDKUser.md index 6bd64f9c..f91d5390 100644 --- a/docs/classes/NDKUser.md +++ b/docs/classes/NDKUser.md @@ -39,7 +39,7 @@ Represents a pubkey. #### Defined in -[src/user/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/index.ts#L23) +[src/user/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/index.ts#L24) ## Properties @@ -65,7 +65,7 @@ Returns a set of users that this user follows. #### Defined in -[src/user/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/index.ts#L79) +[src/user/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/index.ts#L80) ___ @@ -75,7 +75,7 @@ ___ #### Defined in -[src/user/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/index.ts#L18) +[src/user/index.ts:19](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/index.ts#L19) ___ @@ -85,7 +85,7 @@ ___ #### Defined in -[src/user/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/index.ts#L20) +[src/user/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/index.ts#L21) ___ @@ -95,7 +95,7 @@ ___ #### Defined in -[src/user/index.ts:19](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/index.ts#L19) +[src/user/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/index.ts#L20) ___ @@ -105,13 +105,19 @@ ___ #### Defined in -[src/user/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/index.ts#L21) +[src/user/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/index.ts#L22) ## Methods ### fetchProfile -▸ **fetchProfile**(): `Promise`<``null`` \| `Set`<[`NDKEvent`](NDKEvent.md)\>\> +▸ **fetchProfile**(`opts?`): `Promise`<``null`` \| `Set`<[`NDKEvent`](NDKEvent.md)\>\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`NDKFilterOptions`](../interfaces/NDKFilterOptions.md) | #### Returns @@ -119,7 +125,7 @@ ___ #### Defined in -[src/user/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/index.ts#L50) +[src/user/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/index.ts#L51) ___ @@ -133,7 +139,7 @@ ___ #### Defined in -[src/user/index.ts:46](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/index.ts#L46) +[src/user/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/index.ts#L47) ___ @@ -147,7 +153,7 @@ ___ #### Defined in -[src/user/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/index.ts#L81) +[src/user/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/index.ts#L82) ___ @@ -167,4 +173,4 @@ ___ #### Defined in -[src/user/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/index.ts#L35) +[src/user/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/index.ts#L36) diff --git a/docs/classes/default.md b/docs/classes/default.md index d94b3cb8..f1f41ca9 100644 --- a/docs/classes/default.md +++ b/docs/classes/default.md @@ -18,6 +18,7 @@ - [cacheAdapter](default.md#cacheadapter) - [debug](default.md#debug) +- [delayedSubscriptions](default.md#delayedsubscriptions) - [pool](default.md#pool) - [signer](default.md#signer) @@ -49,7 +50,7 @@ EventEmitter.constructor #### Defined in -[src/index.ts:45](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L45) +[src/index.ts:48](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L48) ## Properties @@ -59,7 +60,7 @@ EventEmitter.constructor #### Defined in -[src/index.ts:42](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L42) +[src/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L43) ___ @@ -69,7 +70,17 @@ ___ #### Defined in -[src/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L43) +[src/index.ts:44](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L44) + +___ + +### delayedSubscriptions + +• **delayedSubscriptions**: `Map`<`string`, [`NDKSubscription`](NDKSubscription.md)[]\> + +#### Defined in + +[src/index.ts:46](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L46) ___ @@ -79,7 +90,7 @@ ___ #### Defined in -[src/index.ts:40](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L40) +[src/index.ts:41](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L41) ___ @@ -89,7 +100,7 @@ ___ #### Defined in -[src/index.ts:41](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L41) +[src/index.ts:42](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L42) ## Methods @@ -105,7 +116,7 @@ Ensures that a signer is available to sign an event. #### Defined in -[src/index.ts:137](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L137) +[src/index.ts:141](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L141) ___ @@ -128,7 +139,7 @@ If the timeout is reached, the connection will be continued to be established in #### Defined in -[src/index.ts:64](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L64) +[src/index.ts:68](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L68) ___ @@ -151,7 +162,7 @@ Fetch a single event #### Defined in -[src/index.ts:100](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L100) +[src/index.ts:104](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L104) ___ @@ -174,7 +185,7 @@ Fetch events #### Defined in -[src/index.ts:113](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L113) +[src/index.ts:117](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L117) ___ @@ -196,7 +207,7 @@ Get a NDKUser object #### Defined in -[src/index.ts:75](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L75) +[src/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L79) ___ @@ -216,7 +227,7 @@ ___ #### Defined in -[src/index.ts:91](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L91) +[src/index.ts:95](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L95) ___ @@ -237,4 +248,4 @@ ___ #### Defined in -[src/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L81) +[src/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L85) diff --git a/docs/enums/NDKKind.md b/docs/enums/NDKKind.md index dce42d5f..33d7d0ef 100644 --- a/docs/enums/NDKKind.md +++ b/docs/enums/NDKKind.md @@ -43,7 +43,7 @@ #### Defined in -[src/events/kind.ts:31](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L31) +[src/events/kind.ts:31](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L31) ___ @@ -53,7 +53,7 @@ ___ #### Defined in -[src/events/kind.ts:30](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L30) +[src/events/kind.ts:30](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L30) ___ @@ -63,7 +63,7 @@ ___ #### Defined in -[src/events/kind.ts:12](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L12) +[src/events/kind.ts:12](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L12) ___ @@ -73,7 +73,7 @@ ___ #### Defined in -[src/events/kind.ts:29](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L29) +[src/events/kind.ts:29](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L29) ___ @@ -83,7 +83,7 @@ ___ #### Defined in -[src/events/kind.ts:27](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L27) +[src/events/kind.ts:27](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L27) ___ @@ -93,7 +93,7 @@ ___ #### Defined in -[src/events/kind.ts:26](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L26) +[src/events/kind.ts:26](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L26) ___ @@ -103,7 +103,7 @@ ___ #### Defined in -[src/events/kind.ts:13](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L13) +[src/events/kind.ts:13](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L13) ___ @@ -113,7 +113,7 @@ ___ #### Defined in -[src/events/kind.ts:16](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L16) +[src/events/kind.ts:16](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L16) ___ @@ -123,7 +123,7 @@ ___ #### Defined in -[src/events/kind.ts:15](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L15) +[src/events/kind.ts:15](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L15) ___ @@ -133,7 +133,7 @@ ___ #### Defined in -[src/events/kind.ts:14](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L14) +[src/events/kind.ts:14](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L14) ___ @@ -143,7 +143,7 @@ ___ #### Defined in -[src/events/kind.ts:17](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L17) +[src/events/kind.ts:17](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L17) ___ @@ -153,7 +153,7 @@ ___ #### Defined in -[src/events/kind.ts:24](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L24) +[src/events/kind.ts:24](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L24) ___ @@ -163,7 +163,7 @@ ___ #### Defined in -[src/events/kind.ts:7](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L7) +[src/events/kind.ts:7](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L7) ___ @@ -173,7 +173,7 @@ ___ #### Defined in -[src/events/kind.ts:8](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L8) +[src/events/kind.ts:8](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L8) ___ @@ -183,7 +183,7 @@ ___ #### Defined in -[src/events/kind.ts:9](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L9) +[src/events/kind.ts:9](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L9) ___ @@ -193,7 +193,7 @@ ___ #### Defined in -[src/events/kind.ts:4](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L4) +[src/events/kind.ts:4](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L4) ___ @@ -203,7 +203,7 @@ ___ #### Defined in -[src/events/kind.ts:21](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L21) +[src/events/kind.ts:21](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L21) ___ @@ -213,7 +213,7 @@ ___ #### Defined in -[src/events/kind.ts:25](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L25) +[src/events/kind.ts:25](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L25) ___ @@ -223,7 +223,7 @@ ___ #### Defined in -[src/events/kind.ts:22](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L22) +[src/events/kind.ts:22](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L22) ___ @@ -233,7 +233,7 @@ ___ #### Defined in -[src/events/kind.ts:28](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L28) +[src/events/kind.ts:28](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L28) ___ @@ -243,7 +243,7 @@ ___ #### Defined in -[src/events/kind.ts:11](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L11) +[src/events/kind.ts:11](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L11) ___ @@ -253,7 +253,7 @@ ___ #### Defined in -[src/events/kind.ts:6](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L6) +[src/events/kind.ts:6](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L6) ___ @@ -263,7 +263,7 @@ ___ #### Defined in -[src/events/kind.ts:23](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L23) +[src/events/kind.ts:23](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L23) ___ @@ -273,7 +273,7 @@ ___ #### Defined in -[src/events/kind.ts:18](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L18) +[src/events/kind.ts:18](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L18) ___ @@ -283,7 +283,7 @@ ___ #### Defined in -[src/events/kind.ts:10](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L10) +[src/events/kind.ts:10](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L10) ___ @@ -293,7 +293,7 @@ ___ #### Defined in -[src/events/kind.ts:5](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L5) +[src/events/kind.ts:5](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L5) ___ @@ -303,7 +303,7 @@ ___ #### Defined in -[src/events/kind.ts:20](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L20) +[src/events/kind.ts:20](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L20) ___ @@ -313,4 +313,4 @@ ___ #### Defined in -[src/events/kind.ts:19](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/events/kind.ts#L19) +[src/events/kind.ts:19](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L19) diff --git a/docs/enums/NDKRelayStatus.md b/docs/enums/NDKRelayStatus.md index d5c5e7d7..1f489371 100644 --- a/docs/enums/NDKRelayStatus.md +++ b/docs/enums/NDKRelayStatus.md @@ -20,7 +20,7 @@ #### Defined in -[src/relay/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L12) +[src/relay/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L12) ___ @@ -30,7 +30,7 @@ ___ #### Defined in -[src/relay/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L11) +[src/relay/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L11) ___ @@ -40,7 +40,7 @@ ___ #### Defined in -[src/relay/index.ts:14](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L14) +[src/relay/index.ts:14](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L14) ___ @@ -50,7 +50,7 @@ ___ #### Defined in -[src/relay/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L13) +[src/relay/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L13) ___ @@ -60,4 +60,4 @@ ___ #### Defined in -[src/relay/index.ts:15](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L15) +[src/relay/index.ts:15](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L15) diff --git a/docs/enums/NDKSubscriptionCacheUsage.md b/docs/enums/NDKSubscriptionCacheUsage.md index 60e66a55..2b08e12c 100644 --- a/docs/enums/NDKSubscriptionCacheUsage.md +++ b/docs/enums/NDKSubscriptionCacheUsage.md @@ -19,7 +19,7 @@ #### Defined in -[src/subscription/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L21) +[src/subscription/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L21) ___ @@ -29,7 +29,7 @@ ___ #### Defined in -[src/subscription/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L18) +[src/subscription/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L18) ___ @@ -39,7 +39,7 @@ ___ #### Defined in -[src/subscription/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L27) +[src/subscription/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L27) ___ @@ -49,4 +49,4 @@ ___ #### Defined in -[src/subscription/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L24) +[src/subscription/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L24) diff --git a/docs/interfaces/GetUserParams.md b/docs/interfaces/GetUserParams.md index 3546b1b0..e9ed0395 100644 --- a/docs/interfaces/GetUserParams.md +++ b/docs/interfaces/GetUserParams.md @@ -29,7 +29,7 @@ NDKUserParams.hexpubkey #### Defined in -[src/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L36) +[src/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L37) ___ @@ -43,7 +43,7 @@ NDKUserParams.nip05 #### Defined in -[src/user/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/index.ts#L10) +[src/user/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/index.ts#L11) ___ @@ -57,7 +57,7 @@ NDKUserParams.npub #### Defined in -[src/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L35) +[src/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L36) ___ @@ -71,4 +71,4 @@ NDKUserParams.relayUrls #### Defined in -[src/user/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/index.ts#L11) +[src/user/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/index.ts#L12) diff --git a/docs/interfaces/NDKCacheAdapter.md b/docs/interfaces/NDKCacheAdapter.md index c04a97e1..ad9d8455 100644 --- a/docs/interfaces/NDKCacheAdapter.md +++ b/docs/interfaces/NDKCacheAdapter.md @@ -25,7 +25,7 @@ When this is false, the cache will be queried in addition to the relays. #### Defined in -[src/cache/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/cache/index.ts#L10) +[src/cache/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/cache/index.ts#L10) ## Methods @@ -45,7 +45,7 @@ When this is false, the cache will be queried in addition to the relays. #### Defined in -[src/cache/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/cache/index.ts#L12) +[src/cache/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/cache/index.ts#L12) ___ @@ -66,4 +66,4 @@ ___ #### Defined in -[src/cache/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/cache/index.ts#L13) +[src/cache/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/cache/index.ts#L13) diff --git a/docs/interfaces/NDKConstructorParams.md b/docs/interfaces/NDKConstructorParams.md index 6dafc70d..4dfbbf17 100644 --- a/docs/interfaces/NDKConstructorParams.md +++ b/docs/interfaces/NDKConstructorParams.md @@ -19,7 +19,7 @@ #### Defined in -[src/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L31) +[src/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L32) ___ @@ -29,7 +29,7 @@ ___ #### Defined in -[src/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L32) +[src/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L33) ___ @@ -39,7 +39,7 @@ ___ #### Defined in -[src/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L29) +[src/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L30) ___ @@ -49,4 +49,4 @@ ___ #### Defined in -[src/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/index.ts#L30) +[src/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L31) diff --git a/docs/interfaces/NDKFilterOptions.md b/docs/interfaces/NDKFilterOptions.md index 9c1153de..feeda871 100644 --- a/docs/interfaces/NDKFilterOptions.md +++ b/docs/interfaces/NDKFilterOptions.md @@ -16,4 +16,4 @@ #### Defined in -[src/subscription/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L13) +[src/subscription/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L13) diff --git a/docs/interfaces/NDKRelayConnectionStats.md b/docs/interfaces/NDKRelayConnectionStats.md index 2edb8191..0043cc2b 100644 --- a/docs/interfaces/NDKRelayConnectionStats.md +++ b/docs/interfaces/NDKRelayConnectionStats.md @@ -21,7 +21,7 @@ The number of times a connection has been attempted. #### Defined in -[src/relay/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L22) +[src/relay/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L22) ___ @@ -33,7 +33,7 @@ The time the current connection was established in milliseconds. #### Defined in -[src/relay/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L37) +[src/relay/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L37) ___ @@ -45,7 +45,7 @@ The durations of the last 100 connections in milliseconds. #### Defined in -[src/relay/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L32) +[src/relay/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L32) ___ @@ -57,4 +57,4 @@ The number of times a connection has been successfully established. #### Defined in -[src/relay/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/relay/index.ts#L27) +[src/relay/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L27) diff --git a/docs/interfaces/NDKSubscriptionOptions.md b/docs/interfaces/NDKSubscriptionOptions.md index 5f42e7de..5c8fda41 100644 --- a/docs/interfaces/NDKSubscriptionOptions.md +++ b/docs/interfaces/NDKSubscriptionOptions.md @@ -19,7 +19,7 @@ #### Defined in -[src/subscription/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L32) +[src/subscription/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L32) ___ @@ -29,7 +29,7 @@ ___ #### Defined in -[src/subscription/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L31) +[src/subscription/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L31) ___ @@ -42,7 +42,7 @@ delayed to allow similar filters to be grouped together. #### Defined in -[src/subscription/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L38) +[src/subscription/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L38) ___ @@ -58,4 +58,4 @@ The delay to use when grouping subscriptions, specified in milliseconds. #### Defined in -[src/subscription/index.ts:44](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L44) +[src/subscription/index.ts:44](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L44) diff --git a/docs/interfaces/NDKUserProfile.md b/docs/interfaces/NDKUserProfile.md index fb094259..875c5738 100644 --- a/docs/interfaces/NDKUserProfile.md +++ b/docs/interfaces/NDKUserProfile.md @@ -25,7 +25,7 @@ #### Defined in -[src/user/profile.ts:12](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/profile.ts#L12) +[src/user/profile.ts:12](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/profile.ts#L12) ___ @@ -35,7 +35,7 @@ ___ #### Defined in -[src/user/profile.ts:7](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/profile.ts#L7) +[src/user/profile.ts:7](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/profile.ts#L7) ___ @@ -45,7 +45,7 @@ ___ #### Defined in -[src/user/profile.ts:8](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/profile.ts#L8) +[src/user/profile.ts:8](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/profile.ts#L8) ___ @@ -55,7 +55,7 @@ ___ #### Defined in -[src/user/profile.ts:5](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/profile.ts#L5) +[src/user/profile.ts:5](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/profile.ts#L5) ___ @@ -65,7 +65,7 @@ ___ #### Defined in -[src/user/profile.ts:6](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/profile.ts#L6) +[src/user/profile.ts:6](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/profile.ts#L6) ___ @@ -75,7 +75,7 @@ ___ #### Defined in -[src/user/profile.ts:10](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/profile.ts#L10) +[src/user/profile.ts:10](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/profile.ts#L10) ___ @@ -85,7 +85,7 @@ ___ #### Defined in -[src/user/profile.ts:11](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/profile.ts#L11) +[src/user/profile.ts:11](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/profile.ts#L11) ___ @@ -95,7 +95,7 @@ ___ #### Defined in -[src/user/profile.ts:4](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/profile.ts#L4) +[src/user/profile.ts:4](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/profile.ts#L4) ___ @@ -105,7 +105,7 @@ ___ #### Defined in -[src/user/profile.ts:9](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/profile.ts#L9) +[src/user/profile.ts:9](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/profile.ts#L9) ___ @@ -115,4 +115,4 @@ ___ #### Defined in -[src/user/profile.ts:13](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/user/profile.ts#L13) +[src/user/profile.ts:13](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/profile.ts#L13) diff --git a/docs/interfaces/NDKZapInvoice.md b/docs/interfaces/NDKZapInvoice.md index 77aa419d..d195d919 100644 --- a/docs/interfaces/NDKZapInvoice.md +++ b/docs/interfaces/NDKZapInvoice.md @@ -22,7 +22,7 @@ #### Defined in -[src/zap/invoice.ts:10](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/zap/invoice.ts#L10) +[src/zap/invoice.ts:10](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/zap/invoice.ts#L10) ___ @@ -32,7 +32,7 @@ ___ #### Defined in -[src/zap/invoice.ts:11](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/zap/invoice.ts#L11) +[src/zap/invoice.ts:11](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/zap/invoice.ts#L11) ___ @@ -42,7 +42,7 @@ ___ #### Defined in -[src/zap/invoice.ts:5](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/zap/invoice.ts#L5) +[src/zap/invoice.ts:5](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/zap/invoice.ts#L5) ___ @@ -52,7 +52,7 @@ ___ #### Defined in -[src/zap/invoice.ts:8](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/zap/invoice.ts#L8) +[src/zap/invoice.ts:8](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/zap/invoice.ts#L8) ___ @@ -62,7 +62,7 @@ ___ #### Defined in -[src/zap/invoice.ts:9](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/zap/invoice.ts#L9) +[src/zap/invoice.ts:9](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/zap/invoice.ts#L9) ___ @@ -72,7 +72,7 @@ ___ #### Defined in -[src/zap/invoice.ts:7](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/zap/invoice.ts#L7) +[src/zap/invoice.ts:7](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/zap/invoice.ts#L7) ___ @@ -82,4 +82,4 @@ ___ #### Defined in -[src/zap/invoice.ts:6](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/zap/invoice.ts#L6) +[src/zap/invoice.ts:6](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/zap/invoice.ts#L6) diff --git a/docs/modules.md b/docs/modules.md index 7ca62598..30372afd 100644 --- a/docs/modules.md +++ b/docs/modules.md @@ -17,6 +17,7 @@ - [NDKPrivateKeySigner](classes/NDKPrivateKeySigner.md) - [NDKRelay](classes/NDKRelay.md) - [NDKRelaySet](classes/NDKRelaySet.md) +- [NDKSubscriptionGroup](classes/NDKSubscriptionGroup.md) - [NDKUser](classes/NDKUser.md) - [default](classes/default.md) @@ -45,6 +46,8 @@ ### Functions +- [mergeEvent](modules.md#mergeevent) +- [mergeFilters](modules.md#mergefilters) - [zapInvoiceFromEvent](modules.md#zapinvoicefromevent) ## Type Aliases @@ -55,7 +58,7 @@ #### Defined in -[src/subscription/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L10) +[src/subscription/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L10) ## Variables @@ -67,10 +70,54 @@ Default subscription options. #### Defined in -[src/subscription/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/subscription/index.ts#L50) +[src/subscription/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L50) ## Functions +### mergeEvent + +▸ **mergeEvent**(`event`, `profile`): [`NDKUserProfile`](interfaces/NDKUserProfile.md) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `event` | [`NDKEvent`](classes/NDKEvent.md) | +| `profile` | [`NDKUserProfile`](interfaces/NDKUserProfile.md) | + +#### Returns + +[`NDKUserProfile`](interfaces/NDKUserProfile.md) + +#### Defined in + +[src/user/profile.ts:16](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/profile.ts#L16) + +___ + +### mergeFilters + +▸ **mergeFilters**(`filters`): [`NDKFilter`](modules.md#ndkfilter) + +Go through all the passed filters, which should be +relatively similar, and merge them. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `filters` | `Filter`[] | + +#### Returns + +[`NDKFilter`](modules.md#ndkfilter) + +#### Defined in + +[src/subscription/index.ts:348](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L348) + +___ + ### zapInvoiceFromEvent ▸ **zapInvoiceFromEvent**(`event`): [`NDKZapInvoice`](interfaces/NDKZapInvoice.md) \| ``null`` @@ -87,4 +134,4 @@ Default subscription options. #### Defined in -[src/zap/invoice.ts:14](https://github.com/nostr-dev-kit/ndk/blob/bdedd0e/src/zap/invoice.ts#L14) +[src/zap/invoice.ts:14](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/zap/invoice.ts#L14) From 78988494978228c38bbc61f28faf056a684ce556 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Mon, 17 Apr 2023 14:56:01 +0300 Subject: [PATCH 065/773] emit only to the matching events --- docs/classes/NDKEvent.md | 46 ++-- docs/classes/NDKNip07Signer.md | 8 +- docs/classes/NDKPrivateKeySigner.md | 12 +- docs/classes/NDKRelay.md | 26 +-- docs/classes/NDKRelaySet.md | 12 +- docs/classes/NDKSubscription.md | 24 +- docs/classes/NDKSubscriptionGroup.md | 254 +++++++++++++++++++++ docs/classes/NDKUser.md | 20 +- docs/classes/default.md | 26 +-- docs/enums/NDKKind.md | 56 ++--- docs/enums/NDKRelayStatus.md | 10 +- docs/enums/NDKSubscriptionCacheUsage.md | 8 +- docs/interfaces/GetUserParams.md | 8 +- docs/interfaces/NDKCacheAdapter.md | 6 +- docs/interfaces/NDKConstructorParams.md | 8 +- docs/interfaces/NDKFilterOptions.md | 2 +- docs/interfaces/NDKRelayConnectionStats.md | 8 +- docs/interfaces/NDKSubscriptionOptions.md | 8 +- docs/interfaces/NDKUserProfile.md | 20 +- docs/interfaces/NDKZapInvoice.md | 14 +- docs/modules.md | 10 +- package.json | 4 +- src/subscription/index.ts | 42 +++- 23 files changed, 460 insertions(+), 172 deletions(-) create mode 100644 docs/classes/NDKSubscriptionGroup.md diff --git a/docs/classes/NDKEvent.md b/docs/classes/NDKEvent.md index 864370d4..8f63fff8 100644 --- a/docs/classes/NDKEvent.md +++ b/docs/classes/NDKEvent.md @@ -61,7 +61,7 @@ EventEmitter.constructor #### Defined in -[src/events/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L35) +[src/events/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L35) ## Properties @@ -71,7 +71,7 @@ EventEmitter.constructor #### Defined in -[src/events/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L27) +[src/events/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L27) ___ @@ -81,7 +81,7 @@ ___ #### Defined in -[src/events/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L26) +[src/events/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L26) ___ @@ -105,7 +105,7 @@ ___ #### Defined in -[src/events/index.ts:97](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L97) +[src/events/index.ts:97](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L97) ___ @@ -115,7 +115,7 @@ ___ #### Defined in -[src/events/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L31) +[src/events/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L31) ___ @@ -139,7 +139,7 @@ ___ #### Defined in -[src/events/index.ts:96](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L96) +[src/events/index.ts:96](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L96) ___ @@ -163,7 +163,7 @@ ___ #### Defined in -[src/events/index.ts:95](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L95) +[src/events/index.ts:95](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L95) ___ @@ -173,7 +173,7 @@ ___ #### Defined in -[src/events/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L30) +[src/events/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L30) ___ @@ -183,7 +183,7 @@ ___ #### Defined in -[src/events/index.ts:25](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L25) +[src/events/index.ts:25](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L25) ___ @@ -193,7 +193,7 @@ ___ #### Defined in -[src/events/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L33) +[src/events/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L33) ___ @@ -203,7 +203,7 @@ ___ #### Defined in -[src/events/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L32) +[src/events/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L32) ___ @@ -213,7 +213,7 @@ ___ #### Defined in -[src/events/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L28) +[src/events/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L28) ___ @@ -223,7 +223,7 @@ ___ #### Defined in -[src/events/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L29) +[src/events/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L29) ## Methods @@ -245,7 +245,7 @@ Get all tags with the given name #### Defined in -[src/events/index.ts:102](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L102) +[src/events/index.ts:102](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L102) ___ @@ -259,7 +259,7 @@ ___ #### Defined in -[src/events/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L119) +[src/events/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L119) ___ @@ -275,7 +275,7 @@ Returns the event as is. #### Defined in -[src/events/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L51) +[src/events/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L51) ___ @@ -291,7 +291,7 @@ the `d` tag of a parameterized replaceable event #### Defined in -[src/events/index.ts:147](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L147) +[src/events/index.ts:147](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L147) ___ @@ -305,7 +305,7 @@ ___ #### Defined in -[src/events/index.ts:110](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L110) +[src/events/index.ts:110](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L110) ___ @@ -321,7 +321,7 @@ the id of the event, or if it's a parameterized event, the id of the event with #### Defined in -[src/events/index.ts:161](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L161) +[src/events/index.ts:161](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L161) ___ @@ -347,7 +347,7 @@ event = new NDKEvent(ndk, { kind: 30000, pubkey: 'pubkey', tags: [ ["d", "d-code #### Defined in -[src/events/index.ts:181](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L181) +[src/events/index.ts:181](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L181) ___ @@ -370,7 +370,7 @@ when possible. #### Defined in -[src/events/index.ts:66](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L66) +[src/events/index.ts:66](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L66) ___ @@ -384,7 +384,7 @@ ___ #### Defined in -[src/events/index.ts:106](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L106) +[src/events/index.ts:106](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L106) ___ @@ -407,4 +407,4 @@ Create a zap request for an existing event #### Defined in -[src/events/index.ts:193](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/index.ts#L193) +[src/events/index.ts:193](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L193) diff --git a/docs/classes/NDKNip07Signer.md b/docs/classes/NDKNip07Signer.md index c19a50fc..71903730 100644 --- a/docs/classes/NDKNip07Signer.md +++ b/docs/classes/NDKNip07Signer.md @@ -29,7 +29,7 @@ with a NIP-07 browser extension (e.g., getalby, nos2x). #### Defined in -[src/signers/nip07/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/signers/nip07/index.ts#L12) +[src/signers/nip07/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/signers/nip07/index.ts#L12) ## Methods @@ -47,7 +47,7 @@ NDKSigner.blockUntilReady #### Defined in -[src/signers/nip07/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/signers/nip07/index.ts#L18) +[src/signers/nip07/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/signers/nip07/index.ts#L18) ___ @@ -79,7 +79,7 @@ NDKSigner.sign #### Defined in -[src/signers/nip07/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/signers/nip07/index.ts#L47) +[src/signers/nip07/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/signers/nip07/index.ts#L47) ___ @@ -101,4 +101,4 @@ NDKSigner.user #### Defined in -[src/signers/nip07/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/signers/nip07/index.ts#L33) +[src/signers/nip07/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/signers/nip07/index.ts#L33) diff --git a/docs/classes/NDKPrivateKeySigner.md b/docs/classes/NDKPrivateKeySigner.md index d48ddfe7..1bf5e625 100644 --- a/docs/classes/NDKPrivateKeySigner.md +++ b/docs/classes/NDKPrivateKeySigner.md @@ -37,7 +37,7 @@ #### Defined in -[src/signers/private-key/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/signers/private-key/index.ts#L11) +[src/signers/private-key/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/signers/private-key/index.ts#L11) ## Properties @@ -47,7 +47,7 @@ #### Defined in -[src/signers/private-key/index.ts:9](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/signers/private-key/index.ts#L9) +[src/signers/private-key/index.ts:9](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/signers/private-key/index.ts#L9) ## Methods @@ -65,7 +65,7 @@ NDKSigner.blockUntilReady #### Defined in -[src/signers/private-key/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/signers/private-key/index.ts#L23) +[src/signers/private-key/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/signers/private-key/index.ts#L23) ___ @@ -89,7 +89,7 @@ NDKSigner.sign #### Defined in -[src/signers/private-key/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/signers/private-key/index.ts#L35) +[src/signers/private-key/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/signers/private-key/index.ts#L35) ___ @@ -107,7 +107,7 @@ NDKSigner.user #### Defined in -[src/signers/private-key/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/signers/private-key/index.ts#L30) +[src/signers/private-key/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/signers/private-key/index.ts#L30) ___ @@ -121,4 +121,4 @@ ___ #### Defined in -[src/signers/private-key/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/signers/private-key/index.ts#L18) +[src/signers/private-key/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/signers/private-key/index.ts#L18) diff --git a/docs/classes/NDKRelay.md b/docs/classes/NDKRelay.md index 6ccad5c1..4d9aca51 100644 --- a/docs/classes/NDKRelay.md +++ b/docs/classes/NDKRelay.md @@ -75,7 +75,7 @@ EventEmitter.constructor #### Defined in -[src/relay/index.ts:63](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L63) +[src/relay/index.ts:63](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L63) ## Properties @@ -87,7 +87,7 @@ Active subscriptions this relay is connected to #### Defined in -[src/relay/index.ts:61](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L61) +[src/relay/index.ts:61](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L61) ___ @@ -97,7 +97,7 @@ ___ #### Defined in -[src/relay/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L56) +[src/relay/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L56) ___ @@ -107,7 +107,7 @@ ___ #### Defined in -[src/relay/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L51) +[src/relay/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L51) ___ @@ -117,7 +117,7 @@ ___ #### Defined in -[src/relay/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L50) +[src/relay/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L50) ## Accessors @@ -133,7 +133,7 @@ Returns the connection stats. #### Defined in -[src/relay/index.ts:234](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L234) +[src/relay/index.ts:234](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L234) ___ @@ -147,7 +147,7 @@ ___ #### Defined in -[src/relay/index.ts:121](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L121) +[src/relay/index.ts:121](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L121) ## Methods @@ -163,7 +163,7 @@ Connects to the relay. #### Defined in -[src/relay/index.ts:128](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L128) +[src/relay/index.ts:128](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L128) ___ @@ -179,7 +179,7 @@ Disconnects from the relay. #### Defined in -[src/relay/index.ts:139](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L139) +[src/relay/index.ts:139](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L139) ___ @@ -199,7 +199,7 @@ ___ #### Defined in -[src/relay/index.ts:144](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L144) +[src/relay/index.ts:144](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L144) ___ @@ -221,7 +221,7 @@ Publishes an event to the relay. #### Defined in -[src/relay/index.ts:191](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L191) +[src/relay/index.ts:191](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L191) ___ @@ -244,7 +244,7 @@ wasn't the fastest one. #### Defined in -[src/relay/index.ts:202](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L202) +[src/relay/index.ts:202](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L202) ___ @@ -266,4 +266,4 @@ Subscribes to a subscription. #### Defined in -[src/relay/index.ts:164](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L164) +[src/relay/index.ts:164](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L164) diff --git a/docs/classes/NDKRelaySet.md b/docs/classes/NDKRelaySet.md index 9cab04f5..8abdad65 100644 --- a/docs/classes/NDKRelaySet.md +++ b/docs/classes/NDKRelaySet.md @@ -40,7 +40,7 @@ Requests to relays should be sent through this interface. #### Defined in -[src/relay/sets/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/sets/index.ts#L20) +[src/relay/sets/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/sets/index.ts#L20) ## Properties @@ -50,7 +50,7 @@ Requests to relays should be sent through this interface. #### Defined in -[src/relay/sets/index.ts:16](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/sets/index.ts#L16) +[src/relay/sets/index.ts:16](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/sets/index.ts#L16) ## Methods @@ -66,7 +66,7 @@ Calculates an ID of this specific combination of relays. #### Defined in -[src/relay/sets/index.ts:34](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/sets/index.ts#L34) +[src/relay/sets/index.ts:34](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/sets/index.ts#L34) ___ @@ -86,7 +86,7 @@ ___ #### Defined in -[src/relay/sets/index.ts:108](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/sets/index.ts#L108) +[src/relay/sets/index.ts:108](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/sets/index.ts#L108) ___ @@ -100,7 +100,7 @@ ___ #### Defined in -[src/relay/sets/index.ts:118](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/sets/index.ts#L118) +[src/relay/sets/index.ts:118](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/sets/index.ts#L118) ___ @@ -122,4 +122,4 @@ Add a subscription to this relay set #### Defined in -[src/relay/sets/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/sets/index.ts#L43) +[src/relay/sets/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/sets/index.ts#L43) diff --git a/docs/classes/NDKSubscription.md b/docs/classes/NDKSubscription.md index 4d428cc1..8545ccfd 100644 --- a/docs/classes/NDKSubscription.md +++ b/docs/classes/NDKSubscription.md @@ -103,7 +103,7 @@ EventEmitter.constructor #### Defined in -[src/subscription/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L88) +[src/subscription/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L88) ## Properties @@ -113,7 +113,7 @@ EventEmitter.constructor #### Defined in -[src/subscription/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L81) +[src/subscription/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L81) ___ @@ -123,7 +123,7 @@ ___ #### Defined in -[src/subscription/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L84) +[src/subscription/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L84) ___ @@ -133,7 +133,7 @@ ___ #### Defined in -[src/subscription/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L82) +[src/subscription/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L82) ___ @@ -143,7 +143,7 @@ ___ #### Defined in -[src/subscription/index.ts:83](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L83) +[src/subscription/index.ts:83](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L83) ___ @@ -153,7 +153,7 @@ ___ #### Defined in -[src/subscription/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L85) +[src/subscription/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L85) ___ @@ -163,7 +163,7 @@ ___ #### Defined in -[src/subscription/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L80) +[src/subscription/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L80) ## Methods @@ -183,7 +183,7 @@ ___ #### Defined in -[src/subscription/index.ts:251](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L251) +[src/subscription/index.ts:251](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L251) ___ @@ -207,7 +207,7 @@ Called when an event is received from a relay or the cache #### Defined in -[src/subscription/index.ts:222](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L222) +[src/subscription/index.ts:222](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L222) ___ @@ -225,7 +225,7 @@ The groupable ID, or null if the subscription is not groupable. #### Defined in -[src/subscription/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L119) +[src/subscription/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L119) ___ @@ -242,7 +242,7 @@ after creating a subscription. #### Defined in -[src/subscription/index.ts:153](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L153) +[src/subscription/index.ts:153](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L153) ___ @@ -256,4 +256,4 @@ ___ #### Defined in -[src/subscription/index.ts:185](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L185) +[src/subscription/index.ts:185](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L185) diff --git a/docs/classes/NDKSubscriptionGroup.md b/docs/classes/NDKSubscriptionGroup.md new file mode 100644 index 00000000..4fe854dc --- /dev/null +++ b/docs/classes/NDKSubscriptionGroup.md @@ -0,0 +1,254 @@ +[NDK](../README.md) / [Exports](../modules.md) / NDKSubscriptionGroup + +# Class: NDKSubscriptionGroup + +Represents a group of subscriptions. + +Events emitted from the group will be emitted from each subscription. + +## Hierarchy + +- [`NDKSubscription`](NDKSubscription.md) + + ↳ **`NDKSubscriptionGroup`** + +## Table of contents + +### Constructors + +- [constructor](NDKSubscriptionGroup.md#constructor) + +### Properties + +- [filter](NDKSubscriptionGroup.md#filter) +- [ndk](NDKSubscriptionGroup.md#ndk) +- [opts](NDKSubscriptionGroup.md#opts) +- [relaySet](NDKSubscriptionGroup.md#relayset) +- [relaySubscriptions](NDKSubscriptionGroup.md#relaysubscriptions) +- [subId](NDKSubscriptionGroup.md#subid) + +### Methods + +- [eoseReceived](NDKSubscriptionGroup.md#eosereceived) +- [eventReceived](NDKSubscriptionGroup.md#eventreceived) +- [groupableId](NDKSubscriptionGroup.md#groupableid) +- [start](NDKSubscriptionGroup.md#start) +- [stop](NDKSubscriptionGroup.md#stop) + +## Constructors + +### constructor + +• **new NDKSubscriptionGroup**(`ndk`, `subscriptions`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `ndk` | [`default`](default.md) | +| `subscriptions` | [`NDKSubscription`](NDKSubscription.md)[] | + +#### Overrides + +[NDKSubscription](NDKSubscription.md).[constructor](NDKSubscription.md#constructor) + +#### Defined in + +[src/subscription/index.ts:288](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L288) + +## Properties + +### filter + +• `Readonly` **filter**: `Filter` + +#### Inherited from + +[NDKSubscription](NDKSubscription.md).[filter](NDKSubscription.md#filter) + +#### Defined in + +[src/subscription/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L81) + +___ + +### ndk + +• **ndk**: [`default`](default.md) + +#### Inherited from + +[NDKSubscription](NDKSubscription.md).[ndk](NDKSubscription.md#ndk) + +#### Defined in + +[src/subscription/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L84) + +___ + +### opts + +• `Readonly` **opts**: [`NDKSubscriptionOptions`](../interfaces/NDKSubscriptionOptions.md) + +#### Inherited from + +[NDKSubscription](NDKSubscription.md).[opts](NDKSubscription.md#opts) + +#### Defined in + +[src/subscription/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L82) + +___ + +### relaySet + +• `Optional` **relaySet**: [`NDKRelaySet`](NDKRelaySet.md) + +#### Inherited from + +[NDKSubscription](NDKSubscription.md).[relaySet](NDKSubscription.md#relayset) + +#### Defined in + +[src/subscription/index.ts:83](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L83) + +___ + +### relaySubscriptions + +• **relaySubscriptions**: `Map`<[`NDKRelay`](NDKRelay.md), `Sub`\> + +#### Inherited from + +[NDKSubscription](NDKSubscription.md).[relaySubscriptions](NDKSubscription.md#relaysubscriptions) + +#### Defined in + +[src/subscription/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L85) + +___ + +### subId + +• `Readonly` **subId**: `string` + +#### Inherited from + +[NDKSubscription](NDKSubscription.md).[subId](NDKSubscription.md#subid) + +#### Defined in + +[src/subscription/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L80) + +## Methods + +### eoseReceived + +▸ **eoseReceived**(`relay`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `relay` | [`NDKRelay`](NDKRelay.md) | + +#### Returns + +`void` + +#### Inherited from + +[NDKSubscription](NDKSubscription.md).[eoseReceived](NDKSubscription.md#eosereceived) + +#### Defined in + +[src/subscription/index.ts:251](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L251) + +___ + +### eventReceived + +▸ **eventReceived**(`event`, `relay`, `fromCache?`): `void` + +Called when an event is received from a relay or the cache + +#### Parameters + +| Name | Type | Default value | Description | +| :------ | :------ | :------ | :------ | +| `event` | [`NDKEvent`](NDKEvent.md) | `undefined` | | +| `relay` | `undefined` \| [`NDKRelay`](NDKRelay.md) | `undefined` | | +| `fromCache` | `boolean` | `false` | Whether the event was received from the cache | + +#### Returns + +`void` + +#### Inherited from + +[NDKSubscription](NDKSubscription.md).[eventReceived](NDKSubscription.md#eventreceived) + +#### Defined in + +[src/subscription/index.ts:222](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L222) + +___ + +### groupableId + +▸ **groupableId**(): ``null`` \| `string` + +Calculates the groupable ID for this subscription. + +#### Returns + +``null`` \| `string` + +The groupable ID, or null if the subscription is not groupable. + +#### Inherited from + +[NDKSubscription](NDKSubscription.md).[groupableId](NDKSubscription.md#groupableid) + +#### Defined in + +[src/subscription/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L119) + +___ + +### start + +▸ **start**(): `Promise`<`void`\> + +Start the subscription. This is the main method that should be called +after creating a subscription. + +#### Returns + +`Promise`<`void`\> + +#### Inherited from + +[NDKSubscription](NDKSubscription.md).[start](NDKSubscription.md#start) + +#### Defined in + +[src/subscription/index.ts:153](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L153) + +___ + +### stop + +▸ **stop**(): `void` + +#### Returns + +`void` + +#### Inherited from + +[NDKSubscription](NDKSubscription.md).[stop](NDKSubscription.md#stop) + +#### Defined in + +[src/subscription/index.ts:185](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L185) diff --git a/docs/classes/NDKUser.md b/docs/classes/NDKUser.md index f91d5390..36b8b3d9 100644 --- a/docs/classes/NDKUser.md +++ b/docs/classes/NDKUser.md @@ -39,7 +39,7 @@ Represents a pubkey. #### Defined in -[src/user/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/index.ts#L24) +[src/user/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/index.ts#L24) ## Properties @@ -65,7 +65,7 @@ Returns a set of users that this user follows. #### Defined in -[src/user/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/index.ts#L80) +[src/user/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/index.ts#L80) ___ @@ -75,7 +75,7 @@ ___ #### Defined in -[src/user/index.ts:19](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/index.ts#L19) +[src/user/index.ts:19](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/index.ts#L19) ___ @@ -85,7 +85,7 @@ ___ #### Defined in -[src/user/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/index.ts#L21) +[src/user/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/index.ts#L21) ___ @@ -95,7 +95,7 @@ ___ #### Defined in -[src/user/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/index.ts#L20) +[src/user/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/index.ts#L20) ___ @@ -105,7 +105,7 @@ ___ #### Defined in -[src/user/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/index.ts#L22) +[src/user/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/index.ts#L22) ## Methods @@ -125,7 +125,7 @@ ___ #### Defined in -[src/user/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/index.ts#L51) +[src/user/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/index.ts#L51) ___ @@ -139,7 +139,7 @@ ___ #### Defined in -[src/user/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/index.ts#L47) +[src/user/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/index.ts#L47) ___ @@ -153,7 +153,7 @@ ___ #### Defined in -[src/user/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/index.ts#L82) +[src/user/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/index.ts#L82) ___ @@ -173,4 +173,4 @@ ___ #### Defined in -[src/user/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/index.ts#L36) +[src/user/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/index.ts#L36) diff --git a/docs/classes/default.md b/docs/classes/default.md index f1f41ca9..bb6bc35b 100644 --- a/docs/classes/default.md +++ b/docs/classes/default.md @@ -50,7 +50,7 @@ EventEmitter.constructor #### Defined in -[src/index.ts:48](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L48) +[src/index.ts:48](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L48) ## Properties @@ -60,7 +60,7 @@ EventEmitter.constructor #### Defined in -[src/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L43) +[src/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L43) ___ @@ -70,7 +70,7 @@ ___ #### Defined in -[src/index.ts:44](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L44) +[src/index.ts:44](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L44) ___ @@ -80,7 +80,7 @@ ___ #### Defined in -[src/index.ts:46](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L46) +[src/index.ts:46](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L46) ___ @@ -90,7 +90,7 @@ ___ #### Defined in -[src/index.ts:41](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L41) +[src/index.ts:41](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L41) ___ @@ -100,7 +100,7 @@ ___ #### Defined in -[src/index.ts:42](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L42) +[src/index.ts:42](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L42) ## Methods @@ -116,7 +116,7 @@ Ensures that a signer is available to sign an event. #### Defined in -[src/index.ts:141](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L141) +[src/index.ts:141](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L141) ___ @@ -139,7 +139,7 @@ If the timeout is reached, the connection will be continued to be established in #### Defined in -[src/index.ts:68](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L68) +[src/index.ts:68](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L68) ___ @@ -162,7 +162,7 @@ Fetch a single event #### Defined in -[src/index.ts:104](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L104) +[src/index.ts:104](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L104) ___ @@ -185,7 +185,7 @@ Fetch events #### Defined in -[src/index.ts:117](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L117) +[src/index.ts:117](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L117) ___ @@ -207,7 +207,7 @@ Get a NDKUser object #### Defined in -[src/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L79) +[src/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L79) ___ @@ -227,7 +227,7 @@ ___ #### Defined in -[src/index.ts:95](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L95) +[src/index.ts:95](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L95) ___ @@ -248,4 +248,4 @@ ___ #### Defined in -[src/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L85) +[src/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L85) diff --git a/docs/enums/NDKKind.md b/docs/enums/NDKKind.md index 33d7d0ef..f6d5c57a 100644 --- a/docs/enums/NDKKind.md +++ b/docs/enums/NDKKind.md @@ -43,7 +43,7 @@ #### Defined in -[src/events/kind.ts:31](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L31) +[src/events/kind.ts:31](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L31) ___ @@ -53,7 +53,7 @@ ___ #### Defined in -[src/events/kind.ts:30](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L30) +[src/events/kind.ts:30](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L30) ___ @@ -63,7 +63,7 @@ ___ #### Defined in -[src/events/kind.ts:12](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L12) +[src/events/kind.ts:12](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L12) ___ @@ -73,7 +73,7 @@ ___ #### Defined in -[src/events/kind.ts:29](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L29) +[src/events/kind.ts:29](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L29) ___ @@ -83,7 +83,7 @@ ___ #### Defined in -[src/events/kind.ts:27](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L27) +[src/events/kind.ts:27](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L27) ___ @@ -93,7 +93,7 @@ ___ #### Defined in -[src/events/kind.ts:26](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L26) +[src/events/kind.ts:26](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L26) ___ @@ -103,7 +103,7 @@ ___ #### Defined in -[src/events/kind.ts:13](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L13) +[src/events/kind.ts:13](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L13) ___ @@ -113,7 +113,7 @@ ___ #### Defined in -[src/events/kind.ts:16](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L16) +[src/events/kind.ts:16](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L16) ___ @@ -123,7 +123,7 @@ ___ #### Defined in -[src/events/kind.ts:15](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L15) +[src/events/kind.ts:15](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L15) ___ @@ -133,7 +133,7 @@ ___ #### Defined in -[src/events/kind.ts:14](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L14) +[src/events/kind.ts:14](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L14) ___ @@ -143,7 +143,7 @@ ___ #### Defined in -[src/events/kind.ts:17](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L17) +[src/events/kind.ts:17](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L17) ___ @@ -153,7 +153,7 @@ ___ #### Defined in -[src/events/kind.ts:24](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L24) +[src/events/kind.ts:24](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L24) ___ @@ -163,7 +163,7 @@ ___ #### Defined in -[src/events/kind.ts:7](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L7) +[src/events/kind.ts:7](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L7) ___ @@ -173,7 +173,7 @@ ___ #### Defined in -[src/events/kind.ts:8](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L8) +[src/events/kind.ts:8](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L8) ___ @@ -183,7 +183,7 @@ ___ #### Defined in -[src/events/kind.ts:9](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L9) +[src/events/kind.ts:9](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L9) ___ @@ -193,7 +193,7 @@ ___ #### Defined in -[src/events/kind.ts:4](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L4) +[src/events/kind.ts:4](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L4) ___ @@ -203,7 +203,7 @@ ___ #### Defined in -[src/events/kind.ts:21](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L21) +[src/events/kind.ts:21](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L21) ___ @@ -213,7 +213,7 @@ ___ #### Defined in -[src/events/kind.ts:25](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L25) +[src/events/kind.ts:25](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L25) ___ @@ -223,7 +223,7 @@ ___ #### Defined in -[src/events/kind.ts:22](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L22) +[src/events/kind.ts:22](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L22) ___ @@ -233,7 +233,7 @@ ___ #### Defined in -[src/events/kind.ts:28](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L28) +[src/events/kind.ts:28](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L28) ___ @@ -243,7 +243,7 @@ ___ #### Defined in -[src/events/kind.ts:11](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L11) +[src/events/kind.ts:11](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L11) ___ @@ -253,7 +253,7 @@ ___ #### Defined in -[src/events/kind.ts:6](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L6) +[src/events/kind.ts:6](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L6) ___ @@ -263,7 +263,7 @@ ___ #### Defined in -[src/events/kind.ts:23](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L23) +[src/events/kind.ts:23](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L23) ___ @@ -273,7 +273,7 @@ ___ #### Defined in -[src/events/kind.ts:18](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L18) +[src/events/kind.ts:18](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L18) ___ @@ -283,7 +283,7 @@ ___ #### Defined in -[src/events/kind.ts:10](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L10) +[src/events/kind.ts:10](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L10) ___ @@ -293,7 +293,7 @@ ___ #### Defined in -[src/events/kind.ts:5](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L5) +[src/events/kind.ts:5](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L5) ___ @@ -303,7 +303,7 @@ ___ #### Defined in -[src/events/kind.ts:20](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L20) +[src/events/kind.ts:20](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L20) ___ @@ -313,4 +313,4 @@ ___ #### Defined in -[src/events/kind.ts:19](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/events/kind.ts#L19) +[src/events/kind.ts:19](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L19) diff --git a/docs/enums/NDKRelayStatus.md b/docs/enums/NDKRelayStatus.md index 1f489371..244f137b 100644 --- a/docs/enums/NDKRelayStatus.md +++ b/docs/enums/NDKRelayStatus.md @@ -20,7 +20,7 @@ #### Defined in -[src/relay/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L12) +[src/relay/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L12) ___ @@ -30,7 +30,7 @@ ___ #### Defined in -[src/relay/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L11) +[src/relay/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L11) ___ @@ -40,7 +40,7 @@ ___ #### Defined in -[src/relay/index.ts:14](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L14) +[src/relay/index.ts:14](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L14) ___ @@ -50,7 +50,7 @@ ___ #### Defined in -[src/relay/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L13) +[src/relay/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L13) ___ @@ -60,4 +60,4 @@ ___ #### Defined in -[src/relay/index.ts:15](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L15) +[src/relay/index.ts:15](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L15) diff --git a/docs/enums/NDKSubscriptionCacheUsage.md b/docs/enums/NDKSubscriptionCacheUsage.md index 2b08e12c..ce902c2d 100644 --- a/docs/enums/NDKSubscriptionCacheUsage.md +++ b/docs/enums/NDKSubscriptionCacheUsage.md @@ -19,7 +19,7 @@ #### Defined in -[src/subscription/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L21) +[src/subscription/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L21) ___ @@ -29,7 +29,7 @@ ___ #### Defined in -[src/subscription/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L18) +[src/subscription/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L18) ___ @@ -39,7 +39,7 @@ ___ #### Defined in -[src/subscription/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L27) +[src/subscription/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L27) ___ @@ -49,4 +49,4 @@ ___ #### Defined in -[src/subscription/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L24) +[src/subscription/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L24) diff --git a/docs/interfaces/GetUserParams.md b/docs/interfaces/GetUserParams.md index e9ed0395..02d5da8e 100644 --- a/docs/interfaces/GetUserParams.md +++ b/docs/interfaces/GetUserParams.md @@ -29,7 +29,7 @@ NDKUserParams.hexpubkey #### Defined in -[src/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L37) +[src/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L37) ___ @@ -43,7 +43,7 @@ NDKUserParams.nip05 #### Defined in -[src/user/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/index.ts#L11) +[src/user/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/index.ts#L11) ___ @@ -57,7 +57,7 @@ NDKUserParams.npub #### Defined in -[src/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L36) +[src/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L36) ___ @@ -71,4 +71,4 @@ NDKUserParams.relayUrls #### Defined in -[src/user/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/index.ts#L12) +[src/user/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/index.ts#L12) diff --git a/docs/interfaces/NDKCacheAdapter.md b/docs/interfaces/NDKCacheAdapter.md index ad9d8455..d66e5196 100644 --- a/docs/interfaces/NDKCacheAdapter.md +++ b/docs/interfaces/NDKCacheAdapter.md @@ -25,7 +25,7 @@ When this is false, the cache will be queried in addition to the relays. #### Defined in -[src/cache/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/cache/index.ts#L10) +[src/cache/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/cache/index.ts#L10) ## Methods @@ -45,7 +45,7 @@ When this is false, the cache will be queried in addition to the relays. #### Defined in -[src/cache/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/cache/index.ts#L12) +[src/cache/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/cache/index.ts#L12) ___ @@ -66,4 +66,4 @@ ___ #### Defined in -[src/cache/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/cache/index.ts#L13) +[src/cache/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/cache/index.ts#L13) diff --git a/docs/interfaces/NDKConstructorParams.md b/docs/interfaces/NDKConstructorParams.md index 4dfbbf17..1b34ab22 100644 --- a/docs/interfaces/NDKConstructorParams.md +++ b/docs/interfaces/NDKConstructorParams.md @@ -19,7 +19,7 @@ #### Defined in -[src/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L32) +[src/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L32) ___ @@ -29,7 +29,7 @@ ___ #### Defined in -[src/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L33) +[src/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L33) ___ @@ -39,7 +39,7 @@ ___ #### Defined in -[src/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L30) +[src/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L30) ___ @@ -49,4 +49,4 @@ ___ #### Defined in -[src/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/index.ts#L31) +[src/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L31) diff --git a/docs/interfaces/NDKFilterOptions.md b/docs/interfaces/NDKFilterOptions.md index feeda871..8ab9f3b5 100644 --- a/docs/interfaces/NDKFilterOptions.md +++ b/docs/interfaces/NDKFilterOptions.md @@ -16,4 +16,4 @@ #### Defined in -[src/subscription/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L13) +[src/subscription/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L13) diff --git a/docs/interfaces/NDKRelayConnectionStats.md b/docs/interfaces/NDKRelayConnectionStats.md index 0043cc2b..466949e9 100644 --- a/docs/interfaces/NDKRelayConnectionStats.md +++ b/docs/interfaces/NDKRelayConnectionStats.md @@ -21,7 +21,7 @@ The number of times a connection has been attempted. #### Defined in -[src/relay/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L22) +[src/relay/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L22) ___ @@ -33,7 +33,7 @@ The time the current connection was established in milliseconds. #### Defined in -[src/relay/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L37) +[src/relay/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L37) ___ @@ -45,7 +45,7 @@ The durations of the last 100 connections in milliseconds. #### Defined in -[src/relay/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L32) +[src/relay/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L32) ___ @@ -57,4 +57,4 @@ The number of times a connection has been successfully established. #### Defined in -[src/relay/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/relay/index.ts#L27) +[src/relay/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L27) diff --git a/docs/interfaces/NDKSubscriptionOptions.md b/docs/interfaces/NDKSubscriptionOptions.md index 5c8fda41..de77c03a 100644 --- a/docs/interfaces/NDKSubscriptionOptions.md +++ b/docs/interfaces/NDKSubscriptionOptions.md @@ -19,7 +19,7 @@ #### Defined in -[src/subscription/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L32) +[src/subscription/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L32) ___ @@ -29,7 +29,7 @@ ___ #### Defined in -[src/subscription/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L31) +[src/subscription/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L31) ___ @@ -42,7 +42,7 @@ delayed to allow similar filters to be grouped together. #### Defined in -[src/subscription/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L38) +[src/subscription/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L38) ___ @@ -58,4 +58,4 @@ The delay to use when grouping subscriptions, specified in milliseconds. #### Defined in -[src/subscription/index.ts:44](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L44) +[src/subscription/index.ts:44](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L44) diff --git a/docs/interfaces/NDKUserProfile.md b/docs/interfaces/NDKUserProfile.md index 875c5738..2d88e5b1 100644 --- a/docs/interfaces/NDKUserProfile.md +++ b/docs/interfaces/NDKUserProfile.md @@ -25,7 +25,7 @@ #### Defined in -[src/user/profile.ts:12](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/profile.ts#L12) +[src/user/profile.ts:12](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/profile.ts#L12) ___ @@ -35,7 +35,7 @@ ___ #### Defined in -[src/user/profile.ts:7](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/profile.ts#L7) +[src/user/profile.ts:7](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/profile.ts#L7) ___ @@ -45,7 +45,7 @@ ___ #### Defined in -[src/user/profile.ts:8](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/profile.ts#L8) +[src/user/profile.ts:8](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/profile.ts#L8) ___ @@ -55,7 +55,7 @@ ___ #### Defined in -[src/user/profile.ts:5](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/profile.ts#L5) +[src/user/profile.ts:5](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/profile.ts#L5) ___ @@ -65,7 +65,7 @@ ___ #### Defined in -[src/user/profile.ts:6](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/profile.ts#L6) +[src/user/profile.ts:6](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/profile.ts#L6) ___ @@ -75,7 +75,7 @@ ___ #### Defined in -[src/user/profile.ts:10](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/profile.ts#L10) +[src/user/profile.ts:10](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/profile.ts#L10) ___ @@ -85,7 +85,7 @@ ___ #### Defined in -[src/user/profile.ts:11](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/profile.ts#L11) +[src/user/profile.ts:11](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/profile.ts#L11) ___ @@ -95,7 +95,7 @@ ___ #### Defined in -[src/user/profile.ts:4](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/profile.ts#L4) +[src/user/profile.ts:4](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/profile.ts#L4) ___ @@ -105,7 +105,7 @@ ___ #### Defined in -[src/user/profile.ts:9](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/profile.ts#L9) +[src/user/profile.ts:9](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/profile.ts#L9) ___ @@ -115,4 +115,4 @@ ___ #### Defined in -[src/user/profile.ts:13](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/profile.ts#L13) +[src/user/profile.ts:13](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/profile.ts#L13) diff --git a/docs/interfaces/NDKZapInvoice.md b/docs/interfaces/NDKZapInvoice.md index d195d919..80a89765 100644 --- a/docs/interfaces/NDKZapInvoice.md +++ b/docs/interfaces/NDKZapInvoice.md @@ -22,7 +22,7 @@ #### Defined in -[src/zap/invoice.ts:10](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/zap/invoice.ts#L10) +[src/zap/invoice.ts:10](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/zap/invoice.ts#L10) ___ @@ -32,7 +32,7 @@ ___ #### Defined in -[src/zap/invoice.ts:11](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/zap/invoice.ts#L11) +[src/zap/invoice.ts:11](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/zap/invoice.ts#L11) ___ @@ -42,7 +42,7 @@ ___ #### Defined in -[src/zap/invoice.ts:5](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/zap/invoice.ts#L5) +[src/zap/invoice.ts:5](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/zap/invoice.ts#L5) ___ @@ -52,7 +52,7 @@ ___ #### Defined in -[src/zap/invoice.ts:8](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/zap/invoice.ts#L8) +[src/zap/invoice.ts:8](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/zap/invoice.ts#L8) ___ @@ -62,7 +62,7 @@ ___ #### Defined in -[src/zap/invoice.ts:9](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/zap/invoice.ts#L9) +[src/zap/invoice.ts:9](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/zap/invoice.ts#L9) ___ @@ -72,7 +72,7 @@ ___ #### Defined in -[src/zap/invoice.ts:7](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/zap/invoice.ts#L7) +[src/zap/invoice.ts:7](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/zap/invoice.ts#L7) ___ @@ -82,4 +82,4 @@ ___ #### Defined in -[src/zap/invoice.ts:6](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/zap/invoice.ts#L6) +[src/zap/invoice.ts:6](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/zap/invoice.ts#L6) diff --git a/docs/modules.md b/docs/modules.md index 30372afd..1be7d8f8 100644 --- a/docs/modules.md +++ b/docs/modules.md @@ -58,7 +58,7 @@ #### Defined in -[src/subscription/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L10) +[src/subscription/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L10) ## Variables @@ -70,7 +70,7 @@ Default subscription options. #### Defined in -[src/subscription/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L50) +[src/subscription/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L50) ## Functions @@ -91,7 +91,7 @@ Default subscription options. #### Defined in -[src/user/profile.ts:16](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/user/profile.ts#L16) +[src/user/profile.ts:16](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/profile.ts#L16) ___ @@ -114,7 +114,7 @@ relatively similar, and merge them. #### Defined in -[src/subscription/index.ts:348](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/subscription/index.ts#L348) +[src/subscription/index.ts:384](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L384) ___ @@ -134,4 +134,4 @@ ___ #### Defined in -[src/zap/invoice.ts:14](https://github.com/nostr-dev-kit/ndk/blob/2bb66fa/src/zap/invoice.ts#L14) +[src/zap/invoice.ts:14](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/zap/invoice.ts#L14) diff --git a/package.json b/package.json index 3b354c65..29ca1d15 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.1.1", + "version": "0.1.2", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", @@ -27,7 +27,7 @@ "lint": "eslint src/**/*.ts", "compile": "tsc", "prepare": "pnpm build", - "publish": "pnpm prepare && pnpm publish", + "publish": "pnpm prepare && npm publish", "pretest": "pnpm compile", "posttest": "pnpm lint" }, diff --git a/src/subscription/index.ts b/src/subscription/index.ts index bd0f68f0..2ab50427 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -1,5 +1,5 @@ import NDK from '../index.js'; -import {Filter as NostrFilter, Sub} from 'nostr-tools'; +import {Filter as NostrFilter, Sub, matchFilter} from 'nostr-tools'; import EventEmitter from 'eventemitter3'; import {NDKRelay} from '../relay'; import {NDKRelaySet} from '../relay/sets/index.js'; @@ -307,23 +307,57 @@ export class NDKSubscriptionGroup extends NDKSubscription { mergedFilters: this.filter }); - // forward events to each subscription - // TODO: This functions should only forward events to the - // specific subscription that it is for. + // forward events to the matching subscriptions this.on('event', this.forwardEvent); this.on('event:dup', this.forwardEventDup); this.on('eose', this.forwardEose); this.on('close', this.forwardClose); } + private isEventForSubscription(event: NDKEvent, subscription: NDKSubscription): boolean { + const {filter} = subscription; + + if (!filter) return false; + + return matchFilter(filter, event.rawEvent() as any); + + // check if there is a filter whose key begins with '#'; if there is, check if the event has a tag with the same key on the first position + // of the tags array of arrays and the same value in the second position + // for (const key in filter) { + // if (key === 'kinds' && filter.kinds!.includes(event.kind!)) return false; + // else if (key === 'authors' && filter.authors!.includes(event.pubkey)) return false; + // else if (key.startsWith('#')) { + // const tagKey = key.slice(1); + // const tagValue = filter[key]; + + // if (event.tags) { + // for (const tag of event.tags) { + // if (tag[0] === tagKey && tag[1] === tagValue) { + // return false; + // } + // } + // } + // } + + // return true; + } + private forwardEvent(event: NDKEvent, relay: NDKRelay) { for (const subscription of this.subscriptions) { + if (!this.isEventForSubscription(event, subscription)) { + continue; + } + subscription.emit('event', event, relay, subscription); } } private forwardEventDup(event: NDKEvent, relay: NDKRelay, timeSinceFirstSeen: number) { for (const subscription of this.subscriptions) { + if (!this.isEventForSubscription(event, subscription)) { + continue; + } + subscription.emit('event:dup', event, relay, timeSinceFirstSeen, subscription); } } From 32b544df111c7af1bb820d96b4a7f551edb6dbfd Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 18 Apr 2023 20:49:43 +0300 Subject: [PATCH 066/773] allow adding extra tags to zaps --- docs/classes/NDKEvent.md | 57 +++++++++++----------- docs/classes/NDKNip07Signer.md | 8 +-- docs/classes/NDKPrivateKeySigner.md | 12 ++--- docs/classes/NDKRelay.md | 26 +++++----- docs/classes/NDKRelaySet.md | 12 ++--- docs/classes/NDKSubscription.md | 24 ++++----- docs/classes/NDKSubscriptionGroup.md | 24 ++++----- docs/classes/NDKUser.md | 20 ++++---- docs/classes/default.md | 26 +++++----- docs/enums/NDKKind.md | 56 ++++++++++----------- docs/enums/NDKRelayStatus.md | 10 ++-- docs/enums/NDKSubscriptionCacheUsage.md | 8 +-- docs/interfaces/GetUserParams.md | 8 +-- docs/interfaces/NDKCacheAdapter.md | 6 +-- docs/interfaces/NDKConstructorParams.md | 8 +-- docs/interfaces/NDKFilterOptions.md | 2 +- docs/interfaces/NDKRelayConnectionStats.md | 8 +-- docs/interfaces/NDKSubscriptionOptions.md | 8 +-- docs/interfaces/NDKUserProfile.md | 20 ++++---- docs/interfaces/NDKZapInvoice.md | 14 +++--- docs/modules.md | 10 ++-- package.json | 2 +- src/events/index.ts | 8 ++- src/zap/index.ts | 14 ++++-- 24 files changed, 200 insertions(+), 191 deletions(-) diff --git a/docs/classes/NDKEvent.md b/docs/classes/NDKEvent.md index 8f63fff8..93a3e80d 100644 --- a/docs/classes/NDKEvent.md +++ b/docs/classes/NDKEvent.md @@ -61,7 +61,7 @@ EventEmitter.constructor #### Defined in -[src/events/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L35) +[src/events/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L35) ## Properties @@ -71,7 +71,7 @@ EventEmitter.constructor #### Defined in -[src/events/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L27) +[src/events/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L27) ___ @@ -81,7 +81,7 @@ ___ #### Defined in -[src/events/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L26) +[src/events/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L26) ___ @@ -105,7 +105,7 @@ ___ #### Defined in -[src/events/index.ts:97](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L97) +[src/events/index.ts:97](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L97) ___ @@ -115,7 +115,7 @@ ___ #### Defined in -[src/events/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L31) +[src/events/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L31) ___ @@ -139,7 +139,7 @@ ___ #### Defined in -[src/events/index.ts:96](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L96) +[src/events/index.ts:96](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L96) ___ @@ -163,7 +163,7 @@ ___ #### Defined in -[src/events/index.ts:95](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L95) +[src/events/index.ts:95](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L95) ___ @@ -173,7 +173,7 @@ ___ #### Defined in -[src/events/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L30) +[src/events/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L30) ___ @@ -183,7 +183,7 @@ ___ #### Defined in -[src/events/index.ts:25](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L25) +[src/events/index.ts:25](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L25) ___ @@ -193,7 +193,7 @@ ___ #### Defined in -[src/events/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L33) +[src/events/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L33) ___ @@ -203,7 +203,7 @@ ___ #### Defined in -[src/events/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L32) +[src/events/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L32) ___ @@ -213,7 +213,7 @@ ___ #### Defined in -[src/events/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L28) +[src/events/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L28) ___ @@ -223,7 +223,7 @@ ___ #### Defined in -[src/events/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L29) +[src/events/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L29) ## Methods @@ -245,7 +245,7 @@ Get all tags with the given name #### Defined in -[src/events/index.ts:102](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L102) +[src/events/index.ts:102](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L102) ___ @@ -259,7 +259,7 @@ ___ #### Defined in -[src/events/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L119) +[src/events/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L119) ___ @@ -275,7 +275,7 @@ Returns the event as is. #### Defined in -[src/events/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L51) +[src/events/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L51) ___ @@ -291,7 +291,7 @@ the `d` tag of a parameterized replaceable event #### Defined in -[src/events/index.ts:147](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L147) +[src/events/index.ts:147](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L147) ___ @@ -305,7 +305,7 @@ ___ #### Defined in -[src/events/index.ts:110](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L110) +[src/events/index.ts:110](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L110) ___ @@ -321,7 +321,7 @@ the id of the event, or if it's a parameterized event, the id of the event with #### Defined in -[src/events/index.ts:161](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L161) +[src/events/index.ts:161](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L161) ___ @@ -347,7 +347,7 @@ event = new NDKEvent(ndk, { kind: 30000, pubkey: 'pubkey', tags: [ ["d", "d-code #### Defined in -[src/events/index.ts:181](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L181) +[src/events/index.ts:181](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L181) ___ @@ -370,7 +370,7 @@ when possible. #### Defined in -[src/events/index.ts:66](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L66) +[src/events/index.ts:66](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L66) ___ @@ -384,22 +384,23 @@ ___ #### Defined in -[src/events/index.ts:106](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L106) +[src/events/index.ts:106](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L106) ___ ### zap -▸ **zap**(`amount`, `comment?`): `Promise`<``null`` \| `string`\> +▸ **zap**(`amount`, `comment?`, `extraTags?`): `Promise`<``null`` \| `string`\> Create a zap request for an existing event #### Parameters -| Name | Type | -| :------ | :------ | -| `amount` | `number` | -| `comment?` | `string` | +| Name | Type | Description | +| :------ | :------ | :------ | +| `amount` | `number` | The amount to zap | +| `comment?` | `string` | A comment to add to the zap request | +| `extraTags?` | `NDKTag`[] | Extra tags to add to the zap request | #### Returns @@ -407,4 +408,4 @@ Create a zap request for an existing event #### Defined in -[src/events/index.ts:193](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/index.ts#L193) +[src/events/index.ts:197](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L197) diff --git a/docs/classes/NDKNip07Signer.md b/docs/classes/NDKNip07Signer.md index 71903730..92fcdfd5 100644 --- a/docs/classes/NDKNip07Signer.md +++ b/docs/classes/NDKNip07Signer.md @@ -29,7 +29,7 @@ with a NIP-07 browser extension (e.g., getalby, nos2x). #### Defined in -[src/signers/nip07/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/signers/nip07/index.ts#L12) +[src/signers/nip07/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/signers/nip07/index.ts#L12) ## Methods @@ -47,7 +47,7 @@ NDKSigner.blockUntilReady #### Defined in -[src/signers/nip07/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/signers/nip07/index.ts#L18) +[src/signers/nip07/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/signers/nip07/index.ts#L18) ___ @@ -79,7 +79,7 @@ NDKSigner.sign #### Defined in -[src/signers/nip07/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/signers/nip07/index.ts#L47) +[src/signers/nip07/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/signers/nip07/index.ts#L47) ___ @@ -101,4 +101,4 @@ NDKSigner.user #### Defined in -[src/signers/nip07/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/signers/nip07/index.ts#L33) +[src/signers/nip07/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/signers/nip07/index.ts#L33) diff --git a/docs/classes/NDKPrivateKeySigner.md b/docs/classes/NDKPrivateKeySigner.md index 1bf5e625..11f59bad 100644 --- a/docs/classes/NDKPrivateKeySigner.md +++ b/docs/classes/NDKPrivateKeySigner.md @@ -37,7 +37,7 @@ #### Defined in -[src/signers/private-key/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/signers/private-key/index.ts#L11) +[src/signers/private-key/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/signers/private-key/index.ts#L11) ## Properties @@ -47,7 +47,7 @@ #### Defined in -[src/signers/private-key/index.ts:9](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/signers/private-key/index.ts#L9) +[src/signers/private-key/index.ts:9](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/signers/private-key/index.ts#L9) ## Methods @@ -65,7 +65,7 @@ NDKSigner.blockUntilReady #### Defined in -[src/signers/private-key/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/signers/private-key/index.ts#L23) +[src/signers/private-key/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/signers/private-key/index.ts#L23) ___ @@ -89,7 +89,7 @@ NDKSigner.sign #### Defined in -[src/signers/private-key/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/signers/private-key/index.ts#L35) +[src/signers/private-key/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/signers/private-key/index.ts#L35) ___ @@ -107,7 +107,7 @@ NDKSigner.user #### Defined in -[src/signers/private-key/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/signers/private-key/index.ts#L30) +[src/signers/private-key/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/signers/private-key/index.ts#L30) ___ @@ -121,4 +121,4 @@ ___ #### Defined in -[src/signers/private-key/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/signers/private-key/index.ts#L18) +[src/signers/private-key/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/signers/private-key/index.ts#L18) diff --git a/docs/classes/NDKRelay.md b/docs/classes/NDKRelay.md index 4d9aca51..56350a99 100644 --- a/docs/classes/NDKRelay.md +++ b/docs/classes/NDKRelay.md @@ -75,7 +75,7 @@ EventEmitter.constructor #### Defined in -[src/relay/index.ts:63](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L63) +[src/relay/index.ts:63](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L63) ## Properties @@ -87,7 +87,7 @@ Active subscriptions this relay is connected to #### Defined in -[src/relay/index.ts:61](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L61) +[src/relay/index.ts:61](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L61) ___ @@ -97,7 +97,7 @@ ___ #### Defined in -[src/relay/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L56) +[src/relay/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L56) ___ @@ -107,7 +107,7 @@ ___ #### Defined in -[src/relay/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L51) +[src/relay/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L51) ___ @@ -117,7 +117,7 @@ ___ #### Defined in -[src/relay/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L50) +[src/relay/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L50) ## Accessors @@ -133,7 +133,7 @@ Returns the connection stats. #### Defined in -[src/relay/index.ts:234](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L234) +[src/relay/index.ts:234](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L234) ___ @@ -147,7 +147,7 @@ ___ #### Defined in -[src/relay/index.ts:121](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L121) +[src/relay/index.ts:121](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L121) ## Methods @@ -163,7 +163,7 @@ Connects to the relay. #### Defined in -[src/relay/index.ts:128](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L128) +[src/relay/index.ts:128](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L128) ___ @@ -179,7 +179,7 @@ Disconnects from the relay. #### Defined in -[src/relay/index.ts:139](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L139) +[src/relay/index.ts:139](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L139) ___ @@ -199,7 +199,7 @@ ___ #### Defined in -[src/relay/index.ts:144](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L144) +[src/relay/index.ts:144](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L144) ___ @@ -221,7 +221,7 @@ Publishes an event to the relay. #### Defined in -[src/relay/index.ts:191](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L191) +[src/relay/index.ts:191](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L191) ___ @@ -244,7 +244,7 @@ wasn't the fastest one. #### Defined in -[src/relay/index.ts:202](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L202) +[src/relay/index.ts:202](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L202) ___ @@ -266,4 +266,4 @@ Subscribes to a subscription. #### Defined in -[src/relay/index.ts:164](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L164) +[src/relay/index.ts:164](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L164) diff --git a/docs/classes/NDKRelaySet.md b/docs/classes/NDKRelaySet.md index 8abdad65..00b2fd75 100644 --- a/docs/classes/NDKRelaySet.md +++ b/docs/classes/NDKRelaySet.md @@ -40,7 +40,7 @@ Requests to relays should be sent through this interface. #### Defined in -[src/relay/sets/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/sets/index.ts#L20) +[src/relay/sets/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/sets/index.ts#L20) ## Properties @@ -50,7 +50,7 @@ Requests to relays should be sent through this interface. #### Defined in -[src/relay/sets/index.ts:16](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/sets/index.ts#L16) +[src/relay/sets/index.ts:16](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/sets/index.ts#L16) ## Methods @@ -66,7 +66,7 @@ Calculates an ID of this specific combination of relays. #### Defined in -[src/relay/sets/index.ts:34](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/sets/index.ts#L34) +[src/relay/sets/index.ts:34](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/sets/index.ts#L34) ___ @@ -86,7 +86,7 @@ ___ #### Defined in -[src/relay/sets/index.ts:108](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/sets/index.ts#L108) +[src/relay/sets/index.ts:108](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/sets/index.ts#L108) ___ @@ -100,7 +100,7 @@ ___ #### Defined in -[src/relay/sets/index.ts:118](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/sets/index.ts#L118) +[src/relay/sets/index.ts:118](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/sets/index.ts#L118) ___ @@ -122,4 +122,4 @@ Add a subscription to this relay set #### Defined in -[src/relay/sets/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/sets/index.ts#L43) +[src/relay/sets/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/sets/index.ts#L43) diff --git a/docs/classes/NDKSubscription.md b/docs/classes/NDKSubscription.md index 8545ccfd..b4a71574 100644 --- a/docs/classes/NDKSubscription.md +++ b/docs/classes/NDKSubscription.md @@ -103,7 +103,7 @@ EventEmitter.constructor #### Defined in -[src/subscription/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L88) +[src/subscription/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L88) ## Properties @@ -113,7 +113,7 @@ EventEmitter.constructor #### Defined in -[src/subscription/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L81) +[src/subscription/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L81) ___ @@ -123,7 +123,7 @@ ___ #### Defined in -[src/subscription/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L84) +[src/subscription/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L84) ___ @@ -133,7 +133,7 @@ ___ #### Defined in -[src/subscription/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L82) +[src/subscription/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L82) ___ @@ -143,7 +143,7 @@ ___ #### Defined in -[src/subscription/index.ts:83](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L83) +[src/subscription/index.ts:83](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L83) ___ @@ -153,7 +153,7 @@ ___ #### Defined in -[src/subscription/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L85) +[src/subscription/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L85) ___ @@ -163,7 +163,7 @@ ___ #### Defined in -[src/subscription/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L80) +[src/subscription/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L80) ## Methods @@ -183,7 +183,7 @@ ___ #### Defined in -[src/subscription/index.ts:251](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L251) +[src/subscription/index.ts:251](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L251) ___ @@ -207,7 +207,7 @@ Called when an event is received from a relay or the cache #### Defined in -[src/subscription/index.ts:222](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L222) +[src/subscription/index.ts:222](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L222) ___ @@ -225,7 +225,7 @@ The groupable ID, or null if the subscription is not groupable. #### Defined in -[src/subscription/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L119) +[src/subscription/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L119) ___ @@ -242,7 +242,7 @@ after creating a subscription. #### Defined in -[src/subscription/index.ts:153](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L153) +[src/subscription/index.ts:153](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L153) ___ @@ -256,4 +256,4 @@ ___ #### Defined in -[src/subscription/index.ts:185](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L185) +[src/subscription/index.ts:185](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L185) diff --git a/docs/classes/NDKSubscriptionGroup.md b/docs/classes/NDKSubscriptionGroup.md index 4fe854dc..fdca7b4c 100644 --- a/docs/classes/NDKSubscriptionGroup.md +++ b/docs/classes/NDKSubscriptionGroup.md @@ -54,7 +54,7 @@ Events emitted from the group will be emitted from each subscription. #### Defined in -[src/subscription/index.ts:288](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L288) +[src/subscription/index.ts:288](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L288) ## Properties @@ -68,7 +68,7 @@ Events emitted from the group will be emitted from each subscription. #### Defined in -[src/subscription/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L81) +[src/subscription/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L81) ___ @@ -82,7 +82,7 @@ ___ #### Defined in -[src/subscription/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L84) +[src/subscription/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L84) ___ @@ -96,7 +96,7 @@ ___ #### Defined in -[src/subscription/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L82) +[src/subscription/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L82) ___ @@ -110,7 +110,7 @@ ___ #### Defined in -[src/subscription/index.ts:83](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L83) +[src/subscription/index.ts:83](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L83) ___ @@ -124,7 +124,7 @@ ___ #### Defined in -[src/subscription/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L85) +[src/subscription/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L85) ___ @@ -138,7 +138,7 @@ ___ #### Defined in -[src/subscription/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L80) +[src/subscription/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L80) ## Methods @@ -162,7 +162,7 @@ ___ #### Defined in -[src/subscription/index.ts:251](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L251) +[src/subscription/index.ts:251](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L251) ___ @@ -190,7 +190,7 @@ Called when an event is received from a relay or the cache #### Defined in -[src/subscription/index.ts:222](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L222) +[src/subscription/index.ts:222](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L222) ___ @@ -212,7 +212,7 @@ The groupable ID, or null if the subscription is not groupable. #### Defined in -[src/subscription/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L119) +[src/subscription/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L119) ___ @@ -233,7 +233,7 @@ after creating a subscription. #### Defined in -[src/subscription/index.ts:153](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L153) +[src/subscription/index.ts:153](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L153) ___ @@ -251,4 +251,4 @@ ___ #### Defined in -[src/subscription/index.ts:185](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L185) +[src/subscription/index.ts:185](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L185) diff --git a/docs/classes/NDKUser.md b/docs/classes/NDKUser.md index 36b8b3d9..73a61343 100644 --- a/docs/classes/NDKUser.md +++ b/docs/classes/NDKUser.md @@ -39,7 +39,7 @@ Represents a pubkey. #### Defined in -[src/user/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/index.ts#L24) +[src/user/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/index.ts#L24) ## Properties @@ -65,7 +65,7 @@ Returns a set of users that this user follows. #### Defined in -[src/user/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/index.ts#L80) +[src/user/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/index.ts#L80) ___ @@ -75,7 +75,7 @@ ___ #### Defined in -[src/user/index.ts:19](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/index.ts#L19) +[src/user/index.ts:19](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/index.ts#L19) ___ @@ -85,7 +85,7 @@ ___ #### Defined in -[src/user/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/index.ts#L21) +[src/user/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/index.ts#L21) ___ @@ -95,7 +95,7 @@ ___ #### Defined in -[src/user/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/index.ts#L20) +[src/user/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/index.ts#L20) ___ @@ -105,7 +105,7 @@ ___ #### Defined in -[src/user/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/index.ts#L22) +[src/user/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/index.ts#L22) ## Methods @@ -125,7 +125,7 @@ ___ #### Defined in -[src/user/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/index.ts#L51) +[src/user/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/index.ts#L51) ___ @@ -139,7 +139,7 @@ ___ #### Defined in -[src/user/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/index.ts#L47) +[src/user/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/index.ts#L47) ___ @@ -153,7 +153,7 @@ ___ #### Defined in -[src/user/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/index.ts#L82) +[src/user/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/index.ts#L82) ___ @@ -173,4 +173,4 @@ ___ #### Defined in -[src/user/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/index.ts#L36) +[src/user/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/index.ts#L36) diff --git a/docs/classes/default.md b/docs/classes/default.md index bb6bc35b..def2283b 100644 --- a/docs/classes/default.md +++ b/docs/classes/default.md @@ -50,7 +50,7 @@ EventEmitter.constructor #### Defined in -[src/index.ts:48](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L48) +[src/index.ts:48](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L48) ## Properties @@ -60,7 +60,7 @@ EventEmitter.constructor #### Defined in -[src/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L43) +[src/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L43) ___ @@ -70,7 +70,7 @@ ___ #### Defined in -[src/index.ts:44](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L44) +[src/index.ts:44](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L44) ___ @@ -80,7 +80,7 @@ ___ #### Defined in -[src/index.ts:46](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L46) +[src/index.ts:46](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L46) ___ @@ -90,7 +90,7 @@ ___ #### Defined in -[src/index.ts:41](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L41) +[src/index.ts:41](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L41) ___ @@ -100,7 +100,7 @@ ___ #### Defined in -[src/index.ts:42](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L42) +[src/index.ts:42](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L42) ## Methods @@ -116,7 +116,7 @@ Ensures that a signer is available to sign an event. #### Defined in -[src/index.ts:141](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L141) +[src/index.ts:141](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L141) ___ @@ -139,7 +139,7 @@ If the timeout is reached, the connection will be continued to be established in #### Defined in -[src/index.ts:68](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L68) +[src/index.ts:68](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L68) ___ @@ -162,7 +162,7 @@ Fetch a single event #### Defined in -[src/index.ts:104](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L104) +[src/index.ts:104](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L104) ___ @@ -185,7 +185,7 @@ Fetch events #### Defined in -[src/index.ts:117](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L117) +[src/index.ts:117](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L117) ___ @@ -207,7 +207,7 @@ Get a NDKUser object #### Defined in -[src/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L79) +[src/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L79) ___ @@ -227,7 +227,7 @@ ___ #### Defined in -[src/index.ts:95](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L95) +[src/index.ts:95](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L95) ___ @@ -248,4 +248,4 @@ ___ #### Defined in -[src/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L85) +[src/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L85) diff --git a/docs/enums/NDKKind.md b/docs/enums/NDKKind.md index f6d5c57a..3f6ee9c5 100644 --- a/docs/enums/NDKKind.md +++ b/docs/enums/NDKKind.md @@ -43,7 +43,7 @@ #### Defined in -[src/events/kind.ts:31](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L31) +[src/events/kind.ts:31](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L31) ___ @@ -53,7 +53,7 @@ ___ #### Defined in -[src/events/kind.ts:30](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L30) +[src/events/kind.ts:30](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L30) ___ @@ -63,7 +63,7 @@ ___ #### Defined in -[src/events/kind.ts:12](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L12) +[src/events/kind.ts:12](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L12) ___ @@ -73,7 +73,7 @@ ___ #### Defined in -[src/events/kind.ts:29](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L29) +[src/events/kind.ts:29](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L29) ___ @@ -83,7 +83,7 @@ ___ #### Defined in -[src/events/kind.ts:27](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L27) +[src/events/kind.ts:27](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L27) ___ @@ -93,7 +93,7 @@ ___ #### Defined in -[src/events/kind.ts:26](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L26) +[src/events/kind.ts:26](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L26) ___ @@ -103,7 +103,7 @@ ___ #### Defined in -[src/events/kind.ts:13](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L13) +[src/events/kind.ts:13](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L13) ___ @@ -113,7 +113,7 @@ ___ #### Defined in -[src/events/kind.ts:16](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L16) +[src/events/kind.ts:16](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L16) ___ @@ -123,7 +123,7 @@ ___ #### Defined in -[src/events/kind.ts:15](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L15) +[src/events/kind.ts:15](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L15) ___ @@ -133,7 +133,7 @@ ___ #### Defined in -[src/events/kind.ts:14](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L14) +[src/events/kind.ts:14](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L14) ___ @@ -143,7 +143,7 @@ ___ #### Defined in -[src/events/kind.ts:17](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L17) +[src/events/kind.ts:17](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L17) ___ @@ -153,7 +153,7 @@ ___ #### Defined in -[src/events/kind.ts:24](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L24) +[src/events/kind.ts:24](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L24) ___ @@ -163,7 +163,7 @@ ___ #### Defined in -[src/events/kind.ts:7](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L7) +[src/events/kind.ts:7](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L7) ___ @@ -173,7 +173,7 @@ ___ #### Defined in -[src/events/kind.ts:8](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L8) +[src/events/kind.ts:8](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L8) ___ @@ -183,7 +183,7 @@ ___ #### Defined in -[src/events/kind.ts:9](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L9) +[src/events/kind.ts:9](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L9) ___ @@ -193,7 +193,7 @@ ___ #### Defined in -[src/events/kind.ts:4](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L4) +[src/events/kind.ts:4](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L4) ___ @@ -203,7 +203,7 @@ ___ #### Defined in -[src/events/kind.ts:21](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L21) +[src/events/kind.ts:21](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L21) ___ @@ -213,7 +213,7 @@ ___ #### Defined in -[src/events/kind.ts:25](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L25) +[src/events/kind.ts:25](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L25) ___ @@ -223,7 +223,7 @@ ___ #### Defined in -[src/events/kind.ts:22](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L22) +[src/events/kind.ts:22](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L22) ___ @@ -233,7 +233,7 @@ ___ #### Defined in -[src/events/kind.ts:28](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L28) +[src/events/kind.ts:28](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L28) ___ @@ -243,7 +243,7 @@ ___ #### Defined in -[src/events/kind.ts:11](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L11) +[src/events/kind.ts:11](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L11) ___ @@ -253,7 +253,7 @@ ___ #### Defined in -[src/events/kind.ts:6](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L6) +[src/events/kind.ts:6](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L6) ___ @@ -263,7 +263,7 @@ ___ #### Defined in -[src/events/kind.ts:23](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L23) +[src/events/kind.ts:23](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L23) ___ @@ -273,7 +273,7 @@ ___ #### Defined in -[src/events/kind.ts:18](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L18) +[src/events/kind.ts:18](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L18) ___ @@ -283,7 +283,7 @@ ___ #### Defined in -[src/events/kind.ts:10](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L10) +[src/events/kind.ts:10](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L10) ___ @@ -293,7 +293,7 @@ ___ #### Defined in -[src/events/kind.ts:5](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L5) +[src/events/kind.ts:5](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L5) ___ @@ -303,7 +303,7 @@ ___ #### Defined in -[src/events/kind.ts:20](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L20) +[src/events/kind.ts:20](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L20) ___ @@ -313,4 +313,4 @@ ___ #### Defined in -[src/events/kind.ts:19](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/events/kind.ts#L19) +[src/events/kind.ts:19](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L19) diff --git a/docs/enums/NDKRelayStatus.md b/docs/enums/NDKRelayStatus.md index 244f137b..451151a9 100644 --- a/docs/enums/NDKRelayStatus.md +++ b/docs/enums/NDKRelayStatus.md @@ -20,7 +20,7 @@ #### Defined in -[src/relay/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L12) +[src/relay/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L12) ___ @@ -30,7 +30,7 @@ ___ #### Defined in -[src/relay/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L11) +[src/relay/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L11) ___ @@ -40,7 +40,7 @@ ___ #### Defined in -[src/relay/index.ts:14](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L14) +[src/relay/index.ts:14](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L14) ___ @@ -50,7 +50,7 @@ ___ #### Defined in -[src/relay/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L13) +[src/relay/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L13) ___ @@ -60,4 +60,4 @@ ___ #### Defined in -[src/relay/index.ts:15](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L15) +[src/relay/index.ts:15](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L15) diff --git a/docs/enums/NDKSubscriptionCacheUsage.md b/docs/enums/NDKSubscriptionCacheUsage.md index ce902c2d..df8cb3eb 100644 --- a/docs/enums/NDKSubscriptionCacheUsage.md +++ b/docs/enums/NDKSubscriptionCacheUsage.md @@ -19,7 +19,7 @@ #### Defined in -[src/subscription/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L21) +[src/subscription/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L21) ___ @@ -29,7 +29,7 @@ ___ #### Defined in -[src/subscription/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L18) +[src/subscription/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L18) ___ @@ -39,7 +39,7 @@ ___ #### Defined in -[src/subscription/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L27) +[src/subscription/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L27) ___ @@ -49,4 +49,4 @@ ___ #### Defined in -[src/subscription/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L24) +[src/subscription/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L24) diff --git a/docs/interfaces/GetUserParams.md b/docs/interfaces/GetUserParams.md index 02d5da8e..9324f549 100644 --- a/docs/interfaces/GetUserParams.md +++ b/docs/interfaces/GetUserParams.md @@ -29,7 +29,7 @@ NDKUserParams.hexpubkey #### Defined in -[src/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L37) +[src/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L37) ___ @@ -43,7 +43,7 @@ NDKUserParams.nip05 #### Defined in -[src/user/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/index.ts#L11) +[src/user/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/index.ts#L11) ___ @@ -57,7 +57,7 @@ NDKUserParams.npub #### Defined in -[src/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L36) +[src/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L36) ___ @@ -71,4 +71,4 @@ NDKUserParams.relayUrls #### Defined in -[src/user/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/index.ts#L12) +[src/user/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/index.ts#L12) diff --git a/docs/interfaces/NDKCacheAdapter.md b/docs/interfaces/NDKCacheAdapter.md index d66e5196..8e9e9f93 100644 --- a/docs/interfaces/NDKCacheAdapter.md +++ b/docs/interfaces/NDKCacheAdapter.md @@ -25,7 +25,7 @@ When this is false, the cache will be queried in addition to the relays. #### Defined in -[src/cache/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/cache/index.ts#L10) +[src/cache/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/cache/index.ts#L10) ## Methods @@ -45,7 +45,7 @@ When this is false, the cache will be queried in addition to the relays. #### Defined in -[src/cache/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/cache/index.ts#L12) +[src/cache/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/cache/index.ts#L12) ___ @@ -66,4 +66,4 @@ ___ #### Defined in -[src/cache/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/cache/index.ts#L13) +[src/cache/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/cache/index.ts#L13) diff --git a/docs/interfaces/NDKConstructorParams.md b/docs/interfaces/NDKConstructorParams.md index 1b34ab22..98833d1f 100644 --- a/docs/interfaces/NDKConstructorParams.md +++ b/docs/interfaces/NDKConstructorParams.md @@ -19,7 +19,7 @@ #### Defined in -[src/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L32) +[src/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L32) ___ @@ -29,7 +29,7 @@ ___ #### Defined in -[src/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L33) +[src/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L33) ___ @@ -39,7 +39,7 @@ ___ #### Defined in -[src/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L30) +[src/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L30) ___ @@ -49,4 +49,4 @@ ___ #### Defined in -[src/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/index.ts#L31) +[src/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L31) diff --git a/docs/interfaces/NDKFilterOptions.md b/docs/interfaces/NDKFilterOptions.md index 8ab9f3b5..a181ea29 100644 --- a/docs/interfaces/NDKFilterOptions.md +++ b/docs/interfaces/NDKFilterOptions.md @@ -16,4 +16,4 @@ #### Defined in -[src/subscription/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L13) +[src/subscription/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L13) diff --git a/docs/interfaces/NDKRelayConnectionStats.md b/docs/interfaces/NDKRelayConnectionStats.md index 466949e9..98c307d6 100644 --- a/docs/interfaces/NDKRelayConnectionStats.md +++ b/docs/interfaces/NDKRelayConnectionStats.md @@ -21,7 +21,7 @@ The number of times a connection has been attempted. #### Defined in -[src/relay/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L22) +[src/relay/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L22) ___ @@ -33,7 +33,7 @@ The time the current connection was established in milliseconds. #### Defined in -[src/relay/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L37) +[src/relay/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L37) ___ @@ -45,7 +45,7 @@ The durations of the last 100 connections in milliseconds. #### Defined in -[src/relay/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L32) +[src/relay/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L32) ___ @@ -57,4 +57,4 @@ The number of times a connection has been successfully established. #### Defined in -[src/relay/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/relay/index.ts#L27) +[src/relay/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L27) diff --git a/docs/interfaces/NDKSubscriptionOptions.md b/docs/interfaces/NDKSubscriptionOptions.md index de77c03a..a33da71b 100644 --- a/docs/interfaces/NDKSubscriptionOptions.md +++ b/docs/interfaces/NDKSubscriptionOptions.md @@ -19,7 +19,7 @@ #### Defined in -[src/subscription/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L32) +[src/subscription/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L32) ___ @@ -29,7 +29,7 @@ ___ #### Defined in -[src/subscription/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L31) +[src/subscription/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L31) ___ @@ -42,7 +42,7 @@ delayed to allow similar filters to be grouped together. #### Defined in -[src/subscription/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L38) +[src/subscription/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L38) ___ @@ -58,4 +58,4 @@ The delay to use when grouping subscriptions, specified in milliseconds. #### Defined in -[src/subscription/index.ts:44](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L44) +[src/subscription/index.ts:44](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L44) diff --git a/docs/interfaces/NDKUserProfile.md b/docs/interfaces/NDKUserProfile.md index 2d88e5b1..84066f18 100644 --- a/docs/interfaces/NDKUserProfile.md +++ b/docs/interfaces/NDKUserProfile.md @@ -25,7 +25,7 @@ #### Defined in -[src/user/profile.ts:12](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/profile.ts#L12) +[src/user/profile.ts:12](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/profile.ts#L12) ___ @@ -35,7 +35,7 @@ ___ #### Defined in -[src/user/profile.ts:7](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/profile.ts#L7) +[src/user/profile.ts:7](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/profile.ts#L7) ___ @@ -45,7 +45,7 @@ ___ #### Defined in -[src/user/profile.ts:8](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/profile.ts#L8) +[src/user/profile.ts:8](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/profile.ts#L8) ___ @@ -55,7 +55,7 @@ ___ #### Defined in -[src/user/profile.ts:5](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/profile.ts#L5) +[src/user/profile.ts:5](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/profile.ts#L5) ___ @@ -65,7 +65,7 @@ ___ #### Defined in -[src/user/profile.ts:6](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/profile.ts#L6) +[src/user/profile.ts:6](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/profile.ts#L6) ___ @@ -75,7 +75,7 @@ ___ #### Defined in -[src/user/profile.ts:10](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/profile.ts#L10) +[src/user/profile.ts:10](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/profile.ts#L10) ___ @@ -85,7 +85,7 @@ ___ #### Defined in -[src/user/profile.ts:11](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/profile.ts#L11) +[src/user/profile.ts:11](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/profile.ts#L11) ___ @@ -95,7 +95,7 @@ ___ #### Defined in -[src/user/profile.ts:4](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/profile.ts#L4) +[src/user/profile.ts:4](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/profile.ts#L4) ___ @@ -105,7 +105,7 @@ ___ #### Defined in -[src/user/profile.ts:9](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/profile.ts#L9) +[src/user/profile.ts:9](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/profile.ts#L9) ___ @@ -115,4 +115,4 @@ ___ #### Defined in -[src/user/profile.ts:13](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/profile.ts#L13) +[src/user/profile.ts:13](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/profile.ts#L13) diff --git a/docs/interfaces/NDKZapInvoice.md b/docs/interfaces/NDKZapInvoice.md index 80a89765..2fa146a1 100644 --- a/docs/interfaces/NDKZapInvoice.md +++ b/docs/interfaces/NDKZapInvoice.md @@ -22,7 +22,7 @@ #### Defined in -[src/zap/invoice.ts:10](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/zap/invoice.ts#L10) +[src/zap/invoice.ts:10](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/zap/invoice.ts#L10) ___ @@ -32,7 +32,7 @@ ___ #### Defined in -[src/zap/invoice.ts:11](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/zap/invoice.ts#L11) +[src/zap/invoice.ts:11](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/zap/invoice.ts#L11) ___ @@ -42,7 +42,7 @@ ___ #### Defined in -[src/zap/invoice.ts:5](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/zap/invoice.ts#L5) +[src/zap/invoice.ts:5](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/zap/invoice.ts#L5) ___ @@ -52,7 +52,7 @@ ___ #### Defined in -[src/zap/invoice.ts:8](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/zap/invoice.ts#L8) +[src/zap/invoice.ts:8](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/zap/invoice.ts#L8) ___ @@ -62,7 +62,7 @@ ___ #### Defined in -[src/zap/invoice.ts:9](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/zap/invoice.ts#L9) +[src/zap/invoice.ts:9](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/zap/invoice.ts#L9) ___ @@ -72,7 +72,7 @@ ___ #### Defined in -[src/zap/invoice.ts:7](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/zap/invoice.ts#L7) +[src/zap/invoice.ts:7](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/zap/invoice.ts#L7) ___ @@ -82,4 +82,4 @@ ___ #### Defined in -[src/zap/invoice.ts:6](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/zap/invoice.ts#L6) +[src/zap/invoice.ts:6](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/zap/invoice.ts#L6) diff --git a/docs/modules.md b/docs/modules.md index 1be7d8f8..32dd88df 100644 --- a/docs/modules.md +++ b/docs/modules.md @@ -58,7 +58,7 @@ #### Defined in -[src/subscription/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L10) +[src/subscription/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L10) ## Variables @@ -70,7 +70,7 @@ Default subscription options. #### Defined in -[src/subscription/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L50) +[src/subscription/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L50) ## Functions @@ -91,7 +91,7 @@ Default subscription options. #### Defined in -[src/user/profile.ts:16](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/user/profile.ts#L16) +[src/user/profile.ts:16](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/profile.ts#L16) ___ @@ -114,7 +114,7 @@ relatively similar, and merge them. #### Defined in -[src/subscription/index.ts:384](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/subscription/index.ts#L384) +[src/subscription/index.ts:382](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L382) ___ @@ -134,4 +134,4 @@ ___ #### Defined in -[src/zap/invoice.ts:14](https://github.com/nostr-dev-kit/ndk/blob/701d68d/src/zap/invoice.ts#L14) +[src/zap/invoice.ts:14](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/zap/invoice.ts#L14) diff --git a/package.json b/package.json index 29ca1d15..2874302d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.1.2", + "version": "0.1.3", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/index.ts b/src/events/index.ts index 85eb9380..8567f9be 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -189,8 +189,12 @@ export default class NDKEvent extends EventEmitter { /** * Create a zap request for an existing event + * + * @param amount The amount to zap + * @param comment A comment to add to the zap request + * @param extraTags Extra tags to add to the zap request */ - async zap(amount: number, comment?: string): Promise { + async zap(amount: number, comment?: string, extraTags?: NDKTag[]): Promise { if (!this.ndk) throw new Error('No NDK instance found'); this.ndk.assertSigner(); @@ -200,7 +204,7 @@ export default class NDKEvent extends EventEmitter { zappedEvent: this, }); - const paymentRequest = await zap.createZapRequest(amount, comment); + const paymentRequest = await zap.createZapRequest(amount, comment, extraTags); // await zap.publish(amount); return paymentRequest; diff --git a/src/zap/index.ts b/src/zap/index.ts index 7e2af8db..66abd991 100644 --- a/src/zap/index.ts +++ b/src/zap/index.ts @@ -1,13 +1,13 @@ import NDK from "../index.js"; import EventEmitter from 'eventemitter3'; -import Event from "../events/index.js"; +import NDKEvent, { NDKTag } from "../events/index.js"; import type {NostrEvent} from "../events/index.js"; import User from "../user/index.js"; import {nip57} from "nostr-tools"; import {bech32} from '@scure/base'; interface ZapConstructorParams { ndk: NDK; - zappedEvent?: Event; + zappedEvent?: NDKEvent; zappedUser?: User; } @@ -15,7 +15,7 @@ type ZapConstructorParamsRequired = Required { + public async createZapRequest(amount: number, comment?: string, extraTags?: NDKTag[]): Promise { const zapEndpoint = await this.getZapEndpoint(); if (!zapEndpoint) { @@ -96,7 +96,11 @@ export default class Zap extends EventEmitter { relays: ['wss://nos.lol', 'wss://relay.nostr.band', 'wss://relay.f7z.io', 'wss://relay.damus.io', 'wss://nostr.mom', 'wss://no.str.cr'], // TODO: fix this }); - const zapRequestEvent = new Event(this.ndk, zapRequest as NostrEvent); + const zapRequestEvent = new NDKEvent(this.ndk, zapRequest as NostrEvent); + if (extraTags) { + zapRequestEvent.tags = zapRequestEvent.tags.concat(extraTags); + } + await zapRequestEvent.sign(); const zapRequestNostrEvent = await zapRequestEvent.toNostrEvent(); From 9adb9125a44a4152dbc04d4a39b32a943e1da65a Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 18 Apr 2023 21:05:47 +0300 Subject: [PATCH 067/773] enable nip-33 zaps --- package.json | 2 +- src/zap/index.ts | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 2874302d..c9135a8b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.1.3", + "version": "0.1.4", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/zap/index.ts b/src/zap/index.ts index 66abd991..5e687147 100644 --- a/src/zap/index.ts +++ b/src/zap/index.ts @@ -90,12 +90,22 @@ export default class Zap extends EventEmitter { const zapRequest = nip57.makeZapRequest({ profile: this.zappedUser.hexpubkey(), - event: this.zappedEvent?.id, + + // set the event to null since nostr-tools doesn't support nip-33 zaps + event: null, amount, comment: comment || '', relays: ['wss://nos.lol', 'wss://relay.nostr.band', 'wss://relay.f7z.io', 'wss://relay.damus.io', 'wss://nostr.mom', 'wss://no.str.cr'], // TODO: fix this }); + // add the event tag if it exists; this supports both 'e' and 'a' tags + if (this.zappedEvent) { + const tag = this.zappedEvent.tagReference(); + if (tag) { + zapRequest.tags.push(tag); + } + } + const zapRequestEvent = new NDKEvent(this.ndk, zapRequest as NostrEvent); if (extraTags) { zapRequestEvent.tags = zapRequestEvent.tags.concat(extraTags); From 0633b7330065bdd1d9d2c4128ace21caeae236ad Mon Sep 17 00:00:00 2001 From: pablof7z Date: Wed, 19 Apr 2023 10:40:52 +0300 Subject: [PATCH 068/773] finalize setting created_at when `toNostrEvent` is called --- src/events/index.ts | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/events/index.ts b/src/events/index.ts index 8567f9be..411b651a 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -50,13 +50,13 @@ export default class NDKEvent extends EventEmitter { */ public rawEvent(): NostrEvent { return { - created_at: this.created_at!, + created_at: this.created_at, content: this.content, tags: this.tags, kind: this.kind, pubkey: this.pubkey, id: this.id, - }; + } as NostrEvent; } /** @@ -69,15 +69,9 @@ export default class NDKEvent extends EventEmitter { this.pubkey = user?.hexpubkey() || ''; } - const nostrEvent: NostrEvent = { - created_at: this.created_at || Math.floor(Date.now() / 1000), - content: this.content, - tags: this.tags, - kind: this.kind, - pubkey: this.pubkey, - id: this.id, - }; + if (!this.created_at) this.created_at = Math.floor(Date.now() / 1000); + const nostrEvent = this.rawEvent(); this.generateTags(); if (this.subject) nostrEvent.subject = this.subject; From c5c06d86647a3a1c8ce9f8031563294d545b06d3 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Wed, 19 Apr 2023 11:58:51 +0300 Subject: [PATCH 069/773] send subscriptions to relays when they cone online if they are part of an active subscriptions' relayset --- package.json | 2 +- src/relay/sets/index.ts | 23 +++++++++++++++-------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index c9135a8b..c356ce61 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.1.4", + "version": "0.1.5", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/relay/sets/index.ts b/src/relay/sets/index.ts index a8857ed2..f7024c25 100644 --- a/src/relay/sets/index.ts +++ b/src/relay/sets/index.ts @@ -88,19 +88,26 @@ export class NDKRelaySet { } private executeSubscription(subscription: NDKSubscription): NDKSubscription { - // If the relay is connected, send the subscription - // If the relay is not connected, wait for it to connect (during the lifetime of the subscription) - this.debug('subscribing', {filter: subscription.filter}); - this.relays.forEach(relay => { + for (const relay of this.relays) { if (relay.status === NDKRelayStatus.CONNECTED) { + // If the relay is already connected, subscribe immediately this.subscribeOnRelay(relay, subscription); - // } else { - // relay.on('connect', () => this.subscribeOnRelay(relay, subscription), this.relaysetContext); - // relay.off('connect') + } else { + // If the relay is not connected, add a one-time listener to wait for the 'connected' event + const connectedListener = () => { + this.debug('new relay coming online for active subscription', { relay: relay.url, filter: subscription.filter }); + this.subscribeOnRelay(relay, subscription); + }; + relay.once('connect', connectedListener); + + // Add a one-time listener to remove the connectedListener when the subscription stops + subscription.once('close', () => { + relay.removeListener('connect', connectedListener); + }); } - }); + } return subscription; } From c64d5610360d004b4f542f32e60ce4e7c8c9e69a Mon Sep 17 00:00:00 2001 From: pablof7z Date: Wed, 19 Apr 2023 16:56:41 +0300 Subject: [PATCH 070/773] don't group together when using different filters --- package.json | 2 +- src/subscription/index.ts | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index c356ce61..9d8100d4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.1.5", + "version": "0.1.6", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/subscription/index.ts b/src/subscription/index.ts index 2ab50427..004bb412 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -127,7 +127,11 @@ export class NDKSubscription extends EventEmitter { const noLimit = !this.filter.limit; if (hasKind && noTimeConstraints && noLimit) { - const id = this.filter.kinds!.join(','); + let id = this.filter.kinds!.join(','); + const keys = Object.keys(this.filter||{}).sort().join('-'); + id += `-${keys}`; + console.log({ groupableId: id, filter: this.filter}); + return id; } From 0bd363f7ba4d0eb8475e718cff2ebbd8aba3cd98 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Thu, 20 Apr 2023 22:38:36 +0300 Subject: [PATCH 071/773] don't try to fetch user's profiles if we already got a match from a zap tag --- README.md | 17 ++++++++++++++++- package.json | 2 +- src/zap/index.ts | 2 +- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index aba31cdc..212fe8c5 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,21 @@ Besides improving the developer experience, the core goal of NDK is to improve t npm add @nostr-dev-kit/ndk ``` +## Debugging + +NDK uses the `debug` package to assist in understanding what's happening behind the hood. If you are building a package +that runs on the server define the `DEBUG` envionment variable like + +``` +export DEBUG='ndk:*' +``` + +or in the browser enable it by writing in the DevTools console + +``` +localStorage.debug = 'ndk:*' +``` + ## Support ### NDK NIP-28 group chat @@ -37,7 +52,7 @@ npm add @nostr-dev-kit/ndk - [x] LUD16 - [ ] NIP-65: Contacts' Relay list - Subscription Management - - [ ] Buffered queries + - [x] Auto-grouping queries - [x] Auto-closing subscriptions - Signing Adapters - [x] Private key diff --git a/package.json b/package.json index 9d8100d4..6533d5ea 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.1.6", + "version": "0.1.7", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/zap/index.ts b/src/zap/index.ts index 5e687147..1c751ab6 100644 --- a/src/zap/index.ts +++ b/src/zap/index.ts @@ -45,7 +45,7 @@ export default class Zap extends EventEmitter { } } - if (this.zappedUser) { + if (this.zappedUser && !lud06 && !lud16) { // check if user has a profile, otherwise request it if (!this.zappedUser.profile) { await this.zappedUser.fetchProfile(); From ba4255f581ac35518c65c46a0b18aaef6f760af3 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Thu, 20 Apr 2023 22:43:44 +0300 Subject: [PATCH 072/773] gracefully handle wavlake's broken zap endpoint --- package.json | 2 +- src/zap/index.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 6533d5ea..9fa0db67 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.1.7", + "version": "0.1.8", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/zap/index.ts b/src/zap/index.ts index 1c751ab6..12a8df3e 100644 --- a/src/zap/index.ts +++ b/src/zap/index.ts @@ -72,7 +72,7 @@ export default class Zap extends EventEmitter { const response = await fetch(zapEndpoint); const body = await response.json(); - if (body?.allowsNostr && body?.nostrPubkey) { + if (body?.allowsNostr && (body?.nostrPubkey || body?.nostrPubKey)) { zapEndpointCallback = body.callback; } From 5a12789c3955755a639d1e7c3e588bd4f2b65a52 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Thu, 20 Apr 2023 22:48:54 +0300 Subject: [PATCH 073/773] URI encode 9734 --- package.json | 2 +- src/zap/index.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 9fa0db67..7f47947f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.1.8", + "version": "0.1.9", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/zap/index.ts b/src/zap/index.ts index 12a8df3e..33d422bd 100644 --- a/src/zap/index.ts +++ b/src/zap/index.ts @@ -116,7 +116,7 @@ export default class Zap extends EventEmitter { const response = await fetch(`${zapEndpoint}?` + new URLSearchParams({ amount: amount.toString(), - nostr: JSON.stringify(zapRequestNostrEvent), + nostr: encodeURIComponent(JSON.stringify(zapRequestNostrEvent)), }) ); const body = await response.json(); From 4f25acd1850edc5648bab055af0b2338b66f7143 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Fri, 21 Apr 2023 15:24:06 +0300 Subject: [PATCH 074/773] add encryption support --- package.json | 2 +- src/events/nip04.ts | 17 +++++++++++++++++ src/signers/index.ts | 7 +++++++ src/signers/nip07/index.ts | 12 ++++++++++++ src/signers/private-key/index.ts | 13 +++++++++++-- 5 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 src/events/nip04.ts diff --git a/package.json b/package.json index 7f47947f..90a378a7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.1.9", + "version": "0.1.10", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/nip04.ts b/src/events/nip04.ts new file mode 100644 index 00000000..c3be0209 --- /dev/null +++ b/src/events/nip04.ts @@ -0,0 +1,17 @@ +import NDKEvent from '.'; +import { NDKSigner } from '../signers'; +import NDKUser from '../user'; + +export async function encrypt(this: NDKEvent, recipient: NDKUser, signer?: NDKSigner) { + if (!signer) { + if (!this.ndk) { + throw new Error('No signer available'); + } + + await this.ndk.assertSigner(); + + signer = this.ndk.signer!; + } + + this.content = await signer.encrypt(this.content, recipient); +} diff --git a/src/signers/index.ts b/src/signers/index.ts index f4b05ba5..ffe31f9e 100644 --- a/src/signers/index.ts +++ b/src/signers/index.ts @@ -23,4 +23,11 @@ export interface NDKSigner { * @returns A promise that resolves to the signature of the signed event. */ sign(event: NostrEvent): Promise; + + /** + * Encrypts the given Nostr event for the given recipient. + * @param value - The value to be encrypted. + * @param recipient - The recipient of the encrypted value. + */ + encrypt(value: string, recipient: NDKUser): Promise; } diff --git a/src/signers/nip07/index.ts b/src/signers/nip07/index.ts index 7a3671f0..b49ef645 100644 --- a/src/signers/nip07/index.ts +++ b/src/signers/nip07/index.ts @@ -52,6 +52,15 @@ export class NDKNip07Signer implements NDKSigner { const signedEvent = await window.nostr.signEvent(event); return signedEvent.sig; } + + public async encrypt(value: string, recipient: NDKUser): Promise { + if (!window.nostr) { + throw new Error('NIP-07 extension not available'); + } + + const recipientHexPubKey = recipient.hexpubkey(); + return window.nostr.nip04.encrypt(value, recipientHexPubKey); + } } declare global { @@ -59,6 +68,9 @@ declare global { nostr?: { getPublicKey(): Promise; signEvent(event: NostrEvent): Promise<{ sig: string }>; + nip04: { + encrypt(value: string, recipientHexPubKey: string): Promise; + } }; } } diff --git a/src/signers/private-key/index.ts b/src/signers/private-key/index.ts index 9be4049f..35983cfb 100644 --- a/src/signers/private-key/index.ts +++ b/src/signers/private-key/index.ts @@ -1,4 +1,4 @@ -import { signEvent, generatePrivateKey, getPublicKey } from 'nostr-tools'; +import { signEvent, generatePrivateKey, getPublicKey, nip04 } from 'nostr-tools'; import type { UnsignedEvent } from 'nostr-tools'; import type { NostrEvent } from '../../events/index.js'; import { NDKSigner } from '../index.js'; @@ -34,9 +34,18 @@ export class NDKPrivateKeySigner implements NDKSigner { public async sign(event: NostrEvent): Promise { if (!this.privateKey) { - throw Error('Attempted to sign without a private key'); + throw Error('Attempted to sign without a private key'); } return signEvent(event as UnsignedEvent, this.privateKey); } + + public async encrypt(value: string, recipient: User): Promise { + if (!this.privateKey) { + throw Error('Attempted to encrypt without a private key'); + } + + const recipientHexPubKey = recipient.hexpubkey(); + return await nip04.encrypt(this.privateKey, value, recipientHexPubKey); + } } \ No newline at end of file From 711e577d930a1b1b5e290a069485e00dc61c22f9 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Fri, 21 Apr 2023 15:24:23 +0300 Subject: [PATCH 075/773] add recommended lnurl on nip-57 --- src/zap/index.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/zap/index.ts b/src/zap/index.ts index 33d422bd..5f071eb9 100644 --- a/src/zap/index.ts +++ b/src/zap/index.ts @@ -106,6 +106,8 @@ export default class Zap extends EventEmitter { } } + zapRequest.tags.push(['lnurl', zapEndpoint]); + const zapRequestEvent = new NDKEvent(this.ndk, zapRequest as NostrEvent); if (extraTags) { zapRequestEvent.tags = zapRequestEvent.tags.concat(extraTags); From 4177ddc1cd5f3fe979c0ea97a2d77d65780b49ef Mon Sep 17 00:00:00 2001 From: pablof7z Date: Fri, 21 Apr 2023 15:28:54 +0300 Subject: [PATCH 076/773] add NIP-04 encryption support --- README.md | 1 + package.json | 2 +- src/events/index.ts | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 212fe8c5..9e937dba 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,7 @@ localStorage.debug = 'ndk:*' * Client-side - [ ] LocalStorage - [ ] IndexDB +- [~] NIP-04: Encryption support - [ ] NIP-26: Event delegation - [ ] NIP-41: Relay authentication - [x] NIP-57: Zaps diff --git a/package.json b/package.json index 90a378a7..7d9833ce 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.1.10", + "version": "0.1.11", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/index.ts b/src/events/index.ts index 411b651a..41bba1c4 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -6,6 +6,7 @@ import { generateContentTags } from "./content-tagger.js"; import { NDKKind } from "./kind.js"; import { isParamReplaceable, isReplaceable } from "./kind.js"; import { encode } from "./nip19.js"; +import { encrypt } from "./nip04.js"; export type NDKEventId = string; export type NDKTag = string[]; @@ -89,6 +90,7 @@ export default class NDKEvent extends EventEmitter { public isReplaceable = isReplaceable.bind(this); public isParamReplaceable = isParamReplaceable.bind(this); public encode = encode.bind(this); + public encrypt = encrypt.bind(this); /** * Get all tags with the given name From c2b9d64b723fb66275a3088a8ea6382acab295f5 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 25 Apr 2023 00:58:19 +0300 Subject: [PATCH 077/773] remove encode since it breaks some zappers --- src/zap/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zap/index.ts b/src/zap/index.ts index 5f071eb9..bbec584a 100644 --- a/src/zap/index.ts +++ b/src/zap/index.ts @@ -118,7 +118,7 @@ export default class Zap extends EventEmitter { const response = await fetch(`${zapEndpoint}?` + new URLSearchParams({ amount: amount.toString(), - nostr: encodeURIComponent(JSON.stringify(zapRequestNostrEvent)), + nostr: JSON.stringify(zapRequestNostrEvent), }) ); const body = await response.json(); From db99d850e361a53eb84a66288c23be8ae677452d Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 25 Apr 2023 00:59:55 +0300 Subject: [PATCH 078/773] commit nip04 decryption --- package.json | 2 +- src/events/index.ts | 2 ++ src/events/nip04.ts | 16 +++++++++++++++- src/signers/index.ts | 8 +++++++- src/signers/nip07/index.ts | 16 +++++++++++++--- src/signers/private-key/index.ts | 13 +++++++++++-- 6 files changed, 49 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 7d9833ce..70b6434c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.1.11", + "version": "0.1.12", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/index.ts b/src/events/index.ts index 41bba1c4..4ae5a43d 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -57,6 +57,7 @@ export default class NDKEvent extends EventEmitter { kind: this.kind, pubkey: this.pubkey, id: this.id, + sig: this.sig, } as NostrEvent; } @@ -91,6 +92,7 @@ export default class NDKEvent extends EventEmitter { public isParamReplaceable = isParamReplaceable.bind(this); public encode = encode.bind(this); public encrypt = encrypt.bind(this); + public decrypt = decrypt.bind(this); /** * Get all tags with the given name diff --git a/src/events/nip04.ts b/src/events/nip04.ts index c3be0209..cc3c0f21 100644 --- a/src/events/nip04.ts +++ b/src/events/nip04.ts @@ -13,5 +13,19 @@ export async function encrypt(this: NDKEvent, recipient: NDKUser, signer?: NDKSi signer = this.ndk.signer!; } - this.content = await signer.encrypt(this.content, recipient); + this.content = await signer.encrypt(recipient, this.content); +} + +export async function decrypt(this: NDKEvent, sender: NDKUser, signer?: NDKSigner) { + if (!signer) { + if (!this.ndk) { + throw new Error('No signer available'); + } + + await this.ndk.assertSigner(); + + signer = this.ndk.signer!; + } + + this.content = await signer.decrypt(sender, this.content); } diff --git a/src/signers/index.ts b/src/signers/index.ts index ffe31f9e..4dad66bb 100644 --- a/src/signers/index.ts +++ b/src/signers/index.ts @@ -29,5 +29,11 @@ export interface NDKSigner { * @param value - The value to be encrypted. * @param recipient - The recipient of the encrypted value. */ - encrypt(value: string, recipient: NDKUser): Promise; + encrypt(recipient: NDKUser, value: string): Promise; + + /** + * Decrypts the given value. + * @param value + */ + decrypt(sender: NDKUser, value: string): Promise; } diff --git a/src/signers/nip07/index.ts b/src/signers/nip07/index.ts index b49ef645..8b9d9997 100644 --- a/src/signers/nip07/index.ts +++ b/src/signers/nip07/index.ts @@ -53,13 +53,22 @@ export class NDKNip07Signer implements NDKSigner { return signedEvent.sig; } - public async encrypt(value: string, recipient: NDKUser): Promise { + public async encrypt(recipient: NDKUser, value: string): Promise { if (!window.nostr) { throw new Error('NIP-07 extension not available'); } const recipientHexPubKey = recipient.hexpubkey(); - return window.nostr.nip04.encrypt(value, recipientHexPubKey); + return window.nostr.nip04.encrypt(recipientHexPubKey, value); + } + + public async decrypt(sender: NDKUser, value: string): Promise { + if (!window.nostr) { + throw new Error('NIP-07 extension not available'); + } + + const senderHexPubKey = sender.hexpubkey(); + return window.nostr.nip04.decrypt(senderHexPubKey, value); } } @@ -69,7 +78,8 @@ declare global { getPublicKey(): Promise; signEvent(event: NostrEvent): Promise<{ sig: string }>; nip04: { - encrypt(value: string, recipientHexPubKey: string): Promise; + encrypt(recipientHexPubKey: string, value: string): Promise; + decrypt(senderHexPubKey: string, value: string): Promise; } }; } diff --git a/src/signers/private-key/index.ts b/src/signers/private-key/index.ts index 35983cfb..71bed7e5 100644 --- a/src/signers/private-key/index.ts +++ b/src/signers/private-key/index.ts @@ -40,12 +40,21 @@ export class NDKPrivateKeySigner implements NDKSigner { return signEvent(event as UnsignedEvent, this.privateKey); } - public async encrypt(value: string, recipient: User): Promise { + public async encrypt(recipient: User, value: string): Promise { if (!this.privateKey) { throw Error('Attempted to encrypt without a private key'); } const recipientHexPubKey = recipient.hexpubkey(); - return await nip04.encrypt(this.privateKey, value, recipientHexPubKey); + return await nip04.encrypt(this.privateKey, recipientHexPubKey, value); + } + + public async decrypt(sender: User, value: string): Promise { + if (!this.privateKey) { + throw Error('Attempted to decrypt without a private key'); + } + + const senderHexPubKey = sender.hexpubkey(); + return await nip04.decrypt(this.privateKey, senderHexPubKey, value); } } \ No newline at end of file From a39528881b4b630ee1f33003a7646317564551e2 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 25 Apr 2023 01:01:33 +0300 Subject: [PATCH 079/773] commit decrypt --- src/events/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/events/index.ts b/src/events/index.ts index 4ae5a43d..12a029aa 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -6,7 +6,7 @@ import { generateContentTags } from "./content-tagger.js"; import { NDKKind } from "./kind.js"; import { isParamReplaceable, isReplaceable } from "./kind.js"; import { encode } from "./nip19.js"; -import { encrypt } from "./nip04.js"; +import { encrypt, decrypt } from "./nip04.js"; export type NDKEventId = string; export type NDKTag = string[]; From 39121ebe9818e751f6b2c0e51230a981b4bc0e39 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 25 Apr 2023 01:04:22 +0300 Subject: [PATCH 080/773] bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 70b6434c..6eeafa44 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.1.12", + "version": "0.1.15", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", From 128d37a79fe3129d697a73d65643cc87ee8b3d07 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 25 Apr 2023 10:41:53 +0300 Subject: [PATCH 081/773] find zapped events that tag nip-33s --- package.json | 2 +- src/zap/invoice.ts | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 6eeafa44..0e011f45 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.1.15", + "version": "0.1.17", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/zap/invoice.ts b/src/zap/invoice.ts index f956464a..02648f21 100644 --- a/src/zap/invoice.ts +++ b/src/zap/invoice.ts @@ -44,7 +44,11 @@ export function zapInvoiceFromEvent(event: NDKEvent): NDKZapInvoice | null { const sender = zapRequest.pubkey; const recipientTag = event.getMatchingTags('p')[0]; const recipient = recipientTag[1]; - const zappedEvent = event.getMatchingTags('e')[0]; + let zappedEvent = event.getMatchingTags('e')[0]; + if (!zappedEvent) { + zappedEvent = event.getMatchingTags('a')[0]; + } + const zappedEventId = zappedEvent ? zappedEvent[1] : undefined; // ignore self-zaps (TODO: configurable?) From 22b9938dbfe58a6304976d2dc2da4aebf30734a3 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Wed, 26 Apr 2023 12:13:19 +0300 Subject: [PATCH 082/773] persist generated ID --- package.json | 3 +-- src/events/index.ts | 3 ++- src/subscription/index.ts | 1 - 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 0e011f45..ab8dcc20 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.1.17", + "version": "0.2.1", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", @@ -27,7 +27,6 @@ "lint": "eslint src/**/*.ts", "compile": "tsc", "prepare": "pnpm build", - "publish": "pnpm prepare && npm publish", "pretest": "pnpm compile", "posttest": "pnpm lint" }, diff --git a/src/events/index.ts b/src/events/index.ts index 12a029aa..45f11f5a 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -79,10 +79,11 @@ export default class NDKEvent extends EventEmitter { if (this.subject) nostrEvent.subject = this.subject; try { - nostrEvent.id = getEventHash(nostrEvent as UnsignedEvent); + this.id = getEventHash(nostrEvent as UnsignedEvent); // eslint-disable-next-line no-empty } catch (e) {} + if (this.id) nostrEvent.id = this.id; if (this.sig) nostrEvent.sig = this.sig; return nostrEvent; diff --git a/src/subscription/index.ts b/src/subscription/index.ts index 004bb412..c88d0df5 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -130,7 +130,6 @@ export class NDKSubscription extends EventEmitter { let id = this.filter.kinds!.join(','); const keys = Object.keys(this.filter||{}).sort().join('-'); id += `-${keys}`; - console.log({ groupableId: id, filter: this.filter}); return id; } From bd2a41221fd2909a2858662213f17a9ae107b878 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Wed, 26 Apr 2023 12:23:52 +0300 Subject: [PATCH 083/773] Update repleceable event timestamp when signing --- package.json | 2 +- src/events/index.ts | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index ab8dcc20..caf55431 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.2.1", + "version": "0.2.2", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/index.ts b/src/events/index.ts index 45f11f5a..9ae41d2d 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -106,11 +106,21 @@ export default class NDKEvent extends EventEmitter { return await this.toNostrEvent(); } + /** + * Sign the event if a signer is present. + * + * It will generate tags. + * Repleacable events will have their created_at field set to the current time. + */ public async sign() { this.ndk?.assertSigner(); await this.generateTags(); + if (this.isReplaceable()) { + this.created_at = Math.floor(Date.now() / 1000); + } + const nostrEvent = await this.toNostrEvent(); this.sig = await this.ndk?.signer?.sign(nostrEvent); } From d6360e9e462c19964e50d92027dce1c80da0f8ee Mon Sep 17 00:00:00 2001 From: Wlad Paiva Date: Fri, 28 Apr 2023 10:39:09 -0300 Subject: [PATCH 084/773] chore: change build scripts to tsup --- config/tsconfig.cjs.json | 7 - config/tsconfig.esm.json | 8 - config/tsconfig.types.json | 8 - config/tsconfig.umd.json | 7 - package-lock.json | 987 ++++++++++++++++++++++++++++++++++++- package.json | 22 +- tools/cleanup | 29 -- 7 files changed, 995 insertions(+), 73 deletions(-) delete mode 100644 config/tsconfig.cjs.json delete mode 100644 config/tsconfig.esm.json delete mode 100644 config/tsconfig.types.json delete mode 100644 config/tsconfig.umd.json delete mode 100644 tools/cleanup diff --git a/config/tsconfig.cjs.json b/config/tsconfig.cjs.json deleted file mode 100644 index 6c52e127..00000000 --- a/config/tsconfig.cjs.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "../tsconfig", - "compilerOptions": { - "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, - "outDir": "../dist/cjs" /* Redirect output structure to the directory. */ - } -} diff --git a/config/tsconfig.esm.json b/config/tsconfig.esm.json deleted file mode 100644 index ce4808b0..00000000 --- a/config/tsconfig.esm.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "../tsconfig", - "compilerOptions": { - "moduleResolution": "node", - "module": "ESNext" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, - "outDir": "../lib/esm" /* Redirect output structure to the directory. */ - } -} diff --git a/config/tsconfig.types.json b/config/tsconfig.types.json deleted file mode 100644 index 8de87ee2..00000000 --- a/config/tsconfig.types.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "../tsconfig", - "compilerOptions": { - "declaration": true /* Generates corresponding '.d.ts' file. */, - "emitDeclarationOnly": true, - "outDir": "../dist/types" /* Redirect output structure to the directory. */ - } -} diff --git a/config/tsconfig.umd.json b/config/tsconfig.umd.json deleted file mode 100644 index 5559c666..00000000 --- a/config/tsconfig.umd.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "../tsconfig", - "compilerOptions": { - "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, - "declaration": false /* Generates corresponding '.d.ts' file. */ - } -} diff --git a/package-lock.json b/package-lock.json index f2f703a6..3b8aca55 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.14", + "version": "0.2.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@nostr-dev-kit/ndk", - "version": "0.0.14", + "version": "0.2.2", "license": "MIT", "dependencies": { "@scure/base": "^1.1.1", @@ -28,7 +28,6 @@ "websocket-polyfill": "^0.0.3" }, "devDependencies": { - "@jest/globals": "^29.5.0", "@types/debug": "^4.1.7", "@types/jest": "^29.5.0", "@types/node": "^14.11.2", @@ -36,6 +35,9 @@ "jest": "^29.5.0", "prettier-plugin-organize-imports": "^3.2.2", "ts-jest": "^29.1.0", + "tsup": "^6.7.0", + "typedoc": "^0.23.28", + "typedoc-plugin-markdown": "^3.14.0", "typescript": "~4.7.0" } }, @@ -2163,6 +2165,12 @@ "node": ">=8" } }, + "node_modules/ansi-sequence-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", + "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", + "dev": true + }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -2177,6 +2185,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -2395,6 +2409,15 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -2482,6 +2505,30 @@ "node": ">=6.14.2" } }, + "node_modules/bundle-require": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-4.0.1.tgz", + "integrity": "sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==", + "dev": true, + "dependencies": { + "load-tsconfig": "^0.2.3" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "esbuild": ">=0.17" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -2576,6 +2623,45 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/ci-info": { "version": "3.8.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", @@ -2664,6 +2750,15 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -4460,6 +4555,27 @@ "node": ">= 6" } }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, "node_modules/hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -4726,6 +4842,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/is-boolean-object": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", @@ -5666,6 +5794,15 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/js-sdsl": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", @@ -5737,6 +5874,12 @@ "node": ">=6" } }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -5783,6 +5926,15 @@ "@scure/base": "1.1.1" } }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -5822,6 +5974,15 @@ "node": ">=4" } }, + "node_modules/load-tsconfig": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", + "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, "node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -5850,6 +6011,12 @@ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "dev": true + }, "node_modules/lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", @@ -5882,6 +6049,12 @@ "node": ">=10" } }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true + }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -5932,6 +6105,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "dev": true, + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, "node_modules/memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", @@ -6062,6 +6247,17 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -6081,6 +6277,12 @@ "ncp": "bin/ncp" } }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, "node_modules/next-tick": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", @@ -6385,6 +6587,15 @@ "node": ">=8" } }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", @@ -6651,6 +6862,35 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -6877,6 +7117,18 @@ "node": ">=8" } }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, "node_modules/redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", @@ -7025,6 +7277,22 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rollup": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.21.0.tgz", + "integrity": "sha512-ANPhVcyeHvYdQMUyCbczy33nbLzI7RzrBje4uvNiTDJGIMtlKoOStmympwr9OtS1LZxiDmE2wvxHyVhoLtf1KQ==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, "node_modules/run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -7128,6 +7396,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/shiki": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.1.tgz", + "integrity": "sha512-+Jz4nBkCBe0mEDqo1eKRcCdjRtrCjozmcbTUjbPTX7OOJfEbTZzlUWlZtGe3Gb5oV1/jnojhG//YZc3rs9zSEw==", + "dev": true, + "dependencies": { + "ansi-sequence-parser": "^1.1.0", + "jsonc-parser": "^3.2.0", + "vscode-oniguruma": "^1.7.0", + "vscode-textmate": "^8.0.0" + } + }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -7387,6 +7667,62 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/sucrase": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.32.0.tgz", + "integrity": "sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -7478,6 +7814,27 @@ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -7522,6 +7879,24 @@ "node": ">=8.0" } }, + "node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, "node_modules/trim-newlines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", @@ -7530,6 +7905,12 @@ "node": ">=8" } }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, "node_modules/ts-jest": { "version": "29.1.0", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz", @@ -7642,6 +8023,72 @@ "resolved": "https://registry.npmjs.org/tstl/-/tstl-2.5.13.tgz", "integrity": "sha512-h9wayHHFI5+yqt8iau0vqH96cTNhezhZ/Fk/hrIdpfkiMu3lg9nzyvMfs5bIdX51IVzZO6DudLqhkL/rVXpT6g==" }, + "node_modules/tsup": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/tsup/-/tsup-6.7.0.tgz", + "integrity": "sha512-L3o8hGkaHnu5TdJns+mCqFsDBo83bJ44rlK7e6VdanIvpea4ArPcU3swWGsLVbXak1PqQx/V+SSmFPujBK+zEQ==", + "dev": true, + "dependencies": { + "bundle-require": "^4.0.0", + "cac": "^6.7.12", + "chokidar": "^3.5.1", + "debug": "^4.3.1", + "esbuild": "^0.17.6", + "execa": "^5.0.0", + "globby": "^11.0.3", + "joycon": "^3.0.1", + "postcss-load-config": "^3.0.1", + "resolve-from": "^5.0.0", + "rollup": "^3.2.5", + "source-map": "0.8.0-beta.0", + "sucrase": "^3.20.3", + "tree-kill": "^1.2.2" + }, + "bin": { + "tsup": "dist/cli-default.js", + "tsup-node": "dist/cli-node.js" + }, + "engines": { + "node": ">=14.18" + }, + "peerDependencies": { + "@swc/core": "^1", + "postcss": "^8.4.12", + "typescript": ">=4.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "postcss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/tsup/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tsup/node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dev": true, + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/tsutils": { "version": "3.21.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", @@ -7713,6 +8160,73 @@ "is-typedarray": "^1.0.0" } }, + "node_modules/typedoc": { + "version": "0.23.28", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.28.tgz", + "integrity": "sha512-9x1+hZWTHEQcGoP7qFmlo4unUoVJLB0H/8vfO/7wqTnZxg4kPuji9y3uRzEu0ZKez63OJAUmiGhUrtukC6Uj3w==", + "dev": true, + "dependencies": { + "lunr": "^2.3.9", + "marked": "^4.2.12", + "minimatch": "^7.1.3", + "shiki": "^0.14.1" + }, + "bin": { + "typedoc": "bin/typedoc" + }, + "engines": { + "node": ">= 14.14" + }, + "peerDependencies": { + "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x" + } + }, + "node_modules/typedoc-plugin-markdown": { + "version": "3.15.2", + "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.15.2.tgz", + "integrity": "sha512-OPXAL9hhdoVJzH/UaKAz6CBS/s8KlYyLWwnxF7ap0fQCuaMMWShA1JBq4n1SXbiGjx+7DOhOfTKQ5OzwryN3Vw==", + "dev": true, + "dependencies": { + "handlebars": "^4.7.7", + "typedoc-plugin-mdn-links": "^3.0.3" + }, + "peerDependencies": { + "typedoc": ">=0.24.0" + } + }, + "node_modules/typedoc-plugin-mdn-links": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/typedoc-plugin-mdn-links/-/typedoc-plugin-mdn-links-3.0.3.tgz", + "integrity": "sha512-NXhIpwQnsg7BcyMCHVqj3tUK+DL4g3Bt96JbFl4APzTGFkA+iM6GfZ/fn3TAqJ8O0CXG5R9BfWxolw1m1omNuQ==", + "dev": true, + "peerDependencies": { + "typedoc": ">= 0.23.14 || 0.24.x" + } + }, + "node_modules/typedoc/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/typedoc/node_modules/minimatch": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/typescript": { "version": "4.7.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", @@ -7725,6 +8239,19 @@ "node": ">=4.2.0" } }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -7828,6 +8355,18 @@ "spdx-expression-parse": "^3.0.0" } }, + "node_modules/vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", + "dev": true + }, + "node_modules/vscode-textmate": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", + "dev": true + }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -7845,6 +8384,12 @@ "node": ">= 8" } }, + "node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, "node_modules/websocket": { "version": "1.0.34", "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", @@ -7883,6 +8428,17 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -7939,6 +8495,12 @@ "node": ">=0.10.0" } }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -7995,6 +8557,15 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/yargs": { "version": "17.7.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", @@ -9512,6 +10083,12 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, + "ansi-sequence-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", + "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", + "dev": true + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -9520,6 +10097,12 @@ "color-convert": "^2.0.1" } }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, "anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -9678,6 +10261,12 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -9739,6 +10328,21 @@ "node-gyp-build": "^4.3.0" } }, + "bundle-require": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-4.0.1.tgz", + "integrity": "sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==", + "dev": true, + "requires": { + "load-tsconfig": "^0.2.3" + } + }, + "cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true + }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -9795,6 +10399,33 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, "ci-info": { "version": "3.8.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", @@ -9858,6 +10489,12 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -11164,6 +11801,19 @@ } } }, + "handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + } + }, "hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -11349,6 +11999,15 @@ "has-bigints": "^1.0.1" } }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, "is-boolean-object": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", @@ -12035,6 +12694,12 @@ } } }, + "joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "dev": true + }, "js-sdsl": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", @@ -12087,6 +12752,12 @@ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, + "jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -12121,6 +12792,12 @@ "@scure/base": "1.1.1" } }, + "lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true + }, "lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -12153,6 +12830,12 @@ } } }, + "load-tsconfig": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", + "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", + "dev": true + }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -12178,6 +12861,12 @@ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "dev": true + }, "lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", @@ -12201,6 +12890,12 @@ "yallist": "^4.0.0" } }, + "lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true + }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -12238,6 +12933,12 @@ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==" }, + "marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "dev": true + }, "memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", @@ -12334,6 +13035,17 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -12350,6 +13062,12 @@ "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", "dev": true }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, "next-tick": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", @@ -12575,6 +13293,12 @@ "path-key": "^3.0.0" } }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, "object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", @@ -12751,6 +13475,16 @@ "irregular-plurals": "^3.2.0" } }, + "postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, + "requires": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + } + }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -12892,6 +13626,15 @@ } } }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, "redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", @@ -12990,6 +13733,15 @@ "glob": "^7.1.3" } }, + "rollup": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.21.0.tgz", + "integrity": "sha512-ANPhVcyeHvYdQMUyCbczy33nbLzI7RzrBje4uvNiTDJGIMtlKoOStmympwr9OtS1LZxiDmE2wvxHyVhoLtf1KQ==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, "run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -13055,6 +13807,18 @@ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==" }, + "shiki": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.1.tgz", + "integrity": "sha512-+Jz4nBkCBe0mEDqo1eKRcCdjRtrCjozmcbTUjbPTX7OOJfEbTZzlUWlZtGe3Gb5oV1/jnojhG//YZc3rs9zSEw==", + "dev": true, + "requires": { + "ansi-sequence-parser": "^1.1.0", + "jsonc-parser": "^3.2.0", + "vscode-oniguruma": "^1.7.0", + "vscode-textmate": "^8.0.0" + } + }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -13253,6 +14017,48 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" }, + "sucrase": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.32.0.tgz", + "integrity": "sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -13324,6 +14130,24 @@ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -13359,11 +14183,32 @@ "is-number": "^7.0.0" } }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true + }, "trim-newlines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==" }, + "ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, "ts-jest": { "version": "29.1.0", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz", @@ -13438,6 +14283,45 @@ "resolved": "https://registry.npmjs.org/tstl/-/tstl-2.5.13.tgz", "integrity": "sha512-h9wayHHFI5+yqt8iau0vqH96cTNhezhZ/Fk/hrIdpfkiMu3lg9nzyvMfs5bIdX51IVzZO6DudLqhkL/rVXpT6g==" }, + "tsup": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/tsup/-/tsup-6.7.0.tgz", + "integrity": "sha512-L3o8hGkaHnu5TdJns+mCqFsDBo83bJ44rlK7e6VdanIvpea4ArPcU3swWGsLVbXak1PqQx/V+SSmFPujBK+zEQ==", + "dev": true, + "requires": { + "bundle-require": "^4.0.0", + "cac": "^6.7.12", + "chokidar": "^3.5.1", + "debug": "^4.3.1", + "esbuild": "^0.17.6", + "execa": "^5.0.0", + "globby": "^11.0.3", + "joycon": "^3.0.1", + "postcss-load-config": "^3.0.1", + "resolve-from": "^5.0.0", + "rollup": "^3.2.5", + "source-map": "0.8.0-beta.0", + "sucrase": "^3.20.3", + "tree-kill": "^1.2.2" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dev": true, + "requires": { + "whatwg-url": "^7.0.0" + } + } + } + }, "tsutils": { "version": "3.21.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", @@ -13488,11 +14372,67 @@ "is-typedarray": "^1.0.0" } }, + "typedoc": { + "version": "0.23.28", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.28.tgz", + "integrity": "sha512-9x1+hZWTHEQcGoP7qFmlo4unUoVJLB0H/8vfO/7wqTnZxg4kPuji9y3uRzEu0ZKez63OJAUmiGhUrtukC6Uj3w==", + "dev": true, + "requires": { + "lunr": "^2.3.9", + "marked": "^4.2.12", + "minimatch": "^7.1.3", + "shiki": "^0.14.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "typedoc-plugin-markdown": { + "version": "3.15.2", + "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.15.2.tgz", + "integrity": "sha512-OPXAL9hhdoVJzH/UaKAz6CBS/s8KlYyLWwnxF7ap0fQCuaMMWShA1JBq4n1SXbiGjx+7DOhOfTKQ5OzwryN3Vw==", + "dev": true, + "requires": { + "handlebars": "^4.7.7", + "typedoc-plugin-mdn-links": "^3.0.3" + } + }, + "typedoc-plugin-mdn-links": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/typedoc-plugin-mdn-links/-/typedoc-plugin-mdn-links-3.0.3.tgz", + "integrity": "sha512-NXhIpwQnsg7BcyMCHVqj3tUK+DL4g3Bt96JbFl4APzTGFkA+iM6GfZ/fn3TAqJ8O0CXG5R9BfWxolw1m1omNuQ==", + "dev": true, + "requires": {} + }, "typescript": { "version": "4.7.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==" }, + "uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true + }, "unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -13569,6 +14509,18 @@ "spdx-expression-parse": "^3.0.0" } }, + "vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", + "dev": true + }, + "vscode-textmate": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", + "dev": true + }, "walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -13583,6 +14535,12 @@ "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==" }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, "websocket": { "version": "1.0.34", "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", @@ -13620,6 +14578,17 @@ "websocket": "^1.0.28" } }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -13658,6 +14627,12 @@ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -13702,6 +14677,12 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, "yargs": { "version": "17.7.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", diff --git a/package.json b/package.json index caf55431..c54ac993 100644 --- a/package.json +++ b/package.json @@ -8,26 +8,25 @@ "type": "git", "url": "https://github.com/nostr-dev-kit/ndk" }, - "types": "./lib/src/index.d.ts", - "main": "lib/ndk.cjs.js", - "module": "lib/esm/ndk.mjs", + "types": "./dist/index.d.ts", + "main": "./dist/index.js", + "module": "./dist/index.mjs", "exports": { - "import": "./lib/esm/ndk.mjs", - "require": "./lib/ndk.cjs.js" + "import": "./dist/index.mjs", + "require": "./dist/index.js" }, "files": [ - "lib", + "dist", "README.md" ], "scripts": { - "dev": "node tools/cleanup esm && tsc -w -p config/tsconfig.esm.json", - "build": "rm -rf lib && node build.js && tsc", - "clean": "rm -rf lib docs", + "dev": "pnpm build --watch", + "build": "tsup src/index.ts --format cjs,esm --dts", + "clean": "rm -rf dist docs", "test": "jest", "lint": "eslint src/**/*.ts", - "compile": "tsc", "prepare": "pnpm build", - "pretest": "pnpm compile", + "pretest": "pnpm build", "posttest": "pnpm lint" }, "keywords": [ @@ -43,6 +42,7 @@ "jest": "^29.5.0", "prettier-plugin-organize-imports": "^3.2.2", "ts-jest": "^29.1.0", + "tsup": "^6.7.0", "typedoc": "^0.23.28", "typedoc-plugin-markdown": "^3.14.0", "typescript": "~4.7.0" diff --git a/tools/cleanup b/tools/cleanup deleted file mode 100644 index e3215a48..00000000 --- a/tools/cleanup +++ /dev/null @@ -1,29 +0,0 @@ -/* eslint-disable */ -const fs = require('fs') -const Path = require('path') -/* eslint-enable */ - -const deleteFolderRecursive = (path) => { - if (fs.existsSync(path)) { - fs.readdirSync(path).forEach((file) => { - const curPath = Path.join(path, file) - if (fs.lstatSync(curPath).isDirectory()) { - deleteFolderRecursive(curPath) - } else { - fs.unlinkSync(curPath) - } - }) - fs.rmdirSync(path) - } -} - -const folder = process.argv.slice(2)[0] - -if (folder) { - deleteFolderRecursive(Path.join(__dirname, '../dist', folder)) -} else { - deleteFolderRecursive(Path.join(__dirname, '../dist/cjs')) - deleteFolderRecursive(Path.join(__dirname, '../dist/esm')) - deleteFolderRecursive(Path.join(__dirname, '../dist/umd')) - deleteFolderRecursive(Path.join(__dirname, '../dist/types')) -} \ No newline at end of file From f15a39273e7db1e110207518f36977abaa3d9dc3 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 29 Apr 2023 17:08:35 +0300 Subject: [PATCH 085/773] allow event signer to be explicitly set --- package.json | 2 +- src/events/index.ts | 8 +++++--- src/index.ts | 2 ++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index caf55431..12792b91 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.2.2", + "version": "0.2.3", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/index.ts b/src/events/index.ts index 9ae41d2d..32d9d0bf 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -7,6 +7,7 @@ import { NDKKind } from "./kind.js"; import { isParamReplaceable, isReplaceable } from "./kind.js"; import { encode } from "./nip19.js"; import { encrypt, decrypt } from "./nip04.js"; +import { NDKSigner } from "../signers/index.js"; export type NDKEventId = string; export type NDKTag = string[]; @@ -112,8 +113,8 @@ export default class NDKEvent extends EventEmitter { * It will generate tags. * Repleacable events will have their created_at field set to the current time. */ - public async sign() { - this.ndk?.assertSigner(); + public async sign(signer?: NDKSigner) { + signer || this.ndk?.assertSigner(); await this.generateTags(); @@ -122,7 +123,8 @@ export default class NDKEvent extends EventEmitter { } const nostrEvent = await this.toNostrEvent(); - this.sig = await this.ndk?.signer?.sign(nostrEvent); + const _signer = signer || this.ndk?.signer; + this.sig = await _signer!.sign(nostrEvent); } public async publish() : Promise { diff --git a/src/index.ts b/src/index.ts index c28c2f35..84477e6d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -17,6 +17,8 @@ export { NDKUserProfile, NDKCacheAdapter, }; +export * from './events/index.js'; +export * from './signers/index.js'; export * from './user/profile.js'; export * from './subscription/index.js'; export * from './relay/index.js'; From fd9a69a81a58b632cae04a56c14cb4f16b02117d Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sun, 30 Apr 2023 16:40:33 +0300 Subject: [PATCH 086/773] NIP-46 -- fuck yes --- README.md | 2 +- package-lock.json | 285 ++++++++++++++++++++++++++++++- package.json | 2 +- src/index.ts | 5 +- src/signers/nip46/backend.ts | 102 +++++++++++ src/signers/nip46/index.ts | 95 +++++++++++ src/signers/nip46/rpc.ts | 101 +++++++++++ src/signers/private-key/index.ts | 18 +- 8 files changed, 595 insertions(+), 15 deletions(-) create mode 100644 src/signers/nip46/backend.ts create mode 100644 src/signers/nip46/index.ts create mode 100644 src/signers/nip46/rpc.ts diff --git a/README.md b/README.md index 9e937dba..b0ef32eb 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ localStorage.debug = 'ndk:*' - [x] Private key - [x] NIP-07 - [ ] NIP-26 - - [ ] NIP-46 + - [x] NIP-46 - Relay discovery - [ ] Gossip-model (NIP-65) - [ ] Implicit relays discovery following pubkey usage diff --git a/package-lock.json b/package-lock.json index f2f703a6..d65a260b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.0.14", + "version": "0.2.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@nostr-dev-kit/ndk", - "version": "0.0.14", + "version": "0.2.3", "license": "MIT", "dependencies": { "@scure/base": "^1.1.1", @@ -28,7 +28,6 @@ "websocket-polyfill": "^0.0.3" }, "devDependencies": { - "@jest/globals": "^29.5.0", "@types/debug": "^4.1.7", "@types/jest": "^29.5.0", "@types/node": "^14.11.2", @@ -36,6 +35,8 @@ "jest": "^29.5.0", "prettier-plugin-organize-imports": "^3.2.2", "ts-jest": "^29.1.0", + "typedoc": "^0.23.28", + "typedoc-plugin-markdown": "^3.14.0", "typescript": "~4.7.0" } }, @@ -2163,6 +2164,12 @@ "node": ">=8" } }, + "node_modules/ansi-sequence-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", + "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", + "dev": true + }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -4460,6 +4467,27 @@ "node": ">= 6" } }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, "node_modules/hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -5737,6 +5765,12 @@ "node": ">=6" } }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -5882,6 +5916,12 @@ "node": ">=10" } }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true + }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -5932,6 +5972,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "dev": true, + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, "node_modules/memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", @@ -6081,6 +6133,12 @@ "ncp": "bin/ncp" } }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, "node_modules/next-tick": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", @@ -7128,6 +7186,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/shiki": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.2.tgz", + "integrity": "sha512-ltSZlSLOuSY0M0Y75KA+ieRaZ0Trf5Wl3gutE7jzLuIcWxLp5i/uEnLoQWNvgKXQ5OMpGkJnVMRLAuzjc0LJ2A==", + "dev": true, + "dependencies": { + "ansi-sequence-parser": "^1.1.0", + "jsonc-parser": "^3.2.0", + "vscode-oniguruma": "^1.7.0", + "vscode-textmate": "^8.0.0" + } + }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -7713,6 +7783,63 @@ "is-typedarray": "^1.0.0" } }, + "node_modules/typedoc": { + "version": "0.23.28", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.28.tgz", + "integrity": "sha512-9x1+hZWTHEQcGoP7qFmlo4unUoVJLB0H/8vfO/7wqTnZxg4kPuji9y3uRzEu0ZKez63OJAUmiGhUrtukC6Uj3w==", + "dev": true, + "dependencies": { + "lunr": "^2.3.9", + "marked": "^4.2.12", + "minimatch": "^7.1.3", + "shiki": "^0.14.1" + }, + "bin": { + "typedoc": "bin/typedoc" + }, + "engines": { + "node": ">= 14.14" + }, + "peerDependencies": { + "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x" + } + }, + "node_modules/typedoc-plugin-markdown": { + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.15.3.tgz", + "integrity": "sha512-idntFYu3vfaY3eaD+w9DeRd0PmNGqGuNLKihPU9poxFGnATJYGn9dPtEhn2QrTdishFMg7jPXAhos+2T6YCWRQ==", + "dev": true, + "dependencies": { + "handlebars": "^4.7.7" + }, + "peerDependencies": { + "typedoc": ">=0.24.0" + } + }, + "node_modules/typedoc/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/typedoc/node_modules/minimatch": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/typescript": { "version": "4.7.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", @@ -7725,6 +7852,19 @@ "node": ">=4.2.0" } }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -7828,6 +7968,18 @@ "spdx-expression-parse": "^3.0.0" } }, + "node_modules/vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", + "dev": true + }, + "node_modules/vscode-textmate": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", + "dev": true + }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -7939,6 +8091,12 @@ "node": ">=0.10.0" } }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -9512,6 +9670,12 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, + "ansi-sequence-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", + "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", + "dev": true + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -11164,6 +11328,19 @@ } } }, + "handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + } + }, "hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -12087,6 +12264,12 @@ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, + "jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -12201,6 +12384,12 @@ "yallist": "^4.0.0" } }, + "lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true + }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -12238,6 +12427,12 @@ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==" }, + "marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "dev": true + }, "memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", @@ -12350,6 +12545,12 @@ "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", "dev": true }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, "next-tick": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", @@ -13055,6 +13256,18 @@ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==" }, + "shiki": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.2.tgz", + "integrity": "sha512-ltSZlSLOuSY0M0Y75KA+ieRaZ0Trf5Wl3gutE7jzLuIcWxLp5i/uEnLoQWNvgKXQ5OMpGkJnVMRLAuzjc0LJ2A==", + "dev": true, + "requires": { + "ansi-sequence-parser": "^1.1.0", + "jsonc-parser": "^3.2.0", + "vscode-oniguruma": "^1.7.0", + "vscode-textmate": "^8.0.0" + } + }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -13488,11 +13701,59 @@ "is-typedarray": "^1.0.0" } }, + "typedoc": { + "version": "0.23.28", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.28.tgz", + "integrity": "sha512-9x1+hZWTHEQcGoP7qFmlo4unUoVJLB0H/8vfO/7wqTnZxg4kPuji9y3uRzEu0ZKez63OJAUmiGhUrtukC6Uj3w==", + "dev": true, + "requires": { + "lunr": "^2.3.9", + "marked": "^4.2.12", + "minimatch": "^7.1.3", + "shiki": "^0.14.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "typedoc-plugin-markdown": { + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.15.3.tgz", + "integrity": "sha512-idntFYu3vfaY3eaD+w9DeRd0PmNGqGuNLKihPU9poxFGnATJYGn9dPtEhn2QrTdishFMg7jPXAhos+2T6YCWRQ==", + "dev": true, + "requires": { + "handlebars": "^4.7.7" + } + }, "typescript": { "version": "4.7.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==" }, + "uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true + }, "unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -13569,6 +13830,18 @@ "spdx-expression-parse": "^3.0.0" } }, + "vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", + "dev": true + }, + "vscode-textmate": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", + "dev": true + }, "walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -13658,6 +13931,12 @@ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", diff --git a/package.json b/package.json index 12792b91..4622eb5d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.2.3", + "version": "0.3.4", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/index.ts b/src/index.ts index 84477e6d..b16124a4 100644 --- a/src/index.ts +++ b/src/index.ts @@ -23,9 +23,12 @@ export * from './user/profile.js'; export * from './subscription/index.js'; export * from './relay/index.js'; export * from './relay/sets/index.js'; +export * from './signers/index.js'; export * from './signers/private-key/index.js'; +export * from './signers/nip07/index.js'; +export * from './signers/nip46/index.js'; +export * from './signers/nip46/backend.js'; export {NDKKind} from './events/kind.js'; -export {NDKNip07Signer} from './signers/nip07/index.js'; export {NDKZapInvoice, zapInvoiceFromEvent} from './zap/invoice.js'; export interface NDKConstructorParams { diff --git a/src/signers/nip46/backend.ts b/src/signers/nip46/backend.ts new file mode 100644 index 00000000..abfb66f1 --- /dev/null +++ b/src/signers/nip46/backend.ts @@ -0,0 +1,102 @@ +import NDK, { NDKEvent, NDKPrivateKeySigner, NDKUser } from "../../index.js"; +import { NDKNostrRpc } from "./rpc.js"; + +export type Nip46PermitCallback = (pubkey: string, method: string, param?: any) => boolean; + +/** + * This class implements a NIP-46 backend, meaning that it will hold a private key + * of the npub that wants to be published as. + * + * This backend is meant to be used by an NDKNip46Signer, which is the class that + * should run client-side, where the user wants to sign events from. + */ +export class NDKNip46Backend { + private ndk: NDK; + private signer: NDKPrivateKeySigner; + private localUser?: NDKUser; + private debug: debug.Debugger; + private rpc: NDKNostrRpc; + private permitCallback: Nip46PermitCallback; + + /** + * @param ndk The NDK instance to use + * @param privateKey The private key of the npub that wants to be published as + */ + public constructor(ndk: NDK, privateKey: string, permitCallback: Nip46PermitCallback) { + this.ndk = ndk; + this.signer = new NDKPrivateKeySigner(privateKey); + this.debug = ndk.debug.extend('nip46:backend'); + this.rpc = new NDKNostrRpc(ndk, this.signer, this.debug); + this.permitCallback = permitCallback; + } + + /** + * This method starts the backend, which will start listening for incoming + * requests. + */ + public async start() { + this.localUser = await this.signer.user(); + + const sub = this.ndk.subscribe({ + kinds: [24133], + '#p': [ this.localUser.hexpubkey() ] + }, { closeOnEose: false }); + + sub.on('event', (e) => this.handleIncomingEvent(e)); + } + + private async handleIncomingEvent(event: NDKEvent) { + const { id, method, params } = await this.rpc.parseEvent(event) as any; + const remotePubkey = event.pubkey; + + this.debug('incoming event', {id, method, params}); + + switch (method) { + case 'connect': + this.handleConnect(id, params); + break; + case 'sign_event': + this.handleSignEvent(id, remotePubkey, params); + break; + default: + this.debug('unsupported method', {method, params}); + break; + } + }; + + private handleConnect(id: string, params: string[]) { + const [ pubkey ] = params; + + this.debug(`connection request from ${pubkey}`); + + if (this.pubkeyAllowed(pubkey, 'connect')) { + this.debug(`connection request from ${pubkey} allowed`); + this.rpc.sendResponse(id, pubkey, 'ack'); + } + } + + private async handleSignEvent(id: string, remotePubkey: string, params: string[]) { + const [ eventString ] = params; + + this.debug(`sign event request from ${remotePubkey}`); + + const event = new NDKEvent(this.ndk, JSON.parse(eventString)); + + this.debug('event to sign', event.rawEvent()); + + if (!this.pubkeyAllowed(remotePubkey, 'sign_event', event)) { + this.debug(`sign event request from ${remotePubkey} rejected`); + } + + await event.sign(this.signer); + this.rpc.sendResponse(id, remotePubkey, JSON.stringify(await event.toNostrEvent())); + } + + /** + * This method should be overriden by the user to allow or reject incoming + * connections. + */ + private pubkeyAllowed(pubkey: string, method: string, params?: any): boolean { + return this.permitCallback(pubkey, method, params); + } +} \ No newline at end of file diff --git a/src/signers/nip46/index.ts b/src/signers/nip46/index.ts new file mode 100644 index 00000000..00603c3d --- /dev/null +++ b/src/signers/nip46/index.ts @@ -0,0 +1,95 @@ +import NDK, { NDKPrivateKeySigner, NDKSigner, NDKUser, NostrEvent } from "../../index.js"; +import { NDKNostrRpc, NDKRpcResponse } from "./rpc.js"; + +/** + * This NDKSigner implements NIP-46, which allows remote signing of events. + * This class is meant to be used client-side, paired with the NDKNip46Backend or a NIP-46 backend (like Nostr-Connect) + */ +export class NDKNip46Signer implements NDKSigner { + private ndk: NDK; + public remotePubkey: string; + public localSigner: NDKSigner; + private rpc: NDKNostrRpc; + private debug: debug.Debugger; + + /** + * + * @param ndk - The NDK instance to use + * @param remotePubkey - The public key of the npub that wants to be published as + * @param localSigner - The signer that will be used to request events to be signed + */ + public constructor(ndk: NDK, remotePubkey: string, localSigner?: NDKSigner) { + this.ndk = ndk; + this.remotePubkey = remotePubkey; + this.debug = ndk.debug.extend('nip46:signer'); + + if (!localSigner) { + this.localSigner = NDKPrivateKeySigner.generate(); + } else { + this.localSigner = localSigner; + } + + this.rpc = new NDKNostrRpc(ndk, this.localSigner, this.debug); + } + + public async user(): Promise { + return this.localSigner.user(); + } + + public async blockUntilReady(): Promise { + const localUser = await this.localSigner.user(); + const user = await this.ndk.getUser({ npub: localUser.npub }); + const connectId = Math.random().toString(36).substring(7); + + // Generates subscription, single subscription for the lifetime of our connection + this.rpc.subscribe({ + kinds: [24133], + '#p': [localUser.hexpubkey()], + }); + + const promise: Promise = new Promise((resolve, reject) => { + // Subscribe to response of this connection request + this.rpc.once(`response-${connectId}`, async (response: NDKRpcResponse) => { + if (response.result === 'ack') { + resolve(user); + } else { + reject(response.error); + } + }); + }); + + await this.rpc.sendRequest(this.remotePubkey, 'connect', [localUser.hexpubkey()], connectId); + + return promise; + } + + public async encrypt(recipient: NDKUser, value: string): Promise { + throw new Error('not implemented'); + } + + public async decrypt(sender: NDKUser, value: string): Promise { + throw new Error('not implemented'); + } + + public async sign(event: NostrEvent): Promise { + const connectId = Math.random().toString(36).substring(7); + + this.debug('asking for a signature'); + + const promise = new Promise((resolve, reject) => { + this.rpc.once(`response-${connectId}`, async (response: NDKRpcResponse) => { + this.debug('got a response', response); + if (!response.error) { + const json = JSON.parse(response.result); + resolve(json.sig); + } else { + reject(response.error); + } + }); + }); + + await this.rpc.sendRequest(this.remotePubkey, 'sign_event', [JSON.stringify(event)], connectId); + + return promise; + } +} diff --git a/src/signers/nip46/rpc.ts b/src/signers/nip46/rpc.ts new file mode 100644 index 00000000..d185c52f --- /dev/null +++ b/src/signers/nip46/rpc.ts @@ -0,0 +1,101 @@ +import NDK, { NDKEvent, NDKFilter, NDKSigner, NostrEvent } from '../../index.js'; +import EventEmitter from 'eventemitter3'; + +export interface NDKRpcRequest { + id: string; + method: string; + params: string[]; +} + +export interface NDKRpcResponse { + id: string; + result: string; + error?: string; +} + +export class NDKNostrRpc extends EventEmitter { + private ndk: NDK; + private signer: NDKSigner; + private debug: debug.Debugger; + + public constructor(ndk: NDK, signer: NDKSigner, debug: debug.Debugger) { + super(); + this.ndk = ndk; + this.signer = signer; + this.debug = debug.extend('rpc'); + } + + public subscribe(filter: NDKFilter) { + const sub = this.ndk.subscribe(filter, { closeOnEose: false }); + + sub.on('event', async (event: NDKEvent) => { + this.debug('received event', await event.toNostrEvent()); + const parsedEvent = await this.parseEvent(event); + this.debug('parsed event', parsedEvent); + + if ((parsedEvent as NDKRpcRequest).method) { + this.emit('request', parsedEvent); + } else { + this.emit(`response-${parsedEvent.id}`, parsedEvent); + } + }); + } + + public async parseEvent(event: NDKEvent): Promise { + const remoteUser = this.ndk.getUser({ hexpubkey: event.pubkey }); + remoteUser.ndk = this.ndk; + const decryptedContent = await this.signer.decrypt(remoteUser, event.content); + const parsedContent = JSON.parse(decryptedContent); + const { id, method, params, result, error } = parsedContent; + + if (method) { + return { id, method, params }; + } else { + return { id, result, error }; + } + }; + + public async sendResponse(id: string, remotePubkey: string, result: string, error?: string) { + const res = { id, result } as NDKRpcResponse; + if (error) { res.error = error; } + + const localUser = await this.signer.user(); + const remoteUser = this.ndk.getUser({ hexpubkey: remotePubkey }); + const event = new NDKEvent(this.ndk, { + kind: 24133, + content: JSON.stringify(res), + tags: [ + ['p', remotePubkey], + ], + pubkey: localUser.hexpubkey(), + } as NostrEvent); + + event.content = await this.signer.encrypt(remoteUser, event.content); + await event.sign(this.signer); + this.debug('sending response', await event.toNostrEvent()); + + await this.ndk.publish(event); + } + + public async sendRequest(remotePubkey: string, method: string, params: string[], id?: string) { + const localUser = await this.signer.user(); + const remoteUser = this.ndk.getUser({ hexpubkey: remotePubkey }); + const randomId = Math.random().toString(36).substring(7); + const request = { id: id || randomId, method, params }; + + const event = new NDKEvent(this.ndk, { + kind: 24133, + content: JSON.stringify(request), + tags: [ + ['p', remotePubkey], + ], + pubkey: localUser.hexpubkey(), + } as NostrEvent); + + event.content = await this.signer.encrypt(remoteUser, event.content); + await event.sign(this.signer); + this.debug('sending request to', remotePubkey); + + await this.ndk.publish(event); + } +} \ No newline at end of file diff --git a/src/signers/private-key/index.ts b/src/signers/private-key/index.ts index 71bed7e5..9b5400be 100644 --- a/src/signers/private-key/index.ts +++ b/src/signers/private-key/index.ts @@ -2,16 +2,16 @@ import { signEvent, generatePrivateKey, getPublicKey, nip04 } from 'nostr-tools' import type { UnsignedEvent } from 'nostr-tools'; import type { NostrEvent } from '../../events/index.js'; import { NDKSigner } from '../index.js'; -import User from '../../user'; +import NDKUser from '../../user'; export class NDKPrivateKeySigner implements NDKSigner { - private _user: User | undefined; + private _user: NDKUser | undefined; privateKey?: string; public constructor(privateKey?: string) { if (privateKey) { this.privateKey = privateKey; - this._user = new User({ hexpubkey: getPublicKey(this.privateKey) }); + this._user = new NDKUser({ hexpubkey: getPublicKey(this.privateKey) }); } } @@ -20,16 +20,16 @@ export class NDKPrivateKeySigner implements NDKSigner { return new NDKPrivateKeySigner(privateKey); } - public async blockUntilReady(): Promise { + public async blockUntilReady(): Promise { if (!this._user) { - throw new Error('User not initialized'); + throw new Error('NDKUser not initialized'); } return this._user; } - public async user(): Promise { + public async user(): Promise { await this.blockUntilReady(); - return this._user as User; + return this._user as NDKUser; } public async sign(event: NostrEvent): Promise { @@ -40,7 +40,7 @@ export class NDKPrivateKeySigner implements NDKSigner { return signEvent(event as UnsignedEvent, this.privateKey); } - public async encrypt(recipient: User, value: string): Promise { + public async encrypt(recipient: NDKUser, value: string): Promise { if (!this.privateKey) { throw Error('Attempted to encrypt without a private key'); } @@ -49,7 +49,7 @@ export class NDKPrivateKeySigner implements NDKSigner { return await nip04.encrypt(this.privateKey, recipientHexPubKey, value); } - public async decrypt(sender: User, value: string): Promise { + public async decrypt(sender: NDKUser, value: string): Promise { if (!this.privateKey) { throw Error('Attempted to decrypt without a private key'); } From fd628d9d43b1ae29148af8cf3f091cad65008f79 Mon Sep 17 00:00:00 2001 From: TheSameCat2 <119977284+TheSameCat2@users.noreply.github.com> Date: Sun, 30 Apr 2023 09:21:18 -0500 Subject: [PATCH 087/773] Update README.md Fix broken link to architecture explainer --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b0ef32eb..591244fe 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,7 @@ import NDK from "@nostr-dev-kit/ndk"; ndk = new NDK({ explicitRelayUrls: ["wss://a.relay", "wss://another.relay"] }); ``` -Note: In normal client use, it's best practice to instantiate NDK as a singleton class. [See more below](#architecture). +Note: In normal client use, it's best practice to instantiate NDK as a singleton class. [See more below](#architecture-decisions--suggestions). ## Connecting From 841d78bd19cd9791d1b78c282d8c9c9e944f7a30 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sun, 30 Apr 2023 23:52:13 +0300 Subject: [PATCH 088/773] add support for all nip-46 mandatory commands --- package.json | 2 +- src/signers/nip46/backend.ts | 66 ++++++++++++++++++++++++++++++------ 2 files changed, 57 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 4622eb5d..878dd84e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.3.4", + "version": "0.3.5", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/signers/nip46/backend.ts b/src/signers/nip46/backend.ts index abfb66f1..7abe351b 100644 --- a/src/signers/nip46/backend.ts +++ b/src/signers/nip46/backend.ts @@ -1,7 +1,7 @@ import NDK, { NDKEvent, NDKPrivateKeySigner, NDKUser } from "../../index.js"; import { NDKNostrRpc } from "./rpc.js"; -export type Nip46PermitCallback = (pubkey: string, method: string, param?: any) => boolean; +export type Nip46PermitCallback = (pubkey: string, method: string, param?: any) => Promise; /** * This class implements a NIP-46 backend, meaning that it will hold a private key @@ -48,34 +48,64 @@ export class NDKNip46Backend { private async handleIncomingEvent(event: NDKEvent) { const { id, method, params } = await this.rpc.parseEvent(event) as any; const remotePubkey = event.pubkey; + let response: string | undefined; this.debug('incoming event', {id, method, params}); switch (method) { case 'connect': - this.handleConnect(id, params); + response = await this.handleConnect(id, params); break; case 'sign_event': - this.handleSignEvent(id, remotePubkey, params); + response = await this.handleSignEvent(id, remotePubkey, params); + break; + case 'publish_event': + response = await this.handlePublishEvent(id, remotePubkey, params); + break; + case 'get_public_key': + response = await this.handleGetPublicKey(); + break; + case 'describe': + response = await this.handleDescribe(); break; default: this.debug('unsupported method', {method, params}); break; } + + if (response) { + this.rpc.sendResponse(id, remotePubkey, response); + } }; - private handleConnect(id: string, params: string[]) { + private async handleDescribe() { + return JSON.stringify([ + 'describe', + 'get_public_key', + 'sign_event', + 'publish_event', + 'connect', + // 'nip04_encrypt', + // 'nip04_decrypt' + ]); + } + + private async handleGetPublicKey() { + return this.localUser?.hexpubkey(); + } + + private async handleConnect(id: string, params: string[]) { const [ pubkey ] = params; this.debug(`connection request from ${pubkey}`); - if (this.pubkeyAllowed(pubkey, 'connect')) { + if (await this.pubkeyAllowed(pubkey, 'connect')) { this.debug(`connection request from ${pubkey} allowed`); - this.rpc.sendResponse(id, pubkey, 'ack'); + return 'ack'; } } - private async handleSignEvent(id: string, remotePubkey: string, params: string[]) { + private async signEvent(remotePubkey: string, params: string[]): Promise { const [ eventString ] = params; this.debug(`sign event request from ${remotePubkey}`); @@ -84,19 +114,35 @@ export class NDKNip46Backend { this.debug('event to sign', event.rawEvent()); - if (!this.pubkeyAllowed(remotePubkey, 'sign_event', event)) { + if (!await this.pubkeyAllowed(remotePubkey, 'sign_event', event)) { this.debug(`sign event request from ${remotePubkey} rejected`); + return undefined; } await event.sign(this.signer); - this.rpc.sendResponse(id, remotePubkey, JSON.stringify(await event.toNostrEvent())); + } + + private async handleSignEvent(id: string, remotePubkey: string, params: string[]) { + const event = await this.signEvent(remotePubkey, params); + if (!event) return undefined; + + return JSON.stringify(await event.toNostrEvent()); + } + + private async handlePublishEvent(id: string, remotePubkey: string, params: string[]) { + const event = await this.signEvent(remotePubkey, params); + if (!event) return undefined; + + this.ndk.publish(event); + + return JSON.stringify(await event.toNostrEvent()); } /** * This method should be overriden by the user to allow or reject incoming * connections. */ - private pubkeyAllowed(pubkey: string, method: string, params?: any): boolean { + private async pubkeyAllowed(pubkey: string, method: string, params?: any): Promise { return this.permitCallback(pubkey, method, params); } } \ No newline at end of file From 29993307e14065d73a152732c55549364aa598ea Mon Sep 17 00:00:00 2001 From: pablof7z Date: Mon, 1 May 2023 13:34:37 +0300 Subject: [PATCH 089/773] refactor NIP-46 backend --- package.json | 2 +- src/index.ts | 2 +- src/signers/nip46/backend/connect.ts | 19 +++ src/signers/nip46/backend/describe.ts | 8 ++ src/signers/nip46/backend/get-public-key.ts | 7 ++ .../nip46/{backend.ts => backend/index.ts} | 119 +++++++----------- src/signers/nip46/backend/sign-event.ts | 10 ++ 7 files changed, 93 insertions(+), 74 deletions(-) create mode 100644 src/signers/nip46/backend/connect.ts create mode 100644 src/signers/nip46/backend/describe.ts create mode 100644 src/signers/nip46/backend/get-public-key.ts rename src/signers/nip46/{backend.ts => backend/index.ts} (50%) create mode 100644 src/signers/nip46/backend/sign-event.ts diff --git a/package.json b/package.json index 878dd84e..81777451 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.3.5", + "version": "0.3.6", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/index.ts b/src/index.ts index b16124a4..ad12df7e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -27,7 +27,7 @@ export * from './signers/index.js'; export * from './signers/private-key/index.js'; export * from './signers/nip07/index.js'; export * from './signers/nip46/index.js'; -export * from './signers/nip46/backend.js'; +export * from './signers/nip46/backend/index.js'; export {NDKKind} from './events/kind.js'; export {NDKZapInvoice, zapInvoiceFromEvent} from './zap/invoice.js'; diff --git a/src/signers/nip46/backend/connect.ts b/src/signers/nip46/backend/connect.ts new file mode 100644 index 00000000..f76a1f15 --- /dev/null +++ b/src/signers/nip46/backend/connect.ts @@ -0,0 +1,19 @@ +import { IEventHandlingStrategy,NDKNip46Backend } from "./index.js"; + +export default class ConnectEventHandlingStrategy implements IEventHandlingStrategy { + async handle(backend: NDKNip46Backend, remotePubkey: string, params: string[]): Promise { + const [ pubkey ] = params; + const debug = backend.debug.extend('connect'); + + debug(`connection request from ${pubkey}`); + + if (await backend.pubkeyAllowed(pubkey, 'connect')) { + debug(`connection request from ${pubkey} allowed`); + return 'ack'; + } else { + debug(`connection request from ${pubkey} rejected`); + } + + return undefined; + } +} \ No newline at end of file diff --git a/src/signers/nip46/backend/describe.ts b/src/signers/nip46/backend/describe.ts new file mode 100644 index 00000000..646b9d0c --- /dev/null +++ b/src/signers/nip46/backend/describe.ts @@ -0,0 +1,8 @@ +import { IEventHandlingStrategy,NDKNip46Backend } from "./index.js"; + +export default class DescribeHandlingStrategy implements IEventHandlingStrategy { + async handle(backend: NDKNip46Backend, remotePubkey: string, params: string[]): Promise { + const keys = Object.keys(backend.handlers); + return JSON.stringify(keys); + } +} \ No newline at end of file diff --git a/src/signers/nip46/backend/get-public-key.ts b/src/signers/nip46/backend/get-public-key.ts new file mode 100644 index 00000000..b94453bb --- /dev/null +++ b/src/signers/nip46/backend/get-public-key.ts @@ -0,0 +1,7 @@ +import { IEventHandlingStrategy,NDKNip46Backend } from "./index.js"; + +export default class GetPublicKeyHandlingStrategy implements IEventHandlingStrategy { + async handle(backend: NDKNip46Backend, remotePubkey: string, params: string[]): Promise { + return backend.localUser?.hexpubkey(); + } +} \ No newline at end of file diff --git a/src/signers/nip46/backend.ts b/src/signers/nip46/backend/index.ts similarity index 50% rename from src/signers/nip46/backend.ts rename to src/signers/nip46/backend/index.ts index 7abe351b..ac39c3f1 100644 --- a/src/signers/nip46/backend.ts +++ b/src/signers/nip46/backend/index.ts @@ -1,7 +1,19 @@ -import NDK, { NDKEvent, NDKPrivateKeySigner, NDKUser } from "../../index.js"; -import { NDKNostrRpc } from "./rpc.js"; - -export type Nip46PermitCallback = (pubkey: string, method: string, param?: any) => Promise; +import NDK, { NDKEvent, NDKPrivateKeySigner, NDKUser } from "../../../index.js"; +import { NDKNostrRpc } from "../rpc.js"; +import ConnectEventHandlingStrategy from "./connect.js"; +import SignEventHandlingStrategy from "./sign-event.js"; +import GetPublicKeyHandlingStrategy from "./get-public-key.js"; +import DescribeEventHandlingStrategy from "./describe.js"; + +export type Nip46PermitCallback = (pubkey: string, method: string, params?: any) => Promise; + +export interface IEventHandlingStrategy { + handle( + backend: NDKNip46Backend, + remotePubkey: string, + params: string[] + ): Promise; +} /** * This class implements a NIP-46 backend, meaning that it will hold a private key @@ -11,10 +23,10 @@ export type Nip46PermitCallback = (pubkey: string, method: string, param?: any) * should run client-side, where the user wants to sign events from. */ export class NDKNip46Backend { - private ndk: NDK; + readonly ndk: NDK; private signer: NDKPrivateKeySigner; - private localUser?: NDKUser; - private debug: debug.Debugger; + public localUser?: NDKUser; + readonly debug: debug.Debugger; private rpc: NDKNostrRpc; private permitCallback: Nip46PermitCallback; @@ -45,67 +57,43 @@ export class NDKNip46Backend { sub.on('event', (e) => this.handleIncomingEvent(e)); } - private async handleIncomingEvent(event: NDKEvent) { + public handlers: { [method: string]: IEventHandlingStrategy } = { + 'connect': new ConnectEventHandlingStrategy(), + 'sign_event': new SignEventHandlingStrategy(), + 'get_public_key': new GetPublicKeyHandlingStrategy(), + 'describe': new DescribeEventHandlingStrategy(), + }; + + /** + * Enables the user to set a custom strategy for handling incoming events. + * @param method - The method to set the strategy for + * @param strategy - The strategy to set + */ + public setStrategy(method: string, strategy: IEventHandlingStrategy) { + this.handlers[method] = strategy; + } + + protected async handleIncomingEvent(event: NDKEvent) { const { id, method, params } = await this.rpc.parseEvent(event) as any; const remotePubkey = event.pubkey; let response: string | undefined; this.debug('incoming event', {id, method, params}); - switch (method) { - case 'connect': - response = await this.handleConnect(id, params); - break; - case 'sign_event': - response = await this.handleSignEvent(id, remotePubkey, params); - break; - case 'publish_event': - response = await this.handlePublishEvent(id, remotePubkey, params); - break; - case 'get_public_key': - response = await this.handleGetPublicKey(); - break; - case 'describe': - response = await this.handleDescribe(); - break; - default: - this.debug('unsupported method', {method, params}); - break; + const strategy = this.handlers[method]; + if (strategy) { + response = await strategy.handle(this, remotePubkey, params); + } else { + this.debug('unsupported method', {method, params}); } if (response) { + this.debug(`sending response to ${remotePubkey}`, response); this.rpc.sendResponse(id, remotePubkey, response); } }; - private async handleDescribe() { - return JSON.stringify([ - 'describe', - 'get_public_key', - 'sign_event', - 'publish_event', - 'connect', - // 'nip04_encrypt', - // 'nip04_decrypt' - ]); - } - - private async handleGetPublicKey() { - return this.localUser?.hexpubkey(); - } - - private async handleConnect(id: string, params: string[]) { - const [ pubkey ] = params; - - this.debug(`connection request from ${pubkey}`); - - if (await this.pubkeyAllowed(pubkey, 'connect')) { - this.debug(`connection request from ${pubkey} allowed`); - return 'ack'; - } - } - - private async signEvent(remotePubkey: string, params: string[]): Promise { + public async signEvent(remotePubkey: string, params: string[]): Promise { const [ eventString ] = params; this.debug(`sign event request from ${remotePubkey}`); @@ -119,30 +107,17 @@ export class NDKNip46Backend { return undefined; } - await event.sign(this.signer); - } - - private async handleSignEvent(id: string, remotePubkey: string, params: string[]) { - const event = await this.signEvent(remotePubkey, params); - if (!event) return undefined; - - return JSON.stringify(await event.toNostrEvent()); - } - - private async handlePublishEvent(id: string, remotePubkey: string, params: string[]) { - const event = await this.signEvent(remotePubkey, params); - if (!event) return undefined; - - this.ndk.publish(event); + this.debug(`sign event request from ${remotePubkey} allowed`); - return JSON.stringify(await event.toNostrEvent()); + await event.sign(this.signer); + return event; } /** * This method should be overriden by the user to allow or reject incoming * connections. */ - private async pubkeyAllowed(pubkey: string, method: string, params?: any): Promise { + public async pubkeyAllowed(pubkey: string, method: string, params?: any): Promise { return this.permitCallback(pubkey, method, params); } } \ No newline at end of file diff --git a/src/signers/nip46/backend/sign-event.ts b/src/signers/nip46/backend/sign-event.ts new file mode 100644 index 00000000..7a835263 --- /dev/null +++ b/src/signers/nip46/backend/sign-event.ts @@ -0,0 +1,10 @@ +import { IEventHandlingStrategy,NDKNip46Backend } from "./index.js"; + +export default class SignEventHandlingStrategy implements IEventHandlingStrategy { + async handle(backend: NDKNip46Backend, remotePubkey: string, params: string[]): Promise { + const event = await backend.signEvent(remotePubkey, params); + if (!event) return undefined; + + return JSON.stringify(await event.toNostrEvent()); + } +} \ No newline at end of file From 96a2a0c1ec9c10cf0cb8656ef6f75769a3ac960b Mon Sep 17 00:00:00 2001 From: pablof7z Date: Wed, 3 May 2023 15:04:25 +0300 Subject: [PATCH 090/773] Emit `connect` once per pool --- CHANGELOG | 7 +++++++ package.json | 2 +- src/relay/pool/index.ts | 24 ++++++++++++++++++++++-- src/signers/private-key/index.ts | 2 +- 4 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 CHANGELOG diff --git a/CHANGELOG b/CHANGELOG new file mode 100644 index 00000000..8f5d889c --- /dev/null +++ b/CHANGELOG @@ -0,0 +1,7 @@ +# Changelog + +2023-05-03 pablof7z + + Change NDKPool to emit `connect` when the whole pool is connected instead of on a per-relay + basis. NDKPool now emits `relay:connect` when a single relay connects as well as a + `relay:disconnect`. \ No newline at end of file diff --git a/package.json b/package.json index 81777451..a25b0e28 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.3.6", + "version": "0.3.7", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/relay/pool/index.ts b/src/relay/pool/index.ts index 304d8755..41024bd2 100644 --- a/src/relay/pool/index.ts +++ b/src/relay/pool/index.ts @@ -8,6 +8,16 @@ export type NDKPoolStats = { disconnected: number, connecting: number, }; + +/** + * Handles connections to all relays. A single pool should be used per NDK instance. + * + * @emit connect - Emitted when all relays in the pool are connected. + * @emit notice - Emitted when a relay in the pool sends a notice. + * @emit flapping - Emitted when a relay in the pool is flapping. + * @emit relay:connect - Emitted when a relay in the pool connects. + * @emit relay:disconnect - Emitted when a relay in the pool disconnects. + */ export class NDKPool extends EventEmitter { public relays = new Map(); private debug: debug.Debugger; @@ -18,13 +28,23 @@ export class NDKPool extends EventEmitter { relayUrls.forEach(relayUrl => { const relay = new NDKRelay(relayUrl); relay.on('notice', (relay, notice) => this.emit('notice', relay, notice)); - relay.on('connect', () => this.emit('connect', relay)); - relay.on('disconnect', () => this.emit('disconnect', relay)); + relay.on('connect', (r) => this.handleRelayConnect(r)); + relay.on('disconnect', () => this.emit('relay:disconnect', relay)); relay.on('flapping', () => this.handleFlapping(relay)); this.relays.set(relayUrl, relay); }); } + private handleRelayConnect(relay: NDKRelay) { + this.debug(`Relay ${relay.url} connected`); + this.emit('relay:connect', relay); + + // if all relays are connected, emit a 'connect' event + if (this.stats().connected === this.relays.size) { + this.emit('connect'); + } + } + /** * Attempts to establish a connection to each relay in the pool. * diff --git a/src/signers/private-key/index.ts b/src/signers/private-key/index.ts index 9b5400be..06ba29ab 100644 --- a/src/signers/private-key/index.ts +++ b/src/signers/private-key/index.ts @@ -22,7 +22,7 @@ export class NDKPrivateKeySigner implements NDKSigner { public async blockUntilReady(): Promise { if (!this._user) { - throw new Error('NDKUser not initialized'); + throw new Error('NDKUser not initialized'); } return this._user; } From fece2d002c346c094805e7aaeb0ab7c851547f4c Mon Sep 17 00:00:00 2001 From: pablof7z Date: Wed, 3 May 2023 15:42:50 +0300 Subject: [PATCH 091/773] fix conditional that prevents modifying kind 0 --- package.json | 2 +- src/events/kind.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index a25b0e28..10df86e2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.3.7", + "version": "0.3.8", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/kind.ts b/src/events/kind.ts index ffce6a55..c0cab649 100644 --- a/src/events/kind.ts +++ b/src/events/kind.ts @@ -32,7 +32,7 @@ export declare enum NDKKind { } export function isReplaceable(this: NDKEvent): boolean { - if (!this.kind) throw new Error('Kind not set'); + if (this.kind === undefined) throw new Error('Kind not set'); return ( this.kind >= 10000 && this.kind <= 30000 @@ -40,9 +40,9 @@ export function isReplaceable(this: NDKEvent): boolean { } export function isParamReplaceable(this: NDKEvent): boolean { - if (!this.kind) throw new Error('Kind not set'); + if (this.kind === undefined) throw new Error('Kind not set'); return ( this.kind >= 30000 && this.kind <= 40000 ); -} \ No newline at end of file +} From 5d677218ee07a9924fb454fe7316f0285fa3ab59 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Thu, 4 May 2023 12:51:02 +0300 Subject: [PATCH 092/773] Implement NIP-27 mentions --- CHANGELOG | 6 +++ package-lock.json | 82 ++++++++++++++---------------------- package.json | 4 +- src/events/content-tagger.ts | 24 +++++++---- src/events/index.test.ts | 9 ++++ src/events/index.ts | 38 ++++++++++------- src/relay/pool/index.ts | 12 +++--- 7 files changed, 93 insertions(+), 82 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 8f5d889c..ce8beef1 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,11 @@ # Changelog +2023-05-04 pablof7z + + Obsolete `subject` as a first-class citizen since that's not the case in nostr. + + Implement NIP-27 mentions. + 2023-05-03 pablof7z Change NDKPool to emit `connect` when the whole pool is connected instead of on a per-relay diff --git a/package-lock.json b/package-lock.json index d65a260b..f321dca4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.2.3", + "version": "0.3.10", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@nostr-dev-kit/ndk", - "version": "0.2.3", + "version": "0.3.10", "license": "MIT", "dependencies": { "@scure/base": "^1.1.1", @@ -24,6 +24,7 @@ "node-fetch": "^3.3.1", "nostr-tools": "^1.8.1", "tsd": "^0.28.1", + "typedoc": "^0.24.6", "utf8-buffer": "^1.0.0", "websocket-polyfill": "^0.0.3" }, @@ -35,7 +36,6 @@ "jest": "^29.5.0", "prettier-plugin-organize-imports": "^3.2.2", "ts-jest": "^29.1.0", - "typedoc": "^0.23.28", "typedoc-plugin-markdown": "^3.14.0", "typescript": "~4.7.0" } @@ -2167,8 +2167,7 @@ "node_modules/ansi-sequence-parser": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", - "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", - "dev": true + "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==" }, "node_modules/ansi-styles": { "version": "4.3.0", @@ -5768,8 +5767,7 @@ "node_modules/jsonc-parser": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" }, "node_modules/kind-of": { "version": "6.0.3", @@ -5919,8 +5917,7 @@ "node_modules/lunr": { "version": "2.3.9", "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" }, "node_modules/make-dir": { "version": "3.1.0", @@ -5976,7 +5973,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", - "dev": true, "bin": { "marked": "bin/marked.js" }, @@ -7190,7 +7186,6 @@ "version": "0.14.2", "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.2.tgz", "integrity": "sha512-ltSZlSLOuSY0M0Y75KA+ieRaZ0Trf5Wl3gutE7jzLuIcWxLp5i/uEnLoQWNvgKXQ5OMpGkJnVMRLAuzjc0LJ2A==", - "dev": true, "dependencies": { "ansi-sequence-parser": "^1.1.0", "jsonc-parser": "^3.2.0", @@ -7784,14 +7779,13 @@ } }, "node_modules/typedoc": { - "version": "0.23.28", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.28.tgz", - "integrity": "sha512-9x1+hZWTHEQcGoP7qFmlo4unUoVJLB0H/8vfO/7wqTnZxg4kPuji9y3uRzEu0ZKez63OJAUmiGhUrtukC6Uj3w==", - "dev": true, + "version": "0.24.6", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.24.6.tgz", + "integrity": "sha512-c3y3h45xJv3qYwKDAwU6Cl+26CjT0ZvblHzfHJ+SjQDM4p1mZxtgHky4lhmG0+nNarRht8kADfZlbspJWdZarQ==", "dependencies": { "lunr": "^2.3.9", - "marked": "^4.2.12", - "minimatch": "^7.1.3", + "marked": "^4.3.0", + "minimatch": "^9.0.0", "shiki": "^0.14.1" }, "bin": { @@ -7820,21 +7814,19 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/typedoc/node_modules/minimatch": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", - "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", - "dev": true, + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -7971,14 +7963,12 @@ "node_modules/vscode-oniguruma": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", - "dev": true + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==" }, "node_modules/vscode-textmate": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", - "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", - "dev": true + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==" }, "node_modules/walker": { "version": "1.0.8", @@ -9673,8 +9663,7 @@ "ansi-sequence-parser": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", - "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", - "dev": true + "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==" }, "ansi-styles": { "version": "4.3.0", @@ -12267,8 +12256,7 @@ "jsonc-parser": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" }, "kind-of": { "version": "6.0.3", @@ -12387,8 +12375,7 @@ "lunr": { "version": "2.3.9", "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" }, "make-dir": { "version": "3.1.0", @@ -12430,8 +12417,7 @@ "marked": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", - "dev": true + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==" }, "memorystream": { "version": "0.3.1", @@ -13260,7 +13246,6 @@ "version": "0.14.2", "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.2.tgz", "integrity": "sha512-ltSZlSLOuSY0M0Y75KA+ieRaZ0Trf5Wl3gutE7jzLuIcWxLp5i/uEnLoQWNvgKXQ5OMpGkJnVMRLAuzjc0LJ2A==", - "dev": true, "requires": { "ansi-sequence-parser": "^1.1.0", "jsonc-parser": "^3.2.0", @@ -13702,14 +13687,13 @@ } }, "typedoc": { - "version": "0.23.28", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.28.tgz", - "integrity": "sha512-9x1+hZWTHEQcGoP7qFmlo4unUoVJLB0H/8vfO/7wqTnZxg4kPuji9y3uRzEu0ZKez63OJAUmiGhUrtukC6Uj3w==", - "dev": true, + "version": "0.24.6", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.24.6.tgz", + "integrity": "sha512-c3y3h45xJv3qYwKDAwU6Cl+26CjT0ZvblHzfHJ+SjQDM4p1mZxtgHky4lhmG0+nNarRht8kADfZlbspJWdZarQ==", "requires": { "lunr": "^2.3.9", - "marked": "^4.2.12", - "minimatch": "^7.1.3", + "marked": "^4.3.0", + "minimatch": "^9.0.0", "shiki": "^0.14.1" }, "dependencies": { @@ -13717,16 +13701,14 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, "requires": { "balanced-match": "^1.0.0" } }, "minimatch": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", - "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", - "dev": true, + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", "requires": { "brace-expansion": "^2.0.1" } @@ -13833,14 +13815,12 @@ "vscode-oniguruma": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", - "dev": true + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==" }, "vscode-textmate": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", - "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", - "dev": true + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==" }, "walker": { "version": "1.0.8", diff --git a/package.json b/package.json index 10df86e2..505b0973 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.3.8", + "version": "0.3.10", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", @@ -43,7 +43,6 @@ "jest": "^29.5.0", "prettier-plugin-organize-imports": "^3.2.2", "ts-jest": "^29.1.0", - "typedoc": "^0.23.28", "typedoc-plugin-markdown": "^3.14.0", "typescript": "~4.7.0" }, @@ -63,6 +62,7 @@ "node-fetch": "^3.3.1", "nostr-tools": "^1.8.1", "tsd": "^0.28.1", + "typedoc": "^0.24.6", "utf8-buffer": "^1.0.0", "websocket-polyfill": "^0.0.3" } diff --git a/src/events/content-tagger.ts b/src/events/content-tagger.ts index 257df376..7f581352 100644 --- a/src/events/content-tagger.ts +++ b/src/events/content-tagger.ts @@ -3,29 +3,37 @@ import { NDKTag } from './index.js'; import { EventPointer, ProfilePointer } from 'nostr-tools/lib/nip19'; export function generateContentTags(content: string, tags: NDKTag[] = []): {content: string; tags: NDKTag[]} { - const tagRegex = /@(npub|nprofile|note)[a-zA-Z0-9]+/g; + const tagRegex = /(@|nostr:)(npub|nprofile|note|nevent)[a-zA-Z0-9]+/g; content = content.replace(tagRegex, (tag) => { try { - const {type, data} = nip19.decode(tag.slice(1)); - const tagIndex = tags.length; + const entity = tag.split(/(?<=@|nostr:)/)[1]; + const {type, data} = nip19.decode(entity); + let t: NDKTag; switch (type) { case 'npub': - tags.push(['p', data as string]); + t = ['p', data as string]; break; case 'nprofile': - tags.push(['p', (data as ProfilePointer).pubkey as string]); + t = ['p', (data as ProfilePointer).pubkey as string]; break; case 'nevent': - tags.push(['e', (data as EventPointer).id as string]); + t = ['e', (data as EventPointer).id as string]; break; case 'note': - tags.push(['e', data as string]); + t = ['e', data as string]; break; + default: + return tag; } - return `#[${tagIndex}]`; + if (!tags.find((t) => t[0] === t[0] && t[1] === t[1])) { + tags.push(t); + } + + return `nostr:${entity}`; + } catch (error) { return tag; } diff --git a/src/events/index.test.ts b/src/events/index.test.ts index 1ad144b8..6dd8a071 100644 --- a/src/events/index.test.ts +++ b/src/events/index.test.ts @@ -47,6 +47,15 @@ describe("NDKEvent", () => { expect(nostrEvent).toHaveProperty("pubkey"); expect(nostrEvent).toHaveProperty("id"); }); + + describe("mentions", () => { + it("handles NIP-27 mentions", async () => { + event.content = "hello nostr:npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft!"; + const nostrEvent = await event.toNostrEvent(); + const mentionTag = nostrEvent.tags.find((t) => t[0] === "p" && t[1] === "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52"); + expect(mentionTag).toBeTruthy(); + }); + }); }); describe("tagReference", () => { diff --git a/src/events/index.ts b/src/events/index.ts index 32d9d0bf..68fdaefd 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -15,7 +15,6 @@ export type NDKTag = string[]; export type NostrEvent = { created_at: number; content: string; - subject?: string; tags: NDKTag[]; kind?: NDKKind | number; pubkey: string; @@ -23,11 +22,19 @@ export type NostrEvent = { sig?: string; }; +type ContentTag = { + tags: NDKTag[]; + content: string; +} + +/** + * NDKEvent is the basic building block of NDK; most things + * you do with NDK will revolve around writing or consuming NDKEvents. + */ export default class NDKEvent extends EventEmitter { public ndk?: NDK; public created_at?: number; public content = ''; - public subject: string | undefined; public tags: NDKTag[] = []; public kind?: NDKKind | number; public id = ""; @@ -39,7 +46,6 @@ export default class NDKEvent extends EventEmitter { this.ndk = ndk; this.created_at = event?.created_at; this.content = event?.content || ''; - this.subject = event?.subject; this.tags = event?.tags || []; this.id = event?.id || ''; this.sig = event?.sig; @@ -64,7 +70,7 @@ export default class NDKEvent extends EventEmitter { /** * Return a NostrEvent object, trying to fill in missing fields - * when possible. + * when possible, adding tags when necessary. */ async toNostrEvent(pubkey?: string): Promise { if (!pubkey && this.pubkey === '') { @@ -75,9 +81,9 @@ export default class NDKEvent extends EventEmitter { if (!this.created_at) this.created_at = Math.floor(Date.now() / 1000); const nostrEvent = this.rawEvent(); - this.generateTags(); - - if (this.subject) nostrEvent.subject = this.subject; + const {content, tags} = this.generateTags(); + nostrEvent.content = content || ""; + nostrEvent.tags = tags; try { this.id = getEventHash(nostrEvent as UnsignedEvent); @@ -133,23 +139,25 @@ export default class NDKEvent extends EventEmitter { return this.ndk?.publish(this); } - private async generateTags() { + private generateTags(): ContentTag { + let tags: NDKTag[] = []; + // don't autogenerate if there currently are tags - if (this.tags.length > 0) { - const { content, tags } = generateContentTags(this.content, this.tags); - this.content = content; - this.tags = tags; - } + const g = generateContentTags(this.content, this.tags); + const content = g.content; + tags = g.tags; - // if this is a paramterized repleacable event, check if there's a d tag, if not, generate it + // if this is a parameterized replaceable event, check if there's a d tag, if not, generate it if (this.kind && this.kind >= 30000 && this.kind <= 40000) { const dTag = this.getMatchingTags('d')[0]; // generate a string of 32 random bytes if (!dTag) { const str = [...Array(16)].map(() => Math.random().toString(36)[2]).join(''); - this.tags.push(['d', str]); + tags.push(['d', str]); } } + + return { content: content || "", tags }; } /** diff --git a/src/relay/pool/index.ts b/src/relay/pool/index.ts index 41024bd2..a3ba7861 100644 --- a/src/relay/pool/index.ts +++ b/src/relay/pool/index.ts @@ -25,19 +25,19 @@ export class NDKPool extends EventEmitter { public constructor(relayUrls: string[] = [], ndk: NDK) { super(); this.debug = ndk.debug.extend('pool'); - relayUrls.forEach(relayUrl => { + for (const relayUrl of relayUrls) { const relay = new NDKRelay(relayUrl); relay.on('notice', (relay, notice) => this.emit('notice', relay, notice)); - relay.on('connect', (r) => this.handleRelayConnect(r)); + relay.on('connect', () => this.handleRelayConnect(relayUrl)); relay.on('disconnect', () => this.emit('relay:disconnect', relay)); relay.on('flapping', () => this.handleFlapping(relay)); this.relays.set(relayUrl, relay); - }); + } } - private handleRelayConnect(relay: NDKRelay) { - this.debug(`Relay ${relay.url} connected`); - this.emit('relay:connect', relay); + private handleRelayConnect(relayUrl: string) { + this.debug(`Relay ${relayUrl} connected`); + this.emit('relay:connect', this.relays.get(relayUrl)); // if all relays are connected, emit a 'connect' event if (this.stats().connected === this.relays.size) { From b0acfdb0ab7d577022ef097a8cfedcc1da699c10 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Thu, 4 May 2023 12:51:57 +0300 Subject: [PATCH 093/773] update docs --- docs/README.md | 20 ++- docs/classes/NDKEvent.md | 131 ++++++++++---- docs/classes/NDKNip07Signer.md | 78 ++++++++- docs/classes/NDKNip46Backend.md | 177 +++++++++++++++++++ docs/classes/NDKNip46Signer.md | 193 +++++++++++++++++++++ docs/classes/NDKPrivateKeySigner.md | 96 ++++++++-- docs/classes/NDKRelay.md | 26 +-- docs/classes/NDKRelaySet.md | 12 +- docs/classes/NDKSubscription.md | 24 +-- docs/classes/NDKSubscriptionGroup.md | 24 +-- docs/classes/NDKUser.md | 20 +-- docs/classes/default.md | 28 +-- docs/enums/NDKKind.md | 56 +++--- docs/enums/NDKRelayStatus.md | 10 +- docs/enums/NDKSubscriptionCacheUsage.md | 8 +- docs/interfaces/GetUserParams.md | 8 +- docs/interfaces/IEventHandlingStrategy.md | 31 ++++ docs/interfaces/NDKCacheAdapter.md | 6 +- docs/interfaces/NDKConstructorParams.md | 10 +- docs/interfaces/NDKFilterOptions.md | 2 +- docs/interfaces/NDKRelayConnectionStats.md | 8 +- docs/interfaces/NDKSigner.md | 127 ++++++++++++++ docs/interfaces/NDKSubscriptionOptions.md | 10 +- docs/interfaces/NDKUserProfile.md | 20 +-- docs/interfaces/NDKZapInvoice.md | 14 +- docs/modules.md | 95 +++++++++- 26 files changed, 1024 insertions(+), 210 deletions(-) create mode 100644 docs/classes/NDKNip46Backend.md create mode 100644 docs/classes/NDKNip46Signer.md create mode 100644 docs/interfaces/IEventHandlingStrategy.md create mode 100644 docs/interfaces/NDKSigner.md diff --git a/docs/README.md b/docs/README.md index 84eb8b81..2adad8ce 100644 --- a/docs/README.md +++ b/docs/README.md @@ -14,6 +14,21 @@ Besides improving the developer experience, the core goal of NDK is to improve t npm add @nostr-dev-kit/ndk ``` +## Debugging + +NDK uses the `debug` package to assist in understanding what's happening behind the hood. If you are building a package +that runs on the server define the `DEBUG` envionment variable like + +``` +export DEBUG='ndk:*' +``` + +or in the browser enable it by writing in the DevTools console + +``` +localStorage.debug = 'ndk:*' +``` + ## Support ### NDK NIP-28 group chat @@ -32,6 +47,7 @@ npm add @nostr-dev-kit/ndk * Client-side - [ ] LocalStorage - [ ] IndexDB +- [~] NIP-04: Encryption support - [ ] NIP-26: Event delegation - [ ] NIP-41: Relay authentication - [x] NIP-57: Zaps @@ -39,13 +55,13 @@ npm add @nostr-dev-kit/ndk - [x] LUD16 - [ ] NIP-65: Contacts' Relay list - Subscription Management - - [ ] Buffered queries + - [x] Auto-grouping queries - [x] Auto-closing subscriptions - Signing Adapters - [x] Private key - [x] NIP-07 - [ ] NIP-26 - - [ ] NIP-46 + - [x] NIP-46 - Relay discovery - [ ] Gossip-model (NIP-65) - [ ] Implicit relays discovery following pubkey usage diff --git a/docs/classes/NDKEvent.md b/docs/classes/NDKEvent.md index 93a3e80d..81aae76f 100644 --- a/docs/classes/NDKEvent.md +++ b/docs/classes/NDKEvent.md @@ -18,7 +18,9 @@ - [content](NDKEvent.md#content) - [created\_at](NDKEvent.md#created_at) +- [decrypt](NDKEvent.md#decrypt) - [encode](NDKEvent.md#encode) +- [encrypt](NDKEvent.md#encrypt) - [id](NDKEvent.md#id) - [isParamReplaceable](NDKEvent.md#isparamreplaceable) - [isReplaceable](NDKEvent.md#isreplaceable) @@ -53,7 +55,7 @@ | Name | Type | | :------ | :------ | | `ndk?` | [`default`](default.md) | -| `event?` | `NostrEvent` | +| `event?` | [`NostrEvent`](../modules.md#nostrevent) | #### Overrides @@ -61,7 +63,7 @@ EventEmitter.constructor #### Defined in -[src/events/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L35) +[src/events/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L37) ## Properties @@ -71,7 +73,7 @@ EventEmitter.constructor #### Defined in -[src/events/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L27) +[src/events/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L29) ___ @@ -81,7 +83,31 @@ ___ #### Defined in -[src/events/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L26) +[src/events/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L28) + +___ + +### decrypt + +• **decrypt**: (...`args`: [sender: NDKUser, signer?: NDKSigner]) => `Promise`<`void`\> + +#### Type declaration + +▸ (`...args`): `Promise`<`void`\> + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `...args` | [sender: NDKUser, signer?: NDKSigner] | + +##### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/events/index.ts:97](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L97) ___ @@ -105,7 +131,31 @@ ___ #### Defined in -[src/events/index.ts:97](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L97) +[src/events/index.ts:95](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L95) + +___ + +### encrypt + +• **encrypt**: (...`args`: [recipient: NDKUser, signer?: NDKSigner]) => `Promise`<`void`\> + +#### Type declaration + +▸ (`...args`): `Promise`<`void`\> + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `...args` | [recipient: NDKUser, signer?: NDKSigner] | + +##### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/events/index.ts:96](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L96) ___ @@ -115,7 +165,7 @@ ___ #### Defined in -[src/events/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L31) +[src/events/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L33) ___ @@ -139,7 +189,7 @@ ___ #### Defined in -[src/events/index.ts:96](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L96) +[src/events/index.ts:94](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L94) ___ @@ -163,7 +213,7 @@ ___ #### Defined in -[src/events/index.ts:95](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L95) +[src/events/index.ts:93](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L93) ___ @@ -173,7 +223,7 @@ ___ #### Defined in -[src/events/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L30) +[src/events/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L32) ___ @@ -183,7 +233,7 @@ ___ #### Defined in -[src/events/index.ts:25](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L25) +[src/events/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L27) ___ @@ -193,7 +243,7 @@ ___ #### Defined in -[src/events/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L33) +[src/events/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L35) ___ @@ -203,7 +253,7 @@ ___ #### Defined in -[src/events/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L32) +[src/events/index.ts:34](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L34) ___ @@ -213,23 +263,23 @@ ___ #### Defined in -[src/events/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L28) +[src/events/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L30) ___ ### tags -• **tags**: `NDKTag`[] = `[]` +• **tags**: [`NDKTag`](../modules.md#ndktag)[] = `[]` #### Defined in -[src/events/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L29) +[src/events/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L31) ## Methods ### getMatchingTags -▸ **getMatchingTags**(`tagName`): `NDKTag`[] +▸ **getMatchingTags**(`tagName`): [`NDKTag`](../modules.md#ndktag)[] Get all tags with the given name @@ -241,11 +291,11 @@ Get all tags with the given name #### Returns -`NDKTag`[] +[`NDKTag`](../modules.md#ndktag)[] #### Defined in -[src/events/index.ts:102](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L102) +[src/events/index.ts:102](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L102) ___ @@ -259,23 +309,23 @@ ___ #### Defined in -[src/events/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L119) +[src/events/index.ts:130](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L130) ___ ### rawEvent -▸ **rawEvent**(): `NostrEvent` +▸ **rawEvent**(): [`NostrEvent`](../modules.md#nostrevent) Returns the event as is. #### Returns -`NostrEvent` +[`NostrEvent`](../modules.md#nostrevent) #### Defined in -[src/events/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L51) +[src/events/index.ts:53](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L53) ___ @@ -291,13 +341,24 @@ the `d` tag of a parameterized replaceable event #### Defined in -[src/events/index.ts:147](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L147) +[src/events/index.ts:158](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L158) ___ ### sign -▸ **sign**(): `Promise`<`void`\> +▸ **sign**(`signer?`): `Promise`<`void`\> + +Sign the event if a signer is present. + +It will generate tags. +Repleacable events will have their created_at field set to the current time. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `signer?` | [`NDKSigner`](../interfaces/NDKSigner.md) | #### Returns @@ -305,7 +366,7 @@ ___ #### Defined in -[src/events/index.ts:110](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L110) +[src/events/index.ts:116](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L116) ___ @@ -321,7 +382,7 @@ the id of the event, or if it's a parameterized event, the id of the event with #### Defined in -[src/events/index.ts:161](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L161) +[src/events/index.ts:172](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L172) ___ @@ -347,13 +408,13 @@ event = new NDKEvent(ndk, { kind: 30000, pubkey: 'pubkey', tags: [ ["d", "d-code #### Defined in -[src/events/index.ts:181](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L181) +[src/events/index.ts:192](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L192) ___ ### toNostrEvent -▸ **toNostrEvent**(`pubkey?`): `Promise`<`NostrEvent`\> +▸ **toNostrEvent**(`pubkey?`): `Promise`<[`NostrEvent`](../modules.md#nostrevent)\> Return a NostrEvent object, trying to fill in missing fields when possible. @@ -366,25 +427,25 @@ when possible. #### Returns -`Promise`<`NostrEvent`\> +`Promise`<[`NostrEvent`](../modules.md#nostrevent)\> #### Defined in -[src/events/index.ts:66](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L66) +[src/events/index.ts:69](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L69) ___ ### toString -▸ **toString**(): `Promise`<`NostrEvent`\> +▸ **toString**(): `Promise`<[`NostrEvent`](../modules.md#nostrevent)\> #### Returns -`Promise`<`NostrEvent`\> +`Promise`<[`NostrEvent`](../modules.md#nostrevent)\> #### Defined in -[src/events/index.ts:106](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L106) +[src/events/index.ts:106](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L106) ___ @@ -400,7 +461,7 @@ Create a zap request for an existing event | :------ | :------ | :------ | | `amount` | `number` | The amount to zap | | `comment?` | `string` | A comment to add to the zap request | -| `extraTags?` | `NDKTag`[] | Extra tags to add to the zap request | +| `extraTags?` | [`NDKTag`](../modules.md#ndktag)[] | Extra tags to add to the zap request | #### Returns @@ -408,4 +469,4 @@ Create a zap request for an existing event #### Defined in -[src/events/index.ts:197](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/index.ts#L197) +[src/events/index.ts:208](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L208) diff --git a/docs/classes/NDKNip07Signer.md b/docs/classes/NDKNip07Signer.md index 92fcdfd5..e0a1c490 100644 --- a/docs/classes/NDKNip07Signer.md +++ b/docs/classes/NDKNip07Signer.md @@ -7,7 +7,7 @@ with a NIP-07 browser extension (e.g., getalby, nos2x). ## Implements -- `NDKSigner` +- [`NDKSigner`](../interfaces/NDKSigner.md) ## Table of contents @@ -18,6 +18,8 @@ with a NIP-07 browser extension (e.g., getalby, nos2x). ### Methods - [blockUntilReady](NDKNip07Signer.md#blockuntilready) +- [decrypt](NDKNip07Signer.md#decrypt) +- [encrypt](NDKNip07Signer.md#encrypt) - [sign](NDKNip07Signer.md#sign) - [user](NDKNip07Signer.md#user) @@ -29,7 +31,7 @@ with a NIP-07 browser extension (e.g., getalby, nos2x). #### Defined in -[src/signers/nip07/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/signers/nip07/index.ts#L12) +[src/signers/nip07/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip07/index.ts#L12) ## Methods @@ -37,17 +39,75 @@ with a NIP-07 browser extension (e.g., getalby, nos2x). ▸ **blockUntilReady**(): `Promise`<[`NDKUser`](NDKUser.md)\> +Blocks until the signer is ready and returns the associated NDKUser. + #### Returns `Promise`<[`NDKUser`](NDKUser.md)\> +A promise that resolves to the NDKUser instance. + +#### Implementation of + +[NDKSigner](../interfaces/NDKSigner.md).[blockUntilReady](../interfaces/NDKSigner.md#blockuntilready) + +#### Defined in + +[src/signers/nip07/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip07/index.ts#L18) + +___ + +### decrypt + +▸ **decrypt**(`sender`, `value`): `Promise`<`string`\> + +Decrypts the given value. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `sender` | [`NDKUser`](NDKUser.md) | +| `value` | `string` | + +#### Returns + +`Promise`<`string`\> + +#### Implementation of + +[NDKSigner](../interfaces/NDKSigner.md).[decrypt](../interfaces/NDKSigner.md#decrypt) + +#### Defined in + +[src/signers/nip07/index.ts:65](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip07/index.ts#L65) + +___ + +### encrypt + +▸ **encrypt**(`recipient`, `value`): `Promise`<`string`\> + +Encrypts the given Nostr event for the given recipient. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `recipient` | [`NDKUser`](NDKUser.md) | The recipient of the encrypted value. | +| `value` | `string` | The value to be encrypted. | + +#### Returns + +`Promise`<`string`\> + #### Implementation of -NDKSigner.blockUntilReady +[NDKSigner](../interfaces/NDKSigner.md).[encrypt](../interfaces/NDKSigner.md#encrypt) #### Defined in -[src/signers/nip07/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/signers/nip07/index.ts#L18) +[src/signers/nip07/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip07/index.ts#L56) ___ @@ -65,7 +125,7 @@ Error if the NIP-07 is not available on the window object. | Name | Type | Description | | :------ | :------ | :------ | -| `event` | `NostrEvent` | The Nostr event to be signed. | +| `event` | [`NostrEvent`](../modules.md#nostrevent) | The Nostr event to be signed. | #### Returns @@ -75,11 +135,11 @@ The signature of the signed event. #### Implementation of -NDKSigner.sign +[NDKSigner](../interfaces/NDKSigner.md).[sign](../interfaces/NDKSigner.md#sign) #### Defined in -[src/signers/nip07/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/signers/nip07/index.ts#L47) +[src/signers/nip07/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip07/index.ts#L47) ___ @@ -97,8 +157,8 @@ The NDKUser instance. #### Implementation of -NDKSigner.user +[NDKSigner](../interfaces/NDKSigner.md).[user](../interfaces/NDKSigner.md#user) #### Defined in -[src/signers/nip07/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/signers/nip07/index.ts#L33) +[src/signers/nip07/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip07/index.ts#L33) diff --git a/docs/classes/NDKNip46Backend.md b/docs/classes/NDKNip46Backend.md new file mode 100644 index 00000000..4f77e516 --- /dev/null +++ b/docs/classes/NDKNip46Backend.md @@ -0,0 +1,177 @@ +[NDK](../README.md) / [Exports](../modules.md) / NDKNip46Backend + +# Class: NDKNip46Backend + +This class implements a NIP-46 backend, meaning that it will hold a private key +of the npub that wants to be published as. + +This backend is meant to be used by an NDKNip46Signer, which is the class that +should run client-side, where the user wants to sign events from. + +## Table of contents + +### Constructors + +- [constructor](NDKNip46Backend.md#constructor) + +### Properties + +- [debug](NDKNip46Backend.md#debug) +- [handlers](NDKNip46Backend.md#handlers) +- [localUser](NDKNip46Backend.md#localuser) +- [ndk](NDKNip46Backend.md#ndk) + +### Methods + +- [pubkeyAllowed](NDKNip46Backend.md#pubkeyallowed) +- [setStrategy](NDKNip46Backend.md#setstrategy) +- [signEvent](NDKNip46Backend.md#signevent) +- [start](NDKNip46Backend.md#start) + +## Constructors + +### constructor + +• **new NDKNip46Backend**(`ndk`, `privateKey`, `permitCallback`) + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `ndk` | [`default`](default.md) | The NDK instance to use | +| `privateKey` | `string` | The private key of the npub that wants to be published as | +| `permitCallback` | [`Nip46PermitCallback`](../modules.md#nip46permitcallback) | - | + +#### Defined in + +[src/signers/nip46/backend/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/backend/index.ts#L37) + +## Properties + +### debug + +• `Readonly` **debug**: `Debugger` + +#### Defined in + +[src/signers/nip46/backend/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/backend/index.ts#L29) + +___ + +### handlers + +• **handlers**: `Object` + +#### Index signature + +▪ [method: `string`]: [`IEventHandlingStrategy`](../interfaces/IEventHandlingStrategy.md) + +#### Defined in + +[src/signers/nip46/backend/index.ts:60](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/backend/index.ts#L60) + +___ + +### localUser + +• `Optional` **localUser**: [`NDKUser`](NDKUser.md) + +#### Defined in + +[src/signers/nip46/backend/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/backend/index.ts#L28) + +___ + +### ndk + +• `Readonly` **ndk**: [`default`](default.md) + +#### Defined in + +[src/signers/nip46/backend/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/backend/index.ts#L26) + +## Methods + +### pubkeyAllowed + +▸ **pubkeyAllowed**(`pubkey`, `method`, `params?`): `Promise`<`boolean`\> + +This method should be overriden by the user to allow or reject incoming +connections. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `pubkey` | `string` | +| `method` | `string` | +| `params?` | `any` | + +#### Returns + +`Promise`<`boolean`\> + +#### Defined in + +[src/signers/nip46/backend/index.ts:120](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/backend/index.ts#L120) + +___ + +### setStrategy + +▸ **setStrategy**(`method`, `strategy`): `void` + +Enables the user to set a custom strategy for handling incoming events. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `method` | `string` | The method to set the strategy for | +| `strategy` | [`IEventHandlingStrategy`](../interfaces/IEventHandlingStrategy.md) | The strategy to set | + +#### Returns + +`void` + +#### Defined in + +[src/signers/nip46/backend/index.ts:72](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/backend/index.ts#L72) + +___ + +### signEvent + +▸ **signEvent**(`remotePubkey`, `params`): `Promise`<`undefined` \| [`NDKEvent`](NDKEvent.md)\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `remotePubkey` | `string` | +| `params` | `string`[] | + +#### Returns + +`Promise`<`undefined` \| [`NDKEvent`](NDKEvent.md)\> + +#### Defined in + +[src/signers/nip46/backend/index.ts:96](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/backend/index.ts#L96) + +___ + +### start + +▸ **start**(): `Promise`<`void`\> + +This method starts the backend, which will start listening for incoming +requests. + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/signers/nip46/backend/index.ts:49](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/backend/index.ts#L49) diff --git a/docs/classes/NDKNip46Signer.md b/docs/classes/NDKNip46Signer.md new file mode 100644 index 00000000..722ee9f8 --- /dev/null +++ b/docs/classes/NDKNip46Signer.md @@ -0,0 +1,193 @@ +[NDK](../README.md) / [Exports](../modules.md) / NDKNip46Signer + +# Class: NDKNip46Signer + +This NDKSigner implements NIP-46, which allows remote signing of events. +This class is meant to be used client-side, paired with the NDKNip46Backend or a NIP-46 backend (like Nostr-Connect) + +## Implements + +- [`NDKSigner`](../interfaces/NDKSigner.md) + +## Table of contents + +### Constructors + +- [constructor](NDKNip46Signer.md#constructor) + +### Properties + +- [localSigner](NDKNip46Signer.md#localsigner) +- [remotePubkey](NDKNip46Signer.md#remotepubkey) + +### Methods + +- [blockUntilReady](NDKNip46Signer.md#blockuntilready) +- [decrypt](NDKNip46Signer.md#decrypt) +- [encrypt](NDKNip46Signer.md#encrypt) +- [sign](NDKNip46Signer.md#sign) +- [user](NDKNip46Signer.md#user) + +## Constructors + +### constructor + +• **new NDKNip46Signer**(`ndk`, `remotePubkey`, `localSigner?`) + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `ndk` | [`default`](default.md) | The NDK instance to use | +| `remotePubkey` | `string` | The public key of the npub that wants to be published as | +| `localSigner?` | [`NDKSigner`](../interfaces/NDKSigner.md) | The signer that will be used to request events to be signed | + +#### Defined in + +[src/signers/nip46/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/index.ts#L21) + +## Properties + +### localSigner + +• **localSigner**: [`NDKSigner`](../interfaces/NDKSigner.md) + +#### Defined in + +[src/signers/nip46/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/index.ts#L11) + +___ + +### remotePubkey + +• **remotePubkey**: `string` + +#### Defined in + +[src/signers/nip46/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/index.ts#L10) + +## Methods + +### blockUntilReady + +▸ **blockUntilReady**(): `Promise`<[`NDKUser`](NDKUser.md)\> + +Blocks until the signer is ready and returns the associated NDKUser. + +#### Returns + +`Promise`<[`NDKUser`](NDKUser.md)\> + +A promise that resolves to the NDKUser instance. + +#### Implementation of + +[NDKSigner](../interfaces/NDKSigner.md).[blockUntilReady](../interfaces/NDKSigner.md#blockuntilready) + +#### Defined in + +[src/signers/nip46/index.ts:39](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/index.ts#L39) + +___ + +### decrypt + +▸ **decrypt**(`sender`, `value`): `Promise`<`string`\> + +Decrypts the given value. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `sender` | [`NDKUser`](NDKUser.md) | +| `value` | `string` | + +#### Returns + +`Promise`<`string`\> + +#### Implementation of + +[NDKSigner](../interfaces/NDKSigner.md).[decrypt](../interfaces/NDKSigner.md#decrypt) + +#### Defined in + +[src/signers/nip46/index.ts:70](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/index.ts#L70) + +___ + +### encrypt + +▸ **encrypt**(`recipient`, `value`): `Promise`<`string`\> + +Encrypts the given Nostr event for the given recipient. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `recipient` | [`NDKUser`](NDKUser.md) | The recipient of the encrypted value. | +| `value` | `string` | The value to be encrypted. | + +#### Returns + +`Promise`<`string`\> + +#### Implementation of + +[NDKSigner](../interfaces/NDKSigner.md).[encrypt](../interfaces/NDKSigner.md#encrypt) + +#### Defined in + +[src/signers/nip46/index.ts:66](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/index.ts#L66) + +___ + +### sign + +▸ **sign**(`event`): `Promise`<`string`\> + +Signs the given Nostr event. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `event` | [`NostrEvent`](../modules.md#nostrevent) | The Nostr event to be signed. | + +#### Returns + +`Promise`<`string`\> + +A promise that resolves to the signature of the signed event. + +#### Implementation of + +[NDKSigner](../interfaces/NDKSigner.md).[sign](../interfaces/NDKSigner.md#sign) + +#### Defined in + +[src/signers/nip46/index.ts:74](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/index.ts#L74) + +___ + +### user + +▸ **user**(): `Promise`<[`NDKUser`](NDKUser.md)\> + +Getter for the user property. + +#### Returns + +`Promise`<[`NDKUser`](NDKUser.md)\> + +A promise that resolves to the NDKUser instance. + +#### Implementation of + +[NDKSigner](../interfaces/NDKSigner.md).[user](../interfaces/NDKSigner.md#user) + +#### Defined in + +[src/signers/nip46/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/index.ts#L35) diff --git a/docs/classes/NDKPrivateKeySigner.md b/docs/classes/NDKPrivateKeySigner.md index 11f59bad..8968253c 100644 --- a/docs/classes/NDKPrivateKeySigner.md +++ b/docs/classes/NDKPrivateKeySigner.md @@ -2,9 +2,11 @@ # Class: NDKPrivateKeySigner +Interface for NDK signers. + ## Implements -- `NDKSigner` +- [`NDKSigner`](../interfaces/NDKSigner.md) ## Table of contents @@ -19,6 +21,8 @@ ### Methods - [blockUntilReady](NDKPrivateKeySigner.md#blockuntilready) +- [decrypt](NDKPrivateKeySigner.md#decrypt) +- [encrypt](NDKPrivateKeySigner.md#encrypt) - [sign](NDKPrivateKeySigner.md#sign) - [user](NDKPrivateKeySigner.md#user) - [generate](NDKPrivateKeySigner.md#generate) @@ -37,7 +41,7 @@ #### Defined in -[src/signers/private-key/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/signers/private-key/index.ts#L11) +[src/signers/private-key/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/private-key/index.ts#L11) ## Properties @@ -47,7 +51,7 @@ #### Defined in -[src/signers/private-key/index.ts:9](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/signers/private-key/index.ts#L9) +[src/signers/private-key/index.ts:9](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/private-key/index.ts#L9) ## Methods @@ -55,29 +59,63 @@ ▸ **blockUntilReady**(): `Promise`<[`NDKUser`](NDKUser.md)\> +Blocks until the signer is ready and returns the associated NDKUser. + #### Returns `Promise`<[`NDKUser`](NDKUser.md)\> +A promise that resolves to the NDKUser instance. + #### Implementation of -NDKSigner.blockUntilReady +[NDKSigner](../interfaces/NDKSigner.md).[blockUntilReady](../interfaces/NDKSigner.md#blockuntilready) #### Defined in -[src/signers/private-key/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/signers/private-key/index.ts#L23) +[src/signers/private-key/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/private-key/index.ts#L23) ___ -### sign +### decrypt -▸ **sign**(`event`): `Promise`<`string`\> +▸ **decrypt**(`sender`, `value`): `Promise`<`string`\> + +Decrypts the given value. #### Parameters | Name | Type | | :------ | :------ | -| `event` | `NostrEvent` | +| `sender` | [`NDKUser`](NDKUser.md) | +| `value` | `string` | + +#### Returns + +`Promise`<`string`\> + +#### Implementation of + +[NDKSigner](../interfaces/NDKSigner.md).[decrypt](../interfaces/NDKSigner.md#decrypt) + +#### Defined in + +[src/signers/private-key/index.ts:52](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/private-key/index.ts#L52) + +___ + +### encrypt + +▸ **encrypt**(`recipient`, `value`): `Promise`<`string`\> + +Encrypts the given Nostr event for the given recipient. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `recipient` | [`NDKUser`](NDKUser.md) | The recipient of the encrypted value. | +| `value` | `string` | The value to be encrypted. | #### Returns @@ -85,11 +123,39 @@ ___ #### Implementation of -NDKSigner.sign +[NDKSigner](../interfaces/NDKSigner.md).[encrypt](../interfaces/NDKSigner.md#encrypt) #### Defined in -[src/signers/private-key/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/signers/private-key/index.ts#L35) +[src/signers/private-key/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/private-key/index.ts#L43) + +___ + +### sign + +▸ **sign**(`event`): `Promise`<`string`\> + +Signs the given Nostr event. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `event` | [`NostrEvent`](../modules.md#nostrevent) | The Nostr event to be signed. | + +#### Returns + +`Promise`<`string`\> + +A promise that resolves to the signature of the signed event. + +#### Implementation of + +[NDKSigner](../interfaces/NDKSigner.md).[sign](../interfaces/NDKSigner.md#sign) + +#### Defined in + +[src/signers/private-key/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/private-key/index.ts#L35) ___ @@ -97,17 +163,21 @@ ___ ▸ **user**(): `Promise`<[`NDKUser`](NDKUser.md)\> +Getter for the user property. + #### Returns `Promise`<[`NDKUser`](NDKUser.md)\> +A promise that resolves to the NDKUser instance. + #### Implementation of -NDKSigner.user +[NDKSigner](../interfaces/NDKSigner.md).[user](../interfaces/NDKSigner.md#user) #### Defined in -[src/signers/private-key/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/signers/private-key/index.ts#L30) +[src/signers/private-key/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/private-key/index.ts#L30) ___ @@ -121,4 +191,4 @@ ___ #### Defined in -[src/signers/private-key/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/signers/private-key/index.ts#L18) +[src/signers/private-key/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/private-key/index.ts#L18) diff --git a/docs/classes/NDKRelay.md b/docs/classes/NDKRelay.md index 56350a99..e30f02ca 100644 --- a/docs/classes/NDKRelay.md +++ b/docs/classes/NDKRelay.md @@ -75,7 +75,7 @@ EventEmitter.constructor #### Defined in -[src/relay/index.ts:63](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L63) +[src/relay/index.ts:63](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L63) ## Properties @@ -87,7 +87,7 @@ Active subscriptions this relay is connected to #### Defined in -[src/relay/index.ts:61](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L61) +[src/relay/index.ts:61](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L61) ___ @@ -97,7 +97,7 @@ ___ #### Defined in -[src/relay/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L56) +[src/relay/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L56) ___ @@ -107,7 +107,7 @@ ___ #### Defined in -[src/relay/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L51) +[src/relay/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L51) ___ @@ -117,7 +117,7 @@ ___ #### Defined in -[src/relay/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L50) +[src/relay/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L50) ## Accessors @@ -133,7 +133,7 @@ Returns the connection stats. #### Defined in -[src/relay/index.ts:234](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L234) +[src/relay/index.ts:234](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L234) ___ @@ -147,7 +147,7 @@ ___ #### Defined in -[src/relay/index.ts:121](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L121) +[src/relay/index.ts:121](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L121) ## Methods @@ -163,7 +163,7 @@ Connects to the relay. #### Defined in -[src/relay/index.ts:128](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L128) +[src/relay/index.ts:128](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L128) ___ @@ -179,7 +179,7 @@ Disconnects from the relay. #### Defined in -[src/relay/index.ts:139](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L139) +[src/relay/index.ts:139](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L139) ___ @@ -199,7 +199,7 @@ ___ #### Defined in -[src/relay/index.ts:144](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L144) +[src/relay/index.ts:144](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L144) ___ @@ -221,7 +221,7 @@ Publishes an event to the relay. #### Defined in -[src/relay/index.ts:191](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L191) +[src/relay/index.ts:191](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L191) ___ @@ -244,7 +244,7 @@ wasn't the fastest one. #### Defined in -[src/relay/index.ts:202](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L202) +[src/relay/index.ts:202](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L202) ___ @@ -266,4 +266,4 @@ Subscribes to a subscription. #### Defined in -[src/relay/index.ts:164](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L164) +[src/relay/index.ts:164](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L164) diff --git a/docs/classes/NDKRelaySet.md b/docs/classes/NDKRelaySet.md index 00b2fd75..aa436341 100644 --- a/docs/classes/NDKRelaySet.md +++ b/docs/classes/NDKRelaySet.md @@ -40,7 +40,7 @@ Requests to relays should be sent through this interface. #### Defined in -[src/relay/sets/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/sets/index.ts#L20) +[src/relay/sets/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/sets/index.ts#L20) ## Properties @@ -50,7 +50,7 @@ Requests to relays should be sent through this interface. #### Defined in -[src/relay/sets/index.ts:16](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/sets/index.ts#L16) +[src/relay/sets/index.ts:16](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/sets/index.ts#L16) ## Methods @@ -66,7 +66,7 @@ Calculates an ID of this specific combination of relays. #### Defined in -[src/relay/sets/index.ts:34](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/sets/index.ts#L34) +[src/relay/sets/index.ts:34](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/sets/index.ts#L34) ___ @@ -86,7 +86,7 @@ ___ #### Defined in -[src/relay/sets/index.ts:108](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/sets/index.ts#L108) +[src/relay/sets/index.ts:115](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/sets/index.ts#L115) ___ @@ -100,7 +100,7 @@ ___ #### Defined in -[src/relay/sets/index.ts:118](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/sets/index.ts#L118) +[src/relay/sets/index.ts:125](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/sets/index.ts#L125) ___ @@ -122,4 +122,4 @@ Add a subscription to this relay set #### Defined in -[src/relay/sets/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/sets/index.ts#L43) +[src/relay/sets/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/sets/index.ts#L43) diff --git a/docs/classes/NDKSubscription.md b/docs/classes/NDKSubscription.md index b4a71574..782f6b5a 100644 --- a/docs/classes/NDKSubscription.md +++ b/docs/classes/NDKSubscription.md @@ -103,7 +103,7 @@ EventEmitter.constructor #### Defined in -[src/subscription/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L88) +[src/subscription/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L88) ## Properties @@ -113,7 +113,7 @@ EventEmitter.constructor #### Defined in -[src/subscription/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L81) +[src/subscription/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L81) ___ @@ -123,7 +123,7 @@ ___ #### Defined in -[src/subscription/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L84) +[src/subscription/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L84) ___ @@ -133,7 +133,7 @@ ___ #### Defined in -[src/subscription/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L82) +[src/subscription/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L82) ___ @@ -143,7 +143,7 @@ ___ #### Defined in -[src/subscription/index.ts:83](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L83) +[src/subscription/index.ts:83](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L83) ___ @@ -153,7 +153,7 @@ ___ #### Defined in -[src/subscription/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L85) +[src/subscription/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L85) ___ @@ -163,7 +163,7 @@ ___ #### Defined in -[src/subscription/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L80) +[src/subscription/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L80) ## Methods @@ -183,7 +183,7 @@ ___ #### Defined in -[src/subscription/index.ts:251](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L251) +[src/subscription/index.ts:254](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L254) ___ @@ -207,7 +207,7 @@ Called when an event is received from a relay or the cache #### Defined in -[src/subscription/index.ts:222](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L222) +[src/subscription/index.ts:225](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L225) ___ @@ -225,7 +225,7 @@ The groupable ID, or null if the subscription is not groupable. #### Defined in -[src/subscription/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L119) +[src/subscription/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L119) ___ @@ -242,7 +242,7 @@ after creating a subscription. #### Defined in -[src/subscription/index.ts:153](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L153) +[src/subscription/index.ts:156](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L156) ___ @@ -256,4 +256,4 @@ ___ #### Defined in -[src/subscription/index.ts:185](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L185) +[src/subscription/index.ts:188](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L188) diff --git a/docs/classes/NDKSubscriptionGroup.md b/docs/classes/NDKSubscriptionGroup.md index fdca7b4c..0f9db706 100644 --- a/docs/classes/NDKSubscriptionGroup.md +++ b/docs/classes/NDKSubscriptionGroup.md @@ -54,7 +54,7 @@ Events emitted from the group will be emitted from each subscription. #### Defined in -[src/subscription/index.ts:288](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L288) +[src/subscription/index.ts:291](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L291) ## Properties @@ -68,7 +68,7 @@ Events emitted from the group will be emitted from each subscription. #### Defined in -[src/subscription/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L81) +[src/subscription/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L81) ___ @@ -82,7 +82,7 @@ ___ #### Defined in -[src/subscription/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L84) +[src/subscription/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L84) ___ @@ -96,7 +96,7 @@ ___ #### Defined in -[src/subscription/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L82) +[src/subscription/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L82) ___ @@ -110,7 +110,7 @@ ___ #### Defined in -[src/subscription/index.ts:83](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L83) +[src/subscription/index.ts:83](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L83) ___ @@ -124,7 +124,7 @@ ___ #### Defined in -[src/subscription/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L85) +[src/subscription/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L85) ___ @@ -138,7 +138,7 @@ ___ #### Defined in -[src/subscription/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L80) +[src/subscription/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L80) ## Methods @@ -162,7 +162,7 @@ ___ #### Defined in -[src/subscription/index.ts:251](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L251) +[src/subscription/index.ts:254](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L254) ___ @@ -190,7 +190,7 @@ Called when an event is received from a relay or the cache #### Defined in -[src/subscription/index.ts:222](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L222) +[src/subscription/index.ts:225](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L225) ___ @@ -212,7 +212,7 @@ The groupable ID, or null if the subscription is not groupable. #### Defined in -[src/subscription/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L119) +[src/subscription/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L119) ___ @@ -233,7 +233,7 @@ after creating a subscription. #### Defined in -[src/subscription/index.ts:153](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L153) +[src/subscription/index.ts:156](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L156) ___ @@ -251,4 +251,4 @@ ___ #### Defined in -[src/subscription/index.ts:185](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L185) +[src/subscription/index.ts:188](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L188) diff --git a/docs/classes/NDKUser.md b/docs/classes/NDKUser.md index 73a61343..f24a51df 100644 --- a/docs/classes/NDKUser.md +++ b/docs/classes/NDKUser.md @@ -39,7 +39,7 @@ Represents a pubkey. #### Defined in -[src/user/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/index.ts#L24) +[src/user/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/index.ts#L24) ## Properties @@ -65,7 +65,7 @@ Returns a set of users that this user follows. #### Defined in -[src/user/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/index.ts#L80) +[src/user/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/index.ts#L80) ___ @@ -75,7 +75,7 @@ ___ #### Defined in -[src/user/index.ts:19](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/index.ts#L19) +[src/user/index.ts:19](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/index.ts#L19) ___ @@ -85,7 +85,7 @@ ___ #### Defined in -[src/user/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/index.ts#L21) +[src/user/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/index.ts#L21) ___ @@ -95,7 +95,7 @@ ___ #### Defined in -[src/user/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/index.ts#L20) +[src/user/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/index.ts#L20) ___ @@ -105,7 +105,7 @@ ___ #### Defined in -[src/user/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/index.ts#L22) +[src/user/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/index.ts#L22) ## Methods @@ -125,7 +125,7 @@ ___ #### Defined in -[src/user/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/index.ts#L51) +[src/user/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/index.ts#L51) ___ @@ -139,7 +139,7 @@ ___ #### Defined in -[src/user/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/index.ts#L47) +[src/user/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/index.ts#L47) ___ @@ -153,7 +153,7 @@ ___ #### Defined in -[src/user/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/index.ts#L82) +[src/user/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/index.ts#L82) ___ @@ -173,4 +173,4 @@ ___ #### Defined in -[src/user/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/index.ts#L36) +[src/user/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/index.ts#L36) diff --git a/docs/classes/default.md b/docs/classes/default.md index def2283b..73a355a1 100644 --- a/docs/classes/default.md +++ b/docs/classes/default.md @@ -50,7 +50,7 @@ EventEmitter.constructor #### Defined in -[src/index.ts:48](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L48) +[src/index.ts:53](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L53) ## Properties @@ -60,7 +60,7 @@ EventEmitter.constructor #### Defined in -[src/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L43) +[src/index.ts:48](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L48) ___ @@ -70,7 +70,7 @@ ___ #### Defined in -[src/index.ts:44](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L44) +[src/index.ts:49](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L49) ___ @@ -80,7 +80,7 @@ ___ #### Defined in -[src/index.ts:46](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L46) +[src/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L51) ___ @@ -90,17 +90,17 @@ ___ #### Defined in -[src/index.ts:41](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L41) +[src/index.ts:46](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L46) ___ ### signer -• `Optional` **signer**: `NDKSigner` +• `Optional` **signer**: [`NDKSigner`](../interfaces/NDKSigner.md) #### Defined in -[src/index.ts:42](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L42) +[src/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L47) ## Methods @@ -116,7 +116,7 @@ Ensures that a signer is available to sign an event. #### Defined in -[src/index.ts:141](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L141) +[src/index.ts:146](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L146) ___ @@ -139,7 +139,7 @@ If the timeout is reached, the connection will be continued to be established in #### Defined in -[src/index.ts:68](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L68) +[src/index.ts:73](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L73) ___ @@ -162,7 +162,7 @@ Fetch a single event #### Defined in -[src/index.ts:104](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L104) +[src/index.ts:109](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L109) ___ @@ -185,7 +185,7 @@ Fetch events #### Defined in -[src/index.ts:117](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L117) +[src/index.ts:122](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L122) ___ @@ -207,7 +207,7 @@ Get a NDKUser object #### Defined in -[src/index.ts:79](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L79) +[src/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L84) ___ @@ -227,7 +227,7 @@ ___ #### Defined in -[src/index.ts:95](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L95) +[src/index.ts:100](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L100) ___ @@ -248,4 +248,4 @@ ___ #### Defined in -[src/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L85) +[src/index.ts:90](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L90) diff --git a/docs/enums/NDKKind.md b/docs/enums/NDKKind.md index 3f6ee9c5..3d46bc67 100644 --- a/docs/enums/NDKKind.md +++ b/docs/enums/NDKKind.md @@ -43,7 +43,7 @@ #### Defined in -[src/events/kind.ts:31](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L31) +[src/events/kind.ts:31](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L31) ___ @@ -53,7 +53,7 @@ ___ #### Defined in -[src/events/kind.ts:30](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L30) +[src/events/kind.ts:30](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L30) ___ @@ -63,7 +63,7 @@ ___ #### Defined in -[src/events/kind.ts:12](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L12) +[src/events/kind.ts:12](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L12) ___ @@ -73,7 +73,7 @@ ___ #### Defined in -[src/events/kind.ts:29](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L29) +[src/events/kind.ts:29](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L29) ___ @@ -83,7 +83,7 @@ ___ #### Defined in -[src/events/kind.ts:27](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L27) +[src/events/kind.ts:27](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L27) ___ @@ -93,7 +93,7 @@ ___ #### Defined in -[src/events/kind.ts:26](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L26) +[src/events/kind.ts:26](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L26) ___ @@ -103,7 +103,7 @@ ___ #### Defined in -[src/events/kind.ts:13](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L13) +[src/events/kind.ts:13](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L13) ___ @@ -113,7 +113,7 @@ ___ #### Defined in -[src/events/kind.ts:16](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L16) +[src/events/kind.ts:16](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L16) ___ @@ -123,7 +123,7 @@ ___ #### Defined in -[src/events/kind.ts:15](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L15) +[src/events/kind.ts:15](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L15) ___ @@ -133,7 +133,7 @@ ___ #### Defined in -[src/events/kind.ts:14](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L14) +[src/events/kind.ts:14](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L14) ___ @@ -143,7 +143,7 @@ ___ #### Defined in -[src/events/kind.ts:17](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L17) +[src/events/kind.ts:17](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L17) ___ @@ -153,7 +153,7 @@ ___ #### Defined in -[src/events/kind.ts:24](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L24) +[src/events/kind.ts:24](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L24) ___ @@ -163,7 +163,7 @@ ___ #### Defined in -[src/events/kind.ts:7](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L7) +[src/events/kind.ts:7](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L7) ___ @@ -173,7 +173,7 @@ ___ #### Defined in -[src/events/kind.ts:8](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L8) +[src/events/kind.ts:8](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L8) ___ @@ -183,7 +183,7 @@ ___ #### Defined in -[src/events/kind.ts:9](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L9) +[src/events/kind.ts:9](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L9) ___ @@ -193,7 +193,7 @@ ___ #### Defined in -[src/events/kind.ts:4](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L4) +[src/events/kind.ts:4](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L4) ___ @@ -203,7 +203,7 @@ ___ #### Defined in -[src/events/kind.ts:21](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L21) +[src/events/kind.ts:21](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L21) ___ @@ -213,7 +213,7 @@ ___ #### Defined in -[src/events/kind.ts:25](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L25) +[src/events/kind.ts:25](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L25) ___ @@ -223,7 +223,7 @@ ___ #### Defined in -[src/events/kind.ts:22](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L22) +[src/events/kind.ts:22](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L22) ___ @@ -233,7 +233,7 @@ ___ #### Defined in -[src/events/kind.ts:28](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L28) +[src/events/kind.ts:28](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L28) ___ @@ -243,7 +243,7 @@ ___ #### Defined in -[src/events/kind.ts:11](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L11) +[src/events/kind.ts:11](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L11) ___ @@ -253,7 +253,7 @@ ___ #### Defined in -[src/events/kind.ts:6](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L6) +[src/events/kind.ts:6](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L6) ___ @@ -263,7 +263,7 @@ ___ #### Defined in -[src/events/kind.ts:23](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L23) +[src/events/kind.ts:23](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L23) ___ @@ -273,7 +273,7 @@ ___ #### Defined in -[src/events/kind.ts:18](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L18) +[src/events/kind.ts:18](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L18) ___ @@ -283,7 +283,7 @@ ___ #### Defined in -[src/events/kind.ts:10](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L10) +[src/events/kind.ts:10](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L10) ___ @@ -293,7 +293,7 @@ ___ #### Defined in -[src/events/kind.ts:5](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L5) +[src/events/kind.ts:5](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L5) ___ @@ -303,7 +303,7 @@ ___ #### Defined in -[src/events/kind.ts:20](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L20) +[src/events/kind.ts:20](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L20) ___ @@ -313,4 +313,4 @@ ___ #### Defined in -[src/events/kind.ts:19](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/events/kind.ts#L19) +[src/events/kind.ts:19](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L19) diff --git a/docs/enums/NDKRelayStatus.md b/docs/enums/NDKRelayStatus.md index 451151a9..0e3ce553 100644 --- a/docs/enums/NDKRelayStatus.md +++ b/docs/enums/NDKRelayStatus.md @@ -20,7 +20,7 @@ #### Defined in -[src/relay/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L12) +[src/relay/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L12) ___ @@ -30,7 +30,7 @@ ___ #### Defined in -[src/relay/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L11) +[src/relay/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L11) ___ @@ -40,7 +40,7 @@ ___ #### Defined in -[src/relay/index.ts:14](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L14) +[src/relay/index.ts:14](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L14) ___ @@ -50,7 +50,7 @@ ___ #### Defined in -[src/relay/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L13) +[src/relay/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L13) ___ @@ -60,4 +60,4 @@ ___ #### Defined in -[src/relay/index.ts:15](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L15) +[src/relay/index.ts:15](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L15) diff --git a/docs/enums/NDKSubscriptionCacheUsage.md b/docs/enums/NDKSubscriptionCacheUsage.md index df8cb3eb..655f9608 100644 --- a/docs/enums/NDKSubscriptionCacheUsage.md +++ b/docs/enums/NDKSubscriptionCacheUsage.md @@ -19,7 +19,7 @@ #### Defined in -[src/subscription/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L21) +[src/subscription/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L21) ___ @@ -29,7 +29,7 @@ ___ #### Defined in -[src/subscription/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L18) +[src/subscription/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L18) ___ @@ -39,7 +39,7 @@ ___ #### Defined in -[src/subscription/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L27) +[src/subscription/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L27) ___ @@ -49,4 +49,4 @@ ___ #### Defined in -[src/subscription/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L24) +[src/subscription/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L24) diff --git a/docs/interfaces/GetUserParams.md b/docs/interfaces/GetUserParams.md index 9324f549..546e2bf5 100644 --- a/docs/interfaces/GetUserParams.md +++ b/docs/interfaces/GetUserParams.md @@ -29,7 +29,7 @@ NDKUserParams.hexpubkey #### Defined in -[src/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L37) +[src/index.ts:42](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L42) ___ @@ -43,7 +43,7 @@ NDKUserParams.nip05 #### Defined in -[src/user/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/index.ts#L11) +[src/user/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/index.ts#L11) ___ @@ -57,7 +57,7 @@ NDKUserParams.npub #### Defined in -[src/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L36) +[src/index.ts:41](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L41) ___ @@ -71,4 +71,4 @@ NDKUserParams.relayUrls #### Defined in -[src/user/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/index.ts#L12) +[src/user/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/index.ts#L12) diff --git a/docs/interfaces/IEventHandlingStrategy.md b/docs/interfaces/IEventHandlingStrategy.md new file mode 100644 index 00000000..003e6051 --- /dev/null +++ b/docs/interfaces/IEventHandlingStrategy.md @@ -0,0 +1,31 @@ +[NDK](../README.md) / [Exports](../modules.md) / IEventHandlingStrategy + +# Interface: IEventHandlingStrategy + +## Table of contents + +### Methods + +- [handle](IEventHandlingStrategy.md#handle) + +## Methods + +### handle + +▸ **handle**(`backend`, `remotePubkey`, `params`): `Promise`<`undefined` \| `string`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `backend` | [`NDKNip46Backend`](../classes/NDKNip46Backend.md) | +| `remotePubkey` | `string` | +| `params` | `string`[] | + +#### Returns + +`Promise`<`undefined` \| `string`\> + +#### Defined in + +[src/signers/nip46/backend/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/backend/index.ts#L11) diff --git a/docs/interfaces/NDKCacheAdapter.md b/docs/interfaces/NDKCacheAdapter.md index 8e9e9f93..c8aa9962 100644 --- a/docs/interfaces/NDKCacheAdapter.md +++ b/docs/interfaces/NDKCacheAdapter.md @@ -25,7 +25,7 @@ When this is false, the cache will be queried in addition to the relays. #### Defined in -[src/cache/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/cache/index.ts#L10) +[src/cache/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/cache/index.ts#L10) ## Methods @@ -45,7 +45,7 @@ When this is false, the cache will be queried in addition to the relays. #### Defined in -[src/cache/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/cache/index.ts#L12) +[src/cache/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/cache/index.ts#L12) ___ @@ -66,4 +66,4 @@ ___ #### Defined in -[src/cache/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/cache/index.ts#L13) +[src/cache/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/cache/index.ts#L13) diff --git a/docs/interfaces/NDKConstructorParams.md b/docs/interfaces/NDKConstructorParams.md index 98833d1f..ba1361eb 100644 --- a/docs/interfaces/NDKConstructorParams.md +++ b/docs/interfaces/NDKConstructorParams.md @@ -19,7 +19,7 @@ #### Defined in -[src/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L32) +[src/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L37) ___ @@ -29,7 +29,7 @@ ___ #### Defined in -[src/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L33) +[src/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L38) ___ @@ -39,14 +39,14 @@ ___ #### Defined in -[src/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L30) +[src/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L35) ___ ### signer -• `Optional` **signer**: `NDKSigner` +• `Optional` **signer**: [`NDKSigner`](NDKSigner.md) #### Defined in -[src/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/index.ts#L31) +[src/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L36) diff --git a/docs/interfaces/NDKFilterOptions.md b/docs/interfaces/NDKFilterOptions.md index a181ea29..afe4cc6f 100644 --- a/docs/interfaces/NDKFilterOptions.md +++ b/docs/interfaces/NDKFilterOptions.md @@ -16,4 +16,4 @@ #### Defined in -[src/subscription/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L13) +[src/subscription/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L13) diff --git a/docs/interfaces/NDKRelayConnectionStats.md b/docs/interfaces/NDKRelayConnectionStats.md index 98c307d6..8fa3e6ac 100644 --- a/docs/interfaces/NDKRelayConnectionStats.md +++ b/docs/interfaces/NDKRelayConnectionStats.md @@ -21,7 +21,7 @@ The number of times a connection has been attempted. #### Defined in -[src/relay/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L22) +[src/relay/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L22) ___ @@ -33,7 +33,7 @@ The time the current connection was established in milliseconds. #### Defined in -[src/relay/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L37) +[src/relay/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L37) ___ @@ -45,7 +45,7 @@ The durations of the last 100 connections in milliseconds. #### Defined in -[src/relay/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L32) +[src/relay/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L32) ___ @@ -57,4 +57,4 @@ The number of times a connection has been successfully established. #### Defined in -[src/relay/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/relay/index.ts#L27) +[src/relay/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L27) diff --git a/docs/interfaces/NDKSigner.md b/docs/interfaces/NDKSigner.md new file mode 100644 index 00000000..1db31d95 --- /dev/null +++ b/docs/interfaces/NDKSigner.md @@ -0,0 +1,127 @@ +[NDK](../README.md) / [Exports](../modules.md) / NDKSigner + +# Interface: NDKSigner + +Interface for NDK signers. + +## Implemented by + +- [`NDKNip07Signer`](../classes/NDKNip07Signer.md) +- [`NDKNip46Signer`](../classes/NDKNip46Signer.md) +- [`NDKPrivateKeySigner`](../classes/NDKPrivateKeySigner.md) + +## Table of contents + +### Methods + +- [blockUntilReady](NDKSigner.md#blockuntilready) +- [decrypt](NDKSigner.md#decrypt) +- [encrypt](NDKSigner.md#encrypt) +- [sign](NDKSigner.md#sign) +- [user](NDKSigner.md#user) + +## Methods + +### blockUntilReady + +▸ **blockUntilReady**(): `Promise`<[`NDKUser`](../classes/NDKUser.md)\> + +Blocks until the signer is ready and returns the associated NDKUser. + +#### Returns + +`Promise`<[`NDKUser`](../classes/NDKUser.md)\> + +A promise that resolves to the NDKUser instance. + +#### Defined in + +[src/signers/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/index.ts#L12) + +___ + +### decrypt + +▸ **decrypt**(`sender`, `value`): `Promise`<`string`\> + +Decrypts the given value. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `sender` | [`NDKUser`](../classes/NDKUser.md) | +| `value` | `string` | + +#### Returns + +`Promise`<`string`\> + +#### Defined in + +[src/signers/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/index.ts#L38) + +___ + +### encrypt + +▸ **encrypt**(`recipient`, `value`): `Promise`<`string`\> + +Encrypts the given Nostr event for the given recipient. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `recipient` | [`NDKUser`](../classes/NDKUser.md) | The recipient of the encrypted value. | +| `value` | `string` | The value to be encrypted. | + +#### Returns + +`Promise`<`string`\> + +#### Defined in + +[src/signers/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/index.ts#L32) + +___ + +### sign + +▸ **sign**(`event`): `Promise`<`string`\> + +Signs the given Nostr event. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `event` | [`NostrEvent`](../modules.md#nostrevent) | The Nostr event to be signed. | + +#### Returns + +`Promise`<`string`\> + +A promise that resolves to the signature of the signed event. + +#### Defined in + +[src/signers/index.ts:25](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/index.ts#L25) + +___ + +### user + +▸ **user**(): `Promise`<[`NDKUser`](../classes/NDKUser.md)\> + +Getter for the user property. + +#### Returns + +`Promise`<[`NDKUser`](../classes/NDKUser.md)\> + +A promise that resolves to the NDKUser instance. + +#### Defined in + +[src/signers/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/index.ts#L18) diff --git a/docs/interfaces/NDKSubscriptionOptions.md b/docs/interfaces/NDKSubscriptionOptions.md index a33da71b..b8eef590 100644 --- a/docs/interfaces/NDKSubscriptionOptions.md +++ b/docs/interfaces/NDKSubscriptionOptions.md @@ -19,7 +19,7 @@ #### Defined in -[src/subscription/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L32) +[src/subscription/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L32) ___ @@ -29,7 +29,7 @@ ___ #### Defined in -[src/subscription/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L31) +[src/subscription/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L31) ___ @@ -42,7 +42,7 @@ delayed to allow similar filters to be grouped together. #### Defined in -[src/subscription/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L38) +[src/subscription/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L38) ___ @@ -54,8 +54,10 @@ The delay to use when grouping subscriptions, specified in milliseconds. **`Default`** +```ts 100 +``` #### Defined in -[src/subscription/index.ts:44](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L44) +[src/subscription/index.ts:44](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L44) diff --git a/docs/interfaces/NDKUserProfile.md b/docs/interfaces/NDKUserProfile.md index 84066f18..b9dfe129 100644 --- a/docs/interfaces/NDKUserProfile.md +++ b/docs/interfaces/NDKUserProfile.md @@ -25,7 +25,7 @@ #### Defined in -[src/user/profile.ts:12](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/profile.ts#L12) +[src/user/profile.ts:12](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/profile.ts#L12) ___ @@ -35,7 +35,7 @@ ___ #### Defined in -[src/user/profile.ts:7](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/profile.ts#L7) +[src/user/profile.ts:7](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/profile.ts#L7) ___ @@ -45,7 +45,7 @@ ___ #### Defined in -[src/user/profile.ts:8](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/profile.ts#L8) +[src/user/profile.ts:8](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/profile.ts#L8) ___ @@ -55,7 +55,7 @@ ___ #### Defined in -[src/user/profile.ts:5](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/profile.ts#L5) +[src/user/profile.ts:5](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/profile.ts#L5) ___ @@ -65,7 +65,7 @@ ___ #### Defined in -[src/user/profile.ts:6](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/profile.ts#L6) +[src/user/profile.ts:6](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/profile.ts#L6) ___ @@ -75,7 +75,7 @@ ___ #### Defined in -[src/user/profile.ts:10](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/profile.ts#L10) +[src/user/profile.ts:10](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/profile.ts#L10) ___ @@ -85,7 +85,7 @@ ___ #### Defined in -[src/user/profile.ts:11](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/profile.ts#L11) +[src/user/profile.ts:11](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/profile.ts#L11) ___ @@ -95,7 +95,7 @@ ___ #### Defined in -[src/user/profile.ts:4](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/profile.ts#L4) +[src/user/profile.ts:4](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/profile.ts#L4) ___ @@ -105,7 +105,7 @@ ___ #### Defined in -[src/user/profile.ts:9](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/profile.ts#L9) +[src/user/profile.ts:9](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/profile.ts#L9) ___ @@ -115,4 +115,4 @@ ___ #### Defined in -[src/user/profile.ts:13](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/profile.ts#L13) +[src/user/profile.ts:13](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/profile.ts#L13) diff --git a/docs/interfaces/NDKZapInvoice.md b/docs/interfaces/NDKZapInvoice.md index 2fa146a1..7a08d2e2 100644 --- a/docs/interfaces/NDKZapInvoice.md +++ b/docs/interfaces/NDKZapInvoice.md @@ -22,7 +22,7 @@ #### Defined in -[src/zap/invoice.ts:10](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/zap/invoice.ts#L10) +[src/zap/invoice.ts:10](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/zap/invoice.ts#L10) ___ @@ -32,7 +32,7 @@ ___ #### Defined in -[src/zap/invoice.ts:11](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/zap/invoice.ts#L11) +[src/zap/invoice.ts:11](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/zap/invoice.ts#L11) ___ @@ -42,7 +42,7 @@ ___ #### Defined in -[src/zap/invoice.ts:5](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/zap/invoice.ts#L5) +[src/zap/invoice.ts:5](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/zap/invoice.ts#L5) ___ @@ -52,7 +52,7 @@ ___ #### Defined in -[src/zap/invoice.ts:8](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/zap/invoice.ts#L8) +[src/zap/invoice.ts:8](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/zap/invoice.ts#L8) ___ @@ -62,7 +62,7 @@ ___ #### Defined in -[src/zap/invoice.ts:9](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/zap/invoice.ts#L9) +[src/zap/invoice.ts:9](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/zap/invoice.ts#L9) ___ @@ -72,7 +72,7 @@ ___ #### Defined in -[src/zap/invoice.ts:7](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/zap/invoice.ts#L7) +[src/zap/invoice.ts:7](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/zap/invoice.ts#L7) ___ @@ -82,4 +82,4 @@ ___ #### Defined in -[src/zap/invoice.ts:6](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/zap/invoice.ts#L6) +[src/zap/invoice.ts:6](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/zap/invoice.ts#L6) diff --git a/docs/modules.md b/docs/modules.md index 32dd88df..8adbee2a 100644 --- a/docs/modules.md +++ b/docs/modules.md @@ -14,6 +14,8 @@ - [NDKEvent](classes/NDKEvent.md) - [NDKNip07Signer](classes/NDKNip07Signer.md) +- [NDKNip46Backend](classes/NDKNip46Backend.md) +- [NDKNip46Signer](classes/NDKNip46Signer.md) - [NDKPrivateKeySigner](classes/NDKPrivateKeySigner.md) - [NDKRelay](classes/NDKRelay.md) - [NDKRelaySet](classes/NDKRelaySet.md) @@ -21,24 +23,26 @@ - [NDKUser](classes/NDKUser.md) - [default](classes/default.md) -### Events - -- [NDKSubscription](classes/NDKSubscription.md) - ### Interfaces - [GetUserParams](interfaces/GetUserParams.md) +- [IEventHandlingStrategy](interfaces/IEventHandlingStrategy.md) - [NDKCacheAdapter](interfaces/NDKCacheAdapter.md) - [NDKConstructorParams](interfaces/NDKConstructorParams.md) - [NDKFilterOptions](interfaces/NDKFilterOptions.md) - [NDKRelayConnectionStats](interfaces/NDKRelayConnectionStats.md) +- [NDKSigner](interfaces/NDKSigner.md) - [NDKSubscriptionOptions](interfaces/NDKSubscriptionOptions.md) - [NDKUserProfile](interfaces/NDKUserProfile.md) - [NDKZapInvoice](interfaces/NDKZapInvoice.md) ### Type Aliases +- [NDKEventId](modules.md#ndkeventid) - [NDKFilter](modules.md#ndkfilter) +- [NDKTag](modules.md#ndktag) +- [Nip46PermitCallback](modules.md#nip46permitcallback) +- [NostrEvent](modules.md#nostrevent) ### Variables @@ -50,15 +54,88 @@ - [mergeFilters](modules.md#mergefilters) - [zapInvoiceFromEvent](modules.md#zapinvoicefromevent) +### Events + +- [NDKSubscription](classes/NDKSubscription.md) + ## Type Aliases +### NDKEventId + +Ƭ **NDKEventId**: `string` + +#### Defined in + +[src/events/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L12) + +___ + ### NDKFilter Ƭ **NDKFilter**: `NostrFilter` #### Defined in -[src/subscription/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L10) +[src/subscription/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L10) + +___ + +### NDKTag + +Ƭ **NDKTag**: `string`[] + +#### Defined in + +[src/events/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L13) + +___ + +### Nip46PermitCallback + +Ƭ **Nip46PermitCallback**: (`pubkey`: `string`, `method`: `string`, `params?`: `any`) => `Promise`<`boolean`\> + +#### Type declaration + +▸ (`pubkey`, `method`, `params?`): `Promise`<`boolean`\> + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `pubkey` | `string` | +| `method` | `string` | +| `params?` | `any` | + +##### Returns + +`Promise`<`boolean`\> + +#### Defined in + +[src/signers/nip46/backend/index.ts:8](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/backend/index.ts#L8) + +___ + +### NostrEvent + +Ƭ **NostrEvent**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `content` | `string` | +| `created_at` | `number` | +| `id?` | `string` | +| `kind?` | [`NDKKind`](enums/NDKKind.md) \| `number` | +| `pubkey` | `string` | +| `sig?` | `string` | +| `subject?` | `string` | +| `tags` | [`NDKTag`](modules.md#ndktag)[] | + +#### Defined in + +[src/events/index.ts:15](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L15) ## Variables @@ -70,7 +147,7 @@ Default subscription options. #### Defined in -[src/subscription/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L50) +[src/subscription/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L50) ## Functions @@ -91,7 +168,7 @@ Default subscription options. #### Defined in -[src/user/profile.ts:16](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/user/profile.ts#L16) +[src/user/profile.ts:16](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/profile.ts#L16) ___ @@ -114,7 +191,7 @@ relatively similar, and merge them. #### Defined in -[src/subscription/index.ts:382](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/subscription/index.ts#L382) +[src/subscription/index.ts:385](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L385) ___ @@ -134,4 +211,4 @@ ___ #### Defined in -[src/zap/invoice.ts:14](https://github.com/nostr-dev-kit/ndk/blob/7898849/src/zap/invoice.ts#L14) +[src/zap/invoice.ts:14](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/zap/invoice.ts#L14) From 770e10697e2df558965fa3f5809c67e8a7f12a50 Mon Sep 17 00:00:00 2001 From: Vivek Ganesan Date: Sat, 6 May 2023 20:09:39 +0530 Subject: [PATCH 094/773] Fix broken link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b0ef32eb..591244fe 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,7 @@ import NDK from "@nostr-dev-kit/ndk"; ndk = new NDK({ explicitRelayUrls: ["wss://a.relay", "wss://another.relay"] }); ``` -Note: In normal client use, it's best practice to instantiate NDK as a singleton class. [See more below](#architecture). +Note: In normal client use, it's best practice to instantiate NDK as a singleton class. [See more below](#architecture-decisions--suggestions). ## Connecting From 24ef68a8ac12422a11375046c34b8e4daa92a340 Mon Sep 17 00:00:00 2001 From: alltheseas <64376233+alltheseas@users.noreply.github.com> Date: Mon, 8 May 2023 11:57:02 -0500 Subject: [PATCH 095/773] Update README.md Expaned upon objectives, and added NDK Objectives section --- README.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b0ef32eb..ca03d6d0 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,15 @@ drawing -NDK is a Nostr development kit that makes the experience of building Nostr-related applications, whether they are relays, clients, or anything in between, better, more reliable and overall nicer to work with than existing solutions. +NDK is a [nostr]([url](https://github.com/nostr-protocol/nostr)) development kit that makes the experience of building Nostr-related applications, whether they are relays, clients, or anything in between, better, more reliable and overall nicer to work with than existing solutions. + + +## NDK Objectives + +1. The core goal of NDK is to improve the decentralization of Nostr via intelligent conventions and data discovery features without depending on any one central point of coordination (such as large relays or centralized search providers). +2. NDK team aims to have new to nostr devs get set up, and reading a NIP-01 event within 10 minutes. +3. NDK's objective is to serve prospective, and current nostr devs as clients. If you have friction with the NDK developer experience, please open issues, and ask for help from the NDK team! Devs are encouraged to search through existing, and/or create new github issues when experiencing friction with NDK. -Besides improving the developer experience, the core goal of NDK is to improve the decentralization of Nostr via intelligent conventions and data discovery features without depending on any one central point of coordination (such as large relays or centralized search providers). ## Installation From 53521c19884a8f7c0f3e493f7717147db0fc72c3 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Mon, 8 May 2023 21:34:55 +0300 Subject: [PATCH 096/773] add a way to explicitly set the relayset that an event will be published to --- CHANGELOG | 5 +++++ package.json | 2 +- src/events/content-tagger.test.ts | 4 ++-- src/events/index.ts | 7 ++++--- src/index.ts | 16 ++++++++++++++-- src/relay/sets/index.ts | 22 ++++++++++++++++++++++ 6 files changed, 48 insertions(+), 8 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index ce8beef1..0917a367 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,10 @@ # Changelog +2023-05-08 pablof7z + + Allow creating a relayset from a URL and explicitly passing a set for event publication. + (useful for development). + 2023-05-04 pablof7z Obsolete `subject` as a first-class citizen since that's not the case in nostr. diff --git a/package.json b/package.json index 505b0973..cc70eeac 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.3.10", + "version": "0.3.11", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/content-tagger.test.ts b/src/events/content-tagger.test.ts index a9b33b36..a4dd1a4e 100644 --- a/src/events/content-tagger.test.ts +++ b/src/events/content-tagger.test.ts @@ -8,7 +8,7 @@ describe('generateContentTags', () => { const { content: processedContent, tags: processedTags } = generateContentTags(content, tags); - expect(processedContent).toEqual('This is a sample content with #[0] and #[1] tags.'); + expect(processedContent).toEqual('This is a sample content with nostr:npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft and nostr:note1d2mheza0d5z5yycucu94nw37e6gyl4vwl6gavyku86rshkhexq6q30s0g7 tags.'); expect(processedTags.length).toEqual(2); expect(processedTags).toEqual([ ['p', 'fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52'], @@ -32,7 +32,7 @@ describe('generateContentTags', () => { const { content: processedContent, tags: processedTags } = generateContentTags(content, tags); - expect(processedContent).toEqual('This is a sample content with #[1] and #[2] tags.'); + expect(processedContent).toEqual('This is a sample content with nostr:npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft and nostr:note1d2mheza0d5z5yycucu94nw37e6gyl4vwl6gavyku86rshkhexq6q30s0g7 tags.'); expect(processedTags.length).toEqual(3); expect(processedTags).toEqual([ ['p', 'existing_p'], diff --git a/src/events/index.ts b/src/events/index.ts index 68fdaefd..3e7a6196 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -1,6 +1,6 @@ import { getEventHash, UnsignedEvent } from "nostr-tools"; import EventEmitter from "eventemitter3"; -import NDK from "../index.js"; +import NDK, { NDKRelaySet } from "../index.js"; import Zap from '../zap/index.js'; import { generateContentTags } from "./content-tagger.js"; import { NDKKind } from "./kind.js"; @@ -133,10 +133,11 @@ export default class NDKEvent extends EventEmitter { this.sig = await _signer!.sign(nostrEvent); } - public async publish() : Promise { + + public async publish(relaySet?: NDKRelaySet) : Promise { if (!this.sig) await this.sign(); - return this.ndk?.publish(this); + return this.ndk?.publish(this, relaySet); } private generateTags(): ContentTag { diff --git a/src/index.ts b/src/index.ts index ad12df7e..0bccee5d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -9,6 +9,8 @@ import { calculateRelaySetFromEvent } from './relay/sets/calculate.js'; import dedupEvent from './events/dedup.js'; import EventEmitter from 'eventemitter3'; import debug from 'debug'; +import { NDKRelay } from './relay/index.js'; +import { NDKRelaySet } from './relay/sets/index.js'; export { NDKEvent, @@ -33,6 +35,7 @@ export {NDKZapInvoice, zapInvoiceFromEvent} from './zap/invoice.js'; export interface NDKConstructorParams { explicitRelayUrls?: string[]; + explicitWriteRelayUrls?: string[]; signer?: NDKSigner; cacheAdapter?: NDKCacheAdapter; debug?: debug.Debugger; @@ -97,8 +100,17 @@ export default class NDK extends EventEmitter { return subscription; } - public async publish(event: NDKEvent): Promise { - const relaySet = calculateRelaySetFromEvent(this, event); + /** + * Publish an event + * @param event event to publish + * @param relaySet + * @returns + */ + public async publish( + event: NDKEvent, + relaySet?: NDKRelaySet + ): Promise { + if (!relaySet) relaySet = calculateRelaySetFromEvent(this, event); return relaySet.publish(event); } diff --git a/src/relay/sets/index.ts b/src/relay/sets/index.ts index f7024c25..06fcf79e 100644 --- a/src/relay/sets/index.ts +++ b/src/relay/sets/index.ts @@ -23,6 +23,28 @@ export class NDKRelaySet { this.debug = ndk.debug.extend('relayset'); } + /** + * Creates a relay set from a list of relay URLs. + * + * This is useful for testing in development to pass a local relay + * to publish methods. + * + * @param relayUrls - list of relay URLs to include in this set + * @param ndk + * @returns NDKRelaySet + */ + static fromRelayUrls(relayUrls: string[], ndk: NDK): NDKRelaySet { + const relays = new Set(); + for (const url of relayUrls) { + const relay = ndk.pool.relays.get(url); + if (relay) { + relays.add(relay); + } + } + + return new NDKRelaySet(new Set(relays), ndk); + } + private subscribeOnRelay(relay: NDKRelay, subscription: NDKSubscription) { const sub = relay.subscribe(subscription); subscription.relaySubscriptions.set(relay, sub); From cd7af7f20c84b52bb4453fb018e6e3bb76fd0520 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Mon, 8 May 2023 22:18:23 +0300 Subject: [PATCH 097/773] allow a default devWriteRelaySet to be used for always writing to a set --- package-lock.json | 4 ++-- package.json | 2 +- src/events/index.ts | 1 - src/index.ts | 17 +++++++++-------- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index f321dca4..055ab7a7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.3.10", + "version": "0.3.11", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@nostr-dev-kit/ndk", - "version": "0.3.10", + "version": "0.3.11", "license": "MIT", "dependencies": { "@scure/base": "^1.1.1", diff --git a/package.json b/package.json index cc70eeac..c7972d7b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.3.11", + "version": "0.3.13", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/index.ts b/src/events/index.ts index 3e7a6196..e8ac26c1 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -133,7 +133,6 @@ export default class NDKEvent extends EventEmitter { this.sig = await _signer!.sign(nostrEvent); } - public async publish(relaySet?: NDKRelaySet) : Promise { if (!this.sig) await this.sign(); diff --git a/src/index.ts b/src/index.ts index 0bccee5d..afc5acc8 100644 --- a/src/index.ts +++ b/src/index.ts @@ -35,7 +35,7 @@ export {NDKZapInvoice, zapInvoiceFromEvent} from './zap/invoice.js'; export interface NDKConstructorParams { explicitRelayUrls?: string[]; - explicitWriteRelayUrls?: string[]; + devWriteRelayUrls?: string[]; signer?: NDKSigner; cacheAdapter?: NDKCacheAdapter; debug?: debug.Debugger; @@ -50,6 +50,7 @@ export default class NDK extends EventEmitter { public signer?: NDKSigner; public cacheAdapter?: NDKCacheAdapter; public debug: debug.Debugger; + public devWriteRelaySet?: NDKRelaySet; public delayedSubscriptions: Map; @@ -62,11 +63,9 @@ export default class NDK extends EventEmitter { this.cacheAdapter = opts.cacheAdapter; this.delayedSubscriptions = new Map(); - this.debug('initialized', { - relays: opts.explicitRelayUrls, - signer: opts.signer?.constructor.name || 'none', - cacheAdapter: opts.cacheAdapter?.constructor.name || 'none', - }); + if (opts.devWriteRelayUrls) { + this.devWriteRelaySet = NDKRelaySet.fromRelayUrls(opts.devWriteRelayUrls, this); + } } /** @@ -103,14 +102,16 @@ export default class NDK extends EventEmitter { /** * Publish an event * @param event event to publish - * @param relaySet * @returns */ public async publish( event: NDKEvent, relaySet?: NDKRelaySet ): Promise { - if (!relaySet) relaySet = calculateRelaySetFromEvent(this, event); + if (!relaySet) { + // If we have a devWriteRelaySet, use it to publish all events + relaySet = this.devWriteRelaySet || calculateRelaySetFromEvent(this, event); + } return relaySet.publish(event); } From be3129242ef8b8494a27c05d316a3cb0960e6818 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Fri, 12 May 2023 11:08:41 +0300 Subject: [PATCH 098/773] allow subscribe method to set a relayset (re: #27) --- package.json | 2 +- src/index.ts | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index c7972d7b..8c6fedc3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.3.13", + "version": "0.3.141", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/index.ts b/src/index.ts index afc5acc8..d0b782a6 100644 --- a/src/index.ts +++ b/src/index.ts @@ -89,11 +89,21 @@ export default class NDK extends EventEmitter { return user; } + /** + * Create a new subscription. Subscriptions automatically start and finish when all relays + * on the set send back an EOSE. (set `opts.closeOnEose` to `false` in order avoid this) + * + * @param filter + * @param opts + * @param relaySet explicit relay set to use + * @returns NDKSubscription + */ public subscribe( filter: NDKFilter, - opts?: NDKSubscriptionOptions + opts?: NDKSubscriptionOptions, + relaySet?: NDKRelaySet ): NDKSubscription { - const subscription = new NDKSubscription(this, filter, opts); + const subscription = new NDKSubscription(this, filter, opts, relaySet); subscription.start(); return subscription; From 32c4d75f6f847170d1f3e0d1a826948c04456de4 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Fri, 12 May 2023 11:08:47 +0300 Subject: [PATCH 099/773] update docs --- docs/README.md | 10 ++- docs/classes/NDKEvent.md | 72 +++++++++++----------- docs/classes/NDKNip07Signer.md | 12 ++-- docs/classes/NDKNip46Backend.md | 18 +++--- docs/classes/NDKNip46Signer.md | 16 ++--- docs/classes/NDKPrivateKeySigner.md | 16 ++--- docs/classes/NDKRelay.md | 26 ++++---- docs/classes/NDKRelaySet.md | 41 ++++++++++-- docs/classes/NDKSubscription.md | 24 ++++---- docs/classes/NDKSubscriptionGroup.md | 24 ++++---- docs/classes/NDKUser.md | 20 +++--- docs/classes/default.md | 64 ++++++++++++------- docs/enums/NDKKind.md | 56 ++++++++--------- docs/enums/NDKRelayStatus.md | 10 +-- docs/enums/NDKSubscriptionCacheUsage.md | 8 +-- docs/interfaces/GetUserParams.md | 8 +-- docs/interfaces/IEventHandlingStrategy.md | 2 +- docs/interfaces/NDKCacheAdapter.md | 6 +- docs/interfaces/NDKConstructorParams.md | 19 ++++-- docs/interfaces/NDKFilterOptions.md | 2 +- docs/interfaces/NDKRelayConnectionStats.md | 8 +-- docs/interfaces/NDKSigner.md | 10 +-- docs/interfaces/NDKSubscriptionOptions.md | 8 +-- docs/interfaces/NDKUserProfile.md | 20 +++--- docs/interfaces/NDKZapInvoice.md | 14 ++--- docs/modules.md | 19 +++--- 26 files changed, 297 insertions(+), 236 deletions(-) diff --git a/docs/README.md b/docs/README.md index 2adad8ce..e4354140 100644 --- a/docs/README.md +++ b/docs/README.md @@ -4,9 +4,13 @@ NDK / [Exports](modules.md) drawing -NDK is a Nostr development kit that makes the experience of building Nostr-related applications, whether they are relays, clients, or anything in between, better, more reliable and overall nicer to work with than existing solutions. +NDK is a [nostr]([url](https://github.com/nostr-protocol/nostr)) development kit that makes the experience of building Nostr-related applications, whether they are relays, clients, or anything in between, better, more reliable and overall nicer to work with than existing solutions. -Besides improving the developer experience, the core goal of NDK is to improve the decentralization of Nostr via intelligent conventions and data discovery features without depending on any one central point of coordination (such as large relays or centralized search providers). +## NDK Objectives + +1. The core goal of NDK is to improve the decentralization of Nostr via intelligent conventions and data discovery features without depending on any one central point of coordination (such as large relays or centralized search providers). +2. NDK team aims to have new to nostr devs get set up, and reading a NIP-01 event within 10 minutes. +3. NDK's objective is to serve prospective, and current nostr devs as clients. If you have friction with the NDK developer experience, please open issues, and ask for help from the NDK team! Devs are encouraged to search through existing, and/or create new github issues when experiencing friction with NDK. ## Installation @@ -85,7 +89,7 @@ import NDK from "@nostr-dev-kit/ndk"; ndk = new NDK({ explicitRelayUrls: ["wss://a.relay", "wss://another.relay"] }); ``` -Note: In normal client use, it's best practice to instantiate NDK as a singleton class. [See more below](#architecture). +Note: In normal client use, it's best practice to instantiate NDK as a singleton class. [See more below](#architecture-decisions--suggestions). ## Connecting diff --git a/docs/classes/NDKEvent.md b/docs/classes/NDKEvent.md index 81aae76f..716a6e78 100644 --- a/docs/classes/NDKEvent.md +++ b/docs/classes/NDKEvent.md @@ -2,6 +2,9 @@ # Class: NDKEvent +NDKEvent is the basic building block of NDK; most things +you do with NDK will revolve around writing or consuming NDKEvents. + ## Hierarchy - `EventEmitter` @@ -28,7 +31,6 @@ - [ndk](NDKEvent.md#ndk) - [pubkey](NDKEvent.md#pubkey) - [sig](NDKEvent.md#sig) -- [subject](NDKEvent.md#subject) - [tags](NDKEvent.md#tags) ### Methods @@ -63,7 +65,7 @@ EventEmitter.constructor #### Defined in -[src/events/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L37) +[src/events/index.ts:44](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L44) ## Properties @@ -73,7 +75,7 @@ EventEmitter.constructor #### Defined in -[src/events/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L29) +[src/events/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L37) ___ @@ -83,7 +85,7 @@ ___ #### Defined in -[src/events/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L28) +[src/events/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L36) ___ @@ -107,7 +109,7 @@ ___ #### Defined in -[src/events/index.ts:97](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L97) +[src/events/index.ts:103](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L103) ___ @@ -131,7 +133,7 @@ ___ #### Defined in -[src/events/index.ts:95](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L95) +[src/events/index.ts:101](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L101) ___ @@ -155,7 +157,7 @@ ___ #### Defined in -[src/events/index.ts:96](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L96) +[src/events/index.ts:102](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L102) ___ @@ -165,7 +167,7 @@ ___ #### Defined in -[src/events/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L33) +[src/events/index.ts:40](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L40) ___ @@ -189,7 +191,7 @@ ___ #### Defined in -[src/events/index.ts:94](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L94) +[src/events/index.ts:100](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L100) ___ @@ -213,7 +215,7 @@ ___ #### Defined in -[src/events/index.ts:93](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L93) +[src/events/index.ts:99](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L99) ___ @@ -223,7 +225,7 @@ ___ #### Defined in -[src/events/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L32) +[src/events/index.ts:39](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L39) ___ @@ -233,7 +235,7 @@ ___ #### Defined in -[src/events/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L27) +[src/events/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L35) ___ @@ -243,7 +245,7 @@ ___ #### Defined in -[src/events/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L35) +[src/events/index.ts:42](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L42) ___ @@ -253,17 +255,7 @@ ___ #### Defined in -[src/events/index.ts:34](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L34) - -___ - -### subject - -• **subject**: `undefined` \| `string` - -#### Defined in - -[src/events/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L30) +[src/events/index.ts:41](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L41) ___ @@ -273,7 +265,7 @@ ___ #### Defined in -[src/events/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L31) +[src/events/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L38) ## Methods @@ -295,13 +287,19 @@ Get all tags with the given name #### Defined in -[src/events/index.ts:102](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L102) +[src/events/index.ts:108](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L108) ___ ### publish -▸ **publish**(): `Promise`<`void`\> +▸ **publish**(`relaySet?`): `Promise`<`void`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `relaySet?` | [`NDKRelaySet`](NDKRelaySet.md) | #### Returns @@ -309,7 +307,7 @@ ___ #### Defined in -[src/events/index.ts:130](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L130) +[src/events/index.ts:136](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L136) ___ @@ -325,7 +323,7 @@ Returns the event as is. #### Defined in -[src/events/index.ts:53](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L53) +[src/events/index.ts:59](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L59) ___ @@ -341,7 +339,7 @@ the `d` tag of a parameterized replaceable event #### Defined in -[src/events/index.ts:158](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L158) +[src/events/index.ts:166](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L166) ___ @@ -366,7 +364,7 @@ Repleacable events will have their created_at field set to the current time. #### Defined in -[src/events/index.ts:116](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L116) +[src/events/index.ts:122](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L122) ___ @@ -382,7 +380,7 @@ the id of the event, or if it's a parameterized event, the id of the event with #### Defined in -[src/events/index.ts:172](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L172) +[src/events/index.ts:180](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L180) ___ @@ -408,7 +406,7 @@ event = new NDKEvent(ndk, { kind: 30000, pubkey: 'pubkey', tags: [ ["d", "d-code #### Defined in -[src/events/index.ts:192](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L192) +[src/events/index.ts:200](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L200) ___ @@ -417,7 +415,7 @@ ___ ▸ **toNostrEvent**(`pubkey?`): `Promise`<[`NostrEvent`](../modules.md#nostrevent)\> Return a NostrEvent object, trying to fill in missing fields -when possible. +when possible, adding tags when necessary. #### Parameters @@ -431,7 +429,7 @@ when possible. #### Defined in -[src/events/index.ts:69](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L69) +[src/events/index.ts:75](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L75) ___ @@ -445,7 +443,7 @@ ___ #### Defined in -[src/events/index.ts:106](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L106) +[src/events/index.ts:112](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L112) ___ @@ -469,4 +467,4 @@ Create a zap request for an existing event #### Defined in -[src/events/index.ts:208](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L208) +[src/events/index.ts:216](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L216) diff --git a/docs/classes/NDKNip07Signer.md b/docs/classes/NDKNip07Signer.md index e0a1c490..2635d9ec 100644 --- a/docs/classes/NDKNip07Signer.md +++ b/docs/classes/NDKNip07Signer.md @@ -31,7 +31,7 @@ with a NIP-07 browser extension (e.g., getalby, nos2x). #### Defined in -[src/signers/nip07/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip07/index.ts#L12) +[src/signers/nip07/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip07/index.ts#L12) ## Methods @@ -53,7 +53,7 @@ A promise that resolves to the NDKUser instance. #### Defined in -[src/signers/nip07/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip07/index.ts#L18) +[src/signers/nip07/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip07/index.ts#L18) ___ @@ -80,7 +80,7 @@ Decrypts the given value. #### Defined in -[src/signers/nip07/index.ts:65](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip07/index.ts#L65) +[src/signers/nip07/index.ts:65](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip07/index.ts#L65) ___ @@ -107,7 +107,7 @@ Encrypts the given Nostr event for the given recipient. #### Defined in -[src/signers/nip07/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip07/index.ts#L56) +[src/signers/nip07/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip07/index.ts#L56) ___ @@ -139,7 +139,7 @@ The signature of the signed event. #### Defined in -[src/signers/nip07/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip07/index.ts#L47) +[src/signers/nip07/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip07/index.ts#L47) ___ @@ -161,4 +161,4 @@ The NDKUser instance. #### Defined in -[src/signers/nip07/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip07/index.ts#L33) +[src/signers/nip07/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip07/index.ts#L33) diff --git a/docs/classes/NDKNip46Backend.md b/docs/classes/NDKNip46Backend.md index 4f77e516..76f17c6d 100644 --- a/docs/classes/NDKNip46Backend.md +++ b/docs/classes/NDKNip46Backend.md @@ -44,7 +44,7 @@ should run client-side, where the user wants to sign events from. #### Defined in -[src/signers/nip46/backend/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/backend/index.ts#L37) +[src/signers/nip46/backend/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/backend/index.ts#L37) ## Properties @@ -54,7 +54,7 @@ should run client-side, where the user wants to sign events from. #### Defined in -[src/signers/nip46/backend/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/backend/index.ts#L29) +[src/signers/nip46/backend/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/backend/index.ts#L29) ___ @@ -68,7 +68,7 @@ ___ #### Defined in -[src/signers/nip46/backend/index.ts:60](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/backend/index.ts#L60) +[src/signers/nip46/backend/index.ts:60](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/backend/index.ts#L60) ___ @@ -78,7 +78,7 @@ ___ #### Defined in -[src/signers/nip46/backend/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/backend/index.ts#L28) +[src/signers/nip46/backend/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/backend/index.ts#L28) ___ @@ -88,7 +88,7 @@ ___ #### Defined in -[src/signers/nip46/backend/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/backend/index.ts#L26) +[src/signers/nip46/backend/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/backend/index.ts#L26) ## Methods @@ -113,7 +113,7 @@ connections. #### Defined in -[src/signers/nip46/backend/index.ts:120](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/backend/index.ts#L120) +[src/signers/nip46/backend/index.ts:120](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/backend/index.ts#L120) ___ @@ -136,7 +136,7 @@ Enables the user to set a custom strategy for handling incoming events. #### Defined in -[src/signers/nip46/backend/index.ts:72](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/backend/index.ts#L72) +[src/signers/nip46/backend/index.ts:72](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/backend/index.ts#L72) ___ @@ -157,7 +157,7 @@ ___ #### Defined in -[src/signers/nip46/backend/index.ts:96](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/backend/index.ts#L96) +[src/signers/nip46/backend/index.ts:96](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/backend/index.ts#L96) ___ @@ -174,4 +174,4 @@ requests. #### Defined in -[src/signers/nip46/backend/index.ts:49](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/backend/index.ts#L49) +[src/signers/nip46/backend/index.ts:49](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/backend/index.ts#L49) diff --git a/docs/classes/NDKNip46Signer.md b/docs/classes/NDKNip46Signer.md index 722ee9f8..849020f1 100644 --- a/docs/classes/NDKNip46Signer.md +++ b/docs/classes/NDKNip46Signer.md @@ -44,7 +44,7 @@ This class is meant to be used client-side, paired with the NDKNip46Backend or a #### Defined in -[src/signers/nip46/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/index.ts#L21) +[src/signers/nip46/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/index.ts#L21) ## Properties @@ -54,7 +54,7 @@ This class is meant to be used client-side, paired with the NDKNip46Backend or a #### Defined in -[src/signers/nip46/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/index.ts#L11) +[src/signers/nip46/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/index.ts#L11) ___ @@ -64,7 +64,7 @@ ___ #### Defined in -[src/signers/nip46/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/index.ts#L10) +[src/signers/nip46/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/index.ts#L10) ## Methods @@ -86,7 +86,7 @@ A promise that resolves to the NDKUser instance. #### Defined in -[src/signers/nip46/index.ts:39](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/index.ts#L39) +[src/signers/nip46/index.ts:39](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/index.ts#L39) ___ @@ -113,7 +113,7 @@ Decrypts the given value. #### Defined in -[src/signers/nip46/index.ts:70](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/index.ts#L70) +[src/signers/nip46/index.ts:70](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/index.ts#L70) ___ @@ -140,7 +140,7 @@ Encrypts the given Nostr event for the given recipient. #### Defined in -[src/signers/nip46/index.ts:66](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/index.ts#L66) +[src/signers/nip46/index.ts:66](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/index.ts#L66) ___ @@ -168,7 +168,7 @@ A promise that resolves to the signature of the signed event. #### Defined in -[src/signers/nip46/index.ts:74](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/index.ts#L74) +[src/signers/nip46/index.ts:74](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/index.ts#L74) ___ @@ -190,4 +190,4 @@ A promise that resolves to the NDKUser instance. #### Defined in -[src/signers/nip46/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/index.ts#L35) +[src/signers/nip46/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/index.ts#L35) diff --git a/docs/classes/NDKPrivateKeySigner.md b/docs/classes/NDKPrivateKeySigner.md index 8968253c..6d74c041 100644 --- a/docs/classes/NDKPrivateKeySigner.md +++ b/docs/classes/NDKPrivateKeySigner.md @@ -41,7 +41,7 @@ Interface for NDK signers. #### Defined in -[src/signers/private-key/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/private-key/index.ts#L11) +[src/signers/private-key/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/private-key/index.ts#L11) ## Properties @@ -51,7 +51,7 @@ Interface for NDK signers. #### Defined in -[src/signers/private-key/index.ts:9](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/private-key/index.ts#L9) +[src/signers/private-key/index.ts:9](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/private-key/index.ts#L9) ## Methods @@ -73,7 +73,7 @@ A promise that resolves to the NDKUser instance. #### Defined in -[src/signers/private-key/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/private-key/index.ts#L23) +[src/signers/private-key/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/private-key/index.ts#L23) ___ @@ -100,7 +100,7 @@ Decrypts the given value. #### Defined in -[src/signers/private-key/index.ts:52](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/private-key/index.ts#L52) +[src/signers/private-key/index.ts:52](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/private-key/index.ts#L52) ___ @@ -127,7 +127,7 @@ Encrypts the given Nostr event for the given recipient. #### Defined in -[src/signers/private-key/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/private-key/index.ts#L43) +[src/signers/private-key/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/private-key/index.ts#L43) ___ @@ -155,7 +155,7 @@ A promise that resolves to the signature of the signed event. #### Defined in -[src/signers/private-key/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/private-key/index.ts#L35) +[src/signers/private-key/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/private-key/index.ts#L35) ___ @@ -177,7 +177,7 @@ A promise that resolves to the NDKUser instance. #### Defined in -[src/signers/private-key/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/private-key/index.ts#L30) +[src/signers/private-key/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/private-key/index.ts#L30) ___ @@ -191,4 +191,4 @@ ___ #### Defined in -[src/signers/private-key/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/private-key/index.ts#L18) +[src/signers/private-key/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/private-key/index.ts#L18) diff --git a/docs/classes/NDKRelay.md b/docs/classes/NDKRelay.md index e30f02ca..d977296b 100644 --- a/docs/classes/NDKRelay.md +++ b/docs/classes/NDKRelay.md @@ -75,7 +75,7 @@ EventEmitter.constructor #### Defined in -[src/relay/index.ts:63](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L63) +[src/relay/index.ts:63](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L63) ## Properties @@ -87,7 +87,7 @@ Active subscriptions this relay is connected to #### Defined in -[src/relay/index.ts:61](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L61) +[src/relay/index.ts:61](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L61) ___ @@ -97,7 +97,7 @@ ___ #### Defined in -[src/relay/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L56) +[src/relay/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L56) ___ @@ -107,7 +107,7 @@ ___ #### Defined in -[src/relay/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L51) +[src/relay/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L51) ___ @@ -117,7 +117,7 @@ ___ #### Defined in -[src/relay/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L50) +[src/relay/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L50) ## Accessors @@ -133,7 +133,7 @@ Returns the connection stats. #### Defined in -[src/relay/index.ts:234](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L234) +[src/relay/index.ts:234](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L234) ___ @@ -147,7 +147,7 @@ ___ #### Defined in -[src/relay/index.ts:121](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L121) +[src/relay/index.ts:121](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L121) ## Methods @@ -163,7 +163,7 @@ Connects to the relay. #### Defined in -[src/relay/index.ts:128](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L128) +[src/relay/index.ts:128](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L128) ___ @@ -179,7 +179,7 @@ Disconnects from the relay. #### Defined in -[src/relay/index.ts:139](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L139) +[src/relay/index.ts:139](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L139) ___ @@ -199,7 +199,7 @@ ___ #### Defined in -[src/relay/index.ts:144](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L144) +[src/relay/index.ts:144](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L144) ___ @@ -221,7 +221,7 @@ Publishes an event to the relay. #### Defined in -[src/relay/index.ts:191](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L191) +[src/relay/index.ts:191](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L191) ___ @@ -244,7 +244,7 @@ wasn't the fastest one. #### Defined in -[src/relay/index.ts:202](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L202) +[src/relay/index.ts:202](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L202) ___ @@ -266,4 +266,4 @@ Subscribes to a subscription. #### Defined in -[src/relay/index.ts:164](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L164) +[src/relay/index.ts:164](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L164) diff --git a/docs/classes/NDKRelaySet.md b/docs/classes/NDKRelaySet.md index aa436341..2305c30a 100644 --- a/docs/classes/NDKRelaySet.md +++ b/docs/classes/NDKRelaySet.md @@ -24,6 +24,7 @@ Requests to relays should be sent through this interface. - [publish](NDKRelaySet.md#publish) - [size](NDKRelaySet.md#size) - [subscribe](NDKRelaySet.md#subscribe) +- [fromRelayUrls](NDKRelaySet.md#fromrelayurls) ## Constructors @@ -40,7 +41,7 @@ Requests to relays should be sent through this interface. #### Defined in -[src/relay/sets/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/sets/index.ts#L20) +[src/relay/sets/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/sets/index.ts#L20) ## Properties @@ -50,7 +51,7 @@ Requests to relays should be sent through this interface. #### Defined in -[src/relay/sets/index.ts:16](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/sets/index.ts#L16) +[src/relay/sets/index.ts:16](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/sets/index.ts#L16) ## Methods @@ -66,7 +67,7 @@ Calculates an ID of this specific combination of relays. #### Defined in -[src/relay/sets/index.ts:34](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/sets/index.ts#L34) +[src/relay/sets/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/sets/index.ts#L56) ___ @@ -86,7 +87,7 @@ ___ #### Defined in -[src/relay/sets/index.ts:115](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/sets/index.ts#L115) +[src/relay/sets/index.ts:137](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/sets/index.ts#L137) ___ @@ -100,7 +101,7 @@ ___ #### Defined in -[src/relay/sets/index.ts:125](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/sets/index.ts#L125) +[src/relay/sets/index.ts:147](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/sets/index.ts#L147) ___ @@ -122,4 +123,32 @@ Add a subscription to this relay set #### Defined in -[src/relay/sets/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/sets/index.ts#L43) +[src/relay/sets/index.ts:65](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/sets/index.ts#L65) + +___ + +### fromRelayUrls + +▸ `Static` **fromRelayUrls**(`relayUrls`, `ndk`): [`NDKRelaySet`](NDKRelaySet.md) + +Creates a relay set from a list of relay URLs. + +This is useful for testing in development to pass a local relay +to publish methods. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `relayUrls` | `string`[] | list of relay URLs to include in this set | +| `ndk` | [`default`](default.md) | | + +#### Returns + +[`NDKRelaySet`](NDKRelaySet.md) + +NDKRelaySet + +#### Defined in + +[src/relay/sets/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/sets/index.ts#L36) diff --git a/docs/classes/NDKSubscription.md b/docs/classes/NDKSubscription.md index 782f6b5a..40d60533 100644 --- a/docs/classes/NDKSubscription.md +++ b/docs/classes/NDKSubscription.md @@ -103,7 +103,7 @@ EventEmitter.constructor #### Defined in -[src/subscription/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L88) +[src/subscription/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L88) ## Properties @@ -113,7 +113,7 @@ EventEmitter.constructor #### Defined in -[src/subscription/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L81) +[src/subscription/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L81) ___ @@ -123,7 +123,7 @@ ___ #### Defined in -[src/subscription/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L84) +[src/subscription/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L84) ___ @@ -133,7 +133,7 @@ ___ #### Defined in -[src/subscription/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L82) +[src/subscription/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L82) ___ @@ -143,7 +143,7 @@ ___ #### Defined in -[src/subscription/index.ts:83](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L83) +[src/subscription/index.ts:83](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L83) ___ @@ -153,7 +153,7 @@ ___ #### Defined in -[src/subscription/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L85) +[src/subscription/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L85) ___ @@ -163,7 +163,7 @@ ___ #### Defined in -[src/subscription/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L80) +[src/subscription/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L80) ## Methods @@ -183,7 +183,7 @@ ___ #### Defined in -[src/subscription/index.ts:254](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L254) +[src/subscription/index.ts:254](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L254) ___ @@ -207,7 +207,7 @@ Called when an event is received from a relay or the cache #### Defined in -[src/subscription/index.ts:225](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L225) +[src/subscription/index.ts:225](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L225) ___ @@ -225,7 +225,7 @@ The groupable ID, or null if the subscription is not groupable. #### Defined in -[src/subscription/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L119) +[src/subscription/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L119) ___ @@ -242,7 +242,7 @@ after creating a subscription. #### Defined in -[src/subscription/index.ts:156](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L156) +[src/subscription/index.ts:156](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L156) ___ @@ -256,4 +256,4 @@ ___ #### Defined in -[src/subscription/index.ts:188](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L188) +[src/subscription/index.ts:188](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L188) diff --git a/docs/classes/NDKSubscriptionGroup.md b/docs/classes/NDKSubscriptionGroup.md index 0f9db706..2b1b344c 100644 --- a/docs/classes/NDKSubscriptionGroup.md +++ b/docs/classes/NDKSubscriptionGroup.md @@ -54,7 +54,7 @@ Events emitted from the group will be emitted from each subscription. #### Defined in -[src/subscription/index.ts:291](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L291) +[src/subscription/index.ts:291](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L291) ## Properties @@ -68,7 +68,7 @@ Events emitted from the group will be emitted from each subscription. #### Defined in -[src/subscription/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L81) +[src/subscription/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L81) ___ @@ -82,7 +82,7 @@ ___ #### Defined in -[src/subscription/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L84) +[src/subscription/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L84) ___ @@ -96,7 +96,7 @@ ___ #### Defined in -[src/subscription/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L82) +[src/subscription/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L82) ___ @@ -110,7 +110,7 @@ ___ #### Defined in -[src/subscription/index.ts:83](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L83) +[src/subscription/index.ts:83](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L83) ___ @@ -124,7 +124,7 @@ ___ #### Defined in -[src/subscription/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L85) +[src/subscription/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L85) ___ @@ -138,7 +138,7 @@ ___ #### Defined in -[src/subscription/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L80) +[src/subscription/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L80) ## Methods @@ -162,7 +162,7 @@ ___ #### Defined in -[src/subscription/index.ts:254](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L254) +[src/subscription/index.ts:254](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L254) ___ @@ -190,7 +190,7 @@ Called when an event is received from a relay or the cache #### Defined in -[src/subscription/index.ts:225](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L225) +[src/subscription/index.ts:225](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L225) ___ @@ -212,7 +212,7 @@ The groupable ID, or null if the subscription is not groupable. #### Defined in -[src/subscription/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L119) +[src/subscription/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L119) ___ @@ -233,7 +233,7 @@ after creating a subscription. #### Defined in -[src/subscription/index.ts:156](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L156) +[src/subscription/index.ts:156](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L156) ___ @@ -251,4 +251,4 @@ ___ #### Defined in -[src/subscription/index.ts:188](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L188) +[src/subscription/index.ts:188](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L188) diff --git a/docs/classes/NDKUser.md b/docs/classes/NDKUser.md index f24a51df..f89f60c9 100644 --- a/docs/classes/NDKUser.md +++ b/docs/classes/NDKUser.md @@ -39,7 +39,7 @@ Represents a pubkey. #### Defined in -[src/user/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/index.ts#L24) +[src/user/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/index.ts#L24) ## Properties @@ -65,7 +65,7 @@ Returns a set of users that this user follows. #### Defined in -[src/user/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/index.ts#L80) +[src/user/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/index.ts#L80) ___ @@ -75,7 +75,7 @@ ___ #### Defined in -[src/user/index.ts:19](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/index.ts#L19) +[src/user/index.ts:19](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/index.ts#L19) ___ @@ -85,7 +85,7 @@ ___ #### Defined in -[src/user/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/index.ts#L21) +[src/user/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/index.ts#L21) ___ @@ -95,7 +95,7 @@ ___ #### Defined in -[src/user/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/index.ts#L20) +[src/user/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/index.ts#L20) ___ @@ -105,7 +105,7 @@ ___ #### Defined in -[src/user/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/index.ts#L22) +[src/user/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/index.ts#L22) ## Methods @@ -125,7 +125,7 @@ ___ #### Defined in -[src/user/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/index.ts#L51) +[src/user/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/index.ts#L51) ___ @@ -139,7 +139,7 @@ ___ #### Defined in -[src/user/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/index.ts#L47) +[src/user/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/index.ts#L47) ___ @@ -153,7 +153,7 @@ ___ #### Defined in -[src/user/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/index.ts#L82) +[src/user/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/index.ts#L82) ___ @@ -173,4 +173,4 @@ ___ #### Defined in -[src/user/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/index.ts#L36) +[src/user/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/index.ts#L36) diff --git a/docs/classes/default.md b/docs/classes/default.md index 73a355a1..d937be1c 100644 --- a/docs/classes/default.md +++ b/docs/classes/default.md @@ -19,6 +19,7 @@ - [cacheAdapter](default.md#cacheadapter) - [debug](default.md#debug) - [delayedSubscriptions](default.md#delayedsubscriptions) +- [devWriteRelaySet](default.md#devwriterelayset) - [pool](default.md#pool) - [signer](default.md#signer) @@ -50,7 +51,7 @@ EventEmitter.constructor #### Defined in -[src/index.ts:53](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L53) +[src/index.ts:57](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L57) ## Properties @@ -60,7 +61,7 @@ EventEmitter.constructor #### Defined in -[src/index.ts:48](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L48) +[src/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L51) ___ @@ -70,7 +71,7 @@ ___ #### Defined in -[src/index.ts:49](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L49) +[src/index.ts:52](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L52) ___ @@ -80,7 +81,17 @@ ___ #### Defined in -[src/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L51) +[src/index.ts:55](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L55) + +___ + +### devWriteRelaySet + +• `Optional` **devWriteRelaySet**: [`NDKRelaySet`](NDKRelaySet.md) + +#### Defined in + +[src/index.ts:53](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L53) ___ @@ -90,7 +101,7 @@ ___ #### Defined in -[src/index.ts:46](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L46) +[src/index.ts:49](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L49) ___ @@ -100,7 +111,7 @@ ___ #### Defined in -[src/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L47) +[src/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L50) ## Methods @@ -116,7 +127,7 @@ Ensures that a signer is available to sign an event. #### Defined in -[src/index.ts:146](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L146) +[src/index.ts:169](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L169) ___ @@ -139,7 +150,7 @@ If the timeout is reached, the connection will be continued to be established in #### Defined in -[src/index.ts:73](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L73) +[src/index.ts:75](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L75) ___ @@ -162,7 +173,7 @@ Fetch a single event #### Defined in -[src/index.ts:109](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L109) +[src/index.ts:132](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L132) ___ @@ -185,7 +196,7 @@ Fetch events #### Defined in -[src/index.ts:122](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L122) +[src/index.ts:145](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L145) ___ @@ -207,19 +218,22 @@ Get a NDKUser object #### Defined in -[src/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L84) +[src/index.ts:86](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L86) ___ ### publish -▸ **publish**(`event`): `Promise`<`void`\> +▸ **publish**(`event`, `relaySet?`): `Promise`<`void`\> + +Publish an event #### Parameters -| Name | Type | -| :------ | :------ | -| `event` | [`NDKEvent`](NDKEvent.md) | +| Name | Type | Description | +| :------ | :------ | :------ | +| `event` | [`NDKEvent`](NDKEvent.md) | event to publish | +| `relaySet?` | [`NDKRelaySet`](NDKRelaySet.md) | - | #### Returns @@ -227,25 +241,31 @@ ___ #### Defined in -[src/index.ts:100](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L100) +[src/index.ts:117](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L117) ___ ### subscribe -▸ **subscribe**(`filter`, `opts?`): [`NDKSubscription`](NDKSubscription.md) +▸ **subscribe**(`filter`, `opts?`, `relaySet?`): [`NDKSubscription`](NDKSubscription.md) + +Create a new subscription. Subscriptions automatically start and finish when all relays +on the set send back an EOSE. (set `opts.closeOnEose` to `false` in order avoid this) #### Parameters -| Name | Type | -| :------ | :------ | -| `filter` | `Filter` | -| `opts?` | [`NDKSubscriptionOptions`](../interfaces/NDKSubscriptionOptions.md) | +| Name | Type | Description | +| :------ | :------ | :------ | +| `filter` | `Filter` | | +| `opts?` | [`NDKSubscriptionOptions`](../interfaces/NDKSubscriptionOptions.md) | | +| `relaySet?` | [`NDKRelaySet`](NDKRelaySet.md) | explicit relay set to use | #### Returns [`NDKSubscription`](NDKSubscription.md) +NDKSubscription + #### Defined in -[src/index.ts:90](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L90) +[src/index.ts:101](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L101) diff --git a/docs/enums/NDKKind.md b/docs/enums/NDKKind.md index 3d46bc67..9be6aa28 100644 --- a/docs/enums/NDKKind.md +++ b/docs/enums/NDKKind.md @@ -43,7 +43,7 @@ #### Defined in -[src/events/kind.ts:31](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L31) +[src/events/kind.ts:31](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L31) ___ @@ -53,7 +53,7 @@ ___ #### Defined in -[src/events/kind.ts:30](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L30) +[src/events/kind.ts:30](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L30) ___ @@ -63,7 +63,7 @@ ___ #### Defined in -[src/events/kind.ts:12](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L12) +[src/events/kind.ts:12](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L12) ___ @@ -73,7 +73,7 @@ ___ #### Defined in -[src/events/kind.ts:29](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L29) +[src/events/kind.ts:29](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L29) ___ @@ -83,7 +83,7 @@ ___ #### Defined in -[src/events/kind.ts:27](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L27) +[src/events/kind.ts:27](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L27) ___ @@ -93,7 +93,7 @@ ___ #### Defined in -[src/events/kind.ts:26](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L26) +[src/events/kind.ts:26](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L26) ___ @@ -103,7 +103,7 @@ ___ #### Defined in -[src/events/kind.ts:13](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L13) +[src/events/kind.ts:13](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L13) ___ @@ -113,7 +113,7 @@ ___ #### Defined in -[src/events/kind.ts:16](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L16) +[src/events/kind.ts:16](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L16) ___ @@ -123,7 +123,7 @@ ___ #### Defined in -[src/events/kind.ts:15](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L15) +[src/events/kind.ts:15](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L15) ___ @@ -133,7 +133,7 @@ ___ #### Defined in -[src/events/kind.ts:14](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L14) +[src/events/kind.ts:14](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L14) ___ @@ -143,7 +143,7 @@ ___ #### Defined in -[src/events/kind.ts:17](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L17) +[src/events/kind.ts:17](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L17) ___ @@ -153,7 +153,7 @@ ___ #### Defined in -[src/events/kind.ts:24](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L24) +[src/events/kind.ts:24](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L24) ___ @@ -163,7 +163,7 @@ ___ #### Defined in -[src/events/kind.ts:7](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L7) +[src/events/kind.ts:7](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L7) ___ @@ -173,7 +173,7 @@ ___ #### Defined in -[src/events/kind.ts:8](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L8) +[src/events/kind.ts:8](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L8) ___ @@ -183,7 +183,7 @@ ___ #### Defined in -[src/events/kind.ts:9](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L9) +[src/events/kind.ts:9](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L9) ___ @@ -193,7 +193,7 @@ ___ #### Defined in -[src/events/kind.ts:4](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L4) +[src/events/kind.ts:4](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L4) ___ @@ -203,7 +203,7 @@ ___ #### Defined in -[src/events/kind.ts:21](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L21) +[src/events/kind.ts:21](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L21) ___ @@ -213,7 +213,7 @@ ___ #### Defined in -[src/events/kind.ts:25](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L25) +[src/events/kind.ts:25](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L25) ___ @@ -223,7 +223,7 @@ ___ #### Defined in -[src/events/kind.ts:22](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L22) +[src/events/kind.ts:22](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L22) ___ @@ -233,7 +233,7 @@ ___ #### Defined in -[src/events/kind.ts:28](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L28) +[src/events/kind.ts:28](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L28) ___ @@ -243,7 +243,7 @@ ___ #### Defined in -[src/events/kind.ts:11](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L11) +[src/events/kind.ts:11](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L11) ___ @@ -253,7 +253,7 @@ ___ #### Defined in -[src/events/kind.ts:6](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L6) +[src/events/kind.ts:6](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L6) ___ @@ -263,7 +263,7 @@ ___ #### Defined in -[src/events/kind.ts:23](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L23) +[src/events/kind.ts:23](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L23) ___ @@ -273,7 +273,7 @@ ___ #### Defined in -[src/events/kind.ts:18](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L18) +[src/events/kind.ts:18](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L18) ___ @@ -283,7 +283,7 @@ ___ #### Defined in -[src/events/kind.ts:10](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L10) +[src/events/kind.ts:10](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L10) ___ @@ -293,7 +293,7 @@ ___ #### Defined in -[src/events/kind.ts:5](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L5) +[src/events/kind.ts:5](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L5) ___ @@ -303,7 +303,7 @@ ___ #### Defined in -[src/events/kind.ts:20](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L20) +[src/events/kind.ts:20](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L20) ___ @@ -313,4 +313,4 @@ ___ #### Defined in -[src/events/kind.ts:19](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/kind.ts#L19) +[src/events/kind.ts:19](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L19) diff --git a/docs/enums/NDKRelayStatus.md b/docs/enums/NDKRelayStatus.md index 0e3ce553..ca4a6f1e 100644 --- a/docs/enums/NDKRelayStatus.md +++ b/docs/enums/NDKRelayStatus.md @@ -20,7 +20,7 @@ #### Defined in -[src/relay/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L12) +[src/relay/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L12) ___ @@ -30,7 +30,7 @@ ___ #### Defined in -[src/relay/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L11) +[src/relay/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L11) ___ @@ -40,7 +40,7 @@ ___ #### Defined in -[src/relay/index.ts:14](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L14) +[src/relay/index.ts:14](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L14) ___ @@ -50,7 +50,7 @@ ___ #### Defined in -[src/relay/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L13) +[src/relay/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L13) ___ @@ -60,4 +60,4 @@ ___ #### Defined in -[src/relay/index.ts:15](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L15) +[src/relay/index.ts:15](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L15) diff --git a/docs/enums/NDKSubscriptionCacheUsage.md b/docs/enums/NDKSubscriptionCacheUsage.md index 655f9608..df0de336 100644 --- a/docs/enums/NDKSubscriptionCacheUsage.md +++ b/docs/enums/NDKSubscriptionCacheUsage.md @@ -19,7 +19,7 @@ #### Defined in -[src/subscription/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L21) +[src/subscription/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L21) ___ @@ -29,7 +29,7 @@ ___ #### Defined in -[src/subscription/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L18) +[src/subscription/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L18) ___ @@ -39,7 +39,7 @@ ___ #### Defined in -[src/subscription/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L27) +[src/subscription/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L27) ___ @@ -49,4 +49,4 @@ ___ #### Defined in -[src/subscription/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L24) +[src/subscription/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L24) diff --git a/docs/interfaces/GetUserParams.md b/docs/interfaces/GetUserParams.md index 546e2bf5..e1904226 100644 --- a/docs/interfaces/GetUserParams.md +++ b/docs/interfaces/GetUserParams.md @@ -29,7 +29,7 @@ NDKUserParams.hexpubkey #### Defined in -[src/index.ts:42](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L42) +[src/index.ts:45](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L45) ___ @@ -43,7 +43,7 @@ NDKUserParams.nip05 #### Defined in -[src/user/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/index.ts#L11) +[src/user/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/index.ts#L11) ___ @@ -57,7 +57,7 @@ NDKUserParams.npub #### Defined in -[src/index.ts:41](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L41) +[src/index.ts:44](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L44) ___ @@ -71,4 +71,4 @@ NDKUserParams.relayUrls #### Defined in -[src/user/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/index.ts#L12) +[src/user/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/index.ts#L12) diff --git a/docs/interfaces/IEventHandlingStrategy.md b/docs/interfaces/IEventHandlingStrategy.md index 003e6051..7eb30df9 100644 --- a/docs/interfaces/IEventHandlingStrategy.md +++ b/docs/interfaces/IEventHandlingStrategy.md @@ -28,4 +28,4 @@ #### Defined in -[src/signers/nip46/backend/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/backend/index.ts#L11) +[src/signers/nip46/backend/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/backend/index.ts#L11) diff --git a/docs/interfaces/NDKCacheAdapter.md b/docs/interfaces/NDKCacheAdapter.md index c8aa9962..3034ee2d 100644 --- a/docs/interfaces/NDKCacheAdapter.md +++ b/docs/interfaces/NDKCacheAdapter.md @@ -25,7 +25,7 @@ When this is false, the cache will be queried in addition to the relays. #### Defined in -[src/cache/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/cache/index.ts#L10) +[src/cache/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/cache/index.ts#L10) ## Methods @@ -45,7 +45,7 @@ When this is false, the cache will be queried in addition to the relays. #### Defined in -[src/cache/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/cache/index.ts#L12) +[src/cache/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/cache/index.ts#L12) ___ @@ -66,4 +66,4 @@ ___ #### Defined in -[src/cache/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/cache/index.ts#L13) +[src/cache/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/cache/index.ts#L13) diff --git a/docs/interfaces/NDKConstructorParams.md b/docs/interfaces/NDKConstructorParams.md index ba1361eb..648dcf88 100644 --- a/docs/interfaces/NDKConstructorParams.md +++ b/docs/interfaces/NDKConstructorParams.md @@ -8,6 +8,7 @@ - [cacheAdapter](NDKConstructorParams.md#cacheadapter) - [debug](NDKConstructorParams.md#debug) +- [devWriteRelayUrls](NDKConstructorParams.md#devwriterelayurls) - [explicitRelayUrls](NDKConstructorParams.md#explicitrelayurls) - [signer](NDKConstructorParams.md#signer) @@ -19,7 +20,7 @@ #### Defined in -[src/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L37) +[src/index.ts:40](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L40) ___ @@ -29,7 +30,17 @@ ___ #### Defined in -[src/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L38) +[src/index.ts:41](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L41) + +___ + +### devWriteRelayUrls + +• `Optional` **devWriteRelayUrls**: `string`[] + +#### Defined in + +[src/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L38) ___ @@ -39,7 +50,7 @@ ___ #### Defined in -[src/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L35) +[src/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L37) ___ @@ -49,4 +60,4 @@ ___ #### Defined in -[src/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/index.ts#L36) +[src/index.ts:39](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L39) diff --git a/docs/interfaces/NDKFilterOptions.md b/docs/interfaces/NDKFilterOptions.md index afe4cc6f..be5ac00a 100644 --- a/docs/interfaces/NDKFilterOptions.md +++ b/docs/interfaces/NDKFilterOptions.md @@ -16,4 +16,4 @@ #### Defined in -[src/subscription/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L13) +[src/subscription/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L13) diff --git a/docs/interfaces/NDKRelayConnectionStats.md b/docs/interfaces/NDKRelayConnectionStats.md index 8fa3e6ac..10b76b2e 100644 --- a/docs/interfaces/NDKRelayConnectionStats.md +++ b/docs/interfaces/NDKRelayConnectionStats.md @@ -21,7 +21,7 @@ The number of times a connection has been attempted. #### Defined in -[src/relay/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L22) +[src/relay/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L22) ___ @@ -33,7 +33,7 @@ The time the current connection was established in milliseconds. #### Defined in -[src/relay/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L37) +[src/relay/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L37) ___ @@ -45,7 +45,7 @@ The durations of the last 100 connections in milliseconds. #### Defined in -[src/relay/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L32) +[src/relay/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L32) ___ @@ -57,4 +57,4 @@ The number of times a connection has been successfully established. #### Defined in -[src/relay/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/relay/index.ts#L27) +[src/relay/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L27) diff --git a/docs/interfaces/NDKSigner.md b/docs/interfaces/NDKSigner.md index 1db31d95..e52f7108 100644 --- a/docs/interfaces/NDKSigner.md +++ b/docs/interfaces/NDKSigner.md @@ -36,7 +36,7 @@ A promise that resolves to the NDKUser instance. #### Defined in -[src/signers/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/index.ts#L12) +[src/signers/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/index.ts#L12) ___ @@ -59,7 +59,7 @@ Decrypts the given value. #### Defined in -[src/signers/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/index.ts#L38) +[src/signers/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/index.ts#L38) ___ @@ -82,7 +82,7 @@ Encrypts the given Nostr event for the given recipient. #### Defined in -[src/signers/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/index.ts#L32) +[src/signers/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/index.ts#L32) ___ @@ -106,7 +106,7 @@ A promise that resolves to the signature of the signed event. #### Defined in -[src/signers/index.ts:25](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/index.ts#L25) +[src/signers/index.ts:25](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/index.ts#L25) ___ @@ -124,4 +124,4 @@ A promise that resolves to the NDKUser instance. #### Defined in -[src/signers/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/index.ts#L18) +[src/signers/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/index.ts#L18) diff --git a/docs/interfaces/NDKSubscriptionOptions.md b/docs/interfaces/NDKSubscriptionOptions.md index b8eef590..6a4d84dc 100644 --- a/docs/interfaces/NDKSubscriptionOptions.md +++ b/docs/interfaces/NDKSubscriptionOptions.md @@ -19,7 +19,7 @@ #### Defined in -[src/subscription/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L32) +[src/subscription/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L32) ___ @@ -29,7 +29,7 @@ ___ #### Defined in -[src/subscription/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L31) +[src/subscription/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L31) ___ @@ -42,7 +42,7 @@ delayed to allow similar filters to be grouped together. #### Defined in -[src/subscription/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L38) +[src/subscription/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L38) ___ @@ -60,4 +60,4 @@ The delay to use when grouping subscriptions, specified in milliseconds. #### Defined in -[src/subscription/index.ts:44](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L44) +[src/subscription/index.ts:44](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L44) diff --git a/docs/interfaces/NDKUserProfile.md b/docs/interfaces/NDKUserProfile.md index b9dfe129..786f692e 100644 --- a/docs/interfaces/NDKUserProfile.md +++ b/docs/interfaces/NDKUserProfile.md @@ -25,7 +25,7 @@ #### Defined in -[src/user/profile.ts:12](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/profile.ts#L12) +[src/user/profile.ts:12](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/profile.ts#L12) ___ @@ -35,7 +35,7 @@ ___ #### Defined in -[src/user/profile.ts:7](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/profile.ts#L7) +[src/user/profile.ts:7](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/profile.ts#L7) ___ @@ -45,7 +45,7 @@ ___ #### Defined in -[src/user/profile.ts:8](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/profile.ts#L8) +[src/user/profile.ts:8](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/profile.ts#L8) ___ @@ -55,7 +55,7 @@ ___ #### Defined in -[src/user/profile.ts:5](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/profile.ts#L5) +[src/user/profile.ts:5](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/profile.ts#L5) ___ @@ -65,7 +65,7 @@ ___ #### Defined in -[src/user/profile.ts:6](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/profile.ts#L6) +[src/user/profile.ts:6](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/profile.ts#L6) ___ @@ -75,7 +75,7 @@ ___ #### Defined in -[src/user/profile.ts:10](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/profile.ts#L10) +[src/user/profile.ts:10](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/profile.ts#L10) ___ @@ -85,7 +85,7 @@ ___ #### Defined in -[src/user/profile.ts:11](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/profile.ts#L11) +[src/user/profile.ts:11](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/profile.ts#L11) ___ @@ -95,7 +95,7 @@ ___ #### Defined in -[src/user/profile.ts:4](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/profile.ts#L4) +[src/user/profile.ts:4](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/profile.ts#L4) ___ @@ -105,7 +105,7 @@ ___ #### Defined in -[src/user/profile.ts:9](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/profile.ts#L9) +[src/user/profile.ts:9](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/profile.ts#L9) ___ @@ -115,4 +115,4 @@ ___ #### Defined in -[src/user/profile.ts:13](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/profile.ts#L13) +[src/user/profile.ts:13](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/profile.ts#L13) diff --git a/docs/interfaces/NDKZapInvoice.md b/docs/interfaces/NDKZapInvoice.md index 7a08d2e2..fb0201ab 100644 --- a/docs/interfaces/NDKZapInvoice.md +++ b/docs/interfaces/NDKZapInvoice.md @@ -22,7 +22,7 @@ #### Defined in -[src/zap/invoice.ts:10](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/zap/invoice.ts#L10) +[src/zap/invoice.ts:10](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/zap/invoice.ts#L10) ___ @@ -32,7 +32,7 @@ ___ #### Defined in -[src/zap/invoice.ts:11](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/zap/invoice.ts#L11) +[src/zap/invoice.ts:11](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/zap/invoice.ts#L11) ___ @@ -42,7 +42,7 @@ ___ #### Defined in -[src/zap/invoice.ts:5](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/zap/invoice.ts#L5) +[src/zap/invoice.ts:5](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/zap/invoice.ts#L5) ___ @@ -52,7 +52,7 @@ ___ #### Defined in -[src/zap/invoice.ts:8](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/zap/invoice.ts#L8) +[src/zap/invoice.ts:8](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/zap/invoice.ts#L8) ___ @@ -62,7 +62,7 @@ ___ #### Defined in -[src/zap/invoice.ts:9](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/zap/invoice.ts#L9) +[src/zap/invoice.ts:9](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/zap/invoice.ts#L9) ___ @@ -72,7 +72,7 @@ ___ #### Defined in -[src/zap/invoice.ts:7](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/zap/invoice.ts#L7) +[src/zap/invoice.ts:7](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/zap/invoice.ts#L7) ___ @@ -82,4 +82,4 @@ ___ #### Defined in -[src/zap/invoice.ts:6](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/zap/invoice.ts#L6) +[src/zap/invoice.ts:6](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/zap/invoice.ts#L6) diff --git a/docs/modules.md b/docs/modules.md index 8adbee2a..c7067fe1 100644 --- a/docs/modules.md +++ b/docs/modules.md @@ -66,7 +66,7 @@ #### Defined in -[src/events/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L12) +[src/events/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L12) ___ @@ -76,7 +76,7 @@ ___ #### Defined in -[src/subscription/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L10) +[src/subscription/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L10) ___ @@ -86,7 +86,7 @@ ___ #### Defined in -[src/events/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L13) +[src/events/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L13) ___ @@ -112,7 +112,7 @@ ___ #### Defined in -[src/signers/nip46/backend/index.ts:8](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/signers/nip46/backend/index.ts#L8) +[src/signers/nip46/backend/index.ts:8](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/backend/index.ts#L8) ___ @@ -130,12 +130,11 @@ ___ | `kind?` | [`NDKKind`](enums/NDKKind.md) \| `number` | | `pubkey` | `string` | | `sig?` | `string` | -| `subject?` | `string` | | `tags` | [`NDKTag`](modules.md#ndktag)[] | #### Defined in -[src/events/index.ts:15](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/events/index.ts#L15) +[src/events/index.ts:15](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L15) ## Variables @@ -147,7 +146,7 @@ Default subscription options. #### Defined in -[src/subscription/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L50) +[src/subscription/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L50) ## Functions @@ -168,7 +167,7 @@ Default subscription options. #### Defined in -[src/user/profile.ts:16](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/user/profile.ts#L16) +[src/user/profile.ts:16](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/profile.ts#L16) ___ @@ -191,7 +190,7 @@ relatively similar, and merge them. #### Defined in -[src/subscription/index.ts:385](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/subscription/index.ts#L385) +[src/subscription/index.ts:385](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L385) ___ @@ -211,4 +210,4 @@ ___ #### Defined in -[src/zap/invoice.ts:14](https://github.com/nostr-dev-kit/ndk/blob/fece2d0/src/zap/invoice.ts#L14) +[src/zap/invoice.ts:14](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/zap/invoice.ts#L14) From db0201b5337d23c48fa0dec364ee7bccd4332348 Mon Sep 17 00:00:00 2001 From: Kamal Raj Sekar Date: Sat, 13 May 2023 05:48:02 +0100 Subject: [PATCH 100/773] Correct typos in README.md update readme.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e73a05ef..ba9c9f06 100644 --- a/README.md +++ b/README.md @@ -163,7 +163,7 @@ NDK will eventually allow you to use multiple caches simultaneously and allow fo ### Where to look is more important that long-term storage -The most important data to cache is _where_ a user or note might be found. UX suffers profoundly when this type of data cannot be found. By design, the Nostr protocol leaves beadcrums of where a user or note might be found and NDK does it's best to store this data automatically and use it when you query for events. +The most important data to cache is _where_ a user or note might be found. UX suffers profoundly when this type of data cannot be found. By design, the Nostr protocol leaves breadcrumbs of where a user or note might be found and NDK does it's best to store this data automatically and use it when you query for events. ### Instantiating and using a cache adapter From 44c78832e674c83980c875a65d86390c0623b0f9 Mon Sep 17 00:00:00 2001 From: Wlad Paiva Date: Fri, 28 Apr 2023 10:20:53 -0300 Subject: [PATCH 101/773] chore: changed npm with pnpm --- .gitignore | 1 - package-lock.json | 13998 -------------------------------------------- package.json | 1 + pnpm-lock.yaml | 4918 ++++++++++++++++ 4 files changed, 4919 insertions(+), 13999 deletions(-) delete mode 100644 package-lock.json create mode 100644 pnpm-lock.yaml diff --git a/.gitignore b/.gitignore index c75f7daa..820f5668 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,6 @@ **/lib **/.vscode justfile -pnpm-lock.yaml **/*.js **/*.d.ts **/*.d.ts.map diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 055ab7a7..00000000 --- a/package-lock.json +++ /dev/null @@ -1,13998 +0,0 @@ -{ - "name": "@nostr-dev-kit/ndk", - "version": "0.3.11", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "@nostr-dev-kit/ndk", - "version": "0.3.11", - "license": "MIT", - "dependencies": { - "@scure/base": "^1.1.1", - "@typescript-eslint/eslint-plugin": "^5.57.0", - "@typescript-eslint/parser": "^5.57.0", - "debug": "^4.3.4", - "esbuild": "^0.17.15", - "esbuild-plugin-alias": "^0.2.1", - "eslint": "^8.37.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-import": "^2.27.5", - "esm-loader-typescript": "^1.0.4", - "eventemitter3": "^5.0.0", - "light-bolt11-decoder": "^3.0.0", - "node-fetch": "^3.3.1", - "nostr-tools": "^1.8.1", - "tsd": "^0.28.1", - "typedoc": "^0.24.6", - "utf8-buffer": "^1.0.0", - "websocket-polyfill": "^0.0.3" - }, - "devDependencies": { - "@types/debug": "^4.1.7", - "@types/jest": "^29.5.0", - "@types/node": "^14.11.2", - "gts": "^3.1.1", - "jest": "^29.5.0", - "prettier-plugin-organize-imports": "^3.2.2", - "ts-jest": "^29.1.0", - "typedoc-plugin-markdown": "^3.14.0", - "typescript": "~4.7.0" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", - "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.3.tgz", - "integrity": "sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.3", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.21.2", - "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.3", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.3", - "@babel/types": "^7.21.3", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz", - "integrity": "sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.21.3", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", - "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.2", - "@babel/types": "^7.21.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", - "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", - "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", - "dev": true, - "dependencies": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz", - "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", - "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", - "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template/node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz", - "integrity": "sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.3", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.3", - "@babel/types": "^7.21.3", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@esbuild/android-arm": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.15.tgz", - "integrity": "sha512-sRSOVlLawAktpMvDyJIkdLI/c/kdRTOqo8t6ImVxg8yT7LQDUYV5Rp2FKeEosLr6ZCja9UjYAzyRSxGteSJPYg==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.15.tgz", - "integrity": "sha512-0kOB6Y7Br3KDVgHeg8PRcvfLkq+AccreK///B4Z6fNZGr/tNHX0z2VywCc7PTeWp+bPvjA5WMvNXltHw5QjAIA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.15.tgz", - "integrity": "sha512-MzDqnNajQZ63YkaUWVl9uuhcWyEyh69HGpMIrf+acR4otMkfLJ4sUCxqwbCyPGicE9dVlrysI3lMcDBjGiBBcQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.15.tgz", - "integrity": "sha512-7siLjBc88Z4+6qkMDxPT2juf2e8SJxmsbNVKFY2ifWCDT72v5YJz9arlvBw5oB4W/e61H1+HDB/jnu8nNg0rLA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.15.tgz", - "integrity": "sha512-NbImBas2rXwYI52BOKTW342Tm3LTeVlaOQ4QPZ7XuWNKiO226DisFk/RyPk3T0CKZkKMuU69yOvlapJEmax7cg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.15.tgz", - "integrity": "sha512-Xk9xMDjBVG6CfgoqlVczHAdJnCs0/oeFOspFap5NkYAmRCT2qTn1vJWA2f419iMtsHSLm+O8B6SLV/HlY5cYKg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.15.tgz", - "integrity": "sha512-3TWAnnEOdclvb2pnfsTWtdwthPfOz7qAfcwDLcfZyGJwm1SRZIMOeB5FODVhnM93mFSPsHB9b/PmxNNbSnd0RQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.15.tgz", - "integrity": "sha512-MLTgiXWEMAMr8nmS9Gigx43zPRmEfeBfGCwxFQEMgJ5MC53QKajaclW6XDPjwJvhbebv+RzK05TQjvH3/aM4Xw==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.15.tgz", - "integrity": "sha512-T0MVnYw9KT6b83/SqyznTs/3Jg2ODWrZfNccg11XjDehIved2oQfrX/wVuev9N936BpMRaTR9I1J0tdGgUgpJA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.15.tgz", - "integrity": "sha512-wp02sHs015T23zsQtU4Cj57WiteiuASHlD7rXjKUyAGYzlOKDAjqK6bk5dMi2QEl/KVOcsjwL36kD+WW7vJt8Q==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.15.tgz", - "integrity": "sha512-k7FsUJjGGSxwnBmMh8d7IbObWu+sF/qbwc+xKZkBe/lTAF16RqxRCnNHA7QTd3oS2AfGBAnHlXL67shV5bBThQ==", - "cpu": [ - "loong64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.15.tgz", - "integrity": "sha512-ZLWk6czDdog+Q9kE/Jfbilu24vEe/iW/Sj2d8EVsmiixQ1rM2RKH2n36qfxK4e8tVcaXkvuV3mU5zTZviE+NVQ==", - "cpu": [ - "mips64el" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.15.tgz", - "integrity": "sha512-mY6dPkIRAiFHRsGfOYZC8Q9rmr8vOBZBme0/j15zFUKM99d4ILY4WpOC7i/LqoY+RE7KaMaSfvY8CqjJtuO4xg==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.15.tgz", - "integrity": "sha512-EcyUtxffdDtWjjwIH8sKzpDRLcVtqANooMNASO59y+xmqqRYBBM7xVLQhqF7nksIbm2yHABptoioS9RAbVMWVA==", - "cpu": [ - "riscv64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.15.tgz", - "integrity": "sha512-BuS6Jx/ezxFuHxgsfvz7T4g4YlVrmCmg7UAwboeyNNg0OzNzKsIZXpr3Sb/ZREDXWgt48RO4UQRDBxJN3B9Rbg==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.15.tgz", - "integrity": "sha512-JsdS0EgEViwuKsw5tiJQo9UdQdUJYuB+Mf6HxtJSPN35vez1hlrNb1KajvKWF5Sa35j17+rW1ECEO9iNrIXbNg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.15.tgz", - "integrity": "sha512-R6fKjtUysYGym6uXf6qyNephVUQAGtf3n2RCsOST/neIwPqRWcnc3ogcielOd6pT+J0RDR1RGcy0ZY7d3uHVLA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.15.tgz", - "integrity": "sha512-mVD4PGc26b8PI60QaPUltYKeSX0wxuy0AltC+WCTFwvKCq2+OgLP4+fFd+hZXzO2xW1HPKcytZBdjqL6FQFa7w==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.15.tgz", - "integrity": "sha512-U6tYPovOkw3459t2CBwGcFYfFRjivcJJc1WC8Q3funIwX8x4fP+R6xL/QuTPNGOblbq/EUDxj9GU+dWKX0oWlQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.15.tgz", - "integrity": "sha512-W+Z5F++wgKAleDABemiyXVnzXgvRFs+GVKThSI+mGgleLWluv0D7Diz4oQpgdpNzh4i2nNDzQtWbjJiqutRp6Q==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.15.tgz", - "integrity": "sha512-Muz/+uGgheShKGqSVS1KsHtCyEzcdOn/W/Xbh6H91Etm+wiIfwZaBn1W58MeGtfI8WA961YMHFYTthBdQs4t+w==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.15.tgz", - "integrity": "sha512-DjDa9ywLUUmjhV2Y9wUTIF+1XsmuFGvZoCmOWkli1XcNAh5t25cc7fgsCx4Zi/Uurep3TTLyDiKATgGEg61pkA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", - "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", - "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.5.1", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@eslint/js": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.37.0.tgz", - "integrity": "sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz", - "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/core": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz", - "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==", - "dev": true, - "dependencies": { - "@jest/console": "^29.5.0", - "@jest/reporters": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.5.0", - "jest-config": "^29.5.0", - "jest-haste-map": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-resolve-dependencies": "^29.5.0", - "jest-runner": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "jest-watcher": "^29.5.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/environment": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz", - "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "jest-mock": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz", - "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==", - "dev": true, - "dependencies": { - "expect": "^29.5.0", - "jest-snapshot": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz", - "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.4.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz", - "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.5.0", - "jest-mock": "^29.5.0", - "jest-util": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz", - "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.5.0", - "@jest/expect": "^29.5.0", - "@jest/types": "^29.5.0", - "jest-mock": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz", - "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@jridgewell/trace-mapping": "^0.3.15", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "jest-worker": "^29.5.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/schemas": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", - "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", - "dependencies": { - "@sinclair/typebox": "^0.25.16" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz", - "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.15", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz", - "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==", - "dev": true, - "dependencies": { - "@jest/console": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz", - "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.5.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz", - "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.5.0", - "@jridgewell/trace-mapping": "^0.3.15", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform/node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@noble/hashes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.0.0.tgz", - "integrity": "sha512-DZVbtY62kc3kkBtMHqwCOfXrT/hnoORy5BJ4+HU1IR59X0KWAOqsfzQPcUl/lQLlG7qXbe/fZ3r/emxtAl+sqg==" - }, - "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/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@scure/base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", - "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, - "node_modules/@scure/bip32": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", - "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "@noble/hashes": "~1.2.0", - "@noble/secp256k1": "~1.7.0", - "@scure/base": "~1.1.0" - } - }, - "node_modules/@scure/bip32/node_modules/@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, - "node_modules/@scure/bip39": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", - "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "@noble/hashes": "~1.2.0", - "@scure/base": "~1.1.0" - } - }, - "node_modules/@scure/bip39/node_modules/@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, - "node_modules/@sinclair/typebox": { - "version": "0.25.24", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", - "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==" - }, - "node_modules/@sinonjs/commons": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", - "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz", - "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^2.0.0" - } - }, - "node_modules/@tsd/typescript": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@tsd/typescript/-/typescript-5.0.3.tgz", - "integrity": "sha512-dGYlmePDOyea9ZsHdwZx67e1Al8TkDqLgTNnxkmUXpRMawDo+HyXeJFw3Ee8j6ODqLiuYjH82BKJuzmEDhN62w==" - }, - "node_modules/@types/babel__core": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", - "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz", - "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.3.0" - } - }, - "node_modules/@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", - "dev": true, - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/eslint": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", - "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", - "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.0.tgz", - "integrity": "sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==", - "dev": true, - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" - }, - "node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" - }, - "node_modules/@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", - "dev": true - }, - "node_modules/@types/node": { - "version": "14.18.36", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", - "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==", - "dev": true - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" - }, - "node_modules/@types/prettier": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", - "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", - "dev": true - }, - "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==" - }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.0.tgz", - "integrity": "sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==", - "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.57.0", - "@typescript-eslint/type-utils": "5.57.0", - "@typescript-eslint/utils": "5.57.0", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", - "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", - "dev": true, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.57.0.tgz", - "integrity": "sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==", - "dependencies": { - "@typescript-eslint/scope-manager": "5.57.0", - "@typescript-eslint/types": "5.57.0", - "@typescript-eslint/typescript-estree": "5.57.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.57.0.tgz", - "integrity": "sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==", - "dependencies": { - "@typescript-eslint/types": "5.57.0", - "@typescript-eslint/visitor-keys": "5.57.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.57.0.tgz", - "integrity": "sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==", - "dependencies": { - "@typescript-eslint/typescript-estree": "5.57.0", - "@typescript-eslint/utils": "5.57.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.57.0.tgz", - "integrity": "sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.0.tgz", - "integrity": "sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==", - "dependencies": { - "@typescript-eslint/types": "5.57.0", - "@typescript-eslint/visitor-keys": "5.57.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.57.0.tgz", - "integrity": "sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.57.0", - "@typescript-eslint/types": "5.57.0", - "@typescript-eslint/typescript-estree": "5.57.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.0.tgz", - "integrity": "sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==", - "dependencies": { - "@typescript-eslint/types": "5.57.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-sequence-parser": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", - "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==" - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/babel-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", - "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==", - "dev": true, - "dependencies": { - "@jest/transform": "^29.5.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.5.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", - "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", - "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^29.5.0", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/bufferutil": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", - "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "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/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001472", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001472.tgz", - "integrity": "sha512-xWC/0+hHHQgj3/vrKYY0AAzeIUgr7L9wlELIcAvZdDUHlhL/kNxMdnQLOSOQfP8R51ZzPhmHdyMkI0MMpmxCfg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.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==", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/create-esm-loader": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/create-esm-loader/-/create-esm-loader-0.2.3.tgz", - "integrity": "sha512-cllzD6IU/mzXBs5OdQVWL3+ne5Elpu3Wdm7h5OldMbGXk76yr9XzHlQXWJ4zfs0ZAibe26rkbs4KvMAJm7fIZA==", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=14.x" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "engines": { - "node": ">= 12" - } - }, - "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/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/diff-sequences": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", - "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.341", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.341.tgz", - "integrity": "sha512-R4A8VfUBQY9WmAhuqY5tjHRf5fH2AAf6vqitBOE0y6u2PgHgqHSrhZmu78dIX3fVZtjqlwJNX1i2zwC3VpHtQQ==", - "dev": true - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.21.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", - "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.0", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dependencies": { - "has": "^1.0.3" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "hasInstallScript": true, - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "node_modules/esbuild": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.15.tgz", - "integrity": "sha512-LBUV2VsUIc/iD9ME75qhT4aJj0r75abCVS0jakhFzOtR7TQsqQA5w0tZ+KTKnwl3kXE0MhskNdHDh/I5aCR1Zw==", - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.17.15", - "@esbuild/android-arm64": "0.17.15", - "@esbuild/android-x64": "0.17.15", - "@esbuild/darwin-arm64": "0.17.15", - "@esbuild/darwin-x64": "0.17.15", - "@esbuild/freebsd-arm64": "0.17.15", - "@esbuild/freebsd-x64": "0.17.15", - "@esbuild/linux-arm": "0.17.15", - "@esbuild/linux-arm64": "0.17.15", - "@esbuild/linux-ia32": "0.17.15", - "@esbuild/linux-loong64": "0.17.15", - "@esbuild/linux-mips64el": "0.17.15", - "@esbuild/linux-ppc64": "0.17.15", - "@esbuild/linux-riscv64": "0.17.15", - "@esbuild/linux-s390x": "0.17.15", - "@esbuild/linux-x64": "0.17.15", - "@esbuild/netbsd-x64": "0.17.15", - "@esbuild/openbsd-x64": "0.17.15", - "@esbuild/sunos-x64": "0.17.15", - "@esbuild/win32-arm64": "0.17.15", - "@esbuild/win32-ia32": "0.17.15", - "@esbuild/win32-x64": "0.17.15" - } - }, - "node_modules/esbuild-plugin-alias": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/esbuild-plugin-alias/-/esbuild-plugin-alias-0.2.1.tgz", - "integrity": "sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==" - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.37.0.tgz", - "integrity": "sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.2", - "@eslint/js": "8.37.0", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.4.0", - "espree": "^9.5.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-prettier": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", - "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-formatter-pretty": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-formatter-pretty/-/eslint-formatter-pretty-4.1.0.tgz", - "integrity": "sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==", - "dependencies": { - "@types/eslint": "^7.2.13", - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "eslint-rule-docs": "^1.1.5", - "log-symbols": "^4.0.0", - "plur": "^4.0.0", - "string-width": "^4.2.0", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", - "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.11.0", - "resolve": "^1.22.1" - } - }, - "node_modules/eslint-import-resolver-node/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/eslint-module-utils": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", - "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/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/eslint-plugin-es": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", - "dev": true, - "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.27.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", - "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", - "eslint-module-utils": "^2.7.4", - "has": "^1.0.3", - "is-core-module": "^2.11.0", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.values": "^1.1.6", - "resolve": "^1.22.1", - "semver": "^6.3.0", - "tsconfig-paths": "^3.14.1" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/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/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-node": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", - "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", - "dev": true, - "dependencies": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "peerDependencies": { - "eslint": ">=5.16.0" - } - }, - "node_modules/eslint-plugin-node/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-plugin-node/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-node/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", - "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", - "dev": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "peerDependencies": { - "eslint": ">=5.0.0", - "prettier": ">=1.13.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-rule-docs": { - "version": "1.1.235", - "resolved": "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.235.tgz", - "integrity": "sha512-+TQ+x4JdTnDoFEXXb3fDvfGOwnyNV7duH8fXWTPD1ieaBmB8omj7Gw/pMBBu4uI2uJCCU8APDaQJzWuXnTsH4A==" - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", - "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/esm-loader-typescript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/esm-loader-typescript/-/esm-loader-typescript-1.0.4.tgz", - "integrity": "sha512-ejo2f+NKIt23jaJKVpjcRQC0xTa6cTqt6VA+z8Ef/A/TCjQ5u7opPO1J4fJFeTiiHEo8JqU92EG4I1KwuXYZMg==", - "dependencies": { - "create-esm-loader": "^0.2.3", - "npm-run-all": "^4.1.5", - "semver": "^7.3.8", - "typescript": "^5.0.2" - } - }, - "node_modules/esm-loader-typescript/node_modules/typescript": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.3.tgz", - "integrity": "sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=12.20" - } - }, - "node_modules/espree": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", - "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", - "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eventemitter3": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.0.tgz", - "integrity": "sha512-riuVbElZZNXLeLEoprfNYoDSwTBRR44X3mnhdI1YcnENpWTCsTTVZ2zFuqQcpoyqPQIUXdiPEU0ECAq0KQRaHg==" - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz", - "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==", - "dev": true, - "dependencies": { - "@jest/expect-utils": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "dependencies": { - "type": "^2.7.2" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "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/fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "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/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "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/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" - }, - "node_modules/gts": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/gts/-/gts-3.1.1.tgz", - "integrity": "sha512-Jw44aBbzMnd1vtZs7tZt3LMstKQukCBg7N4CKVGzviIQ45Cz5b9lxDJGXVKj/9ySuGv6TYEeijZJGbiiVcM27w==", - "dev": true, - "dependencies": { - "@typescript-eslint/eslint-plugin": "^4.2.0", - "@typescript-eslint/parser": "^4.2.0", - "chalk": "^4.1.0", - "eslint": "^7.10.0", - "eslint-config-prettier": "^7.0.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^3.1.4", - "execa": "^5.0.0", - "inquirer": "^7.3.3", - "json5": "^2.1.3", - "meow": "^9.0.0", - "ncp": "^2.0.0", - "prettier": "^2.1.2", - "rimraf": "^3.0.2", - "write-file-atomic": "^3.0.3" - }, - "bin": { - "gts": "build/src/cli.js" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "typescript": ">=3" - } - }, - "node_modules/gts/node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/gts/node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/gts/node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/gts/node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", - "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", - "dev": true, - "dependencies": { - "@typescript-eslint/experimental-utils": "4.33.0", - "@typescript-eslint/scope-manager": "4.33.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^4.0.0", - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/gts/node_modules/@typescript-eslint/parser": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", - "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "debug": "^4.3.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/gts/node_modules/@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/gts/node_modules/@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", - "dev": true, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/gts/node_modules/@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/gts/node_modules/@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/gts/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/gts/node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/gts/node_modules/eslint-config-prettier": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz", - "integrity": "sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/gts/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/gts/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/gts/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/gts/node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/gts/node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/gts/node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/gts/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "engines": { - "node": ">=6" - } - }, - "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-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "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==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "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/inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/irregular-plurals": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", - "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", - "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", - "dev": true, - "dependencies": { - "@jest/core": "^29.5.0", - "@jest/types": "^29.5.0", - "import-local": "^3.0.2", - "jest-cli": "^29.5.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", - "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", - "dev": true, - "dependencies": { - "execa": "^5.0.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-changed-files/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-circus": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz", - "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.5.0", - "@jest/expect": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.5.0", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.5.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-cli": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz", - "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==", - "dev": true, - "dependencies": { - "@jest/core": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "prompts": "^2.0.1", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-config": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz", - "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.5.0", - "@jest/types": "^29.5.0", - "babel-jest": "^29.5.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.5.0", - "jest-environment-node": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-runner": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-diff": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", - "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.4.3", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", - "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz", - "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", - "jest-util": "^29.5.0", - "pretty-format": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-environment-node": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz", - "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.5.0", - "@jest/fake-timers": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "jest-mock": "^29.5.0", - "jest-util": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", - "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz", - "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "jest-worker": "^29.5.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-leak-detector": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz", - "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz", - "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.5.0", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", - "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.5.0", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util/node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/jest-mock": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz", - "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "jest-util": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", - "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz", - "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz", - "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==", - "dev": true, - "dependencies": { - "jest-regex-util": "^29.4.3", - "jest-snapshot": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz", - "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==", - "dev": true, - "dependencies": { - "@jest/console": "^29.5.0", - "@jest/environment": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.4.3", - "jest-environment-node": "^29.5.0", - "jest-haste-map": "^29.5.0", - "jest-leak-detector": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-resolve": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-util": "^29.5.0", - "jest-watcher": "^29.5.0", - "jest-worker": "^29.5.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-runtime": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz", - "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.5.0", - "@jest/fake-timers": "^29.5.0", - "@jest/globals": "^29.5.0", - "@jest/source-map": "^29.4.3", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-mock": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz", - "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.5.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.5.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", - "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz", - "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", - "leven": "^3.1.0", - "pretty-format": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watcher": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz", - "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.5.0", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", - "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", - "dev": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.5.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-sdsl": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", - "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/light-bolt11-decoder": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/light-bolt11-decoder/-/light-bolt11-decoder-3.0.0.tgz", - "integrity": "sha512-AKvOigD2pmC8ktnn2TIqdJu0K0qk6ukUmTvHwF3JNkm8uWCqt18Ijn33A/a7gaRZ4PghJ59X+8+MXrzLKdBTmQ==", - "dependencies": { - "@scure/base": "1.1.1" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "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/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, - "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/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==" - }, - "node_modules/ncp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", - "dev": true, - "bin": { - "ncp": "bin/ncp" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "engines": { - "node": ">=10.5.0" - } - }, - "node_modules/node-fetch": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", - "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, - "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/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", - "dev": true - }, - "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nostr-tools": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.8.1.tgz", - "integrity": "sha512-/2IUe5xINUYT5hYBoEz51dfRaodbRHnyF8n+ZbKWCoh0ZRX6AL88OoDNrWaWWo7tP5j5OyzSL9g/z4TP7bshEA==", - "dependencies": { - "@noble/hashes": "1.0.0", - "@noble/secp256k1": "^1.7.1", - "@scure/base": "^1.1.1", - "@scure/bip32": "^1.1.5", - "@scure/bip39": "^1.1.1", - "prettier": "^2.8.4" - } - }, - "node_modules/npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, - "bin": { - "npm-run-all": "bin/npm-run-all/index.js", - "run-p": "bin/run-p/index.js", - "run-s": "bin/run-s/index.js" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/npm-run-all/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/npm-run-all/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/npm-run-all/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/npm-run-all/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/npm-run-all/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "node_modules/npm-run-all/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/npm-run-all/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/npm-run-all/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-all/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-all/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "engines": { - "node": ">=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/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "engines": { - "node": ">=4" - } - }, - "node_modules/pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/plur": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/plur/-/plur-4.0.0.tgz", - "integrity": "sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==", - "dependencies": { - "irregular-plurals": "^3.2.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.8.7", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", - "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/prettier-plugin-organize-imports": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-3.2.2.tgz", - "integrity": "sha512-e97lE6odGSiHonHJMTYC0q0iLXQyw0u5z/PJpvP/3vRy6/Zi9kLBwFAbEGjDzIowpjQv8b+J04PDamoUSQbzGA==", - "dev": true, - "peerDependencies": { - "@volar/vue-language-plugin-pug": "^1.0.4", - "@volar/vue-typescript": "^1.0.4", - "prettier": ">=2.0", - "typescript": ">=2.9" - }, - "peerDependenciesMeta": { - "@volar/vue-language-plugin-pug": { - "optional": true - }, - "@volar/vue-typescript": { - "optional": true - } - } - }, - "node_modules/pretty-format": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", - "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", - "dependencies": { - "@jest/schemas": "^29.4.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "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/pure-rand": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.1.tgz", - "integrity": "sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ] - }, - "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/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "engines": { - "node": ">=8" - } - }, - "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - }, - "node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/read-pkg/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.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==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "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/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "engines": { - "node": ">=8" - } - }, - "node_modules/shell-quote": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", - "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/shiki": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.2.tgz", - "integrity": "sha512-ltSZlSLOuSY0M0Y75KA+ieRaZ0Trf5Wl3gutE7jzLuIcWxLp5i/uEnLoQWNvgKXQ5OMpGkJnVMRLAuzjc0LJ2A==", - "dependencies": { - "ansi-sequence-parser": "^1.1.0", - "jsonc-parser": "^3.2.0", - "vscode-oniguruma": "^1.7.0", - "vscode-textmate": "^8.0.0" - } - }, - "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/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.padend": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz", - "integrity": "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ts-jest": { - "version": "29.1.0", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz", - "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==", - "dev": true, - "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "^21.0.1" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/types": "^29.0.0", - "babel-jest": "^29.0.0", - "jest": "^29.0.0", - "typescript": ">=4.3 <6" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - } - } - }, - "node_modules/ts-jest/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/tsd": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/tsd/-/tsd-0.28.1.tgz", - "integrity": "sha512-FeYrfJ05QgEMW/qOukNCr4fAJHww4SaKnivAXRv4g5kj4FeLpNV7zH4dorzB9zAfVX4wmA7zWu/wQf7kkcvfbw==", - "dependencies": { - "@tsd/typescript": "~5.0.2", - "eslint-formatter-pretty": "^4.1.0", - "globby": "^11.0.1", - "jest-diff": "^29.0.3", - "meow": "^9.0.0", - "path-exists": "^4.0.0", - "read-pkg-up": "^7.0.0" - }, - "bin": { - "tsd": "dist/cli.js" - }, - "engines": { - "node": ">=14.16" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/tstl": { - "version": "2.5.13", - "resolved": "https://registry.npmjs.org/tstl/-/tstl-2.5.13.tgz", - "integrity": "sha512-h9wayHHFI5+yqt8iau0vqH96cTNhezhZ/Fk/hrIdpfkiMu3lg9nzyvMfs5bIdX51IVzZO6DudLqhkL/rVXpT6g==" - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typedoc": { - "version": "0.24.6", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.24.6.tgz", - "integrity": "sha512-c3y3h45xJv3qYwKDAwU6Cl+26CjT0ZvblHzfHJ+SjQDM4p1mZxtgHky4lhmG0+nNarRht8kADfZlbspJWdZarQ==", - "dependencies": { - "lunr": "^2.3.9", - "marked": "^4.3.0", - "minimatch": "^9.0.0", - "shiki": "^0.14.1" - }, - "bin": { - "typedoc": "bin/typedoc" - }, - "engines": { - "node": ">= 14.14" - }, - "peerDependencies": { - "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x" - } - }, - "node_modules/typedoc-plugin-markdown": { - "version": "3.15.3", - "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.15.3.tgz", - "integrity": "sha512-idntFYu3vfaY3eaD+w9DeRd0PmNGqGuNLKihPU9poxFGnATJYGn9dPtEhn2QrTdishFMg7jPXAhos+2T6YCWRQ==", - "dev": true, - "dependencies": { - "handlebars": "^4.7.7" - }, - "peerDependencies": { - "typedoc": ">=0.24.0" - } - }, - "node_modules/typedoc/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/typedoc/node_modules/minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", - "dev": true, - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/utf8-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/utf8-buffer/-/utf8-buffer-1.0.0.tgz", - "integrity": "sha512-ueuhzvWnp5JU5CiGSY4WdKbiN/PO2AZ/lpeLiz2l38qwdLy/cW40XobgyuIWucNyum0B33bVB0owjFCeGBSLqg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/v8-to-istanbul": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/v8-to-istanbul/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==" - }, - "node_modules/vscode-textmate": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", - "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==" - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", - "dependencies": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/websocket-polyfill": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/websocket-polyfill/-/websocket-polyfill-0.0.3.tgz", - "integrity": "sha512-pF3kR8Uaoau78MpUmFfzbIRxXj9PeQrCuPepGE6JIsfsJ/o/iXr07Q2iQNzKSSblQJ0FiGWlS64N4pVSm+O3Dg==", - "dependencies": { - "tstl": "^2.0.7", - "websocket": "^1.0.28" - } - }, - "node_modules/websocket/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/websocket/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "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/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", - "engines": { - "node": ">=0.10.32" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/yargs": { - "version": "17.7.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", - "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/compat-data": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", - "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", - "dev": true - }, - "@babel/core": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.3.tgz", - "integrity": "sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.3", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.21.2", - "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.3", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.3", - "@babel/types": "^7.21.3", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz", - "integrity": "sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==", - "dev": true, - "requires": { - "@babel/types": "^7.21.3", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@babel/helper-compilation-targets": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" - }, - "dependencies": { - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", - "dev": true, - "requires": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", - "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.2", - "@babel/types": "^7.21.2" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "dev": true - }, - "@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "requires": { - "@babel/types": "^7.20.2" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" - }, - "@babel/helper-validator-option": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", - "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", - "dev": true - }, - "@babel/helpers": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", - "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", - "dev": true, - "requires": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0" - } - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz", - "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==", - "dev": true - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", - "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", - "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - } - } - }, - "@babel/traverse": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz", - "integrity": "sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.3", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.3", - "@babel/types": "^7.21.3", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "@esbuild/android-arm": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.15.tgz", - "integrity": "sha512-sRSOVlLawAktpMvDyJIkdLI/c/kdRTOqo8t6ImVxg8yT7LQDUYV5Rp2FKeEosLr6ZCja9UjYAzyRSxGteSJPYg==", - "optional": true - }, - "@esbuild/android-arm64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.15.tgz", - "integrity": "sha512-0kOB6Y7Br3KDVgHeg8PRcvfLkq+AccreK///B4Z6fNZGr/tNHX0z2VywCc7PTeWp+bPvjA5WMvNXltHw5QjAIA==", - "optional": true - }, - "@esbuild/android-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.15.tgz", - "integrity": "sha512-MzDqnNajQZ63YkaUWVl9uuhcWyEyh69HGpMIrf+acR4otMkfLJ4sUCxqwbCyPGicE9dVlrysI3lMcDBjGiBBcQ==", - "optional": true - }, - "@esbuild/darwin-arm64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.15.tgz", - "integrity": "sha512-7siLjBc88Z4+6qkMDxPT2juf2e8SJxmsbNVKFY2ifWCDT72v5YJz9arlvBw5oB4W/e61H1+HDB/jnu8nNg0rLA==", - "optional": true - }, - "@esbuild/darwin-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.15.tgz", - "integrity": "sha512-NbImBas2rXwYI52BOKTW342Tm3LTeVlaOQ4QPZ7XuWNKiO226DisFk/RyPk3T0CKZkKMuU69yOvlapJEmax7cg==", - "optional": true - }, - "@esbuild/freebsd-arm64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.15.tgz", - "integrity": "sha512-Xk9xMDjBVG6CfgoqlVczHAdJnCs0/oeFOspFap5NkYAmRCT2qTn1vJWA2f419iMtsHSLm+O8B6SLV/HlY5cYKg==", - "optional": true - }, - "@esbuild/freebsd-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.15.tgz", - "integrity": "sha512-3TWAnnEOdclvb2pnfsTWtdwthPfOz7qAfcwDLcfZyGJwm1SRZIMOeB5FODVhnM93mFSPsHB9b/PmxNNbSnd0RQ==", - "optional": true - }, - "@esbuild/linux-arm": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.15.tgz", - "integrity": "sha512-MLTgiXWEMAMr8nmS9Gigx43zPRmEfeBfGCwxFQEMgJ5MC53QKajaclW6XDPjwJvhbebv+RzK05TQjvH3/aM4Xw==", - "optional": true - }, - "@esbuild/linux-arm64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.15.tgz", - "integrity": "sha512-T0MVnYw9KT6b83/SqyznTs/3Jg2ODWrZfNccg11XjDehIved2oQfrX/wVuev9N936BpMRaTR9I1J0tdGgUgpJA==", - "optional": true - }, - "@esbuild/linux-ia32": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.15.tgz", - "integrity": "sha512-wp02sHs015T23zsQtU4Cj57WiteiuASHlD7rXjKUyAGYzlOKDAjqK6bk5dMi2QEl/KVOcsjwL36kD+WW7vJt8Q==", - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.15.tgz", - "integrity": "sha512-k7FsUJjGGSxwnBmMh8d7IbObWu+sF/qbwc+xKZkBe/lTAF16RqxRCnNHA7QTd3oS2AfGBAnHlXL67shV5bBThQ==", - "optional": true - }, - "@esbuild/linux-mips64el": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.15.tgz", - "integrity": "sha512-ZLWk6czDdog+Q9kE/Jfbilu24vEe/iW/Sj2d8EVsmiixQ1rM2RKH2n36qfxK4e8tVcaXkvuV3mU5zTZviE+NVQ==", - "optional": true - }, - "@esbuild/linux-ppc64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.15.tgz", - "integrity": "sha512-mY6dPkIRAiFHRsGfOYZC8Q9rmr8vOBZBme0/j15zFUKM99d4ILY4WpOC7i/LqoY+RE7KaMaSfvY8CqjJtuO4xg==", - "optional": true - }, - "@esbuild/linux-riscv64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.15.tgz", - "integrity": "sha512-EcyUtxffdDtWjjwIH8sKzpDRLcVtqANooMNASO59y+xmqqRYBBM7xVLQhqF7nksIbm2yHABptoioS9RAbVMWVA==", - "optional": true - }, - "@esbuild/linux-s390x": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.15.tgz", - "integrity": "sha512-BuS6Jx/ezxFuHxgsfvz7T4g4YlVrmCmg7UAwboeyNNg0OzNzKsIZXpr3Sb/ZREDXWgt48RO4UQRDBxJN3B9Rbg==", - "optional": true - }, - "@esbuild/linux-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.15.tgz", - "integrity": "sha512-JsdS0EgEViwuKsw5tiJQo9UdQdUJYuB+Mf6HxtJSPN35vez1hlrNb1KajvKWF5Sa35j17+rW1ECEO9iNrIXbNg==", - "optional": true - }, - "@esbuild/netbsd-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.15.tgz", - "integrity": "sha512-R6fKjtUysYGym6uXf6qyNephVUQAGtf3n2RCsOST/neIwPqRWcnc3ogcielOd6pT+J0RDR1RGcy0ZY7d3uHVLA==", - "optional": true - }, - "@esbuild/openbsd-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.15.tgz", - "integrity": "sha512-mVD4PGc26b8PI60QaPUltYKeSX0wxuy0AltC+WCTFwvKCq2+OgLP4+fFd+hZXzO2xW1HPKcytZBdjqL6FQFa7w==", - "optional": true - }, - "@esbuild/sunos-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.15.tgz", - "integrity": "sha512-U6tYPovOkw3459t2CBwGcFYfFRjivcJJc1WC8Q3funIwX8x4fP+R6xL/QuTPNGOblbq/EUDxj9GU+dWKX0oWlQ==", - "optional": true - }, - "@esbuild/win32-arm64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.15.tgz", - "integrity": "sha512-W+Z5F++wgKAleDABemiyXVnzXgvRFs+GVKThSI+mGgleLWluv0D7Diz4oQpgdpNzh4i2nNDzQtWbjJiqutRp6Q==", - "optional": true - }, - "@esbuild/win32-ia32": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.15.tgz", - "integrity": "sha512-Muz/+uGgheShKGqSVS1KsHtCyEzcdOn/W/Xbh6H91Etm+wiIfwZaBn1W58MeGtfI8WA961YMHFYTthBdQs4t+w==", - "optional": true - }, - "@esbuild/win32-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.15.tgz", - "integrity": "sha512-DjDa9ywLUUmjhV2Y9wUTIF+1XsmuFGvZoCmOWkli1XcNAh5t25cc7fgsCx4Zi/Uurep3TTLyDiKATgGEg61pkA==", - "optional": true - }, - "@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "requires": { - "eslint-visitor-keys": "^3.3.0" - } - }, - "@eslint-community/regexpp": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", - "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==" - }, - "@eslint/eslintrc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", - "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.5.1", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "requires": { - "argparse": "^2.0.1" - } - } - } - }, - "@eslint/js": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.37.0.tgz", - "integrity": "sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==" - }, - "@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jest/console": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz", - "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "slash": "^3.0.0" - } - }, - "@jest/core": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz", - "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==", - "dev": true, - "requires": { - "@jest/console": "^29.5.0", - "@jest/reporters": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.5.0", - "jest-config": "^29.5.0", - "jest-haste-map": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-resolve-dependencies": "^29.5.0", - "jest-runner": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "jest-watcher": "^29.5.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "@jest/environment": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz", - "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==", - "dev": true, - "requires": { - "@jest/fake-timers": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "jest-mock": "^29.5.0" - } - }, - "@jest/expect": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz", - "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==", - "dev": true, - "requires": { - "expect": "^29.5.0", - "jest-snapshot": "^29.5.0" - } - }, - "@jest/expect-utils": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz", - "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==", - "dev": true, - "requires": { - "jest-get-type": "^29.4.3" - } - }, - "@jest/fake-timers": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz", - "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.5.0", - "jest-mock": "^29.5.0", - "jest-util": "^29.5.0" - } - }, - "@jest/globals": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz", - "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==", - "dev": true, - "requires": { - "@jest/environment": "^29.5.0", - "@jest/expect": "^29.5.0", - "@jest/types": "^29.5.0", - "jest-mock": "^29.5.0" - } - }, - "@jest/reporters": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz", - "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@jridgewell/trace-mapping": "^0.3.15", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "jest-worker": "^29.5.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - } - }, - "@jest/schemas": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", - "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", - "requires": { - "@sinclair/typebox": "^0.25.16" - } - }, - "@jest/source-map": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz", - "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.15", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - } - }, - "@jest/test-result": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz", - "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==", - "dev": true, - "requires": { - "@jest/console": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz", - "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==", - "dev": true, - "requires": { - "@jest/test-result": "^29.5.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "slash": "^3.0.0" - } - }, - "@jest/transform": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz", - "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.5.0", - "@jridgewell/trace-mapping": "^0.3.15", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "dependencies": { - "write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - } - } - } - }, - "@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "requires": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - } - }, - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "@noble/hashes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.0.0.tgz", - "integrity": "sha512-DZVbtY62kc3kkBtMHqwCOfXrT/hnoORy5BJ4+HU1IR59X0KWAOqsfzQPcUl/lQLlG7qXbe/fZ3r/emxtAl+sqg==" - }, - "@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==" - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@scure/base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", - "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==" - }, - "@scure/bip32": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", - "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", - "requires": { - "@noble/hashes": "~1.2.0", - "@noble/secp256k1": "~1.7.0", - "@scure/base": "~1.1.0" - }, - "dependencies": { - "@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==" - } - } - }, - "@scure/bip39": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", - "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", - "requires": { - "@noble/hashes": "~1.2.0", - "@scure/base": "~1.1.0" - }, - "dependencies": { - "@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==" - } - } - }, - "@sinclair/typebox": { - "version": "0.25.24", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", - "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==" - }, - "@sinonjs/commons": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", - "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz", - "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==", - "dev": true, - "requires": { - "@sinonjs/commons": "^2.0.0" - } - }, - "@tsd/typescript": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@tsd/typescript/-/typescript-5.0.3.tgz", - "integrity": "sha512-dGYlmePDOyea9ZsHdwZx67e1Al8TkDqLgTNnxkmUXpRMawDo+HyXeJFw3Ee8j6ODqLiuYjH82BKJuzmEDhN62w==" - }, - "@types/babel__core": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", - "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", - "dev": true, - "requires": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz", - "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==", - "dev": true, - "requires": { - "@babel/types": "^7.3.0" - } - }, - "@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", - "dev": true, - "requires": { - "@types/ms": "*" - } - }, - "@types/eslint": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", - "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" - }, - "@types/graceful-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", - "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@types/jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.0.tgz", - "integrity": "sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==", - "dev": true, - "requires": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" - }, - "@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" - }, - "@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", - "dev": true - }, - "@types/node": { - "version": "14.18.36", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", - "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==", - "dev": true - }, - "@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" - }, - "@types/prettier": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", - "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", - "dev": true - }, - "@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==" - }, - "@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.0.tgz", - "integrity": "sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==", - "requires": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.57.0", - "@typescript-eslint/type-utils": "5.57.0", - "@typescript-eslint/utils": "5.57.0", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/experimental-utils": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", - "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "dependencies": { - "@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" - } - }, - "@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" - } - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, - "@typescript-eslint/parser": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.57.0.tgz", - "integrity": "sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==", - "requires": { - "@typescript-eslint/scope-manager": "5.57.0", - "@typescript-eslint/types": "5.57.0", - "@typescript-eslint/typescript-estree": "5.57.0", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.57.0.tgz", - "integrity": "sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==", - "requires": { - "@typescript-eslint/types": "5.57.0", - "@typescript-eslint/visitor-keys": "5.57.0" - } - }, - "@typescript-eslint/type-utils": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.57.0.tgz", - "integrity": "sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==", - "requires": { - "@typescript-eslint/typescript-estree": "5.57.0", - "@typescript-eslint/utils": "5.57.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/types": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.57.0.tgz", - "integrity": "sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==" - }, - "@typescript-eslint/typescript-estree": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.0.tgz", - "integrity": "sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==", - "requires": { - "@typescript-eslint/types": "5.57.0", - "@typescript-eslint/visitor-keys": "5.57.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/utils": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.57.0.tgz", - "integrity": "sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==", - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.57.0", - "@typescript-eslint/types": "5.57.0", - "@typescript-eslint/typescript-estree": "5.57.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.0.tgz", - "integrity": "sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==", - "requires": { - "@typescript-eslint/types": "5.57.0", - "eslint-visitor-keys": "^3.3.0" - } - }, - "acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==" - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "requires": { - "type-fest": "^0.21.3" - }, - "dependencies": { - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" - } - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "ansi-sequence-parser": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", - "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==" - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "requires": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - } - }, - "array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "is-string": "^1.0.7" - } - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" - }, - "array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - } - }, - "array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - } - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==" - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" - }, - "babel-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", - "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==", - "dev": true, - "requires": { - "@jest/transform": "^29.5.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.5.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - } - }, - "babel-plugin-jest-hoist": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", - "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", - "dev": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "requires": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - } - }, - "babel-preset-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", - "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^29.5.0", - "babel-preset-current-node-syntax": "^1.0.0" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" - } - }, - "bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "requires": { - "fast-json-stable-stringify": "2.x" - } - }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "bufferutil": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", - "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", - "requires": { - "node-gyp-build": "^4.3.0" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - }, - "camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "requires": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - } - }, - "caniuse-lite": { - "version": "1.0.30001472", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001472.tgz", - "integrity": "sha512-xWC/0+hHHQgj3/vrKYY0AAzeIUgr7L9wlELIcAvZdDUHlhL/kNxMdnQLOSOQfP8R51ZzPhmHdyMkI0MMpmxCfg==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true - }, - "cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true - }, - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true - }, - "collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "create-esm-loader": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/create-esm-loader/-/create-esm-loader-0.2.3.tgz", - "integrity": "sha512-cllzD6IU/mzXBs5OdQVWL3+ne5Elpu3Wdm7h5OldMbGXk76yr9XzHlQXWJ4zfs0ZAibe26rkbs4KvMAJm7fIZA==", - "requires": { - "semver": "^7.3.5" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==" - }, - "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" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" - }, - "decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==" - } - } - }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, - "deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true - }, - "define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true - }, - "diff-sequences": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", - "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==" - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "requires": { - "path-type": "^4.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "requires": { - "esutils": "^2.0.2" - } - }, - "electron-to-chromium": { - "version": "1.4.341", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.341.tgz", - "integrity": "sha512-R4A8VfUBQY9WmAhuqY5tjHRf5fH2AAf6vqitBOE0y6u2PgHgqHSrhZmu78dIX3fVZtjqlwJNX1i2zwC3VpHtQQ==", - "dev": true - }, - "emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.21.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", - "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", - "requires": { - "array-buffer-byte-length": "^1.0.0", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.0", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" - } - }, - "es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "requires": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - } - }, - "es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "requires": { - "has": "^1.0.3" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "requires": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "esbuild": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.15.tgz", - "integrity": "sha512-LBUV2VsUIc/iD9ME75qhT4aJj0r75abCVS0jakhFzOtR7TQsqQA5w0tZ+KTKnwl3kXE0MhskNdHDh/I5aCR1Zw==", - "requires": { - "@esbuild/android-arm": "0.17.15", - "@esbuild/android-arm64": "0.17.15", - "@esbuild/android-x64": "0.17.15", - "@esbuild/darwin-arm64": "0.17.15", - "@esbuild/darwin-x64": "0.17.15", - "@esbuild/freebsd-arm64": "0.17.15", - "@esbuild/freebsd-x64": "0.17.15", - "@esbuild/linux-arm": "0.17.15", - "@esbuild/linux-arm64": "0.17.15", - "@esbuild/linux-ia32": "0.17.15", - "@esbuild/linux-loong64": "0.17.15", - "@esbuild/linux-mips64el": "0.17.15", - "@esbuild/linux-ppc64": "0.17.15", - "@esbuild/linux-riscv64": "0.17.15", - "@esbuild/linux-s390x": "0.17.15", - "@esbuild/linux-x64": "0.17.15", - "@esbuild/netbsd-x64": "0.17.15", - "@esbuild/openbsd-x64": "0.17.15", - "@esbuild/sunos-x64": "0.17.15", - "@esbuild/win32-arm64": "0.17.15", - "@esbuild/win32-ia32": "0.17.15", - "@esbuild/win32-x64": "0.17.15" - } - }, - "esbuild-plugin-alias": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/esbuild-plugin-alias/-/esbuild-plugin-alias-0.2.1.tgz", - "integrity": "sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==" - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - }, - "eslint": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.37.0.tgz", - "integrity": "sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==", - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.2", - "@eslint/js": "8.37.0", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.4.0", - "espree": "^9.5.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "requires": { - "argparse": "^2.0.1" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "requires": { - "p-locate": "^5.0.0" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "requires": { - "p-limit": "^3.0.2" - } - } - } - }, - "eslint-config-prettier": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", - "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", - "requires": {} - }, - "eslint-formatter-pretty": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-formatter-pretty/-/eslint-formatter-pretty-4.1.0.tgz", - "integrity": "sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==", - "requires": { - "@types/eslint": "^7.2.13", - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "eslint-rule-docs": "^1.1.5", - "log-symbols": "^4.0.0", - "plur": "^4.0.0", - "string-width": "^4.2.0", - "supports-hyperlinks": "^2.0.0" - } - }, - "eslint-import-resolver-node": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", - "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", - "requires": { - "debug": "^3.2.7", - "is-core-module": "^2.11.0", - "resolve": "^1.22.1" - }, - "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" - } - } - } - }, - "eslint-module-utils": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", - "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", - "requires": { - "debug": "^3.2.7" - }, - "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" - } - } - } - }, - "eslint-plugin-es": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", - "dev": true, - "requires": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "dependencies": { - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "eslint-plugin-import": { - "version": "2.27.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", - "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", - "requires": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", - "eslint-module-utils": "^2.7.4", - "has": "^1.0.3", - "is-core-module": "^2.11.0", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.values": "^1.1.6", - "resolve": "^1.22.1", - "semver": "^6.3.0", - "tsconfig-paths": "^3.14.1" - }, - "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" - } - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "requires": { - "esutils": "^2.0.2" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "eslint-plugin-node": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", - "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", - "dev": true, - "requires": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" - }, - "dependencies": { - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "eslint-plugin-prettier": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", - "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", - "dev": true, - "requires": { - "prettier-linter-helpers": "^1.0.0" - } - }, - "eslint-rule-docs": { - "version": "1.1.235", - "resolved": "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.235.tgz", - "integrity": "sha512-+TQ+x4JdTnDoFEXXb3fDvfGOwnyNV7duH8fXWTPD1ieaBmB8omj7Gw/pMBBu4uI2uJCCU8APDaQJzWuXnTsH4A==" - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", - "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==" - }, - "esm-loader-typescript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/esm-loader-typescript/-/esm-loader-typescript-1.0.4.tgz", - "integrity": "sha512-ejo2f+NKIt23jaJKVpjcRQC0xTa6cTqt6VA+z8Ef/A/TCjQ5u7opPO1J4fJFeTiiHEo8JqU92EG4I1KwuXYZMg==", - "requires": { - "create-esm-loader": "^0.2.3", - "npm-run-all": "^4.1.5", - "semver": "^7.3.8", - "typescript": "^5.0.2" - }, - "dependencies": { - "typescript": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.3.tgz", - "integrity": "sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==" - } - } - }, - "espree": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", - "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", - "requires": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", - "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - }, - "eventemitter3": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.0.tgz", - "integrity": "sha512-riuVbElZZNXLeLEoprfNYoDSwTBRR44X3mnhdI1YcnENpWTCsTTVZ2zFuqQcpoyqPQIUXdiPEU0ECAq0KQRaHg==" - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true - }, - "expect": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz", - "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==", - "dev": true, - "requires": { - "@jest/expect-utils": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0" - } - }, - "ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "requires": { - "type": "^2.7.2" - }, - "dependencies": { - "type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - } - } - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "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==" - }, - "fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "requires": { - "reusify": "^1.0.4" - } - }, - "fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "requires": { - "bser": "2.1.1" - } - }, - "fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "requires": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - } - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - } - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" - }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "requires": { - "is-callable": "^1.1.3" - } - }, - "formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "requires": { - "fetch-blob": "^3.1.2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - } - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "requires": { - "type-fest": "^0.20.2" - } - }, - "globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "requires": { - "define-properties": "^1.1.3" - } - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "requires": { - "get-intrinsic": "^1.1.3" - } - }, - "graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" - }, - "gts": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/gts/-/gts-3.1.1.tgz", - "integrity": "sha512-Jw44aBbzMnd1vtZs7tZt3LMstKQukCBg7N4CKVGzviIQ45Cz5b9lxDJGXVKj/9ySuGv6TYEeijZJGbiiVcM27w==", - "dev": true, - "requires": { - "@typescript-eslint/eslint-plugin": "^4.2.0", - "@typescript-eslint/parser": "^4.2.0", - "chalk": "^4.1.0", - "eslint": "^7.10.0", - "eslint-config-prettier": "^7.0.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^3.1.4", - "execa": "^5.0.0", - "inquirer": "^7.3.3", - "json5": "^2.1.3", - "meow": "^9.0.0", - "ncp": "^2.0.0", - "prettier": "^2.1.2", - "rimraf": "^3.0.2", - "write-file-atomic": "^3.0.3" - }, - "dependencies": { - "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - } - } - }, - "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "@typescript-eslint/eslint-plugin": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", - "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", - "dev": true, - "requires": { - "@typescript-eslint/experimental-utils": "4.33.0", - "@typescript-eslint/scope-manager": "4.33.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/parser": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", - "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "debug": "^4.3.1" - } - }, - "@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" - } - }, - "@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" - } - }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, - "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - } - } - }, - "eslint-config-prettier": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz", - "integrity": "sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==", - "dev": true, - "requires": {} - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dev": true, - "requires": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" - } - }, - "hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==" - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" - }, - "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" - } - }, - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - } - }, - "internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "requires": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "irregular-plurals": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", - "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==" - }, - "is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "requires": { - "has": "^1.0.3" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==" - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "requires": { - "call-bind": "^1.0.2" - } - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - } - }, - "istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", - "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", - "dev": true, - "requires": { - "@jest/core": "^29.5.0", - "@jest/types": "^29.5.0", - "import-local": "^3.0.2", - "jest-cli": "^29.5.0" - } - }, - "jest-changed-files": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", - "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", - "dev": true, - "requires": { - "execa": "^5.0.0", - "p-limit": "^3.1.0" - }, - "dependencies": { - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - } - } - }, - "jest-circus": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz", - "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==", - "dev": true, - "requires": { - "@jest/environment": "^29.5.0", - "@jest/expect": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.5.0", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.5.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "dependencies": { - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - } - } - }, - "jest-cli": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz", - "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==", - "dev": true, - "requires": { - "@jest/core": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "prompts": "^2.0.1", - "yargs": "^17.3.1" - } - }, - "jest-config": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz", - "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.5.0", - "@jest/types": "^29.5.0", - "babel-jest": "^29.5.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.5.0", - "jest-environment-node": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-runner": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - } - }, - "jest-diff": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", - "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^29.4.3", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - } - }, - "jest-docblock": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", - "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", - "dev": true, - "requires": { - "detect-newline": "^3.0.0" - } - }, - "jest-each": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz", - "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", - "jest-util": "^29.5.0", - "pretty-format": "^29.5.0" - } - }, - "jest-environment-node": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz", - "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==", - "dev": true, - "requires": { - "@jest/environment": "^29.5.0", - "@jest/fake-timers": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "jest-mock": "^29.5.0", - "jest-util": "^29.5.0" - } - }, - "jest-get-type": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", - "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==" - }, - "jest-haste-map": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz", - "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "jest-worker": "^29.5.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - } - }, - "jest-leak-detector": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz", - "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==", - "dev": true, - "requires": { - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - } - }, - "jest-matcher-utils": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz", - "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^29.5.0", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - } - }, - "jest-message-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", - "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.5.0", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - } - } - }, - "jest-mock": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz", - "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "jest-util": "^29.5.0" - } - }, - "jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "requires": {} - }, - "jest-regex-util": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", - "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", - "dev": true - }, - "jest-resolve": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz", - "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - } - }, - "jest-resolve-dependencies": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz", - "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==", - "dev": true, - "requires": { - "jest-regex-util": "^29.4.3", - "jest-snapshot": "^29.5.0" - } - }, - "jest-runner": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz", - "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==", - "dev": true, - "requires": { - "@jest/console": "^29.5.0", - "@jest/environment": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.4.3", - "jest-environment-node": "^29.5.0", - "jest-haste-map": "^29.5.0", - "jest-leak-detector": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-resolve": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-util": "^29.5.0", - "jest-watcher": "^29.5.0", - "jest-worker": "^29.5.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "dependencies": { - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - } - } - }, - "jest-runtime": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz", - "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==", - "dev": true, - "requires": { - "@jest/environment": "^29.5.0", - "@jest/fake-timers": "^29.5.0", - "@jest/globals": "^29.5.0", - "@jest/source-map": "^29.4.3", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-mock": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - } - }, - "jest-snapshot": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz", - "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.5.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.5.0", - "semver": "^7.3.5" - } - }, - "jest-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", - "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "jest-validate": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz", - "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", - "leven": "^3.1.0", - "pretty-format": "^29.5.0" - }, - "dependencies": { - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - } - } - }, - "jest-watcher": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz", - "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==", - "dev": true, - "requires": { - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.5.0", - "string-length": "^4.0.1" - } - }, - "jest-worker": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", - "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", - "dev": true, - "requires": { - "@types/node": "*", - "jest-util": "^29.5.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "js-sdsl": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", - "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==" - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true - }, - "jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "light-bolt11-decoder": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/light-bolt11-decoder/-/light-bolt11-decoder-3.0.0.tgz", - "integrity": "sha512-AKvOigD2pmC8ktnn2TIqdJu0K0qk6ukUmTvHwF3JNkm8uWCqt18Ijn33A/a7gaRZ4PghJ59X+8+MXrzLKdBTmQ==", - "requires": { - "@scure/base": "1.1.1" - } - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" - } - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "requires": { - "tmpl": "1.0.5" - } - }, - "map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==" - }, - "marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==" - }, - "memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==" - }, - "meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "requires": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "dependencies": { - "type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==" - } - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" - }, - "minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" - }, - "natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==" - }, - "ncp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" - }, - "node-fetch": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", - "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", - "requires": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - } - }, - "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==" - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", - "dev": true - }, - "normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "nostr-tools": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.8.1.tgz", - "integrity": "sha512-/2IUe5xINUYT5hYBoEz51dfRaodbRHnyF8n+ZbKWCoh0ZRX6AL88OoDNrWaWWo7tP5j5OyzSL9g/z4TP7bshEA==", - "requires": { - "@noble/hashes": "1.0.0", - "@noble/secp256k1": "^1.7.1", - "@scure/base": "^1.1.1", - "@scure/bip32": "^1.1.5", - "@scure/bip39": "^1.1.1", - "prettier": "^2.8.4" - } - }, - "npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", - "requires": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "requires": { - "pify": "^3.0.0" - } - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "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==" - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - }, - "object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - }, - "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==" - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - }, - "pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==" - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" - }, - "pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "plur": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/plur/-/plur-4.0.0.tgz", - "integrity": "sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==", - "requires": { - "irregular-plurals": "^3.2.0" - } - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" - }, - "prettier": { - "version": "2.8.7", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", - "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==" - }, - "prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "requires": { - "fast-diff": "^1.1.2" - } - }, - "prettier-plugin-organize-imports": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-3.2.2.tgz", - "integrity": "sha512-e97lE6odGSiHonHJMTYC0q0iLXQyw0u5z/PJpvP/3vRy6/Zi9kLBwFAbEGjDzIowpjQv8b+J04PDamoUSQbzGA==", - "dev": true, - "requires": {} - }, - "pretty-format": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", - "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", - "requires": { - "@jest/schemas": "^29.4.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" - } - } - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" - }, - "pure-rand": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.1.tgz", - "integrity": "sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - }, - "quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==" - }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "dependencies": { - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" - } - } - }, - "redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "requires": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - } - }, - "regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - }, - "resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "dev": true - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - }, - "shell-quote": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", - "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==" - }, - "shiki": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.2.tgz", - "integrity": "sha512-ltSZlSLOuSY0M0Y75KA+ieRaZ0Trf5Wl3gutE7jzLuIcWxLp5i/uEnLoQWNvgKXQ5OMpGkJnVMRLAuzjc0LJ2A==", - "requires": { - "ansi-sequence-parser": "^1.1.0", - "jsonc-parser": "^3.2.0", - "vscode-oniguruma": "^1.7.0", - "vscode-textmate": "^8.0.0" - } - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "requires": { - "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true - } - } - }, - "string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "requires": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "string.prototype.padend": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz", - "integrity": "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "requires": { - "min-indent": "^1.0.0" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", - "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - }, - "table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", - "dev": true, - "requires": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { - "is-number": "^7.0.0" - } - }, - "trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==" - }, - "ts-jest": { - "version": "29.1.0", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz", - "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==", - "dev": true, - "requires": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "^21.0.1" - }, - "dependencies": { - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true - } - } - }, - "tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "requires": { - "minimist": "^1.2.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" - } - } - }, - "tsd": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/tsd/-/tsd-0.28.1.tgz", - "integrity": "sha512-FeYrfJ05QgEMW/qOukNCr4fAJHww4SaKnivAXRv4g5kj4FeLpNV7zH4dorzB9zAfVX4wmA7zWu/wQf7kkcvfbw==", - "requires": { - "@tsd/typescript": "~5.0.2", - "eslint-formatter-pretty": "^4.1.0", - "globby": "^11.0.1", - "jest-diff": "^29.0.3", - "meow": "^9.0.0", - "path-exists": "^4.0.0", - "read-pkg-up": "^7.0.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "tstl": { - "version": "2.5.13", - "resolved": "https://registry.npmjs.org/tstl/-/tstl-2.5.13.tgz", - "integrity": "sha512-h9wayHHFI5+yqt8iau0vqH96cTNhezhZ/Fk/hrIdpfkiMu3lg9nzyvMfs5bIdX51IVzZO6DudLqhkL/rVXpT6g==" - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "requires": { - "tslib": "^1.8.1" - } - }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" - }, - "typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "requires": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - } - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "typedoc": { - "version": "0.24.6", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.24.6.tgz", - "integrity": "sha512-c3y3h45xJv3qYwKDAwU6Cl+26CjT0ZvblHzfHJ+SjQDM4p1mZxtgHky4lhmG0+nNarRht8kADfZlbspJWdZarQ==", - "requires": { - "lunr": "^2.3.9", - "marked": "^4.3.0", - "minimatch": "^9.0.0", - "shiki": "^0.14.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "typedoc-plugin-markdown": { - "version": "3.15.3", - "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.15.3.tgz", - "integrity": "sha512-idntFYu3vfaY3eaD+w9DeRd0PmNGqGuNLKihPU9poxFGnATJYGn9dPtEhn2QrTdishFMg7jPXAhos+2T6YCWRQ==", - "dev": true, - "requires": { - "handlebars": "^4.7.7" - } - }, - "typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==" - }, - "uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", - "dev": true, - "optional": true - }, - "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - } - }, - "update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { - "punycode": "^2.1.0" - } - }, - "utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "requires": { - "node-gyp-build": "^4.3.0" - } - }, - "utf8-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/utf8-buffer/-/utf8-buffer-1.0.0.tgz", - "integrity": "sha512-ueuhzvWnp5JU5CiGSY4WdKbiN/PO2AZ/lpeLiz2l38qwdLy/cW40XobgyuIWucNyum0B33bVB0owjFCeGBSLqg==" - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "v8-to-istanbul": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" - }, - "dependencies": { - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - } - } - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==" - }, - "vscode-textmate": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", - "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==" - }, - "walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "requires": { - "makeerror": "1.0.12" - } - }, - "web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==" - }, - "websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", - "requires": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "websocket-polyfill": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/websocket-polyfill/-/websocket-polyfill-0.0.3.tgz", - "integrity": "sha512-pF3kR8Uaoau78MpUmFfzbIRxXj9PeQrCuPepGE6JIsfsJ/o/iXr07Q2iQNzKSSblQJ0FiGWlS64N4pVSm+O3Dg==", - "requires": { - "tstl": "^2.0.7", - "websocket": "^1.0.28" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "yargs": { - "version": "17.7.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", - "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", - "dev": true, - "requires": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "dependencies": { - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true - } - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" - } - } -} diff --git a/package.json b/package.json index 8c6fedc3..1225027b 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "lib", "README.md" ], + "packageManager": "pnpm@8.3.1", "scripts": { "dev": "node tools/cleanup esm && tsc -w -p config/tsconfig.esm.json", "build": "rm -rf lib && node build.js && tsc", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..0565ea34 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,4918 @@ +lockfileVersion: '6.0' + +dependencies: + '@scure/base': + specifier: ^1.1.1 + version: 1.1.1 + '@typescript-eslint/eslint-plugin': + specifier: ^5.57.0 + version: 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@4.7.2) + '@typescript-eslint/parser': + specifier: ^5.57.0 + version: 5.57.0(eslint@8.37.0)(typescript@4.7.2) + debug: + specifier: ^4.3.4 + version: 4.3.4 + esbuild: + specifier: ^0.17.15 + version: 0.17.15 + esbuild-plugin-alias: + specifier: ^0.2.1 + version: 0.2.1 + eslint: + specifier: ^8.37.0 + version: 8.37.0 + eslint-config-prettier: + specifier: ^8.8.0 + version: 8.8.0(eslint@8.37.0) + eslint-plugin-import: + specifier: ^2.27.5 + version: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint@8.37.0) + esm-loader-typescript: + specifier: ^1.0.4 + version: 1.0.4 + eventemitter3: + specifier: ^5.0.0 + version: 5.0.0 + light-bolt11-decoder: + specifier: ^3.0.0 + version: 3.0.0 + node-fetch: + specifier: ^3.3.1 + version: 3.3.1 + nostr-tools: + specifier: ^1.8.1 + version: 1.8.1 + tsd: + specifier: ^0.28.1 + version: 0.28.1 + typedoc: + specifier: ^0.24.6 + version: 0.24.6(typescript@4.7.2) + utf8-buffer: + specifier: ^1.0.0 + version: 1.0.0 + websocket-polyfill: + specifier: ^0.0.3 + version: 0.0.3 + +devDependencies: + '@types/debug': + specifier: ^4.1.7 + version: 4.1.7 + '@types/jest': + specifier: ^29.5.0 + version: 29.5.0 + '@types/node': + specifier: ^14.11.2 + version: 14.11.2 + gts: + specifier: ^3.1.1 + version: 3.1.1(typescript@4.7.2) + jest: + specifier: ^29.5.0 + version: 29.5.0(@types/node@14.11.2) + prettier-plugin-organize-imports: + specifier: ^3.2.2 + version: 3.2.2(prettier@2.8.8)(typescript@4.7.2) + ts-jest: + specifier: ^29.1.0 + version: 29.1.0(@babel/core@7.21.4)(esbuild@0.17.15)(jest@29.5.0)(typescript@4.7.2) + typedoc-plugin-markdown: + specifier: ^3.14.0 + version: 3.14.0(typedoc@0.24.6) + typescript: + specifier: ~4.7.0 + version: 4.7.2 + +packages: + + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + dev: true + + /@babel/code-frame@7.12.11: + resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} + dependencies: + '@babel/highlight': 7.18.6 + dev: true + + /@babel/code-frame@7.21.4: + resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.18.6 + + /@babel/compat-data@7.21.4: + resolution: {integrity: sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core@7.21.4: + resolution: {integrity: sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.21.4 + '@babel/generator': 7.21.4 + '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) + '@babel/helper-module-transforms': 7.21.2 + '@babel/helpers': 7.21.0 + '@babel/parser': 7.21.4 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.4 + '@babel/types': 7.21.4 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator@7.21.4: + resolution: {integrity: sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.4 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + jsesc: 2.5.2 + dev: true + + /@babel/helper-compilation-targets@7.21.4(@babel/core@7.21.4): + resolution: {integrity: sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.21.4 + '@babel/core': 7.21.4 + '@babel/helper-validator-option': 7.21.0 + browserslist: 4.21.5 + lru-cache: 5.1.1 + semver: 6.3.0 + dev: true + + /@babel/helper-environment-visitor@7.18.9: + resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-function-name@7.21.0: + resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.20.7 + '@babel/types': 7.21.4 + dev: true + + /@babel/helper-hoist-variables@7.18.6: + resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.4 + dev: true + + /@babel/helper-module-imports@7.21.4: + resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.4 + dev: true + + /@babel/helper-module-transforms@7.21.2: + resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-module-imports': 7.21.4 + '@babel/helper-simple-access': 7.20.2 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-validator-identifier': 7.19.1 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.4 + '@babel/types': 7.21.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-plugin-utils@7.20.2: + resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-simple-access@7.20.2: + resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.4 + dev: true + + /@babel/helper-split-export-declaration@7.18.6: + resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.4 + dev: true + + /@babel/helper-string-parser@7.19.4: + resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-identifier@7.19.1: + resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-option@7.21.0: + resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helpers@7.21.0: + resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.4 + '@babel/types': 7.21.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/highlight@7.18.6: + resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.19.1 + chalk: 2.4.2 + js-tokens: 4.0.0 + + /@babel/parser@7.21.4: + resolution: {integrity: sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.21.4 + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.4): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.4): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.21.4): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.21.4): + resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.4): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.4): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.21.4): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.21.4): + resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/template@7.20.7: + resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.21.4 + '@babel/parser': 7.21.4 + '@babel/types': 7.21.4 + dev: true + + /@babel/traverse@7.21.4: + resolution: {integrity: sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.21.4 + '@babel/generator': 7.21.4 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.21.4 + '@babel/types': 7.21.4 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.21.4: + resolution: {integrity: sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.19.4 + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 + dev: true + + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true + + /@esbuild/android-arm64@0.17.15: + resolution: {integrity: sha512-0kOB6Y7Br3KDVgHeg8PRcvfLkq+AccreK///B4Z6fNZGr/tNHX0z2VywCc7PTeWp+bPvjA5WMvNXltHw5QjAIA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + optional: true + + /@esbuild/android-arm@0.17.15: + resolution: {integrity: sha512-sRSOVlLawAktpMvDyJIkdLI/c/kdRTOqo8t6ImVxg8yT7LQDUYV5Rp2FKeEosLr6ZCja9UjYAzyRSxGteSJPYg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + optional: true + + /@esbuild/android-x64@0.17.15: + resolution: {integrity: sha512-MzDqnNajQZ63YkaUWVl9uuhcWyEyh69HGpMIrf+acR4otMkfLJ4sUCxqwbCyPGicE9dVlrysI3lMcDBjGiBBcQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + optional: true + + /@esbuild/darwin-arm64@0.17.15: + resolution: {integrity: sha512-7siLjBc88Z4+6qkMDxPT2juf2e8SJxmsbNVKFY2ifWCDT72v5YJz9arlvBw5oB4W/e61H1+HDB/jnu8nNg0rLA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + + /@esbuild/darwin-x64@0.17.15: + resolution: {integrity: sha512-NbImBas2rXwYI52BOKTW342Tm3LTeVlaOQ4QPZ7XuWNKiO226DisFk/RyPk3T0CKZkKMuU69yOvlapJEmax7cg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + + /@esbuild/freebsd-arm64@0.17.15: + resolution: {integrity: sha512-Xk9xMDjBVG6CfgoqlVczHAdJnCs0/oeFOspFap5NkYAmRCT2qTn1vJWA2f419iMtsHSLm+O8B6SLV/HlY5cYKg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + optional: true + + /@esbuild/freebsd-x64@0.17.15: + resolution: {integrity: sha512-3TWAnnEOdclvb2pnfsTWtdwthPfOz7qAfcwDLcfZyGJwm1SRZIMOeB5FODVhnM93mFSPsHB9b/PmxNNbSnd0RQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + optional: true + + /@esbuild/linux-arm64@0.17.15: + resolution: {integrity: sha512-T0MVnYw9KT6b83/SqyznTs/3Jg2ODWrZfNccg11XjDehIved2oQfrX/wVuev9N936BpMRaTR9I1J0tdGgUgpJA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-arm@0.17.15: + resolution: {integrity: sha512-MLTgiXWEMAMr8nmS9Gigx43zPRmEfeBfGCwxFQEMgJ5MC53QKajaclW6XDPjwJvhbebv+RzK05TQjvH3/aM4Xw==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-ia32@0.17.15: + resolution: {integrity: sha512-wp02sHs015T23zsQtU4Cj57WiteiuASHlD7rXjKUyAGYzlOKDAjqK6bk5dMi2QEl/KVOcsjwL36kD+WW7vJt8Q==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-loong64@0.17.15: + resolution: {integrity: sha512-k7FsUJjGGSxwnBmMh8d7IbObWu+sF/qbwc+xKZkBe/lTAF16RqxRCnNHA7QTd3oS2AfGBAnHlXL67shV5bBThQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-mips64el@0.17.15: + resolution: {integrity: sha512-ZLWk6czDdog+Q9kE/Jfbilu24vEe/iW/Sj2d8EVsmiixQ1rM2RKH2n36qfxK4e8tVcaXkvuV3mU5zTZviE+NVQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-ppc64@0.17.15: + resolution: {integrity: sha512-mY6dPkIRAiFHRsGfOYZC8Q9rmr8vOBZBme0/j15zFUKM99d4ILY4WpOC7i/LqoY+RE7KaMaSfvY8CqjJtuO4xg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-riscv64@0.17.15: + resolution: {integrity: sha512-EcyUtxffdDtWjjwIH8sKzpDRLcVtqANooMNASO59y+xmqqRYBBM7xVLQhqF7nksIbm2yHABptoioS9RAbVMWVA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-s390x@0.17.15: + resolution: {integrity: sha512-BuS6Jx/ezxFuHxgsfvz7T4g4YlVrmCmg7UAwboeyNNg0OzNzKsIZXpr3Sb/ZREDXWgt48RO4UQRDBxJN3B9Rbg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-x64@0.17.15: + resolution: {integrity: sha512-JsdS0EgEViwuKsw5tiJQo9UdQdUJYuB+Mf6HxtJSPN35vez1hlrNb1KajvKWF5Sa35j17+rW1ECEO9iNrIXbNg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/netbsd-x64@0.17.15: + resolution: {integrity: sha512-R6fKjtUysYGym6uXf6qyNephVUQAGtf3n2RCsOST/neIwPqRWcnc3ogcielOd6pT+J0RDR1RGcy0ZY7d3uHVLA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + optional: true + + /@esbuild/openbsd-x64@0.17.15: + resolution: {integrity: sha512-mVD4PGc26b8PI60QaPUltYKeSX0wxuy0AltC+WCTFwvKCq2+OgLP4+fFd+hZXzO2xW1HPKcytZBdjqL6FQFa7w==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + optional: true + + /@esbuild/sunos-x64@0.17.15: + resolution: {integrity: sha512-U6tYPovOkw3459t2CBwGcFYfFRjivcJJc1WC8Q3funIwX8x4fP+R6xL/QuTPNGOblbq/EUDxj9GU+dWKX0oWlQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + optional: true + + /@esbuild/win32-arm64@0.17.15: + resolution: {integrity: sha512-W+Z5F++wgKAleDABemiyXVnzXgvRFs+GVKThSI+mGgleLWluv0D7Diz4oQpgdpNzh4i2nNDzQtWbjJiqutRp6Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + optional: true + + /@esbuild/win32-ia32@0.17.15: + resolution: {integrity: sha512-Muz/+uGgheShKGqSVS1KsHtCyEzcdOn/W/Xbh6H91Etm+wiIfwZaBn1W58MeGtfI8WA961YMHFYTthBdQs4t+w==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true + + /@esbuild/win32-x64@0.17.15: + resolution: {integrity: sha512-DjDa9ywLUUmjhV2Y9wUTIF+1XsmuFGvZoCmOWkli1XcNAh5t25cc7fgsCx4Zi/Uurep3TTLyDiKATgGEg61pkA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.37.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.37.0 + eslint-visitor-keys: 3.4.0 + dev: false + + /@eslint-community/regexpp@4.5.0: + resolution: {integrity: sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: false + + /@eslint/eslintrc@0.4.3: + resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 7.3.1 + globals: 13.20.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + js-yaml: 3.14.1 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/eslintrc@2.0.2: + resolution: {integrity: sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.5.1 + globals: 13.20.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@eslint/js@8.37.0: + resolution: {integrity: sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: false + + /@humanwhocodes/config-array@0.11.8: + resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@humanwhocodes/config-array@0.5.0: + resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: false + + /@humanwhocodes/object-schema@1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + + /@istanbuljs/load-nyc-config@1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + dev: true + + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true + + /@jest/console@29.5.0: + resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@types/node': 14.11.2 + chalk: 4.1.2 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + slash: 3.0.0 + dev: true + + /@jest/core@29.5.0: + resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/console': 29.5.0 + '@jest/reporters': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 14.11.2 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.8.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.5.0 + jest-config: 29.5.0(@types/node@14.11.2) + jest-haste-map: 29.5.0 + jest-message-util: 29.5.0 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-resolve-dependencies: 29.5.0 + jest-runner: 29.5.0 + jest-runtime: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + jest-watcher: 29.5.0 + micromatch: 4.0.5 + pretty-format: 29.5.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + + /@jest/environment@29.5.0: + resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 14.11.2 + jest-mock: 29.5.0 + dev: true + + /@jest/expect-utils@29.5.0: + resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.4.3 + dev: true + + /@jest/expect@29.5.0: + resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + expect: 29.5.0 + jest-snapshot: 29.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/fake-timers@29.5.0: + resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@sinonjs/fake-timers': 10.0.2 + '@types/node': 14.11.2 + jest-message-util: 29.5.0 + jest-mock: 29.5.0 + jest-util: 29.5.0 + dev: true + + /@jest/globals@29.5.0: + resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.5.0 + '@jest/expect': 29.5.0 + '@jest/types': 29.5.0 + jest-mock: 29.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/reporters@29.5.0: + resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@jridgewell/trace-mapping': 0.3.18 + '@types/node': 14.11.2 + chalk: 4.1.2 + collect-v8-coverage: 1.0.1 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.0 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.5 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + jest-worker: 29.5.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/schemas@29.4.3: + resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.25.24 + + /@jest/source-map@29.4.3: + resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jridgewell/trace-mapping': 0.3.18 + callsites: 3.1.0 + graceful-fs: 4.2.11 + dev: true + + /@jest/test-result@29.5.0: + resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.5.0 + '@jest/types': 29.5.0 + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.1 + dev: true + + /@jest/test-sequencer@29.5.0: + resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.5.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + slash: 3.0.0 + dev: true + + /@jest/transform@29.5.0: + resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.21.4 + '@jest/types': 29.5.0 + '@jridgewell/trace-mapping': 0.3.18 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + jest-regex-util: 29.4.3 + jest-util: 29.5.0 + micromatch: 4.0.5 + pirates: 4.0.5 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/types@29.5.0: + resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.4.3 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 14.11.2 + '@types/yargs': 17.0.24 + chalk: 4.1.2 + dev: true + + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.18 + dev: true + + /@jridgewell/resolve-uri@3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.18: + resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + + /@noble/curves@1.0.0: + resolution: {integrity: sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw==} + dependencies: + '@noble/hashes': 1.3.0 + dev: false + + /@noble/hashes@1.0.0: + resolution: {integrity: sha512-DZVbtY62kc3kkBtMHqwCOfXrT/hnoORy5BJ4+HU1IR59X0KWAOqsfzQPcUl/lQLlG7qXbe/fZ3r/emxtAl+sqg==} + dev: false + + /@noble/hashes@1.3.0: + resolution: {integrity: sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==} + dev: false + + /@noble/secp256k1@1.7.1: + resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} + dev: false + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + + /@scure/base@1.1.1: + resolution: {integrity: sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==} + dev: false + + /@scure/bip32@1.3.0: + resolution: {integrity: sha512-bcKpo1oj54hGholplGLpqPHRbIsnbixFtc06nwuNM5/dwSXOq/AAYoIBRsBmnZJSdfeNW5rnff7NTAz3ZCqR9Q==} + dependencies: + '@noble/curves': 1.0.0 + '@noble/hashes': 1.3.0 + '@scure/base': 1.1.1 + dev: false + + /@scure/bip39@1.2.0: + resolution: {integrity: sha512-SX/uKq52cuxm4YFXWFaVByaSHJh2w3BnokVSeUJVCv6K7WulT9u2BuNRBhuFl8vAuYnzx9bEu9WgpcNYTrYieg==} + dependencies: + '@noble/hashes': 1.3.0 + '@scure/base': 1.1.1 + dev: false + + /@sinclair/typebox@0.25.24: + resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} + + /@sinonjs/commons@2.0.0: + resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/fake-timers@10.0.2: + resolution: {integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==} + dependencies: + '@sinonjs/commons': 2.0.0 + dev: true + + /@tsd/typescript@5.0.4: + resolution: {integrity: sha512-YQi2lvZSI+xidKeUjlbv6b6Zw7qB3aXHw5oGJLs5OOGAEqKIOvz5UIAkWyg0bJbkSUWPBEtaOHpVxU4EYBO1Jg==} + dev: false + + /@types/babel__core@7.20.0: + resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} + dependencies: + '@babel/parser': 7.21.4 + '@babel/types': 7.21.4 + '@types/babel__generator': 7.6.4 + '@types/babel__template': 7.4.1 + '@types/babel__traverse': 7.18.5 + dev: true + + /@types/babel__generator@7.6.4: + resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + dependencies: + '@babel/types': 7.21.4 + dev: true + + /@types/babel__template@7.4.1: + resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + dependencies: + '@babel/parser': 7.21.4 + '@babel/types': 7.21.4 + dev: true + + /@types/babel__traverse@7.18.5: + resolution: {integrity: sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q==} + dependencies: + '@babel/types': 7.21.4 + dev: true + + /@types/debug@4.1.7: + resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} + dependencies: + '@types/ms': 0.7.31 + dev: true + + /@types/eslint@7.29.0: + resolution: {integrity: sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==} + dependencies: + '@types/estree': 1.0.1 + '@types/json-schema': 7.0.11 + dev: false + + /@types/estree@1.0.1: + resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} + dev: false + + /@types/graceful-fs@4.1.6: + resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} + dependencies: + '@types/node': 14.11.2 + dev: true + + /@types/istanbul-lib-coverage@2.0.4: + resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} + dev: true + + /@types/istanbul-lib-report@3.0.0: + resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + dev: true + + /@types/istanbul-reports@3.0.1: + resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} + dependencies: + '@types/istanbul-lib-report': 3.0.0 + dev: true + + /@types/jest@29.5.0: + resolution: {integrity: sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==} + dependencies: + expect: 29.5.0 + pretty-format: 29.5.0 + dev: true + + /@types/json-schema@7.0.11: + resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} + + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: false + + /@types/minimist@1.2.2: + resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} + + /@types/ms@0.7.31: + resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + dev: true + + /@types/node@14.11.2: + resolution: {integrity: sha512-jiE3QIxJ8JLNcb1Ps6rDbysDhN4xa8DJJvuC9prr6w+1tIh+QAbYyNF3tyiZNLDBIuBCf4KEcV2UvQm/V60xfA==} + dev: true + + /@types/normalize-package-data@2.4.1: + resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + + /@types/prettier@2.7.2: + resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} + dev: true + + /@types/semver@7.3.13: + resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} + dev: false + + /@types/stack-utils@2.0.1: + resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} + dev: true + + /@types/yargs-parser@21.0.0: + resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} + dev: true + + /@types/yargs@17.0.24: + resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} + dependencies: + '@types/yargs-parser': 21.0.0 + dev: true + + /@typescript-eslint/eslint-plugin@4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@4.7.2): + resolution: {integrity: sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + '@typescript-eslint/parser': ^4.0.0 + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/experimental-utils': 4.33.0(eslint@7.32.0)(typescript@4.7.2) + '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@4.7.2) + '@typescript-eslint/scope-manager': 4.33.0 + debug: 4.3.4 + eslint: 7.32.0 + functional-red-black-tree: 1.0.1 + ignore: 5.2.4 + regexpp: 3.2.0 + semver: 7.5.0 + tsutils: 3.21.0(typescript@4.7.2) + typescript: 4.7.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/eslint-plugin@5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@4.7.2): + resolution: {integrity: sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.5.0 + '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@4.7.2) + '@typescript-eslint/scope-manager': 5.57.0 + '@typescript-eslint/type-utils': 5.57.0(eslint@8.37.0)(typescript@4.7.2) + '@typescript-eslint/utils': 5.57.0(eslint@8.37.0)(typescript@4.7.2) + debug: 4.3.4 + eslint: 8.37.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + semver: 7.5.0 + tsutils: 3.21.0(typescript@4.7.2) + typescript: 4.7.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/experimental-utils@4.33.0(eslint@7.32.0)(typescript@4.7.2): + resolution: {integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: '*' + dependencies: + '@types/json-schema': 7.0.11 + '@typescript-eslint/scope-manager': 4.33.0 + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/typescript-estree': 4.33.0(typescript@4.7.2) + eslint: 7.32.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0(eslint@7.32.0) + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@4.7.2): + resolution: {integrity: sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 4.33.0 + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/typescript-estree': 4.33.0(typescript@4.7.2) + debug: 4.3.4 + eslint: 7.32.0 + typescript: 4.7.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@5.57.0(eslint@8.37.0)(typescript@4.7.2): + resolution: {integrity: sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.57.0 + '@typescript-eslint/types': 5.57.0 + '@typescript-eslint/typescript-estree': 5.57.0(typescript@4.7.2) + debug: 4.3.4 + eslint: 8.37.0 + typescript: 4.7.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/scope-manager@4.33.0: + resolution: {integrity: sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dependencies: + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/visitor-keys': 4.33.0 + dev: true + + /@typescript-eslint/scope-manager@5.57.0: + resolution: {integrity: sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.57.0 + '@typescript-eslint/visitor-keys': 5.57.0 + dev: false + + /@typescript-eslint/type-utils@5.57.0(eslint@8.37.0)(typescript@4.7.2): + resolution: {integrity: sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.57.0(typescript@4.7.2) + '@typescript-eslint/utils': 5.57.0(eslint@8.37.0)(typescript@4.7.2) + debug: 4.3.4 + eslint: 8.37.0 + tsutils: 3.21.0(typescript@4.7.2) + typescript: 4.7.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/types@4.33.0: + resolution: {integrity: sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dev: true + + /@typescript-eslint/types@5.57.0: + resolution: {integrity: sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: false + + /@typescript-eslint/typescript-estree@4.33.0(typescript@4.7.2): + resolution: {integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/visitor-keys': 4.33.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.0 + tsutils: 3.21.0(typescript@4.7.2) + typescript: 4.7.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree@5.57.0(typescript@4.7.2): + resolution: {integrity: sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.57.0 + '@typescript-eslint/visitor-keys': 5.57.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.0 + tsutils: 3.21.0(typescript@4.7.2) + typescript: 4.7.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/utils@5.57.0(eslint@8.37.0)(typescript@4.7.2): + resolution: {integrity: sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.37.0) + '@types/json-schema': 7.0.11 + '@types/semver': 7.3.13 + '@typescript-eslint/scope-manager': 5.57.0 + '@typescript-eslint/types': 5.57.0 + '@typescript-eslint/typescript-estree': 5.57.0(typescript@4.7.2) + eslint: 8.37.0 + eslint-scope: 5.1.1 + semver: 7.5.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: false + + /@typescript-eslint/visitor-keys@4.33.0: + resolution: {integrity: sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dependencies: + '@typescript-eslint/types': 4.33.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /@typescript-eslint/visitor-keys@5.57.0: + resolution: {integrity: sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.57.0 + eslint-visitor-keys: 3.4.0 + dev: false + + /acorn-jsx@5.3.2(acorn@7.4.1): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 7.4.1 + dev: true + + /acorn-jsx@5.3.2(acorn@8.8.2): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.8.2 + dev: false + + /acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /acorn@8.8.2: + resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: false + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + /ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + + /ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + dev: true + + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + /ansi-sequence-parser@1.1.0: + resolution: {integrity: sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==} + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: false + + /array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + dependencies: + call-bind: 1.0.2 + is-array-buffer: 3.0.2 + dev: false + + /array-includes@3.1.6: + resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + get-intrinsic: 1.2.0 + is-string: 1.0.7 + dev: false + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + /array.prototype.flat@1.3.1: + resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + es-shim-unscopables: 1.0.0 + dev: false + + /array.prototype.flatmap@1.3.1: + resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + es-shim-unscopables: 1.0.0 + dev: false + + /arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + + /astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + dev: true + + /available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + dev: false + + /babel-jest@29.5.0(@babel/core@7.21.4): + resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.21.4 + '@jest/transform': 29.5.0 + '@types/babel__core': 7.20.0 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.5.0(@babel/core@7.21.4) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + dependencies: + '@babel/helper-plugin-utils': 7.20.2 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-jest-hoist@29.5.0: + resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/template': 7.20.7 + '@babel/types': 7.21.4 + '@types/babel__core': 7.20.0 + '@types/babel__traverse': 7.18.5 + dev: true + + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.21.4): + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.4 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.4) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.4) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.21.4) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.4) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.4) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.21.4) + dev: true + + /babel-preset-jest@29.5.0(@babel/core@7.21.4): + resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.4 + babel-plugin-jest-hoist: 29.5.0 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.4) + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + + /browserslist@4.21.5: + resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001481 + electron-to-chromium: 1.4.376 + node-releases: 2.0.10 + update-browserslist-db: 1.0.11(browserslist@4.21.5) + dev: true + + /bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + dependencies: + fast-json-stable-stringify: 2.1.0 + dev: true + + /bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + dependencies: + node-int64: 0.4.0 + dev: true + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /bufferutil@4.0.7: + resolution: {integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==} + engines: {node: '>=6.14.2'} + requiresBuild: true + dependencies: + node-gyp-build: 4.6.0 + dev: false + + /call-bind@1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.2.0 + dev: false + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + /camelcase-keys@6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + map-obj: 4.3.0 + quick-lru: 4.0.1 + + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + + /caniuse-lite@1.0.30001481: + resolution: {integrity: sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ==} + dev: true + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + /char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + dev: true + + /chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + dev: true + + /ci-info@3.8.0: + resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + engines: {node: '>=8'} + dev: true + + /cjs-module-lexer@1.2.2: + resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} + dev: true + + /cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + dependencies: + restore-cursor: 3.1.0 + dev: true + + /cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + dev: true + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + dev: true + + /collect-v8-coverage@1.0.1: + resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} + dev: true + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + /convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + dev: true + + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + + /create-esm-loader@0.2.3: + resolution: {integrity: sha512-cllzD6IU/mzXBs5OdQVWL3+ne5Elpu3Wdm7h5OldMbGXk76yr9XzHlQXWJ4zfs0ZAibe26rkbs4KvMAJm7fIZA==} + engines: {node: '>=14.x'} + dependencies: + semver: 7.5.0 + dev: false + + /cross-spawn@6.0.5: + resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} + engines: {node: '>=4.8'} + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.1 + shebang-command: 1.2.0 + which: 1.3.1 + dev: false + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + /d@1.0.1: + resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} + dependencies: + es5-ext: 0.10.62 + type: 1.2.0 + dev: false + + /data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + dev: false + + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: false + + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: false + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + + /decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + + /decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + /dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: true + + /define-properties@1.2.0: + resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} + engines: {node: '>= 0.4'} + dependencies: + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + dev: false + + /detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + dev: true + + /diff-sequences@29.4.3: + resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: false + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + + /electron-to-chromium@1.4.376: + resolution: {integrity: sha512-TFeOKd98TpJzRHkr4Aorn16QkMnuCQuGAE6IZ0wYF+qkbSfMPqjplvRppR02tMUpVxZz8nyBNvVm9lIZsqrbPQ==} + dev: true + + /emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + /enquirer@2.3.6: + resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + engines: {node: '>=8.6'} + dependencies: + ansi-colors: 4.1.3 + dev: true + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + + /es-abstract@1.21.2: + resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + es-set-tostringtag: 2.0.1 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.5 + get-intrinsic: 1.2.0 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has: 1.0.3 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + is-array-buffer: 3.0.2 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.10 + is-weakref: 1.0.2 + object-inspect: 1.12.3 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.5.0 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.7 + string.prototype.trimend: 1.0.6 + string.prototype.trimstart: 1.0.6 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.9 + dev: false + + /es-set-tostringtag@2.0.1: + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.0 + has: 1.0.3 + has-tostringtag: 1.0.0 + dev: false + + /es-shim-unscopables@1.0.0: + resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + dependencies: + has: 1.0.3 + dev: false + + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: false + + /es5-ext@0.10.62: + resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} + engines: {node: '>=0.10'} + requiresBuild: true + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.3 + next-tick: 1.1.0 + dev: false + + /es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + dependencies: + d: 1.0.1 + es5-ext: 0.10.62 + es6-symbol: 3.1.3 + dev: false + + /es6-symbol@3.1.3: + resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} + dependencies: + d: 1.0.1 + ext: 1.7.0 + dev: false + + /esbuild-plugin-alias@0.2.1: + resolution: {integrity: sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==} + dev: false + + /esbuild@0.17.15: + resolution: {integrity: sha512-LBUV2VsUIc/iD9ME75qhT4aJj0r75abCVS0jakhFzOtR7TQsqQA5w0tZ+KTKnwl3kXE0MhskNdHDh/I5aCR1Zw==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.17.15 + '@esbuild/android-arm64': 0.17.15 + '@esbuild/android-x64': 0.17.15 + '@esbuild/darwin-arm64': 0.17.15 + '@esbuild/darwin-x64': 0.17.15 + '@esbuild/freebsd-arm64': 0.17.15 + '@esbuild/freebsd-x64': 0.17.15 + '@esbuild/linux-arm': 0.17.15 + '@esbuild/linux-arm64': 0.17.15 + '@esbuild/linux-ia32': 0.17.15 + '@esbuild/linux-loong64': 0.17.15 + '@esbuild/linux-mips64el': 0.17.15 + '@esbuild/linux-ppc64': 0.17.15 + '@esbuild/linux-riscv64': 0.17.15 + '@esbuild/linux-s390x': 0.17.15 + '@esbuild/linux-x64': 0.17.15 + '@esbuild/netbsd-x64': 0.17.15 + '@esbuild/openbsd-x64': 0.17.15 + '@esbuild/sunos-x64': 0.17.15 + '@esbuild/win32-arm64': 0.17.15 + '@esbuild/win32-ia32': 0.17.15 + '@esbuild/win32-x64': 0.17.15 + + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + /eslint-config-prettier@7.2.0(eslint@7.32.0): + resolution: {integrity: sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 7.32.0 + dev: true + + /eslint-config-prettier@8.8.0(eslint@8.37.0): + resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.37.0 + dev: false + + /eslint-formatter-pretty@4.1.0: + resolution: {integrity: sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==} + engines: {node: '>=10'} + dependencies: + '@types/eslint': 7.29.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + eslint-rule-docs: 1.1.235 + log-symbols: 4.1.0 + plur: 4.0.0 + string-width: 4.2.3 + supports-hyperlinks: 2.3.0 + dev: false + + /eslint-import-resolver-node@0.3.7: + resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} + dependencies: + debug: 3.2.7 + is-core-module: 2.12.0 + resolve: 1.22.2 + transitivePeerDependencies: + - supports-color + dev: false + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-node@0.3.7)(eslint@8.37.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@4.7.2) + debug: 3.2.7 + eslint: 8.37.0 + eslint-import-resolver-node: 0.3.7 + transitivePeerDependencies: + - supports-color + dev: false + + /eslint-plugin-es@3.0.1(eslint@7.32.0): + resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=4.19.1' + dependencies: + eslint: 7.32.0 + eslint-utils: 2.1.0 + regexpp: 3.2.0 + dev: true + + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.57.0)(eslint@8.37.0): + resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@4.7.2) + array-includes: 3.1.6 + array.prototype.flat: 1.3.1 + array.prototype.flatmap: 1.3.1 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.37.0 + eslint-import-resolver-node: 0.3.7 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-node@0.3.7)(eslint@8.37.0) + has: 1.0.3 + is-core-module: 2.12.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.values: 1.1.6 + resolve: 1.22.2 + semver: 6.3.0 + tsconfig-paths: 3.14.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: false + + /eslint-plugin-node@11.1.0(eslint@7.32.0): + resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=5.16.0' + dependencies: + eslint: 7.32.0 + eslint-plugin-es: 3.0.1(eslint@7.32.0) + eslint-utils: 2.1.0 + ignore: 5.2.4 + minimatch: 3.1.2 + resolve: 1.22.2 + semver: 6.3.0 + dev: true + + /eslint-plugin-prettier@3.4.1(eslint-config-prettier@7.2.0)(eslint@7.32.0)(prettier@2.8.8): + resolution: {integrity: sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==} + engines: {node: '>=6.0.0'} + peerDependencies: + eslint: '>=5.0.0' + eslint-config-prettier: '*' + prettier: '>=1.13.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + dependencies: + eslint: 7.32.0 + eslint-config-prettier: 7.2.0(eslint@7.32.0) + prettier: 2.8.8 + prettier-linter-helpers: 1.0.0 + dev: true + + /eslint-rule-docs@1.1.235: + resolution: {integrity: sha512-+TQ+x4JdTnDoFEXXb3fDvfGOwnyNV7duH8fXWTPD1ieaBmB8omj7Gw/pMBBu4uI2uJCCU8APDaQJzWuXnTsH4A==} + dev: false + + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + /eslint-scope@7.2.0: + resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: false + + /eslint-utils@2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} + dependencies: + eslint-visitor-keys: 1.3.0 + dev: true + + /eslint-utils@3.0.0(eslint@7.32.0): + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 7.32.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-visitor-keys@1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + dev: true + + /eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + dev: true + + /eslint-visitor-keys@3.4.0: + resolution: {integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: false + + /eslint@7.32.0: + resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==} + engines: {node: ^10.12.0 || >=12.0.0} + hasBin: true + dependencies: + '@babel/code-frame': 7.12.11 + '@eslint/eslintrc': 0.4.3 + '@humanwhocodes/config-array': 0.5.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + enquirer: 2.3.6 + escape-string-regexp: 4.0.0 + eslint-scope: 5.1.1 + eslint-utils: 2.1.0 + eslint-visitor-keys: 2.1.0 + espree: 7.3.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + functional-red-black-tree: 1.0.1 + glob-parent: 5.1.2 + globals: 13.20.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + js-yaml: 3.14.1 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + progress: 2.0.3 + regexpp: 3.2.0 + semver: 7.5.0 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + table: 6.8.1 + text-table: 0.2.0 + v8-compile-cache: 2.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint@8.37.0: + resolution: {integrity: sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.37.0) + '@eslint-community/regexpp': 4.5.0 + '@eslint/eslintrc': 2.0.2 + '@eslint/js': 8.37.0 + '@humanwhocodes/config-array': 0.11.8 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.0 + eslint-visitor-keys: 3.4.0 + espree: 9.5.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.20.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-sdsl: 4.4.0 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: false + + /esm-loader-typescript@1.0.4: + resolution: {integrity: sha512-ejo2f+NKIt23jaJKVpjcRQC0xTa6cTqt6VA+z8Ef/A/TCjQ5u7opPO1J4fJFeTiiHEo8JqU92EG4I1KwuXYZMg==} + dependencies: + create-esm-loader: 0.2.3 + npm-run-all: 4.1.5 + semver: 7.5.0 + typescript: 5.0.4 + dev: false + + /espree@7.3.1: + resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + acorn: 7.4.1 + acorn-jsx: 5.3.2(acorn@7.4.1) + eslint-visitor-keys: 1.3.0 + dev: true + + /espree@9.5.1: + resolution: {integrity: sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.8.2 + acorn-jsx: 5.3.2(acorn@8.8.2) + eslint-visitor-keys: 3.4.0 + dev: false + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + /eventemitter3@5.0.0: + resolution: {integrity: sha512-riuVbElZZNXLeLEoprfNYoDSwTBRR44X3mnhdI1YcnENpWTCsTTVZ2zFuqQcpoyqPQIUXdiPEU0ECAq0KQRaHg==} + dev: false + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + dev: true + + /expect@29.5.0: + resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/expect-utils': 29.5.0 + jest-get-type: 29.4.3 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + dev: true + + /ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + dependencies: + type: 2.7.2 + dev: false + + /external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + /fast-diff@1.2.0: + resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} + dev: true + + /fast-glob@3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + /fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + dependencies: + reusify: 1.0.4 + + /fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + dependencies: + bser: 2.1.1 + dev: true + + /fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.2.1 + dev: false + + /figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.0.4 + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: false + + /flat-cache@3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.7 + rimraf: 3.0.2 + + /flatted@3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: false + + /formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + dependencies: + fetch-blob: 3.2.0 + dev: false + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + /fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind@1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + + /function.prototype.name@1.1.5: + resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + functions-have-names: 1.2.3 + dev: false + + /functional-red-black-tree@1.0.1: + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + dev: true + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: false + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-intrinsic@1.2.0: + resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.3 + dev: false + + /get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + dev: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + dev: false + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: false + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /globals@13.20.0: + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + + /globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.0 + dev: false + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.0 + dev: false + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + /grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: false + + /gts@3.1.1(typescript@4.7.2): + resolution: {integrity: sha512-Jw44aBbzMnd1vtZs7tZt3LMstKQukCBg7N4CKVGzviIQ45Cz5b9lxDJGXVKj/9ySuGv6TYEeijZJGbiiVcM27w==} + engines: {node: '>=10'} + hasBin: true + peerDependencies: + typescript: '>=3' + dependencies: + '@typescript-eslint/eslint-plugin': 4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@4.7.2) + '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@4.7.2) + chalk: 4.1.2 + eslint: 7.32.0 + eslint-config-prettier: 7.2.0(eslint@7.32.0) + eslint-plugin-node: 11.1.0(eslint@7.32.0) + eslint-plugin-prettier: 3.4.1(eslint-config-prettier@7.2.0)(eslint@7.32.0)(prettier@2.8.8) + execa: 5.1.1 + inquirer: 7.3.3 + json5: 2.2.3 + meow: 9.0.0 + ncp: 2.0.0 + prettier: 2.8.8 + rimraf: 3.0.2 + typescript: 4.7.2 + write-file-atomic: 3.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /handlebars@4.7.7: + resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} + engines: {node: '>=0.4.7'} + hasBin: true + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.17.4 + dev: true + + /hard-rejection@2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: false + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + /has-property-descriptors@1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + dependencies: + get-intrinsic: 1.2.0 + dev: false + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: false + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: false + + /has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: false + + /has@1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + + /hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + /hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + dependencies: + lru-cache: 6.0.0 + + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /ignore@4.0.6: + resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} + engines: {node: '>= 4'} + dev: true + + /ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + /import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /inquirer@7.3.3: + resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} + engines: {node: '>=8.0.0'} + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + run-async: 2.4.1 + rxjs: 6.6.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + dev: true + + /internal-slot@1.0.5: + resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.0 + has: 1.0.3 + side-channel: 1.0.4 + dev: false + + /irregular-plurals@3.5.0: + resolution: {integrity: sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==} + engines: {node: '>=8'} + dev: false + + /is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + is-typed-array: 1.1.10 + dev: false + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: false + + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: false + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: false + + /is-core-module@2.12.0: + resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} + dependencies: + has: 1.0.3 + + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: false + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + /is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + + /is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: false + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: false + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: false + + /is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: false + + /is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.2 + dev: false + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: false + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: false + + /is-typed-array@1.1.10: + resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: false + + /is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: false + + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.2 + dev: false + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + /istanbul-lib-coverage@3.2.0: + resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} + engines: {node: '>=8'} + dev: true + + /istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.21.4 + '@babel/parser': 7.21.4 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-report@3.0.0: + resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} + engines: {node: '>=8'} + dependencies: + istanbul-lib-coverage: 3.2.0 + make-dir: 3.1.0 + supports-color: 7.2.0 + dev: true + + /istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + dependencies: + debug: 4.3.4 + istanbul-lib-coverage: 3.2.0 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-reports@3.1.5: + resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.0 + dev: true + + /jest-changed-files@29.5.0: + resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + execa: 5.1.1 + p-limit: 3.1.0 + dev: true + + /jest-circus@29.5.0: + resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.5.0 + '@jest/expect': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 14.11.2 + chalk: 4.1.2 + co: 4.6.0 + dedent: 0.7.0 + is-generator-fn: 2.1.0 + jest-each: 29.5.0 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-runtime: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 + p-limit: 3.1.0 + pretty-format: 29.5.0 + pure-rand: 6.0.2 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-cli@29.5.0(@types/node@14.11.2): + resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + import-local: 3.1.0 + jest-config: 29.5.0(@types/node@14.11.2) + jest-util: 29.5.0 + jest-validate: 29.5.0 + prompts: 2.4.2 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + + /jest-config@29.5.0(@types/node@14.11.2): + resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.21.4 + '@jest/test-sequencer': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 14.11.2 + babel-jest: 29.5.0(@babel/core@7.21.4) + chalk: 4.1.2 + ci-info: 3.8.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.5.0 + jest-environment-node: 29.5.0 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-runner: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.5.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-diff@29.5.0: + resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.4.3 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 + + /jest-docblock@29.4.3: + resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + detect-newline: 3.1.0 + dev: true + + /jest-each@29.5.0: + resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + chalk: 4.1.2 + jest-get-type: 29.4.3 + jest-util: 29.5.0 + pretty-format: 29.5.0 + dev: true + + /jest-environment-node@29.5.0: + resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.5.0 + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 14.11.2 + jest-mock: 29.5.0 + jest-util: 29.5.0 + dev: true + + /jest-get-type@29.4.3: + resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + /jest-haste-map@29.5.0: + resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@types/graceful-fs': 4.1.6 + '@types/node': 14.11.2 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.4.3 + jest-util: 29.5.0 + jest-worker: 29.5.0 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /jest-leak-detector@29.5.0: + resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.4.3 + pretty-format: 29.5.0 + dev: true + + /jest-matcher-utils@29.5.0: + resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 29.5.0 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 + dev: true + + /jest-message-util@29.5.0: + resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.21.4 + '@jest/types': 29.5.0 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 29.5.0 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + + /jest-mock@29.5.0: + resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@types/node': 14.11.2 + jest-util: 29.5.0 + dev: true + + /jest-pnp-resolver@1.2.3(jest-resolve@29.5.0): + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 29.5.0 + dev: true + + /jest-regex-util@29.4.3: + resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-resolve-dependencies@29.5.0: + resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-regex-util: 29.4.3 + jest-snapshot: 29.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-resolve@29.5.0: + resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.5.0) + jest-util: 29.5.0 + jest-validate: 29.5.0 + resolve: 1.22.2 + resolve.exports: 2.0.2 + slash: 3.0.0 + dev: true + + /jest-runner@29.5.0: + resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.5.0 + '@jest/environment': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 14.11.2 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.4.3 + jest-environment-node: 29.5.0 + jest-haste-map: 29.5.0 + jest-leak-detector: 29.5.0 + jest-message-util: 29.5.0 + jest-resolve: 29.5.0 + jest-runtime: 29.5.0 + jest-util: 29.5.0 + jest-watcher: 29.5.0 + jest-worker: 29.5.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-runtime@29.5.0: + resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.5.0 + '@jest/fake-timers': 29.5.0 + '@jest/globals': 29.5.0 + '@jest/source-map': 29.4.3 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 14.11.2 + chalk: 4.1.2 + cjs-module-lexer: 1.2.2 + collect-v8-coverage: 1.0.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + jest-message-util: 29.5.0 + jest-mock: 29.5.0 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-snapshot@29.5.0: + resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.21.4 + '@babel/generator': 7.21.4 + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.4) + '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.21.4) + '@babel/traverse': 7.21.4 + '@babel/types': 7.21.4 + '@jest/expect-utils': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/babel__traverse': 7.18.5 + '@types/prettier': 2.7.2 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.4) + chalk: 4.1.2 + expect: 29.5.0 + graceful-fs: 4.2.11 + jest-diff: 29.5.0 + jest-get-type: 29.4.3 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + natural-compare: 1.4.0 + pretty-format: 29.5.0 + semver: 7.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-util@29.5.0: + resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@types/node': 14.11.2 + chalk: 4.1.2 + ci-info: 3.8.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + dev: true + + /jest-validate@29.5.0: + resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.4.3 + leven: 3.1.0 + pretty-format: 29.5.0 + dev: true + + /jest-watcher@29.5.0: + resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 14.11.2 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.5.0 + string-length: 4.0.2 + dev: true + + /jest-worker@29.5.0: + resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@types/node': 14.11.2 + jest-util: 29.5.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest@29.5.0(@types/node@14.11.2): + resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.5.0 + '@jest/types': 29.5.0 + import-local: 3.1.0 + jest-cli: 29.5.0(@types/node@14.11.2) + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + + /js-sdsl@4.4.0: + resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} + dev: false + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: false + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + dev: false + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: false + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + dev: true + + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + dev: true + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + /light-bolt11-decoder@3.0.0: + resolution: {integrity: sha512-AKvOigD2pmC8ktnn2TIqdJu0K0qk6ukUmTvHwF3JNkm8uWCqt18Ijn33A/a7gaRZ4PghJ59X+8+MXrzLKdBTmQ==} + dependencies: + '@scure/base': 1.1.1 + dev: false + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + /load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} + dependencies: + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + dev: false + + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: false + + /lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + /lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + dev: true + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true + + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: false + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + + /lunr@2.3.9: + resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + + /make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + dependencies: + semver: 6.3.0 + dev: true + + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true + + /makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + dependencies: + tmpl: 1.0.5 + dev: true + + /map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + + /map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + + /marked@4.3.0: + resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} + engines: {node: '>= 12'} + hasBin: true + + /memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + dev: false + + /meow@9.0.0: + resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} + engines: {node: '>=10'} + dependencies: + '@types/minimist': 1.2.2 + camelcase-keys: 6.2.2 + decamelize: 1.2.0 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.18.1 + yargs-parser: 20.2.9 + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + + /minimatch@9.0.0: + resolution: {integrity: sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + + /minimist-options@4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: false + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: false + + /mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + dev: true + + /natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + dev: false + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + /ncp@2.0.0: + resolution: {integrity: sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==} + hasBin: true + dev: true + + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: true + + /next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + dev: false + + /nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + dev: false + + /node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + dev: false + + /node-fetch@3.3.1: + resolution: {integrity: sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + dev: false + + /node-gyp-build@4.6.0: + resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==} + hasBin: true + dev: false + + /node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + dev: true + + /node-releases@2.0.10: + resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} + dev: true + + /normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.2 + semver: 5.7.1 + validate-npm-package-license: 3.0.4 + + /normalize-package-data@3.0.3: + resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} + engines: {node: '>=10'} + dependencies: + hosted-git-info: 4.1.0 + is-core-module: 2.12.0 + semver: 7.5.0 + validate-npm-package-license: 3.0.4 + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /nostr-tools@1.8.1: + resolution: {integrity: sha512-/2IUe5xINUYT5hYBoEz51dfRaodbRHnyF8n+ZbKWCoh0ZRX6AL88OoDNrWaWWo7tP5j5OyzSL9g/z4TP7bshEA==} + dependencies: + '@noble/hashes': 1.0.0 + '@noble/secp256k1': 1.7.1 + '@scure/base': 1.1.1 + '@scure/bip32': 1.3.0 + '@scure/bip39': 1.2.0 + prettier: 2.8.8 + dev: false + + /npm-run-all@4.1.5: + resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} + engines: {node: '>= 4'} + hasBin: true + dependencies: + ansi-styles: 3.2.1 + chalk: 2.4.2 + cross-spawn: 6.0.5 + memorystream: 0.3.1 + minimatch: 3.1.2 + pidtree: 0.3.1 + read-pkg: 3.0.0 + shell-quote: 1.8.1 + string.prototype.padend: 3.1.4 + dev: false + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /object-inspect@1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + dev: false + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: false + + /object.assign@4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: false + + /object.values@1.1.6: + resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /optionator@0.9.1: + resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.3 + + /os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + dev: true + + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: false + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + + /parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + dev: false + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.21.4 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + /path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + dev: false + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + /path-type@3.0.0: + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} + dependencies: + pify: 3.0.0 + dev: false + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + /pidtree@0.3.1: + resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} + engines: {node: '>=0.10'} + hasBin: true + dev: false + + /pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + dev: false + + /pirates@4.0.5: + resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} + engines: {node: '>= 6'} + dev: true + + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + dev: true + + /plur@4.0.0: + resolution: {integrity: sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==} + engines: {node: '>=10'} + dependencies: + irregular-plurals: 3.5.0 + dev: false + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + /prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + dependencies: + fast-diff: 1.2.0 + dev: true + + /prettier-plugin-organize-imports@3.2.2(prettier@2.8.8)(typescript@4.7.2): + resolution: {integrity: sha512-e97lE6odGSiHonHJMTYC0q0iLXQyw0u5z/PJpvP/3vRy6/Zi9kLBwFAbEGjDzIowpjQv8b+J04PDamoUSQbzGA==} + peerDependencies: + '@volar/vue-language-plugin-pug': ^1.0.4 + '@volar/vue-typescript': ^1.0.4 + prettier: '>=2.0' + typescript: '>=2.9' + peerDependenciesMeta: + '@volar/vue-language-plugin-pug': + optional: true + '@volar/vue-typescript': + optional: true + dependencies: + prettier: 2.8.8 + typescript: 4.7.2 + dev: true + + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + /pretty-format@29.5.0: + resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.4.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + + /progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: true + + /prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + dev: true + + /punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + + /pure-rand@6.0.2: + resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + /quick-lru@4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + + /read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + + /read-pkg@3.0.0: + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} + engines: {node: '>=4'} + dependencies: + load-json-file: 4.0.0 + normalize-package-data: 2.5.0 + path-type: 3.0.0 + dev: false + + /read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + dependencies: + '@types/normalize-package-data': 2.4.1 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + + /redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + + /regexp.prototype.flags@1.5.0: + resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + functions-have-names: 1.2.3 + dev: false + + /regexpp@3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + dev: true + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: true + + /resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + dev: true + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + dev: true + + /resolve@1.22.2: + resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} + hasBin: true + dependencies: + is-core-module: 2.12.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + /restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + + /run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + + /rxjs@6.6.7: + resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} + engines: {npm: '>=2.0.0'} + dependencies: + tslib: 1.14.1 + dev: true + + /safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + is-regex: 1.1.4 + dev: false + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /semver@5.7.1: + resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + hasBin: true + + /semver@6.3.0: + resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + hasBin: true + + /semver@7.5.0: + resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + + /shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + dependencies: + shebang-regex: 1.0.0 + dev: false + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + + /shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + dev: false + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + /shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + dev: false + + /shiki@0.14.1: + resolution: {integrity: sha512-+Jz4nBkCBe0mEDqo1eKRcCdjRtrCjozmcbTUjbPTX7OOJfEbTZzlUWlZtGe3Gb5oV1/jnojhG//YZc3rs9zSEw==} + dependencies: + ansi-sequence-parser: 1.1.0 + jsonc-parser: 3.2.0 + vscode-oniguruma: 1.7.0 + vscode-textmate: 8.0.0 + + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + object-inspect: 1.12.3 + dev: false + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + /slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.13 + + /spdx-exceptions@2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + + /spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.13 + + /spdx-license-ids@3.0.13: + resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} + + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + dev: true + + /string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + /string.prototype.padend@3.1.4: + resolution: {integrity: sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false + + /string.prototype.trim@1.2.7: + resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false + + /string.prototype.trimend@1.0.6: + resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false + + /string.prototype.trimstart@1.0.6: + resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: false + + /strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + dev: true + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + dependencies: + min-indent: 1.0.1 + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-hyperlinks@2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + dev: false + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + /table@6.8.1: + resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} + engines: {node: '>=10.0.0'} + dependencies: + ajv: 8.12.0 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + /through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: true + + /tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + dependencies: + os-tmpdir: 1.0.2 + dev: true + + /tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + dev: true + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + + /trim-newlines@3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + + /ts-jest@29.1.0(@babel/core@7.21.4)(esbuild@0.17.15)(jest@29.5.0)(typescript@4.7.2): + resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3 <6' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + dependencies: + '@babel/core': 7.21.4 + bs-logger: 0.2.6 + esbuild: 0.17.15 + fast-json-stable-stringify: 2.1.0 + jest: 29.5.0(@types/node@14.11.2) + jest-util: 29.5.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.5.0 + typescript: 4.7.2 + yargs-parser: 21.1.1 + dev: true + + /tsconfig-paths@3.14.2: + resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: false + + /tsd@0.28.1: + resolution: {integrity: sha512-FeYrfJ05QgEMW/qOukNCr4fAJHww4SaKnivAXRv4g5kj4FeLpNV7zH4dorzB9zAfVX4wmA7zWu/wQf7kkcvfbw==} + engines: {node: '>=14.16'} + hasBin: true + dependencies: + '@tsd/typescript': 5.0.4 + eslint-formatter-pretty: 4.1.0 + globby: 11.1.0 + jest-diff: 29.5.0 + meow: 9.0.0 + path-exists: 4.0.0 + read-pkg-up: 7.0.1 + dev: false + + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + /tstl@2.5.13: + resolution: {integrity: sha512-h9wayHHFI5+yqt8iau0vqH96cTNhezhZ/Fk/hrIdpfkiMu3lg9nzyvMfs5bIdX51IVzZO6DudLqhkL/rVXpT6g==} + dev: false + + /tsutils@3.21.0(typescript@4.7.2): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 4.7.2 + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest@0.18.1: + resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} + engines: {node: '>=10'} + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + /type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + + /type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + /type@1.2.0: + resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} + dev: false + + /type@2.7.2: + resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} + dev: false + + /typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + is-typed-array: 1.1.10 + dev: false + + /typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + dependencies: + is-typedarray: 1.0.0 + + /typedoc-plugin-markdown@3.14.0(typedoc@0.24.6): + resolution: {integrity: sha512-UyQLkLRkfTFhLdhSf3RRpA3nNInGn+k6sll2vRXjflaMNwQAAiB61SYbisNZTg16t4K1dt1bPQMMGLrxS0GZ0Q==} + peerDependencies: + typedoc: '>=0.23.0' + dependencies: + handlebars: 4.7.7 + typedoc: 0.24.6(typescript@4.7.2) + dev: true + + /typedoc@0.24.6(typescript@4.7.2): + resolution: {integrity: sha512-c3y3h45xJv3qYwKDAwU6Cl+26CjT0ZvblHzfHJ+SjQDM4p1mZxtgHky4lhmG0+nNarRht8kADfZlbspJWdZarQ==} + engines: {node: '>= 14.14'} + hasBin: true + peerDependencies: + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x + dependencies: + lunr: 2.3.9 + marked: 4.3.0 + minimatch: 9.0.0 + shiki: 0.14.1 + typescript: 4.7.2 + + /typescript@4.7.2: + resolution: {integrity: sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==} + engines: {node: '>=4.2.0'} + hasBin: true + + /typescript@5.0.4: + resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} + engines: {node: '>=12.20'} + hasBin: true + dev: false + + /uglify-js@3.17.4: + resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} + engines: {node: '>=0.8.0'} + hasBin: true + requiresBuild: true + dev: true + optional: true + + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.2 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: false + + /update-browserslist-db@1.0.11(browserslist@4.21.5): + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.5 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.0 + + /utf-8-validate@5.0.10: + resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} + engines: {node: '>=6.14.2'} + requiresBuild: true + dependencies: + node-gyp-build: 4.6.0 + dev: false + + /utf8-buffer@1.0.0: + resolution: {integrity: sha512-ueuhzvWnp5JU5CiGSY4WdKbiN/PO2AZ/lpeLiz2l38qwdLy/cW40XobgyuIWucNyum0B33bVB0owjFCeGBSLqg==} + engines: {node: '>=8'} + dev: false + + /v8-compile-cache@2.3.0: + resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} + dev: true + + /v8-to-istanbul@9.1.0: + resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} + engines: {node: '>=10.12.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.18 + '@types/istanbul-lib-coverage': 2.0.4 + convert-source-map: 1.9.0 + dev: true + + /validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + /vscode-oniguruma@1.7.0: + resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} + + /vscode-textmate@8.0.0: + resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} + + /walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + dependencies: + makeerror: 1.0.12 + dev: true + + /web-streams-polyfill@3.2.1: + resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} + engines: {node: '>= 8'} + dev: false + + /websocket-polyfill@0.0.3: + resolution: {integrity: sha512-pF3kR8Uaoau78MpUmFfzbIRxXj9PeQrCuPepGE6JIsfsJ/o/iXr07Q2iQNzKSSblQJ0FiGWlS64N4pVSm+O3Dg==} + dependencies: + tstl: 2.5.13 + websocket: 1.0.34 + transitivePeerDependencies: + - supports-color + dev: false + + /websocket@1.0.34: + resolution: {integrity: sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==} + engines: {node: '>=4.0.0'} + dependencies: + bufferutil: 4.0.7 + debug: 2.6.9 + es5-ext: 0.10.62 + typedarray-to-buffer: 3.1.5 + utf-8-validate: 5.0.10 + yaeti: 0.0.6 + transitivePeerDependencies: + - supports-color + dev: false + + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: false + + /which-typed-array@1.1.9: + resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + is-typed-array: 1.1.10 + dev: false + + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: false + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + + /word-wrap@1.2.3: + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} + + /wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + /write-file-atomic@3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + dev: true + + /write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: true + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yaeti@0.0.6: + resolution: {integrity: sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==} + engines: {node: '>=0.10.32'} + dev: false + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + /yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} From e4ea5ffeb42df6642094de5900d9bbbfc2261502 Mon Sep 17 00:00:00 2001 From: Wlad Paiva Date: Fri, 28 Apr 2023 10:50:06 -0300 Subject: [PATCH 102/773] fix: formmatting --- .prettierignore | 3 ++- .prettierrc | 9 +++++++++ .prettierrc.json | 11 ----------- package.json | 1 + 4 files changed, 12 insertions(+), 12 deletions(-) create mode 100644 .prettierrc delete mode 100644 .prettierrc.json diff --git a/.prettierignore b/.prettierignore index 5498e0f4..4bc4547d 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,2 +1,3 @@ -build +dist +lib coverage diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..6a0b664d --- /dev/null +++ b/.prettierrc @@ -0,0 +1,9 @@ +{ + "importOrder": ["^[./]"], + "tabWidth": 2, + "useTabs": false, + "trailingComma": "none", + "printWidth": 100, + "singleQuote": false, + "semi": true +} diff --git a/.prettierrc.json b/.prettierrc.json deleted file mode 100644 index 6f05d0f7..00000000 --- a/.prettierrc.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "importOrder": [ - "^[./]" - ], - "tabWidth": 4, - "useTabs": false, - "trailingComma": "none", - "printWidth": 100, - "singleQuote": false, - "semi": true -} diff --git a/package.json b/package.json index 8c6fedc3..22ed13e2 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "clean": "rm -rf lib docs", "test": "jest", "lint": "eslint src/**/*.ts", + "format": "prettier --write \"**/*.{js,jsx,json,yml,yaml,css,ts,tsx,md,mdx}\"", "compile": "tsc", "prepare": "pnpm build", "pretest": "pnpm compile", From 027135015ccfef005264a42dad21b0c6566b7138 Mon Sep 17 00:00:00 2001 From: Wlad Paiva Date: Sun, 14 May 2023 13:33:47 -0300 Subject: [PATCH 103/773] chore: add missing configs --- .prettierignore | 3 ++- .prettierrc | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.prettierignore b/.prettierignore index 4bc4547d..783e224a 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,3 +1,4 @@ dist +docs lib -coverage +coverage \ No newline at end of file diff --git a/.prettierrc b/.prettierrc index 6a0b664d..3076ae80 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,6 +1,6 @@ { "importOrder": ["^[./]"], - "tabWidth": 2, + "tabWidth": 4, "useTabs": false, "trailingComma": "none", "printWidth": 100, From c33cd77412986c3f4dde87e99b763310b44f391c Mon Sep 17 00:00:00 2001 From: Wlad Paiva Date: Mon, 15 May 2023 12:10:54 -0300 Subject: [PATCH 104/773] chore: update package-lock file --- package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 055ab7a7..3152333e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.3.11", + "version": "0.3.141", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@nostr-dev-kit/ndk", - "version": "0.3.11", + "version": "0.3.141", "license": "MIT", "dependencies": { "@scure/base": "^1.1.1", From a77f3ca449128e1dc8e1b7b350e62a79acb2dac1 Mon Sep 17 00:00:00 2001 From: Wlad Paiva Date: Mon, 15 May 2023 12:11:37 -0300 Subject: [PATCH 105/773] chore: apply formatting --- .eslintrc.json | 6 +- README.md | 73 +- config/tsconfig.cjs.json | 10 +- config/tsconfig.esm.json | 12 +- config/tsconfig.types.json | 12 +- config/tsconfig.umd.json | 10 +- package-lock.json | 27832 +++++++++--------- package.json | 136 +- src/cache/index.ts | 6 +- src/events/content-tagger.test.ts | 55 +- src/events/content-tagger.ts | 34 +- src/events/dedup.ts | 4 +- src/events/index.test.ts | 33 +- src/events/index.ts | 51 +- src/events/kind.ts | 16 +- src/events/nip04.ts | 10 +- src/events/nip19.ts | 4 +- src/index.ts | 97 +- src/light-bolt11-decoder.d.ts | 4 +- src/relay/index.ts | 62 +- src/relay/pool/index.ts | 43 +- src/relay/sets/calculate.ts | 21 +- src/relay/sets/index.ts | 33 +- src/signers/index.ts | 4 +- src/signers/nip07/index.ts | 18 +- src/signers/nip46/backend/connect.ts | 18 +- src/signers/nip46/backend/describe.ts | 10 +- src/signers/nip46/backend/get-public-key.ts | 10 +- src/signers/nip46/backend/index.ts | 53 +- src/signers/nip46/backend/sign-event.ts | 10 +- src/signers/nip46/index.ts | 30 +- src/signers/nip46/rpc.ts | 38 +- src/signers/private-key/index.test.ts | 32 +- src/signers/private-key/index.ts | 20 +- src/subscription/index.ts | 116 +- src/user/follows.test.ts | 27 +- src/user/follows.ts | 16 +- src/user/index.test.ts | 64 +- src/user/index.ts | 35 +- src/user/profile.ts | 2 +- src/zap/index.ts | 70 +- src/zap/invoice.ts | 30 +- tsconfig.json | 26 +- typedoc.json | 2 +- 44 files changed, 14640 insertions(+), 14555 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 9fffbcde..ce99814c 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,9 +1,5 @@ { - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "prettier" - ], + "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended", "prettier"], "parser": "@typescript-eslint/parser", "parserOptions": { "sourceType": "module", diff --git a/README.md b/README.md index ba9c9f06..0439b2cc 100644 --- a/README.md +++ b/README.md @@ -2,16 +2,14 @@ drawing -NDK is a [nostr]([url](https://github.com/nostr-protocol/nostr)) development kit that makes the experience of building Nostr-related applications, whether they are relays, clients, or anything in between, better, more reliable and overall nicer to work with than existing solutions. - +NDK is a [nostr](<[url](https://github.com/nostr-protocol/nostr)>) development kit that makes the experience of building Nostr-related applications, whether they are relays, clients, or anything in between, better, more reliable and overall nicer to work with than existing solutions. ## NDK Objectives 1. The core goal of NDK is to improve the decentralization of Nostr via intelligent conventions and data discovery features without depending on any one central point of coordination (such as large relays or centralized search providers). -2. NDK team aims to have new to nostr devs get set up, and reading a NIP-01 event within 10 minutes. +2. NDK team aims to have new to nostr devs get set up, and reading a NIP-01 event within 10 minutes. 3. NDK's objective is to serve prospective, and current nostr devs as clients. If you have friction with the NDK developer experience, please open issues, and ask for help from the NDK team! Devs are encouraged to search through existing, and/or create new github issues when experiencing friction with NDK. - ## Installation ```sh @@ -36,42 +34,43 @@ localStorage.debug = 'ndk:*' ## Support ### NDK NIP-28 group chat - * note15m6rdfvlmd0z836hk83sg7r59xtv23qnmamhsslq5uc6744fdm4qfkeat3 - * [Coracle](https://app.coracle.social/chat/note15m6rdfvlmd0z836hk83sg7r59xtv23qnmamhsslq5uc6744fdm4qfkeat3) - * [Nostrchat](https://www.nostrchat.io/channel/a6f436a59fdb5e23c757b1e30478742996c54413df777843e0a731af56a96eea) - * [WIP documentation](https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md) + +- note15m6rdfvlmd0z836hk83sg7r59xtv23qnmamhsslq5uc6744fdm4qfkeat3 + - [Coracle](https://app.coracle.social/chat/note15m6rdfvlmd0z836hk83sg7r59xtv23qnmamhsslq5uc6744fdm4qfkeat3) + - [Nostrchat](https://www.nostrchat.io/channel/a6f436a59fdb5e23c757b1e30478742996c54413df777843e0a731af56a96eea) +- [WIP documentation](https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md) ## Features -- [x] NIP-01 -- [x] Caching adapters - * Server-side - - [x] [Redis](https://github.com/pablof7z/ndk-cache-redis) - - [ ] In-memory - * Client-side - - [ ] LocalStorage - - [ ] IndexDB -- [~] NIP-04: Encryption support -- [ ] NIP-26: Event delegation -- [ ] NIP-41: Relay authentication -- [x] NIP-57: Zaps - - [x] LUD06 - - [x] LUD16 -- [ ] NIP-65: Contacts' Relay list -- Subscription Management - - [x] Auto-grouping queries - - [x] Auto-closing subscriptions -- Signing Adapters - - [x] Private key - - [x] NIP-07 - - [ ] NIP-26 - - [x] NIP-46 -- Relay discovery - - [ ] Gossip-model (NIP-65) - - [ ] Implicit relays discovery following pubkey usage - - [ ] Implicit relays discovery following `t` tag usage - - [ ] Explicit relays blacklist -- [ ] nostr-tools/SimplePool drop-in replacement interface +- [x] NIP-01 +- [x] Caching adapters + - Server-side + - [x] [Redis](https://github.com/pablof7z/ndk-cache-redis) + - [ ] In-memory + - Client-side + - [ ] LocalStorage + - [ ] IndexDB +- [~] NIP-04: Encryption support +- [ ] NIP-26: Event delegation +- [ ] NIP-41: Relay authentication +- [x] NIP-57: Zaps + - [x] LUD06 + - [x] LUD16 +- [ ] NIP-65: Contacts' Relay list +- Subscription Management + - [x] Auto-grouping queries + - [x] Auto-closing subscriptions +- Signing Adapters + - [x] Private key + - [x] NIP-07 + - [ ] NIP-26 + - [x] NIP-46 +- Relay discovery + - [ ] Gossip-model (NIP-65) + - [ ] Implicit relays discovery following pubkey usage + - [ ] Implicit relays discovery following `t` tag usage + - [ ] Explicit relays blacklist +- [ ] nostr-tools/SimplePool drop-in replacement interface ## Instantiate an NDK instance diff --git a/config/tsconfig.cjs.json b/config/tsconfig.cjs.json index 6c52e127..112107b8 100644 --- a/config/tsconfig.cjs.json +++ b/config/tsconfig.cjs.json @@ -1,7 +1,7 @@ { - "extends": "../tsconfig", - "compilerOptions": { - "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, - "outDir": "../dist/cjs" /* Redirect output structure to the directory. */ - } + "extends": "../tsconfig", + "compilerOptions": { + "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, + "outDir": "../dist/cjs" /* Redirect output structure to the directory. */ + } } diff --git a/config/tsconfig.esm.json b/config/tsconfig.esm.json index ce4808b0..a5e2ab18 100644 --- a/config/tsconfig.esm.json +++ b/config/tsconfig.esm.json @@ -1,8 +1,8 @@ { - "extends": "../tsconfig", - "compilerOptions": { - "moduleResolution": "node", - "module": "ESNext" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, - "outDir": "../lib/esm" /* Redirect output structure to the directory. */ - } + "extends": "../tsconfig", + "compilerOptions": { + "moduleResolution": "node", + "module": "ESNext" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, + "outDir": "../lib/esm" /* Redirect output structure to the directory. */ + } } diff --git a/config/tsconfig.types.json b/config/tsconfig.types.json index 8de87ee2..28c66ead 100644 --- a/config/tsconfig.types.json +++ b/config/tsconfig.types.json @@ -1,8 +1,8 @@ { - "extends": "../tsconfig", - "compilerOptions": { - "declaration": true /* Generates corresponding '.d.ts' file. */, - "emitDeclarationOnly": true, - "outDir": "../dist/types" /* Redirect output structure to the directory. */ - } + "extends": "../tsconfig", + "compilerOptions": { + "declaration": true /* Generates corresponding '.d.ts' file. */, + "emitDeclarationOnly": true, + "outDir": "../dist/types" /* Redirect output structure to the directory. */ + } } diff --git a/config/tsconfig.umd.json b/config/tsconfig.umd.json index 5559c666..289bdfff 100644 --- a/config/tsconfig.umd.json +++ b/config/tsconfig.umd.json @@ -1,7 +1,7 @@ { - "extends": "../tsconfig", - "compilerOptions": { - "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, - "declaration": false /* Generates corresponding '.d.ts' file. */ - } + "extends": "../tsconfig", + "compilerOptions": { + "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, + "declaration": false /* Generates corresponding '.d.ts' file. */ + } } diff --git a/package-lock.json b/package-lock.json index 3152333e..3e4479a9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,13998 +1,13998 @@ { - "name": "@nostr-dev-kit/ndk", - "version": "0.3.141", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "@nostr-dev-kit/ndk", - "version": "0.3.141", - "license": "MIT", - "dependencies": { - "@scure/base": "^1.1.1", - "@typescript-eslint/eslint-plugin": "^5.57.0", - "@typescript-eslint/parser": "^5.57.0", - "debug": "^4.3.4", - "esbuild": "^0.17.15", - "esbuild-plugin-alias": "^0.2.1", - "eslint": "^8.37.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-import": "^2.27.5", - "esm-loader-typescript": "^1.0.4", - "eventemitter3": "^5.0.0", - "light-bolt11-decoder": "^3.0.0", - "node-fetch": "^3.3.1", - "nostr-tools": "^1.8.1", - "tsd": "^0.28.1", - "typedoc": "^0.24.6", - "utf8-buffer": "^1.0.0", - "websocket-polyfill": "^0.0.3" - }, - "devDependencies": { - "@types/debug": "^4.1.7", - "@types/jest": "^29.5.0", - "@types/node": "^14.11.2", - "gts": "^3.1.1", - "jest": "^29.5.0", - "prettier-plugin-organize-imports": "^3.2.2", - "ts-jest": "^29.1.0", - "typedoc-plugin-markdown": "^3.14.0", - "typescript": "~4.7.0" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", - "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.3.tgz", - "integrity": "sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.3", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.21.2", - "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.3", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.3", - "@babel/types": "^7.21.3", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz", - "integrity": "sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.21.3", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", - "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.2", - "@babel/types": "^7.21.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", - "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", - "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", - "dev": true, - "dependencies": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz", - "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", - "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", - "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template/node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz", - "integrity": "sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.3", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.3", - "@babel/types": "^7.21.3", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@esbuild/android-arm": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.15.tgz", - "integrity": "sha512-sRSOVlLawAktpMvDyJIkdLI/c/kdRTOqo8t6ImVxg8yT7LQDUYV5Rp2FKeEosLr6ZCja9UjYAzyRSxGteSJPYg==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.15.tgz", - "integrity": "sha512-0kOB6Y7Br3KDVgHeg8PRcvfLkq+AccreK///B4Z6fNZGr/tNHX0z2VywCc7PTeWp+bPvjA5WMvNXltHw5QjAIA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.15.tgz", - "integrity": "sha512-MzDqnNajQZ63YkaUWVl9uuhcWyEyh69HGpMIrf+acR4otMkfLJ4sUCxqwbCyPGicE9dVlrysI3lMcDBjGiBBcQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.15.tgz", - "integrity": "sha512-7siLjBc88Z4+6qkMDxPT2juf2e8SJxmsbNVKFY2ifWCDT72v5YJz9arlvBw5oB4W/e61H1+HDB/jnu8nNg0rLA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.15.tgz", - "integrity": "sha512-NbImBas2rXwYI52BOKTW342Tm3LTeVlaOQ4QPZ7XuWNKiO226DisFk/RyPk3T0CKZkKMuU69yOvlapJEmax7cg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.15.tgz", - "integrity": "sha512-Xk9xMDjBVG6CfgoqlVczHAdJnCs0/oeFOspFap5NkYAmRCT2qTn1vJWA2f419iMtsHSLm+O8B6SLV/HlY5cYKg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.15.tgz", - "integrity": "sha512-3TWAnnEOdclvb2pnfsTWtdwthPfOz7qAfcwDLcfZyGJwm1SRZIMOeB5FODVhnM93mFSPsHB9b/PmxNNbSnd0RQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.15.tgz", - "integrity": "sha512-MLTgiXWEMAMr8nmS9Gigx43zPRmEfeBfGCwxFQEMgJ5MC53QKajaclW6XDPjwJvhbebv+RzK05TQjvH3/aM4Xw==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.15.tgz", - "integrity": "sha512-T0MVnYw9KT6b83/SqyznTs/3Jg2ODWrZfNccg11XjDehIved2oQfrX/wVuev9N936BpMRaTR9I1J0tdGgUgpJA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.15.tgz", - "integrity": "sha512-wp02sHs015T23zsQtU4Cj57WiteiuASHlD7rXjKUyAGYzlOKDAjqK6bk5dMi2QEl/KVOcsjwL36kD+WW7vJt8Q==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.15.tgz", - "integrity": "sha512-k7FsUJjGGSxwnBmMh8d7IbObWu+sF/qbwc+xKZkBe/lTAF16RqxRCnNHA7QTd3oS2AfGBAnHlXL67shV5bBThQ==", - "cpu": [ - "loong64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.15.tgz", - "integrity": "sha512-ZLWk6czDdog+Q9kE/Jfbilu24vEe/iW/Sj2d8EVsmiixQ1rM2RKH2n36qfxK4e8tVcaXkvuV3mU5zTZviE+NVQ==", - "cpu": [ - "mips64el" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.15.tgz", - "integrity": "sha512-mY6dPkIRAiFHRsGfOYZC8Q9rmr8vOBZBme0/j15zFUKM99d4ILY4WpOC7i/LqoY+RE7KaMaSfvY8CqjJtuO4xg==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.15.tgz", - "integrity": "sha512-EcyUtxffdDtWjjwIH8sKzpDRLcVtqANooMNASO59y+xmqqRYBBM7xVLQhqF7nksIbm2yHABptoioS9RAbVMWVA==", - "cpu": [ - "riscv64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.15.tgz", - "integrity": "sha512-BuS6Jx/ezxFuHxgsfvz7T4g4YlVrmCmg7UAwboeyNNg0OzNzKsIZXpr3Sb/ZREDXWgt48RO4UQRDBxJN3B9Rbg==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.15.tgz", - "integrity": "sha512-JsdS0EgEViwuKsw5tiJQo9UdQdUJYuB+Mf6HxtJSPN35vez1hlrNb1KajvKWF5Sa35j17+rW1ECEO9iNrIXbNg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.15.tgz", - "integrity": "sha512-R6fKjtUysYGym6uXf6qyNephVUQAGtf3n2RCsOST/neIwPqRWcnc3ogcielOd6pT+J0RDR1RGcy0ZY7d3uHVLA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.15.tgz", - "integrity": "sha512-mVD4PGc26b8PI60QaPUltYKeSX0wxuy0AltC+WCTFwvKCq2+OgLP4+fFd+hZXzO2xW1HPKcytZBdjqL6FQFa7w==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.15.tgz", - "integrity": "sha512-U6tYPovOkw3459t2CBwGcFYfFRjivcJJc1WC8Q3funIwX8x4fP+R6xL/QuTPNGOblbq/EUDxj9GU+dWKX0oWlQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.15.tgz", - "integrity": "sha512-W+Z5F++wgKAleDABemiyXVnzXgvRFs+GVKThSI+mGgleLWluv0D7Diz4oQpgdpNzh4i2nNDzQtWbjJiqutRp6Q==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.15.tgz", - "integrity": "sha512-Muz/+uGgheShKGqSVS1KsHtCyEzcdOn/W/Xbh6H91Etm+wiIfwZaBn1W58MeGtfI8WA961YMHFYTthBdQs4t+w==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.15.tgz", - "integrity": "sha512-DjDa9ywLUUmjhV2Y9wUTIF+1XsmuFGvZoCmOWkli1XcNAh5t25cc7fgsCx4Zi/Uurep3TTLyDiKATgGEg61pkA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", - "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", - "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.5.1", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@eslint/js": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.37.0.tgz", - "integrity": "sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz", - "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/core": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz", - "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==", - "dev": true, - "dependencies": { - "@jest/console": "^29.5.0", - "@jest/reporters": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.5.0", - "jest-config": "^29.5.0", - "jest-haste-map": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-resolve-dependencies": "^29.5.0", - "jest-runner": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "jest-watcher": "^29.5.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/environment": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz", - "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "jest-mock": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz", - "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==", - "dev": true, - "dependencies": { - "expect": "^29.5.0", - "jest-snapshot": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz", - "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.4.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz", - "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.5.0", - "jest-mock": "^29.5.0", - "jest-util": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz", - "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.5.0", - "@jest/expect": "^29.5.0", - "@jest/types": "^29.5.0", - "jest-mock": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz", - "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@jridgewell/trace-mapping": "^0.3.15", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "jest-worker": "^29.5.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/schemas": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", - "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", - "dependencies": { - "@sinclair/typebox": "^0.25.16" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz", - "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.15", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz", - "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==", - "dev": true, - "dependencies": { - "@jest/console": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz", - "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.5.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz", - "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.5.0", - "@jridgewell/trace-mapping": "^0.3.15", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform/node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@noble/hashes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.0.0.tgz", - "integrity": "sha512-DZVbtY62kc3kkBtMHqwCOfXrT/hnoORy5BJ4+HU1IR59X0KWAOqsfzQPcUl/lQLlG7qXbe/fZ3r/emxtAl+sqg==" - }, - "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/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@scure/base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", - "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, - "node_modules/@scure/bip32": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", - "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "@noble/hashes": "~1.2.0", - "@noble/secp256k1": "~1.7.0", - "@scure/base": "~1.1.0" - } - }, - "node_modules/@scure/bip32/node_modules/@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, - "node_modules/@scure/bip39": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", - "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "@noble/hashes": "~1.2.0", - "@scure/base": "~1.1.0" - } - }, - "node_modules/@scure/bip39/node_modules/@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, - "node_modules/@sinclair/typebox": { - "version": "0.25.24", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", - "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==" - }, - "node_modules/@sinonjs/commons": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", - "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz", - "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^2.0.0" - } - }, - "node_modules/@tsd/typescript": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@tsd/typescript/-/typescript-5.0.3.tgz", - "integrity": "sha512-dGYlmePDOyea9ZsHdwZx67e1Al8TkDqLgTNnxkmUXpRMawDo+HyXeJFw3Ee8j6ODqLiuYjH82BKJuzmEDhN62w==" - }, - "node_modules/@types/babel__core": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", - "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz", - "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.3.0" - } - }, - "node_modules/@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", - "dev": true, - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/eslint": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", - "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", - "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.0.tgz", - "integrity": "sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==", - "dev": true, - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" - }, - "node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" - }, - "node_modules/@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", - "dev": true - }, - "node_modules/@types/node": { - "version": "14.18.36", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", - "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==", - "dev": true - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" - }, - "node_modules/@types/prettier": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", - "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", - "dev": true - }, - "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==" - }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.0.tgz", - "integrity": "sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==", - "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.57.0", - "@typescript-eslint/type-utils": "5.57.0", - "@typescript-eslint/utils": "5.57.0", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", - "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", - "dev": true, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.57.0.tgz", - "integrity": "sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==", - "dependencies": { - "@typescript-eslint/scope-manager": "5.57.0", - "@typescript-eslint/types": "5.57.0", - "@typescript-eslint/typescript-estree": "5.57.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.57.0.tgz", - "integrity": "sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==", - "dependencies": { - "@typescript-eslint/types": "5.57.0", - "@typescript-eslint/visitor-keys": "5.57.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.57.0.tgz", - "integrity": "sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==", - "dependencies": { - "@typescript-eslint/typescript-estree": "5.57.0", - "@typescript-eslint/utils": "5.57.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.57.0.tgz", - "integrity": "sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.0.tgz", - "integrity": "sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==", - "dependencies": { - "@typescript-eslint/types": "5.57.0", - "@typescript-eslint/visitor-keys": "5.57.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.57.0.tgz", - "integrity": "sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.57.0", - "@typescript-eslint/types": "5.57.0", - "@typescript-eslint/typescript-estree": "5.57.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.0.tgz", - "integrity": "sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==", - "dependencies": { - "@typescript-eslint/types": "5.57.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-sequence-parser": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", - "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==" - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/babel-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", - "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==", - "dev": true, - "dependencies": { - "@jest/transform": "^29.5.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.5.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", - "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", - "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^29.5.0", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/bufferutil": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", - "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "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/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001472", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001472.tgz", - "integrity": "sha512-xWC/0+hHHQgj3/vrKYY0AAzeIUgr7L9wlELIcAvZdDUHlhL/kNxMdnQLOSOQfP8R51ZzPhmHdyMkI0MMpmxCfg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.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==", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/create-esm-loader": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/create-esm-loader/-/create-esm-loader-0.2.3.tgz", - "integrity": "sha512-cllzD6IU/mzXBs5OdQVWL3+ne5Elpu3Wdm7h5OldMbGXk76yr9XzHlQXWJ4zfs0ZAibe26rkbs4KvMAJm7fIZA==", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=14.x" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "engines": { - "node": ">= 12" - } - }, - "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/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/diff-sequences": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", - "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.341", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.341.tgz", - "integrity": "sha512-R4A8VfUBQY9WmAhuqY5tjHRf5fH2AAf6vqitBOE0y6u2PgHgqHSrhZmu78dIX3fVZtjqlwJNX1i2zwC3VpHtQQ==", - "dev": true - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.21.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", - "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.0", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dependencies": { - "has": "^1.0.3" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "hasInstallScript": true, - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "node_modules/esbuild": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.15.tgz", - "integrity": "sha512-LBUV2VsUIc/iD9ME75qhT4aJj0r75abCVS0jakhFzOtR7TQsqQA5w0tZ+KTKnwl3kXE0MhskNdHDh/I5aCR1Zw==", - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.17.15", - "@esbuild/android-arm64": "0.17.15", - "@esbuild/android-x64": "0.17.15", - "@esbuild/darwin-arm64": "0.17.15", - "@esbuild/darwin-x64": "0.17.15", - "@esbuild/freebsd-arm64": "0.17.15", - "@esbuild/freebsd-x64": "0.17.15", - "@esbuild/linux-arm": "0.17.15", - "@esbuild/linux-arm64": "0.17.15", - "@esbuild/linux-ia32": "0.17.15", - "@esbuild/linux-loong64": "0.17.15", - "@esbuild/linux-mips64el": "0.17.15", - "@esbuild/linux-ppc64": "0.17.15", - "@esbuild/linux-riscv64": "0.17.15", - "@esbuild/linux-s390x": "0.17.15", - "@esbuild/linux-x64": "0.17.15", - "@esbuild/netbsd-x64": "0.17.15", - "@esbuild/openbsd-x64": "0.17.15", - "@esbuild/sunos-x64": "0.17.15", - "@esbuild/win32-arm64": "0.17.15", - "@esbuild/win32-ia32": "0.17.15", - "@esbuild/win32-x64": "0.17.15" - } - }, - "node_modules/esbuild-plugin-alias": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/esbuild-plugin-alias/-/esbuild-plugin-alias-0.2.1.tgz", - "integrity": "sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==" - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.37.0.tgz", - "integrity": "sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.2", - "@eslint/js": "8.37.0", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.4.0", - "espree": "^9.5.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-prettier": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", - "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-formatter-pretty": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-formatter-pretty/-/eslint-formatter-pretty-4.1.0.tgz", - "integrity": "sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==", - "dependencies": { - "@types/eslint": "^7.2.13", - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "eslint-rule-docs": "^1.1.5", - "log-symbols": "^4.0.0", - "plur": "^4.0.0", - "string-width": "^4.2.0", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", - "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.11.0", - "resolve": "^1.22.1" - } - }, - "node_modules/eslint-import-resolver-node/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/eslint-module-utils": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", - "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/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/eslint-plugin-es": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", - "dev": true, - "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.27.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", - "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", - "eslint-module-utils": "^2.7.4", - "has": "^1.0.3", - "is-core-module": "^2.11.0", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.values": "^1.1.6", - "resolve": "^1.22.1", - "semver": "^6.3.0", - "tsconfig-paths": "^3.14.1" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/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/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-node": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", - "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", - "dev": true, - "dependencies": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "peerDependencies": { - "eslint": ">=5.16.0" - } - }, - "node_modules/eslint-plugin-node/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-plugin-node/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-node/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", - "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", - "dev": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "peerDependencies": { - "eslint": ">=5.0.0", - "prettier": ">=1.13.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-rule-docs": { - "version": "1.1.235", - "resolved": "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.235.tgz", - "integrity": "sha512-+TQ+x4JdTnDoFEXXb3fDvfGOwnyNV7duH8fXWTPD1ieaBmB8omj7Gw/pMBBu4uI2uJCCU8APDaQJzWuXnTsH4A==" - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", - "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/esm-loader-typescript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/esm-loader-typescript/-/esm-loader-typescript-1.0.4.tgz", - "integrity": "sha512-ejo2f+NKIt23jaJKVpjcRQC0xTa6cTqt6VA+z8Ef/A/TCjQ5u7opPO1J4fJFeTiiHEo8JqU92EG4I1KwuXYZMg==", - "dependencies": { - "create-esm-loader": "^0.2.3", - "npm-run-all": "^4.1.5", - "semver": "^7.3.8", - "typescript": "^5.0.2" - } - }, - "node_modules/esm-loader-typescript/node_modules/typescript": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.3.tgz", - "integrity": "sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=12.20" - } - }, - "node_modules/espree": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", - "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", - "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eventemitter3": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.0.tgz", - "integrity": "sha512-riuVbElZZNXLeLEoprfNYoDSwTBRR44X3mnhdI1YcnENpWTCsTTVZ2zFuqQcpoyqPQIUXdiPEU0ECAq0KQRaHg==" - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz", - "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==", - "dev": true, - "dependencies": { - "@jest/expect-utils": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "dependencies": { - "type": "^2.7.2" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "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/fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "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/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "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/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" - }, - "node_modules/gts": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/gts/-/gts-3.1.1.tgz", - "integrity": "sha512-Jw44aBbzMnd1vtZs7tZt3LMstKQukCBg7N4CKVGzviIQ45Cz5b9lxDJGXVKj/9ySuGv6TYEeijZJGbiiVcM27w==", - "dev": true, - "dependencies": { - "@typescript-eslint/eslint-plugin": "^4.2.0", - "@typescript-eslint/parser": "^4.2.0", - "chalk": "^4.1.0", - "eslint": "^7.10.0", - "eslint-config-prettier": "^7.0.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^3.1.4", - "execa": "^5.0.0", - "inquirer": "^7.3.3", - "json5": "^2.1.3", - "meow": "^9.0.0", - "ncp": "^2.0.0", - "prettier": "^2.1.2", - "rimraf": "^3.0.2", - "write-file-atomic": "^3.0.3" - }, - "bin": { - "gts": "build/src/cli.js" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "typescript": ">=3" - } - }, - "node_modules/gts/node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/gts/node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/gts/node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/gts/node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", - "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", - "dev": true, - "dependencies": { - "@typescript-eslint/experimental-utils": "4.33.0", - "@typescript-eslint/scope-manager": "4.33.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^4.0.0", - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/gts/node_modules/@typescript-eslint/parser": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", - "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "debug": "^4.3.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/gts/node_modules/@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/gts/node_modules/@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", - "dev": true, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/gts/node_modules/@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/gts/node_modules/@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/gts/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/gts/node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/gts/node_modules/eslint-config-prettier": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz", - "integrity": "sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/gts/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/gts/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/gts/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/gts/node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/gts/node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/gts/node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/gts/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "engines": { - "node": ">=6" - } - }, - "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-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "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==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "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/inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/irregular-plurals": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", - "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", - "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", - "dev": true, - "dependencies": { - "@jest/core": "^29.5.0", - "@jest/types": "^29.5.0", - "import-local": "^3.0.2", - "jest-cli": "^29.5.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", - "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", - "dev": true, - "dependencies": { - "execa": "^5.0.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-changed-files/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-circus": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz", - "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.5.0", - "@jest/expect": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.5.0", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.5.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-cli": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz", - "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==", - "dev": true, - "dependencies": { - "@jest/core": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "prompts": "^2.0.1", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true + "name": "@nostr-dev-kit/ndk", + "version": "0.3.141", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "@nostr-dev-kit/ndk", + "version": "0.3.141", + "license": "MIT", + "dependencies": { + "@scure/base": "^1.1.1", + "@typescript-eslint/eslint-plugin": "^5.57.0", + "@typescript-eslint/parser": "^5.57.0", + "debug": "^4.3.4", + "esbuild": "^0.17.15", + "esbuild-plugin-alias": "^0.2.1", + "eslint": "^8.37.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-import": "^2.27.5", + "esm-loader-typescript": "^1.0.4", + "eventemitter3": "^5.0.0", + "light-bolt11-decoder": "^3.0.0", + "node-fetch": "^3.3.1", + "nostr-tools": "^1.8.1", + "tsd": "^0.28.1", + "typedoc": "^0.24.6", + "utf8-buffer": "^1.0.0", + "websocket-polyfill": "^0.0.3" + }, + "devDependencies": { + "@types/debug": "^4.1.7", + "@types/jest": "^29.5.0", + "@types/node": "^14.11.2", + "gts": "^3.1.1", + "jest": "^29.5.0", + "prettier-plugin-organize-imports": "^3.2.2", + "ts-jest": "^29.1.0", + "typedoc-plugin-markdown": "^3.14.0", + "typescript": "~4.7.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", + "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.3.tgz", + "integrity": "sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.21.3", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.21.2", + "@babel/helpers": "^7.21.0", + "@babel/parser": "^7.21.3", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.3", + "@babel/types": "^7.21.3", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz", + "integrity": "sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.21.3", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", + "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.2", + "@babel/types": "^7.21.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", + "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz", + "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", + "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template/node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz", + "integrity": "sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.21.3", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.21.3", + "@babel/types": "^7.21.3", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", + "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@esbuild/android-arm": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.15.tgz", + "integrity": "sha512-sRSOVlLawAktpMvDyJIkdLI/c/kdRTOqo8t6ImVxg8yT7LQDUYV5Rp2FKeEosLr6ZCja9UjYAzyRSxGteSJPYg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.15.tgz", + "integrity": "sha512-0kOB6Y7Br3KDVgHeg8PRcvfLkq+AccreK///B4Z6fNZGr/tNHX0z2VywCc7PTeWp+bPvjA5WMvNXltHw5QjAIA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.15.tgz", + "integrity": "sha512-MzDqnNajQZ63YkaUWVl9uuhcWyEyh69HGpMIrf+acR4otMkfLJ4sUCxqwbCyPGicE9dVlrysI3lMcDBjGiBBcQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.15.tgz", + "integrity": "sha512-7siLjBc88Z4+6qkMDxPT2juf2e8SJxmsbNVKFY2ifWCDT72v5YJz9arlvBw5oB4W/e61H1+HDB/jnu8nNg0rLA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.15.tgz", + "integrity": "sha512-NbImBas2rXwYI52BOKTW342Tm3LTeVlaOQ4QPZ7XuWNKiO226DisFk/RyPk3T0CKZkKMuU69yOvlapJEmax7cg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.15.tgz", + "integrity": "sha512-Xk9xMDjBVG6CfgoqlVczHAdJnCs0/oeFOspFap5NkYAmRCT2qTn1vJWA2f419iMtsHSLm+O8B6SLV/HlY5cYKg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.15.tgz", + "integrity": "sha512-3TWAnnEOdclvb2pnfsTWtdwthPfOz7qAfcwDLcfZyGJwm1SRZIMOeB5FODVhnM93mFSPsHB9b/PmxNNbSnd0RQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.15.tgz", + "integrity": "sha512-MLTgiXWEMAMr8nmS9Gigx43zPRmEfeBfGCwxFQEMgJ5MC53QKajaclW6XDPjwJvhbebv+RzK05TQjvH3/aM4Xw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.15.tgz", + "integrity": "sha512-T0MVnYw9KT6b83/SqyznTs/3Jg2ODWrZfNccg11XjDehIved2oQfrX/wVuev9N936BpMRaTR9I1J0tdGgUgpJA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.15.tgz", + "integrity": "sha512-wp02sHs015T23zsQtU4Cj57WiteiuASHlD7rXjKUyAGYzlOKDAjqK6bk5dMi2QEl/KVOcsjwL36kD+WW7vJt8Q==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.15.tgz", + "integrity": "sha512-k7FsUJjGGSxwnBmMh8d7IbObWu+sF/qbwc+xKZkBe/lTAF16RqxRCnNHA7QTd3oS2AfGBAnHlXL67shV5bBThQ==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.15.tgz", + "integrity": "sha512-ZLWk6czDdog+Q9kE/Jfbilu24vEe/iW/Sj2d8EVsmiixQ1rM2RKH2n36qfxK4e8tVcaXkvuV3mU5zTZviE+NVQ==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.15.tgz", + "integrity": "sha512-mY6dPkIRAiFHRsGfOYZC8Q9rmr8vOBZBme0/j15zFUKM99d4ILY4WpOC7i/LqoY+RE7KaMaSfvY8CqjJtuO4xg==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.15.tgz", + "integrity": "sha512-EcyUtxffdDtWjjwIH8sKzpDRLcVtqANooMNASO59y+xmqqRYBBM7xVLQhqF7nksIbm2yHABptoioS9RAbVMWVA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.15.tgz", + "integrity": "sha512-BuS6Jx/ezxFuHxgsfvz7T4g4YlVrmCmg7UAwboeyNNg0OzNzKsIZXpr3Sb/ZREDXWgt48RO4UQRDBxJN3B9Rbg==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.15.tgz", + "integrity": "sha512-JsdS0EgEViwuKsw5tiJQo9UdQdUJYuB+Mf6HxtJSPN35vez1hlrNb1KajvKWF5Sa35j17+rW1ECEO9iNrIXbNg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.15.tgz", + "integrity": "sha512-R6fKjtUysYGym6uXf6qyNephVUQAGtf3n2RCsOST/neIwPqRWcnc3ogcielOd6pT+J0RDR1RGcy0ZY7d3uHVLA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.15.tgz", + "integrity": "sha512-mVD4PGc26b8PI60QaPUltYKeSX0wxuy0AltC+WCTFwvKCq2+OgLP4+fFd+hZXzO2xW1HPKcytZBdjqL6FQFa7w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.15.tgz", + "integrity": "sha512-U6tYPovOkw3459t2CBwGcFYfFRjivcJJc1WC8Q3funIwX8x4fP+R6xL/QuTPNGOblbq/EUDxj9GU+dWKX0oWlQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.15.tgz", + "integrity": "sha512-W+Z5F++wgKAleDABemiyXVnzXgvRFs+GVKThSI+mGgleLWluv0D7Diz4oQpgdpNzh4i2nNDzQtWbjJiqutRp6Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.15.tgz", + "integrity": "sha512-Muz/+uGgheShKGqSVS1KsHtCyEzcdOn/W/Xbh6H91Etm+wiIfwZaBn1W58MeGtfI8WA961YMHFYTthBdQs4t+w==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.15.tgz", + "integrity": "sha512-DjDa9ywLUUmjhV2Y9wUTIF+1XsmuFGvZoCmOWkli1XcNAh5t25cc7fgsCx4Zi/Uurep3TTLyDiKATgGEg61pkA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", + "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", + "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.5.1", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/js": { + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.37.0.tgz", + "integrity": "sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz", + "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz", + "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.5.0", + "@jest/reporters": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.5.0", + "jest-config": "^29.5.0", + "jest-haste-map": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-resolve-dependencies": "^29.5.0", + "jest-runner": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "jest-watcher": "^29.5.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.5.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/environment": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz", + "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-mock": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz", + "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==", + "dev": true, + "dependencies": { + "expect": "^29.5.0", + "jest-snapshot": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz", + "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.4.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz", + "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.5.0", + "jest-mock": "^29.5.0", + "jest-util": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz", + "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.5.0", + "@jest/expect": "^29.5.0", + "@jest/types": "^29.5.0", + "jest-mock": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz", + "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@jridgewell/trace-mapping": "^0.3.15", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/schemas": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", + "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", + "dependencies": { + "@sinclair/typebox": "^0.25.16" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz", + "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.15", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz", + "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz", + "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.5.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz", + "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.5.0", + "@jridgewell/trace-mapping": "^0.3.15", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform/node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.4.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@noble/hashes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.0.0.tgz", + "integrity": "sha512-DZVbtY62kc3kkBtMHqwCOfXrT/hnoORy5BJ4+HU1IR59X0KWAOqsfzQPcUl/lQLlG7qXbe/fZ3r/emxtAl+sqg==" + }, + "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/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@scure/base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", + "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@scure/bip32": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/@scure/bip32/node_modules/@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@scure/bip39": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/@scure/bip39/node_modules/@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@sinclair/typebox": { + "version": "0.25.24", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", + "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==" + }, + "node_modules/@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz", + "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^2.0.0" + } + }, + "node_modules/@tsd/typescript": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@tsd/typescript/-/typescript-5.0.3.tgz", + "integrity": "sha512-dGYlmePDOyea9ZsHdwZx67e1Al8TkDqLgTNnxkmUXpRMawDo+HyXeJFw3Ee8j6ODqLiuYjH82BKJuzmEDhN62w==" + }, + "node_modules/@types/babel__core": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", + "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz", + "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.3.0" + } + }, + "node_modules/@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dev": true, + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/eslint": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", + "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.0.tgz", + "integrity": "sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" + }, + "node_modules/@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" + }, + "node_modules/@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "14.18.36", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", + "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==", + "dev": true + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" + }, + "node_modules/@types/prettier": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", + "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==" + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.0.tgz", + "integrity": "sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==", + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.57.0", + "@typescript-eslint/type-utils": "5.57.0", + "@typescript-eslint/utils": "5.57.0", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", + "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/scope-manager": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/types": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", + "dev": true, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.57.0.tgz", + "integrity": "sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==", + "dependencies": { + "@typescript-eslint/scope-manager": "5.57.0", + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/typescript-estree": "5.57.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.57.0.tgz", + "integrity": "sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==", + "dependencies": { + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/visitor-keys": "5.57.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.57.0.tgz", + "integrity": "sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==", + "dependencies": { + "@typescript-eslint/typescript-estree": "5.57.0", + "@typescript-eslint/utils": "5.57.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.57.0.tgz", + "integrity": "sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.0.tgz", + "integrity": "sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==", + "dependencies": { + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/visitor-keys": "5.57.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.57.0.tgz", + "integrity": "sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.57.0", + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/typescript-estree": "5.57.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.0.tgz", + "integrity": "sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==", + "dependencies": { + "@typescript-eslint/types": "5.57.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-sequence-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", + "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==" + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-jest": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", + "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.5.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.5.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", + "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", + "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.5.0", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bufferutil": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", + "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "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/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001472", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001472.tgz", + "integrity": "sha512-xWC/0+hHHQgj3/vrKYY0AAzeIUgr7L9wlELIcAvZdDUHlhL/kNxMdnQLOSOQfP8R51ZzPhmHdyMkI0MMpmxCfg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.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==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/create-esm-loader": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/create-esm-loader/-/create-esm-loader-0.2.3.tgz", + "integrity": "sha512-cllzD6IU/mzXBs5OdQVWL3+ne5Elpu3Wdm7h5OldMbGXk76yr9XzHlQXWJ4zfs0ZAibe26rkbs4KvMAJm7fIZA==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=14.x" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "engines": { + "node": ">= 12" + } + }, + "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/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/diff-sequences": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", + "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.341", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.341.tgz", + "integrity": "sha512-R4A8VfUBQY9WmAhuqY5tjHRf5fH2AAf6vqitBOE0y6u2PgHgqHSrhZmu78dIX3fVZtjqlwJNX1i2zwC3VpHtQQ==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.21.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", + "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.0", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/esbuild": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.15.tgz", + "integrity": "sha512-LBUV2VsUIc/iD9ME75qhT4aJj0r75abCVS0jakhFzOtR7TQsqQA5w0tZ+KTKnwl3kXE0MhskNdHDh/I5aCR1Zw==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.15", + "@esbuild/android-arm64": "0.17.15", + "@esbuild/android-x64": "0.17.15", + "@esbuild/darwin-arm64": "0.17.15", + "@esbuild/darwin-x64": "0.17.15", + "@esbuild/freebsd-arm64": "0.17.15", + "@esbuild/freebsd-x64": "0.17.15", + "@esbuild/linux-arm": "0.17.15", + "@esbuild/linux-arm64": "0.17.15", + "@esbuild/linux-ia32": "0.17.15", + "@esbuild/linux-loong64": "0.17.15", + "@esbuild/linux-mips64el": "0.17.15", + "@esbuild/linux-ppc64": "0.17.15", + "@esbuild/linux-riscv64": "0.17.15", + "@esbuild/linux-s390x": "0.17.15", + "@esbuild/linux-x64": "0.17.15", + "@esbuild/netbsd-x64": "0.17.15", + "@esbuild/openbsd-x64": "0.17.15", + "@esbuild/sunos-x64": "0.17.15", + "@esbuild/win32-arm64": "0.17.15", + "@esbuild/win32-ia32": "0.17.15", + "@esbuild/win32-x64": "0.17.15" + } + }, + "node_modules/esbuild-plugin-alias": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/esbuild-plugin-alias/-/esbuild-plugin-alias-0.2.1.tgz", + "integrity": "sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==" + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.37.0.tgz", + "integrity": "sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.2", + "@eslint/js": "8.37.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.4.0", + "espree": "^9.5.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", + "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-formatter-pretty": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-formatter-pretty/-/eslint-formatter-pretty-4.1.0.tgz", + "integrity": "sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==", + "dependencies": { + "@types/eslint": "^7.2.13", + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "eslint-rule-docs": "^1.1.5", + "log-symbols": "^4.0.0", + "plur": "^4.0.0", + "string-width": "^4.2.0", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", + "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" + } + }, + "node_modules/eslint-import-resolver-node/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/eslint-module-utils": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/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/eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "dev": true, + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.27.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", + "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.7.4", + "has": "^1.0.3", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.6", + "resolve": "^1.22.1", + "semver": "^6.3.0", + "tsconfig-paths": "^3.14.1" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/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/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "dev": true, + "dependencies": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" + } + }, + "node_modules/eslint-plugin-node/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-node/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-node/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", + "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "eslint": ">=5.0.0", + "prettier": ">=1.13.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-rule-docs": { + "version": "1.1.235", + "resolved": "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.235.tgz", + "integrity": "sha512-+TQ+x4JdTnDoFEXXb3fDvfGOwnyNV7duH8fXWTPD1ieaBmB8omj7Gw/pMBBu4uI2uJCCU8APDaQJzWuXnTsH4A==" + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/esm-loader-typescript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esm-loader-typescript/-/esm-loader-typescript-1.0.4.tgz", + "integrity": "sha512-ejo2f+NKIt23jaJKVpjcRQC0xTa6cTqt6VA+z8Ef/A/TCjQ5u7opPO1J4fJFeTiiHEo8JqU92EG4I1KwuXYZMg==", + "dependencies": { + "create-esm-loader": "^0.2.3", + "npm-run-all": "^4.1.5", + "semver": "^7.3.8", + "typescript": "^5.0.2" + } + }, + "node_modules/esm-loader-typescript/node_modules/typescript": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.3.tgz", + "integrity": "sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/espree": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", + "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", + "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.0.tgz", + "integrity": "sha512-riuVbElZZNXLeLEoprfNYoDSwTBRR44X3mnhdI1YcnENpWTCsTTVZ2zFuqQcpoyqPQIUXdiPEU0ECAq0KQRaHg==" + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz", + "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "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/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "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/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "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/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" + }, + "node_modules/gts": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/gts/-/gts-3.1.1.tgz", + "integrity": "sha512-Jw44aBbzMnd1vtZs7tZt3LMstKQukCBg7N4CKVGzviIQ45Cz5b9lxDJGXVKj/9ySuGv6TYEeijZJGbiiVcM27w==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "^4.2.0", + "@typescript-eslint/parser": "^4.2.0", + "chalk": "^4.1.0", + "eslint": "^7.10.0", + "eslint-config-prettier": "^7.0.0", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prettier": "^3.1.4", + "execa": "^5.0.0", + "inquirer": "^7.3.3", + "json5": "^2.1.3", + "meow": "^9.0.0", + "ncp": "^2.0.0", + "prettier": "^2.1.2", + "rimraf": "^3.0.2", + "write-file-atomic": "^3.0.3" + }, + "bin": { + "gts": "build/src/cli.js" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "typescript": ">=3" + } + }, + "node_modules/gts/node_modules/@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/gts/node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/gts/node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/gts/node_modules/@typescript-eslint/eslint-plugin": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", + "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", + "dev": true, + "dependencies": { + "@typescript-eslint/experimental-utils": "4.33.0", + "@typescript-eslint/scope-manager": "4.33.0", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^4.0.0", + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/gts/node_modules/@typescript-eslint/parser": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", + "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "debug": "^4.3.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/gts/node_modules/@typescript-eslint/scope-manager": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/gts/node_modules/@typescript-eslint/types": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", + "dev": true, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/gts/node_modules/@typescript-eslint/typescript-estree": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/gts/node_modules/@typescript-eslint/visitor-keys": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/gts/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/gts/node_modules/eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/gts/node_modules/eslint-config-prettier": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz", + "integrity": "sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/gts/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/gts/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/gts/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/gts/node_modules/eslint/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/gts/node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/gts/node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/gts/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "engines": { + "node": ">=6" + } + }, + "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-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "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/inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/irregular-plurals": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", + "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", + "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", + "dev": true, + "dependencies": { + "@jest/core": "^29.5.0", + "@jest/types": "^29.5.0", + "import-local": "^3.0.2", + "jest-cli": "^29.5.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", + "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-changed-files/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-circus": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz", + "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.5.0", + "@jest/expect": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.5.0", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.5.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-cli": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz", + "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==", + "dev": true, + "dependencies": { + "@jest/core": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "prompts": "^2.0.1", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz", + "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.5.0", + "@jest/types": "^29.5.0", + "babel-jest": "^29.5.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.5.0", + "jest-environment-node": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-runner": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.5.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", + "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.4.3", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", + "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz", + "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.4.3", + "jest-util": "^29.5.0", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz", + "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.5.0", + "@jest/fake-timers": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-mock": "^29.5.0", + "jest-util": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", + "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz", + "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz", + "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz", + "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.5.0", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", + "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.5.0", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.5.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/jest-mock": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz", + "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-util": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", + "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz", + "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz", + "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==", + "dev": true, + "dependencies": { + "jest-regex-util": "^29.4.3", + "jest-snapshot": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz", + "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.5.0", + "@jest/environment": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.4.3", + "jest-environment-node": "^29.5.0", + "jest-haste-map": "^29.5.0", + "jest-leak-detector": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-resolve": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-util": "^29.5.0", + "jest-watcher": "^29.5.0", + "jest-worker": "^29.5.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-runtime": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz", + "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.5.0", + "@jest/fake-timers": "^29.5.0", + "@jest/globals": "^29.5.0", + "@jest/source-map": "^29.4.3", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-mock": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz", + "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/babel__traverse": "^7.0.6", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.5.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.5.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz", + "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.4.3", + "leven": "^3.1.0", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz", + "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.5.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", + "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.5.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-sdsl": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", + "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/light-bolt11-decoder": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/light-bolt11-decoder/-/light-bolt11-decoder-3.0.0.tgz", + "integrity": "sha512-AKvOigD2pmC8ktnn2TIqdJu0K0qk6ukUmTvHwF3JNkm8uWCqt18Ijn33A/a7gaRZ4PghJ59X+8+MXrzLKdBTmQ==", + "dependencies": { + "@scure/base": "1.1.1" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "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/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "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/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==" + }, + "node_modules/ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", + "dev": true, + "bin": { + "ncp": "bin/ncp" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", + "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "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/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "dev": true + }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nostr-tools": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.8.1.tgz", + "integrity": "sha512-/2IUe5xINUYT5hYBoEz51dfRaodbRHnyF8n+ZbKWCoh0ZRX6AL88OoDNrWaWWo7tP5j5OyzSL9g/z4TP7bshEA==", + "dependencies": { + "@noble/hashes": "1.0.0", + "@noble/secp256k1": "^1.7.1", + "@scure/base": "^1.1.1", + "@scure/bip32": "^1.1.5", + "@scure/bip39": "^1.1.1", + "prettier": "^2.8.4" + } + }, + "node_modules/npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm-run-all/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/npm-run-all/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/npm-run-all/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/npm-run-all/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/npm-run-all/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "node_modules/npm-run-all/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/npm-run-all/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-all/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=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/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/plur": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/plur/-/plur-4.0.0.tgz", + "integrity": "sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==", + "dependencies": { + "irregular-plurals": "^3.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", + "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/prettier-plugin-organize-imports": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-3.2.2.tgz", + "integrity": "sha512-e97lE6odGSiHonHJMTYC0q0iLXQyw0u5z/PJpvP/3vRy6/Zi9kLBwFAbEGjDzIowpjQv8b+J04PDamoUSQbzGA==", + "dev": true, + "peerDependencies": { + "@volar/vue-language-plugin-pug": "^1.0.4", + "@volar/vue-typescript": "^1.0.4", + "prettier": ">=2.0", + "typescript": ">=2.9" + }, + "peerDependenciesMeta": { + "@volar/vue-language-plugin-pug": { + "optional": true + }, + "@volar/vue-typescript": { + "optional": true + } + } + }, + "node_modules/pretty-format": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "dependencies": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "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/pure-rand": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.1.tgz", + "integrity": "sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, + "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/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "engines": { + "node": ">=8" + } + }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "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/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", + "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/shiki": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.2.tgz", + "integrity": "sha512-ltSZlSLOuSY0M0Y75KA+ieRaZ0Trf5Wl3gutE7jzLuIcWxLp5i/uEnLoQWNvgKXQ5OMpGkJnVMRLAuzjc0LJ2A==", + "dependencies": { + "ansi-sequence-parser": "^1.1.0", + "jsonc-parser": "^3.2.0", + "vscode-oniguruma": "^1.7.0", + "vscode-textmate": "^8.0.0" + } + }, + "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/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.padend": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz", + "integrity": "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/table": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-jest": { + "version": "29.1.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz", + "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/tsd": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/tsd/-/tsd-0.28.1.tgz", + "integrity": "sha512-FeYrfJ05QgEMW/qOukNCr4fAJHww4SaKnivAXRv4g5kj4FeLpNV7zH4dorzB9zAfVX4wmA7zWu/wQf7kkcvfbw==", + "dependencies": { + "@tsd/typescript": "~5.0.2", + "eslint-formatter-pretty": "^4.1.0", + "globby": "^11.0.1", + "jest-diff": "^29.0.3", + "meow": "^9.0.0", + "path-exists": "^4.0.0", + "read-pkg-up": "^7.0.0" + }, + "bin": { + "tsd": "dist/cli.js" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/tstl": { + "version": "2.5.13", + "resolved": "https://registry.npmjs.org/tstl/-/tstl-2.5.13.tgz", + "integrity": "sha512-h9wayHHFI5+yqt8iau0vqH96cTNhezhZ/Fk/hrIdpfkiMu3lg9nzyvMfs5bIdX51IVzZO6DudLqhkL/rVXpT6g==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typedoc": { + "version": "0.24.6", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.24.6.tgz", + "integrity": "sha512-c3y3h45xJv3qYwKDAwU6Cl+26CjT0ZvblHzfHJ+SjQDM4p1mZxtgHky4lhmG0+nNarRht8kADfZlbspJWdZarQ==", + "dependencies": { + "lunr": "^2.3.9", + "marked": "^4.3.0", + "minimatch": "^9.0.0", + "shiki": "^0.14.1" + }, + "bin": { + "typedoc": "bin/typedoc" + }, + "engines": { + "node": ">= 14.14" + }, + "peerDependencies": { + "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x" + } + }, + "node_modules/typedoc-plugin-markdown": { + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.15.3.tgz", + "integrity": "sha512-idntFYu3vfaY3eaD+w9DeRd0PmNGqGuNLKihPU9poxFGnATJYGn9dPtEhn2QrTdishFMg7jPXAhos+2T6YCWRQ==", + "dev": true, + "dependencies": { + "handlebars": "^4.7.7" + }, + "peerDependencies": { + "typedoc": ">=0.24.0" + } + }, + "node_modules/typedoc/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/typedoc/node_modules/minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typescript": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/utf8-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utf8-buffer/-/utf8-buffer-1.0.0.tgz", + "integrity": "sha512-ueuhzvWnp5JU5CiGSY4WdKbiN/PO2AZ/lpeLiz2l38qwdLy/cW40XobgyuIWucNyum0B33bVB0owjFCeGBSLqg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/v8-to-istanbul": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==" + }, + "node_modules/vscode-textmate": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==" + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/websocket": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", + "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", + "dependencies": { + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/websocket-polyfill": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/websocket-polyfill/-/websocket-polyfill-0.0.3.tgz", + "integrity": "sha512-pF3kR8Uaoau78MpUmFfzbIRxXj9PeQrCuPepGE6JIsfsJ/o/iXr07Q2iQNzKSSblQJ0FiGWlS64N4pVSm+O3Dg==", + "dependencies": { + "tstl": "^2.0.7", + "websocket": "^1.0.28" + } + }, + "node_modules/websocket/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/websocket/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "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/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", + "engines": { + "node": ">=0.10.32" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yargs": { + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", + "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } - } }, - "node_modules/jest-config": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz", - "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.5.0", - "@jest/types": "^29.5.0", - "babel-jest": "^29.5.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.5.0", - "jest-environment-node": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-runner": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/compat-data": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", + "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", + "dev": true + }, + "@babel/core": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.3.tgz", + "integrity": "sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.21.3", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.21.2", + "@babel/helpers": "^7.21.0", + "@babel/parser": "^7.21.3", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.3", + "@babel/types": "^7.21.3", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz", + "integrity": "sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==", + "dev": true, + "requires": { + "@babel/types": "^7.21.3", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true + }, + "@babel/helper-function-name": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "dev": true, + "requires": { + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", + "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.2", + "@babel/types": "^7.21.2" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true + }, + "@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "requires": { + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" + }, + "@babel/helper-validator-option": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "dev": true + }, + "@babel/helpers": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", + "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", + "dev": true, + "requires": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz", + "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==", + "dev": true + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", + "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + } + } + }, + "@babel/traverse": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz", + "integrity": "sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.21.3", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.21.3", + "@babel/types": "^7.21.3", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", + "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@esbuild/android-arm": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.15.tgz", + "integrity": "sha512-sRSOVlLawAktpMvDyJIkdLI/c/kdRTOqo8t6ImVxg8yT7LQDUYV5Rp2FKeEosLr6ZCja9UjYAzyRSxGteSJPYg==", + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.15.tgz", + "integrity": "sha512-0kOB6Y7Br3KDVgHeg8PRcvfLkq+AccreK///B4Z6fNZGr/tNHX0z2VywCc7PTeWp+bPvjA5WMvNXltHw5QjAIA==", + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.15.tgz", + "integrity": "sha512-MzDqnNajQZ63YkaUWVl9uuhcWyEyh69HGpMIrf+acR4otMkfLJ4sUCxqwbCyPGicE9dVlrysI3lMcDBjGiBBcQ==", + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.15.tgz", + "integrity": "sha512-7siLjBc88Z4+6qkMDxPT2juf2e8SJxmsbNVKFY2ifWCDT72v5YJz9arlvBw5oB4W/e61H1+HDB/jnu8nNg0rLA==", + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.15.tgz", + "integrity": "sha512-NbImBas2rXwYI52BOKTW342Tm3LTeVlaOQ4QPZ7XuWNKiO226DisFk/RyPk3T0CKZkKMuU69yOvlapJEmax7cg==", + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.15.tgz", + "integrity": "sha512-Xk9xMDjBVG6CfgoqlVczHAdJnCs0/oeFOspFap5NkYAmRCT2qTn1vJWA2f419iMtsHSLm+O8B6SLV/HlY5cYKg==", + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.15.tgz", + "integrity": "sha512-3TWAnnEOdclvb2pnfsTWtdwthPfOz7qAfcwDLcfZyGJwm1SRZIMOeB5FODVhnM93mFSPsHB9b/PmxNNbSnd0RQ==", + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.15.tgz", + "integrity": "sha512-MLTgiXWEMAMr8nmS9Gigx43zPRmEfeBfGCwxFQEMgJ5MC53QKajaclW6XDPjwJvhbebv+RzK05TQjvH3/aM4Xw==", + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.15.tgz", + "integrity": "sha512-T0MVnYw9KT6b83/SqyznTs/3Jg2ODWrZfNccg11XjDehIved2oQfrX/wVuev9N936BpMRaTR9I1J0tdGgUgpJA==", + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.15.tgz", + "integrity": "sha512-wp02sHs015T23zsQtU4Cj57WiteiuASHlD7rXjKUyAGYzlOKDAjqK6bk5dMi2QEl/KVOcsjwL36kD+WW7vJt8Q==", + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.15.tgz", + "integrity": "sha512-k7FsUJjGGSxwnBmMh8d7IbObWu+sF/qbwc+xKZkBe/lTAF16RqxRCnNHA7QTd3oS2AfGBAnHlXL67shV5bBThQ==", + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.15.tgz", + "integrity": "sha512-ZLWk6czDdog+Q9kE/Jfbilu24vEe/iW/Sj2d8EVsmiixQ1rM2RKH2n36qfxK4e8tVcaXkvuV3mU5zTZviE+NVQ==", + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.15.tgz", + "integrity": "sha512-mY6dPkIRAiFHRsGfOYZC8Q9rmr8vOBZBme0/j15zFUKM99d4ILY4WpOC7i/LqoY+RE7KaMaSfvY8CqjJtuO4xg==", + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.15.tgz", + "integrity": "sha512-EcyUtxffdDtWjjwIH8sKzpDRLcVtqANooMNASO59y+xmqqRYBBM7xVLQhqF7nksIbm2yHABptoioS9RAbVMWVA==", + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.15.tgz", + "integrity": "sha512-BuS6Jx/ezxFuHxgsfvz7T4g4YlVrmCmg7UAwboeyNNg0OzNzKsIZXpr3Sb/ZREDXWgt48RO4UQRDBxJN3B9Rbg==", + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.15.tgz", + "integrity": "sha512-JsdS0EgEViwuKsw5tiJQo9UdQdUJYuB+Mf6HxtJSPN35vez1hlrNb1KajvKWF5Sa35j17+rW1ECEO9iNrIXbNg==", + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.15.tgz", + "integrity": "sha512-R6fKjtUysYGym6uXf6qyNephVUQAGtf3n2RCsOST/neIwPqRWcnc3ogcielOd6pT+J0RDR1RGcy0ZY7d3uHVLA==", + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.15.tgz", + "integrity": "sha512-mVD4PGc26b8PI60QaPUltYKeSX0wxuy0AltC+WCTFwvKCq2+OgLP4+fFd+hZXzO2xW1HPKcytZBdjqL6FQFa7w==", + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.15.tgz", + "integrity": "sha512-U6tYPovOkw3459t2CBwGcFYfFRjivcJJc1WC8Q3funIwX8x4fP+R6xL/QuTPNGOblbq/EUDxj9GU+dWKX0oWlQ==", + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.15.tgz", + "integrity": "sha512-W+Z5F++wgKAleDABemiyXVnzXgvRFs+GVKThSI+mGgleLWluv0D7Diz4oQpgdpNzh4i2nNDzQtWbjJiqutRp6Q==", + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.15.tgz", + "integrity": "sha512-Muz/+uGgheShKGqSVS1KsHtCyEzcdOn/W/Xbh6H91Etm+wiIfwZaBn1W58MeGtfI8WA961YMHFYTthBdQs4t+w==", + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.15.tgz", + "integrity": "sha512-DjDa9ywLUUmjhV2Y9wUTIF+1XsmuFGvZoCmOWkli1XcNAh5t25cc7fgsCx4Zi/Uurep3TTLyDiKATgGEg61pkA==", + "optional": true + }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", + "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==" + }, + "@eslint/eslintrc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", + "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.5.1", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + } + } + }, + "@eslint/js": { + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.37.0.tgz", + "integrity": "sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==" + }, + "@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/console": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz", + "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==", + "dev": true, + "requires": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "slash": "^3.0.0" + } + }, + "@jest/core": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz", + "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==", + "dev": true, + "requires": { + "@jest/console": "^29.5.0", + "@jest/reporters": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.5.0", + "jest-config": "^29.5.0", + "jest-haste-map": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-resolve-dependencies": "^29.5.0", + "jest-runner": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "jest-watcher": "^29.5.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.5.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "@jest/environment": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz", + "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==", + "dev": true, + "requires": { + "@jest/fake-timers": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-mock": "^29.5.0" + } + }, + "@jest/expect": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz", + "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==", + "dev": true, + "requires": { + "expect": "^29.5.0", + "jest-snapshot": "^29.5.0" + } + }, + "@jest/expect-utils": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz", + "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==", + "dev": true, + "requires": { + "jest-get-type": "^29.4.3" + } + }, + "@jest/fake-timers": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz", + "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==", + "dev": true, + "requires": { + "@jest/types": "^29.5.0", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.5.0", + "jest-mock": "^29.5.0", + "jest-util": "^29.5.0" + } + }, + "@jest/globals": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz", + "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==", + "dev": true, + "requires": { + "@jest/environment": "^29.5.0", + "@jest/expect": "^29.5.0", + "@jest/types": "^29.5.0", + "jest-mock": "^29.5.0" + } + }, + "@jest/reporters": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz", + "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@jridgewell/trace-mapping": "^0.3.15", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + } + }, + "@jest/schemas": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", + "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", + "requires": { + "@sinclair/typebox": "^0.25.16" + } + }, + "@jest/source-map": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz", + "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.15", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + } + }, + "@jest/test-result": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz", + "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==", + "dev": true, + "requires": { + "@jest/console": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz", + "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==", + "dev": true, + "requires": { + "@jest/test-result": "^29.5.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "slash": "^3.0.0" + } + }, + "@jest/transform": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz", + "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.5.0", + "@jridgewell/trace-mapping": "^0.3.15", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "dependencies": { + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } + } + } + }, + "@jest/types": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", + "dev": true, + "requires": { + "@jest/schemas": "^29.4.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "@noble/hashes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.0.0.tgz", + "integrity": "sha512-DZVbtY62kc3kkBtMHqwCOfXrT/hnoORy5BJ4+HU1IR59X0KWAOqsfzQPcUl/lQLlG7qXbe/fZ3r/emxtAl+sqg==" + }, + "@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==" + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@scure/base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", + "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==" + }, + "@scure/bip32": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "requires": { + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" + }, + "dependencies": { + "@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==" + } + } + }, + "@scure/bip39": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "requires": { + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" + }, + "dependencies": { + "@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==" + } + } + }, + "@sinclair/typebox": { + "version": "0.25.24", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", + "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==" + }, + "@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz", + "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==", + "dev": true, + "requires": { + "@sinonjs/commons": "^2.0.0" + } + }, + "@tsd/typescript": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@tsd/typescript/-/typescript-5.0.3.tgz", + "integrity": "sha512-dGYlmePDOyea9ZsHdwZx67e1Al8TkDqLgTNnxkmUXpRMawDo+HyXeJFw3Ee8j6ODqLiuYjH82BKJuzmEDhN62w==" + }, + "@types/babel__core": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", + "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", + "dev": true, + "requires": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz", + "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dev": true, + "requires": { + "@types/ms": "*" + } + }, + "@types/eslint": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", + "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" + }, + "@types/graceful-fs": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.0.tgz", + "integrity": "sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==", + "dev": true, + "requires": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" + }, + "@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" + }, + "@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "dev": true + }, "@types/node": { - "optional": true + "version": "14.18.36", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", + "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" + }, + "@types/prettier": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", + "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", + "dev": true + }, + "@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==" + }, + "@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.0.tgz", + "integrity": "sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==", + "requires": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.57.0", + "@typescript-eslint/type-utils": "5.57.0", + "@typescript-eslint/utils": "5.57.0", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", + "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" + } + }, + "@typescript-eslint/types": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.33.0", + "eslint-visitor-keys": "^2.0.0" + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "@typescript-eslint/parser": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.57.0.tgz", + "integrity": "sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==", + "requires": { + "@typescript-eslint/scope-manager": "5.57.0", + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/typescript-estree": "5.57.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.57.0.tgz", + "integrity": "sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==", + "requires": { + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/visitor-keys": "5.57.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.57.0.tgz", + "integrity": "sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==", + "requires": { + "@typescript-eslint/typescript-estree": "5.57.0", + "@typescript-eslint/utils": "5.57.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.57.0.tgz", + "integrity": "sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==" + }, + "@typescript-eslint/typescript-estree": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.0.tgz", + "integrity": "sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==", + "requires": { + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/visitor-keys": "5.57.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.57.0.tgz", + "integrity": "sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==", + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.57.0", + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/typescript-estree": "5.57.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.0.tgz", + "integrity": "sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==", + "requires": { + "@typescript-eslint/types": "5.57.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==" + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" + } + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-sequence-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", + "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "requires": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + } + }, + "array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + }, + "array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==" + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + }, + "babel-jest": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", + "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==", + "dev": true, + "requires": { + "@jest/transform": "^29.5.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.5.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", + "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", + "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^29.5.0", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "bufferutil": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", + "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", + "requires": { + "node-gyp-build": "^4.3.0" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + } + }, + "caniuse-lite": { + "version": "1.0.30001472", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001472.tgz", + "integrity": "sha512-xWC/0+hHHQgj3/vrKYY0AAzeIUgr7L9wlELIcAvZdDUHlhL/kNxMdnQLOSOQfP8R51ZzPhmHdyMkI0MMpmxCfg==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true + }, + "cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true + }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "create-esm-loader": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/create-esm-loader/-/create-esm-loader-0.2.3.tgz", + "integrity": "sha512-cllzD6IU/mzXBs5OdQVWL3+ne5Elpu3Wdm7h5OldMbGXk76yr9XzHlQXWJ4zfs0ZAibe26rkbs4KvMAJm7fIZA==", + "requires": { + "semver": "^7.3.5" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==" + }, + "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" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + }, + "decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==" + } + } + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true + }, + "define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, + "diff-sequences": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", + "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==" + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "requires": { + "esutils": "^2.0.2" + } + }, + "electron-to-chromium": { + "version": "1.4.341", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.341.tgz", + "integrity": "sha512-R4A8VfUBQY9WmAhuqY5tjHRf5fH2AAf6vqitBOE0y6u2PgHgqHSrhZmu78dIX3fVZtjqlwJNX1i2zwC3VpHtQQ==", + "dev": true + }, + "emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.21.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", + "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", + "requires": { + "array-buffer-byte-length": "^1.0.0", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.0", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + } + }, + "es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "requires": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + } + }, + "es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "requires": { + "has": "^1.0.3" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "requires": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "esbuild": { + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.15.tgz", + "integrity": "sha512-LBUV2VsUIc/iD9ME75qhT4aJj0r75abCVS0jakhFzOtR7TQsqQA5w0tZ+KTKnwl3kXE0MhskNdHDh/I5aCR1Zw==", + "requires": { + "@esbuild/android-arm": "0.17.15", + "@esbuild/android-arm64": "0.17.15", + "@esbuild/android-x64": "0.17.15", + "@esbuild/darwin-arm64": "0.17.15", + "@esbuild/darwin-x64": "0.17.15", + "@esbuild/freebsd-arm64": "0.17.15", + "@esbuild/freebsd-x64": "0.17.15", + "@esbuild/linux-arm": "0.17.15", + "@esbuild/linux-arm64": "0.17.15", + "@esbuild/linux-ia32": "0.17.15", + "@esbuild/linux-loong64": "0.17.15", + "@esbuild/linux-mips64el": "0.17.15", + "@esbuild/linux-ppc64": "0.17.15", + "@esbuild/linux-riscv64": "0.17.15", + "@esbuild/linux-s390x": "0.17.15", + "@esbuild/linux-x64": "0.17.15", + "@esbuild/netbsd-x64": "0.17.15", + "@esbuild/openbsd-x64": "0.17.15", + "@esbuild/sunos-x64": "0.17.15", + "@esbuild/win32-arm64": "0.17.15", + "@esbuild/win32-ia32": "0.17.15", + "@esbuild/win32-x64": "0.17.15" + } + }, + "esbuild-plugin-alias": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/esbuild-plugin-alias/-/esbuild-plugin-alias-0.2.1.tgz", + "integrity": "sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==" + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + }, + "eslint": { + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.37.0.tgz", + "integrity": "sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==", + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.2", + "@eslint/js": "8.37.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.4.0", + "espree": "^9.5.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "requires": { + "p-limit": "^3.0.2" + } + } + } + }, + "eslint-config-prettier": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", + "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", + "requires": {} + }, + "eslint-formatter-pretty": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-formatter-pretty/-/eslint-formatter-pretty-4.1.0.tgz", + "integrity": "sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==", + "requires": { + "@types/eslint": "^7.2.13", + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "eslint-rule-docs": "^1.1.5", + "log-symbols": "^4.0.0", + "plur": "^4.0.0", + "string-width": "^4.2.0", + "supports-hyperlinks": "^2.0.0" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", + "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", + "requires": { + "debug": "^3.2.7", + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" + }, + "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" + } + } + } + }, + "eslint-module-utils": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "requires": { + "debug": "^3.2.7" + }, + "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" + } + } + } + }, + "eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "dev": true, + "requires": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "dependencies": { + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-plugin-import": { + "version": "2.27.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", + "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", + "requires": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.7.4", + "has": "^1.0.3", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.6", + "resolve": "^1.22.1", + "semver": "^6.3.0", + "tsconfig-paths": "^3.14.1" + }, + "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" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "requires": { + "esutils": "^2.0.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "dev": true, + "requires": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "dependencies": { + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "eslint-plugin-prettier": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", + "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-rule-docs": { + "version": "1.1.235", + "resolved": "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.235.tgz", + "integrity": "sha512-+TQ+x4JdTnDoFEXXb3fDvfGOwnyNV7duH8fXWTPD1ieaBmB8omj7Gw/pMBBu4uI2uJCCU8APDaQJzWuXnTsH4A==" + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==" + }, + "esm-loader-typescript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esm-loader-typescript/-/esm-loader-typescript-1.0.4.tgz", + "integrity": "sha512-ejo2f+NKIt23jaJKVpjcRQC0xTa6cTqt6VA+z8Ef/A/TCjQ5u7opPO1J4fJFeTiiHEo8JqU92EG4I1KwuXYZMg==", + "requires": { + "create-esm-loader": "^0.2.3", + "npm-run-all": "^4.1.5", + "semver": "^7.3.8", + "typescript": "^5.0.2" + }, + "dependencies": { + "typescript": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.3.tgz", + "integrity": "sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==" + } + } + }, + "espree": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", + "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", + "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "eventemitter3": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.0.tgz", + "integrity": "sha512-riuVbElZZNXLeLEoprfNYoDSwTBRR44X3mnhdI1YcnENpWTCsTTVZ2zFuqQcpoyqPQIUXdiPEU0ECAq0KQRaHg==" + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true + }, + "expect": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz", + "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==", + "dev": true, + "requires": { + "@jest/expect-utils": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0" + } + }, + "ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "requires": { + "type": "^2.7.2" + }, + "dependencies": { + "type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "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==" + }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "requires": { + "reusify": "^1.0.4" + } + }, + "fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "requires": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + } + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } + }, + "formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "requires": { + "fetch-blob": "^3.1.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "requires": { + "type-fest": "^0.20.2" + } + }, + "globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "requires": { + "define-properties": "^1.1.3" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" + }, + "gts": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/gts/-/gts-3.1.1.tgz", + "integrity": "sha512-Jw44aBbzMnd1vtZs7tZt3LMstKQukCBg7N4CKVGzviIQ45Cz5b9lxDJGXVKj/9ySuGv6TYEeijZJGbiiVcM27w==", + "dev": true, + "requires": { + "@typescript-eslint/eslint-plugin": "^4.2.0", + "@typescript-eslint/parser": "^4.2.0", + "chalk": "^4.1.0", + "eslint": "^7.10.0", + "eslint-config-prettier": "^7.0.0", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prettier": "^3.1.4", + "execa": "^5.0.0", + "inquirer": "^7.3.3", + "json5": "^2.1.3", + "meow": "^9.0.0", + "ncp": "^2.0.0", + "prettier": "^2.1.2", + "rimraf": "^3.0.2", + "write-file-atomic": "^3.0.3" + }, + "dependencies": { + "@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@typescript-eslint/eslint-plugin": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", + "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "4.33.0", + "@typescript-eslint/scope-manager": "4.33.0", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/parser": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", + "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "debug": "^4.3.1" + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" + } + }, + "@typescript-eslint/types": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.33.0", + "eslint-visitor-keys": "^2.0.0" + } + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + } + } + }, + "eslint-config-prettier": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz", + "integrity": "sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==", + "dev": true, + "requires": {} + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + } + }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + }, + "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" + } + }, + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + } + }, + "internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "requires": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "irregular-plurals": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", + "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==" + }, + "is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" + }, + "is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==" + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "requires": { + "call-bind": "^1.0.2" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jest": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", + "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", + "dev": true, + "requires": { + "@jest/core": "^29.5.0", + "@jest/types": "^29.5.0", + "import-local": "^3.0.2", + "jest-cli": "^29.5.0" + } + }, + "jest-changed-files": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", + "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", + "dev": true, + "requires": { + "execa": "^5.0.0", + "p-limit": "^3.1.0" + }, + "dependencies": { + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + } + } + }, + "jest-circus": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz", + "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==", + "dev": true, + "requires": { + "@jest/environment": "^29.5.0", + "@jest/expect": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.5.0", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.5.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + } + } + }, + "jest-cli": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz", + "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==", + "dev": true, + "requires": { + "@jest/core": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "prompts": "^2.0.1", + "yargs": "^17.3.1" + } + }, + "jest-config": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz", + "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.5.0", + "@jest/types": "^29.5.0", + "babel-jest": "^29.5.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.5.0", + "jest-environment-node": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-runner": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.5.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + } + }, + "jest-diff": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", + "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^29.4.3", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + } + }, + "jest-docblock": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", + "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz", + "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==", + "dev": true, + "requires": { + "@jest/types": "^29.5.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.4.3", + "jest-util": "^29.5.0", + "pretty-format": "^29.5.0" + } + }, + "jest-environment-node": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz", + "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==", + "dev": true, + "requires": { + "@jest/environment": "^29.5.0", + "@jest/fake-timers": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-mock": "^29.5.0", + "jest-util": "^29.5.0" + } + }, + "jest-get-type": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", + "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==" + }, + "jest-haste-map": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz", + "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", + "dev": true, + "requires": { + "@jest/types": "^29.5.0", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + } + }, + "jest-leak-detector": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz", + "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==", + "dev": true, + "requires": { + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + } + }, + "jest-matcher-utils": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz", + "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^29.5.0", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + } + }, + "jest-message-util": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", + "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.5.0", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.5.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + } + } + }, + "jest-mock": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz", + "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==", + "dev": true, + "requires": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-util": "^29.5.0" + } + }, + "jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "requires": {} + }, + "jest-regex-util": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", + "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", + "dev": true }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-diff": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", - "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.4.3", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", - "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz", - "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", - "jest-util": "^29.5.0", - "pretty-format": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-environment-node": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz", - "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.5.0", - "@jest/fake-timers": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "jest-mock": "^29.5.0", - "jest-util": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", - "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz", - "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "jest-worker": "^29.5.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-leak-detector": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz", - "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz", - "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.5.0", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", - "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.5.0", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util/node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/jest-mock": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz", - "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "jest-util": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", - "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz", - "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz", - "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==", - "dev": true, - "dependencies": { - "jest-regex-util": "^29.4.3", - "jest-snapshot": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz", - "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==", - "dev": true, - "dependencies": { - "@jest/console": "^29.5.0", - "@jest/environment": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.4.3", - "jest-environment-node": "^29.5.0", - "jest-haste-map": "^29.5.0", - "jest-leak-detector": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-resolve": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-util": "^29.5.0", - "jest-watcher": "^29.5.0", - "jest-worker": "^29.5.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-runtime": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz", - "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.5.0", - "@jest/fake-timers": "^29.5.0", - "@jest/globals": "^29.5.0", - "@jest/source-map": "^29.4.3", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-mock": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz", - "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.5.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.5.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", - "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz", - "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", - "leven": "^3.1.0", - "pretty-format": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watcher": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz", - "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.5.0", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", - "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", - "dev": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.5.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-sdsl": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", - "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/light-bolt11-decoder": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/light-bolt11-decoder/-/light-bolt11-decoder-3.0.0.tgz", - "integrity": "sha512-AKvOigD2pmC8ktnn2TIqdJu0K0qk6ukUmTvHwF3JNkm8uWCqt18Ijn33A/a7gaRZ4PghJ59X+8+MXrzLKdBTmQ==", - "dependencies": { - "@scure/base": "1.1.1" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "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/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, - "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/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==" - }, - "node_modules/ncp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", - "dev": true, - "bin": { - "ncp": "bin/ncp" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "engines": { - "node": ">=10.5.0" - } - }, - "node_modules/node-fetch": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", - "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, - "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/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", - "dev": true - }, - "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nostr-tools": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.8.1.tgz", - "integrity": "sha512-/2IUe5xINUYT5hYBoEz51dfRaodbRHnyF8n+ZbKWCoh0ZRX6AL88OoDNrWaWWo7tP5j5OyzSL9g/z4TP7bshEA==", - "dependencies": { - "@noble/hashes": "1.0.0", - "@noble/secp256k1": "^1.7.1", - "@scure/base": "^1.1.1", - "@scure/bip32": "^1.1.5", - "@scure/bip39": "^1.1.1", - "prettier": "^2.8.4" - } - }, - "node_modules/npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, - "bin": { - "npm-run-all": "bin/npm-run-all/index.js", - "run-p": "bin/run-p/index.js", - "run-s": "bin/run-s/index.js" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/npm-run-all/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/npm-run-all/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/npm-run-all/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/npm-run-all/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/npm-run-all/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "node_modules/npm-run-all/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/npm-run-all/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/npm-run-all/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-all/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-all/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "engines": { - "node": ">=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/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "engines": { - "node": ">=4" - } - }, - "node_modules/pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/plur": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/plur/-/plur-4.0.0.tgz", - "integrity": "sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==", - "dependencies": { - "irregular-plurals": "^3.2.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.8.7", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", - "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/prettier-plugin-organize-imports": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-3.2.2.tgz", - "integrity": "sha512-e97lE6odGSiHonHJMTYC0q0iLXQyw0u5z/PJpvP/3vRy6/Zi9kLBwFAbEGjDzIowpjQv8b+J04PDamoUSQbzGA==", - "dev": true, - "peerDependencies": { - "@volar/vue-language-plugin-pug": "^1.0.4", - "@volar/vue-typescript": "^1.0.4", - "prettier": ">=2.0", - "typescript": ">=2.9" - }, - "peerDependenciesMeta": { - "@volar/vue-language-plugin-pug": { - "optional": true - }, - "@volar/vue-typescript": { - "optional": true - } - } - }, - "node_modules/pretty-format": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", - "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", - "dependencies": { - "@jest/schemas": "^29.4.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "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/pure-rand": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.1.tgz", - "integrity": "sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ] - }, - "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/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "engines": { - "node": ">=8" - } - }, - "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - }, - "node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/read-pkg/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.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==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "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/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "engines": { - "node": ">=8" - } - }, - "node_modules/shell-quote": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", - "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/shiki": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.2.tgz", - "integrity": "sha512-ltSZlSLOuSY0M0Y75KA+ieRaZ0Trf5Wl3gutE7jzLuIcWxLp5i/uEnLoQWNvgKXQ5OMpGkJnVMRLAuzjc0LJ2A==", - "dependencies": { - "ansi-sequence-parser": "^1.1.0", - "jsonc-parser": "^3.2.0", - "vscode-oniguruma": "^1.7.0", - "vscode-textmate": "^8.0.0" - } - }, - "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/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.padend": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz", - "integrity": "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ts-jest": { - "version": "29.1.0", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz", - "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==", - "dev": true, - "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "^21.0.1" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/types": "^29.0.0", - "babel-jest": "^29.0.0", - "jest": "^29.0.0", - "typescript": ">=4.3 <6" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz", + "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz", + "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==", + "dev": true, + "requires": { + "jest-regex-util": "^29.4.3", + "jest-snapshot": "^29.5.0" + } + }, + "jest-runner": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz", + "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==", + "dev": true, + "requires": { + "@jest/console": "^29.5.0", + "@jest/environment": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.4.3", + "jest-environment-node": "^29.5.0", + "jest-haste-map": "^29.5.0", + "jest-leak-detector": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-resolve": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-util": "^29.5.0", + "jest-watcher": "^29.5.0", + "jest-worker": "^29.5.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "dependencies": { + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + } + } + }, + "jest-runtime": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz", + "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==", + "dev": true, + "requires": { + "@jest/environment": "^29.5.0", + "@jest/fake-timers": "^29.5.0", + "@jest/globals": "^29.5.0", + "@jest/source-map": "^29.4.3", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-mock": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + } + }, + "jest-snapshot": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz", + "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/babel__traverse": "^7.0.6", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.5.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.5.0", + "semver": "^7.3.5" + } + }, + "jest-util": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", + "dev": true, + "requires": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-validate": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz", + "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==", + "dev": true, + "requires": { + "@jest/types": "^29.5.0", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.4.3", + "leven": "^3.1.0", + "pretty-format": "^29.5.0" + }, + "dependencies": { + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + } + } }, - "@jest/types": { - "optional": true + "jest-watcher": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz", + "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==", + "dev": true, + "requires": { + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.5.0", + "string-length": "^4.0.1" + } }, - "babel-jest": { - "optional": true + "jest-worker": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", + "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", + "dev": true, + "requires": { + "@types/node": "*", + "jest-util": "^29.5.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } }, - "esbuild": { - "optional": true - } - } - }, - "node_modules/ts-jest/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/tsd": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/tsd/-/tsd-0.28.1.tgz", - "integrity": "sha512-FeYrfJ05QgEMW/qOukNCr4fAJHww4SaKnivAXRv4g5kj4FeLpNV7zH4dorzB9zAfVX4wmA7zWu/wQf7kkcvfbw==", - "dependencies": { - "@tsd/typescript": "~5.0.2", - "eslint-formatter-pretty": "^4.1.0", - "globby": "^11.0.1", - "jest-diff": "^29.0.3", - "meow": "^9.0.0", - "path-exists": "^4.0.0", - "read-pkg-up": "^7.0.0" - }, - "bin": { - "tsd": "dist/cli.js" - }, - "engines": { - "node": ">=14.16" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/tstl": { - "version": "2.5.13", - "resolved": "https://registry.npmjs.org/tstl/-/tstl-2.5.13.tgz", - "integrity": "sha512-h9wayHHFI5+yqt8iau0vqH96cTNhezhZ/Fk/hrIdpfkiMu3lg9nzyvMfs5bIdX51IVzZO6DudLqhkL/rVXpT6g==" - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typedoc": { - "version": "0.24.6", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.24.6.tgz", - "integrity": "sha512-c3y3h45xJv3qYwKDAwU6Cl+26CjT0ZvblHzfHJ+SjQDM4p1mZxtgHky4lhmG0+nNarRht8kADfZlbspJWdZarQ==", - "dependencies": { - "lunr": "^2.3.9", - "marked": "^4.3.0", - "minimatch": "^9.0.0", - "shiki": "^0.14.1" - }, - "bin": { - "typedoc": "bin/typedoc" - }, - "engines": { - "node": ">= 14.14" - }, - "peerDependencies": { - "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x" - } - }, - "node_modules/typedoc-plugin-markdown": { - "version": "3.15.3", - "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.15.3.tgz", - "integrity": "sha512-idntFYu3vfaY3eaD+w9DeRd0PmNGqGuNLKihPU9poxFGnATJYGn9dPtEhn2QrTdishFMg7jPXAhos+2T6YCWRQ==", - "dev": true, - "dependencies": { - "handlebars": "^4.7.7" - }, - "peerDependencies": { - "typedoc": ">=0.24.0" - } - }, - "node_modules/typedoc/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/typedoc/node_modules/minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", - "dev": true, - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/utf8-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/utf8-buffer/-/utf8-buffer-1.0.0.tgz", - "integrity": "sha512-ueuhzvWnp5JU5CiGSY4WdKbiN/PO2AZ/lpeLiz2l38qwdLy/cW40XobgyuIWucNyum0B33bVB0owjFCeGBSLqg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/v8-to-istanbul": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/v8-to-istanbul/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==" - }, - "node_modules/vscode-textmate": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", - "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==" - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", - "dependencies": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/websocket-polyfill": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/websocket-polyfill/-/websocket-polyfill-0.0.3.tgz", - "integrity": "sha512-pF3kR8Uaoau78MpUmFfzbIRxXj9PeQrCuPepGE6JIsfsJ/o/iXr07Q2iQNzKSSblQJ0FiGWlS64N4pVSm+O3Dg==", - "dependencies": { - "tstl": "^2.0.7", - "websocket": "^1.0.28" - } - }, - "node_modules/websocket/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/websocket/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "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/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", - "engines": { - "node": ">=0.10.32" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/yargs": { - "version": "17.7.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", - "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/compat-data": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", - "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", - "dev": true - }, - "@babel/core": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.3.tgz", - "integrity": "sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.3", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.21.2", - "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.3", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.3", - "@babel/types": "^7.21.3", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } + "js-sdsl": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", + "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==" }, - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, + "jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "light-bolt11-decoder": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/light-bolt11-decoder/-/light-bolt11-decoder-3.0.0.tgz", + "integrity": "sha512-AKvOigD2pmC8ktnn2TIqdJu0K0qk6ukUmTvHwF3JNkm8uWCqt18Ijn33A/a7gaRZ4PghJ59X+8+MXrzLKdBTmQ==", + "requires": { + "@scure/base": "1.1.1" + } + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" + } + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz", - "integrity": "sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==", - "dev": true, - "requires": { - "@babel/types": "^7.21.3", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@babel/helper-compilation-targets": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" - }, - "dependencies": { "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", - "dev": true, - "requires": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", - "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.2", - "@babel/types": "^7.21.2" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "dev": true - }, - "@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "requires": { - "@babel/types": "^7.20.2" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" - }, - "@babel/helper-validator-option": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", - "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", - "dev": true - }, - "@babel/helpers": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", - "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", - "dev": true, - "requires": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0" - } - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "requires": { + "tmpl": "1.0.5" + } + }, + "map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==" + }, + "marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==" + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==" + }, + "meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "dependencies": { + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==" + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + }, + "minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==" + }, + "ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" + }, + "node-fetch": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", + "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + }, + "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==" + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node-releases": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "dev": true + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "nostr-tools": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.8.1.tgz", + "integrity": "sha512-/2IUe5xINUYT5hYBoEz51dfRaodbRHnyF8n+ZbKWCoh0ZRX6AL88OoDNrWaWWo7tP5j5OyzSL9g/z4TP7bshEA==", + "requires": { + "@noble/hashes": "1.0.0", + "@noble/secp256k1": "^1.7.1", + "@scure/base": "^1.1.1", + "@scure/bip32": "^1.1.5", + "@scure/bip39": "^1.1.1", + "prettier": "^2.8.4" + } + }, + "npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "requires": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "requires": { + "pify": "^3.0.0" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "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==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "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==" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==" + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" + }, + "pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "plur": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/plur/-/plur-4.0.0.tgz", + "integrity": "sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==", + "requires": { + "irregular-plurals": "^3.2.0" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" + }, + "prettier": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", + "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==" + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "prettier-plugin-organize-imports": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-3.2.2.tgz", + "integrity": "sha512-e97lE6odGSiHonHJMTYC0q0iLXQyw0u5z/PJpvP/3vRy6/Zi9kLBwFAbEGjDzIowpjQv8b+J04PDamoUSQbzGA==", + "dev": true, + "requires": {} + }, + "pretty-format": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "requires": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + } + } + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" + }, + "pure-rand": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.1.tgz", + "integrity": "sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + }, + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==" + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + } + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + }, + "resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "requires": { + "lru-cache": "^6.0.0" + } }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + "shell-quote": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", + "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==" }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + "shiki": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.2.tgz", + "integrity": "sha512-ltSZlSLOuSY0M0Y75KA+ieRaZ0Trf5Wl3gutE7jzLuIcWxLp5i/uEnLoQWNvgKXQ5OMpGkJnVMRLAuzjc0LJ2A==", + "requires": { + "ansi-sequence-parser": "^1.1.0", + "jsonc-parser": "^3.2.0", + "vscode-oniguruma": "^1.7.0", + "vscode-textmate": "^8.0.0" + } }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz", - "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==", - "dev": true - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", - "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", - "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - } - } - }, - "@babel/traverse": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz", - "integrity": "sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.3", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.3", - "@babel/types": "^7.21.3", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "@esbuild/android-arm": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.15.tgz", - "integrity": "sha512-sRSOVlLawAktpMvDyJIkdLI/c/kdRTOqo8t6ImVxg8yT7LQDUYV5Rp2FKeEosLr6ZCja9UjYAzyRSxGteSJPYg==", - "optional": true - }, - "@esbuild/android-arm64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.15.tgz", - "integrity": "sha512-0kOB6Y7Br3KDVgHeg8PRcvfLkq+AccreK///B4Z6fNZGr/tNHX0z2VywCc7PTeWp+bPvjA5WMvNXltHw5QjAIA==", - "optional": true - }, - "@esbuild/android-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.15.tgz", - "integrity": "sha512-MzDqnNajQZ63YkaUWVl9uuhcWyEyh69HGpMIrf+acR4otMkfLJ4sUCxqwbCyPGicE9dVlrysI3lMcDBjGiBBcQ==", - "optional": true - }, - "@esbuild/darwin-arm64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.15.tgz", - "integrity": "sha512-7siLjBc88Z4+6qkMDxPT2juf2e8SJxmsbNVKFY2ifWCDT72v5YJz9arlvBw5oB4W/e61H1+HDB/jnu8nNg0rLA==", - "optional": true - }, - "@esbuild/darwin-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.15.tgz", - "integrity": "sha512-NbImBas2rXwYI52BOKTW342Tm3LTeVlaOQ4QPZ7XuWNKiO226DisFk/RyPk3T0CKZkKMuU69yOvlapJEmax7cg==", - "optional": true - }, - "@esbuild/freebsd-arm64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.15.tgz", - "integrity": "sha512-Xk9xMDjBVG6CfgoqlVczHAdJnCs0/oeFOspFap5NkYAmRCT2qTn1vJWA2f419iMtsHSLm+O8B6SLV/HlY5cYKg==", - "optional": true - }, - "@esbuild/freebsd-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.15.tgz", - "integrity": "sha512-3TWAnnEOdclvb2pnfsTWtdwthPfOz7qAfcwDLcfZyGJwm1SRZIMOeB5FODVhnM93mFSPsHB9b/PmxNNbSnd0RQ==", - "optional": true - }, - "@esbuild/linux-arm": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.15.tgz", - "integrity": "sha512-MLTgiXWEMAMr8nmS9Gigx43zPRmEfeBfGCwxFQEMgJ5MC53QKajaclW6XDPjwJvhbebv+RzK05TQjvH3/aM4Xw==", - "optional": true - }, - "@esbuild/linux-arm64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.15.tgz", - "integrity": "sha512-T0MVnYw9KT6b83/SqyznTs/3Jg2ODWrZfNccg11XjDehIved2oQfrX/wVuev9N936BpMRaTR9I1J0tdGgUgpJA==", - "optional": true - }, - "@esbuild/linux-ia32": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.15.tgz", - "integrity": "sha512-wp02sHs015T23zsQtU4Cj57WiteiuASHlD7rXjKUyAGYzlOKDAjqK6bk5dMi2QEl/KVOcsjwL36kD+WW7vJt8Q==", - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.15.tgz", - "integrity": "sha512-k7FsUJjGGSxwnBmMh8d7IbObWu+sF/qbwc+xKZkBe/lTAF16RqxRCnNHA7QTd3oS2AfGBAnHlXL67shV5bBThQ==", - "optional": true - }, - "@esbuild/linux-mips64el": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.15.tgz", - "integrity": "sha512-ZLWk6czDdog+Q9kE/Jfbilu24vEe/iW/Sj2d8EVsmiixQ1rM2RKH2n36qfxK4e8tVcaXkvuV3mU5zTZviE+NVQ==", - "optional": true - }, - "@esbuild/linux-ppc64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.15.tgz", - "integrity": "sha512-mY6dPkIRAiFHRsGfOYZC8Q9rmr8vOBZBme0/j15zFUKM99d4ILY4WpOC7i/LqoY+RE7KaMaSfvY8CqjJtuO4xg==", - "optional": true - }, - "@esbuild/linux-riscv64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.15.tgz", - "integrity": "sha512-EcyUtxffdDtWjjwIH8sKzpDRLcVtqANooMNASO59y+xmqqRYBBM7xVLQhqF7nksIbm2yHABptoioS9RAbVMWVA==", - "optional": true - }, - "@esbuild/linux-s390x": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.15.tgz", - "integrity": "sha512-BuS6Jx/ezxFuHxgsfvz7T4g4YlVrmCmg7UAwboeyNNg0OzNzKsIZXpr3Sb/ZREDXWgt48RO4UQRDBxJN3B9Rbg==", - "optional": true - }, - "@esbuild/linux-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.15.tgz", - "integrity": "sha512-JsdS0EgEViwuKsw5tiJQo9UdQdUJYuB+Mf6HxtJSPN35vez1hlrNb1KajvKWF5Sa35j17+rW1ECEO9iNrIXbNg==", - "optional": true - }, - "@esbuild/netbsd-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.15.tgz", - "integrity": "sha512-R6fKjtUysYGym6uXf6qyNephVUQAGtf3n2RCsOST/neIwPqRWcnc3ogcielOd6pT+J0RDR1RGcy0ZY7d3uHVLA==", - "optional": true - }, - "@esbuild/openbsd-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.15.tgz", - "integrity": "sha512-mVD4PGc26b8PI60QaPUltYKeSX0wxuy0AltC+WCTFwvKCq2+OgLP4+fFd+hZXzO2xW1HPKcytZBdjqL6FQFa7w==", - "optional": true - }, - "@esbuild/sunos-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.15.tgz", - "integrity": "sha512-U6tYPovOkw3459t2CBwGcFYfFRjivcJJc1WC8Q3funIwX8x4fP+R6xL/QuTPNGOblbq/EUDxj9GU+dWKX0oWlQ==", - "optional": true - }, - "@esbuild/win32-arm64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.15.tgz", - "integrity": "sha512-W+Z5F++wgKAleDABemiyXVnzXgvRFs+GVKThSI+mGgleLWluv0D7Diz4oQpgdpNzh4i2nNDzQtWbjJiqutRp6Q==", - "optional": true - }, - "@esbuild/win32-ia32": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.15.tgz", - "integrity": "sha512-Muz/+uGgheShKGqSVS1KsHtCyEzcdOn/W/Xbh6H91Etm+wiIfwZaBn1W58MeGtfI8WA961YMHFYTthBdQs4t+w==", - "optional": true - }, - "@esbuild/win32-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.15.tgz", - "integrity": "sha512-DjDa9ywLUUmjhV2Y9wUTIF+1XsmuFGvZoCmOWkli1XcNAh5t25cc7fgsCx4Zi/Uurep3TTLyDiKATgGEg61pkA==", - "optional": true - }, - "@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "requires": { - "eslint-visitor-keys": "^3.3.0" - } - }, - "@eslint-community/regexpp": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", - "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==" - }, - "@eslint/eslintrc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", - "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.5.1", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "requires": { - "argparse": "^2.0.1" - } - } - } - }, - "@eslint/js": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.37.0.tgz", - "integrity": "sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==" - }, - "@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jest/console": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz", - "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "slash": "^3.0.0" - } - }, - "@jest/core": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz", - "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==", - "dev": true, - "requires": { - "@jest/console": "^29.5.0", - "@jest/reporters": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.5.0", - "jest-config": "^29.5.0", - "jest-haste-map": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-resolve-dependencies": "^29.5.0", - "jest-runner": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "jest-watcher": "^29.5.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "@jest/environment": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz", - "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==", - "dev": true, - "requires": { - "@jest/fake-timers": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "jest-mock": "^29.5.0" - } - }, - "@jest/expect": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz", - "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==", - "dev": true, - "requires": { - "expect": "^29.5.0", - "jest-snapshot": "^29.5.0" - } - }, - "@jest/expect-utils": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz", - "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==", - "dev": true, - "requires": { - "jest-get-type": "^29.4.3" - } - }, - "@jest/fake-timers": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz", - "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.5.0", - "jest-mock": "^29.5.0", - "jest-util": "^29.5.0" - } - }, - "@jest/globals": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz", - "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==", - "dev": true, - "requires": { - "@jest/environment": "^29.5.0", - "@jest/expect": "^29.5.0", - "@jest/types": "^29.5.0", - "jest-mock": "^29.5.0" - } - }, - "@jest/reporters": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz", - "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@jridgewell/trace-mapping": "^0.3.15", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "jest-worker": "^29.5.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - } - }, - "@jest/schemas": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", - "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", - "requires": { - "@sinclair/typebox": "^0.25.16" - } - }, - "@jest/source-map": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz", - "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.15", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - } - }, - "@jest/test-result": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz", - "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==", - "dev": true, - "requires": { - "@jest/console": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz", - "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==", - "dev": true, - "requires": { - "@jest/test-result": "^29.5.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "slash": "^3.0.0" - } - }, - "@jest/transform": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz", - "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.5.0", - "@jridgewell/trace-mapping": "^0.3.15", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "dependencies": { - "write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - } - } - } - }, - "@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "requires": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - } - }, - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "@noble/hashes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.0.0.tgz", - "integrity": "sha512-DZVbtY62kc3kkBtMHqwCOfXrT/hnoORy5BJ4+HU1IR59X0KWAOqsfzQPcUl/lQLlG7qXbe/fZ3r/emxtAl+sqg==" - }, - "@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==" - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@scure/base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", - "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==" - }, - "@scure/bip32": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", - "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", - "requires": { - "@noble/hashes": "~1.2.0", - "@noble/secp256k1": "~1.7.0", - "@scure/base": "~1.1.0" - }, - "dependencies": { - "@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==" - } - } - }, - "@scure/bip39": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", - "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", - "requires": { - "@noble/hashes": "~1.2.0", - "@scure/base": "~1.1.0" - }, - "dependencies": { - "@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==" - } - } - }, - "@sinclair/typebox": { - "version": "0.25.24", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", - "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==" - }, - "@sinonjs/commons": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", - "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz", - "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==", - "dev": true, - "requires": { - "@sinonjs/commons": "^2.0.0" - } - }, - "@tsd/typescript": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@tsd/typescript/-/typescript-5.0.3.tgz", - "integrity": "sha512-dGYlmePDOyea9ZsHdwZx67e1Al8TkDqLgTNnxkmUXpRMawDo+HyXeJFw3Ee8j6ODqLiuYjH82BKJuzmEDhN62w==" - }, - "@types/babel__core": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", - "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", - "dev": true, - "requires": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz", - "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==", - "dev": true, - "requires": { - "@babel/types": "^7.3.0" - } - }, - "@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", - "dev": true, - "requires": { - "@types/ms": "*" - } - }, - "@types/eslint": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", - "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" - }, - "@types/graceful-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", - "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@types/jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.0.tgz", - "integrity": "sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==", - "dev": true, - "requires": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" - }, - "@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" - }, - "@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", - "dev": true - }, - "@types/node": { - "version": "14.18.36", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", - "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==", - "dev": true - }, - "@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" - }, - "@types/prettier": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", - "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", - "dev": true - }, - "@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==" - }, - "@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.0.tgz", - "integrity": "sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==", - "requires": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.57.0", - "@typescript-eslint/type-utils": "5.57.0", - "@typescript-eslint/utils": "5.57.0", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/experimental-utils": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", - "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "dependencies": { - "@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" - } + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true }, - "@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", - "dev": true + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" }, - "@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - } + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } }, - "@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" - } + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, - "@typescript-eslint/parser": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.57.0.tgz", - "integrity": "sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==", - "requires": { - "@typescript-eslint/scope-manager": "5.57.0", - "@typescript-eslint/types": "5.57.0", - "@typescript-eslint/typescript-estree": "5.57.0", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.57.0.tgz", - "integrity": "sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==", - "requires": { - "@typescript-eslint/types": "5.57.0", - "@typescript-eslint/visitor-keys": "5.57.0" - } - }, - "@typescript-eslint/type-utils": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.57.0.tgz", - "integrity": "sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==", - "requires": { - "@typescript-eslint/typescript-estree": "5.57.0", - "@typescript-eslint/utils": "5.57.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/types": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.57.0.tgz", - "integrity": "sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==" - }, - "@typescript-eslint/typescript-estree": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.0.tgz", - "integrity": "sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==", - "requires": { - "@typescript-eslint/types": "5.57.0", - "@typescript-eslint/visitor-keys": "5.57.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/utils": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.57.0.tgz", - "integrity": "sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==", - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.57.0", - "@typescript-eslint/types": "5.57.0", - "@typescript-eslint/typescript-estree": "5.57.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.0.tgz", - "integrity": "sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==", - "requires": { - "@typescript-eslint/types": "5.57.0", - "eslint-visitor-keys": "^3.3.0" - } - }, - "acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==" - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "requires": { - "type-fest": "^0.21.3" - }, - "dependencies": { - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" - } - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "ansi-sequence-parser": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", - "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==" - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "requires": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - } - }, - "array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "is-string": "^1.0.7" - } - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" - }, - "array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - } - }, - "array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - } - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==" - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" - }, - "babel-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", - "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==", - "dev": true, - "requires": { - "@jest/transform": "^29.5.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.5.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - } - }, - "babel-plugin-jest-hoist": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", - "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", - "dev": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "requires": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - } - }, - "babel-preset-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", - "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^29.5.0", - "babel-preset-current-node-syntax": "^1.0.0" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" - } - }, - "bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "requires": { - "fast-json-stable-stringify": "2.x" - } - }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "bufferutil": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", - "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", - "requires": { - "node-gyp-build": "^4.3.0" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - }, - "camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "requires": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - } - }, - "caniuse-lite": { - "version": "1.0.30001472", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001472.tgz", - "integrity": "sha512-xWC/0+hHHQgj3/vrKYY0AAzeIUgr7L9wlELIcAvZdDUHlhL/kNxMdnQLOSOQfP8R51ZzPhmHdyMkI0MMpmxCfg==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true - }, - "cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true - }, - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true - }, - "collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "create-esm-loader": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/create-esm-loader/-/create-esm-loader-0.2.3.tgz", - "integrity": "sha512-cllzD6IU/mzXBs5OdQVWL3+ne5Elpu3Wdm7h5OldMbGXk76yr9XzHlQXWJ4zfs0ZAibe26rkbs4KvMAJm7fIZA==", - "requires": { - "semver": "^7.3.5" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==" - }, - "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" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" - }, - "decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==" - } - } - }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, - "deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true - }, - "define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true - }, - "diff-sequences": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", - "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==" - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "requires": { - "path-type": "^4.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "requires": { - "esutils": "^2.0.2" - } - }, - "electron-to-chromium": { - "version": "1.4.341", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.341.tgz", - "integrity": "sha512-R4A8VfUBQY9WmAhuqY5tjHRf5fH2AAf6vqitBOE0y6u2PgHgqHSrhZmu78dIX3fVZtjqlwJNX1i2zwC3VpHtQQ==", - "dev": true - }, - "emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.21.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", - "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", - "requires": { - "array-buffer-byte-length": "^1.0.0", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.0", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" - } - }, - "es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "requires": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - } - }, - "es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "requires": { - "has": "^1.0.3" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "requires": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "esbuild": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.15.tgz", - "integrity": "sha512-LBUV2VsUIc/iD9ME75qhT4aJj0r75abCVS0jakhFzOtR7TQsqQA5w0tZ+KTKnwl3kXE0MhskNdHDh/I5aCR1Zw==", - "requires": { - "@esbuild/android-arm": "0.17.15", - "@esbuild/android-arm64": "0.17.15", - "@esbuild/android-x64": "0.17.15", - "@esbuild/darwin-arm64": "0.17.15", - "@esbuild/darwin-x64": "0.17.15", - "@esbuild/freebsd-arm64": "0.17.15", - "@esbuild/freebsd-x64": "0.17.15", - "@esbuild/linux-arm": "0.17.15", - "@esbuild/linux-arm64": "0.17.15", - "@esbuild/linux-ia32": "0.17.15", - "@esbuild/linux-loong64": "0.17.15", - "@esbuild/linux-mips64el": "0.17.15", - "@esbuild/linux-ppc64": "0.17.15", - "@esbuild/linux-riscv64": "0.17.15", - "@esbuild/linux-s390x": "0.17.15", - "@esbuild/linux-x64": "0.17.15", - "@esbuild/netbsd-x64": "0.17.15", - "@esbuild/openbsd-x64": "0.17.15", - "@esbuild/sunos-x64": "0.17.15", - "@esbuild/win32-arm64": "0.17.15", - "@esbuild/win32-ia32": "0.17.15", - "@esbuild/win32-x64": "0.17.15" - } - }, - "esbuild-plugin-alias": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/esbuild-plugin-alias/-/esbuild-plugin-alias-0.2.1.tgz", - "integrity": "sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==" - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - }, - "eslint": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.37.0.tgz", - "integrity": "sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==", - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.2", - "@eslint/js": "8.37.0", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.4.0", - "espree": "^9.5.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } }, - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "requires": { - "argparse": "^2.0.1" - } + "spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "requires": { - "p-locate": "^5.0.0" - } + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, + "string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string.prototype.padend": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz", + "integrity": "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "requires": { - "yocto-queue": "^0.1.0" - } + "string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "requires": { - "p-limit": "^3.0.2" - } - } - } - }, - "eslint-config-prettier": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", - "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", - "requires": {} - }, - "eslint-formatter-pretty": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-formatter-pretty/-/eslint-formatter-pretty-4.1.0.tgz", - "integrity": "sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==", - "requires": { - "@types/eslint": "^7.2.13", - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "eslint-rule-docs": "^1.1.5", - "log-symbols": "^4.0.0", - "plur": "^4.0.0", - "string-width": "^4.2.0", - "supports-hyperlinks": "^2.0.0" - } - }, - "eslint-import-resolver-node": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", - "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", - "requires": { - "debug": "^3.2.7", - "is-core-module": "^2.11.0", - "resolve": "^1.22.1" - }, - "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" - } - } - } - }, - "eslint-module-utils": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", - "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", - "requires": { - "debug": "^3.2.7" - }, - "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" - } - } - } - }, - "eslint-plugin-es": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", - "dev": true, - "requires": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "dependencies": { - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "eslint-plugin-import": { - "version": "2.27.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", - "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", - "requires": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", - "eslint-module-utils": "^2.7.4", - "has": "^1.0.3", - "is-core-module": "^2.11.0", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.values": "^1.1.6", - "resolve": "^1.22.1", - "semver": "^6.3.0", - "tsconfig-paths": "^3.14.1" - }, - "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" - } + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "requires": { - "esutils": "^2.0.2" - } + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "eslint-plugin-node": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", - "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", - "dev": true, - "requires": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" - }, - "dependencies": { - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "requires": { + "min-indent": "^1.0.0" + } }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "eslint-plugin-prettier": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", - "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", - "dev": true, - "requires": { - "prettier-linter-helpers": "^1.0.0" - } - }, - "eslint-rule-docs": { - "version": "1.1.235", - "resolved": "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.235.tgz", - "integrity": "sha512-+TQ+x4JdTnDoFEXXb3fDvfGOwnyNV7duH8fXWTPD1ieaBmB8omj7Gw/pMBBu4uI2uJCCU8APDaQJzWuXnTsH4A==" - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", - "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==" - }, - "esm-loader-typescript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/esm-loader-typescript/-/esm-loader-typescript-1.0.4.tgz", - "integrity": "sha512-ejo2f+NKIt23jaJKVpjcRQC0xTa6cTqt6VA+z8Ef/A/TCjQ5u7opPO1J4fJFeTiiHEo8JqU92EG4I1KwuXYZMg==", - "requires": { - "create-esm-loader": "^0.2.3", - "npm-run-all": "^4.1.5", - "semver": "^7.3.8", - "typescript": "^5.0.2" - }, - "dependencies": { - "typescript": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.3.tgz", - "integrity": "sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==" - } - } - }, - "espree": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", - "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", - "requires": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", - "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - }, - "eventemitter3": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.0.tgz", - "integrity": "sha512-riuVbElZZNXLeLEoprfNYoDSwTBRR44X3mnhdI1YcnENpWTCsTTVZ2zFuqQcpoyqPQIUXdiPEU0ECAq0KQRaHg==" - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true - }, - "expect": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz", - "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==", - "dev": true, - "requires": { - "@jest/expect-utils": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0" - } - }, - "ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "requires": { - "type": "^2.7.2" - }, - "dependencies": { - "type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - } - } - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "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==" - }, - "fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "requires": { - "reusify": "^1.0.4" - } - }, - "fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "requires": { - "bser": "2.1.1" - } - }, - "fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "requires": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - } - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - } - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" - }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "requires": { - "is-callable": "^1.1.3" - } - }, - "formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "requires": { - "fetch-blob": "^3.1.2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - } - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "requires": { - "type-fest": "^0.20.2" - } - }, - "globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "requires": { - "define-properties": "^1.1.3" - } - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "requires": { - "get-intrinsic": "^1.1.3" - } - }, - "graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" - }, - "gts": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/gts/-/gts-3.1.1.tgz", - "integrity": "sha512-Jw44aBbzMnd1vtZs7tZt3LMstKQukCBg7N4CKVGzviIQ45Cz5b9lxDJGXVKj/9ySuGv6TYEeijZJGbiiVcM27w==", - "dev": true, - "requires": { - "@typescript-eslint/eslint-plugin": "^4.2.0", - "@typescript-eslint/parser": "^4.2.0", - "chalk": "^4.1.0", - "eslint": "^7.10.0", - "eslint-config-prettier": "^7.0.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^3.1.4", - "execa": "^5.0.0", - "inquirer": "^7.3.3", - "json5": "^2.1.3", - "meow": "^9.0.0", - "ncp": "^2.0.0", - "prettier": "^2.1.2", - "rimraf": "^3.0.2", - "write-file-atomic": "^3.0.3" - }, - "dependencies": { - "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - } - } + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } }, - "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } + "supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + } }, - "@typescript-eslint/eslint-plugin": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", - "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", - "dev": true, - "requires": { - "@typescript-eslint/experimental-utils": "4.33.0", - "@typescript-eslint/scope-manager": "4.33.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - } + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, - "@typescript-eslint/parser": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", - "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "debug": "^4.3.1" - } + "table": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "dev": true, + "requires": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } }, - "@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" - } + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } }, - "@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", - "dev": true + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" }, - "@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - } + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true }, - "@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" - } + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true }, - "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, - "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - } - } + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true }, - "eslint-config-prettier": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz", - "integrity": "sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==", - "dev": true, - "requires": {} + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } + "trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==" }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true + "ts-jest": { + "version": "29.1.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz", + "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "^21.0.1" + }, + "dependencies": { + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + } + } }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } + "tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "requires": { + "minimist": "^1.2.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" + } + } }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dev": true, - "requires": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" - } - }, - "hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==" - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" - }, - "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" - } - }, - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - } - }, - "internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "requires": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "irregular-plurals": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", - "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==" - }, - "is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "requires": { - "has": "^1.0.3" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==" - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "requires": { - "call-bind": "^1.0.2" - } - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - } - }, - "istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", - "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", - "dev": true, - "requires": { - "@jest/core": "^29.5.0", - "@jest/types": "^29.5.0", - "import-local": "^3.0.2", - "jest-cli": "^29.5.0" - } - }, - "jest-changed-files": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", - "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", - "dev": true, - "requires": { - "execa": "^5.0.0", - "p-limit": "^3.1.0" - }, - "dependencies": { - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - } - } - }, - "jest-circus": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz", - "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==", - "dev": true, - "requires": { - "@jest/environment": "^29.5.0", - "@jest/expect": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.5.0", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.5.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "dependencies": { - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - } - } - }, - "jest-cli": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz", - "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==", - "dev": true, - "requires": { - "@jest/core": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "prompts": "^2.0.1", - "yargs": "^17.3.1" - } - }, - "jest-config": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz", - "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.5.0", - "@jest/types": "^29.5.0", - "babel-jest": "^29.5.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.5.0", - "jest-environment-node": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-runner": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - } - }, - "jest-diff": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", - "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^29.4.3", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - } - }, - "jest-docblock": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", - "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", - "dev": true, - "requires": { - "detect-newline": "^3.0.0" - } - }, - "jest-each": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz", - "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", - "jest-util": "^29.5.0", - "pretty-format": "^29.5.0" - } - }, - "jest-environment-node": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz", - "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==", - "dev": true, - "requires": { - "@jest/environment": "^29.5.0", - "@jest/fake-timers": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "jest-mock": "^29.5.0", - "jest-util": "^29.5.0" - } - }, - "jest-get-type": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", - "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==" - }, - "jest-haste-map": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz", - "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "jest-worker": "^29.5.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - } - }, - "jest-leak-detector": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz", - "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==", - "dev": true, - "requires": { - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - } - }, - "jest-matcher-utils": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz", - "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^29.5.0", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - } - }, - "jest-message-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", - "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.5.0", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - } - } - }, - "jest-mock": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz", - "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "jest-util": "^29.5.0" - } - }, - "jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "requires": {} - }, - "jest-regex-util": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", - "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", - "dev": true - }, - "jest-resolve": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz", - "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - } - }, - "jest-resolve-dependencies": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz", - "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==", - "dev": true, - "requires": { - "jest-regex-util": "^29.4.3", - "jest-snapshot": "^29.5.0" - } - }, - "jest-runner": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz", - "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==", - "dev": true, - "requires": { - "@jest/console": "^29.5.0", - "@jest/environment": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.4.3", - "jest-environment-node": "^29.5.0", - "jest-haste-map": "^29.5.0", - "jest-leak-detector": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-resolve": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-util": "^29.5.0", - "jest-watcher": "^29.5.0", - "jest-worker": "^29.5.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "dependencies": { - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - } - } - }, - "jest-runtime": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz", - "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==", - "dev": true, - "requires": { - "@jest/environment": "^29.5.0", - "@jest/fake-timers": "^29.5.0", - "@jest/globals": "^29.5.0", - "@jest/source-map": "^29.4.3", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-mock": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - } - }, - "jest-snapshot": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz", - "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.5.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.5.0", - "semver": "^7.3.5" - } - }, - "jest-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", - "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "jest-validate": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz", - "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", - "leven": "^3.1.0", - "pretty-format": "^29.5.0" - }, - "dependencies": { - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - } - } - }, - "jest-watcher": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz", - "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==", - "dev": true, - "requires": { - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.5.0", - "string-length": "^4.0.1" - } - }, - "jest-worker": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", - "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", - "dev": true, - "requires": { - "@types/node": "*", - "jest-util": "^29.5.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "js-sdsl": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", - "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==" - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true - }, - "jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "light-bolt11-decoder": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/light-bolt11-decoder/-/light-bolt11-decoder-3.0.0.tgz", - "integrity": "sha512-AKvOigD2pmC8ktnn2TIqdJu0K0qk6ukUmTvHwF3JNkm8uWCqt18Ijn33A/a7gaRZ4PghJ59X+8+MXrzLKdBTmQ==", - "requires": { - "@scure/base": "1.1.1" - } - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } + "tsd": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/tsd/-/tsd-0.28.1.tgz", + "integrity": "sha512-FeYrfJ05QgEMW/qOukNCr4fAJHww4SaKnivAXRv4g5kj4FeLpNV7zH4dorzB9zAfVX4wmA7zWu/wQf7kkcvfbw==", + "requires": { + "@tsd/typescript": "~5.0.2", + "eslint-formatter-pretty": "^4.1.0", + "globby": "^11.0.1", + "jest-diff": "^29.0.3", + "meow": "^9.0.0", + "path-exists": "^4.0.0", + "read-pkg-up": "^7.0.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "tstl": { + "version": "2.5.13", + "resolved": "https://registry.npmjs.org/tstl/-/tstl-2.5.13.tgz", + "integrity": "sha512-h9wayHHFI5+yqt8iau0vqH96cTNhezhZ/Fk/hrIdpfkiMu3lg9nzyvMfs5bIdX51IVzZO6DudLqhkL/rVXpT6g==" + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "requires": { + "tslib": "^1.8.1" + } + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" - } - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "requires": { - "tmpl": "1.0.5" - } - }, - "map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==" - }, - "marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==" - }, - "memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==" - }, - "meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "requires": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "dependencies": { "type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==" - } - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" - }, - "minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" - }, - "natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==" - }, - "ncp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" - }, - "node-fetch": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", - "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", - "requires": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - } - }, - "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==" - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", - "dev": true - }, - "normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "nostr-tools": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.8.1.tgz", - "integrity": "sha512-/2IUe5xINUYT5hYBoEz51dfRaodbRHnyF8n+ZbKWCoh0ZRX6AL88OoDNrWaWWo7tP5j5OyzSL9g/z4TP7bshEA==", - "requires": { - "@noble/hashes": "1.0.0", - "@noble/secp256k1": "^1.7.1", - "@scure/base": "^1.1.1", - "@scure/bip32": "^1.1.5", - "@scure/bip39": "^1.1.1", - "prettier": "^2.8.4" - } - }, - "npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", - "requires": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } + "typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + } }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "requires": { + "is-typedarray": "^1.0.0" + } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "typedoc": { + "version": "0.24.6", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.24.6.tgz", + "integrity": "sha512-c3y3h45xJv3qYwKDAwU6Cl+26CjT0ZvblHzfHJ+SjQDM4p1mZxtgHky4lhmG0+nNarRht8kADfZlbspJWdZarQ==", + "requires": { + "lunr": "^2.3.9", + "marked": "^4.3.0", + "minimatch": "^9.0.0", + "shiki": "^0.14.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } + "typedoc-plugin-markdown": { + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.15.3.tgz", + "integrity": "sha512-idntFYu3vfaY3eaD+w9DeRd0PmNGqGuNLKihPU9poxFGnATJYGn9dPtEhn2QrTdishFMg7jPXAhos+2T6YCWRQ==", + "dev": true, + "requires": { + "handlebars": "^4.7.7" + } }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + "typescript": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==" }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + "uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } + "update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "requires": { - "pify": "^3.0.0" - } + "utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "requires": { + "node-gyp-build": "^4.3.0" + } }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } + "utf8-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utf8-buffer/-/utf8-buffer-1.0.0.tgz", + "integrity": "sha512-ueuhzvWnp5JU5CiGSY4WdKbiN/PO2AZ/lpeLiz2l38qwdLy/cW40XobgyuIWucNyum0B33bVB0owjFCeGBSLqg==" }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "requires": { - "shebang-regex": "^1.0.0" - } + "v8-to-istanbul": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + }, + "dependencies": { + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + } + } }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } + "vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==" + }, + "vscode-textmate": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==" + }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "requires": { + "makeerror": "1.0.12" + } + }, + "web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==" + }, + "websocket": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", + "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", + "requires": { + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "websocket-polyfill": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/websocket-polyfill/-/websocket-polyfill-0.0.3.tgz", + "integrity": "sha512-pF3kR8Uaoau78MpUmFfzbIRxXj9PeQrCuPepGE6JIsfsJ/o/iXr07Q2iQNzKSSblQJ0FiGWlS64N4pVSm+O3Dg==", + "requires": { + "tstl": "^2.0.7", + "websocket": "^1.0.28" + } }, "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "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==" - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - }, - "object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - }, - "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==" - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - }, - "pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==" - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" - }, - "pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "plur": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/plur/-/plur-4.0.0.tgz", - "integrity": "sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==", - "requires": { - "irregular-plurals": "^3.2.0" - } - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" - }, - "prettier": { - "version": "2.8.7", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", - "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==" - }, - "prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "requires": { - "fast-diff": "^1.1.2" - } - }, - "prettier-plugin-organize-imports": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-3.2.2.tgz", - "integrity": "sha512-e97lE6odGSiHonHJMTYC0q0iLXQyw0u5z/PJpvP/3vRy6/Zi9kLBwFAbEGjDzIowpjQv8b+J04PDamoUSQbzGA==", - "dev": true, - "requires": {} - }, - "pretty-format": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", - "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", - "requires": { - "@jest/schemas": "^29.4.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" - } - } - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" - }, - "pure-rand": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.1.tgz", - "integrity": "sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - }, - "quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==" - }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + } }, - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "dependencies": { - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" - } - } - }, - "redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "requires": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - } - }, - "regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - }, - "resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "dev": true - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - }, - "shell-quote": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", - "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==" - }, - "shiki": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.2.tgz", - "integrity": "sha512-ltSZlSLOuSY0M0Y75KA+ieRaZ0Trf5Wl3gutE7jzLuIcWxLp5i/uEnLoQWNvgKXQ5OMpGkJnVMRLAuzjc0LJ2A==", - "requires": { - "ansi-sequence-parser": "^1.1.0", - "jsonc-parser": "^3.2.0", - "vscode-oniguruma": "^1.7.0", - "vscode-textmate": "^8.0.0" - } - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "requires": { - "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true - } - } - }, - "string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "requires": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "string.prototype.padend": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz", - "integrity": "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "requires": { - "min-indent": "^1.0.0" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", - "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - }, - "table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", - "dev": true, - "requires": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { - "is-number": "^7.0.0" - } - }, - "trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==" - }, - "ts-jest": { - "version": "29.1.0", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz", - "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==", - "dev": true, - "requires": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "^21.0.1" - }, - "dependencies": { - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true - } - } - }, - "tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "requires": { - "minimist": "^1.2.0" - } + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" - } - } - }, - "tsd": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/tsd/-/tsd-0.28.1.tgz", - "integrity": "sha512-FeYrfJ05QgEMW/qOukNCr4fAJHww4SaKnivAXRv4g5kj4FeLpNV7zH4dorzB9zAfVX4wmA7zWu/wQf7kkcvfbw==", - "requires": { - "@tsd/typescript": "~5.0.2", - "eslint-formatter-pretty": "^4.1.0", - "globby": "^11.0.1", - "jest-diff": "^29.0.3", - "meow": "^9.0.0", - "path-exists": "^4.0.0", - "read-pkg-up": "^7.0.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "tstl": { - "version": "2.5.13", - "resolved": "https://registry.npmjs.org/tstl/-/tstl-2.5.13.tgz", - "integrity": "sha512-h9wayHHFI5+yqt8iau0vqH96cTNhezhZ/Fk/hrIdpfkiMu3lg9nzyvMfs5bIdX51IVzZO6DudLqhkL/rVXpT6g==" - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "requires": { - "tslib": "^1.8.1" - } - }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" - }, - "typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "requires": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - } - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "typedoc": { - "version": "0.24.6", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.24.6.tgz", - "integrity": "sha512-c3y3h45xJv3qYwKDAwU6Cl+26CjT0ZvblHzfHJ+SjQDM4p1mZxtgHky4lhmG0+nNarRht8kADfZlbspJWdZarQ==", - "requires": { - "lunr": "^2.3.9", - "marked": "^4.3.0", - "minimatch": "^9.0.0", - "shiki": "^0.14.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } }, - "minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "typedoc-plugin-markdown": { - "version": "3.15.3", - "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.15.3.tgz", - "integrity": "sha512-idntFYu3vfaY3eaD+w9DeRd0PmNGqGuNLKihPU9poxFGnATJYGn9dPtEhn2QrTdishFMg7jPXAhos+2T6YCWRQ==", - "dev": true, - "requires": { - "handlebars": "^4.7.7" - } - }, - "typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==" - }, - "uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", - "dev": true, - "optional": true - }, - "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - } - }, - "update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { - "punycode": "^2.1.0" - } - }, - "utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "requires": { - "node-gyp-build": "^4.3.0" - } - }, - "utf8-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/utf8-buffer/-/utf8-buffer-1.0.0.tgz", - "integrity": "sha512-ueuhzvWnp5JU5CiGSY4WdKbiN/PO2AZ/lpeLiz2l38qwdLy/cW40XobgyuIWucNyum0B33bVB0owjFCeGBSLqg==" - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "v8-to-istanbul": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" - }, - "dependencies": { - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - } - } - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==" - }, - "vscode-textmate": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", - "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==" - }, - "walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "requires": { - "makeerror": "1.0.12" - } - }, - "web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==" - }, - "websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", - "requires": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yargs": { + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", + "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "dependencies": { + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + } + } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "websocket-polyfill": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/websocket-polyfill/-/websocket-polyfill-0.0.3.tgz", - "integrity": "sha512-pF3kR8Uaoau78MpUmFfzbIRxXj9PeQrCuPepGE6JIsfsJ/o/iXr07Q2iQNzKSSblQJ0FiGWlS64N4pVSm+O3Dg==", - "requires": { - "tstl": "^2.0.7", - "websocket": "^1.0.28" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "yargs": { - "version": "17.7.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", - "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", - "dev": true, - "requires": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "dependencies": { "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" } - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" } - } } diff --git a/package.json b/package.json index 22ed13e2..daed6e6a 100644 --- a/package.json +++ b/package.json @@ -1,70 +1,70 @@ { - "name": "@nostr-dev-kit/ndk", - "version": "0.3.141", - "description": "NDK - Nostr Development Kit", - "homepage": "https://ndk.fyi", - "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", - "repository": { - "type": "git", - "url": "https://github.com/nostr-dev-kit/ndk" - }, - "types": "./lib/src/index.d.ts", - "main": "lib/ndk.cjs.js", - "module": "lib/esm/ndk.mjs", - "exports": { - "import": "./lib/esm/ndk.mjs", - "require": "./lib/ndk.cjs.js" - }, - "files": [ - "lib", - "README.md" - ], - "scripts": { - "dev": "node tools/cleanup esm && tsc -w -p config/tsconfig.esm.json", - "build": "rm -rf lib && node build.js && tsc", - "clean": "rm -rf lib docs", - "test": "jest", - "lint": "eslint src/**/*.ts", - "format": "prettier --write \"**/*.{js,jsx,json,yml,yaml,css,ts,tsx,md,mdx}\"", - "compile": "tsc", - "prepare": "pnpm build", - "pretest": "pnpm compile", - "posttest": "pnpm lint" - }, - "keywords": [ - "nostr" - ], - "author": "pablof7z", - "license": "MIT", - "devDependencies": { - "@types/debug": "^4.1.7", - "@types/jest": "^29.5.0", - "@types/node": "^14.11.2", - "gts": "^3.1.1", - "jest": "^29.5.0", - "prettier-plugin-organize-imports": "^3.2.2", - "ts-jest": "^29.1.0", - "typedoc-plugin-markdown": "^3.14.0", - "typescript": "~4.7.0" - }, - "dependencies": { - "@scure/base": "^1.1.1", - "@typescript-eslint/eslint-plugin": "^5.57.0", - "@typescript-eslint/parser": "^5.57.0", - "debug": "^4.3.4", - "esbuild": "^0.17.15", - "esbuild-plugin-alias": "^0.2.1", - "eslint": "^8.37.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-import": "^2.27.5", - "esm-loader-typescript": "^1.0.4", - "eventemitter3": "^5.0.0", - "light-bolt11-decoder": "^3.0.0", - "node-fetch": "^3.3.1", - "nostr-tools": "^1.8.1", - "tsd": "^0.28.1", - "typedoc": "^0.24.6", - "utf8-buffer": "^1.0.0", - "websocket-polyfill": "^0.0.3" - } + "name": "@nostr-dev-kit/ndk", + "version": "0.3.141", + "description": "NDK - Nostr Development Kit", + "homepage": "https://ndk.fyi", + "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", + "repository": { + "type": "git", + "url": "https://github.com/nostr-dev-kit/ndk" + }, + "types": "./lib/src/index.d.ts", + "main": "lib/ndk.cjs.js", + "module": "lib/esm/ndk.mjs", + "exports": { + "import": "./lib/esm/ndk.mjs", + "require": "./lib/ndk.cjs.js" + }, + "files": [ + "lib", + "README.md" + ], + "scripts": { + "dev": "node tools/cleanup esm && tsc -w -p config/tsconfig.esm.json", + "build": "rm -rf lib && node build.js && tsc", + "clean": "rm -rf lib docs", + "test": "jest", + "lint": "eslint src/**/*.ts", + "format": "prettier --write \"**/*.{js,jsx,json,yml,yaml,css,ts,tsx,md,mdx}\"", + "compile": "tsc", + "prepare": "pnpm build", + "pretest": "pnpm compile", + "posttest": "pnpm lint" + }, + "keywords": [ + "nostr" + ], + "author": "pablof7z", + "license": "MIT", + "devDependencies": { + "@types/debug": "^4.1.7", + "@types/jest": "^29.5.0", + "@types/node": "^14.11.2", + "gts": "^3.1.1", + "jest": "^29.5.0", + "prettier-plugin-organize-imports": "^3.2.2", + "ts-jest": "^29.1.0", + "typedoc-plugin-markdown": "^3.14.0", + "typescript": "~4.7.0" + }, + "dependencies": { + "@scure/base": "^1.1.1", + "@typescript-eslint/eslint-plugin": "^5.57.0", + "@typescript-eslint/parser": "^5.57.0", + "debug": "^4.3.4", + "esbuild": "^0.17.15", + "esbuild-plugin-alias": "^0.2.1", + "eslint": "^8.37.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-import": "^2.27.5", + "esm-loader-typescript": "^1.0.4", + "eventemitter3": "^5.0.0", + "light-bolt11-decoder": "^3.0.0", + "node-fetch": "^3.3.1", + "nostr-tools": "^1.8.1", + "tsd": "^0.28.1", + "typedoc": "^0.24.6", + "utf8-buffer": "^1.0.0", + "websocket-polyfill": "^0.0.3" + } } diff --git a/src/cache/index.ts b/src/cache/index.ts index bd5475b4..0df4677f 100644 --- a/src/cache/index.ts +++ b/src/cache/index.ts @@ -1,5 +1,5 @@ -import {NDKFilter, NDKSubscription} from '../subscription/index.js'; -import NDKEvent from '../events/index.js'; +import NDKEvent from "../events/index.js"; +import { NDKFilter, NDKSubscription } from "../subscription/index.js"; export interface NDKCacheAdapter { /** @@ -11,4 +11,4 @@ export interface NDKCacheAdapter { query(subscription: NDKSubscription): Promise; setEvent(event: NDKEvent, filter: NDKFilter): Promise; -} \ No newline at end of file +} diff --git a/src/events/content-tagger.test.ts b/src/events/content-tagger.test.ts index a4dd1a4e..568f43f7 100644 --- a/src/events/content-tagger.test.ts +++ b/src/events/content-tagger.test.ts @@ -1,43 +1,58 @@ -import { generateContentTags } from './content-tagger'; -import { NDKTag } from './index.js'; +import { generateContentTags } from "./content-tagger"; +import { NDKTag } from "./index.js"; -describe('generateContentTags', () => { - it('should replace valid tags and store decoded data in the tags array', () => { - const content = 'This is a sample content with @npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft and @note1d2mheza0d5z5yycucu94nw37e6gyl4vwl6gavyku86rshkhexq6q30s0g7 tags.'; +describe("generateContentTags", () => { + it("should replace valid tags and store decoded data in the tags array", () => { + const content = + "This is a sample content with @npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft and @note1d2mheza0d5z5yycucu94nw37e6gyl4vwl6gavyku86rshkhexq6q30s0g7 tags."; const tags: NDKTag[] = []; - const { content: processedContent, tags: processedTags } = generateContentTags(content, tags); + const { content: processedContent, tags: processedTags } = generateContentTags( + content, + tags + ); - expect(processedContent).toEqual('This is a sample content with nostr:npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft and nostr:note1d2mheza0d5z5yycucu94nw37e6gyl4vwl6gavyku86rshkhexq6q30s0g7 tags.'); + expect(processedContent).toEqual( + "This is a sample content with nostr:npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft and nostr:note1d2mheza0d5z5yycucu94nw37e6gyl4vwl6gavyku86rshkhexq6q30s0g7 tags." + ); expect(processedTags.length).toEqual(2); expect(processedTags).toEqual([ - ['p', 'fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52'], - ['e', '6ab77c8baf6d0542131cc70b59ba3ece904fd58efe91d612dc3e870bdaf93034'], + ["p", "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52"], + ["e", "6ab77c8baf6d0542131cc70b59ba3ece904fd58efe91d612dc3e870bdaf93034"] ]); }); - it('should not replace invalid tags and leave the tags array unchanged', () => { - const content = 'This is a sample content with an @invalidTag.'; + it("should not replace invalid tags and leave the tags array unchanged", () => { + const content = "This is a sample content with an @invalidTag."; const tags: NDKTag[] = []; - const { content: processedContent, tags: processedTags } = generateContentTags(content, tags); + const { content: processedContent, tags: processedTags } = generateContentTags( + content, + tags + ); expect(processedContent).toEqual(content); expect(processedTags.length).toEqual(0); }); - it('should handle existing tags and update indexes accordingly', () => { - const content = 'This is a sample content with @npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft and @note1d2mheza0d5z5yycucu94nw37e6gyl4vwl6gavyku86rshkhexq6q30s0g7 tags.'; - const tags: NDKTag[] = [['p', 'existing_p']]; + it("should handle existing tags and update indexes accordingly", () => { + const content = + "This is a sample content with @npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft and @note1d2mheza0d5z5yycucu94nw37e6gyl4vwl6gavyku86rshkhexq6q30s0g7 tags."; + const tags: NDKTag[] = [["p", "existing_p"]]; - const { content: processedContent, tags: processedTags } = generateContentTags(content, tags); + const { content: processedContent, tags: processedTags } = generateContentTags( + content, + tags + ); - expect(processedContent).toEqual('This is a sample content with nostr:npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft and nostr:note1d2mheza0d5z5yycucu94nw37e6gyl4vwl6gavyku86rshkhexq6q30s0g7 tags.'); + expect(processedContent).toEqual( + "This is a sample content with nostr:npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft and nostr:note1d2mheza0d5z5yycucu94nw37e6gyl4vwl6gavyku86rshkhexq6q30s0g7 tags." + ); expect(processedTags.length).toEqual(3); expect(processedTags).toEqual([ - ['p', 'existing_p'], - ['p', 'fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52'], - ['e', '6ab77c8baf6d0542131cc70b59ba3ece904fd58efe91d612dc3e870bdaf93034'] + ["p", "existing_p"], + ["p", "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52"], + ["e", "6ab77c8baf6d0542131cc70b59ba3ece904fd58efe91d612dc3e870bdaf93034"] ]); }); }); diff --git a/src/events/content-tagger.ts b/src/events/content-tagger.ts index 7f581352..332beb24 100644 --- a/src/events/content-tagger.ts +++ b/src/events/content-tagger.ts @@ -1,28 +1,31 @@ -import {nip19} from 'nostr-tools'; -import { NDKTag } from './index.js'; -import { EventPointer, ProfilePointer } from 'nostr-tools/lib/nip19'; +import { nip19 } from "nostr-tools"; +import { EventPointer, ProfilePointer } from "nostr-tools/lib/nip19"; +import { NDKTag } from "./index.js"; -export function generateContentTags(content: string, tags: NDKTag[] = []): {content: string; tags: NDKTag[]} { +export function generateContentTags( + content: string, + tags: NDKTag[] = [] +): { content: string; tags: NDKTag[] } { const tagRegex = /(@|nostr:)(npub|nprofile|note|nevent)[a-zA-Z0-9]+/g; content = content.replace(tagRegex, (tag) => { try { const entity = tag.split(/(?<=@|nostr:)/)[1]; - const {type, data} = nip19.decode(entity); + const { type, data } = nip19.decode(entity); let t: NDKTag; switch (type) { - case 'npub': - t = ['p', data as string]; + case "npub": + t = ["p", data as string]; break; - case 'nprofile': - t = ['p', (data as ProfilePointer).pubkey as string]; + case "nprofile": + t = ["p", (data as ProfilePointer).pubkey as string]; break; - case 'nevent': - t = ['e', (data as EventPointer).id as string]; + case "nevent": + t = ["e", (data as EventPointer).id as string]; break; - case 'note': - t = ['e', data as string]; + case "note": + t = ["e", data as string]; break; default: return tag; @@ -33,11 +36,10 @@ export function generateContentTags(content: string, tags: NDKTag[] = []): {cont } return `nostr:${entity}`; - } catch (error) { return tag; } }); - return {content, tags}; -} \ No newline at end of file + return { content, tags }; +} diff --git a/src/events/dedup.ts b/src/events/dedup.ts index 4c963108..f675515c 100644 --- a/src/events/dedup.ts +++ b/src/events/dedup.ts @@ -1,4 +1,4 @@ -import {NDKEvent} from '../index.js'; +import { NDKEvent } from "../index.js"; /** * Receives two events and returns the "correct" event to use. @@ -11,4 +11,4 @@ export default function dedup(event1: NDKEvent, event2: NDKEvent) { } return event2; -} \ No newline at end of file +} diff --git a/src/events/index.test.ts b/src/events/index.test.ts index 6dd8a071..bf2aad48 100644 --- a/src/events/index.test.ts +++ b/src/events/index.test.ts @@ -1,5 +1,4 @@ import NDK, { NDKEvent, NDKSubscription } from "../index"; -import EventEmitter from "eventemitter3"; describe("NDKEvent", () => { let ndk: NDK; @@ -12,17 +11,20 @@ describe("NDKEvent", () => { describe("fetchEvents", () => { it("correctly handles a relay sending old replaced events", async () => { - const eventData = { kind: 300001, tags: [ ["d", "" ] ], content: "", pubkey: ""}; - const event1 = new NDKEvent(ndk, { ...eventData, created_at: (Date.now()/1000)-3600 }); - const event2 = new NDKEvent(ndk, { ...eventData, created_at: (Date.now()/1000) }); + const eventData = { kind: 300001, tags: [["d", ""]], content: "", pubkey: "" }; + const event1 = new NDKEvent(ndk, { + ...eventData, + created_at: Date.now() / 1000 - 3600 + }); + const event2 = new NDKEvent(ndk, { ...eventData, created_at: Date.now() / 1000 }); ndk.subscribe = jest.fn((filter, opts?): NDKSubscription => { const sub = new NDKSubscription(ndk, filter, opts); setTimeout(() => { - sub.emit('event', event1); - sub.emit('event', event2); - sub.emit('eose'); + sub.emit("event", event1); + sub.emit("event", event2); + sub.emit("eose"); }, 100); return sub; @@ -50,9 +52,14 @@ describe("NDKEvent", () => { describe("mentions", () => { it("handles NIP-27 mentions", async () => { - event.content = "hello nostr:npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft!"; + event.content = + "hello nostr:npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft!"; const nostrEvent = await event.toNostrEvent(); - const mentionTag = nostrEvent.tags.find((t) => t[0] === "p" && t[1] === "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52"); + const mentionTag = nostrEvent.tags.find( + (t) => + t[0] === "p" && + t[1] === "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52" + ); expect(mentionTag).toBeTruthy(); }); }); @@ -61,20 +68,20 @@ describe("NDKEvent", () => { describe("tagReference", () => { it("returns the correct tag for referencing the event", () => { const event1 = new NDKEvent(ndk, { - created_at: Date.now()/1000, + created_at: Date.now() / 1000, content: "", kind: 30000, pubkey: "pubkey", - tags: [["d", "d-code"]], + tags: [["d", "d-code"]] }); const event2 = new NDKEvent(ndk, { - created_at: Date.now()/1000, + created_at: Date.now() / 1000, content: "", tags: [], kind: 1, pubkey: "pubkey", - id: "eventid", + id: "eventid" }); expect(event1.tagReference()).toEqual(["a", "30000:pubkey:d-code"]); diff --git a/src/events/index.ts b/src/events/index.ts index e8ac26c1..0062e1c6 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -1,13 +1,12 @@ -import { getEventHash, UnsignedEvent } from "nostr-tools"; import EventEmitter from "eventemitter3"; +import { getEventHash, UnsignedEvent } from "nostr-tools"; import NDK, { NDKRelaySet } from "../index.js"; -import Zap from '../zap/index.js'; +import { NDKSigner } from "../signers/index.js"; +import Zap from "../zap/index.js"; import { generateContentTags } from "./content-tagger.js"; -import { NDKKind } from "./kind.js"; -import { isParamReplaceable, isReplaceable } from "./kind.js"; +import { isParamReplaceable, isReplaceable, NDKKind } from "./kind.js"; +import { decrypt, encrypt } from "./nip04.js"; import { encode } from "./nip19.js"; -import { encrypt, decrypt } from "./nip04.js"; -import { NDKSigner } from "../signers/index.js"; export type NDKEventId = string; export type NDKTag = string[]; @@ -25,7 +24,7 @@ export type NostrEvent = { type ContentTag = { tags: NDKTag[]; content: string; -} +}; /** * NDKEvent is the basic building block of NDK; most things @@ -34,22 +33,22 @@ type ContentTag = { export default class NDKEvent extends EventEmitter { public ndk?: NDK; public created_at?: number; - public content = ''; + public content = ""; public tags: NDKTag[] = []; public kind?: NDKKind | number; public id = ""; public sig?: string; - public pubkey = ''; + public pubkey = ""; constructor(ndk?: NDK, event?: NostrEvent) { super(); this.ndk = ndk; this.created_at = event?.created_at; - this.content = event?.content || ''; + this.content = event?.content || ""; this.tags = event?.tags || []; - this.id = event?.id || ''; + this.id = event?.id || ""; this.sig = event?.sig; - this.pubkey = event?.pubkey || ''; + this.pubkey = event?.pubkey || ""; this.kind = event?.kind; } @@ -64,7 +63,7 @@ export default class NDKEvent extends EventEmitter { kind: this.kind, pubkey: this.pubkey, id: this.id, - sig: this.sig, + sig: this.sig } as NostrEvent; } @@ -73,15 +72,15 @@ export default class NDKEvent extends EventEmitter { * when possible, adding tags when necessary. */ async toNostrEvent(pubkey?: string): Promise { - if (!pubkey && this.pubkey === '') { + if (!pubkey && this.pubkey === "") { const user = await this.ndk?.signer?.user(); - this.pubkey = user?.hexpubkey() || ''; + this.pubkey = user?.hexpubkey() || ""; } if (!this.created_at) this.created_at = Math.floor(Date.now() / 1000); const nostrEvent = this.rawEvent(); - const {content, tags} = this.generateTags(); + const { content, tags } = this.generateTags(); nostrEvent.content = content || ""; nostrEvent.tags = tags; @@ -133,7 +132,7 @@ export default class NDKEvent extends EventEmitter { this.sig = await _signer!.sign(nostrEvent); } - public async publish(relaySet?: NDKRelaySet) : Promise { + public async publish(relaySet?: NDKRelaySet): Promise { if (!this.sig) await this.sign(); return this.ndk?.publish(this, relaySet); @@ -149,11 +148,11 @@ export default class NDKEvent extends EventEmitter { // if this is a parameterized replaceable event, check if there's a d tag, if not, generate it if (this.kind && this.kind >= 30000 && this.kind <= 40000) { - const dTag = this.getMatchingTags('d')[0]; + const dTag = this.getMatchingTags("d")[0]; // generate a string of 32 random bytes if (!dTag) { - const str = [...Array(16)].map(() => Math.random().toString(36)[2]).join(''); - tags.push(['d', str]); + const str = [...Array(16)].map(() => Math.random().toString(36)[2]).join(""); + tags.push(["d", str]); } } @@ -165,13 +164,13 @@ export default class NDKEvent extends EventEmitter { */ replaceableDTag() { if (this.kind && this.kind >= 30000 && this.kind <= 40000) { - const dTag = this.getMatchingTags('d')[0]; - const dTagId = dTag ? dTag[1] : ''; + const dTag = this.getMatchingTags("d")[0]; + const dTagId = dTag ? dTag[1] : ""; return dTagId; } - throw new Error('Event is not a parameterized replaceable event'); + throw new Error("Event is not a parameterized replaceable event"); } /** @@ -213,14 +212,14 @@ export default class NDKEvent extends EventEmitter { * @param comment A comment to add to the zap request * @param extraTags Extra tags to add to the zap request */ - async zap(amount: number, comment?: string, extraTags?: NDKTag[]): Promise { - if (!this.ndk) throw new Error('No NDK instance found'); + async zap(amount: number, comment?: string, extraTags?: NDKTag[]): Promise { + if (!this.ndk) throw new Error("No NDK instance found"); this.ndk.assertSigner(); const zap = new Zap({ ndk: this.ndk, - zappedEvent: this, + zappedEvent: this }); const paymentRequest = await zap.createZapRequest(amount, comment, extraTags); diff --git a/src/events/kind.ts b/src/events/kind.ts index c0cab649..03fa5469 100644 --- a/src/events/kind.ts +++ b/src/events/kind.ts @@ -1,4 +1,4 @@ -import NDKEvent from './index.js'; +import NDKEvent from "./index.js"; export declare enum NDKKind { Metadata = 0, @@ -32,17 +32,11 @@ export declare enum NDKKind { } export function isReplaceable(this: NDKEvent): boolean { - if (this.kind === undefined) throw new Error('Kind not set'); - return ( - this.kind >= 10000 && - this.kind <= 30000 - ); + if (this.kind === undefined) throw new Error("Kind not set"); + return this.kind >= 10000 && this.kind <= 30000; } export function isParamReplaceable(this: NDKEvent): boolean { - if (this.kind === undefined) throw new Error('Kind not set'); - return ( - this.kind >= 30000 && - this.kind <= 40000 - ); + if (this.kind === undefined) throw new Error("Kind not set"); + return this.kind >= 30000 && this.kind <= 40000; } diff --git a/src/events/nip04.ts b/src/events/nip04.ts index cc3c0f21..d18b7c26 100644 --- a/src/events/nip04.ts +++ b/src/events/nip04.ts @@ -1,11 +1,11 @@ -import NDKEvent from '.'; -import { NDKSigner } from '../signers'; -import NDKUser from '../user'; +import NDKEvent from "."; +import { NDKSigner } from "../signers"; +import NDKUser from "../user"; export async function encrypt(this: NDKEvent, recipient: NDKUser, signer?: NDKSigner) { if (!signer) { if (!this.ndk) { - throw new Error('No signer available'); + throw new Error("No signer available"); } await this.ndk.assertSigner(); @@ -19,7 +19,7 @@ export async function encrypt(this: NDKEvent, recipient: NDKUser, signer?: NDKSi export async function decrypt(this: NDKEvent, sender: NDKUser, signer?: NDKSigner) { if (!signer) { if (!this.ndk) { - throw new Error('No signer available'); + throw new Error("No signer available"); } await this.ndk.assertSigner(); diff --git a/src/events/nip19.ts b/src/events/nip19.ts index 398fee05..96a7de78 100644 --- a/src/events/nip19.ts +++ b/src/events/nip19.ts @@ -1,5 +1,5 @@ -import { nip19 } from 'nostr-tools'; -import NDKEvent from '.'; +import { nip19 } from "nostr-tools"; +import NDKEvent from "."; export function encode(this: NDKEvent) { if (this.isParamReplaceable()) { diff --git a/src/index.ts b/src/index.ts index d0b782a6..2edfd7b5 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,37 +1,34 @@ -import NDKEvent from './events/index.js'; -import {NDKPool} from './relay/pool/index.js'; -import type {NDKSigner} from './signers/index.js'; -import NDKUser, {NDKUserParams} from './user/index.js'; -import {NDKUserProfile} from './user/profile.js'; -import {NDKFilter, NDKFilterOptions, NDKSubscription, NDKSubscriptionOptions} from './subscription/index.js'; -import { NDKCacheAdapter } from './cache/index.js'; -import { calculateRelaySetFromEvent } from './relay/sets/calculate.js'; -import dedupEvent from './events/dedup.js'; -import EventEmitter from 'eventemitter3'; -import debug from 'debug'; -import { NDKRelay } from './relay/index.js'; -import { NDKRelaySet } from './relay/sets/index.js'; - -export { - NDKEvent, - NDKUser, +import debug from "debug"; +import EventEmitter from "eventemitter3"; +import { NDKCacheAdapter } from "./cache/index.js"; +import dedupEvent from "./events/dedup.js"; +import NDKEvent from "./events/index.js"; +import { NDKPool } from "./relay/pool/index.js"; +import { calculateRelaySetFromEvent } from "./relay/sets/calculate.js"; +import { NDKRelaySet } from "./relay/sets/index.js"; +import type { NDKSigner } from "./signers/index.js"; +import { NDKFilter, - NDKUserProfile, - NDKCacheAdapter, -}; -export * from './events/index.js'; -export * from './signers/index.js'; -export * from './user/profile.js'; -export * from './subscription/index.js'; -export * from './relay/index.js'; -export * from './relay/sets/index.js'; -export * from './signers/index.js'; -export * from './signers/private-key/index.js'; -export * from './signers/nip07/index.js'; -export * from './signers/nip46/index.js'; -export * from './signers/nip46/backend/index.js'; -export {NDKKind} from './events/kind.js'; -export {NDKZapInvoice, zapInvoiceFromEvent} from './zap/invoice.js'; + NDKFilterOptions, + NDKSubscription, + NDKSubscriptionOptions +} from "./subscription/index.js"; +import NDKUser, { NDKUserParams } from "./user/index.js"; +import { NDKUserProfile } from "./user/profile.js"; + +export * from "./events/index.js"; +export { NDKKind } from "./events/kind.js"; +export * from "./relay/index.js"; +export * from "./relay/sets/index.js"; +export * from "./signers/index.js"; +export * from "./signers/nip07/index.js"; +export * from "./signers/nip46/backend/index.js"; +export * from "./signers/nip46/index.js"; +export * from "./signers/private-key/index.js"; +export * from "./subscription/index.js"; +export * from "./user/profile.js"; +export { NDKZapInvoice, zapInvoiceFromEvent } from "./zap/invoice.js"; +export { NDKEvent, NDKUser, NDKFilter, NDKUserProfile, NDKCacheAdapter }; export interface NDKConstructorParams { explicitRelayUrls?: string[]; @@ -57,8 +54,8 @@ export default class NDK extends EventEmitter { public constructor(opts: NDKConstructorParams = {}) { super(); - this.debug = opts.debug || debug('ndk'); - this.pool = new NDKPool(opts.explicitRelayUrls||[], this); + this.debug = opts.debug || debug("ndk"); + this.pool = new NDKPool(opts.explicitRelayUrls || [], this); this.signer = opts.signer; this.cacheAdapter = opts.cacheAdapter; this.delayedSubscriptions = new Map(); @@ -73,7 +70,7 @@ export default class NDK extends EventEmitter { * If the timeout is reached, the connection will be continued to be established in the background. */ public async connect(timeoutMs?: number): Promise { - this.debug('Connecting to relays', {timeoutMs}); + this.debug("Connecting to relays", { timeoutMs }); return this.pool.connect(timeoutMs); } @@ -114,10 +111,7 @@ export default class NDK extends EventEmitter { * @param event event to publish * @returns */ - public async publish( - event: NDKEvent, - relaySet?: NDKRelaySet - ): Promise { + public async publish(event: NDKEvent, relaySet?: NDKRelaySet): Promise { if (!relaySet) { // If we have a devWriteRelaySet, use it to publish all events relaySet = this.devWriteRelaySet || calculateRelaySetFromEvent(this, event); @@ -130,9 +124,9 @@ export default class NDK extends EventEmitter { * Fetch a single event */ public async fetchEvent(filter: NDKFilter, opts: NDKFilterOptions = {}): Promise { - return new Promise(resolve => { - const s = this.subscribe(filter, {...opts, closeOnEose: true}); - s.on('event', event => { + return new Promise((resolve) => { + const s = this.subscribe(filter, { ...opts, closeOnEose: true }); + s.on("event", (event) => { event.ndk = this; resolve(event); }); @@ -142,13 +136,16 @@ export default class NDK extends EventEmitter { /** * Fetch events */ - public async fetchEvents(filter: NDKFilter, opts: NDKFilterOptions = {}): Promise> { - return new Promise(resolve => { + public async fetchEvents( + filter: NDKFilter, + opts: NDKFilterOptions = {} + ): Promise> { + return new Promise((resolve) => { const events: Map = new Map(); - const relaySetSubscription = this.subscribe(filter, {...opts, closeOnEose: true}); + const relaySetSubscription = this.subscribe(filter, { ...opts, closeOnEose: true }); - relaySetSubscription.on('event', (event: NDKEvent) => { + relaySetSubscription.on("event", (event: NDKEvent) => { const existingEvent = events.get(event.tagId()); if (existingEvent) { event = dedupEvent(existingEvent, event); @@ -157,7 +154,7 @@ export default class NDK extends EventEmitter { event.ndk = this; events.set(event.tagId(), event); }); - relaySetSubscription.on('eose', () => { + relaySetSubscription.on("eose", () => { resolve(new Set(events.values())); }); }); @@ -168,8 +165,8 @@ export default class NDK extends EventEmitter { */ public async assertSigner() { if (!this.signer) { - this.emit('signerRequired'); - throw new Error('Signer required'); + this.emit("signerRequired"); + throw new Error("Signer required"); } } } diff --git a/src/light-bolt11-decoder.d.ts b/src/light-bolt11-decoder.d.ts index 522c2b57..34a56e2f 100644 --- a/src/light-bolt11-decoder.d.ts +++ b/src/light-bolt11-decoder.d.ts @@ -1,3 +1,3 @@ -declare module 'light-bolt11-decoder' { +declare module "light-bolt11-decoder" { export function decode(bolt11: string): any; -} \ No newline at end of file +} diff --git a/src/relay/index.ts b/src/relay/index.ts index 2d80b703..137f4aea 100644 --- a/src/relay/index.ts +++ b/src/relay/index.ts @@ -1,19 +1,19 @@ -import 'websocket-polyfill'; -import {relayInit, Sub} from 'nostr-tools'; -import type {Event as SignedEvent} from 'nostr-tools'; -import User from '../user/index.js'; -import {NDKRelayScore} from './score.js'; -import {NDKSubscription} from '../subscription/index.js'; -import NDKEvent, {NostrEvent} from '../events/index.js'; -import EventEmitter from 'eventemitter3'; +import EventEmitter from "eventemitter3"; +import type { Event as SignedEvent } from "nostr-tools"; +import { relayInit, Sub } from "nostr-tools"; +import "websocket-polyfill"; +import NDKEvent, { NostrEvent } from "../events/index.js"; +import { NDKSubscription } from "../subscription/index.js"; +import User from "../user/index.js"; +import { NDKRelayScore } from "./score.js"; export enum NDKRelayStatus { CONNECTING, CONNECTED, DISCONNECTING, DISCONNECTED, - RECONNECTING, -}; + RECONNECTING +} export interface NDKRelayConnectionStats { /** @@ -52,7 +52,7 @@ export class NDKRelay extends EventEmitter { private relay; private _status: NDKRelayStatus; private connectedAt?: number; - private _connectionStats: NDKRelayConnectionStats = {attempts: 0, success: 0, durations: []}; + private _connectionStats: NDKRelayConnectionStats = { attempts: 0, success: 0, durations: [] }; public complaining = false; /** @@ -67,15 +67,15 @@ export class NDKRelay extends EventEmitter { this.scores = new Map(); this._status = NDKRelayStatus.DISCONNECTED; - this.relay.on('connect', () => { + this.relay.on("connect", () => { this.updateConnectionStats.connected(); - this.emit('connect'); + this.emit("connect"); this._status = NDKRelayStatus.CONNECTED; }); - this.relay.on('disconnect', () => { + this.relay.on("disconnect", () => { this.updateConnectionStats.disconnected(); - this.emit('disconnect'); + this.emit("disconnect"); if (this._status === NDKRelayStatus.CONNECTED) { this._status = NDKRelayStatus.DISCONNECTED; @@ -84,7 +84,7 @@ export class NDKRelay extends EventEmitter { } }); - this.relay.on('notice', (notice: string) => this.handleNotice(notice)); + this.relay.on("notice", (notice: string) => this.handleNotice(notice)); } /** @@ -96,7 +96,9 @@ export class NDKRelay extends EventEmitter { const sum = durations.reduce((a, b) => a + b, 0); const avg = sum / durations.length; - const variance = durations.map((x) => Math.pow(x - avg, 2)).reduce((a, b) => a + b, 0) / durations.length; + const variance = + durations.map((x) => Math.pow(x - avg, 2)).reduce((a, b) => a + b, 0) / + durations.length; const stdDev = Math.sqrt(variance); const isFlapping = stdDev < 1000; @@ -108,7 +110,7 @@ export class NDKRelay extends EventEmitter { */ private handleReconnection() { if (this.isFlapping()) { - this.emit('flapping', this, this._connectionStats); + this.emit("flapping", this, this._connectionStats); } if (this.connectedAt && Date.now() - this.connectedAt < 5000) { @@ -130,7 +132,9 @@ export class NDKRelay extends EventEmitter { this.updateConnectionStats.attempt(); this._status = NDKRelayStatus.CONNECTING; await this.relay.connect(); - } catch (e) { /* empty */ } + } catch (e) { + /* empty */ + } } /** @@ -144,10 +148,10 @@ export class NDKRelay extends EventEmitter { async handleNotice(notice: string) { // This is a prototype; if the relay seems to be complaining // remove it from relay set selection for a minute. - if (notice.includes('oo many') || notice.includes('aximum')) { + if (notice.includes("oo many") || notice.includes("aximum")) { this.disconnect(); setTimeout(() => this.connect(), 2000); - console.log(this.relay.url, 'Relay complaining?', notice); + console.log(this.relay.url, "Relay complaining?", notice); // this.complaining = true; // setTimeout(() => { // this.complaining = false; @@ -155,30 +159,30 @@ export class NDKRelay extends EventEmitter { // }, 60000); } - this.emit('notice', this, notice); + this.emit("notice", this, notice); } /** * Subscribes to a subscription. */ public subscribe(subscription: NDKSubscription): Sub { - const {filter} = subscription; + const { filter } = subscription; const sub = this.relay.sub([filter], { - id: subscription.subId, + id: subscription.subId }); - sub.on('event', (event: NostrEvent) => { + sub.on("event", (event: NostrEvent) => { const e = new NDKEvent(undefined, event); subscription.eventReceived(e, this); }); - sub.on('eose', () => { + sub.on("eose", () => { subscription.eoseReceived(this); }); this.activeSubscriptions.add(subscription); - subscription.on('close', () => { + subscription.on("close", () => { this.activeSubscriptions.delete(subscription); }); @@ -214,7 +218,9 @@ export class NDKRelay extends EventEmitter { disconnected: () => { if (this._connectionStats.connectedAt) { - this._connectionStats.durations.push(Date.now() - this._connectionStats.connectedAt); + this._connectionStats.durations.push( + Date.now() - this._connectionStats.connectedAt + ); if (this._connectionStats.durations.length > 100) { this._connectionStats.durations.shift(); diff --git a/src/relay/pool/index.ts b/src/relay/pool/index.ts index a3ba7861..0c822af9 100644 --- a/src/relay/pool/index.ts +++ b/src/relay/pool/index.ts @@ -1,12 +1,12 @@ -import EventEmitter from 'eventemitter3'; -import {NDKRelay, NDKRelayStatus} from '../index.js'; -import NDK from '../../index.js'; +import EventEmitter from "eventemitter3"; +import NDK from "../../index.js"; +import { NDKRelay, NDKRelayStatus } from "../index.js"; export type NDKPoolStats = { - total: number, - connected: number, - disconnected: number, - connecting: number, + total: number; + connected: number; + disconnected: number; + connecting: number; }; /** @@ -24,24 +24,24 @@ export class NDKPool extends EventEmitter { public constructor(relayUrls: string[] = [], ndk: NDK) { super(); - this.debug = ndk.debug.extend('pool'); + this.debug = ndk.debug.extend("pool"); for (const relayUrl of relayUrls) { const relay = new NDKRelay(relayUrl); - relay.on('notice', (relay, notice) => this.emit('notice', relay, notice)); - relay.on('connect', () => this.handleRelayConnect(relayUrl)); - relay.on('disconnect', () => this.emit('relay:disconnect', relay)); - relay.on('flapping', () => this.handleFlapping(relay)); + relay.on("notice", (relay, notice) => this.emit("notice", relay, notice)); + relay.on("connect", () => this.handleRelayConnect(relayUrl)); + relay.on("disconnect", () => this.emit("relay:disconnect", relay)); + relay.on("flapping", () => this.handleFlapping(relay)); this.relays.set(relayUrl, relay); } } private handleRelayConnect(relayUrl: string) { this.debug(`Relay ${relayUrl} connected`); - this.emit('relay:connect', this.relays.get(relayUrl)); + this.emit("relay:connect", this.relays.get(relayUrl)); // if all relays are connected, emit a 'connect' event if (this.stats().connected === this.relays.size) { - this.emit('connect'); + this.emit("connect"); } } @@ -56,7 +56,11 @@ export class NDKPool extends EventEmitter { public async connect(timeoutMs?: number): Promise { const promises: Promise[] = []; - this.debug(`Connecting to ${this.relays.size} relays${timeoutMs ? `, timeout ${timeoutMs}...` : ''}`); + this.debug( + `Connecting to ${this.relays.size} relays${ + timeoutMs ? `, timeout ${timeoutMs}...` : "" + }` + ); for (const relay of this.relays.values()) { if (timeoutMs) { @@ -65,10 +69,7 @@ export class NDKPool extends EventEmitter { }); promises.push( - Promise.race([ - relay.connect(), - timeoutPromise, - ]).catch((e) => { + Promise.race([relay.connect(), timeoutPromise]).catch((e) => { this.debug(`Failed to connect to relay ${relay.url}: ${e}`); }) ); @@ -85,7 +86,7 @@ export class NDKPool extends EventEmitter { // TODO: Be smarter about this. this.relays.delete(relay.url); - this.emit('flapping', relay); + this.emit("flapping", relay); } public size(): number { @@ -101,7 +102,7 @@ export class NDKPool extends EventEmitter { total: 0, connected: 0, disconnected: 0, - connecting: 0, + connecting: 0 }; for (const relay of this.relays.values()) { diff --git a/src/relay/sets/calculate.ts b/src/relay/sets/calculate.ts index 69812124..59badf43 100644 --- a/src/relay/sets/calculate.ts +++ b/src/relay/sets/calculate.ts @@ -1,8 +1,8 @@ -import NDK from '../../index.js'; -import {NDKRelay} from '../index.js'; -import Event from '../../events/index.js'; -import {NDKRelaySet} from './index.js'; -import {NDKFilter} from '../../subscription/index.js'; +import Event from "../../events/index.js"; +import NDK from "../../index.js"; +import { NDKFilter } from "../../subscription/index.js"; +import { NDKRelay } from "../index.js"; +import { NDKRelaySet } from "./index.js"; /** * Creates a NDKRelaySet for the specified event. @@ -15,7 +15,7 @@ import {NDKFilter} from '../../subscription/index.js'; export function calculateRelaySetFromEvent(ndk: NDK, event: Event): NDKRelaySet { const relays: Set = new Set(); - ndk.pool?.relays.forEach(relay => relays.add(relay)); + ndk.pool?.relays.forEach((relay) => relays.add(relay)); return new NDKRelaySet(relays, ndk); } @@ -26,13 +26,10 @@ export function calculateRelaySetFromEvent(ndk: NDK, event: Event): NDKRelaySet * @param filter * @returns Promise */ -export function calculateRelaySetFromFilter( - ndk: NDK, - filter: NDKFilter -): NDKRelaySet { +export function calculateRelaySetFromFilter(ndk: NDK, filter: NDKFilter): NDKRelaySet { const relays: Set = new Set(); - ndk.pool?.relays.forEach(relay => { + ndk.pool?.relays.forEach((relay) => { if (!relay.complaining) { relays.add(relay); } else { @@ -54,7 +51,7 @@ export function calculateRelaySetsFromFilters( ): Map { const sets: Map = new Map(); - filters.forEach(filter => { + filters.forEach((filter) => { const set = calculateRelaySetFromFilter(ndk, filter); sets.set(filter, set); }); diff --git a/src/relay/sets/index.ts b/src/relay/sets/index.ts index 06fcf79e..959ffadc 100644 --- a/src/relay/sets/index.ts +++ b/src/relay/sets/index.ts @@ -1,9 +1,9 @@ -import {NDKRelay, NDKRelayStatus} from '../index.js'; -import NDKEvent from '../../events/index.js'; -import {NDKSubscription, NDKSubscriptionGroup} from '../../subscription/index.js'; -import * as secp256k1 from '@noble/secp256k1'; -import {sha256} from '@noble/hashes/sha256'; -import type NDK from '../../index.js'; +import { sha256 } from "@noble/hashes/sha256"; +import * as secp256k1 from "@noble/secp256k1"; +import NDKEvent from "../../events/index.js"; +import type NDK from "../../index.js"; +import { NDKSubscription, NDKSubscriptionGroup } from "../../subscription/index.js"; +import { NDKRelay, NDKRelayStatus } from "../index.js"; /** * A relay set is a group of relays. This grouping can be short-living, for a single @@ -20,7 +20,7 @@ export class NDKRelaySet { public constructor(relays: Set, ndk: NDK) { this.relays = relays; this.ndk = ndk; - this.debug = ndk.debug.extend('relayset'); + this.debug = ndk.debug.extend("relayset"); } /** @@ -54,8 +54,8 @@ export class NDKRelaySet { * Calculates an ID of this specific combination of relays. */ public getId() { - const urls = Array.from(this.relays).map(r => r.url); - const urlString = urls.sort().join(','); + const urls = Array.from(this.relays).map((r) => r.url); + const urlString = urls.sort().join(","); return secp256k1.utils.bytesToHex(sha256(urlString)); } @@ -110,7 +110,7 @@ export class NDKRelaySet { } private executeSubscription(subscription: NDKSubscription): NDKSubscription { - this.debug('subscribing', {filter: subscription.filter}); + this.debug("subscribing", { filter: subscription.filter }); for (const relay of this.relays) { if (relay.status === NDKRelayStatus.CONNECTED) { @@ -119,14 +119,17 @@ export class NDKRelaySet { } else { // If the relay is not connected, add a one-time listener to wait for the 'connected' event const connectedListener = () => { - this.debug('new relay coming online for active subscription', { relay: relay.url, filter: subscription.filter }); + this.debug("new relay coming online for active subscription", { + relay: relay.url, + filter: subscription.filter + }); this.subscribeOnRelay(relay, subscription); }; - relay.once('connect', connectedListener); + relay.once("connect", connectedListener); // Add a one-time listener to remove the connectedListener when the subscription stops - subscription.once('close', () => { - relay.removeListener('connect', connectedListener); + subscription.once("close", () => { + relay.removeListener("connect", connectedListener); }); } } @@ -135,7 +138,7 @@ export class NDKRelaySet { } public async publish(event: NDKEvent): Promise { - this.relays.forEach(async relay => { + this.relays.forEach(async (relay) => { try { // TODO: if relay is not connected, don't try to send, but rather attach // to `connected` event and send it at that moment diff --git a/src/signers/index.ts b/src/signers/index.ts index 4dad66bb..781dbae1 100644 --- a/src/signers/index.ts +++ b/src/signers/index.ts @@ -1,5 +1,5 @@ -import NDKUser from '../user'; -import type { NostrEvent } from '../events/index.js'; +import type { NostrEvent } from "../events/index.js"; +import NDKUser from "../user"; /** * Interface for NDK signers. diff --git a/src/signers/nip07/index.ts b/src/signers/nip07/index.ts index 8b9d9997..531ed258 100644 --- a/src/signers/nip07/index.ts +++ b/src/signers/nip07/index.ts @@ -1,6 +1,6 @@ -import { NDKSigner } from '../index.js'; -import type { NostrEvent } from '../../events/index.js'; -import NDKUser from '../../user/index.js'; +import type { NostrEvent } from "../../events/index.js"; +import NDKUser from "../../user/index.js"; +import { NDKSigner } from "../index.js"; /** * NDKNip07Signer implements the NDKSigner interface for signing Nostr events @@ -11,7 +11,7 @@ export class NDKNip07Signer implements NDKSigner { public constructor() { if (!window.nostr) { - throw new Error('NIP-07 extension not available'); + throw new Error("NIP-07 extension not available"); } } @@ -20,7 +20,7 @@ export class NDKNip07Signer implements NDKSigner { // If the user rejects granting access, error out if (!pubkey) { - throw new Error('User rejected access'); + throw new Error("User rejected access"); } return new NDKUser({ hexpubkey: pubkey }); @@ -46,7 +46,7 @@ export class NDKNip07Signer implements NDKSigner { */ public async sign(event: NostrEvent): Promise { if (!window.nostr) { - throw new Error('NIP-07 extension not available'); + throw new Error("NIP-07 extension not available"); } const signedEvent = await window.nostr.signEvent(event); @@ -55,7 +55,7 @@ export class NDKNip07Signer implements NDKSigner { public async encrypt(recipient: NDKUser, value: string): Promise { if (!window.nostr) { - throw new Error('NIP-07 extension not available'); + throw new Error("NIP-07 extension not available"); } const recipientHexPubKey = recipient.hexpubkey(); @@ -64,7 +64,7 @@ export class NDKNip07Signer implements NDKSigner { public async decrypt(sender: NDKUser, value: string): Promise { if (!window.nostr) { - throw new Error('NIP-07 extension not available'); + throw new Error("NIP-07 extension not available"); } const senderHexPubKey = sender.hexpubkey(); @@ -80,7 +80,7 @@ declare global { nip04: { encrypt(recipientHexPubKey: string, value: string): Promise; decrypt(senderHexPubKey: string, value: string): Promise; - } + }; }; } } diff --git a/src/signers/nip46/backend/connect.ts b/src/signers/nip46/backend/connect.ts index f76a1f15..578e38d5 100644 --- a/src/signers/nip46/backend/connect.ts +++ b/src/signers/nip46/backend/connect.ts @@ -1,19 +1,23 @@ -import { IEventHandlingStrategy,NDKNip46Backend } from "./index.js"; +import { IEventHandlingStrategy, NDKNip46Backend } from "./index.js"; export default class ConnectEventHandlingStrategy implements IEventHandlingStrategy { - async handle(backend: NDKNip46Backend, remotePubkey: string, params: string[]): Promise { - const [ pubkey ] = params; - const debug = backend.debug.extend('connect'); + async handle( + backend: NDKNip46Backend, + remotePubkey: string, + params: string[] + ): Promise { + const [pubkey] = params; + const debug = backend.debug.extend("connect"); debug(`connection request from ${pubkey}`); - if (await backend.pubkeyAllowed(pubkey, 'connect')) { + if (await backend.pubkeyAllowed(pubkey, "connect")) { debug(`connection request from ${pubkey} allowed`); - return 'ack'; + return "ack"; } else { debug(`connection request from ${pubkey} rejected`); } return undefined; } -} \ No newline at end of file +} diff --git a/src/signers/nip46/backend/describe.ts b/src/signers/nip46/backend/describe.ts index 646b9d0c..11ece62b 100644 --- a/src/signers/nip46/backend/describe.ts +++ b/src/signers/nip46/backend/describe.ts @@ -1,8 +1,12 @@ -import { IEventHandlingStrategy,NDKNip46Backend } from "./index.js"; +import { IEventHandlingStrategy, NDKNip46Backend } from "./index.js"; export default class DescribeHandlingStrategy implements IEventHandlingStrategy { - async handle(backend: NDKNip46Backend, remotePubkey: string, params: string[]): Promise { + async handle( + backend: NDKNip46Backend, + remotePubkey: string, + params: string[] + ): Promise { const keys = Object.keys(backend.handlers); return JSON.stringify(keys); } -} \ No newline at end of file +} diff --git a/src/signers/nip46/backend/get-public-key.ts b/src/signers/nip46/backend/get-public-key.ts index b94453bb..515d99be 100644 --- a/src/signers/nip46/backend/get-public-key.ts +++ b/src/signers/nip46/backend/get-public-key.ts @@ -1,7 +1,11 @@ -import { IEventHandlingStrategy,NDKNip46Backend } from "./index.js"; +import { IEventHandlingStrategy, NDKNip46Backend } from "./index.js"; export default class GetPublicKeyHandlingStrategy implements IEventHandlingStrategy { - async handle(backend: NDKNip46Backend, remotePubkey: string, params: string[]): Promise { + async handle( + backend: NDKNip46Backend, + remotePubkey: string, + params: string[] + ): Promise { return backend.localUser?.hexpubkey(); } -} \ No newline at end of file +} diff --git a/src/signers/nip46/backend/index.ts b/src/signers/nip46/backend/index.ts index ac39c3f1..a3adba8e 100644 --- a/src/signers/nip46/backend/index.ts +++ b/src/signers/nip46/backend/index.ts @@ -1,18 +1,22 @@ import NDK, { NDKEvent, NDKPrivateKeySigner, NDKUser } from "../../../index.js"; import { NDKNostrRpc } from "../rpc.js"; import ConnectEventHandlingStrategy from "./connect.js"; -import SignEventHandlingStrategy from "./sign-event.js"; -import GetPublicKeyHandlingStrategy from "./get-public-key.js"; import DescribeEventHandlingStrategy from "./describe.js"; +import GetPublicKeyHandlingStrategy from "./get-public-key.js"; +import SignEventHandlingStrategy from "./sign-event.js"; -export type Nip46PermitCallback = (pubkey: string, method: string, params?: any) => Promise; +export type Nip46PermitCallback = ( + pubkey: string, + method: string, + params?: any +) => Promise; export interface IEventHandlingStrategy { handle( backend: NDKNip46Backend, remotePubkey: string, params: string[] - ): Promise; + ): Promise; } /** @@ -37,7 +41,7 @@ export class NDKNip46Backend { public constructor(ndk: NDK, privateKey: string, permitCallback: Nip46PermitCallback) { this.ndk = ndk; this.signer = new NDKPrivateKeySigner(privateKey); - this.debug = ndk.debug.extend('nip46:backend'); + this.debug = ndk.debug.extend("nip46:backend"); this.rpc = new NDKNostrRpc(ndk, this.signer, this.debug); this.permitCallback = permitCallback; } @@ -49,19 +53,22 @@ export class NDKNip46Backend { public async start() { this.localUser = await this.signer.user(); - const sub = this.ndk.subscribe({ - kinds: [24133], - '#p': [ this.localUser.hexpubkey() ] - }, { closeOnEose: false }); + const sub = this.ndk.subscribe( + { + kinds: [24133], + "#p": [this.localUser.hexpubkey()] + }, + { closeOnEose: false } + ); - sub.on('event', (e) => this.handleIncomingEvent(e)); + sub.on("event", (e) => this.handleIncomingEvent(e)); } public handlers: { [method: string]: IEventHandlingStrategy } = { - 'connect': new ConnectEventHandlingStrategy(), - 'sign_event': new SignEventHandlingStrategy(), - 'get_public_key': new GetPublicKeyHandlingStrategy(), - 'describe': new DescribeEventHandlingStrategy(), + connect: new ConnectEventHandlingStrategy(), + sign_event: new SignEventHandlingStrategy(), + get_public_key: new GetPublicKeyHandlingStrategy(), + describe: new DescribeEventHandlingStrategy() }; /** @@ -74,35 +81,35 @@ export class NDKNip46Backend { } protected async handleIncomingEvent(event: NDKEvent) { - const { id, method, params } = await this.rpc.parseEvent(event) as any; + const { id, method, params } = (await this.rpc.parseEvent(event)) as any; const remotePubkey = event.pubkey; let response: string | undefined; - this.debug('incoming event', {id, method, params}); + this.debug("incoming event", { id, method, params }); const strategy = this.handlers[method]; if (strategy) { response = await strategy.handle(this, remotePubkey, params); } else { - this.debug('unsupported method', {method, params}); + this.debug("unsupported method", { method, params }); } if (response) { this.debug(`sending response to ${remotePubkey}`, response); this.rpc.sendResponse(id, remotePubkey, response); } - }; + } - public async signEvent(remotePubkey: string, params: string[]): Promise { - const [ eventString ] = params; + public async signEvent(remotePubkey: string, params: string[]): Promise { + const [eventString] = params; this.debug(`sign event request from ${remotePubkey}`); const event = new NDKEvent(this.ndk, JSON.parse(eventString)); - this.debug('event to sign', event.rawEvent()); + this.debug("event to sign", event.rawEvent()); - if (!await this.pubkeyAllowed(remotePubkey, 'sign_event', event)) { + if (!(await this.pubkeyAllowed(remotePubkey, "sign_event", event))) { this.debug(`sign event request from ${remotePubkey} rejected`); return undefined; } @@ -120,4 +127,4 @@ export class NDKNip46Backend { public async pubkeyAllowed(pubkey: string, method: string, params?: any): Promise { return this.permitCallback(pubkey, method, params); } -} \ No newline at end of file +} diff --git a/src/signers/nip46/backend/sign-event.ts b/src/signers/nip46/backend/sign-event.ts index 7a835263..ba561631 100644 --- a/src/signers/nip46/backend/sign-event.ts +++ b/src/signers/nip46/backend/sign-event.ts @@ -1,10 +1,14 @@ -import { IEventHandlingStrategy,NDKNip46Backend } from "./index.js"; +import { IEventHandlingStrategy, NDKNip46Backend } from "./index.js"; export default class SignEventHandlingStrategy implements IEventHandlingStrategy { - async handle(backend: NDKNip46Backend, remotePubkey: string, params: string[]): Promise { + async handle( + backend: NDKNip46Backend, + remotePubkey: string, + params: string[] + ): Promise { const event = await backend.signEvent(remotePubkey, params); if (!event) return undefined; return JSON.stringify(await event.toNostrEvent()); } -} \ No newline at end of file +} diff --git a/src/signers/nip46/index.ts b/src/signers/nip46/index.ts index 00603c3d..924718aa 100644 --- a/src/signers/nip46/index.ts +++ b/src/signers/nip46/index.ts @@ -1,4 +1,4 @@ -import NDK, { NDKPrivateKeySigner, NDKSigner, NDKUser, NostrEvent } from "../../index.js"; +import NDK, { NDKPrivateKeySigner, NDKSigner, NDKUser, NostrEvent } from "../../index.js"; import { NDKNostrRpc, NDKRpcResponse } from "./rpc.js"; /** @@ -21,7 +21,7 @@ export class NDKNip46Signer implements NDKSigner { public constructor(ndk: NDK, remotePubkey: string, localSigner?: NDKSigner) { this.ndk = ndk; this.remotePubkey = remotePubkey; - this.debug = ndk.debug.extend('nip46:signer'); + this.debug = ndk.debug.extend("nip46:signer"); if (!localSigner) { this.localSigner = NDKPrivateKeySigner.generate(); @@ -44,13 +44,13 @@ export class NDKNip46Signer implements NDKSigner { // Generates subscription, single subscription for the lifetime of our connection this.rpc.subscribe({ kinds: [24133], - '#p': [localUser.hexpubkey()], + "#p": [localUser.hexpubkey()] }); const promise: Promise = new Promise((resolve, reject) => { // Subscribe to response of this connection request this.rpc.once(`response-${connectId}`, async (response: NDKRpcResponse) => { - if (response.result === 'ack') { + if (response.result === "ack") { resolve(user); } else { reject(response.error); @@ -58,27 +58,32 @@ export class NDKNip46Signer implements NDKSigner { }); }); - await this.rpc.sendRequest(this.remotePubkey, 'connect', [localUser.hexpubkey()], connectId); + await this.rpc.sendRequest( + this.remotePubkey, + "connect", + [localUser.hexpubkey()], + connectId + ); return promise; } public async encrypt(recipient: NDKUser, value: string): Promise { - throw new Error('not implemented'); + throw new Error("not implemented"); } public async decrypt(sender: NDKUser, value: string): Promise { - throw new Error('not implemented'); + throw new Error("not implemented"); } public async sign(event: NostrEvent): Promise { const connectId = Math.random().toString(36).substring(7); - this.debug('asking for a signature'); + this.debug("asking for a signature"); const promise = new Promise((resolve, reject) => { this.rpc.once(`response-${connectId}`, async (response: NDKRpcResponse) => { - this.debug('got a response', response); + this.debug("got a response", response); if (!response.error) { const json = JSON.parse(response.result); resolve(json.sig); @@ -88,7 +93,12 @@ export class NDKNip46Signer implements NDKSigner { }); }); - await this.rpc.sendRequest(this.remotePubkey, 'sign_event', [JSON.stringify(event)], connectId); + await this.rpc.sendRequest( + this.remotePubkey, + "sign_event", + [JSON.stringify(event)], + connectId + ); return promise; } diff --git a/src/signers/nip46/rpc.ts b/src/signers/nip46/rpc.ts index d185c52f..d7739ce0 100644 --- a/src/signers/nip46/rpc.ts +++ b/src/signers/nip46/rpc.ts @@ -1,5 +1,5 @@ -import NDK, { NDKEvent, NDKFilter, NDKSigner, NostrEvent } from '../../index.js'; -import EventEmitter from 'eventemitter3'; +import EventEmitter from "eventemitter3"; +import NDK, { NDKEvent, NDKFilter, NDKSigner, NostrEvent } from "../../index.js"; export interface NDKRpcRequest { id: string; @@ -22,19 +22,19 @@ export class NDKNostrRpc extends EventEmitter { super(); this.ndk = ndk; this.signer = signer; - this.debug = debug.extend('rpc'); + this.debug = debug.extend("rpc"); } public subscribe(filter: NDKFilter) { const sub = this.ndk.subscribe(filter, { closeOnEose: false }); - sub.on('event', async (event: NDKEvent) => { - this.debug('received event', await event.toNostrEvent()); + sub.on("event", async (event: NDKEvent) => { + this.debug("received event", await event.toNostrEvent()); const parsedEvent = await this.parseEvent(event); - this.debug('parsed event', parsedEvent); + this.debug("parsed event", parsedEvent); if ((parsedEvent as NDKRpcRequest).method) { - this.emit('request', parsedEvent); + this.emit("request", parsedEvent); } else { this.emit(`response-${parsedEvent.id}`, parsedEvent); } @@ -53,26 +53,26 @@ export class NDKNostrRpc extends EventEmitter { } else { return { id, result, error }; } - }; + } public async sendResponse(id: string, remotePubkey: string, result: string, error?: string) { const res = { id, result } as NDKRpcResponse; - if (error) { res.error = error; } + if (error) { + res.error = error; + } const localUser = await this.signer.user(); const remoteUser = this.ndk.getUser({ hexpubkey: remotePubkey }); const event = new NDKEvent(this.ndk, { kind: 24133, content: JSON.stringify(res), - tags: [ - ['p', remotePubkey], - ], - pubkey: localUser.hexpubkey(), + tags: [["p", remotePubkey]], + pubkey: localUser.hexpubkey() } as NostrEvent); event.content = await this.signer.encrypt(remoteUser, event.content); await event.sign(this.signer); - this.debug('sending response', await event.toNostrEvent()); + this.debug("sending response", await event.toNostrEvent()); await this.ndk.publish(event); } @@ -86,16 +86,14 @@ export class NDKNostrRpc extends EventEmitter { const event = new NDKEvent(this.ndk, { kind: 24133, content: JSON.stringify(request), - tags: [ - ['p', remotePubkey], - ], - pubkey: localUser.hexpubkey(), + tags: [["p", remotePubkey]], + pubkey: localUser.hexpubkey() } as NostrEvent); event.content = await this.signer.encrypt(remoteUser, event.content); await event.sign(this.signer); - this.debug('sending request to', remotePubkey); + this.debug("sending request to", remotePubkey); await this.ndk.publish(event); } -} \ No newline at end of file +} diff --git a/src/signers/private-key/index.test.ts b/src/signers/private-key/index.test.ts index f4af114f..73cac51d 100644 --- a/src/signers/private-key/index.test.ts +++ b/src/signers/private-key/index.test.ts @@ -1,39 +1,41 @@ -import {NDKPrivateKeySigner} from './index'; -import { NostrEvent } from '../../events/index'; -import User from '../../user'; +import { NostrEvent } from "../../events/index"; +import User from "../../user"; +import { NDKPrivateKeySigner } from "./index"; -describe('NDKPrivateKeySigner', () => { - it('generates a new NDKPrivateKeySigner instance with a private key', () => { +describe("NDKPrivateKeySigner", () => { + it("generates a new NDKPrivateKeySigner instance with a private key", () => { const signer = NDKPrivateKeySigner.generate(); expect(signer).toBeInstanceOf(NDKPrivateKeySigner); expect(signer.privateKey).toBeDefined(); }); - it('creates a new NDKPrivateKeySigner instance with a provided private key', () => { - const privateKey = '00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff'; + it("creates a new NDKPrivateKeySigner instance with a provided private key", () => { + const privateKey = "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff"; const signer = new NDKPrivateKeySigner(privateKey); expect(signer).toBeInstanceOf(NDKPrivateKeySigner); expect(signer.privateKey).toBe(privateKey); }); - it('returns a user instance with a public key corresponding to the private key', async () => { - const privateKey = 'e8eb7464168139c6ccb9111f768777f332fa1289dff11244ccfe89970ff776d4'; + it("returns a user instance with a public key corresponding to the private key", async () => { + const privateKey = "e8eb7464168139c6ccb9111f768777f332fa1289dff11244ccfe89970ff776d4"; const signer = new NDKPrivateKeySigner(privateKey); const user = await signer.user(); expect(user).toBeInstanceOf(User); - expect(user.hexpubkey()).toBe('07f61c41b44a923952db82e6e7bcd184b059fe087f58f9d9a918da391f38d503'); + expect(user.hexpubkey()).toBe( + "07f61c41b44a923952db82e6e7bcd184b059fe087f58f9d9a918da391f38d503" + ); }); - it('signs a NostrEvent with the private key', async () => { - const privateKey = '00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff'; + it("signs a NostrEvent with the private key", async () => { + const privateKey = "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff"; const signer = new NDKPrivateKeySigner(privateKey); const event: NostrEvent = { - pubkey: '07f61c41b44a923952db82e6e7bcd184b059fe087f58f9d9a918da391f38d503', + pubkey: "07f61c41b44a923952db82e6e7bcd184b059fe087f58f9d9a918da391f38d503", created_at: Math.floor(Date.now() / 1000), tags: [], - content: 'Test content', - kind: 1, + content: "Test content", + kind: 1 }; const signature = await signer.sign(event); diff --git a/src/signers/private-key/index.ts b/src/signers/private-key/index.ts index 06ba29ab..5ffa07d1 100644 --- a/src/signers/private-key/index.ts +++ b/src/signers/private-key/index.ts @@ -1,8 +1,8 @@ -import { signEvent, generatePrivateKey, getPublicKey, nip04 } from 'nostr-tools'; -import type { UnsignedEvent } from 'nostr-tools'; -import type { NostrEvent } from '../../events/index.js'; -import { NDKSigner } from '../index.js'; -import NDKUser from '../../user'; +import type { UnsignedEvent } from "nostr-tools"; +import { generatePrivateKey, getPublicKey, nip04, signEvent } from "nostr-tools"; +import type { NostrEvent } from "../../events/index.js"; +import NDKUser from "../../user"; +import { NDKSigner } from "../index.js"; export class NDKPrivateKeySigner implements NDKSigner { private _user: NDKUser | undefined; @@ -22,7 +22,7 @@ export class NDKPrivateKeySigner implements NDKSigner { public async blockUntilReady(): Promise { if (!this._user) { - throw new Error('NDKUser not initialized'); + throw new Error("NDKUser not initialized"); } return this._user; } @@ -34,7 +34,7 @@ export class NDKPrivateKeySigner implements NDKSigner { public async sign(event: NostrEvent): Promise { if (!this.privateKey) { - throw Error('Attempted to sign without a private key'); + throw Error("Attempted to sign without a private key"); } return signEvent(event as UnsignedEvent, this.privateKey); @@ -42,7 +42,7 @@ export class NDKPrivateKeySigner implements NDKSigner { public async encrypt(recipient: NDKUser, value: string): Promise { if (!this.privateKey) { - throw Error('Attempted to encrypt without a private key'); + throw Error("Attempted to encrypt without a private key"); } const recipientHexPubKey = recipient.hexpubkey(); @@ -51,10 +51,10 @@ export class NDKPrivateKeySigner implements NDKSigner { public async decrypt(sender: NDKUser, value: string): Promise { if (!this.privateKey) { - throw Error('Attempted to decrypt without a private key'); + throw Error("Attempted to decrypt without a private key"); } const senderHexPubKey = sender.hexpubkey(); return await nip04.decrypt(this.privateKey, senderHexPubKey, value); } -} \ No newline at end of file +} diff --git a/src/subscription/index.ts b/src/subscription/index.ts index c88d0df5..e0bf517e 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -1,11 +1,10 @@ -import NDK from '../index.js'; -import {Filter as NostrFilter, Sub, matchFilter} from 'nostr-tools'; -import EventEmitter from 'eventemitter3'; -import {NDKRelay} from '../relay'; -import {NDKRelaySet} from '../relay/sets/index.js'; -import {NDKEventId} from '../events/index.js'; -import NDKEvent from '../events/index.js'; -import { calculateRelaySetFromFilter } from '../relay/sets/calculate'; +import EventEmitter from "eventemitter3"; +import { Filter as NostrFilter, matchFilter, Sub } from "nostr-tools"; +import NDKEvent, { NDKEventId } from "../events/index.js"; +import NDK from "../index.js"; +import { NDKRelay } from "../relay"; +import { calculateRelaySetFromFilter } from "../relay/sets/calculate"; +import { NDKRelaySet } from "../relay/sets/index.js"; export type NDKFilter = NostrFilter; @@ -15,16 +14,16 @@ export interface NDKFilterOptions { export enum NDKSubscriptionCacheUsage { // Only use cache, don't subscribe to relays - ONLY_CACHE = 'ONLY_CACHE', + ONLY_CACHE = "ONLY_CACHE", // Use cache, if no matches, use relays - CACHE_FIRST = 'CACHE_FIRST', + CACHE_FIRST = "CACHE_FIRST", // Use cache in addition to relays - PARALLEL = 'PARALLEL', + PARALLEL = "PARALLEL", // Skip cache, don't query it - ONLY_RELAY = 'ONLY_RELAY', + ONLY_RELAY = "ONLY_RELAY" } export interface NDKSubscriptionOptions { @@ -51,7 +50,7 @@ export const defaultOpts: NDKSubscriptionOptions = { closeOnEose: true, cacheUsage: NDKSubscriptionCacheUsage.CACHE_FIRST, groupable: true, - groupableDelay: 100, + groupableDelay: 100 }; /** @@ -97,17 +96,18 @@ export class NDKSubscription extends EventEmitter { this.subId = subId || Math.floor(Math.random() * 9999991000).toString(); // TODO: use UUID this.filter = filter; this.relaySet = relaySet; - this.opts = { ...defaultOpts, ...(opts||{}) }; + this.opts = { ...defaultOpts, ...(opts || {}) }; this.relaySubscriptions = new Map(); - this.debug = ndk.debug.extend('subscription'); + this.debug = ndk.debug.extend("subscription"); // validate that the caller is not expecting a persistent // subscription while using an option that will only hit the cache - if (this.opts.cacheUsage === NDKSubscriptionCacheUsage.ONLY_CACHE && !this.opts.closeOnEose) { - throw new Error( - 'Cannot use cache-only options with a persistent subscription' - ); + if ( + this.opts.cacheUsage === NDKSubscriptionCacheUsage.ONLY_CACHE && + !this.opts.closeOnEose + ) { + throw new Error("Cannot use cache-only options with a persistent subscription"); } } @@ -122,13 +122,15 @@ export class NDKSubscription extends EventEmitter { } // Check if there is a kind and no time-based filters - const hasKind = (this.filter.kinds?.length||0) > 0; - const noTimeConstraints = (!this.filter.since && !this.filter.until); + const hasKind = (this.filter.kinds?.length || 0) > 0; + const noTimeConstraints = !this.filter.since && !this.filter.until; const noLimit = !this.filter.limit; if (hasKind && noTimeConstraints && noLimit) { - let id = this.filter.kinds!.join(','); - const keys = Object.keys(this.filter||{}).sort().join('-'); + let id = this.filter.kinds!.join(","); + const keys = Object.keys(this.filter || {}) + .sort() + .join("-"); id += `-${keys}`; return id; @@ -138,15 +140,11 @@ export class NDKSubscription extends EventEmitter { } private shouldQueryCache(): boolean { - return ( - this.opts?.cacheUsage !== NDKSubscriptionCacheUsage.ONLY_RELAY - ); + return this.opts?.cacheUsage !== NDKSubscriptionCacheUsage.ONLY_RELAY; } private shouldQueryRelays(): boolean { - return ( - this.opts?.cacheUsage !== NDKSubscriptionCacheUsage.ONLY_CACHE - ); + return this.opts?.cacheUsage !== NDKSubscriptionCacheUsage.ONLY_CACHE; } /** @@ -159,20 +157,19 @@ export class NDKSubscription extends EventEmitter { if (this.shouldQueryCache()) { cachePromise = this.startWithCache(); - const shouldWaitForCache = ( + const shouldWaitForCache = this.ndk.cacheAdapter?.locking && this.shouldQueryRelays() && - this.opts?.cacheUsage !== NDKSubscriptionCacheUsage.PARALLEL - ); + this.opts?.cacheUsage !== NDKSubscriptionCacheUsage.PARALLEL; if (shouldWaitForCache) { - this.debug('waiting for cache to finish'); + this.debug("waiting for cache to finish"); await cachePromise; // if the cache has a hit, return early if (this.eventFirstSeen.size > 0) { - this.debug('cache hit, skipping relay query'); - this.emit('eose', this); + this.debug("cache hit, skipping relay query"); + this.emit("eose", this); return; } } @@ -188,12 +185,12 @@ export class NDKSubscription extends EventEmitter { public stop(): void { this.relaySubscriptions.forEach((sub) => sub.unsub()); this.relaySubscriptions.clear(); - this.emit('close', this); + this.emit("close", this); } private async startWithCache(): Promise { if (this.ndk.cacheAdapter?.query) { - this.debug('querying cache'); + this.debug("querying cache"); const promise = this.ndk.cacheAdapter.query(this); if (this.ndk.cacheAdapter.locking) { @@ -208,7 +205,7 @@ export class NDKSubscription extends EventEmitter { } if (this.relaySet) { - this.debug('querying relays'); + this.debug("querying relays"); this.relaySet.subscribe(this); } } @@ -230,7 +227,7 @@ export class NDKSubscription extends EventEmitter { const timeSinceFirstSeen = Date.now() - (this.eventFirstSeen.get(event.id) || 0); relay.scoreSlowerEvent(timeSinceFirstSeen); - this.emit('event:dup', event, relay, timeSinceFirstSeen, this); + this.emit("event:dup", event, relay, timeSinceFirstSeen, this); return; } @@ -244,7 +241,7 @@ export class NDKSubscription extends EventEmitter { this.eventFirstSeen.set(`${event.id}`, 0); } - this.emit('event', event, relay, this); + this.emit("event", event, relay, this); } // EOSE handling @@ -258,7 +255,7 @@ export class NDKSubscription extends EventEmitter { // if this was the last relay that needed to EOSE, emit that this subscription is closed if (this.relaySubscriptions.size === 0) { - this.emit('close', this); + this.emit("close", this); } } @@ -267,14 +264,14 @@ export class NDKSubscription extends EventEmitter { const hasSeenAllEoses = this.eosesSeen.size === this.relaySet?.size(); if (hasSeenAllEoses) { - this.emit('eose'); + this.emit("eose"); } else { if (this.eoseTimeout) { clearTimeout(this.eoseTimeout); } this.eoseTimeout = setTimeout(() => { - this.emit('eose'); + this.emit("eose"); }, 500); } } @@ -288,37 +285,34 @@ export class NDKSubscription extends EventEmitter { export class NDKSubscriptionGroup extends NDKSubscription { private subscriptions: NDKSubscription[]; - constructor( - ndk: NDK, - subscriptions: NDKSubscription[] - ) { - const debug = ndk.debug.extend('subscription-group'); + constructor(ndk: NDK, subscriptions: NDKSubscription[]) { + const debug = ndk.debug.extend("subscription-group"); - const filters = mergeFilters(subscriptions.map(s => s.filter)); + const filters = mergeFilters(subscriptions.map((s) => s.filter)); super( ndk, filters, - subscriptions[0].opts, // TODO: This should be merged + subscriptions[0].opts, // TODO: This should be merged subscriptions[0].relaySet // TODO: This should be merged ); this.subscriptions = subscriptions; - debug('merged filters', { + debug("merged filters", { count: subscriptions.length, mergedFilters: this.filter }); // forward events to the matching subscriptions - this.on('event', this.forwardEvent); - this.on('event:dup', this.forwardEventDup); - this.on('eose', this.forwardEose); - this.on('close', this.forwardClose); + this.on("event", this.forwardEvent); + this.on("event:dup", this.forwardEventDup); + this.on("eose", this.forwardEose); + this.on("close", this.forwardClose); } private isEventForSubscription(event: NDKEvent, subscription: NDKSubscription): boolean { - const {filter} = subscription; + const { filter } = subscription; if (!filter) return false; @@ -351,7 +345,7 @@ export class NDKSubscriptionGroup extends NDKSubscription { continue; } - subscription.emit('event', event, relay, subscription); + subscription.emit("event", event, relay, subscription); } } @@ -361,19 +355,19 @@ export class NDKSubscriptionGroup extends NDKSubscription { continue; } - subscription.emit('event:dup', event, relay, timeSinceFirstSeen, subscription); + subscription.emit("event:dup", event, relay, timeSinceFirstSeen, subscription); } } private forwardEose() { for (const subscription of this.subscriptions) { - subscription.emit('eose', subscription); + subscription.emit("eose", subscription); } } private forwardClose() { for (const subscription of this.subscriptions) { - subscription.emit('close', subscription); + subscription.emit("close", subscription); } } } @@ -385,7 +379,7 @@ export class NDKSubscriptionGroup extends NDKSubscription { export function mergeFilters(filters: NDKFilter[]): NDKFilter { const result: any = {}; - filters.forEach(filter => { + filters.forEach((filter) => { Object.entries(filter).forEach(([key, value]) => { if (Array.isArray(value)) { if (result[key] === undefined) { diff --git a/src/user/follows.test.ts b/src/user/follows.test.ts index 20a595f4..7a8f43ff 100644 --- a/src/user/follows.test.ts +++ b/src/user/follows.test.ts @@ -1,31 +1,34 @@ -import NDK from '../index'; -import NDKUser from './index'; -import NDKEvent from '../events/index'; +import NDKEvent from "../events/index"; +import NDK from "../index"; +import NDKUser from "./index"; -jest.mock('../index.js', () => { +jest.mock("../index.js", () => { return { __esModule: true, default: jest.fn().mockImplementation(() => { return { - fetchEvents: jest.fn(), + fetchEvents: jest.fn() }; - }), + }) }; }); -describe('follows', () => { - it('skips tags on the contact list with invalid pubkeys', async () => { +describe("follows", () => { + it("skips tags on the contact list with invalid pubkeys", async () => { const ndk = new NDK(); - const user = new NDKUser({ hexpubkey: 'fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52' }); + const user = new NDKUser({ + hexpubkey: "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52" + }); user.ndk = ndk; - const followedHexpubkey = 'fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52'; + const followedHexpubkey = + "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52"; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion (user.ndk!.fetchEvents as jest.Mock).mockImplementation(() => { const e = new NDKEvent(ndk); - e.tags = [['p', 'invalid-pubkey']]; - e.tags = [['p', followedHexpubkey]]; + e.tags = [["p", "invalid-pubkey"]]; + e.tags = [["p", followedHexpubkey]]; return new Set([e]); }); diff --git a/src/user/follows.ts b/src/user/follows.ts index a0d26fef..0821ca4c 100644 --- a/src/user/follows.ts +++ b/src/user/follows.ts @@ -1,24 +1,26 @@ -import NDKUser from './index.js'; +import NDKUser from "./index.js"; export async function follows(this: NDKUser): Promise> { - if (!this.ndk) throw new Error('NDK not set'); + if (!this.ndk) throw new Error("NDK not set"); const contactListEvents = await this.ndk.fetchEvents({ kinds: [3], - authors: [this.hexpubkey()], + authors: [this.hexpubkey()] }); if (contactListEvents) { const contactList = new Set(); - contactListEvents.forEach(event => { + contactListEvents.forEach((event) => { event.tags.forEach((tag: string[]) => { - if (tag[0] === 'p') { + if (tag[0] === "p") { try { - const user = new NDKUser({hexpubkey: tag[1]}); + const user = new NDKUser({ hexpubkey: tag[1] }); user.ndk = this.ndk; contactList.add(user); - } catch (e) { /* empty */ } + } catch (e) { + /* empty */ + } } }); }); diff --git a/src/user/index.test.ts b/src/user/index.test.ts index 60129499..cc5fca2c 100644 --- a/src/user/index.test.ts +++ b/src/user/index.test.ts @@ -1,70 +1,78 @@ -import {nip05, nip19} from 'nostr-tools'; -import NDKUser, {NDKUserParams} from './index.js'; +import { nip19 } from "nostr-tools"; +import NDKUser, { NDKUserParams } from "./index.js"; -jest.mock('nostr-tools', () => ({ +jest.mock("nostr-tools", () => ({ nip05: { - queryProfile: jest.fn(), + queryProfile: jest.fn() }, nip19: { npubEncode: jest.fn(), - decode: jest.fn(), - }, + decode: jest.fn() + } })); -jest.mock('../index.js', () => ({ - fetchEvents: jest.fn(), +jest.mock("../index.js", () => ({ + fetchEvents: jest.fn() })); -describe('NDKUser', () => { +describe("NDKUser", () => { beforeEach(() => { jest.clearAllMocks(); }); - describe('constructor', () => { - it('sets npub from provided npub', () => { + describe("constructor", () => { + it("sets npub from provided npub", () => { const opts: NDKUserParams = { - npub: 'npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft', + npub: "npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft" }; const user = new NDKUser(opts); - expect(user.npub).toEqual('npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft'); + expect(user.npub).toEqual( + "npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft" + ); }); - it('sets npub from provided hexpubkey', () => { + it("sets npub from provided hexpubkey", () => { const opts: NDKUserParams = { - hexpubkey: 'fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52', + hexpubkey: "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52" }; - (nip19.npubEncode as jest.Mock).mockReturnValue('encoded_npub'); + (nip19.npubEncode as jest.Mock).mockReturnValue("encoded_npub"); const user = new NDKUser(opts); - expect(nip19.npubEncode).toHaveBeenCalledWith('fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52'); - expect(user.npub).toEqual('encoded_npub'); + expect(nip19.npubEncode).toHaveBeenCalledWith( + "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52" + ); + expect(user.npub).toEqual("encoded_npub"); }); - it('sets relayUrls from provided relayUrls', () => { + it("sets relayUrls from provided relayUrls", () => { const opts: NDKUserParams = { - relayUrls: ['url1', 'url2'], + relayUrls: ["url1", "url2"] }; const user = new NDKUser(opts); - expect(user.relayUrls).toEqual(['url1', 'url2']); + expect(user.relayUrls).toEqual(["url1", "url2"]); }); }); - describe('hexpubkey', () => { - it('returns the decoded hexpubkey', () => { - const user = new NDKUser({npub: 'npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft'}); + describe("hexpubkey", () => { + it("returns the decoded hexpubkey", () => { + const user = new NDKUser({ + npub: "npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft" + }); - (nip19.decode as jest.Mock).mockReturnValue({data: 'decoded_hexpubkey'}); + (nip19.decode as jest.Mock).mockReturnValue({ data: "decoded_hexpubkey" }); const hexpubkey = user.hexpubkey(); - expect(nip19.decode).toHaveBeenCalledWith('npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft'); - expect(hexpubkey).toEqual('decoded_hexpubkey'); + expect(nip19.decode).toHaveBeenCalledWith( + "npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft" + ); + expect(hexpubkey).toEqual("decoded_hexpubkey"); }); }); -}); \ No newline at end of file +}); diff --git a/src/user/index.ts b/src/user/index.ts index 9464fc22..45dd7887 100644 --- a/src/user/index.ts +++ b/src/user/index.ts @@ -1,9 +1,9 @@ -import {nip05, nip19} from 'nostr-tools'; -import Event from '../events/index.js'; -import {NDKUserProfile, mergeEvent} from './profile'; -import NDK from '../index.js'; -import { follows } from './follows.js'; -import { NDKFilterOptions } from '../subscription/index.js'; +import { nip05, nip19 } from "nostr-tools"; +import Event from "../events/index.js"; +import NDK from "../index.js"; +import { NDKFilterOptions } from "../subscription/index.js"; +import { follows } from "./follows.js"; +import { mergeEvent, NDKUserProfile } from "./profile"; export interface NDKUserParams { npub?: string; @@ -18,7 +18,7 @@ export interface NDKUserParams { export default class NDKUser { public ndk: NDK | undefined; public profile?: NDKUserProfile; - readonly npub: string = ''; + readonly npub: string = ""; readonly relayUrls: string[] = []; public constructor(opts: NDKUserParams) { @@ -39,7 +39,7 @@ export default class NDKUser { if (profile) { return new NDKUser({ hexpubkey: profile.pubkey, - relayUrls: profile.relays, + relayUrls: profile.relays }); } } @@ -49,14 +49,17 @@ export default class NDKUser { } public async fetchProfile(opts?: NDKFilterOptions): Promise | null> { - if (!this.ndk) throw new Error('NDK not set'); + if (!this.ndk) throw new Error("NDK not set"); if (!this.profile) this.profile = {}; - const setMetadataEvents = await this.ndk.fetchEvents({ - kinds: [0], - authors: [this.hexpubkey()], - }, opts); + const setMetadataEvents = await this.ndk.fetchEvents( + { + kinds: [0], + authors: [this.hexpubkey()] + }, + opts + ); if (setMetadataEvents) { // sort setMetadataEvents by created_at in ascending order @@ -64,7 +67,7 @@ export default class NDKUser { (a, b) => (a.created_at as number) - (b.created_at as number) ); - sortedSetMetadataEvents.forEach(event => { + sortedSetMetadataEvents.forEach((event) => { try { this.profile = mergeEvent(event, this.profile!); } catch (e) {} @@ -80,11 +83,11 @@ export default class NDKUser { public follows = follows.bind(this); public async relayList(): Promise> { - if (!this.ndk) throw new Error('NDK not set'); + if (!this.ndk) throw new Error("NDK not set"); const relayListEvents = await this.ndk.fetchEvents({ kinds: [10002], - authors: [this.hexpubkey()], + authors: [this.hexpubkey()] }); if (relayListEvents) { diff --git a/src/user/profile.ts b/src/user/profile.ts index 55b9da1b..772c10e7 100644 --- a/src/user/profile.ts +++ b/src/user/profile.ts @@ -1,4 +1,4 @@ -import NDKEvent from '../events/index.js'; +import NDKEvent from "../events/index.js"; export interface NDKUserProfile { name?: string; diff --git a/src/zap/index.ts b/src/zap/index.ts index bbec584a..863b8ebe 100644 --- a/src/zap/index.ts +++ b/src/zap/index.ts @@ -1,17 +1,19 @@ -import NDK from "../index.js"; -import EventEmitter from 'eventemitter3'; +import { bech32 } from "@scure/base"; +import EventEmitter from "eventemitter3"; +import { nip57 } from "nostr-tools"; +import type { NostrEvent } from "../events/index.js"; import NDKEvent, { NDKTag } from "../events/index.js"; -import type {NostrEvent} from "../events/index.js"; +import NDK from "../index.js"; import User from "../user/index.js"; -import {nip57} from "nostr-tools"; -import {bech32} from '@scure/base'; interface ZapConstructorParams { ndk: NDK; zappedEvent?: NDKEvent; zappedUser?: User; } -type ZapConstructorParamsRequired = Required> & Pick & ZapConstructorParams; +type ZapConstructorParamsRequired = Required> & + Pick & + ZapConstructorParams; export default class Zap extends EventEmitter { public ndk?: NDK; @@ -23,22 +25,27 @@ export default class Zap extends EventEmitter { this.ndk = args.ndk; this.zappedEvent = args.zappedEvent; - this.zappedUser = args.zappedUser || this.ndk.getUser({hexpubkey: this.zappedEvent.pubkey}); + this.zappedUser = + args.zappedUser || this.ndk.getUser({ hexpubkey: this.zappedEvent.pubkey }); } - public async getZapEndpoint(): Promise { + public async getZapEndpoint(): Promise { let lud06: string | undefined; let lud16: string | undefined; let zapEndpoint: string | undefined; let zapEndpointCallback: string | undefined; if (this.zappedEvent) { - const zapTag = (await this.zappedEvent.getMatchingTags('zap'))[0]; + const zapTag = (await this.zappedEvent.getMatchingTags("zap"))[0]; if (zapTag) { switch (zapTag[2]) { - case "lud06": lud06 = zapTag[1]; break; - case 'lud16': lud16 = zapTag[1]; break; + case "lud06": + lud06 = zapTag[1]; + break; + case "lud16": + lud16 = zapTag[1]; + break; default: throw new Error(`Unknown zap tag ${zapTag}`); } @@ -56,17 +63,17 @@ export default class Zap extends EventEmitter { } if (lud16) { - const [name, domain] = lud16.split('@'); + const [name, domain] = lud16.split("@"); zapEndpoint = `https://${domain}/.well-known/lnurlp/${name}`; } else if (lud06) { - const {words} = bech32.decode(lud06, 1000); + const { words } = bech32.decode(lud06, 1000); const data = bech32.fromWords(words); - const utf8Decoder = new TextDecoder('utf-8'); + const utf8Decoder = new TextDecoder("utf-8"); zapEndpoint = utf8Decoder.decode(data); } if (!zapEndpoint) { - throw new Error('No zap endpoint found'); + throw new Error("No zap endpoint found"); } const response = await fetch(zapEndpoint); @@ -79,14 +86,18 @@ export default class Zap extends EventEmitter { return zapEndpointCallback; } - public async createZapRequest(amount: number, comment?: string, extraTags?: NDKTag[]): Promise { + public async createZapRequest( + amount: number, + comment?: string, + extraTags?: NDKTag[] + ): Promise { const zapEndpoint = await this.getZapEndpoint(); if (!zapEndpoint) { - throw new Error('No zap endpoint found'); + throw new Error("No zap endpoint found"); } - if (!this.zappedEvent) throw new Error('No zapped event found'); + if (!this.zappedEvent) throw new Error("No zapped event found"); const zapRequest = nip57.makeZapRequest({ profile: this.zappedUser.hexpubkey(), @@ -94,8 +105,15 @@ export default class Zap extends EventEmitter { // set the event to null since nostr-tools doesn't support nip-33 zaps event: null, amount, - comment: comment || '', - relays: ['wss://nos.lol', 'wss://relay.nostr.band', 'wss://relay.f7z.io', 'wss://relay.damus.io', 'wss://nostr.mom', 'wss://no.str.cr'], // TODO: fix this + comment: comment || "", + relays: [ + "wss://nos.lol", + "wss://relay.nostr.band", + "wss://relay.f7z.io", + "wss://relay.damus.io", + "wss://nostr.mom", + "wss://no.str.cr" + ] // TODO: fix this }); // add the event tag if it exists; this supports both 'e' and 'a' tags @@ -106,7 +124,7 @@ export default class Zap extends EventEmitter { } } - zapRequest.tags.push(['lnurl', zapEndpoint]); + zapRequest.tags.push(["lnurl", zapEndpoint]); const zapRequestEvent = new NDKEvent(this.ndk, zapRequest as NostrEvent); if (extraTags) { @@ -116,10 +134,12 @@ export default class Zap extends EventEmitter { await zapRequestEvent.sign(); const zapRequestNostrEvent = await zapRequestEvent.toNostrEvent(); - const response = await fetch(`${zapEndpoint}?` + new URLSearchParams({ - amount: amount.toString(), - nostr: JSON.stringify(zapRequestNostrEvent), - }) + const response = await fetch( + `${zapEndpoint}?` + + new URLSearchParams({ + amount: amount.toString(), + nostr: JSON.stringify(zapRequestNostrEvent) + }) ); const body = await response.json(); diff --git a/src/zap/invoice.ts b/src/zap/invoice.ts index 02648f21..73b045ba 100644 --- a/src/zap/invoice.ts +++ b/src/zap/invoice.ts @@ -1,5 +1,5 @@ -import NDKEvent, {type NDKEventId, type NostrEvent} from '../events/index.js'; -import {decode} from 'light-bolt11-decoder'; +import { decode } from "light-bolt11-decoder"; +import NDKEvent, { type NDKEventId, type NostrEvent } from "../events/index.js"; export interface NDKZapInvoice { id?: NDKEventId; @@ -12,8 +12,8 @@ export interface NDKZapInvoice { } export function zapInvoiceFromEvent(event: NDKEvent): NDKZapInvoice | null { - const description = event.getMatchingTags('description')[0]; - const bolt11 = event.getMatchingTags('bolt11')[0]; + const description = event.getMatchingTags("description")[0]; + const bolt11 = event.getMatchingTags("bolt11")[0]; let decodedInvoice; let zapRequest: NostrEvent; @@ -26,7 +26,9 @@ export function zapInvoiceFromEvent(event: NDKEvent): NDKZapInvoice | null { if (zapRequestPayload.startsWith("%")) { zapRequestPayload = decodeURIComponent(zapRequestPayload); } - if (zapRequestPayload === "") { return null; } + if (zapRequestPayload === "") { + return null; + } zapRequest = JSON.parse(zapRequestPayload); decodedInvoice = decode(bolt11[1]); @@ -34,19 +36,23 @@ export function zapInvoiceFromEvent(event: NDKEvent): NDKZapInvoice | null { return null; } - const amountSection = decodedInvoice.sections.find((s: any) => s.name === 'amount'); - if (!amountSection) { return null; } + const amountSection = decodedInvoice.sections.find((s: any) => s.name === "amount"); + if (!amountSection) { + return null; + } const amount = parseInt(amountSection.value) / 1000; - if (!amount) { return null; } + if (!amount) { + return null; + } const content = zapRequest.content; const sender = zapRequest.pubkey; - const recipientTag = event.getMatchingTags('p')[0]; + const recipientTag = event.getMatchingTags("p")[0]; const recipient = recipientTag[1]; - let zappedEvent = event.getMatchingTags('e')[0]; + let zappedEvent = event.getMatchingTags("e")[0]; if (!zappedEvent) { - zappedEvent = event.getMatchingTags('a')[0]; + zappedEvent = event.getMatchingTags("a")[0]; } const zappedEventId = zappedEvent ? zappedEvent[1] : undefined; @@ -61,7 +67,7 @@ export function zapInvoiceFromEvent(event: NDKEvent): NDKZapInvoice | null { zapped: recipient, zappedEvent: zappedEventId, amount, - comment: content, + comment: content }; return zapInvoice; diff --git a/tsconfig.json b/tsconfig.json index feb3821a..30df405a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,15 +1,15 @@ { - "compilerOptions": { - "module": "esnext", - "target": "esnext", - "lib": ["dom", "dom.iterable", "esnext"], - "declaration": true, - "strict": true, - "moduleResolution": "node", - "skipLibCheck": true, - "esModuleInterop": true, - "emitDeclarationOnly": true, - "outDir": "lib", - "rootDir": "." - } + "compilerOptions": { + "module": "esnext", + "target": "esnext", + "lib": ["dom", "dom.iterable", "esnext"], + "declaration": true, + "strict": true, + "moduleResolution": "node", + "skipLibCheck": true, + "esModuleInterop": true, + "emitDeclarationOnly": true, + "outDir": "lib", + "rootDir": "." + } } diff --git a/typedoc.json b/typedoc.json index 7532baeb..ed08adbf 100644 --- a/typedoc.json +++ b/typedoc.json @@ -8,4 +8,4 @@ "excludeExternals": true, "excludePrivate": true, "excludeProtected": true -} \ No newline at end of file +} From 38c744ccdad62ae243fa7d8102015b878f11ea6a Mon Sep 17 00:00:00 2001 From: Jeff Gardner <202880+erskingardner@users.noreply.github.com> Date: Wed, 17 May 2023 09:33:50 -0400 Subject: [PATCH 106/773] add isEphemeral method to Kind --- docs/classes/NDKRelay.md | 68 ++++++++++++++++++++-------------------- src/events/kind.ts | 9 ++++-- 2 files changed, 41 insertions(+), 36 deletions(-) diff --git a/docs/classes/NDKRelay.md b/docs/classes/NDKRelay.md index d977296b..48166a8e 100644 --- a/docs/classes/NDKRelay.md +++ b/docs/classes/NDKRelay.md @@ -26,36 +26,36 @@ NDKRelay#eose ## Hierarchy -- `EventEmitter` +- `EventEmitter` - ↳ **`NDKRelay`** + ↳ **`NDKRelay`** ## Table of contents ### Constructors -- [constructor](NDKRelay.md#constructor) +- [constructor](NDKRelay.md#constructor) ### Properties -- [activeSubscriptions](NDKRelay.md#activesubscriptions) -- [complaining](NDKRelay.md#complaining) -- [scores](NDKRelay.md#scores) -- [url](NDKRelay.md#url) +- [activeSubscriptions](NDKRelay.md#activesubscriptions) +- [complaining](NDKRelay.md#complaining) +- [scores](NDKRelay.md#scores) +- [url](NDKRelay.md#url) ### Accessors -- [connectionStats](NDKRelay.md#connectionstats) -- [status](NDKRelay.md#status) +- [connectionStats](NDKRelay.md#connectionstats) +- [status](NDKRelay.md#status) ### Methods -- [connect](NDKRelay.md#connect) -- [disconnect](NDKRelay.md#disconnect) -- [handleNotice](NDKRelay.md#handlenotice) -- [publish](NDKRelay.md#publish) -- [scoreSlowerEvent](NDKRelay.md#scoreslowerevent) -- [subscribe](NDKRelay.md#subscribe) +- [connect](NDKRelay.md#connect) +- [disconnect](NDKRelay.md#disconnect) +- [handleNotice](NDKRelay.md#handlenotice) +- [publish](NDKRelay.md#publish) +- [scoreSlowerEvent](NDKRelay.md#scoreslowerevent) +- [subscribe](NDKRelay.md#subscribe) ## Constructors @@ -65,8 +65,8 @@ NDKRelay#eose #### Parameters -| Name | Type | -| :------ | :------ | +| Name | Type | +| :---- | :------- | | `url` | `string` | #### Overrides @@ -89,7 +89,7 @@ Active subscriptions this relay is connected to [src/relay/index.ts:61](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L61) -___ +--- ### complaining @@ -99,7 +99,7 @@ ___ [src/relay/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L56) -___ +--- ### scores @@ -109,7 +109,7 @@ ___ [src/relay/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L51) -___ +--- ### url @@ -135,7 +135,7 @@ Returns the connection stats. [src/relay/index.ts:234](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L234) -___ +--- ### status @@ -165,7 +165,7 @@ Connects to the relay. [src/relay/index.ts:128](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L128) -___ +--- ### disconnect @@ -181,7 +181,7 @@ Disconnects from the relay. [src/relay/index.ts:139](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L139) -___ +--- ### handleNotice @@ -189,8 +189,8 @@ ___ #### Parameters -| Name | Type | -| :------ | :------ | +| Name | Type | +| :------- | :------- | | `notice` | `string` | #### Returns @@ -201,7 +201,7 @@ ___ [src/relay/index.ts:144](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L144) -___ +--- ### publish @@ -211,8 +211,8 @@ Publishes an event to the relay. #### Parameters -| Name | Type | -| :------ | :------ | +| Name | Type | +| :------ | :------------------------ | | `event` | [`NDKEvent`](NDKEvent.md) | #### Returns @@ -223,7 +223,7 @@ Publishes an event to the relay. [src/relay/index.ts:191](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L191) -___ +--- ### scoreSlowerEvent @@ -234,8 +234,8 @@ wasn't the fastest one. #### Parameters -| Name | Type | Description | -| :------ | :------ | :------ | +| Name | Type | Description | +| :------------- | :------- | :--------------------------------------------------------------------------- | | `timeDiffInMs` | `number` | The time difference in ms between the fastest and this relay in milliseconds | #### Returns @@ -246,7 +246,7 @@ wasn't the fastest one. [src/relay/index.ts:202](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L202) -___ +--- ### subscribe @@ -256,8 +256,8 @@ Subscribes to a subscription. #### Parameters -| Name | Type | -| :------ | :------ | +| Name | Type | +| :------------- | :-------------------------------------- | | `subscription` | [`NDKSubscription`](NDKSubscription.md) | #### Returns diff --git a/src/events/kind.ts b/src/events/kind.ts index 03fa5469..42c98e70 100644 --- a/src/events/kind.ts +++ b/src/events/kind.ts @@ -33,10 +33,15 @@ export declare enum NDKKind { export function isReplaceable(this: NDKEvent): boolean { if (this.kind === undefined) throw new Error("Kind not set"); - return this.kind >= 10000 && this.kind <= 30000; + return this.kind >= 10000 && this.kind < 20000; +} + +export function isEphemeral(this: NDKEvent): boolean { + if (this.kind === undefined) throw new Error("Kind not set"); + return this.kind >= 20000 && this.kind < 30000; } export function isParamReplaceable(this: NDKEvent): boolean { if (this.kind === undefined) throw new Error("Kind not set"); - return this.kind >= 30000 && this.kind <= 40000; + return this.kind >= 30000 && this.kind < 40000; } From d0171f9978f799acfd31344b6d8afd69b5b82359 Mon Sep 17 00:00:00 2001 From: Alejandro Gomez Date: Tue, 23 May 2023 09:11:59 +0200 Subject: [PATCH 107/773] fix: dedupe contact list npubs --- src/user/follows.test.ts | 29 +++++++++++++++++++++++++++++ src/user/follows.ts | 16 +++++++++++----- 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/src/user/follows.test.ts b/src/user/follows.test.ts index 7a8f43ff..f1f6312b 100644 --- a/src/user/follows.test.ts +++ b/src/user/follows.test.ts @@ -41,4 +41,33 @@ describe("follows", () => { expect(followedUser.ndk).toBe(user.ndk); } }); + + it("dedupes followed users", async () => { + const ndk = new NDK(); + const user = new NDKUser({ + hexpubkey: "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52" + }); + user.ndk = ndk; + + const followedHexpubkey = + "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52"; + + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + (user.ndk!.fetchEvents as jest.Mock).mockImplementation(() => { + const e = new NDKEvent(ndk); + e.tags = [["p", "invalid-pubkey"]]; + e.tags = [["p", followedHexpubkey]]; + e.tags = [["p", followedHexpubkey]]; + return new Set([e]); + }); + + const followedUsers = await user.follows(); + expect(followedUsers.size).toBe(1); + + for (const followedUser of followedUsers) { + expect(followedUser).toBeInstanceOf(NDKUser); + expect(followedUser.hexpubkey()).toBe(followedHexpubkey); + expect(followedUser.ndk).toBe(user.ndk); + } + }); }); diff --git a/src/user/follows.ts b/src/user/follows.ts index 0821ca4c..b1cb31d2 100644 --- a/src/user/follows.ts +++ b/src/user/follows.ts @@ -1,3 +1,5 @@ +import { nip19 } from "nostr-tools"; + import NDKUser from "./index.js"; export async function follows(this: NDKUser): Promise> { @@ -9,15 +11,14 @@ export async function follows(this: NDKUser): Promise> { }); if (contactListEvents) { - const contactList = new Set(); + const npubs = new Set(); contactListEvents.forEach((event) => { event.tags.forEach((tag: string[]) => { if (tag[0] === "p") { try { - const user = new NDKUser({ hexpubkey: tag[1] }); - user.ndk = this.ndk; - contactList.add(user); + const npub = nip19.npubEncode(tag[1]); + npubs.add(npub); } catch (e) { /* empty */ } @@ -25,7 +26,12 @@ export async function follows(this: NDKUser): Promise> { }); }); - return contactList; + return [...npubs].reduce((acc: Set, npub: string) => { + const user = new NDKUser({ npub }); + user.ndk = this.ndk; + acc.add(user); + return acc; + }, new Set()); } return new Set(); From 23eaa1a4484bd6247fe4d9b3b67de98ccd48f541 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Wed, 24 May 2023 17:38:55 +0200 Subject: [PATCH 108/773] bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index daed6e6a..e428550f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.3.141", + "version": "0.3.1415", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", From c91436b4393aefb6ea8770d2f2081bcb80c830ce Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 27 May 2023 14:21:48 +0200 Subject: [PATCH 109/773] attempt to autofill sender/recipient for nip04 --- package.json | 2 +- src/events/index.ts | 11 ++++++++++- src/events/nip04.ts | 19 +++++++++++++++++-- src/index.ts | 6 +++++- 4 files changed, 33 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index e428550f..ce2e0d20 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.3.1415", + "version": "0.3.16", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/index.ts b/src/events/index.ts index 0062e1c6..3ca9c20c 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -1,6 +1,6 @@ import EventEmitter from "eventemitter3"; import { getEventHash, UnsignedEvent } from "nostr-tools"; -import NDK, { NDKRelaySet } from "../index.js"; +import NDK, { NDKRelaySet, NDKUser } from "../index.js"; import { NDKSigner } from "../signers/index.js"; import Zap from "../zap/index.js"; import { generateContentTags } from "./content-tagger.js"; @@ -67,6 +67,15 @@ export default class NDKEvent extends EventEmitter { } as NostrEvent; } + /** + * Returns an NDKUser for the author of the event. + */ + public author(): NDKUser { + const user = new NDKUser({ hexpubkey: this.pubkey }); + user.ndk = this.ndk; + return user; + } + /** * Return a NostrEvent object, trying to fill in missing fields * when possible, adding tags when necessary. diff --git a/src/events/nip04.ts b/src/events/nip04.ts index d18b7c26..7290db76 100644 --- a/src/events/nip04.ts +++ b/src/events/nip04.ts @@ -2,7 +2,7 @@ import NDKEvent from "."; import { NDKSigner } from "../signers"; import NDKUser from "../user"; -export async function encrypt(this: NDKEvent, recipient: NDKUser, signer?: NDKSigner) { +export async function encrypt(this: NDKEvent, recipient?: NDKUser, signer?: NDKSigner) { if (!signer) { if (!this.ndk) { throw new Error("No signer available"); @@ -13,10 +13,21 @@ export async function encrypt(this: NDKEvent, recipient: NDKUser, signer?: NDKSi signer = this.ndk.signer!; } + if (!recipient) { + const pTags = this.getMatchingTags("p"); + + if (pTags.length !== 1) { + throw new Error("No recipient could be determined and no explicit recipient was provided"); + } + + recipient = new NDKUser({ hexpubkey: pTags[0][1] }); + recipient.ndk = this.ndk; + } + this.content = await signer.encrypt(recipient, this.content); } -export async function decrypt(this: NDKEvent, sender: NDKUser, signer?: NDKSigner) { +export async function decrypt(this: NDKEvent, sender?: NDKUser, signer?: NDKSigner) { if (!signer) { if (!this.ndk) { throw new Error("No signer available"); @@ -27,5 +38,9 @@ export async function decrypt(this: NDKEvent, sender: NDKUser, signer?: NDKSigne signer = this.ndk.signer!; } + if (!sender) { + sender = this.author(); + } + this.content = await signer.decrypt(sender, this.content); } diff --git a/src/index.ts b/src/index.ts index 2edfd7b5..3e4fa649 100644 --- a/src/index.ts +++ b/src/index.ts @@ -123,13 +123,17 @@ export default class NDK extends EventEmitter { /** * Fetch a single event */ - public async fetchEvent(filter: NDKFilter, opts: NDKFilterOptions = {}): Promise { + public async fetchEvent(filter: NDKFilter, opts: NDKFilterOptions = {}): Promise { return new Promise((resolve) => { const s = this.subscribe(filter, { ...opts, closeOnEose: true }); s.on("event", (event) => { event.ndk = this; resolve(event); }); + + s.on("eose", () => { + resolve(null); + }); }); } From dc047560d7a641a4c70796875f30305e349ad8bf Mon Sep 17 00:00:00 2001 From: Alejandro Gomez Date: Sun, 28 May 2023 10:46:02 +0200 Subject: [PATCH 110/773] fix: don't use lookbehind in RegEx --- src/events/content-tagger.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/events/content-tagger.ts b/src/events/content-tagger.ts index 332beb24..c55359b4 100644 --- a/src/events/content-tagger.ts +++ b/src/events/content-tagger.ts @@ -10,7 +10,7 @@ export function generateContentTags( content = content.replace(tagRegex, (tag) => { try { - const entity = tag.split(/(?<=@|nostr:)/)[1]; + const entity = tag.split(/(@|nostr:)/)[2]; const { type, data } = nip19.decode(entity); let t: NDKTag; From 9affff8969f1018b477ea43624d084fe97530a93 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Mon, 29 May 2023 23:08:38 +0200 Subject: [PATCH 111/773] Better debugging for event publishing --- package.json | 2 +- src/index.ts | 1 + src/relay/index.ts | 19 +++++++++++++++++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index ce2e0d20..a950d992 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.3.16", + "version": "0.3.23", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/index.ts b/src/index.ts index 3e4fa649..5aa6b898 100644 --- a/src/index.ts +++ b/src/index.ts @@ -23,6 +23,7 @@ export * from "./relay/sets/index.js"; export * from "./signers/index.js"; export * from "./signers/nip07/index.js"; export * from "./signers/nip46/backend/index.js"; +export * from "./signers/nip46/rpc.js"; export * from "./signers/nip46/index.js"; export * from "./signers/private-key/index.js"; export * from "./subscription/index.js"; diff --git a/src/relay/index.ts b/src/relay/index.ts index 137f4aea..4076889c 100644 --- a/src/relay/index.ts +++ b/src/relay/index.ts @@ -6,6 +6,7 @@ import NDKEvent, { NostrEvent } from "../events/index.js"; import { NDKSubscription } from "../subscription/index.js"; import User from "../user/index.js"; import { NDKRelayScore } from "./score.js"; +import debug from "debug"; export enum NDKRelayStatus { CONNECTING, @@ -54,6 +55,7 @@ export class NDKRelay extends EventEmitter { private connectedAt?: number; private _connectionStats: NDKRelayConnectionStats = { attempts: 0, success: 0, durations: [] }; public complaining = false; + private debug: debug.Debugger; /** * Active subscriptions this relay is connected to @@ -66,6 +68,7 @@ export class NDKRelay extends EventEmitter { this.relay = relayInit(url); this.scores = new Map(); this._status = NDKRelayStatus.DISCONNECTED; + this.debug = debug(`ndk:relay:${url}`); this.relay.on("connect", () => { this.updateConnectionStats.connected(); @@ -133,7 +136,9 @@ export class NDKRelay extends EventEmitter { this._status = NDKRelayStatus.CONNECTING; await this.relay.connect(); } catch (e) { - /* empty */ + this.debug("Failed to connect", e); + this._status = NDKRelayStatus.DISCONNECTED; + throw e; } } @@ -171,6 +176,7 @@ export class NDKRelay extends EventEmitter { const sub = this.relay.sub([filter], { id: subscription.subId }); + this.debug(`Subscribed to ${JSON.stringify(filter)}`); sub.on("event", (event: NostrEvent) => { const e = new NDKEvent(undefined, event); @@ -194,7 +200,16 @@ export class NDKRelay extends EventEmitter { */ public async publish(event: NDKEvent): Promise { const nostrEvent = (await event.toNostrEvent()) as SignedEvent; - this.relay.publish(nostrEvent); + const a = this.relay.publish(nostrEvent); + a.on('failed', (err: any) => { + this.debug('Publish failed', err, event.rawEvent()); + }); + + a.on('ok', () => { + this.debug('Publish ok', event.rawEvent()); + }); + + this.debug(`Published event ${event.id}`, event.rawEvent()); } /** From 17225d0bd77e813b80dae78af26991637ca8dc20 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Mon, 29 May 2023 23:09:27 +0200 Subject: [PATCH 112/773] better interface to handle NostrRPC responses --- src/signers/nip46/index.ts | 66 ++++++++++++++++-------------------- src/signers/nip46/rpc.ts | 68 +++++++++++++++++++++++++++----------- 2 files changed, 77 insertions(+), 57 deletions(-) diff --git a/src/signers/nip46/index.ts b/src/signers/nip46/index.ts index 924718aa..0f45af5f 100644 --- a/src/signers/nip46/index.ts +++ b/src/signers/nip46/index.ts @@ -39,33 +39,28 @@ export class NDKNip46Signer implements NDKSigner { public async blockUntilReady(): Promise { const localUser = await this.localSigner.user(); const user = await this.ndk.getUser({ npub: localUser.npub }); - const connectId = Math.random().toString(36).substring(7); // Generates subscription, single subscription for the lifetime of our connection - this.rpc.subscribe({ + await this.rpc.subscribe({ kinds: [24133], - "#p": [localUser.hexpubkey()] + "#p": [localUser.hexpubkey()], }); - const promise: Promise = new Promise((resolve, reject) => { - // Subscribe to response of this connection request - this.rpc.once(`response-${connectId}`, async (response: NDKRpcResponse) => { - if (response.result === "ack") { - resolve(user); - } else { - reject(response.error); + return new Promise((resolve, reject) => { + this.rpc.sendRequest( + this.remotePubkey, + "connect", + [localUser.hexpubkey()], + 24133, + (response: NDKRpcResponse) => { + if (response.result === "ack") { + resolve(user); + } else { + reject(response.error); + } } - }); + ); }); - - await this.rpc.sendRequest( - this.remotePubkey, - "connect", - [localUser.hexpubkey()], - connectId - ); - - return promise; } public async encrypt(recipient: NDKUser, value: string): Promise { @@ -77,29 +72,26 @@ export class NDKNip46Signer implements NDKSigner { } public async sign(event: NostrEvent): Promise { - const connectId = Math.random().toString(36).substring(7); - this.debug("asking for a signature"); const promise = new Promise((resolve, reject) => { - this.rpc.once(`response-${connectId}`, async (response: NDKRpcResponse) => { - this.debug("got a response", response); - if (!response.error) { - const json = JSON.parse(response.result); - resolve(json.sig); - } else { - reject(response.error); + this.rpc.sendRequest( + this.remotePubkey, + "sign_event", + [JSON.stringify(event)], + 24133, + (response: NDKRpcResponse) => { + this.debug("got a response", response); + if (!response.error) { + const json = JSON.parse(response.result); + resolve(json.sig); + } else { + reject(response.error); + } } - }); + ); }); - await this.rpc.sendRequest( - this.remotePubkey, - "sign_event", - [JSON.stringify(event)], - connectId - ); - return promise; } } diff --git a/src/signers/nip46/rpc.ts b/src/signers/nip46/rpc.ts index d7739ce0..7ab736fe 100644 --- a/src/signers/nip46/rpc.ts +++ b/src/signers/nip46/rpc.ts @@ -1,16 +1,19 @@ import EventEmitter from "eventemitter3"; -import NDK, { NDKEvent, NDKFilter, NDKSigner, NostrEvent } from "../../index.js"; +import NDK, { NDKEvent, NDKFilter, NDKSigner, NDKSubscription, NostrEvent } from "../../index.js"; export interface NDKRpcRequest { id: string; + pubkey: string; method: string; params: string[]; + event: NDKEvent; } export interface NDKRpcResponse { id: string; result: string; error?: string; + event: NDKEvent; } export class NDKNostrRpc extends EventEmitter { @@ -25,20 +28,28 @@ export class NDKNostrRpc extends EventEmitter { this.debug = debug.extend("rpc"); } - public subscribe(filter: NDKFilter) { + /** + * Subscribe to a filter. This function will resolve once the subscription is ready. + */ + public async subscribe(filter: NDKFilter): Promise { const sub = this.ndk.subscribe(filter, { closeOnEose: false }); sub.on("event", async (event: NDKEvent) => { - this.debug("received event", await event.toNostrEvent()); - const parsedEvent = await this.parseEvent(event); - this.debug("parsed event", parsedEvent); - - if ((parsedEvent as NDKRpcRequest).method) { - this.emit("request", parsedEvent); - } else { - this.emit(`response-${parsedEvent.id}`, parsedEvent); + try { + const parsedEvent = await this.parseEvent(event); + if ((parsedEvent as NDKRpcRequest).method) { + this.emit("request", parsedEvent); + } else { + this.emit(`response-${parsedEvent.id}`, parsedEvent); + } + } catch (e) { + this.debug("error parsing event", e, event); } }); + + return new Promise((resolve, reject) => { + sub.on('eose', () => resolve(sub)); + }); } public async parseEvent(event: NDKEvent): Promise { @@ -49,13 +60,13 @@ export class NDKNostrRpc extends EventEmitter { const { id, method, params, result, error } = parsedContent; if (method) { - return { id, method, params }; + return { id, pubkey: event.pubkey, method, params, event }; } else { - return { id, result, error }; + return { id, result, error, event }; } } - public async sendResponse(id: string, remotePubkey: string, result: string, error?: string) { + public async sendResponse(id: string, remotePubkey: string, result: string, kind = 24133, error?: string) { const res = { id, result } as NDKRpcResponse; if (error) { res.error = error; @@ -64,7 +75,7 @@ export class NDKNostrRpc extends EventEmitter { const localUser = await this.signer.user(); const remoteUser = this.ndk.getUser({ hexpubkey: remotePubkey }); const event = new NDKEvent(this.ndk, { - kind: 24133, + kind, content: JSON.stringify(res), tags: [["p", remotePubkey]], pubkey: localUser.hexpubkey() @@ -72,19 +83,34 @@ export class NDKNostrRpc extends EventEmitter { event.content = await this.signer.encrypt(remoteUser, event.content); await event.sign(this.signer); - this.debug("sending response", await event.toNostrEvent()); - await this.ndk.publish(event); } - public async sendRequest(remotePubkey: string, method: string, params: string[], id?: string) { + /** + * Sends a request. + * @param remotePubkey + * @param method + * @param params + * @param kind + * @param id + */ + public async sendRequest( + remotePubkey: string, + method: string, + params: string[] = [], + kind = 24133, + cb?: (res: NDKRpcResponse) => void + ) { + const id = Math.random().toString(36).substring(7); const localUser = await this.signer.user(); const remoteUser = this.ndk.getUser({ hexpubkey: remotePubkey }); - const randomId = Math.random().toString(36).substring(7); - const request = { id: id || randomId, method, params }; + const request = { id, method, params }; + const promise = new Promise(resolve => { + if (cb) this.once(`response-${id}`, cb); + }); const event = new NDKEvent(this.ndk, { - kind: 24133, + kind, content: JSON.stringify(request), tags: [["p", remotePubkey]], pubkey: localUser.hexpubkey() @@ -95,5 +121,7 @@ export class NDKNostrRpc extends EventEmitter { this.debug("sending request to", remotePubkey); await this.ndk.publish(event); + + return promise; } } From 8803e5b5f742c80e847acdcb3060b0b1b4b10ad8 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Mon, 29 May 2023 23:41:53 +0200 Subject: [PATCH 113/773] update dependencies --- package-lock.json | 191 +++++++++++------------------ package.json | 7 +- src/events/index.test.ts | 2 +- src/signers/nip46/backend/index.ts | 2 +- src/signers/nip46/index.ts | 2 +- src/signers/private-key/index.ts | 4 +- 6 files changed, 82 insertions(+), 126 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3e4479a9..a35faebe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.3.141", + "version": "0.3.24", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@nostr-dev-kit/ndk", - "version": "0.3.141", + "version": "0.3.24", "license": "MIT", "dependencies": { "@scure/base": "^1.1.1", @@ -22,7 +22,7 @@ "eventemitter3": "^5.0.0", "light-bolt11-decoder": "^3.0.0", "node-fetch": "^3.3.1", - "nostr-tools": "^1.8.1", + "nostr-tools": "^1.11.1", "tsd": "^0.28.1", "typedoc": "^0.24.6", "utf8-buffer": "^1.0.0", @@ -37,7 +37,7 @@ "prettier-plugin-organize-imports": "^3.2.2", "ts-jest": "^29.1.0", "typedoc-plugin-markdown": "^3.14.0", - "typescript": "~4.7.0" + "typescript": "^5.0.4" } }, "node_modules/@ampproject/remapping": { @@ -1490,15 +1490,24 @@ "@jridgewell/sourcemap-codec": "1.4.14" } }, - "node_modules/@noble/hashes": { + "node_modules/@noble/curves": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.0.0.tgz", - "integrity": "sha512-DZVbtY62kc3kkBtMHqwCOfXrT/hnoORy5BJ4+HU1IR59X0KWAOqsfzQPcUl/lQLlG7qXbe/fZ3r/emxtAl+sqg==" + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.0.0.tgz", + "integrity": "sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "@noble/hashes": "1.3.0" + } }, - "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==", + "node_modules/@noble/hashes": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.0.tgz", + "integrity": "sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==", "funding": [ { "type": "individual", @@ -1550,9 +1559,9 @@ ] }, "node_modules/@scure/bip32": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", - "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.0.tgz", + "integrity": "sha512-bcKpo1oj54hGholplGLpqPHRbIsnbixFtc06nwuNM5/dwSXOq/AAYoIBRsBmnZJSdfeNW5rnff7NTAz3ZCqR9Q==", "funding": [ { "type": "individual", @@ -1560,26 +1569,15 @@ } ], "dependencies": { - "@noble/hashes": "~1.2.0", - "@noble/secp256k1": "~1.7.0", + "@noble/curves": "~1.0.0", + "@noble/hashes": "~1.3.0", "@scure/base": "~1.1.0" } }, - "node_modules/@scure/bip32/node_modules/@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, "node_modules/@scure/bip39": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", - "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.0.tgz", + "integrity": "sha512-SX/uKq52cuxm4YFXWFaVByaSHJh2w3BnokVSeUJVCv6K7WulT9u2BuNRBhuFl8vAuYnzx9bEu9WgpcNYTrYieg==", "funding": [ { "type": "individual", @@ -1587,21 +1585,10 @@ } ], "dependencies": { - "@noble/hashes": "~1.2.0", + "@noble/hashes": "~1.3.0", "@scure/base": "~1.1.0" } }, - "node_modules/@scure/bip39/node_modules/@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, "node_modules/@sinclair/typebox": { "version": "0.25.24", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", @@ -3525,18 +3512,6 @@ "typescript": "^5.0.2" } }, - "node_modules/esm-loader-typescript/node_modules/typescript": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.3.tgz", - "integrity": "sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=12.20" - } - }, "node_modules/espree": { "version": "9.5.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", @@ -6226,16 +6201,15 @@ } }, "node_modules/nostr-tools": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.8.1.tgz", - "integrity": "sha512-/2IUe5xINUYT5hYBoEz51dfRaodbRHnyF8n+ZbKWCoh0ZRX6AL88OoDNrWaWWo7tP5j5OyzSL9g/z4TP7bshEA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.11.1.tgz", + "integrity": "sha512-b8BpCiD3wxjBZwrn0wc+CkVj6/7s4sQxp+Az7UkCG80mJu7xTspZsOoUP/geBNwZVYETzEwj+CPBvW8WIP8mBQ==", "dependencies": { - "@noble/hashes": "1.0.0", - "@noble/secp256k1": "^1.7.1", - "@scure/base": "^1.1.1", - "@scure/bip32": "^1.1.5", - "@scure/bip39": "^1.1.1", - "prettier": "^2.8.4" + "@noble/curves": "1.0.0", + "@noble/hashes": "1.3.0", + "@scure/base": "1.1.1", + "@scure/bip32": "1.3.0", + "@scure/bip39": "1.2.0" } }, "node_modules/npm-run-all": { @@ -6717,6 +6691,7 @@ "version": "2.8.7", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", + "dev": true, "bin": { "prettier": "bin-prettier.js" }, @@ -7833,15 +7808,15 @@ } }, "node_modules/typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=12.20" } }, "node_modules/uglify-js": { @@ -9188,15 +9163,18 @@ "@jridgewell/sourcemap-codec": "1.4.14" } }, - "@noble/hashes": { + "@noble/curves": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.0.0.tgz", - "integrity": "sha512-DZVbtY62kc3kkBtMHqwCOfXrT/hnoORy5BJ4+HU1IR59X0KWAOqsfzQPcUl/lQLlG7qXbe/fZ3r/emxtAl+sqg==" + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.0.0.tgz", + "integrity": "sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw==", + "requires": { + "@noble/hashes": "1.3.0" + } }, - "@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==" + "@noble/hashes": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.0.tgz", + "integrity": "sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==" }, "@nodelib/fs.scandir": { "version": "2.1.5", @@ -9227,36 +9205,22 @@ "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==" }, "@scure/bip32": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", - "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.0.tgz", + "integrity": "sha512-bcKpo1oj54hGholplGLpqPHRbIsnbixFtc06nwuNM5/dwSXOq/AAYoIBRsBmnZJSdfeNW5rnff7NTAz3ZCqR9Q==", "requires": { - "@noble/hashes": "~1.2.0", - "@noble/secp256k1": "~1.7.0", + "@noble/curves": "~1.0.0", + "@noble/hashes": "~1.3.0", "@scure/base": "~1.1.0" - }, - "dependencies": { - "@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==" - } } }, "@scure/bip39": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", - "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.0.tgz", + "integrity": "sha512-SX/uKq52cuxm4YFXWFaVByaSHJh2w3BnokVSeUJVCv6K7WulT9u2BuNRBhuFl8vAuYnzx9bEu9WgpcNYTrYieg==", "requires": { - "@noble/hashes": "~1.2.0", + "@noble/hashes": "~1.3.0", "@scure/base": "~1.1.0" - }, - "dependencies": { - "@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==" - } } }, "@sinclair/typebox": { @@ -10644,13 +10608,6 @@ "npm-run-all": "^4.1.5", "semver": "^7.3.8", "typescript": "^5.0.2" - }, - "dependencies": { - "typescript": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.3.tgz", - "integrity": "sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==" - } } }, "espree": { @@ -12597,16 +12554,15 @@ "dev": true }, "nostr-tools": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.8.1.tgz", - "integrity": "sha512-/2IUe5xINUYT5hYBoEz51dfRaodbRHnyF8n+ZbKWCoh0ZRX6AL88OoDNrWaWWo7tP5j5OyzSL9g/z4TP7bshEA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.11.1.tgz", + "integrity": "sha512-b8BpCiD3wxjBZwrn0wc+CkVj6/7s4sQxp+Az7UkCG80mJu7xTspZsOoUP/geBNwZVYETzEwj+CPBvW8WIP8mBQ==", "requires": { - "@noble/hashes": "1.0.0", - "@noble/secp256k1": "^1.7.1", - "@scure/base": "^1.1.1", - "@scure/bip32": "^1.1.5", - "@scure/bip39": "^1.1.1", - "prettier": "^2.8.4" + "@noble/curves": "1.0.0", + "@noble/hashes": "1.3.0", + "@scure/base": "1.1.1", + "@scure/bip32": "1.3.0", + "@scure/bip39": "1.2.0" } }, "npm-run-all": { @@ -12946,7 +12902,8 @@ "prettier": { "version": "2.8.7", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", - "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==" + "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", + "dev": true }, "prettier-linter-helpers": { "version": "1.0.0", @@ -13725,9 +13682,9 @@ } }, "typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==" + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==" }, "uglify-js": { "version": "3.17.4", diff --git a/package.json b/package.json index a950d992..8f7ba9d5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.3.23", + "version": "0.3.25", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", @@ -27,7 +27,6 @@ "lint": "eslint src/**/*.ts", "format": "prettier --write \"**/*.{js,jsx,json,yml,yaml,css,ts,tsx,md,mdx}\"", "compile": "tsc", - "prepare": "pnpm build", "pretest": "pnpm compile", "posttest": "pnpm lint" }, @@ -45,7 +44,7 @@ "prettier-plugin-organize-imports": "^3.2.2", "ts-jest": "^29.1.0", "typedoc-plugin-markdown": "^3.14.0", - "typescript": "~4.7.0" + "typescript": "^5.0.4" }, "dependencies": { "@scure/base": "^1.1.1", @@ -61,7 +60,7 @@ "eventemitter3": "^5.0.0", "light-bolt11-decoder": "^3.0.0", "node-fetch": "^3.3.1", - "nostr-tools": "^1.8.1", + "nostr-tools": "^1.11.1", "tsd": "^0.28.1", "typedoc": "^0.24.6", "utf8-buffer": "^1.0.0", diff --git a/src/events/index.test.ts b/src/events/index.test.ts index bf2aad48..c3eb6b23 100644 --- a/src/events/index.test.ts +++ b/src/events/index.test.ts @@ -30,7 +30,7 @@ describe("NDKEvent", () => { return sub; }); - const events = await ndk.fetchEvents({ kinds: [30001] }); + const events = await ndk.fetchEvents({ kinds: [30001 as number] }); expect(events.size).toBe(1); const dedupedEvent = events.values().next().value; diff --git a/src/signers/nip46/backend/index.ts b/src/signers/nip46/backend/index.ts index a3adba8e..e5d17bb0 100644 --- a/src/signers/nip46/backend/index.ts +++ b/src/signers/nip46/backend/index.ts @@ -55,7 +55,7 @@ export class NDKNip46Backend { const sub = this.ndk.subscribe( { - kinds: [24133], + kinds: [24133 as number], "#p": [this.localUser.hexpubkey()] }, { closeOnEose: false } diff --git a/src/signers/nip46/index.ts b/src/signers/nip46/index.ts index 0f45af5f..ca123565 100644 --- a/src/signers/nip46/index.ts +++ b/src/signers/nip46/index.ts @@ -42,7 +42,7 @@ export class NDKNip46Signer implements NDKSigner { // Generates subscription, single subscription for the lifetime of our connection await this.rpc.subscribe({ - kinds: [24133], + kinds: [24133 as number], "#p": [localUser.hexpubkey()], }); diff --git a/src/signers/private-key/index.ts b/src/signers/private-key/index.ts index 5ffa07d1..ca6ee771 100644 --- a/src/signers/private-key/index.ts +++ b/src/signers/private-key/index.ts @@ -1,5 +1,5 @@ import type { UnsignedEvent } from "nostr-tools"; -import { generatePrivateKey, getPublicKey, nip04, signEvent } from "nostr-tools"; +import { generatePrivateKey, getPublicKey, nip04, getSignature } from "nostr-tools"; import type { NostrEvent } from "../../events/index.js"; import NDKUser from "../../user"; import { NDKSigner } from "../index.js"; @@ -37,7 +37,7 @@ export class NDKPrivateKeySigner implements NDKSigner { throw Error("Attempted to sign without a private key"); } - return signEvent(event as UnsignedEvent, this.privateKey); + return getSignature(event as UnsignedEvent, this.privateKey); } public async encrypt(recipient: NDKUser, value: string): Promise { From ed1ec695c49f978ceaa68d3420f814bb1f64296e Mon Sep 17 00:00:00 2001 From: pablof7z Date: Mon, 29 May 2023 23:59:48 +0200 Subject: [PATCH 114/773] add @noble/secp256k1 dependency --- package-lock.json | 21 +++++++++++++++++++-- package.json | 3 ++- src/relay/sets/index.ts | 4 ++-- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index a35faebe..ec9a10eb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,14 +1,15 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.3.24", + "version": "0.3.26", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@nostr-dev-kit/ndk", - "version": "0.3.24", + "version": "0.3.26", "license": "MIT", "dependencies": { + "@noble/secp256k1": "^2.0.0", "@scure/base": "^1.1.1", "@typescript-eslint/eslint-plugin": "^5.57.0", "@typescript-eslint/parser": "^5.57.0", @@ -1515,6 +1516,17 @@ } ] }, + "node_modules/@noble/secp256k1": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-2.0.0.tgz", + "integrity": "sha512-rUGBd95e2a45rlmFTqQJYEFA4/gdIARFfuTuTqLglz0PZ6AKyzyXsEZZq7UZn8hZsvaBgpCzKKBJizT2cJERXw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -9176,6 +9188,11 @@ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.0.tgz", "integrity": "sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==" }, + "@noble/secp256k1": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-2.0.0.tgz", + "integrity": "sha512-rUGBd95e2a45rlmFTqQJYEFA4/gdIARFfuTuTqLglz0PZ6AKyzyXsEZZq7UZn8hZsvaBgpCzKKBJizT2cJERXw==" + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", diff --git a/package.json b/package.json index 8f7ba9d5..92789da7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.3.25", + "version": "0.3.26", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", @@ -47,6 +47,7 @@ "typescript": "^5.0.4" }, "dependencies": { + "@noble/secp256k1": "^2.0.0", "@scure/base": "^1.1.1", "@typescript-eslint/eslint-plugin": "^5.57.0", "@typescript-eslint/parser": "^5.57.0", diff --git a/src/relay/sets/index.ts b/src/relay/sets/index.ts index 959ffadc..f752779a 100644 --- a/src/relay/sets/index.ts +++ b/src/relay/sets/index.ts @@ -1,5 +1,5 @@ import { sha256 } from "@noble/hashes/sha256"; -import * as secp256k1 from "@noble/secp256k1"; +import {bytesToHex} from '@noble/hashes/utils'; import NDKEvent from "../../events/index.js"; import type NDK from "../../index.js"; import { NDKSubscription, NDKSubscriptionGroup } from "../../subscription/index.js"; @@ -56,7 +56,7 @@ export class NDKRelaySet { public getId() { const urls = Array.from(this.relays).map((r) => r.url); const urlString = urls.sort().join(","); - return secp256k1.utils.bytesToHex(sha256(urlString)); + return bytesToHex(sha256(urlString)); } /** From b8feb9f27db74c422cab7763452e1266ab62718e Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 30 May 2023 08:36:43 +0200 Subject: [PATCH 115/773] bump ndk version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 92789da7..2f91c15b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.3.26", + "version": "0.3.27", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", From cf64beb4c8ff75a3f951c4f30897b24d59f7f2e0 Mon Sep 17 00:00:00 2001 From: Jeff Gardner <202880+erskingardner@users.noreply.github.com> Date: Thu, 1 Jun 2023 11:28:27 +0200 Subject: [PATCH 116/773] Update comments and zapInvoiceFromEvent to clarify millisatoshis --- docs/classes/NDKEvent.md | 2 +- src/events/index.ts | 2 +- src/zap/index.ts | 2 +- src/zap/invoice.ts | 11 +++++++++-- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/docs/classes/NDKEvent.md b/docs/classes/NDKEvent.md index 716a6e78..d101b650 100644 --- a/docs/classes/NDKEvent.md +++ b/docs/classes/NDKEvent.md @@ -457,7 +457,7 @@ Create a zap request for an existing event | Name | Type | Description | | :------ | :------ | :------ | -| `amount` | `number` | The amount to zap | +| `amount` | `number` | The amount to zap in millisatoshis | | `comment?` | `string` | A comment to add to the zap request | | `extraTags?` | [`NDKTag`](../modules.md#ndktag)[] | Extra tags to add to the zap request | diff --git a/src/events/index.ts b/src/events/index.ts index 3ca9c20c..5c5f19d2 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -217,7 +217,7 @@ export default class NDKEvent extends EventEmitter { /** * Create a zap request for an existing event * - * @param amount The amount to zap + * @param amount The amount to zap in millisatoshis * @param comment A comment to add to the zap request * @param extraTags Extra tags to add to the zap request */ diff --git a/src/zap/index.ts b/src/zap/index.ts index 863b8ebe..91e03eaa 100644 --- a/src/zap/index.ts +++ b/src/zap/index.ts @@ -87,7 +87,7 @@ export default class Zap extends EventEmitter { } public async createZapRequest( - amount: number, + amount: number, // amount to zap in millisatoshis comment?: string, extraTags?: NDKTag[] ): Promise { diff --git a/src/zap/invoice.ts b/src/zap/invoice.ts index 73b045ba..47fcd5e6 100644 --- a/src/zap/invoice.ts +++ b/src/zap/invoice.ts @@ -7,10 +7,17 @@ export interface NDKZapInvoice { zappee: string; // pubkey of user sending zap zapped: string; // pubkey of user receiving zap zappedEvent?: string; // event zapped - amount: number; + amount: number; // amount zapped in millisatoshis comment?: string; } +/** + * Parses a zap invoice from a kind 9735 event + * + * @param event The event to parse + * + * @returns NDKZapInvoice | null + */ export function zapInvoiceFromEvent(event: NDKEvent): NDKZapInvoice | null { const description = event.getMatchingTags("description")[0]; const bolt11 = event.getMatchingTags("bolt11")[0]; @@ -41,7 +48,7 @@ export function zapInvoiceFromEvent(event: NDKEvent): NDKZapInvoice | null { return null; } - const amount = parseInt(amountSection.value) / 1000; + const amount = parseInt(amountSection.value); if (!amount) { return null; } From 31a1cb2f10cf09ef0b5d457cc27d8afbb4816b40 Mon Sep 17 00:00:00 2001 From: Jeff Gardner <202880+erskingardner@users.noreply.github.com> Date: Thu, 1 Jun 2023 11:33:13 +0200 Subject: [PATCH 117/773] Update readme --- docs/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/README.md b/docs/README.md index e4354140..43f22209 100644 --- a/docs/README.md +++ b/docs/README.md @@ -9,7 +9,7 @@ NDK is a [nostr]([url](https://github.com/nostr-protocol/nostr)) development kit ## NDK Objectives 1. The core goal of NDK is to improve the decentralization of Nostr via intelligent conventions and data discovery features without depending on any one central point of coordination (such as large relays or centralized search providers). -2. NDK team aims to have new to nostr devs get set up, and reading a NIP-01 event within 10 minutes. +2. NDK team aims to have new to nostr devs get set up, and reading a NIP-01 event within 10 minutes. 3. NDK's objective is to serve prospective, and current nostr devs as clients. If you have friction with the NDK developer experience, please open issues, and ask for help from the NDK team! Devs are encouraged to search through existing, and/or create new github issues when experiencing friction with NDK. ## Installation @@ -301,16 +301,16 @@ await ndk.publish(event); ```ts // Find the first event from @jack, and react/like it. -const event = await ndk.fetchEvent({ author: "jack@cashapp.com" })[0]; +const event = await ndk.fetchEvent({ authors: ["82341f882b6eabcd2ba7f1ef90aad961cf074af15b9ef44a09f9d2a8fbfbe6a2"] }); await event.react("🤙"); ``` ### Zap an event ```ts -// Find the first event from @jack, and zap it. -const event = await ndk.fetchEvent({ author: "jack@cashapp.com" })[0]; -await event.zap(1337, "Zapping your post!"); // Returns a zap request +// Find the first event from @jack, and zap it. First param is amount in millisatoshis. +const event = await ndk.fetchEvent({ authors: ["82341f882b6eabcd2ba7f1ef90aad961cf074af15b9ef44a09f9d2a8fbfbe6a2"] }); +await event.zap(1337000, "Zapping your post!"); // Returns a zap request ``` ## Architecture decisions & suggestions From 6a8e03a70b8cb0fb7f77a2649a4a7e99a03d39ae Mon Sep 17 00:00:00 2001 From: pablof7z Date: Fri, 2 Jun 2023 14:35:07 +0200 Subject: [PATCH 118/773] Workaround race condition on nip-46 --- package.json | 2 +- src/signers/nip46/index.ts | 31 ++++++++++++++++++------------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index 2f91c15b..eaa511fd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.3.27", + "version": "0.3.28", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/signers/nip46/index.ts b/src/signers/nip46/index.ts index ca123565..8d22122a 100644 --- a/src/signers/nip46/index.ts +++ b/src/signers/nip46/index.ts @@ -38,7 +38,7 @@ export class NDKNip46Signer implements NDKSigner { public async blockUntilReady(): Promise { const localUser = await this.localSigner.user(); - const user = await this.ndk.getUser({ npub: localUser.npub }); + const user = this.ndk.getUser({ npub: localUser.npub }); // Generates subscription, single subscription for the lifetime of our connection await this.rpc.subscribe({ @@ -47,19 +47,24 @@ export class NDKNip46Signer implements NDKSigner { }); return new Promise((resolve, reject) => { - this.rpc.sendRequest( - this.remotePubkey, - "connect", - [localUser.hexpubkey()], - 24133, - (response: NDKRpcResponse) => { - if (response.result === "ack") { - resolve(user); - } else { - reject(response.error); + // There is a race condition between the subscription and sending the request; + // introducing a small delay here to give a clear priority to the subscription + // to happen first + setTimeout(() => { + this.rpc.sendRequest( + this.remotePubkey, + "connect", + [localUser.hexpubkey()], + 24133, + (response: NDKRpcResponse) => { + if (response.result === "ack") { + resolve(user); + } else { + reject(response.error); + } } - } - ); + ); + }, 100); }); } From df9ceb0f019c5b2f9a844668b8d1f86df557113c Mon Sep 17 00:00:00 2001 From: pablof7z Date: Fri, 2 Jun 2023 15:14:31 +0200 Subject: [PATCH 119/773] return correct user on nip46 signer --- package.json | 2 +- src/signers/nip46/index.ts | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index eaa511fd..df39ac45 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.3.28", + "version": "0.3.29", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/signers/nip46/index.ts b/src/signers/nip46/index.ts index 8d22122a..3223e7f8 100644 --- a/src/signers/nip46/index.ts +++ b/src/signers/nip46/index.ts @@ -7,6 +7,7 @@ import { NDKNostrRpc, NDKRpcResponse } from "./rpc.js"; */ export class NDKNip46Signer implements NDKSigner { private ndk: NDK; + public remoteUser: NDKUser; public remotePubkey: string; public localSigner: NDKSigner; private rpc: NDKNostrRpc; @@ -23,6 +24,8 @@ export class NDKNip46Signer implements NDKSigner { this.remotePubkey = remotePubkey; this.debug = ndk.debug.extend("nip46:signer"); + this.remoteUser = new NDKUser({ hexpubkey: remotePubkey }); + if (!localSigner) { this.localSigner = NDKPrivateKeySigner.generate(); } else { @@ -32,8 +35,11 @@ export class NDKNip46Signer implements NDKSigner { this.rpc = new NDKNostrRpc(ndk, this.localSigner, this.debug); } + /** + * Get the user that is being published as + */ public async user(): Promise { - return this.localSigner.user(); + return this.remoteUser; } public async blockUntilReady(): Promise { From a3bef654105ebd5264f5edf468a8ca30270c7940 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 3 Jun 2023 02:12:23 +0200 Subject: [PATCH 120/773] nip-04 support on nip-46 signer and backend --- package.json | 2 +- src/signers/nip46/backend/index.ts | 24 ++++++++++++- src/signers/nip46/backend/nip04-decrypt.ts | 16 +++++++++ src/signers/nip46/backend/nip04-encrypt.ts | 16 +++++++++ src/signers/nip46/index.ts | 41 ++++++++++++++++++++-- 5 files changed, 95 insertions(+), 4 deletions(-) create mode 100644 src/signers/nip46/backend/nip04-decrypt.ts create mode 100644 src/signers/nip46/backend/nip04-encrypt.ts diff --git a/package.json b/package.json index df39ac45..7464ad9b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.3.29", + "version": "0.3.30", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/signers/nip46/backend/index.ts b/src/signers/nip46/backend/index.ts index e5d17bb0..b8b15737 100644 --- a/src/signers/nip46/backend/index.ts +++ b/src/signers/nip46/backend/index.ts @@ -4,6 +4,8 @@ import ConnectEventHandlingStrategy from "./connect.js"; import DescribeEventHandlingStrategy from "./describe.js"; import GetPublicKeyHandlingStrategy from "./get-public-key.js"; import SignEventHandlingStrategy from "./sign-event.js"; +import Nip04DecryptHandlingStrategy from "./nip04-decrypt.js"; +import Nip04EncryptHandlingStrategy from "./nip04-encrypt.js"; export type Nip46PermitCallback = ( pubkey: string, @@ -28,7 +30,7 @@ export interface IEventHandlingStrategy { */ export class NDKNip46Backend { readonly ndk: NDK; - private signer: NDKPrivateKeySigner; + readonly signer: NDKPrivateKeySigner; public localUser?: NDKUser; readonly debug: debug.Debugger; private rpc: NDKNostrRpc; @@ -67,6 +69,8 @@ export class NDKNip46Backend { public handlers: { [method: string]: IEventHandlingStrategy } = { connect: new ConnectEventHandlingStrategy(), sign_event: new SignEventHandlingStrategy(), + nip04_encrypt: new Nip04EncryptHandlingStrategy(), + nip04_decrypt: new Nip04DecryptHandlingStrategy(), get_public_key: new GetPublicKeyHandlingStrategy(), describe: new DescribeEventHandlingStrategy() }; @@ -100,6 +104,24 @@ export class NDKNip46Backend { } } + public async decrypt(remotePubkey: string, senderUser: NDKUser, payload: string) { + if (!(await this.pubkeyAllowed(remotePubkey, "decrypt", payload))) { + this.debug(`decrypt request from ${remotePubkey} rejected`); + return undefined; + } + + return await this.signer.decrypt(senderUser, payload); + } + + public async encrypt(remotePubkey: string, recipientUser: NDKUser, payload: string) { + if (!(await this.pubkeyAllowed(remotePubkey, "encrypt", payload))) { + this.debug(`encrypt request from ${remotePubkey} rejected`); + return undefined; + } + + return await this.signer.encrypt(recipientUser, payload); + } + public async signEvent(remotePubkey: string, params: string[]): Promise { const [eventString] = params; diff --git a/src/signers/nip46/backend/nip04-decrypt.ts b/src/signers/nip46/backend/nip04-decrypt.ts new file mode 100644 index 00000000..cd85fc6a --- /dev/null +++ b/src/signers/nip46/backend/nip04-decrypt.ts @@ -0,0 +1,16 @@ +import NDKUser from "../../../user/index.js"; +import { IEventHandlingStrategy, NDKNip46Backend } from "./index.js"; + +export default class Nip04DecryptHandlingStrategy implements IEventHandlingStrategy { + async handle( + backend: NDKNip46Backend, + remotePubkey: string, + params: string[] + ): Promise { + const [ senderPubkey, payload ] = params; + const senderUser = new NDKUser({ hexpubkey: senderPubkey }); + const decryptedPayload = await backend.decrypt(remotePubkey, senderUser, payload); + + return JSON.stringify([decryptedPayload]); + } +} diff --git a/src/signers/nip46/backend/nip04-encrypt.ts b/src/signers/nip46/backend/nip04-encrypt.ts new file mode 100644 index 00000000..9a688c08 --- /dev/null +++ b/src/signers/nip46/backend/nip04-encrypt.ts @@ -0,0 +1,16 @@ +import NDKUser from "../../../user/index.js"; +import { IEventHandlingStrategy, NDKNip46Backend } from "./index.js"; + +export default class Nip04EncryptHandlingStrategy implements IEventHandlingStrategy { + async handle( + backend: NDKNip46Backend, + remotePubkey: string, + params: string[] + ): Promise { + const [ recipientPubkey, payload ] = params; + const recipientUser = new NDKUser({ hexpubkey: recipientPubkey }); + const decryptedPayload = await backend.encrypt(remotePubkey, recipientUser, payload); + + return decryptedPayload; + } +} diff --git a/src/signers/nip46/index.ts b/src/signers/nip46/index.ts index 3223e7f8..a18bb75f 100644 --- a/src/signers/nip46/index.ts +++ b/src/signers/nip46/index.ts @@ -75,11 +75,48 @@ export class NDKNip46Signer implements NDKSigner { } public async encrypt(recipient: NDKUser, value: string): Promise { - throw new Error("not implemented"); + this.debug("asking for encryption"); + + const promise = new Promise((resolve, reject) => { + this.rpc.sendRequest( + this.remotePubkey, + "nip04_encrypt", + [recipient.hexpubkey(), value], + 24133, + (response: NDKRpcResponse) => { + if (!response.error) { + resolve(response.result); + } else { + reject(response.error); + } + } + ); + }); + + return promise; } public async decrypt(sender: NDKUser, value: string): Promise { - throw new Error("not implemented"); + this.debug("asking for decryption"); + + const promise = new Promise((resolve, reject) => { + this.rpc.sendRequest( + this.remotePubkey, + "nip04_decrypt", + [sender.hexpubkey(), value], + 24133, + (response: NDKRpcResponse) => { + if (!response.error) { + const value = JSON.parse(response.result); + resolve(value[0]); + } else { + reject(response.error); + } + } + ); + }); + + return promise; } public async sign(event: NostrEvent): Promise { From 183d0417496b8c5359c6415e7e8f918ce9ff28c1 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 3 Jun 2023 10:21:35 +0200 Subject: [PATCH 121/773] better error-handling when a nip-46 strategy fails --- package.json | 2 +- src/signers/nip46/backend/index.ts | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 7464ad9b..fcb24827 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.3.30", + "version": "0.3.31", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/signers/nip46/backend/index.ts b/src/signers/nip46/backend/index.ts index b8b15737..b6f19583 100644 --- a/src/signers/nip46/backend/index.ts +++ b/src/signers/nip46/backend/index.ts @@ -93,7 +93,12 @@ export class NDKNip46Backend { const strategy = this.handlers[method]; if (strategy) { - response = await strategy.handle(this, remotePubkey, params); + try { + response = await strategy.handle(this, remotePubkey, params); + } catch (e) { + this.debug("error handling event", e, { id, method, params }); + console.error(`error handling event ${id} ${method}`, e); + } } else { this.debug("unsupported method", { method, params }); } From a80a4ad702abe87f5131c1eccdbfcd6d22ced283 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sun, 4 Jun 2023 09:02:45 +0200 Subject: [PATCH 122/773] Permission tokens for NIP-46 connections --- package.json | 2 +- src/signers/nip46/backend/connect.ts | 9 ++++-- src/signers/nip46/backend/index.ts | 19 +++++++++-- src/signers/nip46/index.ts | 48 ++++++++++++++++++++++++++-- 4 files changed, 70 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index fcb24827..eacdc8fe 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.3.31", + "version": "0.3.32", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/signers/nip46/backend/connect.ts b/src/signers/nip46/backend/connect.ts index 578e38d5..4b2162c7 100644 --- a/src/signers/nip46/backend/connect.ts +++ b/src/signers/nip46/backend/connect.ts @@ -6,12 +6,17 @@ export default class ConnectEventHandlingStrategy implements IEventHandlingStrat remotePubkey: string, params: string[] ): Promise { - const [pubkey] = params; + const [pubkey, token] = params; const debug = backend.debug.extend("connect"); debug(`connection request from ${pubkey}`); - if (await backend.pubkeyAllowed(pubkey, "connect")) { + if (token && backend.applyToken) { + debug(`applying token`); + await backend.applyToken(pubkey, token); + } + + if (await backend.pubkeyAllowed(pubkey, "connect", token)) { debug(`connection request from ${pubkey} allowed`); return "ack"; } else { diff --git a/src/signers/nip46/backend/index.ts b/src/signers/nip46/backend/index.ts index b6f19583..c1f5c14f 100644 --- a/src/signers/nip46/backend/index.ts +++ b/src/signers/nip46/backend/index.ts @@ -13,6 +13,11 @@ export type Nip46PermitCallback = ( params?: any ) => Promise; +export type Nip46ApplyTokenCallback = ( + pubkey: string, + token: string +) => Promise; + export interface IEventHandlingStrategy { handle( backend: NDKNip46Backend, @@ -84,6 +89,16 @@ export class NDKNip46Backend { this.handlers[method] = strategy; } + /** + * Overload this method to apply tokens, which can + * wrap permission sets to be applied to a pubkey. + * @param pubkey public key to apply token to + * @param token token to apply + */ + async applyToken(pubkey: string, token: string): Promise { + throw new Error("connection token not supported"); + } + protected async handleIncomingEvent(event: NDKEvent) { const { id, method, params } = (await this.rpc.parseEvent(event)) as any; const remotePubkey = event.pubkey; @@ -95,9 +110,9 @@ export class NDKNip46Backend { if (strategy) { try { response = await strategy.handle(this, remotePubkey, params); - } catch (e) { + } catch (e: any) { this.debug("error handling event", e, { id, method, params }); - console.error(`error handling event ${id} ${method}`, e); + this.rpc.sendResponse(id, remotePubkey, "error", undefined, e.message); } } else { this.debug("unsupported method", { method, params }); diff --git a/src/signers/nip46/index.ts b/src/signers/nip46/index.ts index a18bb75f..b5e34a8e 100644 --- a/src/signers/nip46/index.ts +++ b/src/signers/nip46/index.ts @@ -9,19 +9,55 @@ export class NDKNip46Signer implements NDKSigner { private ndk: NDK; public remoteUser: NDKUser; public remotePubkey: string; + public token: string | undefined; public localSigner: NDKSigner; private rpc: NDKNostrRpc; private debug: debug.Debugger; + + /** + * @param ndk - The NDK instance to use + * @param token - connection token, in the form "npub#otp" + * @param localSigner - The signer that will be used to request events to be signed + */ + public constructor(ndk: NDK, token: string, localSigner?: NDKSigner); + + /** + * @param ndk - The NDK instance to use + * @param remoteNpub - The npub that wants to be published as + * @param localSigner - The signer that will be used to request events to be signed + */ + public constructor(ndk: NDK, remoteNpub: string, localSigner?: NDKSigner); + /** - * * @param ndk - The NDK instance to use * @param remotePubkey - The public key of the npub that wants to be published as * @param localSigner - The signer that will be used to request events to be signed */ - public constructor(ndk: NDK, remotePubkey: string, localSigner?: NDKSigner) { + public constructor(ndk: NDK, remotePubkey: string, localSigner?: NDKSigner); + + /** + * @param ndk - The NDK instance to use + * @param tokenOrRemotePubkey - The public key, or a connection token, of the npub that wants to be published as + * @param localSigner - The signer that will be used to request events to be signed + */ + public constructor(ndk: NDK, tokenOrRemotePubkey: string, localSigner?: NDKSigner) { + let remotePubkey: string; + let token: string | undefined; + + if (tokenOrRemotePubkey.includes("#")) { + const parts = tokenOrRemotePubkey.split("#"); + remotePubkey = (new NDKUser({ npub: parts[0] })).hexpubkey(); + token = parts[1]; + } else if (tokenOrRemotePubkey.startsWith("npub")) { + remotePubkey = (new NDKUser({ npub: tokenOrRemotePubkey })).hexpubkey(); + } else { + remotePubkey = tokenOrRemotePubkey; + } + this.ndk = ndk; this.remotePubkey = remotePubkey; + this.token = token; this.debug = ndk.debug.extend("nip46:signer"); this.remoteUser = new NDKUser({ hexpubkey: remotePubkey }); @@ -57,10 +93,16 @@ export class NDKNip46Signer implements NDKSigner { // introducing a small delay here to give a clear priority to the subscription // to happen first setTimeout(() => { + const connectParams = [localUser.hexpubkey()]; + + if (this.token) { + connectParams.push(this.token); + } + this.rpc.sendRequest( this.remotePubkey, "connect", - [localUser.hexpubkey()], + connectParams, 24133, (response: NDKRpcResponse) => { if (response.result === "ack") { From aec3992d8d82e4dabe5a89797aa9cccc4ff077f3 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 6 Jun 2023 10:17:55 +0200 Subject: [PATCH 123/773] update readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 0439b2cc..ebd29399 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,7 @@ localStorage.debug = 'ndk:*' - [x] NIP-07 - [ ] NIP-26 - [x] NIP-46 + - [x] Permission tokens - Relay discovery - [ ] Gossip-model (NIP-65) - [ ] Implicit relays discovery following pubkey usage From 849965a1235b2120a2b09d9efbb6d48573658d07 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 6 Jun 2023 11:08:35 +0200 Subject: [PATCH 124/773] add relay flapping status --- package.json | 2 +- src/relay/index.ts | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index eacdc8fe..5a0607b0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.3.32", + "version": "0.3.33", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/relay/index.ts b/src/relay/index.ts index 4076889c..17d2f2bf 100644 --- a/src/relay/index.ts +++ b/src/relay/index.ts @@ -13,7 +13,8 @@ export enum NDKRelayStatus { CONNECTED, DISCONNECTING, DISCONNECTED, - RECONNECTING + RECONNECTING, + FLAPPING, } export interface NDKRelayConnectionStats { @@ -114,6 +115,7 @@ export class NDKRelay extends EventEmitter { private handleReconnection() { if (this.isFlapping()) { this.emit("flapping", this, this._connectionStats); + this._status = NDKRelayStatus.FLAPPING; } if (this.connectedAt && Date.now() - this.connectedAt < 5000) { From f326fdece26d3579e2ca603c194d9ff160f1e4a4 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 6 Jun 2023 19:16:56 +0200 Subject: [PATCH 125/773] Add NDKEvent#tag method --- CHANGELOG | 11 ++++++--- package.json | 2 +- src/events/index.test.ts | 48 ++++++++++++++++++++++++++++++++++++++- src/events/index.ts | 46 +++++++++++++++++++++++++++++++++++-- src/events/nip04.ts | 2 +- src/relay/index.ts | 1 + src/subscription/index.ts | 29 +++++++++++++++++++++-- src/user/index.ts | 10 +++++++- 8 files changed, 138 insertions(+), 11 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 0917a367..4ac084a7 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,17 +1,22 @@ # Changelog -2023-05-08 pablof7z +2023-06-06 pablof7z <_@f7z.io> + + Breaking change: `NDKEvent#author` method has been modified to a getter, so previous `author()` calls + need to be updated to `author`. + +2023-05-08 pablof7z <_@f7z.io> Allow creating a relayset from a URL and explicitly passing a set for event publication. (useful for development). -2023-05-04 pablof7z +2023-05-04 pablof7z <_@f7z.io> Obsolete `subject` as a first-class citizen since that's not the case in nostr. Implement NIP-27 mentions. -2023-05-03 pablof7z +2023-05-03 pablof7z <_@f7z.io> Change NDKPool to emit `connect` when the whole pool is connected instead of on a per-relay basis. NDKPool now emits `relay:connect` when a single relay connects as well as a diff --git a/package.json b/package.json index 5a0607b0..35f3786d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.3.33", + "version": "0.4.0", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/index.test.ts b/src/events/index.test.ts index c3eb6b23..866f22c6 100644 --- a/src/events/index.test.ts +++ b/src/events/index.test.ts @@ -1,12 +1,58 @@ -import NDK, { NDKEvent, NDKSubscription } from "../index"; +import NDK, { NDKEvent, NDKSubscription, NDKUser, NostrEvent } from "../index"; describe("NDKEvent", () => { let ndk: NDK; let event: NDKEvent; + let user1: NDKUser; + let user2: NDKUser; beforeEach(() => { ndk = new NDK(); + user1 = new NDKUser({ npub: 'npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft' }); + user2 = new NDKUser({ npub: 'npub12262qa4uhw7u8gdwlgmntqtv7aye8vdcmvszkqwgs0zchel6mz7s6cgrkj' }); event = new NDKEvent(ndk); + event.author = user1; + }); + + describe("tag", () => { + it("tags a user without a marker", () => { + event.tag(user2); + expect(event.tags).toEqual([ ["p", user2.hexpubkey()] ]); + }); + + it("tags a user with a marker", () => { + event.tag(user2, "author"); + expect(event.tags).toEqual([ ["p", user2.hexpubkey(), "author" ] ]); + }); + + it("tags an event without a marker", () => { + const otherEvent = new NDKEvent(ndk, { id: '123'} as NostrEvent); + otherEvent.author = user1; + + event.tag(otherEvent); + expect(event.tags).toEqual([ ["e", otherEvent.id] ]); + }); + + it("tags an event with a marker", () => { + const otherEvent = new NDKEvent(ndk, { id: '123'} as NostrEvent); + otherEvent.author = user1; + event.tag(otherEvent, "marker"); + expect(event.tags).toEqual([ ["e", otherEvent.id, "marker"] ]); + }); + + it("tags an event author when it's different from the signing user", () => { + const otherEvent = new NDKEvent(ndk); + otherEvent.author = user2; + event.tag(otherEvent); + expect(event.tags).toEqual([ ["e", otherEvent.id], ["p", user2.hexpubkey()] ]); + }); + + it("does not tag an event author when it's the same as the signing user", () => { + const otherEvent = new NDKEvent(ndk); + otherEvent.author = user1; + event.tag(otherEvent); + expect(event.tags).toEqual([ ["e", otherEvent.id] ]); + }); }); describe("fetchEvents", () => { diff --git a/src/events/index.ts b/src/events/index.ts index 5c5f19d2..266aeefc 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -1,6 +1,6 @@ import EventEmitter from "eventemitter3"; import { getEventHash, UnsignedEvent } from "nostr-tools"; -import NDK, { NDKRelaySet, NDKUser } from "../index.js"; +import NDK, { NDKRelay, NDKRelaySet, NDKUser } from "../index.js"; import { NDKSigner } from "../signers/index.js"; import Zap from "../zap/index.js"; import { generateContentTags } from "./content-tagger.js"; @@ -40,6 +40,11 @@ export default class NDKEvent extends EventEmitter { public sig?: string; public pubkey = ""; + /** + * The relay that this event was first received from. + */ + public relay: NDKRelay | undefined; + constructor(ndk?: NDK, event?: NostrEvent) { super(); this.ndk = ndk; @@ -67,15 +72,52 @@ export default class NDKEvent extends EventEmitter { } as NostrEvent; } + set author(user: NDKUser) { + this.pubkey = user.hexpubkey(); + } + /** * Returns an NDKUser for the author of the event. */ - public author(): NDKUser { + get author(): NDKUser { const user = new NDKUser({ hexpubkey: this.pubkey }); user.ndk = this.ndk; return user; } + /** + * Tag a user with an optional marker. + * @param user The user to tag. + * @param marker The marker to use in the tag. + */ + public tag(user: NDKUser, marker?: string): void; + + /** + * Tag a user with an optional marker. + * @param event The event to tag. + * @param marker The marker to use in the tag. + * @example + * ```typescript + * reply.tag(opEvent, "reply"); + * // reply.tags => [["e", , , "reply"]] + * ``` + */ + public tag(event: NDKEvent, marker?: string): void; + public tag(userOrEvent: NDKUser | NDKEvent, marker?: string): void { + const tag = userOrEvent.tagReference(); + if (marker) tag.push(marker); + this.tags.push(tag); + + if (userOrEvent instanceof NDKEvent) { + const tagEventAuthor = userOrEvent.author; + + // If it's not tagged event author is not the same as the user signing this event, tag the author + if (tagEventAuthor && this.pubkey !== tagEventAuthor.hexpubkey()) { + this.tag(tagEventAuthor); + } + } + } + /** * Return a NostrEvent object, trying to fill in missing fields * when possible, adding tags when necessary. diff --git a/src/events/nip04.ts b/src/events/nip04.ts index 7290db76..99737f8a 100644 --- a/src/events/nip04.ts +++ b/src/events/nip04.ts @@ -39,7 +39,7 @@ export async function decrypt(this: NDKEvent, sender?: NDKUser, signer?: NDKSign } if (!sender) { - sender = this.author(); + sender = this.author; } this.content = await signer.decrypt(sender, this.content); diff --git a/src/relay/index.ts b/src/relay/index.ts index 17d2f2bf..e8cab523 100644 --- a/src/relay/index.ts +++ b/src/relay/index.ts @@ -182,6 +182,7 @@ export class NDKRelay extends EventEmitter { sub.on("event", (event: NostrEvent) => { const e = new NDKEvent(undefined, event); + e.relay = this; subscription.eventReceived(e, this); }); diff --git a/src/subscription/index.ts b/src/subscription/index.ts index e0bf517e..1a962362 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -84,6 +84,21 @@ export class NDKSubscription extends EventEmitter { public relaySubscriptions: Map; private debug: debug.Debugger; + /** + * Events that have been seen by the subscription, with the time they were first seen. + */ + public eventFirstSeen = new Map(); + + /** + * Relays that have sent an EOSE. + */ + public eosesSeen = new Set(); + + /** + * Events that have been seen by the subscription per relay. + */ + public eventsPerRelay: Map> = new Map(); + public constructor( ndk: NDK, filter: NDKFilter, @@ -211,7 +226,7 @@ export class NDKSubscription extends EventEmitter { } // EVENT handling - private eventFirstSeen = new Map(); + /** * Called when an event is received from a relay or the cache @@ -221,6 +236,17 @@ export class NDKSubscription extends EventEmitter { */ public eventReceived(event: NDKEvent, relay: NDKRelay | undefined, fromCache = false) { if (!fromCache && relay) { + // track the event per relay + let events = this.eventsPerRelay.get(relay); + + if (!events) { + events = new Set(); + this.eventsPerRelay.set(relay, events); + } + + events.add(event.id); + + // mark the event as seen const eventAlreadySeen = this.eventFirstSeen.has(event.id); if (eventAlreadySeen) { @@ -245,7 +271,6 @@ export class NDKSubscription extends EventEmitter { } // EOSE handling - private eosesSeen = new Set(); private eoseTimeout: ReturnType | undefined; public eoseReceived(relay: NDKRelay): void { diff --git a/src/user/index.ts b/src/user/index.ts index 45dd7887..64fa49c4 100644 --- a/src/user/index.ts +++ b/src/user/index.ts @@ -1,5 +1,5 @@ import { nip05, nip19 } from "nostr-tools"; -import Event from "../events/index.js"; +import Event, { NDKTag } from "../events/index.js"; import NDK from "../index.js"; import { NDKFilterOptions } from "../subscription/index.js"; import { follows } from "./follows.js"; @@ -96,4 +96,12 @@ export default class NDKUser { return new Set(); } + + /** + * Get the tag that can be used to reference this user in an event + * @returns + */ + public tagReference(): NDKTag { + return ['p', this.hexpubkey()]; + } } From 6071d41e0f4116325cd2a1b5495a95505e86a6b5 Mon Sep 17 00:00:00 2001 From: franzap <_@franzap.com> Date: Tue, 6 Jun 2023 14:25:14 -0300 Subject: [PATCH 126/773] Add missing @noble/hashes dependency --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index eacdc8fe..f6b00c7a 100644 --- a/package.json +++ b/package.json @@ -48,6 +48,7 @@ }, "dependencies": { "@noble/secp256k1": "^2.0.0", + "@noble/hashes": "^1.3.1", "@scure/base": "^1.1.1", "@typescript-eslint/eslint-plugin": "^5.57.0", "@typescript-eslint/parser": "^5.57.0", From 90311693c7ef99456d9d80bad380ff46763520ff Mon Sep 17 00:00:00 2001 From: franzap <_@franzap.com> Date: Tue, 6 Jun 2023 14:27:17 -0300 Subject: [PATCH 127/773] Add jest config, fix gitignore --- .gitignore | 1 - jest.config.js | 8 ++++++++ 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 jest.config.js diff --git a/.gitignore b/.gitignore index c75f7daa..f4392241 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,6 @@ **/.vscode justfile pnpm-lock.yaml -**/*.js **/*.d.ts **/*.d.ts.map *.tgz diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 00000000..414bf3d6 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,8 @@ +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + preset: 'ts-jest', + testEnvironment: 'node', + moduleNameMapper: { + '^(\\.{1,2}/.*)\\.js$': '$1', + } +}; \ No newline at end of file From f54b28a5bfcfac36ef1e9652b60406f0f34e4172 Mon Sep 17 00:00:00 2001 From: franzap <_@franzap.com> Date: Tue, 6 Jun 2023 14:40:04 -0300 Subject: [PATCH 128/773] fix gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index f4392241..8dc90f86 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,10 @@ **/lib **/.vscode justfile +package-lock.json pnpm-lock.yaml +**/*.js +!jest.config.js **/*.d.ts **/*.d.ts.map *.tgz From f29b17fed87797fb6af03488c92b79eb6ad4cf4d Mon Sep 17 00:00:00 2001 From: pablof7z Date: Wed, 7 Jun 2023 17:47:57 +0200 Subject: [PATCH 129/773] Allow fetching event by id/nip-19 bech32 --- package-lock.json | 4 ++-- package.json | 2 +- src/events/index.ts | 40 +++++++++++++++++++++++++++++++++++++++ src/events/kind.ts | 2 +- src/index.ts | 19 +++++++++++++++++-- src/relay/index.ts | 7 +++++++ src/subscription/index.ts | 26 ++++++++++++++++++++++++- 7 files changed, 93 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index ec9a10eb..89bba7b2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.3.26", + "version": "0.4.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@nostr-dev-kit/ndk", - "version": "0.3.26", + "version": "0.4.1", "license": "MIT", "dependencies": { "@noble/secp256k1": "^2.0.0", diff --git a/package.json b/package.json index 35f3786d..70314f36 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.4.0", + "version": "0.4.4", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/index.ts b/src/events/index.ts index 266aeefc..0e808198 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -159,6 +159,25 @@ export default class NDKEvent extends EventEmitter { return this.tags.filter((tag) => tag[0] === tagName); } + /** + * Get the first tag with the given name + * @param tagName Tag name to search for + * @returns The value of the first tag with the given name, or undefined if no such tag exists + */ + public tagValue(tagName: string): string | undefined { + const tags = this.getMatchingTags(tagName); + if (tags.length === 0) return undefined; + return tags[0][1]; + } + + /** + * Remove all tags with the given name + * @param tagName Tag name to search for + */ + public removeTag(tagName: string): void { + this.tags = this.tags.filter((tag) => tag[0] !== tagName); + } + public async toString() { return await this.toNostrEvent(); } @@ -278,4 +297,25 @@ export default class NDKEvent extends EventEmitter { // await zap.publish(amount); return paymentRequest; } + + /** + * Generates a deletion event of the current event + * + * @param reason The reason for the deletion + * @returns The deletion event + */ + async delete(reason?: string): Promise { + if (!this.ndk) throw new Error("No NDK instance found"); + + this.ndk.assertSigner(); + + const e = new NDKEvent(this.ndk, { + kind: NDKKind.EventDeletion, + content: reason || "", + } as NostrEvent); + e.tag(this); + await e.publish(); + + return e; + } } diff --git a/src/events/kind.ts b/src/events/kind.ts index 42c98e70..1b8e7bf7 100644 --- a/src/events/kind.ts +++ b/src/events/kind.ts @@ -1,6 +1,6 @@ import NDKEvent from "./index.js"; -export declare enum NDKKind { +export enum NDKKind { Metadata = 0, Text = 1, RecommendRelay = 2, diff --git a/src/index.ts b/src/index.ts index 5aa6b898..4323cfd3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -11,7 +11,8 @@ import { NDKFilter, NDKFilterOptions, NDKSubscription, - NDKSubscriptionOptions + NDKSubscriptionOptions, + filterFromId } from "./subscription/index.js"; import NDKUser, { NDKUserParams } from "./user/index.js"; import { NDKUserProfile } from "./user/profile.js"; @@ -124,7 +125,21 @@ export default class NDK extends EventEmitter { /** * Fetch a single event */ - public async fetchEvent(filter: NDKFilter, opts: NDKFilterOptions = {}): Promise { + public async fetchEvent(id: string) : Promise; + public async fetchEvent(filter: NDKFilter, opts: NDKFilterOptions) : Promise; + public async fetchEvent(idOrFilter: string|NDKFilter, opts: NDKFilterOptions = {}) : Promise { + let filter: NDKFilter; + + if (typeof idOrFilter === "string") { + filter = filterFromId(idOrFilter); + } else { + filter = idOrFilter; + } + + if (!filter) { + throw new Error(`Invalid filter: ${JSON.stringify(idOrFilter)}`); + } + return new Promise((resolve) => { const s = this.subscribe(filter, { ...opts, closeOnEose: true }); s.on("event", (event) => { diff --git a/src/relay/index.ts b/src/relay/index.ts index e8cab523..293aceaa 100644 --- a/src/relay/index.ts +++ b/src/relay/index.ts @@ -190,6 +190,13 @@ export class NDKRelay extends EventEmitter { subscription.eoseReceived(this); }); + const unsub = sub.unsub; + sub.unsub = () => { + this.debug(`Unsubscribing from ${JSON.stringify(filter)}`); + this.activeSubscriptions.delete(subscription); + unsub(); + }; + this.activeSubscriptions.add(subscription); subscription.on("close", () => { this.activeSubscriptions.delete(subscription); diff --git a/src/subscription/index.ts b/src/subscription/index.ts index 1a962362..b384a3dc 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -1,5 +1,5 @@ import EventEmitter from "eventemitter3"; -import { Filter as NostrFilter, matchFilter, Sub } from "nostr-tools"; +import { Filter as NostrFilter, matchFilter, Sub, nip19 } from "nostr-tools"; import NDKEvent, { NDKEventId } from "../events/index.js"; import NDK from "../index.js"; import { NDKRelay } from "../relay"; @@ -420,3 +420,27 @@ export function mergeFilters(filters: NDKFilter[]): NDKFilter { return result as NDKFilter; } + +/** + * Creates a valid nostr filter from an event id or a NIP-19 bech32. + */ +export function filterFromId(id: string): NDKFilter { + let decoded; + + try { + decoded = nip19.decode(id); + + switch (decoded.type) { + case 'nevent': return {ids: [decoded.data.id]}; + case 'note': return {ids: [decoded.data]}; + case 'naddr': return { + authors: [decoded.data.pubkey], + "#d": [decoded.data.identifier], + kinds: [decoded.data.kind] + }; + } + } catch (e) { + } + + return {ids: [id]}; +} \ No newline at end of file From eac9ad5a8e5d92f0d9aeb93a9aa86786db33fb6f Mon Sep 17 00:00:00 2001 From: pablof7z Date: Fri, 9 Jun 2023 02:42:04 +0200 Subject: [PATCH 130/773] include all p-tags when tagging an event --- package.json | 2 +- src/events/index.ts | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 70314f36..ba8d639b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.4.4", + "version": "0.4.5", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/index.ts b/src/events/index.ts index 0e808198..cce393e8 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -111,10 +111,17 @@ export default class NDKEvent extends EventEmitter { if (userOrEvent instanceof NDKEvent) { const tagEventAuthor = userOrEvent.author; - // If it's not tagged event author is not the same as the user signing this event, tag the author + // If event author is not the same as the user signing this event, tag the author if (tagEventAuthor && this.pubkey !== tagEventAuthor.hexpubkey()) { this.tag(tagEventAuthor); } + + // tag p-tags in the event if they are not the same as the user signing this event + for (const pTag of userOrEvent.getMatchingTags("p")) { + if (pTag[1] === this.pubkey) continue; + + this.tags.push(["p", pTag[1]]); + } } } From bbcf11087a2dc71e799793f12066ccd4e902e7ec Mon Sep 17 00:00:00 2001 From: pablof7z Date: Fri, 9 Jun 2023 02:45:32 +0200 Subject: [PATCH 131/773] prevent p-tagging duplicates --- src/events/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/events/index.ts b/src/events/index.ts index cce393e8..1fc95657 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -119,6 +119,7 @@ export default class NDKEvent extends EventEmitter { // tag p-tags in the event if they are not the same as the user signing this event for (const pTag of userOrEvent.getMatchingTags("p")) { if (pTag[1] === this.pubkey) continue; + if (this.tags.find((t) => t[0] === 'p' && t[1] === pTag[1])) continue; this.tags.push(["p", pTag[1]]); } From f2bc481d7d1e39e8c3593bbf6b089cf7338f7fa1 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 10 Jun 2023 16:52:18 +0200 Subject: [PATCH 132/773] Add NIP-18 support --- README.md | 1 + src/events/index.ts | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/README.md b/README.md index ebd29399..8cd4b7a7 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,7 @@ localStorage.debug = 'ndk:*' - [ ] LocalStorage - [ ] IndexDB - [~] NIP-04: Encryption support +- [x] NIP-18: Repost - [ ] NIP-26: Event delegation - [ ] NIP-41: Relay authentication - [x] NIP-57: Zaps diff --git a/src/events/index.ts b/src/events/index.ts index 1fc95657..5c54f91c 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -326,4 +326,23 @@ export default class NDKEvent extends EventEmitter { return e; } + + /** + * NIP-18 + * Repost event. + */ + async repost(): Promise { + if (!this.ndk) throw new Error("No NDK instance found"); + + this.ndk.assertSigner(); + + const e = new NDKEvent(this.ndk, { + kind: NDKKind.Repost, + content: "", + } as NostrEvent); + e.tag(this); + await e.publish(); + + return e; + } } From ead62844f0dc61b68b687ade38ec915d9f79942a Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 10 Jun 2023 16:56:08 +0200 Subject: [PATCH 133/773] 0.4.6 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f0107151..841ca210 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.2.2", + "version": "0.4.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@nostr-dev-kit/ndk", - "version": "0.2.2", + "version": "0.4.6", "license": "MIT", "dependencies": { "@scure/base": "^1.1.1", diff --git a/package.json b/package.json index df72e7db..415d7e9a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.4.5", + "version": "0.4.6", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", From 696d2286ba3ce3230572e9f5cd8e8cc8965e7462 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 13 Jun 2023 11:23:20 +0200 Subject: [PATCH 134/773] Fix cache's ego (overestimation of it's ability) Introduce first ndk-kind handler (NIP-23) --- src/events/index.ts | 18 ++++++++++--- src/events/kind.ts | 31 ---------------------- src/events/kinds/article.ts | 37 +++++++++++++++++++++++++++ src/events/kinds/index.ts | 32 +++++++++++++++++++++++ src/index.ts | 2 +- src/subscription/index.ts | 51 +++++++++++++++++++++++++++++-------- src/subscription/utils.ts | 32 +++++++++++++++++++++++ 7 files changed, 158 insertions(+), 45 deletions(-) create mode 100644 src/events/kinds/article.ts create mode 100644 src/events/kinds/index.ts create mode 100644 src/subscription/utils.ts diff --git a/src/events/index.ts b/src/events/index.ts index 5c54f91c..1f7d5ae8 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -1,10 +1,11 @@ import EventEmitter from "eventemitter3"; import { getEventHash, UnsignedEvent } from "nostr-tools"; -import NDK, { NDKRelay, NDKRelaySet, NDKUser } from "../index.js"; +import NDK, { NDKFilter, NDKRelay, NDKRelaySet, NDKUser } from "../index.js"; import { NDKSigner } from "../signers/index.js"; import Zap from "../zap/index.js"; import { generateContentTags } from "./content-tagger.js"; -import { isParamReplaceable, isReplaceable, NDKKind } from "./kind.js"; +import { isParamReplaceable, isReplaceable } from "./kind.js"; +import { NDKKind } from "./kinds/index.js"; import { decrypt, encrypt } from "./nip04.js"; import { encode } from "./nip19.js"; @@ -276,13 +277,24 @@ export default class NDKEvent extends EventEmitter { */ tagReference() { // NIP-33 - if (this.kind && this.kind >= 30000 && this.kind <= 40000) { + if (this.isParamReplaceable()) { return ["a", this.tagId()]; } return ["e", this.tagId()]; } + /** + * Provides the filter that will return matching events for this event. + */ + filter(): NDKFilter { + if (this.isParamReplaceable()) { + return { "#a": [this.tagId()] }; + } else { + return { "#e": [this.tagId()] }; + } + } + /** * Create a zap request for an existing event * diff --git a/src/events/kind.ts b/src/events/kind.ts index 1b8e7bf7..57c00099 100644 --- a/src/events/kind.ts +++ b/src/events/kind.ts @@ -1,36 +1,5 @@ import NDKEvent from "./index.js"; -export enum NDKKind { - Metadata = 0, - Text = 1, - RecommendRelay = 2, - Contacts = 3, - EncryptedDirectMessage = 4, - EventDeletion = 5, - Repost = 6, - Reaction = 7, - BadgeAward = 8, - ChannelCreation = 40, - ChannelMetadata = 41, - ChannelMessage = 42, - ChannelHideMessage = 43, - ChannelMuteUser = 44, - Report = 1984, - ZapRequest = 9734, - Zap = 9735, - MuteList = 10000, - PinList = 10001, - RelayList = 10002, - ClientAuth = 22242, - NostrConnect = 24133, - CategorizedPeopleList = 30000, - CategorizedBookmarkList = 30001, - ProfileBadge = 30008, - BadgeDefinition = 30009, - Article = 30023, - AppSpecificData = 30078 -} - export function isReplaceable(this: NDKEvent): boolean { if (this.kind === undefined) throw new Error("Kind not set"); return this.kind >= 10000 && this.kind < 20000; diff --git a/src/events/kinds/article.ts b/src/events/kinds/article.ts new file mode 100644 index 00000000..29d57cd7 --- /dev/null +++ b/src/events/kinds/article.ts @@ -0,0 +1,37 @@ +import NDK from '../../index.js'; +import NDKEvent, { type NostrEvent } from '../index.js'; +import { NDKKind } from "./index.js"; + +/** + * Represents a NIP-23 article. + */ +export class NDKArticle extends NDKEvent { + constructor(ndk: NDK | undefined, rawEvent?: NostrEvent) { + super(ndk, rawEvent); + this.kind = NDKKind.Article; + } + + get title(): string | undefined { + return this.tagValue('title'); + } + + set title(title: string | undefined) { + if (title) { + this.tags.push(['title', title]); + } else { + this.removeTag('title'); + } + } + + get url(): string | undefined { + return this.tagValue('url'); + } + + set url(url: string | undefined) { + if (url) { + this.tags.push(['url', url]); + } else { + this.removeTag('url'); + } + } +} diff --git a/src/events/kinds/index.ts b/src/events/kinds/index.ts new file mode 100644 index 00000000..9b99d0c0 --- /dev/null +++ b/src/events/kinds/index.ts @@ -0,0 +1,32 @@ +export enum NDKKind { + Metadata = 0, + Text = 1, + RecommendRelay = 2, + Contacts = 3, + EncryptedDirectMessage = 4, + EventDeletion = 5, + Repost = 6, + Reaction = 7, + BadgeAward = 8, + ChannelCreation = 40, + ChannelMetadata = 41, + ChannelMessage = 42, + ChannelHideMessage = 43, + ChannelMuteUser = 44, + Report = 1984, + ZapRequest = 9734, + Zap = 9735, + MuteList = 10000, + PinList = 10001, + RelayList = 10002, + ClientAuth = 22242, + NostrConnect = 24133, + CategorizedPeopleList = 30000, + CategorizedBookmarkList = 30001, + ProfileBadge = 30008, + BadgeDefinition = 30009, + Article = 30023, + AppSpecificData = 30078 +} + +export * from './article.js'; \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 4323cfd3..8c8b7701 100644 --- a/src/index.ts +++ b/src/index.ts @@ -18,7 +18,7 @@ import NDKUser, { NDKUserParams } from "./user/index.js"; import { NDKUserProfile } from "./user/profile.js"; export * from "./events/index.js"; -export { NDKKind } from "./events/kind.js"; +export * from "./events/kinds/index.js"; export * from "./relay/index.js"; export * from "./relay/sets/index.js"; export * from "./signers/index.js"; diff --git a/src/subscription/index.ts b/src/subscription/index.ts index b384a3dc..c2773d3a 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -5,6 +5,7 @@ import NDK from "../index.js"; import { NDKRelay } from "../relay"; import { calculateRelaySetFromFilter } from "../relay/sets/calculate"; import { NDKRelaySet } from "../relay/sets/index.js"; +import { queryFullyFilled } from "./utils.js"; export type NDKFilter = NostrFilter; @@ -41,6 +42,11 @@ export interface NDKSubscriptionOptions { * @default 100 */ groupableDelay?: number; + + /** + * The subscription ID to use for the subscription. + */ + subId?: string; } /** @@ -108,12 +114,12 @@ export class NDKSubscription extends EventEmitter { ) { super(); this.ndk = ndk; - this.subId = subId || Math.floor(Math.random() * 9999991000).toString(); // TODO: use UUID + this.opts = { ...defaultOpts, ...(opts || {}) }; + this.subId = subId || opts?.subId || generateFilterId(filter); this.filter = filter; this.relaySet = relaySet; - this.opts = { ...defaultOpts, ...(opts || {}) }; this.relaySubscriptions = new Map(); - this.debug = ndk.debug.extend("subscription"); + this.debug = ndk.debug.extend(`subscription:${this.subId}`); // validate that the caller is not expecting a persistent // subscription while using an option that will only hit the cache @@ -162,6 +168,26 @@ export class NDKSubscription extends EventEmitter { return this.opts?.cacheUsage !== NDKSubscriptionCacheUsage.ONLY_CACHE; } + private shouldWaitForCache(): boolean { + return ( + // Must want to close on EOSE; subscriptions + // that want to receive further updates must + // always hit the relay + this.opts.closeOnEose && + + // Cache adapter must claim to be fast + !!this.ndk.cacheAdapter?.locking && + + // If we don't have to query relays there's no need + // to wait for the cache + this.shouldQueryRelays() && + + // If explicitly told to run in parallel, then + // we should not wait for the cache + this.opts.cacheUsage !== NDKSubscriptionCacheUsage.PARALLEL + ); + } + /** * Start the subscription. This is the main method that should be called * after creating a subscription. @@ -172,18 +198,14 @@ export class NDKSubscription extends EventEmitter { if (this.shouldQueryCache()) { cachePromise = this.startWithCache(); - const shouldWaitForCache = - this.ndk.cacheAdapter?.locking && - this.shouldQueryRelays() && - this.opts?.cacheUsage !== NDKSubscriptionCacheUsage.PARALLEL; - if (shouldWaitForCache) { + if (this.shouldWaitForCache()) { this.debug("waiting for cache to finish"); await cachePromise; // if the cache has a hit, return early - if (this.eventFirstSeen.size > 0) { - this.debug("cache hit, skipping relay query"); + if (queryFullyFilled(this)) { + this.debug("cache hit, fully filled: skipping relay query"); this.emit("eose", this); return; } @@ -443,4 +465,13 @@ export function filterFromId(id: string): NDKFilter { } return {ids: [id]}; +} + +/** + * Generates a random filter id, based on the filter keys. + */ +function generateFilterId(filter: NDKFilter) { + const id = Object.keys(filter)||[]; + id.push(Math.floor(Math.random() * 999999).toString()); + return id.join('-'); } \ No newline at end of file diff --git a/src/subscription/utils.ts b/src/subscription/utils.ts new file mode 100644 index 00000000..d94a8c3d --- /dev/null +++ b/src/subscription/utils.ts @@ -0,0 +1,32 @@ +import { NDKFilter, NDKSubscription } from "./index.js"; + +/** + * Checks if a subscription is fully guaranteed to have been filled. + * + * This is useful to determine if a cache hit fully satisfies a subscription. + * + * @param subscription + * @returns + */ +export function queryFullyFilled(subscription: NDKSubscription): boolean { + if (filterIncludesIds(subscription.filter)) { + if (resultHasAllRequestedIds(subscription)) { + return true; + } + } + + return false; +} + +function filterIncludesIds(filter: NDKFilter): boolean { + return !!filter['ids']; +} + +function resultHasAllRequestedIds(subscription: NDKSubscription): boolean { + const ids = subscription.filter['ids']; + + return ( + !!ids && + ids.length === subscription.eventFirstSeen.size + ); +} \ No newline at end of file From 435200c7c002a5acbb4227428ffdc418826d3e29 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 13 Jun 2023 11:23:46 +0200 Subject: [PATCH 135/773] 0.5.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 841ca210..0c502de2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.4.6", + "version": "0.5.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@nostr-dev-kit/ndk", - "version": "0.4.6", + "version": "0.5.0", "license": "MIT", "dependencies": { "@scure/base": "^1.1.1", diff --git a/package.json b/package.json index 415d7e9a..3bdaee5d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.4.6", + "version": "0.5.0", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", From b024b446d371e4aafb304a3e1e8b8286ac8b7f4c Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 13 Jun 2023 11:55:54 +0200 Subject: [PATCH 136/773] fix wrong deploy --- src/events/content-tagger.test.ts | 4 +++- src/events/content-tagger.ts | 2 ++ src/events/index.test.ts | 8 ++++---- src/events/kinds/article.ts | 17 +++++++++++++++-- src/events/kinds/index.ts | 2 +- 5 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/events/content-tagger.test.ts b/src/events/content-tagger.test.ts index 568f43f7..11d6eba7 100644 --- a/src/events/content-tagger.test.ts +++ b/src/events/content-tagger.test.ts @@ -35,7 +35,7 @@ describe("generateContentTags", () => { expect(processedTags.length).toEqual(0); }); - it("should handle existing tags and update indexes accordingly", () => { + fit("should handle existing tags and update indexes accordingly", () => { const content = "This is a sample content with @npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft and @note1d2mheza0d5z5yycucu94nw37e6gyl4vwl6gavyku86rshkhexq6q30s0g7 tags."; const tags: NDKTag[] = [["p", "existing_p"]]; @@ -45,6 +45,8 @@ describe("generateContentTags", () => { tags ); + console.log(processedContent, processedTags); + expect(processedContent).toEqual( "This is a sample content with nostr:npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft and nostr:note1d2mheza0d5z5yycucu94nw37e6gyl4vwl6gavyku86rshkhexq6q30s0g7 tags." ); diff --git a/src/events/content-tagger.ts b/src/events/content-tagger.ts index c55359b4..6f192aa3 100644 --- a/src/events/content-tagger.ts +++ b/src/events/content-tagger.ts @@ -31,6 +31,8 @@ export function generateContentTags( return tag; } + console.log({tag}); + if (!tags.find((t) => t[0] === t[0] && t[1] === t[1])) { tags.push(t); } diff --git a/src/events/index.test.ts b/src/events/index.test.ts index 866f22c6..fcf430e8 100644 --- a/src/events/index.test.ts +++ b/src/events/index.test.ts @@ -26,7 +26,7 @@ describe("NDKEvent", () => { }); it("tags an event without a marker", () => { - const otherEvent = new NDKEvent(ndk, { id: '123'} as NostrEvent); + const otherEvent = new NDKEvent(ndk, { id: '123', kind: 1} as NostrEvent); otherEvent.author = user1; event.tag(otherEvent); @@ -34,21 +34,21 @@ describe("NDKEvent", () => { }); it("tags an event with a marker", () => { - const otherEvent = new NDKEvent(ndk, { id: '123'} as NostrEvent); + const otherEvent = new NDKEvent(ndk, { id: '123', kind: 1} as NostrEvent); otherEvent.author = user1; event.tag(otherEvent, "marker"); expect(event.tags).toEqual([ ["e", otherEvent.id, "marker"] ]); }); it("tags an event author when it's different from the signing user", () => { - const otherEvent = new NDKEvent(ndk); + const otherEvent = new NDKEvent(ndk, { kind: 1 } as NostrEvent); otherEvent.author = user2; event.tag(otherEvent); expect(event.tags).toEqual([ ["e", otherEvent.id], ["p", user2.hexpubkey()] ]); }); it("does not tag an event author when it's the same as the signing user", () => { - const otherEvent = new NDKEvent(ndk); + const otherEvent = new NDKEvent(ndk, { kind: 1 } as NostrEvent); otherEvent.author = user1; event.tag(otherEvent); expect(event.tags).toEqual([ ["e", otherEvent.id] ]); diff --git a/src/events/kinds/article.ts b/src/events/kinds/article.ts index 29d57cd7..8822c947 100644 --- a/src/events/kinds/article.ts +++ b/src/events/kinds/article.ts @@ -1,16 +1,27 @@ import NDK from '../../index.js'; -import NDKEvent, { type NostrEvent } from '../index.js'; +import { type NostrEvent } from '../index.js'; +import NDKEvent from '../index.js'; import { NDKKind } from "./index.js"; /** * Represents a NIP-23 article. */ -export class NDKArticle extends NDKEvent { +class NDKArticle extends NDKEvent { constructor(ndk: NDK | undefined, rawEvent?: NostrEvent) { super(ndk, rawEvent); this.kind = NDKKind.Article; } + /** + * Creates a NDKArticle from an existing NDKEvent. + * + * @param event NDKEVent to create the NDKArticle from. + * @returns NDKArticle + */ + static from(event: NDKEvent) { + return new NDKArticle(event.ndk, event.rawEvent()); + } + get title(): string | undefined { return this.tagValue('title'); } @@ -35,3 +46,5 @@ export class NDKArticle extends NDKEvent { } } } + +export default NDKArticle; \ No newline at end of file diff --git a/src/events/kinds/index.ts b/src/events/kinds/index.ts index 9b99d0c0..1af3b3f7 100644 --- a/src/events/kinds/index.ts +++ b/src/events/kinds/index.ts @@ -29,4 +29,4 @@ export enum NDKKind { AppSpecificData = 30078 } -export * from './article.js'; \ No newline at end of file +// export * from './article.js'; \ No newline at end of file From 0aa26c2a82f01f86a89d8e817b625900296735a1 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 13 Jun 2023 11:55:59 +0200 Subject: [PATCH 137/773] 0.5.1 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0c502de2..530a20e7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.5.0", + "version": "0.5.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@nostr-dev-kit/ndk", - "version": "0.5.0", + "version": "0.5.1", "license": "MIT", "dependencies": { "@scure/base": "^1.1.1", diff --git a/package.json b/package.json index 3bdaee5d..e7166ac4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.5.0", + "version": "0.5.1", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", From ccfa365faacb37aa5a4f6505bbd82a0e4b640db8 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Thu, 15 Jun 2023 12:01:00 +0200 Subject: [PATCH 138/773] fix incorrect subscription grouping --- package.json | 2 +- src/relay/sets/index.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index e7166ac4..60018736 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.5.1", + "version": "0.5.2", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/relay/sets/index.ts b/src/relay/sets/index.ts index f752779a..6d912981 100644 --- a/src/relay/sets/index.ts +++ b/src/relay/sets/index.ts @@ -66,7 +66,7 @@ export class NDKRelaySet { const subGroupableId = subscription.groupableId(); const groupableId = `${this.getId()}:${subGroupableId}`; - if (!groupableId) { + if (!subGroupableId) { this.executeSubscription(subscription); return subscription; } From 290eed35477cc10a9a12c8a0452e7a19b62db623 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Fri, 16 Jun 2023 10:31:52 +0200 Subject: [PATCH 139/773] improve filter() documentation with examples --- src/events/index.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/events/index.ts b/src/events/index.ts index 1f7d5ae8..afcef646 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -286,6 +286,15 @@ export default class NDKEvent extends EventEmitter { /** * Provides the filter that will return matching events for this event. + * + * @example + * event = new NDKEvent(ndk, { kind: 30000, pubkey: 'pubkey', tags: [ ["d", "d-code"] ] }); + * event.filter(); // { "#a": ["30000:pubkey:d-code"] } + * @example + * event = new NDKEvent(ndk, { kind: 1, pubkey: 'pubkey', id: "eventid" }); + * event.filter(); // { "#e": ["eventid"] } + * + * @returns The filter that will return matching events for this event */ filter(): NDKFilter { if (this.isParamReplaceable()) { From 7f4e4864ea3b67a1692787e487116d35f5e8cc89 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Fri, 16 Jun 2023 13:12:45 +0200 Subject: [PATCH 140/773] allow subscriptions to decide when the subscription starts --- src/index.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/index.ts b/src/index.ts index 8c8b7701..eef00034 100644 --- a/src/index.ts +++ b/src/index.ts @@ -95,15 +95,17 @@ export default class NDK extends EventEmitter { * @param filter * @param opts * @param relaySet explicit relay set to use + * @param autoStart automatically start the subscription * @returns NDKSubscription */ public subscribe( filter: NDKFilter, opts?: NDKSubscriptionOptions, - relaySet?: NDKRelaySet + relaySet?: NDKRelaySet, + autoStart = true ): NDKSubscription { const subscription = new NDKSubscription(this, filter, opts, relaySet); - subscription.start(); + if (autoStart) subscription.start(); return subscription; } @@ -141,7 +143,7 @@ export default class NDK extends EventEmitter { } return new Promise((resolve) => { - const s = this.subscribe(filter, { ...opts, closeOnEose: true }); + const s = this.subscribe(filter, { ...opts, closeOnEose: true }, undefined, false); s.on("event", (event) => { event.ndk = this; resolve(event); @@ -150,6 +152,8 @@ export default class NDK extends EventEmitter { s.on("eose", () => { resolve(null); }); + + s.start(); }); } @@ -163,7 +167,7 @@ export default class NDK extends EventEmitter { return new Promise((resolve) => { const events: Map = new Map(); - const relaySetSubscription = this.subscribe(filter, { ...opts, closeOnEose: true }); + const relaySetSubscription = this.subscribe(filter, { ...opts, closeOnEose: true }, undefined, false); relaySetSubscription.on("event", (event: NDKEvent) => { const existingEvent = events.get(event.tagId()); @@ -177,6 +181,8 @@ export default class NDK extends EventEmitter { relaySetSubscription.on("eose", () => { resolve(new Set(events.values())); }); + + relaySetSubscription.start(); }); } From 396aac5059eaf1b3db5299c9770f2cff22db175c Mon Sep 17 00:00:00 2001 From: pablof7z Date: Fri, 16 Jun 2023 13:13:12 +0200 Subject: [PATCH 141/773] bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 60018736..16c24bf4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.5.2", + "version": "0.5.3", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", From cbaa105df15f2bcf9fb4268fa99f61b9046eced6 Mon Sep 17 00:00:00 2001 From: Sam Samskies Date: Sat, 17 Jun 2023 20:49:43 -0500 Subject: [PATCH 142/773] add relaySet param to fetchEvent and fetchEvents --- src/index.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/index.ts b/src/index.ts index eef00034..cbff7d4f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -129,7 +129,7 @@ export default class NDK extends EventEmitter { */ public async fetchEvent(id: string) : Promise; public async fetchEvent(filter: NDKFilter, opts: NDKFilterOptions) : Promise; - public async fetchEvent(idOrFilter: string|NDKFilter, opts: NDKFilterOptions = {}) : Promise { + public async fetchEvent(idOrFilter: string|NDKFilter, opts: NDKFilterOptions = {}, relaySet?: NDKRelaySet) : Promise { let filter: NDKFilter; if (typeof idOrFilter === "string") { @@ -143,7 +143,7 @@ export default class NDK extends EventEmitter { } return new Promise((resolve) => { - const s = this.subscribe(filter, { ...opts, closeOnEose: true }, undefined, false); + const s = this.subscribe(filter, { ...opts, closeOnEose: true }, relaySet, false); s.on("event", (event) => { event.ndk = this; resolve(event); @@ -162,12 +162,13 @@ export default class NDK extends EventEmitter { */ public async fetchEvents( filter: NDKFilter, - opts: NDKFilterOptions = {} + opts: NDKFilterOptions = {}, + relaySet?: NDKRelaySet, ): Promise> { return new Promise((resolve) => { const events: Map = new Map(); - const relaySetSubscription = this.subscribe(filter, { ...opts, closeOnEose: true }, undefined, false); + const relaySetSubscription = this.subscribe(filter, { ...opts, closeOnEose: true }, relaySet, false); relaySetSubscription.on("event", (event: NDKEvent) => { const existingEvent = events.get(event.tagId()); From 1f6f2220000d8d756e7abb3ebf5df9b31ccb77ca Mon Sep 17 00:00:00 2001 From: pablof7z Date: Mon, 19 Jun 2023 10:21:11 +0200 Subject: [PATCH 143/773] update NIP-18 repost with `k` tag --- package.json | 2 +- src/events/index.ts | 23 ++++++------------- src/events/kinds/index.ts | 1 + src/events/repost.ts | 48 +++++++++++++++++++++++++++++++++++++++ src/subscription/index.ts | 19 ++++++++++++---- 5 files changed, 72 insertions(+), 21 deletions(-) create mode 100644 src/events/repost.ts diff --git a/package.json b/package.json index 16c24bf4..d4552d79 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.5.3", + "version": "0.5.4", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/index.ts b/src/events/index.ts index afcef646..78ab6b74 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -8,6 +8,7 @@ import { isParamReplaceable, isReplaceable } from "./kind.js"; import { NDKKind } from "./kinds/index.js"; import { decrypt, encrypt } from "./nip04.js"; import { encode } from "./nip19.js"; +import { repost } from "./repost.js"; export type NDKEventId = string; export type NDKTag = string[]; @@ -349,21 +350,11 @@ export default class NDKEvent extends EventEmitter { } /** - * NIP-18 - * Repost event. + * NIP-18 reposting event. + * + * @param publish Whether to publish the reposted event automatically + * @param signer The signer to use for signing the reposted event + * @returns The reposted event */ - async repost(): Promise { - if (!this.ndk) throw new Error("No NDK instance found"); - - this.ndk.assertSigner(); - - const e = new NDKEvent(this.ndk, { - kind: NDKKind.Repost, - content: "", - } as NostrEvent); - e.tag(this); - await e.publish(); - - return e; - } + public repost = repost.bind(this); } diff --git a/src/events/kinds/index.ts b/src/events/kinds/index.ts index 1af3b3f7..b19e195f 100644 --- a/src/events/kinds/index.ts +++ b/src/events/kinds/index.ts @@ -8,6 +8,7 @@ export enum NDKKind { Repost = 6, Reaction = 7, BadgeAward = 8, + GenericRepost = 16, ChannelCreation = 40, ChannelMetadata = 41, ChannelMessage = 42, diff --git a/src/events/repost.ts b/src/events/repost.ts new file mode 100644 index 00000000..708d8034 --- /dev/null +++ b/src/events/repost.ts @@ -0,0 +1,48 @@ +import NDKEvent, { NostrEvent } from "./index.js"; +import { NDKKind } from "./kinds/index.js"; +import { NDKSigner } from "../signers/index.js"; + +/** + * NIP-18 reposting event. + * + * @param publish Whether to publish the reposted event automatically + * @param signer The signer to use for signing the reposted event + * @returns The reposted event + */ +export async function repost(this: NDKEvent, publish = true, signer?: NDKSigner) { + if (!signer) { + if (!this.ndk) throw new Error("No NDK instance found"); + this.ndk.assertSigner(); + signer = this.ndk.signer; + } + + if (!signer) { + throw new Error("No signer available"); + } + + const user = await signer.user(); + + const e = new NDKEvent(this.ndk, { + kind: getKind(this), + content: "", + pubkey: user.hexpubkey() + } as NostrEvent); + e.tag(this); + + if (e.kind === NDKKind.GenericRepost) { + e.tags.push(['k', this.kind!.toString()]); + } + + await e.sign(signer); + if (publish) await e.publish(); + + return e; +} + +function getKind(event: NDKEvent): NDKKind { + if (event.kind === 1) { + return NDKKind.Repost; + } + + return NDKKind.GenericRepost; +} \ No newline at end of file diff --git a/src/subscription/index.ts b/src/subscription/index.ts index c2773d3a..eb443003 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -471,7 +471,18 @@ export function filterFromId(id: string): NDKFilter { * Generates a random filter id, based on the filter keys. */ function generateFilterId(filter: NDKFilter) { - const id = Object.keys(filter)||[]; - id.push(Math.floor(Math.random() * 999999).toString()); - return id.join('-'); -} \ No newline at end of file + const keys = Object.keys(filter)||[]; + const subId = []; + + for (const key of keys) { + if (key === 'kinds') { + const v = [key, filter.kinds!.join(',')]; + subId.push(v.join(':')); + } else { + subId.push(key); + } + } + + subId.push(Math.floor(Math.random() * 999999999).toString()); + return subId.join('-'); +} From 03d95c0cb49d295fb6fc998b8d0528906a4eef94 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Mon, 19 Jun 2023 10:41:58 +0200 Subject: [PATCH 144/773] docs --- docs/Exports.md | 267 +++++++ docs/{interfaces => }/GetUserParams.md | 18 +- docs/{README.md => Home.md} | 83 ++- .../IEventHandlingStrategy.md | 8 +- docs/{interfaces => }/NDKCacheAdapter.md | 20 +- docs/NDKConstructorParams.md | 61 ++ docs/NDKEvent.md | 704 ++++++++++++++++++ docs/{interfaces => }/NDKFilterOptions.md | 6 +- docs/NDKKind.md | 325 ++++++++ docs/{classes => }/NDKNip07Signer.md | 52 +- docs/NDKNip46Backend.md | 257 +++++++ docs/NDKNip46Signer.md | 239 ++++++ docs/NDKNostrRpc.md | 134 ++++ docs/{classes => }/NDKPrivateKeySigner.md | 64 +- docs/NDKRelay.md | 267 +++++++ docs/NDKRelayConnectionStats.md | 58 ++ docs/{classes => }/NDKRelaySet.md | 50 +- docs/NDKRelayStatus.md | 72 ++ docs/NDKRpcRequest.md | 61 ++ docs/NDKRpcResponse.md | 50 ++ docs/{interfaces => }/NDKSigner.md | 42 +- docs/NDKSubscription.md | 296 ++++++++ docs/{enums => }/NDKSubscriptionCacheUsage.md | 18 +- docs/NDKSubscriptionGroup.md | 303 ++++++++ .../NDKSubscriptionOptions.md | 33 +- docs/NDKUser.md | 191 +++++ docs/{interfaces => }/NDKUserProfile.md | 42 +- docs/{interfaces => }/NDKZapInvoice.md | 30 +- docs/_Sidebar.md | 4 + docs/classes/NDKEvent.md | 470 ------------ docs/classes/NDKNip46Backend.md | 177 ----- docs/classes/NDKNip46Signer.md | 193 ----- docs/classes/NDKRelay.md | 269 ------- docs/classes/NDKSubscription.md | 259 ------- docs/classes/NDKSubscriptionGroup.md | 254 ------- docs/classes/NDKUser.md | 176 ----- docs/classes/default.md | 271 ------- docs/default.md | 286 +++++++ docs/enums/NDKKind.md | 316 -------- docs/enums/NDKRelayStatus.md | 63 -- docs/interfaces/NDKConstructorParams.md | 63 -- docs/interfaces/NDKRelayConnectionStats.md | 60 -- docs/modules.md | 213 ------ package.json | 5 +- src/events/index.ts | 2 + 45 files changed, 3808 insertions(+), 3024 deletions(-) create mode 100644 docs/Exports.md rename docs/{interfaces => }/GetUserParams.md (61%) rename docs/{README.md => Home.md} (81%) rename docs/{interfaces => }/IEventHandlingStrategy.md (54%) rename docs/{interfaces => }/NDKCacheAdapter.md (67%) create mode 100644 docs/NDKConstructorParams.md create mode 100644 docs/NDKEvent.md rename docs/{interfaces => }/NDKFilterOptions.md (58%) create mode 100644 docs/NDKKind.md rename docs/{classes => }/NDKNip07Signer.md (57%) create mode 100644 docs/NDKNip46Backend.md create mode 100644 docs/NDKNip46Signer.md create mode 100644 docs/NDKNostrRpc.md rename docs/{classes => }/NDKPrivateKeySigner.md (54%) create mode 100644 docs/NDKRelay.md create mode 100644 docs/NDKRelayConnectionStats.md rename docs/{classes => }/NDKRelaySet.md (59%) create mode 100644 docs/NDKRelayStatus.md create mode 100644 docs/NDKRpcRequest.md create mode 100644 docs/NDKRpcResponse.md rename docs/{interfaces => }/NDKSigner.md (60%) create mode 100644 docs/NDKSubscription.md rename docs/{enums => }/NDKSubscriptionCacheUsage.md (57%) create mode 100644 docs/NDKSubscriptionGroup.md rename docs/{interfaces => }/NDKSubscriptionOptions.md (54%) create mode 100644 docs/NDKUser.md rename docs/{interfaces => }/NDKUserProfile.md (64%) rename docs/{interfaces => }/NDKZapInvoice.md (64%) create mode 100644 docs/_Sidebar.md delete mode 100644 docs/classes/NDKEvent.md delete mode 100644 docs/classes/NDKNip46Backend.md delete mode 100644 docs/classes/NDKNip46Signer.md delete mode 100644 docs/classes/NDKRelay.md delete mode 100644 docs/classes/NDKSubscription.md delete mode 100644 docs/classes/NDKSubscriptionGroup.md delete mode 100644 docs/classes/NDKUser.md delete mode 100644 docs/classes/default.md create mode 100644 docs/default.md delete mode 100644 docs/enums/NDKKind.md delete mode 100644 docs/enums/NDKRelayStatus.md delete mode 100644 docs/interfaces/NDKConstructorParams.md delete mode 100644 docs/interfaces/NDKRelayConnectionStats.md delete mode 100644 docs/modules.md diff --git a/docs/Exports.md b/docs/Exports.md new file mode 100644 index 00000000..52a7c23a --- /dev/null +++ b/docs/Exports.md @@ -0,0 +1,267 @@ +# NDK + +## Table of contents + +### Enumerations + +- [NDKKind](../wiki/NDKKind) +- [NDKRelayStatus](../wiki/NDKRelayStatus) +- [NDKSubscriptionCacheUsage](../wiki/NDKSubscriptionCacheUsage) + +### Classes + +- [NDKEvent](../wiki/NDKEvent) +- [NDKNip07Signer](../wiki/NDKNip07Signer) +- [NDKNip46Backend](../wiki/NDKNip46Backend) +- [NDKNip46Signer](../wiki/NDKNip46Signer) +- [NDKNostrRpc](../wiki/NDKNostrRpc) +- [NDKPrivateKeySigner](../wiki/NDKPrivateKeySigner) +- [NDKRelay](../wiki/NDKRelay) +- [NDKRelaySet](../wiki/NDKRelaySet) +- [NDKSubscriptionGroup](../wiki/NDKSubscriptionGroup) +- [NDKUser](../wiki/NDKUser) +- [default](../wiki/default) + +### Interfaces + +- [GetUserParams](../wiki/GetUserParams) +- [IEventHandlingStrategy](../wiki/IEventHandlingStrategy) +- [NDKCacheAdapter](../wiki/NDKCacheAdapter) +- [NDKConstructorParams](../wiki/NDKConstructorParams) +- [NDKFilterOptions](../wiki/NDKFilterOptions) +- [NDKRelayConnectionStats](../wiki/NDKRelayConnectionStats) +- [NDKRpcRequest](../wiki/NDKRpcRequest) +- [NDKRpcResponse](../wiki/NDKRpcResponse) +- [NDKSigner](../wiki/NDKSigner) +- [NDKSubscriptionOptions](../wiki/NDKSubscriptionOptions) +- [NDKUserProfile](../wiki/NDKUserProfile) +- [NDKZapInvoice](../wiki/NDKZapInvoice) + +### Type Aliases + +- [NDKEventId](../wiki/Exports#ndkeventid) +- [NDKFilter](../wiki/Exports#ndkfilter) +- [NDKTag](../wiki/Exports#ndktag) +- [Nip46ApplyTokenCallback](../wiki/Exports#nip46applytokencallback) +- [Nip46PermitCallback](../wiki/Exports#nip46permitcallback) +- [NostrEvent](../wiki/Exports#nostrevent) + +### Variables + +- [defaultOpts](../wiki/Exports#defaultopts) + +### Functions + +- [filterFromId](../wiki/Exports#filterfromid) +- [mergeEvent](../wiki/Exports#mergeevent) +- [mergeFilters](../wiki/Exports#mergefilters) +- [zapInvoiceFromEvent](../wiki/Exports#zapinvoicefromevent) + +### Events + +- [NDKSubscription](../wiki/NDKSubscription) + +## Type Aliases + +### NDKEventId + +Ƭ **NDKEventId**: `string` + +#### Defined in + +[src/events/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L13) + +___ + +### NDKFilter + +Ƭ **NDKFilter**: `NostrFilter` + +#### Defined in + +[src/subscription/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L10) + +___ + +### NDKTag + +Ƭ **NDKTag**: `string`[] + +#### Defined in + +[src/events/index.ts:14](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L14) + +___ + +### Nip46ApplyTokenCallback + +Ƭ **Nip46ApplyTokenCallback**: (`pubkey`: `string`, `token`: `string`) => `Promise`<`void`\> + +#### Type declaration + +▸ (`pubkey`, `token`): `Promise`<`void`\> + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `pubkey` | `string` | +| `token` | `string` | + +##### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/signers/nip46/backend/index.ts:16](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L16) + +___ + +### Nip46PermitCallback + +Ƭ **Nip46PermitCallback**: (`pubkey`: `string`, `method`: `string`, `params?`: `any`) => `Promise`<`boolean`\> + +#### Type declaration + +▸ (`pubkey`, `method`, `params?`): `Promise`<`boolean`\> + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `pubkey` | `string` | +| `method` | `string` | +| `params?` | `any` | + +##### Returns + +`Promise`<`boolean`\> + +#### Defined in + +[src/signers/nip46/backend/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L10) + +___ + +### NostrEvent + +Ƭ **NostrEvent**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `content` | `string` | +| `created_at` | `number` | +| `id?` | `string` | +| `kind?` | [`NDKKind`](../wiki/NDKKind) \| `number` | +| `pubkey` | `string` | +| `sig?` | `string` | +| `tags` | [`NDKTag`](../wiki/Exports#ndktag)[] | + +#### Defined in + +[src/events/index.ts:16](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L16) + +## Variables + +### defaultOpts + +• `Const` **defaultOpts**: [`NDKSubscriptionOptions`](../wiki/NDKSubscriptionOptions) + +Default subscription options. + +#### Defined in + +[src/subscription/index.ts:55](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L55) + +## Functions + +### filterFromId + +▸ **filterFromId**(`id`): [`NDKFilter`](../wiki/Exports#ndkfilter) + +Creates a valid nostr filter from an event id or a NIP-19 bech32. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `id` | `string` | + +#### Returns + +[`NDKFilter`](../wiki/Exports#ndkfilter) + +#### Defined in + +[src/subscription/index.ts:449](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L449) + +___ + +### mergeEvent + +▸ **mergeEvent**(`event`, `profile`): [`NDKUserProfile`](../wiki/NDKUserProfile) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `event` | [`NDKEvent`](../wiki/NDKEvent) | +| `profile` | [`NDKUserProfile`](../wiki/NDKUserProfile) | + +#### Returns + +[`NDKUserProfile`](../wiki/NDKUserProfile) + +#### Defined in + +[src/user/profile.ts:16](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/profile.ts#L16) + +___ + +### mergeFilters + +▸ **mergeFilters**(`filters`): [`NDKFilter`](../wiki/Exports#ndkfilter) + +Go through all the passed filters, which should be +relatively similar, and merge them. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `filters` | [`NDKFilter`](../wiki/Exports#ndkfilter)[] | + +#### Returns + +[`NDKFilter`](../wiki/Exports#ndkfilter) + +#### Defined in + +[src/subscription/index.ts:426](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L426) + +___ + +### zapInvoiceFromEvent + +▸ **zapInvoiceFromEvent**(`event`): [`NDKZapInvoice`](../wiki/NDKZapInvoice) \| ``null`` + +Parses a zap invoice from a kind 9735 event + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `event` | [`NDKEvent`](../wiki/NDKEvent) | The event to parse | + +#### Returns + +[`NDKZapInvoice`](../wiki/NDKZapInvoice) \| ``null`` + +NDKZapInvoice | null + +#### Defined in + +[src/zap/invoice.ts:21](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/zap/invoice.ts#L21) diff --git a/docs/interfaces/GetUserParams.md b/docs/GetUserParams.md similarity index 61% rename from docs/interfaces/GetUserParams.md rename to docs/GetUserParams.md index e1904226..cf02c935 100644 --- a/docs/interfaces/GetUserParams.md +++ b/docs/GetUserParams.md @@ -1,5 +1,3 @@ -[NDK](../README.md) / [Exports](../modules.md) / GetUserParams - # Interface: GetUserParams ## Hierarchy @@ -12,10 +10,10 @@ ### Properties -- [hexpubkey](GetUserParams.md#hexpubkey) -- [nip05](GetUserParams.md#nip05) -- [npub](GetUserParams.md#npub) -- [relayUrls](GetUserParams.md#relayurls) +- [hexpubkey](../wiki/GetUserParams#hexpubkey) +- [nip05](../wiki/GetUserParams#nip05) +- [npub](../wiki/GetUserParams#npub) +- [relayUrls](../wiki/GetUserParams#relayurls) ## Properties @@ -29,7 +27,7 @@ NDKUserParams.hexpubkey #### Defined in -[src/index.ts:45](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L45) +[src/index.ts:44](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L44) ___ @@ -43,7 +41,7 @@ NDKUserParams.nip05 #### Defined in -[src/user/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/index.ts#L11) +[src/user/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/index.ts#L11) ___ @@ -57,7 +55,7 @@ NDKUserParams.npub #### Defined in -[src/index.ts:44](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L44) +[src/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L43) ___ @@ -71,4 +69,4 @@ NDKUserParams.relayUrls #### Defined in -[src/user/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/index.ts#L12) +[src/user/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/index.ts#L12) diff --git a/docs/README.md b/docs/Home.md similarity index 81% rename from docs/README.md rename to docs/Home.md index 43f22209..8cd4b7a7 100644 --- a/docs/README.md +++ b/docs/Home.md @@ -1,10 +1,8 @@ -NDK / [Exports](modules.md) - # NDK drawing -NDK is a [nostr]([url](https://github.com/nostr-protocol/nostr)) development kit that makes the experience of building Nostr-related applications, whether they are relays, clients, or anything in between, better, more reliable and overall nicer to work with than existing solutions. +NDK is a [nostr](<[url](https://github.com/nostr-protocol/nostr)>) development kit that makes the experience of building Nostr-related applications, whether they are relays, clients, or anything in between, better, more reliable and overall nicer to work with than existing solutions. ## NDK Objectives @@ -36,42 +34,45 @@ localStorage.debug = 'ndk:*' ## Support ### NDK NIP-28 group chat - * note15m6rdfvlmd0z836hk83sg7r59xtv23qnmamhsslq5uc6744fdm4qfkeat3 - * [Coracle](https://app.coracle.social/chat/note15m6rdfvlmd0z836hk83sg7r59xtv23qnmamhsslq5uc6744fdm4qfkeat3) - * [Nostrchat](https://www.nostrchat.io/channel/a6f436a59fdb5e23c757b1e30478742996c54413df777843e0a731af56a96eea) - * [WIP documentation](https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md) + +- note15m6rdfvlmd0z836hk83sg7r59xtv23qnmamhsslq5uc6744fdm4qfkeat3 + - [Coracle](https://app.coracle.social/chat/note15m6rdfvlmd0z836hk83sg7r59xtv23qnmamhsslq5uc6744fdm4qfkeat3) + - [Nostrchat](https://www.nostrchat.io/channel/a6f436a59fdb5e23c757b1e30478742996c54413df777843e0a731af56a96eea) +- [WIP documentation](https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md) ## Features -- [x] NIP-01 -- [x] Caching adapters - * Server-side - - [x] [Redis](https://github.com/pablof7z/ndk-cache-redis) - - [ ] In-memory - * Client-side - - [ ] LocalStorage - - [ ] IndexDB -- [~] NIP-04: Encryption support -- [ ] NIP-26: Event delegation -- [ ] NIP-41: Relay authentication -- [x] NIP-57: Zaps - - [x] LUD06 - - [x] LUD16 -- [ ] NIP-65: Contacts' Relay list -- Subscription Management - - [x] Auto-grouping queries - - [x] Auto-closing subscriptions -- Signing Adapters - - [x] Private key - - [x] NIP-07 - - [ ] NIP-26 - - [x] NIP-46 -- Relay discovery - - [ ] Gossip-model (NIP-65) - - [ ] Implicit relays discovery following pubkey usage - - [ ] Implicit relays discovery following `t` tag usage - - [ ] Explicit relays blacklist -- [ ] nostr-tools/SimplePool drop-in replacement interface +- [x] NIP-01 +- [x] Caching adapters + - Server-side + - [x] [Redis](https://github.com/pablof7z/ndk-cache-redis) + - [ ] In-memory + - Client-side + - [ ] LocalStorage + - [ ] IndexDB +- [~] NIP-04: Encryption support +- [x] NIP-18: Repost +- [ ] NIP-26: Event delegation +- [ ] NIP-41: Relay authentication +- [x] NIP-57: Zaps + - [x] LUD06 + - [x] LUD16 +- [ ] NIP-65: Contacts' Relay list +- Subscription Management + - [x] Auto-grouping queries + - [x] Auto-closing subscriptions +- Signing Adapters + - [x] Private key + - [x] NIP-07 + - [ ] NIP-26 + - [x] NIP-46 + - [x] Permission tokens +- Relay discovery + - [ ] Gossip-model (NIP-65) + - [ ] Implicit relays discovery following pubkey usage + - [ ] Implicit relays discovery following `t` tag usage + - [ ] Explicit relays blacklist +- [ ] nostr-tools/SimplePool drop-in replacement interface ## Instantiate an NDK instance @@ -163,7 +164,7 @@ NDK will eventually allow you to use multiple caches simultaneously and allow fo ### Where to look is more important that long-term storage -The most important data to cache is _where_ a user or note might be found. UX suffers profoundly when this type of data cannot be found. By design, the Nostr protocol leaves beadcrums of where a user or note might be found and NDK does it's best to store this data automatically and use it when you query for events. +The most important data to cache is _where_ a user or note might be found. UX suffers profoundly when this type of data cannot be found. By design, the Nostr protocol leaves breadcrumbs of where a user or note might be found and NDK does it's best to store this data automatically and use it when you query for events. ### Instantiating and using a cache adapter @@ -301,16 +302,16 @@ await ndk.publish(event); ```ts // Find the first event from @jack, and react/like it. -const event = await ndk.fetchEvent({ authors: ["82341f882b6eabcd2ba7f1ef90aad961cf074af15b9ef44a09f9d2a8fbfbe6a2"] }); +const event = await ndk.fetchEvent({ author: "jack@cashapp.com" })[0]; await event.react("🤙"); ``` ### Zap an event ```ts -// Find the first event from @jack, and zap it. First param is amount in millisatoshis. -const event = await ndk.fetchEvent({ authors: ["82341f882b6eabcd2ba7f1ef90aad961cf074af15b9ef44a09f9d2a8fbfbe6a2"] }); -await event.zap(1337000, "Zapping your post!"); // Returns a zap request +// Find the first event from @jack, and zap it. +const event = await ndk.fetchEvent({ author: "jack@cashapp.com" })[0]; +await event.zap(1337, "Zapping your post!"); // Returns a zap request ``` ## Architecture decisions & suggestions diff --git a/docs/interfaces/IEventHandlingStrategy.md b/docs/IEventHandlingStrategy.md similarity index 54% rename from docs/interfaces/IEventHandlingStrategy.md rename to docs/IEventHandlingStrategy.md index 7eb30df9..39d301e0 100644 --- a/docs/interfaces/IEventHandlingStrategy.md +++ b/docs/IEventHandlingStrategy.md @@ -1,12 +1,10 @@ -[NDK](../README.md) / [Exports](../modules.md) / IEventHandlingStrategy - # Interface: IEventHandlingStrategy ## Table of contents ### Methods -- [handle](IEventHandlingStrategy.md#handle) +- [handle](../wiki/IEventHandlingStrategy#handle) ## Methods @@ -18,7 +16,7 @@ | Name | Type | | :------ | :------ | -| `backend` | [`NDKNip46Backend`](../classes/NDKNip46Backend.md) | +| `backend` | [`NDKNip46Backend`](../wiki/NDKNip46Backend) | | `remotePubkey` | `string` | | `params` | `string`[] | @@ -28,4 +26,4 @@ #### Defined in -[src/signers/nip46/backend/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/backend/index.ts#L11) +[src/signers/nip46/backend/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L22) diff --git a/docs/interfaces/NDKCacheAdapter.md b/docs/NDKCacheAdapter.md similarity index 67% rename from docs/interfaces/NDKCacheAdapter.md rename to docs/NDKCacheAdapter.md index 3034ee2d..015d135e 100644 --- a/docs/interfaces/NDKCacheAdapter.md +++ b/docs/NDKCacheAdapter.md @@ -1,17 +1,15 @@ -[NDK](../README.md) / [Exports](../modules.md) / NDKCacheAdapter - # Interface: NDKCacheAdapter ## Table of contents ### Properties -- [locking](NDKCacheAdapter.md#locking) +- [locking](../wiki/NDKCacheAdapter#locking) ### Methods -- [query](NDKCacheAdapter.md#query) -- [setEvent](NDKCacheAdapter.md#setevent) +- [query](../wiki/NDKCacheAdapter#query) +- [setEvent](../wiki/NDKCacheAdapter#setevent) ## Properties @@ -25,7 +23,7 @@ When this is false, the cache will be queried in addition to the relays. #### Defined in -[src/cache/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/cache/index.ts#L10) +[src/cache/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/cache/index.ts#L10) ## Methods @@ -37,7 +35,7 @@ When this is false, the cache will be queried in addition to the relays. | Name | Type | | :------ | :------ | -| `subscription` | [`NDKSubscription`](../classes/NDKSubscription.md) | +| `subscription` | [`NDKSubscription`](../wiki/NDKSubscription) | #### Returns @@ -45,7 +43,7 @@ When this is false, the cache will be queried in addition to the relays. #### Defined in -[src/cache/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/cache/index.ts#L12) +[src/cache/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/cache/index.ts#L12) ___ @@ -57,8 +55,8 @@ ___ | Name | Type | | :------ | :------ | -| `event` | [`NDKEvent`](../classes/NDKEvent.md) | -| `filter` | `Filter` | +| `event` | [`NDKEvent`](../wiki/NDKEvent) | +| `filter` | [`NDKFilter`](../wiki/Exports#ndkfilter) | #### Returns @@ -66,4 +64,4 @@ ___ #### Defined in -[src/cache/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/cache/index.ts#L13) +[src/cache/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/cache/index.ts#L13) diff --git a/docs/NDKConstructorParams.md b/docs/NDKConstructorParams.md new file mode 100644 index 00000000..4c23c006 --- /dev/null +++ b/docs/NDKConstructorParams.md @@ -0,0 +1,61 @@ +# Interface: NDKConstructorParams + +## Table of contents + +### Properties + +- [cacheAdapter](../wiki/NDKConstructorParams#cacheadapter) +- [debug](../wiki/NDKConstructorParams#debug) +- [devWriteRelayUrls](../wiki/NDKConstructorParams#devwriterelayurls) +- [explicitRelayUrls](../wiki/NDKConstructorParams#explicitrelayurls) +- [signer](../wiki/NDKConstructorParams#signer) + +## Properties + +### cacheAdapter + +• `Optional` **cacheAdapter**: [`NDKCacheAdapter`](../wiki/NDKCacheAdapter) + +#### Defined in + +[src/index.ts:39](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L39) + +___ + +### debug + +• `Optional` **debug**: `Debugger` + +#### Defined in + +[src/index.ts:40](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L40) + +___ + +### devWriteRelayUrls + +• `Optional` **devWriteRelayUrls**: `string`[] + +#### Defined in + +[src/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L37) + +___ + +### explicitRelayUrls + +• `Optional` **explicitRelayUrls**: `string`[] + +#### Defined in + +[src/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L36) + +___ + +### signer + +• `Optional` **signer**: [`NDKSigner`](../wiki/NDKSigner) + +#### Defined in + +[src/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L38) diff --git a/docs/NDKEvent.md b/docs/NDKEvent.md new file mode 100644 index 00000000..e1ba0673 --- /dev/null +++ b/docs/NDKEvent.md @@ -0,0 +1,704 @@ +# Class: NDKEvent + +NDKEvent is the basic building block of NDK; most things +you do with NDK will revolve around writing or consuming NDKEvents. + +## Hierarchy + +- `EventEmitter` + + ↳ **`NDKEvent`** + +## Table of contents + +### Constructors + +- [constructor](../wiki/NDKEvent#constructor) + +### Properties + +- [content](../wiki/NDKEvent#content) +- [created\_at](../wiki/NDKEvent#created_at) +- [decrypt](../wiki/NDKEvent#decrypt) +- [encode](../wiki/NDKEvent#encode) +- [encrypt](../wiki/NDKEvent#encrypt) +- [id](../wiki/NDKEvent#id) +- [isParamReplaceable](../wiki/NDKEvent#isparamreplaceable) +- [isReplaceable](../wiki/NDKEvent#isreplaceable) +- [kind](../wiki/NDKEvent#kind) +- [ndk](../wiki/NDKEvent#ndk) +- [pubkey](../wiki/NDKEvent#pubkey) +- [relay](../wiki/NDKEvent#relay) +- [repost](../wiki/NDKEvent#repost) +- [sig](../wiki/NDKEvent#sig) +- [tags](../wiki/NDKEvent#tags) + +### Accessors + +- [author](../wiki/NDKEvent#author) + +### Methods + +- [delete](../wiki/NDKEvent#delete) +- [filter](../wiki/NDKEvent#filter) +- [getMatchingTags](../wiki/NDKEvent#getmatchingtags) +- [publish](../wiki/NDKEvent#publish) +- [rawEvent](../wiki/NDKEvent#rawevent) +- [removeTag](../wiki/NDKEvent#removetag) +- [replaceableDTag](../wiki/NDKEvent#replaceabledtag) +- [sign](../wiki/NDKEvent#sign) +- [tag](../wiki/NDKEvent#tag) +- [tagId](../wiki/NDKEvent#tagid) +- [tagReference](../wiki/NDKEvent#tagreference) +- [tagValue](../wiki/NDKEvent#tagvalue) +- [toNostrEvent](../wiki/NDKEvent#tonostrevent) +- [toString](../wiki/NDKEvent#tostring) +- [zap](../wiki/NDKEvent#zap) + +## Constructors + +### constructor + +• **new NDKEvent**(`ndk?`, `event?`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `ndk?` | [`default`](../wiki/default) | +| `event?` | [`NostrEvent`](../wiki/Exports#nostrevent) | + +#### Overrides + +EventEmitter.constructor + +#### Defined in + +[src/events/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L50) + +## Properties + +### content + +• **content**: `string` = `""` + +#### Defined in + +[src/events/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L38) + +___ + +### created\_at + +• `Optional` **created\_at**: `number` + +#### Defined in + +[src/events/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L37) + +___ + +### decrypt + +• **decrypt**: (...`args`: [sender?: NDKUser, signer?: NDKSigner]) => `Promise`<`void`\> + +#### Type declaration + +▸ (`...args`): `Promise`<`void`\> + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `...args` | [sender?: NDKUser, signer?: NDKSigner] | + +##### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/events/index.ts:163](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L163) + +___ + +### encode + +• **encode**: (...`args`: []) => `string` + +#### Type declaration + +▸ (`...args`): `string` + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `...args` | [] | + +##### Returns + +`string` + +#### Defined in + +[src/events/index.ts:161](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L161) + +___ + +### encrypt + +• **encrypt**: (...`args`: [recipient?: NDKUser, signer?: NDKSigner]) => `Promise`<`void`\> + +#### Type declaration + +▸ (`...args`): `Promise`<`void`\> + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `...args` | [recipient?: NDKUser, signer?: NDKSigner] | + +##### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/events/index.ts:162](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L162) + +___ + +### id + +• **id**: `string` = `""` + +#### Defined in + +[src/events/index.ts:41](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L41) + +___ + +### isParamReplaceable + +• **isParamReplaceable**: (...`args`: []) => `boolean` + +#### Type declaration + +▸ (`...args`): `boolean` + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `...args` | [] | + +##### Returns + +`boolean` + +#### Defined in + +[src/events/index.ts:160](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L160) + +___ + +### isReplaceable + +• **isReplaceable**: (...`args`: []) => `boolean` + +#### Type declaration + +▸ (`...args`): `boolean` + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `...args` | [] | + +##### Returns + +`boolean` + +#### Defined in + +[src/events/index.ts:159](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L159) + +___ + +### kind + +• `Optional` **kind**: `number` + +#### Defined in + +[src/events/index.ts:40](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L40) + +___ + +### ndk + +• `Optional` **ndk**: [`default`](../wiki/default) + +#### Defined in + +[src/events/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L36) + +___ + +### pubkey + +• **pubkey**: `string` = `""` + +#### Defined in + +[src/events/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L43) + +___ + +### relay + +• **relay**: `undefined` \| [`NDKRelay`](../wiki/NDKRelay) + +The relay that this event was first received from. + +#### Defined in + +[src/events/index.ts:48](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L48) + +___ + +### repost + +• **repost**: (...`args`: [publish: boolean, signer?: NDKSigner]) => `Promise`<[`NDKEvent`](../wiki/NDKEvent)\> + +#### Type declaration + +▸ (`...args`): `Promise`<[`NDKEvent`](../wiki/NDKEvent)\> + +NIP-18 reposting event. + +**`Function`** + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `...args` | [publish: boolean, signer?: NDKSigner] | + +##### Returns + +`Promise`<[`NDKEvent`](../wiki/NDKEvent)\> + +The reposted event + +#### Defined in + +[src/events/index.ts:361](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L361) + +___ + +### sig + +• `Optional` **sig**: `string` + +#### Defined in + +[src/events/index.ts:42](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L42) + +___ + +### tags + +• **tags**: [`NDKTag`](../wiki/Exports#ndktag)[] = `[]` + +#### Defined in + +[src/events/index.ts:39](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L39) + +## Accessors + +### author + +• `get` **author**(): [`NDKUser`](../wiki/NDKUser) + +Returns an NDKUser for the author of the event. + +#### Returns + +[`NDKUser`](../wiki/NDKUser) + +#### Defined in + +[src/events/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L84) + +• `set` **author**(`user`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `user` | [`NDKUser`](../wiki/NDKUser) | + +#### Returns + +`void` + +#### Defined in + +[src/events/index.ts:77](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L77) + +## Methods + +### delete + +▸ **delete**(`reason?`): `Promise`<[`NDKEvent`](../wiki/NDKEvent)\> + +Generates a deletion event of the current event + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `reason?` | `string` | The reason for the deletion | + +#### Returns + +`Promise`<[`NDKEvent`](../wiki/NDKEvent)\> + +The deletion event + +#### Defined in + +[src/events/index.ts:337](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L337) + +___ + +### filter + +▸ **filter**(): [`NDKFilter`](../wiki/Exports#ndkfilter) + +Provides the filter that will return matching events for this event. + +**`Example`** + +```ts +event = new NDKEvent(ndk, { kind: 30000, pubkey: 'pubkey', tags: [ ["d", "d-code"] ] }); + event.filter(); // { "#a": ["30000:pubkey:d-code"] } +``` + +**`Example`** + +```ts +event = new NDKEvent(ndk, { kind: 1, pubkey: 'pubkey', id: "eventid" }); + event.filter(); // { "#e": ["eventid"] } +``` + +#### Returns + +[`NDKFilter`](../wiki/Exports#ndkfilter) + +The filter that will return matching events for this event + +#### Defined in + +[src/events/index.ts:300](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L300) + +___ + +### getMatchingTags + +▸ **getMatchingTags**(`tagName`): [`NDKTag`](../wiki/Exports#ndktag)[] + +Get all tags with the given name + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `tagName` | `string` | + +#### Returns + +[`NDKTag`](../wiki/Exports#ndktag)[] + +#### Defined in + +[src/events/index.ts:168](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L168) + +___ + +### publish + +▸ **publish**(`relaySet?`): `Promise`<`void`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `relaySet?` | [`NDKRelaySet`](../wiki/NDKRelaySet) | + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/events/index.ts:215](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L215) + +___ + +### rawEvent + +▸ **rawEvent**(): [`NostrEvent`](../wiki/Exports#nostrevent) + +Returns the event as is. + +#### Returns + +[`NostrEvent`](../wiki/Exports#nostrevent) + +#### Defined in + +[src/events/index.ts:65](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L65) + +___ + +### removeTag + +▸ **removeTag**(`tagName`): `void` + +Remove all tags with the given name + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `tagName` | `string` | Tag name to search for | + +#### Returns + +`void` + +#### Defined in + +[src/events/index.ts:187](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L187) + +___ + +### replaceableDTag + +▸ **replaceableDTag**(): `string` + +#### Returns + +`string` + +the `d` tag of a parameterized replaceable event + +#### Defined in + +[src/events/index.ts:245](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L245) + +___ + +### sign + +▸ **sign**(`signer?`): `Promise`<`void`\> + +Sign the event if a signer is present. + +It will generate tags. +Repleacable events will have their created_at field set to the current time. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `signer?` | [`NDKSigner`](../wiki/NDKSigner) | + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/events/index.ts:201](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L201) + +___ + +### tag + +▸ **tag**(`user`, `marker?`): `void` + +Tag a user with an optional marker. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `user` | [`NDKUser`](../wiki/NDKUser) | The user to tag. | +| `marker?` | `string` | The marker to use in the tag. | + +#### Returns + +`void` + +#### Defined in + +[src/events/index.ts:95](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L95) + +▸ **tag**(`event`, `marker?`): `void` + +Tag a user with an optional marker. + +**`Example`** + +```typescript +reply.tag(opEvent, "reply"); +// reply.tags => [["e", , , "reply"]] +``` + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `event` | [`NDKEvent`](../wiki/NDKEvent) | The event to tag. | +| `marker?` | `string` | The marker to use in the tag. | + +#### Returns + +`void` + +#### Defined in + +[src/events/index.ts:107](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L107) + +___ + +### tagId + +▸ **tagId**(): `string` + +#### Returns + +`string` + +the id of the event, or if it's a parameterized event, the id of the event with the d tag + +#### Defined in + +[src/events/index.ts:259](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L259) + +___ + +### tagReference + +▸ **tagReference**(): `string`[] + +Get the tag that can be used to reference this event from another event + +**`Example`** + +```ts +event = new NDKEvent(ndk, { kind: 30000, pubkey: 'pubkey', tags: [ ["d", "d-code"] ] }); + event.tagReference(); // ["a", "30000:pubkey:d-code"] + + event = new NDKEvent(ndk, { kind: 1, pubkey: 'pubkey', id: "eventid" }); + event.tagReference(); // ["e", "eventid"] +``` + +#### Returns + +`string`[] + +#### Defined in + +[src/events/index.ts:279](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L279) + +___ + +### tagValue + +▸ **tagValue**(`tagName`): `undefined` \| `string` + +Get the first tag with the given name + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `tagName` | `string` | Tag name to search for | + +#### Returns + +`undefined` \| `string` + +The value of the first tag with the given name, or undefined if no such tag exists + +#### Defined in + +[src/events/index.ts:177](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L177) + +___ + +### toNostrEvent + +▸ **toNostrEvent**(`pubkey?`): `Promise`<[`NostrEvent`](../wiki/Exports#nostrevent)\> + +Return a NostrEvent object, trying to fill in missing fields +when possible, adding tags when necessary. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `pubkey?` | `string` | + +#### Returns + +`Promise`<[`NostrEvent`](../wiki/Exports#nostrevent)\> + +#### Defined in + +[src/events/index.ts:135](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L135) + +___ + +### toString + +▸ **toString**(): `Promise`<[`NostrEvent`](../wiki/Exports#nostrevent)\> + +#### Returns + +`Promise`<[`NostrEvent`](../wiki/Exports#nostrevent)\> + +#### Defined in + +[src/events/index.ts:191](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L191) + +___ + +### zap + +▸ **zap**(`amount`, `comment?`, `extraTags?`): `Promise`<``null`` \| `string`\> + +Create a zap request for an existing event + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `amount` | `number` | The amount to zap in millisatoshis | +| `comment?` | `string` | A comment to add to the zap request | +| `extraTags?` | [`NDKTag`](../wiki/Exports#ndktag)[] | Extra tags to add to the zap request | + +#### Returns + +`Promise`<``null`` \| `string`\> + +#### Defined in + +[src/events/index.ts:315](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L315) diff --git a/docs/interfaces/NDKFilterOptions.md b/docs/NDKFilterOptions.md similarity index 58% rename from docs/interfaces/NDKFilterOptions.md rename to docs/NDKFilterOptions.md index be5ac00a..8d5b3a7f 100644 --- a/docs/interfaces/NDKFilterOptions.md +++ b/docs/NDKFilterOptions.md @@ -1,12 +1,10 @@ -[NDK](../README.md) / [Exports](../modules.md) / NDKFilterOptions - # Interface: NDKFilterOptions ## Table of contents ### Properties -- [skipCache](NDKFilterOptions.md#skipcache) +- [skipCache](../wiki/NDKFilterOptions#skipcache) ## Properties @@ -16,4 +14,4 @@ #### Defined in -[src/subscription/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L13) +[src/subscription/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L13) diff --git a/docs/NDKKind.md b/docs/NDKKind.md new file mode 100644 index 00000000..393dd98d --- /dev/null +++ b/docs/NDKKind.md @@ -0,0 +1,325 @@ +# Enumeration: NDKKind + +## Table of contents + +### Enumeration Members + +- [AppSpecificData](../wiki/NDKKind#appspecificdata) +- [Article](../wiki/NDKKind#article) +- [BadgeAward](../wiki/NDKKind#badgeaward) +- [BadgeDefinition](../wiki/NDKKind#badgedefinition) +- [CategorizedBookmarkList](../wiki/NDKKind#categorizedbookmarklist) +- [CategorizedPeopleList](../wiki/NDKKind#categorizedpeoplelist) +- [ChannelCreation](../wiki/NDKKind#channelcreation) +- [ChannelHideMessage](../wiki/NDKKind#channelhidemessage) +- [ChannelMessage](../wiki/NDKKind#channelmessage) +- [ChannelMetadata](../wiki/NDKKind#channelmetadata) +- [ChannelMuteUser](../wiki/NDKKind#channelmuteuser) +- [ClientAuth](../wiki/NDKKind#clientauth) +- [Contacts](../wiki/NDKKind#contacts) +- [EncryptedDirectMessage](../wiki/NDKKind#encrypteddirectmessage) +- [EventDeletion](../wiki/NDKKind#eventdeletion) +- [GenericRepost](../wiki/NDKKind#genericrepost) +- [Metadata](../wiki/NDKKind#metadata) +- [MuteList](../wiki/NDKKind#mutelist) +- [NostrConnect](../wiki/NDKKind#nostrconnect) +- [PinList](../wiki/NDKKind#pinlist) +- [ProfileBadge](../wiki/NDKKind#profilebadge) +- [Reaction](../wiki/NDKKind#reaction) +- [RecommendRelay](../wiki/NDKKind#recommendrelay) +- [RelayList](../wiki/NDKKind#relaylist) +- [Report](../wiki/NDKKind#report) +- [Repost](../wiki/NDKKind#repost) +- [Text](../wiki/NDKKind#text) +- [Zap](../wiki/NDKKind#zap) +- [ZapRequest](../wiki/NDKKind#zaprequest) + +## Enumeration Members + +### AppSpecificData + +• **AppSpecificData** = ``30078`` + +#### Defined in + +[src/events/kinds/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L30) + +___ + +### Article + +• **Article** = ``30023`` + +#### Defined in + +[src/events/kinds/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L29) + +___ + +### BadgeAward + +• **BadgeAward** = ``8`` + +#### Defined in + +[src/events/kinds/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L10) + +___ + +### BadgeDefinition + +• **BadgeDefinition** = ``30009`` + +#### Defined in + +[src/events/kinds/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L28) + +___ + +### CategorizedBookmarkList + +• **CategorizedBookmarkList** = ``30001`` + +#### Defined in + +[src/events/kinds/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L26) + +___ + +### CategorizedPeopleList + +• **CategorizedPeopleList** = ``30000`` + +#### Defined in + +[src/events/kinds/index.ts:25](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L25) + +___ + +### ChannelCreation + +• **ChannelCreation** = ``40`` + +#### Defined in + +[src/events/kinds/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L12) + +___ + +### ChannelHideMessage + +• **ChannelHideMessage** = ``43`` + +#### Defined in + +[src/events/kinds/index.ts:15](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L15) + +___ + +### ChannelMessage + +• **ChannelMessage** = ``42`` + +#### Defined in + +[src/events/kinds/index.ts:14](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L14) + +___ + +### ChannelMetadata + +• **ChannelMetadata** = ``41`` + +#### Defined in + +[src/events/kinds/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L13) + +___ + +### ChannelMuteUser + +• **ChannelMuteUser** = ``44`` + +#### Defined in + +[src/events/kinds/index.ts:16](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L16) + +___ + +### ClientAuth + +• **ClientAuth** = ``22242`` + +#### Defined in + +[src/events/kinds/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L23) + +___ + +### Contacts + +• **Contacts** = ``3`` + +#### Defined in + +[src/events/kinds/index.ts:5](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L5) + +___ + +### EncryptedDirectMessage + +• **EncryptedDirectMessage** = ``4`` + +#### Defined in + +[src/events/kinds/index.ts:6](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L6) + +___ + +### EventDeletion + +• **EventDeletion** = ``5`` + +#### Defined in + +[src/events/kinds/index.ts:7](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L7) + +___ + +### GenericRepost + +• **GenericRepost** = ``16`` + +#### Defined in + +[src/events/kinds/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L11) + +___ + +### Metadata + +• **Metadata** = ``0`` + +#### Defined in + +[src/events/kinds/index.ts:2](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L2) + +___ + +### MuteList + +• **MuteList** = ``10000`` + +#### Defined in + +[src/events/kinds/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L20) + +___ + +### NostrConnect + +• **NostrConnect** = ``24133`` + +#### Defined in + +[src/events/kinds/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L24) + +___ + +### PinList + +• **PinList** = ``10001`` + +#### Defined in + +[src/events/kinds/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L21) + +___ + +### ProfileBadge + +• **ProfileBadge** = ``30008`` + +#### Defined in + +[src/events/kinds/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L27) + +___ + +### Reaction + +• **Reaction** = ``7`` + +#### Defined in + +[src/events/kinds/index.ts:9](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L9) + +___ + +### RecommendRelay + +• **RecommendRelay** = ``2`` + +#### Defined in + +[src/events/kinds/index.ts:4](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L4) + +___ + +### RelayList + +• **RelayList** = ``10002`` + +#### Defined in + +[src/events/kinds/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L22) + +___ + +### Report + +• **Report** = ``1984`` + +#### Defined in + +[src/events/kinds/index.ts:17](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L17) + +___ + +### Repost + +• **Repost** = ``6`` + +#### Defined in + +[src/events/kinds/index.ts:8](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L8) + +___ + +### Text + +• **Text** = ``1`` + +#### Defined in + +[src/events/kinds/index.ts:3](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L3) + +___ + +### Zap + +• **Zap** = ``9735`` + +#### Defined in + +[src/events/kinds/index.ts:19](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L19) + +___ + +### ZapRequest + +• **ZapRequest** = ``9734`` + +#### Defined in + +[src/events/kinds/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L18) diff --git a/docs/classes/NDKNip07Signer.md b/docs/NDKNip07Signer.md similarity index 57% rename from docs/classes/NDKNip07Signer.md rename to docs/NDKNip07Signer.md index 2635d9ec..856c0d9d 100644 --- a/docs/classes/NDKNip07Signer.md +++ b/docs/NDKNip07Signer.md @@ -1,5 +1,3 @@ -[NDK](../README.md) / [Exports](../modules.md) / NDKNip07Signer - # Class: NDKNip07Signer NDKNip07Signer implements the NDKSigner interface for signing Nostr events @@ -7,21 +5,21 @@ with a NIP-07 browser extension (e.g., getalby, nos2x). ## Implements -- [`NDKSigner`](../interfaces/NDKSigner.md) +- [`NDKSigner`](../wiki/NDKSigner) ## Table of contents ### Constructors -- [constructor](NDKNip07Signer.md#constructor) +- [constructor](../wiki/NDKNip07Signer#constructor) ### Methods -- [blockUntilReady](NDKNip07Signer.md#blockuntilready) -- [decrypt](NDKNip07Signer.md#decrypt) -- [encrypt](NDKNip07Signer.md#encrypt) -- [sign](NDKNip07Signer.md#sign) -- [user](NDKNip07Signer.md#user) +- [blockUntilReady](../wiki/NDKNip07Signer#blockuntilready) +- [decrypt](../wiki/NDKNip07Signer#decrypt) +- [encrypt](../wiki/NDKNip07Signer#encrypt) +- [sign](../wiki/NDKNip07Signer#sign) +- [user](../wiki/NDKNip07Signer#user) ## Constructors @@ -31,29 +29,29 @@ with a NIP-07 browser extension (e.g., getalby, nos2x). #### Defined in -[src/signers/nip07/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip07/index.ts#L12) +[src/signers/nip07/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip07/index.ts#L12) ## Methods ### blockUntilReady -▸ **blockUntilReady**(): `Promise`<[`NDKUser`](NDKUser.md)\> +▸ **blockUntilReady**(): `Promise`<[`NDKUser`](../wiki/NDKUser)\> Blocks until the signer is ready and returns the associated NDKUser. #### Returns -`Promise`<[`NDKUser`](NDKUser.md)\> +`Promise`<[`NDKUser`](../wiki/NDKUser)\> A promise that resolves to the NDKUser instance. #### Implementation of -[NDKSigner](../interfaces/NDKSigner.md).[blockUntilReady](../interfaces/NDKSigner.md#blockuntilready) +[NDKSigner](../wiki/NDKSigner).[blockUntilReady](../wiki/NDKSigner#blockuntilready) #### Defined in -[src/signers/nip07/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip07/index.ts#L18) +[src/signers/nip07/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip07/index.ts#L18) ___ @@ -67,7 +65,7 @@ Decrypts the given value. | Name | Type | | :------ | :------ | -| `sender` | [`NDKUser`](NDKUser.md) | +| `sender` | [`NDKUser`](../wiki/NDKUser) | | `value` | `string` | #### Returns @@ -76,11 +74,11 @@ Decrypts the given value. #### Implementation of -[NDKSigner](../interfaces/NDKSigner.md).[decrypt](../interfaces/NDKSigner.md#decrypt) +[NDKSigner](../wiki/NDKSigner).[decrypt](../wiki/NDKSigner#decrypt) #### Defined in -[src/signers/nip07/index.ts:65](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip07/index.ts#L65) +[src/signers/nip07/index.ts:65](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip07/index.ts#L65) ___ @@ -94,7 +92,7 @@ Encrypts the given Nostr event for the given recipient. | Name | Type | Description | | :------ | :------ | :------ | -| `recipient` | [`NDKUser`](NDKUser.md) | The recipient of the encrypted value. | +| `recipient` | [`NDKUser`](../wiki/NDKUser) | The recipient of the encrypted value. | | `value` | `string` | The value to be encrypted. | #### Returns @@ -103,11 +101,11 @@ Encrypts the given Nostr event for the given recipient. #### Implementation of -[NDKSigner](../interfaces/NDKSigner.md).[encrypt](../interfaces/NDKSigner.md#encrypt) +[NDKSigner](../wiki/NDKSigner).[encrypt](../wiki/NDKSigner#encrypt) #### Defined in -[src/signers/nip07/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip07/index.ts#L56) +[src/signers/nip07/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip07/index.ts#L56) ___ @@ -125,7 +123,7 @@ Error if the NIP-07 is not available on the window object. | Name | Type | Description | | :------ | :------ | :------ | -| `event` | [`NostrEvent`](../modules.md#nostrevent) | The Nostr event to be signed. | +| `event` | [`NostrEvent`](../wiki/Exports#nostrevent) | The Nostr event to be signed. | #### Returns @@ -135,30 +133,30 @@ The signature of the signed event. #### Implementation of -[NDKSigner](../interfaces/NDKSigner.md).[sign](../interfaces/NDKSigner.md#sign) +[NDKSigner](../wiki/NDKSigner).[sign](../wiki/NDKSigner#sign) #### Defined in -[src/signers/nip07/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip07/index.ts#L47) +[src/signers/nip07/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip07/index.ts#L47) ___ ### user -▸ **user**(): `Promise`<[`NDKUser`](NDKUser.md)\> +▸ **user**(): `Promise`<[`NDKUser`](../wiki/NDKUser)\> Getter for the user property. #### Returns -`Promise`<[`NDKUser`](NDKUser.md)\> +`Promise`<[`NDKUser`](../wiki/NDKUser)\> The NDKUser instance. #### Implementation of -[NDKSigner](../interfaces/NDKSigner.md).[user](../interfaces/NDKSigner.md#user) +[NDKSigner](../wiki/NDKSigner).[user](../wiki/NDKSigner#user) #### Defined in -[src/signers/nip07/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip07/index.ts#L33) +[src/signers/nip07/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip07/index.ts#L33) diff --git a/docs/NDKNip46Backend.md b/docs/NDKNip46Backend.md new file mode 100644 index 00000000..b59eaa46 --- /dev/null +++ b/docs/NDKNip46Backend.md @@ -0,0 +1,257 @@ +# Class: NDKNip46Backend + +This class implements a NIP-46 backend, meaning that it will hold a private key +of the npub that wants to be published as. + +This backend is meant to be used by an NDKNip46Signer, which is the class that +should run client-side, where the user wants to sign events from. + +## Table of contents + +### Constructors + +- [constructor](../wiki/NDKNip46Backend#constructor) + +### Properties + +- [debug](../wiki/NDKNip46Backend#debug) +- [handlers](../wiki/NDKNip46Backend#handlers) +- [localUser](../wiki/NDKNip46Backend#localuser) +- [ndk](../wiki/NDKNip46Backend#ndk) +- [signer](../wiki/NDKNip46Backend#signer) + +### Methods + +- [applyToken](../wiki/NDKNip46Backend#applytoken) +- [decrypt](../wiki/NDKNip46Backend#decrypt) +- [encrypt](../wiki/NDKNip46Backend#encrypt) +- [pubkeyAllowed](../wiki/NDKNip46Backend#pubkeyallowed) +- [setStrategy](../wiki/NDKNip46Backend#setstrategy) +- [signEvent](../wiki/NDKNip46Backend#signevent) +- [start](../wiki/NDKNip46Backend#start) + +## Constructors + +### constructor + +• **new NDKNip46Backend**(`ndk`, `privateKey`, `permitCallback`) + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `ndk` | [`default`](../wiki/default) | The NDK instance to use | +| `privateKey` | `string` | The private key of the npub that wants to be published as | +| `permitCallback` | [`Nip46PermitCallback`](../wiki/Exports#nip46permitcallback) | - | + +#### Defined in + +[src/signers/nip46/backend/index.ts:48](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L48) + +## Properties + +### debug + +• `Readonly` **debug**: `Debugger` + +#### Defined in + +[src/signers/nip46/backend/index.ts:40](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L40) + +___ + +### handlers + +• **handlers**: `Object` + +#### Index signature + +▪ [method: `string`]: [`IEventHandlingStrategy`](../wiki/IEventHandlingStrategy) + +#### Defined in + +[src/signers/nip46/backend/index.ts:74](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L74) + +___ + +### localUser + +• `Optional` **localUser**: [`NDKUser`](../wiki/NDKUser) + +#### Defined in + +[src/signers/nip46/backend/index.ts:39](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L39) + +___ + +### ndk + +• `Readonly` **ndk**: [`default`](../wiki/default) + +#### Defined in + +[src/signers/nip46/backend/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L37) + +___ + +### signer + +• `Readonly` **signer**: [`NDKPrivateKeySigner`](../wiki/NDKPrivateKeySigner) + +#### Defined in + +[src/signers/nip46/backend/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L38) + +## Methods + +### applyToken + +▸ **applyToken**(`pubkey`, `token`): `Promise`<`void`\> + +Overload this method to apply tokens, which can +wrap permission sets to be applied to a pubkey. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `pubkey` | `string` | public key to apply token to | +| `token` | `string` | token to apply | + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/signers/nip46/backend/index.ts:98](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L98) + +___ + +### decrypt + +▸ **decrypt**(`remotePubkey`, `senderUser`, `payload`): `Promise`<`undefined` \| `string`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `remotePubkey` | `string` | +| `senderUser` | [`NDKUser`](../wiki/NDKUser) | +| `payload` | `string` | + +#### Returns + +`Promise`<`undefined` \| `string`\> + +#### Defined in + +[src/signers/nip46/backend/index.ts:127](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L127) + +___ + +### encrypt + +▸ **encrypt**(`remotePubkey`, `recipientUser`, `payload`): `Promise`<`undefined` \| `string`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `remotePubkey` | `string` | +| `recipientUser` | [`NDKUser`](../wiki/NDKUser) | +| `payload` | `string` | + +#### Returns + +`Promise`<`undefined` \| `string`\> + +#### Defined in + +[src/signers/nip46/backend/index.ts:136](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L136) + +___ + +### pubkeyAllowed + +▸ **pubkeyAllowed**(`pubkey`, `method`, `params?`): `Promise`<`boolean`\> + +This method should be overriden by the user to allow or reject incoming +connections. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `pubkey` | `string` | +| `method` | `string` | +| `params?` | `any` | + +#### Returns + +`Promise`<`boolean`\> + +#### Defined in + +[src/signers/nip46/backend/index.ts:169](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L169) + +___ + +### setStrategy + +▸ **setStrategy**(`method`, `strategy`): `void` + +Enables the user to set a custom strategy for handling incoming events. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `method` | `string` | The method to set the strategy for | +| `strategy` | [`IEventHandlingStrategy`](../wiki/IEventHandlingStrategy) | The strategy to set | + +#### Returns + +`void` + +#### Defined in + +[src/signers/nip46/backend/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L88) + +___ + +### signEvent + +▸ **signEvent**(`remotePubkey`, `params`): `Promise`<`undefined` \| [`NDKEvent`](../wiki/NDKEvent)\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `remotePubkey` | `string` | +| `params` | `string`[] | + +#### Returns + +`Promise`<`undefined` \| [`NDKEvent`](../wiki/NDKEvent)\> + +#### Defined in + +[src/signers/nip46/backend/index.ts:145](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L145) + +___ + +### start + +▸ **start**(): `Promise`<`void`\> + +This method starts the backend, which will start listening for incoming +requests. + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/signers/nip46/backend/index.ts:60](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L60) diff --git a/docs/NDKNip46Signer.md b/docs/NDKNip46Signer.md new file mode 100644 index 00000000..ec43ef50 --- /dev/null +++ b/docs/NDKNip46Signer.md @@ -0,0 +1,239 @@ +# Class: NDKNip46Signer + +This NDKSigner implements NIP-46, which allows remote signing of events. +This class is meant to be used client-side, paired with the NDKNip46Backend or a NIP-46 backend (like Nostr-Connect) + +## Implements + +- [`NDKSigner`](../wiki/NDKSigner) + +## Table of contents + +### Constructors + +- [constructor](../wiki/NDKNip46Signer#constructor) + +### Properties + +- [localSigner](../wiki/NDKNip46Signer#localsigner) +- [remotePubkey](../wiki/NDKNip46Signer#remotepubkey) +- [remoteUser](../wiki/NDKNip46Signer#remoteuser) +- [token](../wiki/NDKNip46Signer#token) + +### Methods + +- [blockUntilReady](../wiki/NDKNip46Signer#blockuntilready) +- [decrypt](../wiki/NDKNip46Signer#decrypt) +- [encrypt](../wiki/NDKNip46Signer#encrypt) +- [sign](../wiki/NDKNip46Signer#sign) +- [user](../wiki/NDKNip46Signer#user) + +## Constructors + +### constructor + +• **new NDKNip46Signer**(`ndk`, `token`, `localSigner?`) + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `ndk` | [`default`](../wiki/default) | The NDK instance to use | +| `token` | `string` | connection token, in the form "npub#otp" | +| `localSigner?` | [`NDKSigner`](../wiki/NDKSigner) | The signer that will be used to request events to be signed | + +#### Defined in + +[src/signers/nip46/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/index.ts#L23) + +• **new NDKNip46Signer**(`ndk`, `remoteNpub`, `localSigner?`) + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `ndk` | [`default`](../wiki/default) | The NDK instance to use | +| `remoteNpub` | `string` | The npub that wants to be published as | +| `localSigner?` | [`NDKSigner`](../wiki/NDKSigner) | The signer that will be used to request events to be signed | + +#### Defined in + +[src/signers/nip46/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/index.ts#L30) + +• **new NDKNip46Signer**(`ndk`, `remotePubkey`, `localSigner?`) + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `ndk` | [`default`](../wiki/default) | The NDK instance to use | +| `remotePubkey` | `string` | The public key of the npub that wants to be published as | +| `localSigner?` | [`NDKSigner`](../wiki/NDKSigner) | The signer that will be used to request events to be signed | + +#### Defined in + +[src/signers/nip46/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/index.ts#L37) + +## Properties + +### localSigner + +• **localSigner**: [`NDKSigner`](../wiki/NDKSigner) + +#### Defined in + +[src/signers/nip46/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/index.ts#L13) + +___ + +### remotePubkey + +• **remotePubkey**: `string` + +#### Defined in + +[src/signers/nip46/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/index.ts#L11) + +___ + +### remoteUser + +• **remoteUser**: [`NDKUser`](../wiki/NDKUser) + +#### Defined in + +[src/signers/nip46/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/index.ts#L10) + +___ + +### token + +• **token**: `undefined` \| `string` + +#### Defined in + +[src/signers/nip46/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/index.ts#L12) + +## Methods + +### blockUntilReady + +▸ **blockUntilReady**(): `Promise`<[`NDKUser`](../wiki/NDKUser)\> + +Blocks until the signer is ready and returns the associated NDKUser. + +#### Returns + +`Promise`<[`NDKUser`](../wiki/NDKUser)\> + +A promise that resolves to the NDKUser instance. + +#### Implementation of + +[NDKSigner](../wiki/NDKSigner).[blockUntilReady](../wiki/NDKSigner#blockuntilready) + +#### Defined in + +[src/signers/nip46/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/index.ts#L81) + +___ + +### decrypt + +▸ **decrypt**(`sender`, `value`): `Promise`<`string`\> + +Decrypts the given value. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `sender` | [`NDKUser`](../wiki/NDKUser) | +| `value` | `string` | + +#### Returns + +`Promise`<`string`\> + +#### Implementation of + +[NDKSigner](../wiki/NDKSigner).[decrypt](../wiki/NDKSigner#decrypt) + +#### Defined in + +[src/signers/nip46/index.ts:141](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/index.ts#L141) + +___ + +### encrypt + +▸ **encrypt**(`recipient`, `value`): `Promise`<`string`\> + +Encrypts the given Nostr event for the given recipient. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `recipient` | [`NDKUser`](../wiki/NDKUser) | The recipient of the encrypted value. | +| `value` | `string` | The value to be encrypted. | + +#### Returns + +`Promise`<`string`\> + +#### Implementation of + +[NDKSigner](../wiki/NDKSigner).[encrypt](../wiki/NDKSigner#encrypt) + +#### Defined in + +[src/signers/nip46/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/index.ts#L119) + +___ + +### sign + +▸ **sign**(`event`): `Promise`<`string`\> + +Signs the given Nostr event. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `event` | [`NostrEvent`](../wiki/Exports#nostrevent) | The Nostr event to be signed. | + +#### Returns + +`Promise`<`string`\> + +A promise that resolves to the signature of the signed event. + +#### Implementation of + +[NDKSigner](../wiki/NDKSigner).[sign](../wiki/NDKSigner#sign) + +#### Defined in + +[src/signers/nip46/index.ts:164](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/index.ts#L164) + +___ + +### user + +▸ **user**(): `Promise`<[`NDKUser`](../wiki/NDKUser)\> + +Get the user that is being published as + +#### Returns + +`Promise`<[`NDKUser`](../wiki/NDKUser)\> + +#### Implementation of + +[NDKSigner](../wiki/NDKSigner).[user](../wiki/NDKSigner#user) + +#### Defined in + +[src/signers/nip46/index.ts:77](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/index.ts#L77) diff --git a/docs/NDKNostrRpc.md b/docs/NDKNostrRpc.md new file mode 100644 index 00000000..3d862fdd --- /dev/null +++ b/docs/NDKNostrRpc.md @@ -0,0 +1,134 @@ +# Class: NDKNostrRpc + +## Hierarchy + +- `EventEmitter` + + ↳ **`NDKNostrRpc`** + +## Table of contents + +### Constructors + +- [constructor](../wiki/NDKNostrRpc#constructor) + +### Methods + +- [parseEvent](../wiki/NDKNostrRpc#parseevent) +- [sendRequest](../wiki/NDKNostrRpc#sendrequest) +- [sendResponse](../wiki/NDKNostrRpc#sendresponse) +- [subscribe](../wiki/NDKNostrRpc#subscribe) + +## Constructors + +### constructor + +• **new NDKNostrRpc**(`ndk`, `signer`, `debug`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `ndk` | [`default`](../wiki/default) | +| `signer` | [`NDKSigner`](../wiki/NDKSigner) | +| `debug` | `Debugger` | + +#### Overrides + +EventEmitter.constructor + +#### Defined in + +[src/signers/nip46/rpc.ts:24](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L24) + +## Methods + +### parseEvent + +▸ **parseEvent**(`event`): `Promise`<[`NDKRpcRequest`](../wiki/NDKRpcRequest) \| [`NDKRpcResponse`](../wiki/NDKRpcResponse)\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `event` | [`NDKEvent`](../wiki/NDKEvent) | + +#### Returns + +`Promise`<[`NDKRpcRequest`](../wiki/NDKRpcRequest) \| [`NDKRpcResponse`](../wiki/NDKRpcResponse)\> + +#### Defined in + +[src/signers/nip46/rpc.ts:55](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L55) + +___ + +### sendRequest + +▸ **sendRequest**(`remotePubkey`, `method`, `params?`, `kind?`, `cb?`): `Promise`<[`NDKRpcResponse`](../wiki/NDKRpcResponse)\> + +Sends a request. + +#### Parameters + +| Name | Type | Default value | +| :------ | :------ | :------ | +| `remotePubkey` | `string` | `undefined` | +| `method` | `string` | `undefined` | +| `params` | `string`[] | `[]` | +| `kind` | `number` | `24133` | +| `cb?` | (`res`: [`NDKRpcResponse`](../wiki/NDKRpcResponse)) => `void` | `undefined` | + +#### Returns + +`Promise`<[`NDKRpcResponse`](../wiki/NDKRpcResponse)\> + +#### Defined in + +[src/signers/nip46/rpc.ts:97](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L97) + +___ + +### sendResponse + +▸ **sendResponse**(`id`, `remotePubkey`, `result`, `kind?`, `error?`): `Promise`<`void`\> + +#### Parameters + +| Name | Type | Default value | +| :------ | :------ | :------ | +| `id` | `string` | `undefined` | +| `remotePubkey` | `string` | `undefined` | +| `result` | `string` | `undefined` | +| `kind` | `number` | `24133` | +| `error?` | `string` | `undefined` | + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/signers/nip46/rpc.ts:69](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L69) + +___ + +### subscribe + +▸ **subscribe**(`filter`): `Promise`<[`NDKSubscription`](../wiki/NDKSubscription)\> + +Subscribe to a filter. This function will resolve once the subscription is ready. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `filter` | [`NDKFilter`](../wiki/Exports#ndkfilter) | + +#### Returns + +`Promise`<[`NDKSubscription`](../wiki/NDKSubscription)\> + +#### Defined in + +[src/signers/nip46/rpc.ts:34](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L34) diff --git a/docs/classes/NDKPrivateKeySigner.md b/docs/NDKPrivateKeySigner.md similarity index 54% rename from docs/classes/NDKPrivateKeySigner.md rename to docs/NDKPrivateKeySigner.md index 6d74c041..e0e3331d 100644 --- a/docs/classes/NDKPrivateKeySigner.md +++ b/docs/NDKPrivateKeySigner.md @@ -1,31 +1,29 @@ -[NDK](../README.md) / [Exports](../modules.md) / NDKPrivateKeySigner - # Class: NDKPrivateKeySigner Interface for NDK signers. ## Implements -- [`NDKSigner`](../interfaces/NDKSigner.md) +- [`NDKSigner`](../wiki/NDKSigner) ## Table of contents ### Constructors -- [constructor](NDKPrivateKeySigner.md#constructor) +- [constructor](../wiki/NDKPrivateKeySigner#constructor) ### Properties -- [privateKey](NDKPrivateKeySigner.md#privatekey) +- [privateKey](../wiki/NDKPrivateKeySigner#privatekey) ### Methods -- [blockUntilReady](NDKPrivateKeySigner.md#blockuntilready) -- [decrypt](NDKPrivateKeySigner.md#decrypt) -- [encrypt](NDKPrivateKeySigner.md#encrypt) -- [sign](NDKPrivateKeySigner.md#sign) -- [user](NDKPrivateKeySigner.md#user) -- [generate](NDKPrivateKeySigner.md#generate) +- [blockUntilReady](../wiki/NDKPrivateKeySigner#blockuntilready) +- [decrypt](../wiki/NDKPrivateKeySigner#decrypt) +- [encrypt](../wiki/NDKPrivateKeySigner#encrypt) +- [sign](../wiki/NDKPrivateKeySigner#sign) +- [user](../wiki/NDKPrivateKeySigner#user) +- [generate](../wiki/NDKPrivateKeySigner#generate) ## Constructors @@ -41,7 +39,7 @@ Interface for NDK signers. #### Defined in -[src/signers/private-key/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/private-key/index.ts#L11) +[src/signers/private-key/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/private-key/index.ts#L11) ## Properties @@ -51,29 +49,29 @@ Interface for NDK signers. #### Defined in -[src/signers/private-key/index.ts:9](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/private-key/index.ts#L9) +[src/signers/private-key/index.ts:9](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/private-key/index.ts#L9) ## Methods ### blockUntilReady -▸ **blockUntilReady**(): `Promise`<[`NDKUser`](NDKUser.md)\> +▸ **blockUntilReady**(): `Promise`<[`NDKUser`](../wiki/NDKUser)\> Blocks until the signer is ready and returns the associated NDKUser. #### Returns -`Promise`<[`NDKUser`](NDKUser.md)\> +`Promise`<[`NDKUser`](../wiki/NDKUser)\> A promise that resolves to the NDKUser instance. #### Implementation of -[NDKSigner](../interfaces/NDKSigner.md).[blockUntilReady](../interfaces/NDKSigner.md#blockuntilready) +[NDKSigner](../wiki/NDKSigner).[blockUntilReady](../wiki/NDKSigner#blockuntilready) #### Defined in -[src/signers/private-key/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/private-key/index.ts#L23) +[src/signers/private-key/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/private-key/index.ts#L23) ___ @@ -87,7 +85,7 @@ Decrypts the given value. | Name | Type | | :------ | :------ | -| `sender` | [`NDKUser`](NDKUser.md) | +| `sender` | [`NDKUser`](../wiki/NDKUser) | | `value` | `string` | #### Returns @@ -96,11 +94,11 @@ Decrypts the given value. #### Implementation of -[NDKSigner](../interfaces/NDKSigner.md).[decrypt](../interfaces/NDKSigner.md#decrypt) +[NDKSigner](../wiki/NDKSigner).[decrypt](../wiki/NDKSigner#decrypt) #### Defined in -[src/signers/private-key/index.ts:52](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/private-key/index.ts#L52) +[src/signers/private-key/index.ts:52](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/private-key/index.ts#L52) ___ @@ -114,7 +112,7 @@ Encrypts the given Nostr event for the given recipient. | Name | Type | Description | | :------ | :------ | :------ | -| `recipient` | [`NDKUser`](NDKUser.md) | The recipient of the encrypted value. | +| `recipient` | [`NDKUser`](../wiki/NDKUser) | The recipient of the encrypted value. | | `value` | `string` | The value to be encrypted. | #### Returns @@ -123,11 +121,11 @@ Encrypts the given Nostr event for the given recipient. #### Implementation of -[NDKSigner](../interfaces/NDKSigner.md).[encrypt](../interfaces/NDKSigner.md#encrypt) +[NDKSigner](../wiki/NDKSigner).[encrypt](../wiki/NDKSigner#encrypt) #### Defined in -[src/signers/private-key/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/private-key/index.ts#L43) +[src/signers/private-key/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/private-key/index.ts#L43) ___ @@ -141,7 +139,7 @@ Signs the given Nostr event. | Name | Type | Description | | :------ | :------ | :------ | -| `event` | [`NostrEvent`](../modules.md#nostrevent) | The Nostr event to be signed. | +| `event` | [`NostrEvent`](../wiki/Exports#nostrevent) | The Nostr event to be signed. | #### Returns @@ -151,44 +149,44 @@ A promise that resolves to the signature of the signed event. #### Implementation of -[NDKSigner](../interfaces/NDKSigner.md).[sign](../interfaces/NDKSigner.md#sign) +[NDKSigner](../wiki/NDKSigner).[sign](../wiki/NDKSigner#sign) #### Defined in -[src/signers/private-key/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/private-key/index.ts#L35) +[src/signers/private-key/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/private-key/index.ts#L35) ___ ### user -▸ **user**(): `Promise`<[`NDKUser`](NDKUser.md)\> +▸ **user**(): `Promise`<[`NDKUser`](../wiki/NDKUser)\> Getter for the user property. #### Returns -`Promise`<[`NDKUser`](NDKUser.md)\> +`Promise`<[`NDKUser`](../wiki/NDKUser)\> A promise that resolves to the NDKUser instance. #### Implementation of -[NDKSigner](../interfaces/NDKSigner.md).[user](../interfaces/NDKSigner.md#user) +[NDKSigner](../wiki/NDKSigner).[user](../wiki/NDKSigner#user) #### Defined in -[src/signers/private-key/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/private-key/index.ts#L30) +[src/signers/private-key/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/private-key/index.ts#L30) ___ ### generate -▸ `Static` **generate**(): [`NDKPrivateKeySigner`](NDKPrivateKeySigner.md) +▸ `Static` **generate**(): [`NDKPrivateKeySigner`](../wiki/NDKPrivateKeySigner) #### Returns -[`NDKPrivateKeySigner`](NDKPrivateKeySigner.md) +[`NDKPrivateKeySigner`](../wiki/NDKPrivateKeySigner) #### Defined in -[src/signers/private-key/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/private-key/index.ts#L18) +[src/signers/private-key/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/private-key/index.ts#L18) diff --git a/docs/NDKRelay.md b/docs/NDKRelay.md new file mode 100644 index 00000000..dce4f591 --- /dev/null +++ b/docs/NDKRelay.md @@ -0,0 +1,267 @@ +# Class: NDKRelay + +The NDKRelay class represents a connection to a relay. + +**`Emits`** + +NDKRelay#connect + +**`Emits`** + +NDKRelay#disconnect + +**`Emits`** + +NDKRelay#notice + +**`Emits`** + +NDKRelay#event + +**`Emits`** + +NDKRelay#eose + +## Hierarchy + +- `EventEmitter` + + ↳ **`NDKRelay`** + +## Table of contents + +### Constructors + +- [constructor](../wiki/NDKRelay#constructor) + +### Properties + +- [activeSubscriptions](../wiki/NDKRelay#activesubscriptions) +- [complaining](../wiki/NDKRelay#complaining) +- [scores](../wiki/NDKRelay#scores) +- [url](../wiki/NDKRelay#url) + +### Accessors + +- [connectionStats](../wiki/NDKRelay#connectionstats) +- [status](../wiki/NDKRelay#status) + +### Methods + +- [connect](../wiki/NDKRelay#connect) +- [disconnect](../wiki/NDKRelay#disconnect) +- [handleNotice](../wiki/NDKRelay#handlenotice) +- [publish](../wiki/NDKRelay#publish) +- [scoreSlowerEvent](../wiki/NDKRelay#scoreslowerevent) +- [subscribe](../wiki/NDKRelay#subscribe) + +## Constructors + +### constructor + +• **new NDKRelay**(`url`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `url` | `string` | + +#### Overrides + +EventEmitter.constructor + +#### Defined in + +[src/relay/index.ts:66](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L66) + +## Properties + +### activeSubscriptions + +• **activeSubscriptions**: `Set`<[`NDKSubscription`](../wiki/NDKSubscription)\> + +Active subscriptions this relay is connected to + +#### Defined in + +[src/relay/index.ts:64](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L64) + +___ + +### complaining + +• **complaining**: `boolean` = `false` + +#### Defined in + +[src/relay/index.ts:58](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L58) + +___ + +### scores + +• `Readonly` **scores**: `Map`<[`NDKUser`](../wiki/NDKUser), `number`\> + +#### Defined in + +[src/relay/index.ts:53](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L53) + +___ + +### url + +• `Readonly` **url**: `string` + +#### Defined in + +[src/relay/index.ts:52](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L52) + +## Accessors + +### connectionStats + +• `get` **connectionStats**(): [`NDKRelayConnectionStats`](../wiki/NDKRelayConnectionStats) + +Returns the connection stats. + +#### Returns + +[`NDKRelayConnectionStats`](../wiki/NDKRelayConnectionStats) + +#### Defined in + +[src/relay/index.ts:265](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L265) + +___ + +### status + +• `get` **status**(): [`NDKRelayStatus`](../wiki/NDKRelayStatus) + +#### Returns + +[`NDKRelayStatus`](../wiki/NDKRelayStatus) + +#### Defined in + +[src/relay/index.ts:128](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L128) + +## Methods + +### connect + +▸ **connect**(): `Promise`<`void`\> + +Connects to the relay. + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/relay/index.ts:135](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L135) + +___ + +### disconnect + +▸ **disconnect**(): `void` + +Disconnects from the relay. + +#### Returns + +`void` + +#### Defined in + +[src/relay/index.ts:150](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L150) + +___ + +### handleNotice + +▸ **handleNotice**(`notice`): `Promise`<`void`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `notice` | `string` | + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/relay/index.ts:155](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L155) + +___ + +### publish + +▸ **publish**(`event`): `Promise`<`void`\> + +Publishes an event to the relay. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `event` | [`NDKEvent`](../wiki/NDKEvent) | + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/relay/index.ts:211](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L211) + +___ + +### scoreSlowerEvent + +▸ **scoreSlowerEvent**(`timeDiffInMs`): `void` + +Called when this relay has responded with an event but +wasn't the fastest one. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `timeDiffInMs` | `number` | The time difference in ms between the fastest and this relay in milliseconds | + +#### Returns + +`void` + +#### Defined in + +[src/relay/index.ts:231](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L231) + +___ + +### subscribe + +▸ **subscribe**(`subscription`): `Sub` + +Subscribes to a subscription. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `subscription` | [`NDKSubscription`](../wiki/NDKSubscription) | + +#### Returns + +`Sub` + +#### Defined in + +[src/relay/index.ts:175](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L175) diff --git a/docs/NDKRelayConnectionStats.md b/docs/NDKRelayConnectionStats.md new file mode 100644 index 00000000..1d737063 --- /dev/null +++ b/docs/NDKRelayConnectionStats.md @@ -0,0 +1,58 @@ +# Interface: NDKRelayConnectionStats + +## Table of contents + +### Properties + +- [attempts](../wiki/NDKRelayConnectionStats#attempts) +- [connectedAt](../wiki/NDKRelayConnectionStats#connectedat) +- [durations](../wiki/NDKRelayConnectionStats#durations) +- [success](../wiki/NDKRelayConnectionStats#success) + +## Properties + +### attempts + +• **attempts**: `number` + +The number of times a connection has been attempted. + +#### Defined in + +[src/relay/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L24) + +___ + +### connectedAt + +• `Optional` **connectedAt**: `number` + +The time the current connection was established in milliseconds. + +#### Defined in + +[src/relay/index.ts:39](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L39) + +___ + +### durations + +• **durations**: `number`[] + +The durations of the last 100 connections in milliseconds. + +#### Defined in + +[src/relay/index.ts:34](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L34) + +___ + +### success + +• **success**: `number` + +The number of times a connection has been successfully established. + +#### Defined in + +[src/relay/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L29) diff --git a/docs/classes/NDKRelaySet.md b/docs/NDKRelaySet.md similarity index 59% rename from docs/classes/NDKRelaySet.md rename to docs/NDKRelaySet.md index 2305c30a..757bf473 100644 --- a/docs/classes/NDKRelaySet.md +++ b/docs/NDKRelaySet.md @@ -1,5 +1,3 @@ -[NDK](../README.md) / [Exports](../modules.md) / NDKRelaySet - # Class: NDKRelaySet A relay set is a group of relays. This grouping can be short-living, for a single @@ -12,19 +10,19 @@ Requests to relays should be sent through this interface. ### Constructors -- [constructor](NDKRelaySet.md#constructor) +- [constructor](../wiki/NDKRelaySet#constructor) ### Properties -- [relays](NDKRelaySet.md#relays) +- [relays](../wiki/NDKRelaySet#relays) ### Methods -- [getId](NDKRelaySet.md#getid) -- [publish](NDKRelaySet.md#publish) -- [size](NDKRelaySet.md#size) -- [subscribe](NDKRelaySet.md#subscribe) -- [fromRelayUrls](NDKRelaySet.md#fromrelayurls) +- [getId](../wiki/NDKRelaySet#getid) +- [publish](../wiki/NDKRelaySet#publish) +- [size](../wiki/NDKRelaySet#size) +- [subscribe](../wiki/NDKRelaySet#subscribe) +- [fromRelayUrls](../wiki/NDKRelaySet#fromrelayurls) ## Constructors @@ -36,22 +34,22 @@ Requests to relays should be sent through this interface. | Name | Type | | :------ | :------ | -| `relays` | `Set`<[`NDKRelay`](NDKRelay.md)\> | -| `ndk` | [`default`](default.md) | +| `relays` | `Set`<[`NDKRelay`](../wiki/NDKRelay)\> | +| `ndk` | [`default`](../wiki/default) | #### Defined in -[src/relay/sets/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/sets/index.ts#L20) +[src/relay/sets/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/sets/index.ts#L20) ## Properties ### relays -• `Readonly` **relays**: `Set`<[`NDKRelay`](NDKRelay.md)\> +• `Readonly` **relays**: `Set`<[`NDKRelay`](../wiki/NDKRelay)\> #### Defined in -[src/relay/sets/index.ts:16](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/sets/index.ts#L16) +[src/relay/sets/index.ts:16](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/sets/index.ts#L16) ## Methods @@ -67,7 +65,7 @@ Calculates an ID of this specific combination of relays. #### Defined in -[src/relay/sets/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/sets/index.ts#L56) +[src/relay/sets/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/sets/index.ts#L56) ___ @@ -79,7 +77,7 @@ ___ | Name | Type | | :------ | :------ | -| `event` | [`NDKEvent`](NDKEvent.md) | +| `event` | [`NDKEvent`](../wiki/NDKEvent) | #### Returns @@ -87,7 +85,7 @@ ___ #### Defined in -[src/relay/sets/index.ts:137](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/sets/index.ts#L137) +[src/relay/sets/index.ts:140](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/sets/index.ts#L140) ___ @@ -101,13 +99,13 @@ ___ #### Defined in -[src/relay/sets/index.ts:147](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/sets/index.ts#L147) +[src/relay/sets/index.ts:150](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/sets/index.ts#L150) ___ ### subscribe -▸ **subscribe**(`subscription`): [`NDKSubscription`](NDKSubscription.md) +▸ **subscribe**(`subscription`): [`NDKSubscription`](../wiki/NDKSubscription) Add a subscription to this relay set @@ -115,21 +113,21 @@ Add a subscription to this relay set | Name | Type | | :------ | :------ | -| `subscription` | [`NDKSubscription`](NDKSubscription.md) | +| `subscription` | [`NDKSubscription`](../wiki/NDKSubscription) | #### Returns -[`NDKSubscription`](NDKSubscription.md) +[`NDKSubscription`](../wiki/NDKSubscription) #### Defined in -[src/relay/sets/index.ts:65](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/sets/index.ts#L65) +[src/relay/sets/index.ts:65](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/sets/index.ts#L65) ___ ### fromRelayUrls -▸ `Static` **fromRelayUrls**(`relayUrls`, `ndk`): [`NDKRelaySet`](NDKRelaySet.md) +▸ `Static` **fromRelayUrls**(`relayUrls`, `ndk`): [`NDKRelaySet`](../wiki/NDKRelaySet) Creates a relay set from a list of relay URLs. @@ -141,14 +139,14 @@ to publish methods. | Name | Type | Description | | :------ | :------ | :------ | | `relayUrls` | `string`[] | list of relay URLs to include in this set | -| `ndk` | [`default`](default.md) | | +| `ndk` | [`default`](../wiki/default) | | #### Returns -[`NDKRelaySet`](NDKRelaySet.md) +[`NDKRelaySet`](../wiki/NDKRelaySet) NDKRelaySet #### Defined in -[src/relay/sets/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/sets/index.ts#L36) +[src/relay/sets/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/sets/index.ts#L36) diff --git a/docs/NDKRelayStatus.md b/docs/NDKRelayStatus.md new file mode 100644 index 00000000..7ede9732 --- /dev/null +++ b/docs/NDKRelayStatus.md @@ -0,0 +1,72 @@ +# Enumeration: NDKRelayStatus + +## Table of contents + +### Enumeration Members + +- [CONNECTED](../wiki/NDKRelayStatus#connected) +- [CONNECTING](../wiki/NDKRelayStatus#connecting) +- [DISCONNECTED](../wiki/NDKRelayStatus#disconnected) +- [DISCONNECTING](../wiki/NDKRelayStatus#disconnecting) +- [FLAPPING](../wiki/NDKRelayStatus#flapping) +- [RECONNECTING](../wiki/NDKRelayStatus#reconnecting) + +## Enumeration Members + +### CONNECTED + +• **CONNECTED** = ``1`` + +#### Defined in + +[src/relay/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L13) + +___ + +### CONNECTING + +• **CONNECTING** = ``0`` + +#### Defined in + +[src/relay/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L12) + +___ + +### DISCONNECTED + +• **DISCONNECTED** = ``3`` + +#### Defined in + +[src/relay/index.ts:15](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L15) + +___ + +### DISCONNECTING + +• **DISCONNECTING** = ``2`` + +#### Defined in + +[src/relay/index.ts:14](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L14) + +___ + +### FLAPPING + +• **FLAPPING** = ``5`` + +#### Defined in + +[src/relay/index.ts:17](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L17) + +___ + +### RECONNECTING + +• **RECONNECTING** = ``4`` + +#### Defined in + +[src/relay/index.ts:16](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L16) diff --git a/docs/NDKRpcRequest.md b/docs/NDKRpcRequest.md new file mode 100644 index 00000000..11f6d695 --- /dev/null +++ b/docs/NDKRpcRequest.md @@ -0,0 +1,61 @@ +# Interface: NDKRpcRequest + +## Table of contents + +### Properties + +- [event](../wiki/NDKRpcRequest#event) +- [id](../wiki/NDKRpcRequest#id) +- [method](../wiki/NDKRpcRequest#method) +- [params](../wiki/NDKRpcRequest#params) +- [pubkey](../wiki/NDKRpcRequest#pubkey) + +## Properties + +### event + +• **event**: [`NDKEvent`](../wiki/NDKEvent) + +#### Defined in + +[src/signers/nip46/rpc.ts:9](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L9) + +___ + +### id + +• **id**: `string` + +#### Defined in + +[src/signers/nip46/rpc.ts:5](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L5) + +___ + +### method + +• **method**: `string` + +#### Defined in + +[src/signers/nip46/rpc.ts:7](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L7) + +___ + +### params + +• **params**: `string`[] + +#### Defined in + +[src/signers/nip46/rpc.ts:8](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L8) + +___ + +### pubkey + +• **pubkey**: `string` + +#### Defined in + +[src/signers/nip46/rpc.ts:6](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L6) diff --git a/docs/NDKRpcResponse.md b/docs/NDKRpcResponse.md new file mode 100644 index 00000000..4e0bf02b --- /dev/null +++ b/docs/NDKRpcResponse.md @@ -0,0 +1,50 @@ +# Interface: NDKRpcResponse + +## Table of contents + +### Properties + +- [error](../wiki/NDKRpcResponse#error) +- [event](../wiki/NDKRpcResponse#event) +- [id](../wiki/NDKRpcResponse#id) +- [result](../wiki/NDKRpcResponse#result) + +## Properties + +### error + +• `Optional` **error**: `string` + +#### Defined in + +[src/signers/nip46/rpc.ts:15](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L15) + +___ + +### event + +• **event**: [`NDKEvent`](../wiki/NDKEvent) + +#### Defined in + +[src/signers/nip46/rpc.ts:16](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L16) + +___ + +### id + +• **id**: `string` + +#### Defined in + +[src/signers/nip46/rpc.ts:13](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L13) + +___ + +### result + +• **result**: `string` + +#### Defined in + +[src/signers/nip46/rpc.ts:14](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L14) diff --git a/docs/interfaces/NDKSigner.md b/docs/NDKSigner.md similarity index 60% rename from docs/interfaces/NDKSigner.md rename to docs/NDKSigner.md index e52f7108..bbfdda59 100644 --- a/docs/interfaces/NDKSigner.md +++ b/docs/NDKSigner.md @@ -1,42 +1,40 @@ -[NDK](../README.md) / [Exports](../modules.md) / NDKSigner - # Interface: NDKSigner Interface for NDK signers. ## Implemented by -- [`NDKNip07Signer`](../classes/NDKNip07Signer.md) -- [`NDKNip46Signer`](../classes/NDKNip46Signer.md) -- [`NDKPrivateKeySigner`](../classes/NDKPrivateKeySigner.md) +- [`NDKNip07Signer`](../wiki/NDKNip07Signer) +- [`NDKNip46Signer`](../wiki/NDKNip46Signer) +- [`NDKPrivateKeySigner`](../wiki/NDKPrivateKeySigner) ## Table of contents ### Methods -- [blockUntilReady](NDKSigner.md#blockuntilready) -- [decrypt](NDKSigner.md#decrypt) -- [encrypt](NDKSigner.md#encrypt) -- [sign](NDKSigner.md#sign) -- [user](NDKSigner.md#user) +- [blockUntilReady](../wiki/NDKSigner#blockuntilready) +- [decrypt](../wiki/NDKSigner#decrypt) +- [encrypt](../wiki/NDKSigner#encrypt) +- [sign](../wiki/NDKSigner#sign) +- [user](../wiki/NDKSigner#user) ## Methods ### blockUntilReady -▸ **blockUntilReady**(): `Promise`<[`NDKUser`](../classes/NDKUser.md)\> +▸ **blockUntilReady**(): `Promise`<[`NDKUser`](../wiki/NDKUser)\> Blocks until the signer is ready and returns the associated NDKUser. #### Returns -`Promise`<[`NDKUser`](../classes/NDKUser.md)\> +`Promise`<[`NDKUser`](../wiki/NDKUser)\> A promise that resolves to the NDKUser instance. #### Defined in -[src/signers/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/index.ts#L12) +[src/signers/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/index.ts#L12) ___ @@ -50,7 +48,7 @@ Decrypts the given value. | Name | Type | | :------ | :------ | -| `sender` | [`NDKUser`](../classes/NDKUser.md) | +| `sender` | [`NDKUser`](../wiki/NDKUser) | | `value` | `string` | #### Returns @@ -59,7 +57,7 @@ Decrypts the given value. #### Defined in -[src/signers/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/index.ts#L38) +[src/signers/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/index.ts#L38) ___ @@ -73,7 +71,7 @@ Encrypts the given Nostr event for the given recipient. | Name | Type | Description | | :------ | :------ | :------ | -| `recipient` | [`NDKUser`](../classes/NDKUser.md) | The recipient of the encrypted value. | +| `recipient` | [`NDKUser`](../wiki/NDKUser) | The recipient of the encrypted value. | | `value` | `string` | The value to be encrypted. | #### Returns @@ -82,7 +80,7 @@ Encrypts the given Nostr event for the given recipient. #### Defined in -[src/signers/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/index.ts#L32) +[src/signers/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/index.ts#L32) ___ @@ -96,7 +94,7 @@ Signs the given Nostr event. | Name | Type | Description | | :------ | :------ | :------ | -| `event` | [`NostrEvent`](../modules.md#nostrevent) | The Nostr event to be signed. | +| `event` | [`NostrEvent`](../wiki/Exports#nostrevent) | The Nostr event to be signed. | #### Returns @@ -106,22 +104,22 @@ A promise that resolves to the signature of the signed event. #### Defined in -[src/signers/index.ts:25](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/index.ts#L25) +[src/signers/index.ts:25](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/index.ts#L25) ___ ### user -▸ **user**(): `Promise`<[`NDKUser`](../classes/NDKUser.md)\> +▸ **user**(): `Promise`<[`NDKUser`](../wiki/NDKUser)\> Getter for the user property. #### Returns -`Promise`<[`NDKUser`](../classes/NDKUser.md)\> +`Promise`<[`NDKUser`](../wiki/NDKUser)\> A promise that resolves to the NDKUser instance. #### Defined in -[src/signers/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/index.ts#L18) +[src/signers/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/index.ts#L18) diff --git a/docs/NDKSubscription.md b/docs/NDKSubscription.md new file mode 100644 index 00000000..4a2da623 --- /dev/null +++ b/docs/NDKSubscription.md @@ -0,0 +1,296 @@ +# Class: NDKSubscription + +Represents a subscription to an NDK event stream. + + NDKSubscription#event +Emitted when an event is received by the subscription. + +**`Param`** + +The event received by the subscription. + +**`Param`** + +The relay that received the event. + +**`Param`** + +The subscription that received the event. + + NDKSubscription#event:dup +Emitted when a duplicate event is received by the subscription. + +**`Param`** + +The duplicate event received by the subscription. + +**`Param`** + +The relay that received the event. + +**`Param`** + +The time elapsed since the first time the event was seen. + +**`Param`** + +The subscription that received the event. + + NDKSubscription#eose - Emitted when all relays have reached the end of the event stream. + +**`Param`** + +The subscription that received EOSE. + + NDKSubscription#close - Emitted when the subscription is closed. + +**`Param`** + +The subscription that was closed. + +## Hierarchy + +- `EventEmitter` + + ↳ **`NDKSubscription`** + + ↳↳ [`NDKSubscriptionGroup`](../wiki/NDKSubscriptionGroup) + +## Table of contents + +### Constructors + +- [constructor](../wiki/NDKSubscription#constructor) + +### Properties + +- [eosesSeen](../wiki/NDKSubscription#eosesseen) +- [eventFirstSeen](../wiki/NDKSubscription#eventfirstseen) +- [eventsPerRelay](../wiki/NDKSubscription#eventsperrelay) +- [filter](../wiki/NDKSubscription#filter) +- [ndk](../wiki/NDKSubscription#ndk) +- [opts](../wiki/NDKSubscription#opts) +- [relaySet](../wiki/NDKSubscription#relayset) +- [relaySubscriptions](../wiki/NDKSubscription#relaysubscriptions) +- [subId](../wiki/NDKSubscription#subid) + +### Methods + +- [eoseReceived](../wiki/NDKSubscription#eosereceived) +- [eventReceived](../wiki/NDKSubscription#eventreceived) +- [groupableId](../wiki/NDKSubscription#groupableid) +- [start](../wiki/NDKSubscription#start) +- [stop](../wiki/NDKSubscription#stop) + +## Constructors + +### constructor + +• **new NDKSubscription**(`ndk`, `filter`, `opts?`, `relaySet?`, `subId?`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `ndk` | [`default`](../wiki/default) | +| `filter` | [`NDKFilter`](../wiki/Exports#ndkfilter) | +| `opts?` | [`NDKSubscriptionOptions`](../wiki/NDKSubscriptionOptions) | +| `relaySet?` | [`NDKRelaySet`](../wiki/NDKRelaySet) | +| `subId?` | `string` | + +#### Overrides + +EventEmitter.constructor + +#### Defined in + +[src/subscription/index.ts:108](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L108) + +## Properties + +### eosesSeen + +• **eosesSeen**: `Set`<[`NDKRelay`](../wiki/NDKRelay)\> + +Relays that have sent an EOSE. + +#### Defined in + +[src/subscription/index.ts:101](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L101) + +___ + +### eventFirstSeen + +• **eventFirstSeen**: `Map`<`string`, `number`\> + +Events that have been seen by the subscription, with the time they were first seen. + +#### Defined in + +[src/subscription/index.ts:96](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L96) + +___ + +### eventsPerRelay + +• **eventsPerRelay**: `Map`<[`NDKRelay`](../wiki/NDKRelay), `Set`<`string`\>\> + +Events that have been seen by the subscription per relay. + +#### Defined in + +[src/subscription/index.ts:106](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L106) + +___ + +### filter + +• `Readonly` **filter**: [`NDKFilter`](../wiki/Exports#ndkfilter) + +#### Defined in + +[src/subscription/index.ts:86](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L86) + +___ + +### ndk + +• **ndk**: [`default`](../wiki/default) + +#### Defined in + +[src/subscription/index.ts:89](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L89) + +___ + +### opts + +• `Readonly` **opts**: [`NDKSubscriptionOptions`](../wiki/NDKSubscriptionOptions) + +#### Defined in + +[src/subscription/index.ts:87](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L87) + +___ + +### relaySet + +• `Optional` **relaySet**: [`NDKRelaySet`](../wiki/NDKRelaySet) + +#### Defined in + +[src/subscription/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L88) + +___ + +### relaySubscriptions + +• **relaySubscriptions**: `Map`<[`NDKRelay`](../wiki/NDKRelay), `Sub`\> + +#### Defined in + +[src/subscription/index.ts:90](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L90) + +___ + +### subId + +• `Readonly` **subId**: `string` + +#### Defined in + +[src/subscription/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L85) + +## Methods + +### eoseReceived + +▸ **eoseReceived**(`relay`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `relay` | [`NDKRelay`](../wiki/NDKRelay) | + +#### Returns + +`void` + +#### Defined in + +[src/subscription/index.ts:298](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L298) + +___ + +### eventReceived + +▸ **eventReceived**(`event`, `relay`, `fromCache?`): `void` + +Called when an event is received from a relay or the cache + +#### Parameters + +| Name | Type | Default value | Description | +| :------ | :------ | :------ | :------ | +| `event` | [`NDKEvent`](../wiki/NDKEvent) | `undefined` | | +| `relay` | `undefined` \| [`NDKRelay`](../wiki/NDKRelay) | `undefined` | | +| `fromCache` | `boolean` | `false` | Whether the event was received from the cache | + +#### Returns + +`void` + +#### Defined in + +[src/subscription/index.ts:259](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L259) + +___ + +### groupableId + +▸ **groupableId**(): ``null`` \| `string` + +Calculates the groupable ID for this subscription. + +#### Returns + +``null`` \| `string` + +The groupable ID, or null if the subscription is not groupable. + +#### Defined in + +[src/subscription/index.ts:140](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L140) + +___ + +### start + +▸ **start**(): `Promise`<`void`\> + +Start the subscription. This is the main method that should be called +after creating a subscription. + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/subscription/index.ts:195](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L195) + +___ + +### stop + +▸ **stop**(): `void` + +#### Returns + +`void` + +#### Defined in + +[src/subscription/index.ts:222](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L222) diff --git a/docs/enums/NDKSubscriptionCacheUsage.md b/docs/NDKSubscriptionCacheUsage.md similarity index 57% rename from docs/enums/NDKSubscriptionCacheUsage.md rename to docs/NDKSubscriptionCacheUsage.md index df0de336..ce6998f2 100644 --- a/docs/enums/NDKSubscriptionCacheUsage.md +++ b/docs/NDKSubscriptionCacheUsage.md @@ -1,15 +1,13 @@ -[NDK](../README.md) / [Exports](../modules.md) / NDKSubscriptionCacheUsage - # Enumeration: NDKSubscriptionCacheUsage ## Table of contents ### Enumeration Members -- [CACHE\_FIRST](NDKSubscriptionCacheUsage.md#cache_first) -- [ONLY\_CACHE](NDKSubscriptionCacheUsage.md#only_cache) -- [ONLY\_RELAY](NDKSubscriptionCacheUsage.md#only_relay) -- [PARALLEL](NDKSubscriptionCacheUsage.md#parallel) +- [CACHE\_FIRST](../wiki/NDKSubscriptionCacheUsage#cache_first) +- [ONLY\_CACHE](../wiki/NDKSubscriptionCacheUsage#only_cache) +- [ONLY\_RELAY](../wiki/NDKSubscriptionCacheUsage#only_relay) +- [PARALLEL](../wiki/NDKSubscriptionCacheUsage#parallel) ## Enumeration Members @@ -19,7 +17,7 @@ #### Defined in -[src/subscription/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L21) +[src/subscription/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L21) ___ @@ -29,7 +27,7 @@ ___ #### Defined in -[src/subscription/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L18) +[src/subscription/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L18) ___ @@ -39,7 +37,7 @@ ___ #### Defined in -[src/subscription/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L27) +[src/subscription/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L27) ___ @@ -49,4 +47,4 @@ ___ #### Defined in -[src/subscription/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L24) +[src/subscription/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L24) diff --git a/docs/NDKSubscriptionGroup.md b/docs/NDKSubscriptionGroup.md new file mode 100644 index 00000000..f3e85de8 --- /dev/null +++ b/docs/NDKSubscriptionGroup.md @@ -0,0 +1,303 @@ +# Class: NDKSubscriptionGroup + +Represents a group of subscriptions. + +Events emitted from the group will be emitted from each subscription. + +## Hierarchy + +- [`NDKSubscription`](../wiki/NDKSubscription) + + ↳ **`NDKSubscriptionGroup`** + +## Table of contents + +### Constructors + +- [constructor](../wiki/NDKSubscriptionGroup#constructor) + +### Properties + +- [eosesSeen](../wiki/NDKSubscriptionGroup#eosesseen) +- [eventFirstSeen](../wiki/NDKSubscriptionGroup#eventfirstseen) +- [eventsPerRelay](../wiki/NDKSubscriptionGroup#eventsperrelay) +- [filter](../wiki/NDKSubscriptionGroup#filter) +- [ndk](../wiki/NDKSubscriptionGroup#ndk) +- [opts](../wiki/NDKSubscriptionGroup#opts) +- [relaySet](../wiki/NDKSubscriptionGroup#relayset) +- [relaySubscriptions](../wiki/NDKSubscriptionGroup#relaysubscriptions) +- [subId](../wiki/NDKSubscriptionGroup#subid) + +### Methods + +- [eoseReceived](../wiki/NDKSubscriptionGroup#eosereceived) +- [eventReceived](../wiki/NDKSubscriptionGroup#eventreceived) +- [groupableId](../wiki/NDKSubscriptionGroup#groupableid) +- [start](../wiki/NDKSubscriptionGroup#start) +- [stop](../wiki/NDKSubscriptionGroup#stop) + +## Constructors + +### constructor + +• **new NDKSubscriptionGroup**(`ndk`, `subscriptions`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `ndk` | [`default`](../wiki/default) | +| `subscriptions` | [`NDKSubscription`](../wiki/NDKSubscription)[] | + +#### Overrides + +[NDKSubscription](../wiki/NDKSubscription).[constructor](../wiki/NDKSubscription#constructor) + +#### Defined in + +[src/subscription/index.ts:335](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L335) + +## Properties + +### eosesSeen + +• **eosesSeen**: `Set`<[`NDKRelay`](../wiki/NDKRelay)\> + +Relays that have sent an EOSE. + +#### Inherited from + +[NDKSubscription](../wiki/NDKSubscription).[eosesSeen](../wiki/NDKSubscription#eosesseen) + +#### Defined in + +[src/subscription/index.ts:101](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L101) + +___ + +### eventFirstSeen + +• **eventFirstSeen**: `Map`<`string`, `number`\> + +Events that have been seen by the subscription, with the time they were first seen. + +#### Inherited from + +[NDKSubscription](../wiki/NDKSubscription).[eventFirstSeen](../wiki/NDKSubscription#eventfirstseen) + +#### Defined in + +[src/subscription/index.ts:96](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L96) + +___ + +### eventsPerRelay + +• **eventsPerRelay**: `Map`<[`NDKRelay`](../wiki/NDKRelay), `Set`<`string`\>\> + +Events that have been seen by the subscription per relay. + +#### Inherited from + +[NDKSubscription](../wiki/NDKSubscription).[eventsPerRelay](../wiki/NDKSubscription#eventsperrelay) + +#### Defined in + +[src/subscription/index.ts:106](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L106) + +___ + +### filter + +• `Readonly` **filter**: [`NDKFilter`](../wiki/Exports#ndkfilter) + +#### Inherited from + +[NDKSubscription](../wiki/NDKSubscription).[filter](../wiki/NDKSubscription#filter) + +#### Defined in + +[src/subscription/index.ts:86](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L86) + +___ + +### ndk + +• **ndk**: [`default`](../wiki/default) + +#### Inherited from + +[NDKSubscription](../wiki/NDKSubscription).[ndk](../wiki/NDKSubscription#ndk) + +#### Defined in + +[src/subscription/index.ts:89](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L89) + +___ + +### opts + +• `Readonly` **opts**: [`NDKSubscriptionOptions`](../wiki/NDKSubscriptionOptions) + +#### Inherited from + +[NDKSubscription](../wiki/NDKSubscription).[opts](../wiki/NDKSubscription#opts) + +#### Defined in + +[src/subscription/index.ts:87](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L87) + +___ + +### relaySet + +• `Optional` **relaySet**: [`NDKRelaySet`](../wiki/NDKRelaySet) + +#### Inherited from + +[NDKSubscription](../wiki/NDKSubscription).[relaySet](../wiki/NDKSubscription#relayset) + +#### Defined in + +[src/subscription/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L88) + +___ + +### relaySubscriptions + +• **relaySubscriptions**: `Map`<[`NDKRelay`](../wiki/NDKRelay), `Sub`\> + +#### Inherited from + +[NDKSubscription](../wiki/NDKSubscription).[relaySubscriptions](../wiki/NDKSubscription#relaysubscriptions) + +#### Defined in + +[src/subscription/index.ts:90](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L90) + +___ + +### subId + +• `Readonly` **subId**: `string` + +#### Inherited from + +[NDKSubscription](../wiki/NDKSubscription).[subId](../wiki/NDKSubscription#subid) + +#### Defined in + +[src/subscription/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L85) + +## Methods + +### eoseReceived + +▸ **eoseReceived**(`relay`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `relay` | [`NDKRelay`](../wiki/NDKRelay) | + +#### Returns + +`void` + +#### Inherited from + +[NDKSubscription](../wiki/NDKSubscription).[eoseReceived](../wiki/NDKSubscription#eosereceived) + +#### Defined in + +[src/subscription/index.ts:298](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L298) + +___ + +### eventReceived + +▸ **eventReceived**(`event`, `relay`, `fromCache?`): `void` + +Called when an event is received from a relay or the cache + +#### Parameters + +| Name | Type | Default value | Description | +| :------ | :------ | :------ | :------ | +| `event` | [`NDKEvent`](../wiki/NDKEvent) | `undefined` | | +| `relay` | `undefined` \| [`NDKRelay`](../wiki/NDKRelay) | `undefined` | | +| `fromCache` | `boolean` | `false` | Whether the event was received from the cache | + +#### Returns + +`void` + +#### Inherited from + +[NDKSubscription](../wiki/NDKSubscription).[eventReceived](../wiki/NDKSubscription#eventreceived) + +#### Defined in + +[src/subscription/index.ts:259](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L259) + +___ + +### groupableId + +▸ **groupableId**(): ``null`` \| `string` + +Calculates the groupable ID for this subscription. + +#### Returns + +``null`` \| `string` + +The groupable ID, or null if the subscription is not groupable. + +#### Inherited from + +[NDKSubscription](../wiki/NDKSubscription).[groupableId](../wiki/NDKSubscription#groupableid) + +#### Defined in + +[src/subscription/index.ts:140](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L140) + +___ + +### start + +▸ **start**(): `Promise`<`void`\> + +Start the subscription. This is the main method that should be called +after creating a subscription. + +#### Returns + +`Promise`<`void`\> + +#### Inherited from + +[NDKSubscription](../wiki/NDKSubscription).[start](../wiki/NDKSubscription#start) + +#### Defined in + +[src/subscription/index.ts:195](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L195) + +___ + +### stop + +▸ **stop**(): `void` + +#### Returns + +`void` + +#### Inherited from + +[NDKSubscription](../wiki/NDKSubscription).[stop](../wiki/NDKSubscription#stop) + +#### Defined in + +[src/subscription/index.ts:222](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L222) diff --git a/docs/interfaces/NDKSubscriptionOptions.md b/docs/NDKSubscriptionOptions.md similarity index 54% rename from docs/interfaces/NDKSubscriptionOptions.md rename to docs/NDKSubscriptionOptions.md index 6a4d84dc..c1ce7060 100644 --- a/docs/interfaces/NDKSubscriptionOptions.md +++ b/docs/NDKSubscriptionOptions.md @@ -1,25 +1,24 @@ -[NDK](../README.md) / [Exports](../modules.md) / NDKSubscriptionOptions - # Interface: NDKSubscriptionOptions ## Table of contents ### Properties -- [cacheUsage](NDKSubscriptionOptions.md#cacheusage) -- [closeOnEose](NDKSubscriptionOptions.md#closeoneose) -- [groupable](NDKSubscriptionOptions.md#groupable) -- [groupableDelay](NDKSubscriptionOptions.md#groupabledelay) +- [cacheUsage](../wiki/NDKSubscriptionOptions#cacheusage) +- [closeOnEose](../wiki/NDKSubscriptionOptions#closeoneose) +- [groupable](../wiki/NDKSubscriptionOptions#groupable) +- [groupableDelay](../wiki/NDKSubscriptionOptions#groupabledelay) +- [subId](../wiki/NDKSubscriptionOptions#subid) ## Properties ### cacheUsage -• `Optional` **cacheUsage**: [`NDKSubscriptionCacheUsage`](../enums/NDKSubscriptionCacheUsage.md) +• `Optional` **cacheUsage**: [`NDKSubscriptionCacheUsage`](../wiki/NDKSubscriptionCacheUsage) #### Defined in -[src/subscription/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L32) +[src/subscription/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L32) ___ @@ -29,7 +28,7 @@ ___ #### Defined in -[src/subscription/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L31) +[src/subscription/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L31) ___ @@ -42,7 +41,7 @@ delayed to allow similar filters to be grouped together. #### Defined in -[src/subscription/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L38) +[src/subscription/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L38) ___ @@ -60,4 +59,16 @@ The delay to use when grouping subscriptions, specified in milliseconds. #### Defined in -[src/subscription/index.ts:44](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L44) +[src/subscription/index.ts:44](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L44) + +___ + +### subId + +• `Optional` **subId**: `string` + +The subscription ID to use for the subscription. + +#### Defined in + +[src/subscription/index.ts:49](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L49) diff --git a/docs/NDKUser.md b/docs/NDKUser.md new file mode 100644 index 00000000..f626c984 --- /dev/null +++ b/docs/NDKUser.md @@ -0,0 +1,191 @@ +# Class: NDKUser + +Represents a pubkey. + +## Table of contents + +### Constructors + +- [constructor](../wiki/NDKUser#constructor) + +### Properties + +- [follows](../wiki/NDKUser#follows) +- [ndk](../wiki/NDKUser#ndk) +- [npub](../wiki/NDKUser#npub) +- [profile](../wiki/NDKUser#profile) +- [relayUrls](../wiki/NDKUser#relayurls) + +### Methods + +- [fetchProfile](../wiki/NDKUser#fetchprofile) +- [hexpubkey](../wiki/NDKUser#hexpubkey) +- [relayList](../wiki/NDKUser#relaylist) +- [tagReference](../wiki/NDKUser#tagreference) +- [fromNip05](../wiki/NDKUser#fromnip05) + +## Constructors + +### constructor + +• **new NDKUser**(`opts`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts` | `NDKUserParams` | + +#### Defined in + +[src/user/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/index.ts#L24) + +## Properties + +### follows + +• **follows**: (...`args`: []) => `Promise`<`Set`<[`NDKUser`](../wiki/NDKUser)\>\> + +#### Type declaration + +▸ (`...args`): `Promise`<`Set`<[`NDKUser`](../wiki/NDKUser)\>\> + +Returns a set of users that this user follows. + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `...args` | [] | + +##### Returns + +`Promise`<`Set`<[`NDKUser`](../wiki/NDKUser)\>\> + +#### Defined in + +[src/user/index.ts:83](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/index.ts#L83) + +___ + +### ndk + +• **ndk**: `undefined` \| [`default`](../wiki/default) + +#### Defined in + +[src/user/index.ts:19](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/index.ts#L19) + +___ + +### npub + +• `Readonly` **npub**: `string` = `""` + +#### Defined in + +[src/user/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/index.ts#L21) + +___ + +### profile + +• `Optional` **profile**: [`NDKUserProfile`](../wiki/NDKUserProfile) + +#### Defined in + +[src/user/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/index.ts#L20) + +___ + +### relayUrls + +• `Readonly` **relayUrls**: `string`[] = `[]` + +#### Defined in + +[src/user/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/index.ts#L22) + +## Methods + +### fetchProfile + +▸ **fetchProfile**(`opts?`): `Promise`<``null`` \| `Set`<[`NDKEvent`](../wiki/NDKEvent)\>\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts?` | [`NDKFilterOptions`](../wiki/NDKFilterOptions) | + +#### Returns + +`Promise`<``null`` \| `Set`<[`NDKEvent`](../wiki/NDKEvent)\>\> + +#### Defined in + +[src/user/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/index.ts#L51) + +___ + +### hexpubkey + +▸ **hexpubkey**(): `string` + +#### Returns + +`string` + +#### Defined in + +[src/user/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/index.ts#L47) + +___ + +### relayList + +▸ **relayList**(): `Promise`<`Set`<[`NDKEvent`](../wiki/NDKEvent)\>\> + +#### Returns + +`Promise`<`Set`<[`NDKEvent`](../wiki/NDKEvent)\>\> + +#### Defined in + +[src/user/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/index.ts#L85) + +___ + +### tagReference + +▸ **tagReference**(): [`NDKTag`](../wiki/Exports#ndktag) + +Get the tag that can be used to reference this user in an event + +#### Returns + +[`NDKTag`](../wiki/Exports#ndktag) + +#### Defined in + +[src/user/index.ts:104](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/index.ts#L104) + +___ + +### fromNip05 + +▸ `Static` **fromNip05**(`nip05Id`): `Promise`<`undefined` \| [`NDKUser`](../wiki/NDKUser)\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `nip05Id` | `string` | + +#### Returns + +`Promise`<`undefined` \| [`NDKUser`](../wiki/NDKUser)\> + +#### Defined in + +[src/user/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/index.ts#L36) diff --git a/docs/interfaces/NDKUserProfile.md b/docs/NDKUserProfile.md similarity index 64% rename from docs/interfaces/NDKUserProfile.md rename to docs/NDKUserProfile.md index 786f692e..ce2a27d8 100644 --- a/docs/interfaces/NDKUserProfile.md +++ b/docs/NDKUserProfile.md @@ -1,21 +1,19 @@ -[NDK](../README.md) / [Exports](../modules.md) / NDKUserProfile - # Interface: NDKUserProfile ## Table of contents ### Properties -- [about](NDKUserProfile.md#about) -- [banner](NDKUserProfile.md#banner) -- [bio](NDKUserProfile.md#bio) -- [displayName](NDKUserProfile.md#displayname) -- [image](NDKUserProfile.md#image) -- [lud06](NDKUserProfile.md#lud06) -- [lud16](NDKUserProfile.md#lud16) -- [name](NDKUserProfile.md#name) -- [nip05](NDKUserProfile.md#nip05) -- [zapService](NDKUserProfile.md#zapservice) +- [about](../wiki/NDKUserProfile#about) +- [banner](../wiki/NDKUserProfile#banner) +- [bio](../wiki/NDKUserProfile#bio) +- [displayName](../wiki/NDKUserProfile#displayname) +- [image](../wiki/NDKUserProfile#image) +- [lud06](../wiki/NDKUserProfile#lud06) +- [lud16](../wiki/NDKUserProfile#lud16) +- [name](../wiki/NDKUserProfile#name) +- [nip05](../wiki/NDKUserProfile#nip05) +- [zapService](../wiki/NDKUserProfile#zapservice) ## Properties @@ -25,7 +23,7 @@ #### Defined in -[src/user/profile.ts:12](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/profile.ts#L12) +[src/user/profile.ts:12](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/profile.ts#L12) ___ @@ -35,7 +33,7 @@ ___ #### Defined in -[src/user/profile.ts:7](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/profile.ts#L7) +[src/user/profile.ts:7](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/profile.ts#L7) ___ @@ -45,7 +43,7 @@ ___ #### Defined in -[src/user/profile.ts:8](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/profile.ts#L8) +[src/user/profile.ts:8](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/profile.ts#L8) ___ @@ -55,7 +53,7 @@ ___ #### Defined in -[src/user/profile.ts:5](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/profile.ts#L5) +[src/user/profile.ts:5](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/profile.ts#L5) ___ @@ -65,7 +63,7 @@ ___ #### Defined in -[src/user/profile.ts:6](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/profile.ts#L6) +[src/user/profile.ts:6](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/profile.ts#L6) ___ @@ -75,7 +73,7 @@ ___ #### Defined in -[src/user/profile.ts:10](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/profile.ts#L10) +[src/user/profile.ts:10](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/profile.ts#L10) ___ @@ -85,7 +83,7 @@ ___ #### Defined in -[src/user/profile.ts:11](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/profile.ts#L11) +[src/user/profile.ts:11](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/profile.ts#L11) ___ @@ -95,7 +93,7 @@ ___ #### Defined in -[src/user/profile.ts:4](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/profile.ts#L4) +[src/user/profile.ts:4](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/profile.ts#L4) ___ @@ -105,7 +103,7 @@ ___ #### Defined in -[src/user/profile.ts:9](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/profile.ts#L9) +[src/user/profile.ts:9](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/profile.ts#L9) ___ @@ -115,4 +113,4 @@ ___ #### Defined in -[src/user/profile.ts:13](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/profile.ts#L13) +[src/user/profile.ts:13](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/profile.ts#L13) diff --git a/docs/interfaces/NDKZapInvoice.md b/docs/NDKZapInvoice.md similarity index 64% rename from docs/interfaces/NDKZapInvoice.md rename to docs/NDKZapInvoice.md index fb0201ab..82df2443 100644 --- a/docs/interfaces/NDKZapInvoice.md +++ b/docs/NDKZapInvoice.md @@ -1,18 +1,16 @@ -[NDK](../README.md) / [Exports](../modules.md) / NDKZapInvoice - # Interface: NDKZapInvoice ## Table of contents ### Properties -- [amount](NDKZapInvoice.md#amount) -- [comment](NDKZapInvoice.md#comment) -- [id](NDKZapInvoice.md#id) -- [zapped](NDKZapInvoice.md#zapped) -- [zappedEvent](NDKZapInvoice.md#zappedevent) -- [zappee](NDKZapInvoice.md#zappee) -- [zapper](NDKZapInvoice.md#zapper) +- [amount](../wiki/NDKZapInvoice#amount) +- [comment](../wiki/NDKZapInvoice#comment) +- [id](../wiki/NDKZapInvoice#id) +- [zapped](../wiki/NDKZapInvoice#zapped) +- [zappedEvent](../wiki/NDKZapInvoice#zappedevent) +- [zappee](../wiki/NDKZapInvoice#zappee) +- [zapper](../wiki/NDKZapInvoice#zapper) ## Properties @@ -22,7 +20,7 @@ #### Defined in -[src/zap/invoice.ts:10](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/zap/invoice.ts#L10) +[src/zap/invoice.ts:10](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/zap/invoice.ts#L10) ___ @@ -32,7 +30,7 @@ ___ #### Defined in -[src/zap/invoice.ts:11](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/zap/invoice.ts#L11) +[src/zap/invoice.ts:11](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/zap/invoice.ts#L11) ___ @@ -42,7 +40,7 @@ ___ #### Defined in -[src/zap/invoice.ts:5](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/zap/invoice.ts#L5) +[src/zap/invoice.ts:5](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/zap/invoice.ts#L5) ___ @@ -52,7 +50,7 @@ ___ #### Defined in -[src/zap/invoice.ts:8](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/zap/invoice.ts#L8) +[src/zap/invoice.ts:8](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/zap/invoice.ts#L8) ___ @@ -62,7 +60,7 @@ ___ #### Defined in -[src/zap/invoice.ts:9](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/zap/invoice.ts#L9) +[src/zap/invoice.ts:9](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/zap/invoice.ts#L9) ___ @@ -72,7 +70,7 @@ ___ #### Defined in -[src/zap/invoice.ts:7](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/zap/invoice.ts#L7) +[src/zap/invoice.ts:7](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/zap/invoice.ts#L7) ___ @@ -82,4 +80,4 @@ ___ #### Defined in -[src/zap/invoice.ts:6](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/zap/invoice.ts#L6) +[src/zap/invoice.ts:6](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/zap/invoice.ts#L6) diff --git a/docs/_Sidebar.md b/docs/_Sidebar.md new file mode 100644 index 00000000..98840625 --- /dev/null +++ b/docs/_Sidebar.md @@ -0,0 +1,4 @@ +## NDK + +- [Home](../wiki/Home) +- [Exports](../wiki/Exports) diff --git a/docs/classes/NDKEvent.md b/docs/classes/NDKEvent.md deleted file mode 100644 index d101b650..00000000 --- a/docs/classes/NDKEvent.md +++ /dev/null @@ -1,470 +0,0 @@ -[NDK](../README.md) / [Exports](../modules.md) / NDKEvent - -# Class: NDKEvent - -NDKEvent is the basic building block of NDK; most things -you do with NDK will revolve around writing or consuming NDKEvents. - -## Hierarchy - -- `EventEmitter` - - ↳ **`NDKEvent`** - -## Table of contents - -### Constructors - -- [constructor](NDKEvent.md#constructor) - -### Properties - -- [content](NDKEvent.md#content) -- [created\_at](NDKEvent.md#created_at) -- [decrypt](NDKEvent.md#decrypt) -- [encode](NDKEvent.md#encode) -- [encrypt](NDKEvent.md#encrypt) -- [id](NDKEvent.md#id) -- [isParamReplaceable](NDKEvent.md#isparamreplaceable) -- [isReplaceable](NDKEvent.md#isreplaceable) -- [kind](NDKEvent.md#kind) -- [ndk](NDKEvent.md#ndk) -- [pubkey](NDKEvent.md#pubkey) -- [sig](NDKEvent.md#sig) -- [tags](NDKEvent.md#tags) - -### Methods - -- [getMatchingTags](NDKEvent.md#getmatchingtags) -- [publish](NDKEvent.md#publish) -- [rawEvent](NDKEvent.md#rawevent) -- [replaceableDTag](NDKEvent.md#replaceabledtag) -- [sign](NDKEvent.md#sign) -- [tagId](NDKEvent.md#tagid) -- [tagReference](NDKEvent.md#tagreference) -- [toNostrEvent](NDKEvent.md#tonostrevent) -- [toString](NDKEvent.md#tostring) -- [zap](NDKEvent.md#zap) - -## Constructors - -### constructor - -• **new NDKEvent**(`ndk?`, `event?`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `ndk?` | [`default`](default.md) | -| `event?` | [`NostrEvent`](../modules.md#nostrevent) | - -#### Overrides - -EventEmitter.constructor - -#### Defined in - -[src/events/index.ts:44](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L44) - -## Properties - -### content - -• **content**: `string` = `''` - -#### Defined in - -[src/events/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L37) - -___ - -### created\_at - -• `Optional` **created\_at**: `number` - -#### Defined in - -[src/events/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L36) - -___ - -### decrypt - -• **decrypt**: (...`args`: [sender: NDKUser, signer?: NDKSigner]) => `Promise`<`void`\> - -#### Type declaration - -▸ (`...args`): `Promise`<`void`\> - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `...args` | [sender: NDKUser, signer?: NDKSigner] | - -##### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/events/index.ts:103](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L103) - -___ - -### encode - -• **encode**: (...`args`: []) => `string` - -#### Type declaration - -▸ (`...args`): `string` - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `...args` | [] | - -##### Returns - -`string` - -#### Defined in - -[src/events/index.ts:101](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L101) - -___ - -### encrypt - -• **encrypt**: (...`args`: [recipient: NDKUser, signer?: NDKSigner]) => `Promise`<`void`\> - -#### Type declaration - -▸ (`...args`): `Promise`<`void`\> - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `...args` | [recipient: NDKUser, signer?: NDKSigner] | - -##### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/events/index.ts:102](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L102) - -___ - -### id - -• **id**: `string` = `""` - -#### Defined in - -[src/events/index.ts:40](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L40) - -___ - -### isParamReplaceable - -• **isParamReplaceable**: (...`args`: []) => `boolean` - -#### Type declaration - -▸ (`...args`): `boolean` - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `...args` | [] | - -##### Returns - -`boolean` - -#### Defined in - -[src/events/index.ts:100](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L100) - -___ - -### isReplaceable - -• **isReplaceable**: (...`args`: []) => `boolean` - -#### Type declaration - -▸ (`...args`): `boolean` - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `...args` | [] | - -##### Returns - -`boolean` - -#### Defined in - -[src/events/index.ts:99](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L99) - -___ - -### kind - -• `Optional` **kind**: `number` - -#### Defined in - -[src/events/index.ts:39](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L39) - -___ - -### ndk - -• `Optional` **ndk**: [`default`](default.md) - -#### Defined in - -[src/events/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L35) - -___ - -### pubkey - -• **pubkey**: `string` = `''` - -#### Defined in - -[src/events/index.ts:42](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L42) - -___ - -### sig - -• `Optional` **sig**: `string` - -#### Defined in - -[src/events/index.ts:41](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L41) - -___ - -### tags - -• **tags**: [`NDKTag`](../modules.md#ndktag)[] = `[]` - -#### Defined in - -[src/events/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L38) - -## Methods - -### getMatchingTags - -▸ **getMatchingTags**(`tagName`): [`NDKTag`](../modules.md#ndktag)[] - -Get all tags with the given name - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `tagName` | `string` | - -#### Returns - -[`NDKTag`](../modules.md#ndktag)[] - -#### Defined in - -[src/events/index.ts:108](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L108) - -___ - -### publish - -▸ **publish**(`relaySet?`): `Promise`<`void`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `relaySet?` | [`NDKRelaySet`](NDKRelaySet.md) | - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/events/index.ts:136](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L136) - -___ - -### rawEvent - -▸ **rawEvent**(): [`NostrEvent`](../modules.md#nostrevent) - -Returns the event as is. - -#### Returns - -[`NostrEvent`](../modules.md#nostrevent) - -#### Defined in - -[src/events/index.ts:59](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L59) - -___ - -### replaceableDTag - -▸ **replaceableDTag**(): `string` - -#### Returns - -`string` - -the `d` tag of a parameterized replaceable event - -#### Defined in - -[src/events/index.ts:166](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L166) - -___ - -### sign - -▸ **sign**(`signer?`): `Promise`<`void`\> - -Sign the event if a signer is present. - -It will generate tags. -Repleacable events will have their created_at field set to the current time. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `signer?` | [`NDKSigner`](../interfaces/NDKSigner.md) | - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/events/index.ts:122](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L122) - -___ - -### tagId - -▸ **tagId**(): `string` - -#### Returns - -`string` - -the id of the event, or if it's a parameterized event, the id of the event with the d tag - -#### Defined in - -[src/events/index.ts:180](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L180) - -___ - -### tagReference - -▸ **tagReference**(): `string`[] - -Get the tag that can be used to reference this event from another event - -**`Example`** - -```ts -event = new NDKEvent(ndk, { kind: 30000, pubkey: 'pubkey', tags: [ ["d", "d-code"] ] }); - event.tagReference(); // ["a", "30000:pubkey:d-code"] - - event = new NDKEvent(ndk, { kind: 1, pubkey: 'pubkey', id: "eventid" }); - event.tagReference(); // ["e", "eventid"] -``` - -#### Returns - -`string`[] - -#### Defined in - -[src/events/index.ts:200](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L200) - -___ - -### toNostrEvent - -▸ **toNostrEvent**(`pubkey?`): `Promise`<[`NostrEvent`](../modules.md#nostrevent)\> - -Return a NostrEvent object, trying to fill in missing fields -when possible, adding tags when necessary. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `pubkey?` | `string` | - -#### Returns - -`Promise`<[`NostrEvent`](../modules.md#nostrevent)\> - -#### Defined in - -[src/events/index.ts:75](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L75) - -___ - -### toString - -▸ **toString**(): `Promise`<[`NostrEvent`](../modules.md#nostrevent)\> - -#### Returns - -`Promise`<[`NostrEvent`](../modules.md#nostrevent)\> - -#### Defined in - -[src/events/index.ts:112](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L112) - -___ - -### zap - -▸ **zap**(`amount`, `comment?`, `extraTags?`): `Promise`<``null`` \| `string`\> - -Create a zap request for an existing event - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `amount` | `number` | The amount to zap in millisatoshis | -| `comment?` | `string` | A comment to add to the zap request | -| `extraTags?` | [`NDKTag`](../modules.md#ndktag)[] | Extra tags to add to the zap request | - -#### Returns - -`Promise`<``null`` \| `string`\> - -#### Defined in - -[src/events/index.ts:216](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L216) diff --git a/docs/classes/NDKNip46Backend.md b/docs/classes/NDKNip46Backend.md deleted file mode 100644 index 76f17c6d..00000000 --- a/docs/classes/NDKNip46Backend.md +++ /dev/null @@ -1,177 +0,0 @@ -[NDK](../README.md) / [Exports](../modules.md) / NDKNip46Backend - -# Class: NDKNip46Backend - -This class implements a NIP-46 backend, meaning that it will hold a private key -of the npub that wants to be published as. - -This backend is meant to be used by an NDKNip46Signer, which is the class that -should run client-side, where the user wants to sign events from. - -## Table of contents - -### Constructors - -- [constructor](NDKNip46Backend.md#constructor) - -### Properties - -- [debug](NDKNip46Backend.md#debug) -- [handlers](NDKNip46Backend.md#handlers) -- [localUser](NDKNip46Backend.md#localuser) -- [ndk](NDKNip46Backend.md#ndk) - -### Methods - -- [pubkeyAllowed](NDKNip46Backend.md#pubkeyallowed) -- [setStrategy](NDKNip46Backend.md#setstrategy) -- [signEvent](NDKNip46Backend.md#signevent) -- [start](NDKNip46Backend.md#start) - -## Constructors - -### constructor - -• **new NDKNip46Backend**(`ndk`, `privateKey`, `permitCallback`) - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `ndk` | [`default`](default.md) | The NDK instance to use | -| `privateKey` | `string` | The private key of the npub that wants to be published as | -| `permitCallback` | [`Nip46PermitCallback`](../modules.md#nip46permitcallback) | - | - -#### Defined in - -[src/signers/nip46/backend/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/backend/index.ts#L37) - -## Properties - -### debug - -• `Readonly` **debug**: `Debugger` - -#### Defined in - -[src/signers/nip46/backend/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/backend/index.ts#L29) - -___ - -### handlers - -• **handlers**: `Object` - -#### Index signature - -▪ [method: `string`]: [`IEventHandlingStrategy`](../interfaces/IEventHandlingStrategy.md) - -#### Defined in - -[src/signers/nip46/backend/index.ts:60](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/backend/index.ts#L60) - -___ - -### localUser - -• `Optional` **localUser**: [`NDKUser`](NDKUser.md) - -#### Defined in - -[src/signers/nip46/backend/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/backend/index.ts#L28) - -___ - -### ndk - -• `Readonly` **ndk**: [`default`](default.md) - -#### Defined in - -[src/signers/nip46/backend/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/backend/index.ts#L26) - -## Methods - -### pubkeyAllowed - -▸ **pubkeyAllowed**(`pubkey`, `method`, `params?`): `Promise`<`boolean`\> - -This method should be overriden by the user to allow or reject incoming -connections. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `pubkey` | `string` | -| `method` | `string` | -| `params?` | `any` | - -#### Returns - -`Promise`<`boolean`\> - -#### Defined in - -[src/signers/nip46/backend/index.ts:120](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/backend/index.ts#L120) - -___ - -### setStrategy - -▸ **setStrategy**(`method`, `strategy`): `void` - -Enables the user to set a custom strategy for handling incoming events. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `method` | `string` | The method to set the strategy for | -| `strategy` | [`IEventHandlingStrategy`](../interfaces/IEventHandlingStrategy.md) | The strategy to set | - -#### Returns - -`void` - -#### Defined in - -[src/signers/nip46/backend/index.ts:72](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/backend/index.ts#L72) - -___ - -### signEvent - -▸ **signEvent**(`remotePubkey`, `params`): `Promise`<`undefined` \| [`NDKEvent`](NDKEvent.md)\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `remotePubkey` | `string` | -| `params` | `string`[] | - -#### Returns - -`Promise`<`undefined` \| [`NDKEvent`](NDKEvent.md)\> - -#### Defined in - -[src/signers/nip46/backend/index.ts:96](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/backend/index.ts#L96) - -___ - -### start - -▸ **start**(): `Promise`<`void`\> - -This method starts the backend, which will start listening for incoming -requests. - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/signers/nip46/backend/index.ts:49](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/backend/index.ts#L49) diff --git a/docs/classes/NDKNip46Signer.md b/docs/classes/NDKNip46Signer.md deleted file mode 100644 index 849020f1..00000000 --- a/docs/classes/NDKNip46Signer.md +++ /dev/null @@ -1,193 +0,0 @@ -[NDK](../README.md) / [Exports](../modules.md) / NDKNip46Signer - -# Class: NDKNip46Signer - -This NDKSigner implements NIP-46, which allows remote signing of events. -This class is meant to be used client-side, paired with the NDKNip46Backend or a NIP-46 backend (like Nostr-Connect) - -## Implements - -- [`NDKSigner`](../interfaces/NDKSigner.md) - -## Table of contents - -### Constructors - -- [constructor](NDKNip46Signer.md#constructor) - -### Properties - -- [localSigner](NDKNip46Signer.md#localsigner) -- [remotePubkey](NDKNip46Signer.md#remotepubkey) - -### Methods - -- [blockUntilReady](NDKNip46Signer.md#blockuntilready) -- [decrypt](NDKNip46Signer.md#decrypt) -- [encrypt](NDKNip46Signer.md#encrypt) -- [sign](NDKNip46Signer.md#sign) -- [user](NDKNip46Signer.md#user) - -## Constructors - -### constructor - -• **new NDKNip46Signer**(`ndk`, `remotePubkey`, `localSigner?`) - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `ndk` | [`default`](default.md) | The NDK instance to use | -| `remotePubkey` | `string` | The public key of the npub that wants to be published as | -| `localSigner?` | [`NDKSigner`](../interfaces/NDKSigner.md) | The signer that will be used to request events to be signed | - -#### Defined in - -[src/signers/nip46/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/index.ts#L21) - -## Properties - -### localSigner - -• **localSigner**: [`NDKSigner`](../interfaces/NDKSigner.md) - -#### Defined in - -[src/signers/nip46/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/index.ts#L11) - -___ - -### remotePubkey - -• **remotePubkey**: `string` - -#### Defined in - -[src/signers/nip46/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/index.ts#L10) - -## Methods - -### blockUntilReady - -▸ **blockUntilReady**(): `Promise`<[`NDKUser`](NDKUser.md)\> - -Blocks until the signer is ready and returns the associated NDKUser. - -#### Returns - -`Promise`<[`NDKUser`](NDKUser.md)\> - -A promise that resolves to the NDKUser instance. - -#### Implementation of - -[NDKSigner](../interfaces/NDKSigner.md).[blockUntilReady](../interfaces/NDKSigner.md#blockuntilready) - -#### Defined in - -[src/signers/nip46/index.ts:39](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/index.ts#L39) - -___ - -### decrypt - -▸ **decrypt**(`sender`, `value`): `Promise`<`string`\> - -Decrypts the given value. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `sender` | [`NDKUser`](NDKUser.md) | -| `value` | `string` | - -#### Returns - -`Promise`<`string`\> - -#### Implementation of - -[NDKSigner](../interfaces/NDKSigner.md).[decrypt](../interfaces/NDKSigner.md#decrypt) - -#### Defined in - -[src/signers/nip46/index.ts:70](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/index.ts#L70) - -___ - -### encrypt - -▸ **encrypt**(`recipient`, `value`): `Promise`<`string`\> - -Encrypts the given Nostr event for the given recipient. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `recipient` | [`NDKUser`](NDKUser.md) | The recipient of the encrypted value. | -| `value` | `string` | The value to be encrypted. | - -#### Returns - -`Promise`<`string`\> - -#### Implementation of - -[NDKSigner](../interfaces/NDKSigner.md).[encrypt](../interfaces/NDKSigner.md#encrypt) - -#### Defined in - -[src/signers/nip46/index.ts:66](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/index.ts#L66) - -___ - -### sign - -▸ **sign**(`event`): `Promise`<`string`\> - -Signs the given Nostr event. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `event` | [`NostrEvent`](../modules.md#nostrevent) | The Nostr event to be signed. | - -#### Returns - -`Promise`<`string`\> - -A promise that resolves to the signature of the signed event. - -#### Implementation of - -[NDKSigner](../interfaces/NDKSigner.md).[sign](../interfaces/NDKSigner.md#sign) - -#### Defined in - -[src/signers/nip46/index.ts:74](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/index.ts#L74) - -___ - -### user - -▸ **user**(): `Promise`<[`NDKUser`](NDKUser.md)\> - -Getter for the user property. - -#### Returns - -`Promise`<[`NDKUser`](NDKUser.md)\> - -A promise that resolves to the NDKUser instance. - -#### Implementation of - -[NDKSigner](../interfaces/NDKSigner.md).[user](../interfaces/NDKSigner.md#user) - -#### Defined in - -[src/signers/nip46/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/index.ts#L35) diff --git a/docs/classes/NDKRelay.md b/docs/classes/NDKRelay.md deleted file mode 100644 index 48166a8e..00000000 --- a/docs/classes/NDKRelay.md +++ /dev/null @@ -1,269 +0,0 @@ -[NDK](../README.md) / [Exports](../modules.md) / NDKRelay - -# Class: NDKRelay - -The NDKRelay class represents a connection to a relay. - -**`Emits`** - -NDKRelay#connect - -**`Emits`** - -NDKRelay#disconnect - -**`Emits`** - -NDKRelay#notice - -**`Emits`** - -NDKRelay#event - -**`Emits`** - -NDKRelay#eose - -## Hierarchy - -- `EventEmitter` - - ↳ **`NDKRelay`** - -## Table of contents - -### Constructors - -- [constructor](NDKRelay.md#constructor) - -### Properties - -- [activeSubscriptions](NDKRelay.md#activesubscriptions) -- [complaining](NDKRelay.md#complaining) -- [scores](NDKRelay.md#scores) -- [url](NDKRelay.md#url) - -### Accessors - -- [connectionStats](NDKRelay.md#connectionstats) -- [status](NDKRelay.md#status) - -### Methods - -- [connect](NDKRelay.md#connect) -- [disconnect](NDKRelay.md#disconnect) -- [handleNotice](NDKRelay.md#handlenotice) -- [publish](NDKRelay.md#publish) -- [scoreSlowerEvent](NDKRelay.md#scoreslowerevent) -- [subscribe](NDKRelay.md#subscribe) - -## Constructors - -### constructor - -• **new NDKRelay**(`url`) - -#### Parameters - -| Name | Type | -| :---- | :------- | -| `url` | `string` | - -#### Overrides - -EventEmitter.constructor - -#### Defined in - -[src/relay/index.ts:63](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L63) - -## Properties - -### activeSubscriptions - -• **activeSubscriptions**: `Set`<[`NDKSubscription`](NDKSubscription.md)\> - -Active subscriptions this relay is connected to - -#### Defined in - -[src/relay/index.ts:61](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L61) - ---- - -### complaining - -• **complaining**: `boolean` = `false` - -#### Defined in - -[src/relay/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L56) - ---- - -### scores - -• `Readonly` **scores**: `Map`<[`NDKUser`](NDKUser.md), `number`\> - -#### Defined in - -[src/relay/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L51) - ---- - -### url - -• `Readonly` **url**: `string` - -#### Defined in - -[src/relay/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L50) - -## Accessors - -### connectionStats - -• `get` **connectionStats**(): [`NDKRelayConnectionStats`](../interfaces/NDKRelayConnectionStats.md) - -Returns the connection stats. - -#### Returns - -[`NDKRelayConnectionStats`](../interfaces/NDKRelayConnectionStats.md) - -#### Defined in - -[src/relay/index.ts:234](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L234) - ---- - -### status - -• `get` **status**(): [`NDKRelayStatus`](../enums/NDKRelayStatus.md) - -#### Returns - -[`NDKRelayStatus`](../enums/NDKRelayStatus.md) - -#### Defined in - -[src/relay/index.ts:121](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L121) - -## Methods - -### connect - -▸ **connect**(): `Promise`<`void`\> - -Connects to the relay. - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/relay/index.ts:128](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L128) - ---- - -### disconnect - -▸ **disconnect**(): `void` - -Disconnects from the relay. - -#### Returns - -`void` - -#### Defined in - -[src/relay/index.ts:139](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L139) - ---- - -### handleNotice - -▸ **handleNotice**(`notice`): `Promise`<`void`\> - -#### Parameters - -| Name | Type | -| :------- | :------- | -| `notice` | `string` | - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/relay/index.ts:144](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L144) - ---- - -### publish - -▸ **publish**(`event`): `Promise`<`void`\> - -Publishes an event to the relay. - -#### Parameters - -| Name | Type | -| :------ | :------------------------ | -| `event` | [`NDKEvent`](NDKEvent.md) | - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/relay/index.ts:191](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L191) - ---- - -### scoreSlowerEvent - -▸ **scoreSlowerEvent**(`timeDiffInMs`): `void` - -Called when this relay has responded with an event but -wasn't the fastest one. - -#### Parameters - -| Name | Type | Description | -| :------------- | :------- | :--------------------------------------------------------------------------- | -| `timeDiffInMs` | `number` | The time difference in ms between the fastest and this relay in milliseconds | - -#### Returns - -`void` - -#### Defined in - -[src/relay/index.ts:202](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L202) - ---- - -### subscribe - -▸ **subscribe**(`subscription`): `Sub` - -Subscribes to a subscription. - -#### Parameters - -| Name | Type | -| :------------- | :-------------------------------------- | -| `subscription` | [`NDKSubscription`](NDKSubscription.md) | - -#### Returns - -`Sub` - -#### Defined in - -[src/relay/index.ts:164](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L164) diff --git a/docs/classes/NDKSubscription.md b/docs/classes/NDKSubscription.md deleted file mode 100644 index 40d60533..00000000 --- a/docs/classes/NDKSubscription.md +++ /dev/null @@ -1,259 +0,0 @@ -[NDK](../README.md) / [Exports](../modules.md) / NDKSubscription - -# Class: NDKSubscription - -Represents a subscription to an NDK event stream. - - NDKSubscription#event -Emitted when an event is received by the subscription. - -**`Param`** - -The event received by the subscription. - -**`Param`** - -The relay that received the event. - -**`Param`** - -The subscription that received the event. - - NDKSubscription#event:dup -Emitted when a duplicate event is received by the subscription. - -**`Param`** - -The duplicate event received by the subscription. - -**`Param`** - -The relay that received the event. - -**`Param`** - -The time elapsed since the first time the event was seen. - -**`Param`** - -The subscription that received the event. - - NDKSubscription#eose - Emitted when all relays have reached the end of the event stream. - -**`Param`** - -The subscription that received EOSE. - - NDKSubscription#close - Emitted when the subscription is closed. - -**`Param`** - -The subscription that was closed. - -## Hierarchy - -- `EventEmitter` - - ↳ **`NDKSubscription`** - - ↳↳ [`NDKSubscriptionGroup`](NDKSubscriptionGroup.md) - -## Table of contents - -### Constructors - -- [constructor](NDKSubscription.md#constructor) - -### Properties - -- [filter](NDKSubscription.md#filter) -- [ndk](NDKSubscription.md#ndk) -- [opts](NDKSubscription.md#opts) -- [relaySet](NDKSubscription.md#relayset) -- [relaySubscriptions](NDKSubscription.md#relaysubscriptions) -- [subId](NDKSubscription.md#subid) - -### Methods - -- [eoseReceived](NDKSubscription.md#eosereceived) -- [eventReceived](NDKSubscription.md#eventreceived) -- [groupableId](NDKSubscription.md#groupableid) -- [start](NDKSubscription.md#start) -- [stop](NDKSubscription.md#stop) - -## Constructors - -### constructor - -• **new NDKSubscription**(`ndk`, `filter`, `opts?`, `relaySet?`, `subId?`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `ndk` | [`default`](default.md) | -| `filter` | `Filter` | -| `opts?` | [`NDKSubscriptionOptions`](../interfaces/NDKSubscriptionOptions.md) | -| `relaySet?` | [`NDKRelaySet`](NDKRelaySet.md) | -| `subId?` | `string` | - -#### Overrides - -EventEmitter.constructor - -#### Defined in - -[src/subscription/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L88) - -## Properties - -### filter - -• `Readonly` **filter**: `Filter` - -#### Defined in - -[src/subscription/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L81) - -___ - -### ndk - -• **ndk**: [`default`](default.md) - -#### Defined in - -[src/subscription/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L84) - -___ - -### opts - -• `Readonly` **opts**: [`NDKSubscriptionOptions`](../interfaces/NDKSubscriptionOptions.md) - -#### Defined in - -[src/subscription/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L82) - -___ - -### relaySet - -• `Optional` **relaySet**: [`NDKRelaySet`](NDKRelaySet.md) - -#### Defined in - -[src/subscription/index.ts:83](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L83) - -___ - -### relaySubscriptions - -• **relaySubscriptions**: `Map`<[`NDKRelay`](NDKRelay.md), `Sub`\> - -#### Defined in - -[src/subscription/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L85) - -___ - -### subId - -• `Readonly` **subId**: `string` - -#### Defined in - -[src/subscription/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L80) - -## Methods - -### eoseReceived - -▸ **eoseReceived**(`relay`): `void` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `relay` | [`NDKRelay`](NDKRelay.md) | - -#### Returns - -`void` - -#### Defined in - -[src/subscription/index.ts:254](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L254) - -___ - -### eventReceived - -▸ **eventReceived**(`event`, `relay`, `fromCache?`): `void` - -Called when an event is received from a relay or the cache - -#### Parameters - -| Name | Type | Default value | Description | -| :------ | :------ | :------ | :------ | -| `event` | [`NDKEvent`](NDKEvent.md) | `undefined` | | -| `relay` | `undefined` \| [`NDKRelay`](NDKRelay.md) | `undefined` | | -| `fromCache` | `boolean` | `false` | Whether the event was received from the cache | - -#### Returns - -`void` - -#### Defined in - -[src/subscription/index.ts:225](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L225) - -___ - -### groupableId - -▸ **groupableId**(): ``null`` \| `string` - -Calculates the groupable ID for this subscription. - -#### Returns - -``null`` \| `string` - -The groupable ID, or null if the subscription is not groupable. - -#### Defined in - -[src/subscription/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L119) - -___ - -### start - -▸ **start**(): `Promise`<`void`\> - -Start the subscription. This is the main method that should be called -after creating a subscription. - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/subscription/index.ts:156](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L156) - -___ - -### stop - -▸ **stop**(): `void` - -#### Returns - -`void` - -#### Defined in - -[src/subscription/index.ts:188](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L188) diff --git a/docs/classes/NDKSubscriptionGroup.md b/docs/classes/NDKSubscriptionGroup.md deleted file mode 100644 index 2b1b344c..00000000 --- a/docs/classes/NDKSubscriptionGroup.md +++ /dev/null @@ -1,254 +0,0 @@ -[NDK](../README.md) / [Exports](../modules.md) / NDKSubscriptionGroup - -# Class: NDKSubscriptionGroup - -Represents a group of subscriptions. - -Events emitted from the group will be emitted from each subscription. - -## Hierarchy - -- [`NDKSubscription`](NDKSubscription.md) - - ↳ **`NDKSubscriptionGroup`** - -## Table of contents - -### Constructors - -- [constructor](NDKSubscriptionGroup.md#constructor) - -### Properties - -- [filter](NDKSubscriptionGroup.md#filter) -- [ndk](NDKSubscriptionGroup.md#ndk) -- [opts](NDKSubscriptionGroup.md#opts) -- [relaySet](NDKSubscriptionGroup.md#relayset) -- [relaySubscriptions](NDKSubscriptionGroup.md#relaysubscriptions) -- [subId](NDKSubscriptionGroup.md#subid) - -### Methods - -- [eoseReceived](NDKSubscriptionGroup.md#eosereceived) -- [eventReceived](NDKSubscriptionGroup.md#eventreceived) -- [groupableId](NDKSubscriptionGroup.md#groupableid) -- [start](NDKSubscriptionGroup.md#start) -- [stop](NDKSubscriptionGroup.md#stop) - -## Constructors - -### constructor - -• **new NDKSubscriptionGroup**(`ndk`, `subscriptions`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `ndk` | [`default`](default.md) | -| `subscriptions` | [`NDKSubscription`](NDKSubscription.md)[] | - -#### Overrides - -[NDKSubscription](NDKSubscription.md).[constructor](NDKSubscription.md#constructor) - -#### Defined in - -[src/subscription/index.ts:291](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L291) - -## Properties - -### filter - -• `Readonly` **filter**: `Filter` - -#### Inherited from - -[NDKSubscription](NDKSubscription.md).[filter](NDKSubscription.md#filter) - -#### Defined in - -[src/subscription/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L81) - -___ - -### ndk - -• **ndk**: [`default`](default.md) - -#### Inherited from - -[NDKSubscription](NDKSubscription.md).[ndk](NDKSubscription.md#ndk) - -#### Defined in - -[src/subscription/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L84) - -___ - -### opts - -• `Readonly` **opts**: [`NDKSubscriptionOptions`](../interfaces/NDKSubscriptionOptions.md) - -#### Inherited from - -[NDKSubscription](NDKSubscription.md).[opts](NDKSubscription.md#opts) - -#### Defined in - -[src/subscription/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L82) - -___ - -### relaySet - -• `Optional` **relaySet**: [`NDKRelaySet`](NDKRelaySet.md) - -#### Inherited from - -[NDKSubscription](NDKSubscription.md).[relaySet](NDKSubscription.md#relayset) - -#### Defined in - -[src/subscription/index.ts:83](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L83) - -___ - -### relaySubscriptions - -• **relaySubscriptions**: `Map`<[`NDKRelay`](NDKRelay.md), `Sub`\> - -#### Inherited from - -[NDKSubscription](NDKSubscription.md).[relaySubscriptions](NDKSubscription.md#relaysubscriptions) - -#### Defined in - -[src/subscription/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L85) - -___ - -### subId - -• `Readonly` **subId**: `string` - -#### Inherited from - -[NDKSubscription](NDKSubscription.md).[subId](NDKSubscription.md#subid) - -#### Defined in - -[src/subscription/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L80) - -## Methods - -### eoseReceived - -▸ **eoseReceived**(`relay`): `void` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `relay` | [`NDKRelay`](NDKRelay.md) | - -#### Returns - -`void` - -#### Inherited from - -[NDKSubscription](NDKSubscription.md).[eoseReceived](NDKSubscription.md#eosereceived) - -#### Defined in - -[src/subscription/index.ts:254](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L254) - -___ - -### eventReceived - -▸ **eventReceived**(`event`, `relay`, `fromCache?`): `void` - -Called when an event is received from a relay or the cache - -#### Parameters - -| Name | Type | Default value | Description | -| :------ | :------ | :------ | :------ | -| `event` | [`NDKEvent`](NDKEvent.md) | `undefined` | | -| `relay` | `undefined` \| [`NDKRelay`](NDKRelay.md) | `undefined` | | -| `fromCache` | `boolean` | `false` | Whether the event was received from the cache | - -#### Returns - -`void` - -#### Inherited from - -[NDKSubscription](NDKSubscription.md).[eventReceived](NDKSubscription.md#eventreceived) - -#### Defined in - -[src/subscription/index.ts:225](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L225) - -___ - -### groupableId - -▸ **groupableId**(): ``null`` \| `string` - -Calculates the groupable ID for this subscription. - -#### Returns - -``null`` \| `string` - -The groupable ID, or null if the subscription is not groupable. - -#### Inherited from - -[NDKSubscription](NDKSubscription.md).[groupableId](NDKSubscription.md#groupableid) - -#### Defined in - -[src/subscription/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L119) - -___ - -### start - -▸ **start**(): `Promise`<`void`\> - -Start the subscription. This is the main method that should be called -after creating a subscription. - -#### Returns - -`Promise`<`void`\> - -#### Inherited from - -[NDKSubscription](NDKSubscription.md).[start](NDKSubscription.md#start) - -#### Defined in - -[src/subscription/index.ts:156](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L156) - -___ - -### stop - -▸ **stop**(): `void` - -#### Returns - -`void` - -#### Inherited from - -[NDKSubscription](NDKSubscription.md).[stop](NDKSubscription.md#stop) - -#### Defined in - -[src/subscription/index.ts:188](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L188) diff --git a/docs/classes/NDKUser.md b/docs/classes/NDKUser.md deleted file mode 100644 index f89f60c9..00000000 --- a/docs/classes/NDKUser.md +++ /dev/null @@ -1,176 +0,0 @@ -[NDK](../README.md) / [Exports](../modules.md) / NDKUser - -# Class: NDKUser - -Represents a pubkey. - -## Table of contents - -### Constructors - -- [constructor](NDKUser.md#constructor) - -### Properties - -- [follows](NDKUser.md#follows) -- [ndk](NDKUser.md#ndk) -- [npub](NDKUser.md#npub) -- [profile](NDKUser.md#profile) -- [relayUrls](NDKUser.md#relayurls) - -### Methods - -- [fetchProfile](NDKUser.md#fetchprofile) -- [hexpubkey](NDKUser.md#hexpubkey) -- [relayList](NDKUser.md#relaylist) -- [fromNip05](NDKUser.md#fromnip05) - -## Constructors - -### constructor - -• **new NDKUser**(`opts`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `opts` | `NDKUserParams` | - -#### Defined in - -[src/user/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/index.ts#L24) - -## Properties - -### follows - -• **follows**: (...`args`: []) => `Promise`<`Set`<[`NDKUser`](NDKUser.md)\>\> - -#### Type declaration - -▸ (`...args`): `Promise`<`Set`<[`NDKUser`](NDKUser.md)\>\> - -Returns a set of users that this user follows. - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `...args` | [] | - -##### Returns - -`Promise`<`Set`<[`NDKUser`](NDKUser.md)\>\> - -#### Defined in - -[src/user/index.ts:80](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/index.ts#L80) - -___ - -### ndk - -• **ndk**: `undefined` \| [`default`](default.md) - -#### Defined in - -[src/user/index.ts:19](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/index.ts#L19) - -___ - -### npub - -• `Readonly` **npub**: `string` = `''` - -#### Defined in - -[src/user/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/index.ts#L21) - -___ - -### profile - -• `Optional` **profile**: [`NDKUserProfile`](../interfaces/NDKUserProfile.md) - -#### Defined in - -[src/user/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/index.ts#L20) - -___ - -### relayUrls - -• `Readonly` **relayUrls**: `string`[] = `[]` - -#### Defined in - -[src/user/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/index.ts#L22) - -## Methods - -### fetchProfile - -▸ **fetchProfile**(`opts?`): `Promise`<``null`` \| `Set`<[`NDKEvent`](NDKEvent.md)\>\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `opts?` | [`NDKFilterOptions`](../interfaces/NDKFilterOptions.md) | - -#### Returns - -`Promise`<``null`` \| `Set`<[`NDKEvent`](NDKEvent.md)\>\> - -#### Defined in - -[src/user/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/index.ts#L51) - -___ - -### hexpubkey - -▸ **hexpubkey**(): `string` - -#### Returns - -`string` - -#### Defined in - -[src/user/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/index.ts#L47) - -___ - -### relayList - -▸ **relayList**(): `Promise`<`Set`<[`NDKEvent`](NDKEvent.md)\>\> - -#### Returns - -`Promise`<`Set`<[`NDKEvent`](NDKEvent.md)\>\> - -#### Defined in - -[src/user/index.ts:82](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/index.ts#L82) - -___ - -### fromNip05 - -▸ `Static` **fromNip05**(`nip05Id`): `Promise`<`undefined` \| [`NDKUser`](NDKUser.md)\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `nip05Id` | `string` | - -#### Returns - -`Promise`<`undefined` \| [`NDKUser`](NDKUser.md)\> - -#### Defined in - -[src/user/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/index.ts#L36) diff --git a/docs/classes/default.md b/docs/classes/default.md deleted file mode 100644 index d937be1c..00000000 --- a/docs/classes/default.md +++ /dev/null @@ -1,271 +0,0 @@ -[NDK](../README.md) / [Exports](../modules.md) / default - -# Class: default - -## Hierarchy - -- `EventEmitter` - - ↳ **`default`** - -## Table of contents - -### Constructors - -- [constructor](default.md#constructor) - -### Properties - -- [cacheAdapter](default.md#cacheadapter) -- [debug](default.md#debug) -- [delayedSubscriptions](default.md#delayedsubscriptions) -- [devWriteRelaySet](default.md#devwriterelayset) -- [pool](default.md#pool) -- [signer](default.md#signer) - -### Methods - -- [assertSigner](default.md#assertsigner) -- [connect](default.md#connect) -- [fetchEvent](default.md#fetchevent) -- [fetchEvents](default.md#fetchevents) -- [getUser](default.md#getuser) -- [publish](default.md#publish) -- [subscribe](default.md#subscribe) - -## Constructors - -### constructor - -• **new default**(`opts?`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `opts` | [`NDKConstructorParams`](../interfaces/NDKConstructorParams.md) | - -#### Overrides - -EventEmitter.constructor - -#### Defined in - -[src/index.ts:57](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L57) - -## Properties - -### cacheAdapter - -• `Optional` **cacheAdapter**: [`NDKCacheAdapter`](../interfaces/NDKCacheAdapter.md) - -#### Defined in - -[src/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L51) - -___ - -### debug - -• **debug**: `Debugger` - -#### Defined in - -[src/index.ts:52](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L52) - -___ - -### delayedSubscriptions - -• **delayedSubscriptions**: `Map`<`string`, [`NDKSubscription`](NDKSubscription.md)[]\> - -#### Defined in - -[src/index.ts:55](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L55) - -___ - -### devWriteRelaySet - -• `Optional` **devWriteRelaySet**: [`NDKRelaySet`](NDKRelaySet.md) - -#### Defined in - -[src/index.ts:53](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L53) - -___ - -### pool - -• **pool**: `NDKPool` - -#### Defined in - -[src/index.ts:49](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L49) - -___ - -### signer - -• `Optional` **signer**: [`NDKSigner`](../interfaces/NDKSigner.md) - -#### Defined in - -[src/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L50) - -## Methods - -### assertSigner - -▸ **assertSigner**(): `Promise`<`void`\> - -Ensures that a signer is available to sign an event. - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/index.ts:169](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L169) - -___ - -### connect - -▸ **connect**(`timeoutMs?`): `Promise`<`void`\> - -Connect to relays with optional timeout. -If the timeout is reached, the connection will be continued to be established in the background. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `timeoutMs?` | `number` | - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/index.ts:75](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L75) - -___ - -### fetchEvent - -▸ **fetchEvent**(`filter`, `opts?`): `Promise`<[`NDKEvent`](NDKEvent.md)\> - -Fetch a single event - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `filter` | `Filter` | -| `opts` | [`NDKFilterOptions`](../interfaces/NDKFilterOptions.md) | - -#### Returns - -`Promise`<[`NDKEvent`](NDKEvent.md)\> - -#### Defined in - -[src/index.ts:132](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L132) - -___ - -### fetchEvents - -▸ **fetchEvents**(`filter`, `opts?`): `Promise`<`Set`<[`NDKEvent`](NDKEvent.md)\>\> - -Fetch events - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `filter` | `Filter` | -| `opts` | [`NDKFilterOptions`](../interfaces/NDKFilterOptions.md) | - -#### Returns - -`Promise`<`Set`<[`NDKEvent`](NDKEvent.md)\>\> - -#### Defined in - -[src/index.ts:145](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L145) - -___ - -### getUser - -▸ **getUser**(`opts`): [`NDKUser`](NDKUser.md) - -Get a NDKUser object - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `opts` | [`GetUserParams`](../interfaces/GetUserParams.md) | - -#### Returns - -[`NDKUser`](NDKUser.md) - -#### Defined in - -[src/index.ts:86](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L86) - -___ - -### publish - -▸ **publish**(`event`, `relaySet?`): `Promise`<`void`\> - -Publish an event - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `event` | [`NDKEvent`](NDKEvent.md) | event to publish | -| `relaySet?` | [`NDKRelaySet`](NDKRelaySet.md) | - | - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/index.ts:117](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L117) - -___ - -### subscribe - -▸ **subscribe**(`filter`, `opts?`, `relaySet?`): [`NDKSubscription`](NDKSubscription.md) - -Create a new subscription. Subscriptions automatically start and finish when all relays -on the set send back an EOSE. (set `opts.closeOnEose` to `false` in order avoid this) - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `filter` | `Filter` | | -| `opts?` | [`NDKSubscriptionOptions`](../interfaces/NDKSubscriptionOptions.md) | | -| `relaySet?` | [`NDKRelaySet`](NDKRelaySet.md) | explicit relay set to use | - -#### Returns - -[`NDKSubscription`](NDKSubscription.md) - -NDKSubscription - -#### Defined in - -[src/index.ts:101](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L101) diff --git a/docs/default.md b/docs/default.md new file mode 100644 index 00000000..921e4666 --- /dev/null +++ b/docs/default.md @@ -0,0 +1,286 @@ +# Class: default + +## Hierarchy + +- `EventEmitter` + + ↳ **`default`** + +## Table of contents + +### Constructors + +- [constructor](../wiki/default#constructor) + +### Properties + +- [cacheAdapter](../wiki/default#cacheadapter) +- [debug](../wiki/default#debug) +- [delayedSubscriptions](../wiki/default#delayedsubscriptions) +- [devWriteRelaySet](../wiki/default#devwriterelayset) +- [pool](../wiki/default#pool) +- [signer](../wiki/default#signer) + +### Methods + +- [assertSigner](../wiki/default#assertsigner) +- [connect](../wiki/default#connect) +- [fetchEvent](../wiki/default#fetchevent) +- [fetchEvents](../wiki/default#fetchevents) +- [getUser](../wiki/default#getuser) +- [publish](../wiki/default#publish) +- [subscribe](../wiki/default#subscribe) + +## Constructors + +### constructor + +• **new default**(`opts?`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts` | [`NDKConstructorParams`](../wiki/NDKConstructorParams) | + +#### Overrides + +EventEmitter.constructor + +#### Defined in + +[src/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L56) + +## Properties + +### cacheAdapter + +• `Optional` **cacheAdapter**: [`NDKCacheAdapter`](../wiki/NDKCacheAdapter) + +#### Defined in + +[src/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L50) + +___ + +### debug + +• **debug**: `Debugger` + +#### Defined in + +[src/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L51) + +___ + +### delayedSubscriptions + +• **delayedSubscriptions**: `Map`<`string`, [`NDKSubscription`](../wiki/NDKSubscription)[]\> + +#### Defined in + +[src/index.ts:54](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L54) + +___ + +### devWriteRelaySet + +• `Optional` **devWriteRelaySet**: [`NDKRelaySet`](../wiki/NDKRelaySet) + +#### Defined in + +[src/index.ts:52](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L52) + +___ + +### pool + +• **pool**: `NDKPool` + +#### Defined in + +[src/index.ts:48](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L48) + +___ + +### signer + +• `Optional` **signer**: [`NDKSigner`](../wiki/NDKSigner) + +#### Defined in + +[src/index.ts:49](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L49) + +## Methods + +### assertSigner + +▸ **assertSigner**(): `Promise`<`void`\> + +Ensures that a signer is available to sign an event. + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/index.ts:192](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L192) + +___ + +### connect + +▸ **connect**(`timeoutMs?`): `Promise`<`void`\> + +Connect to relays with optional timeout. +If the timeout is reached, the connection will be continued to be established in the background. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `timeoutMs?` | `number` | + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/index.ts:74](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L74) + +___ + +### fetchEvent + +▸ **fetchEvent**(`id`): `Promise`<``null`` \| [`NDKEvent`](../wiki/NDKEvent)\> + +Fetch a single event + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `id` | `string` | + +#### Returns + +`Promise`<``null`` \| [`NDKEvent`](../wiki/NDKEvent)\> + +#### Defined in + +[src/index.ts:130](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L130) + +▸ **fetchEvent**(`filter`, `opts`): `Promise`<``null`` \| [`NDKEvent`](../wiki/NDKEvent)\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `filter` | [`NDKFilter`](../wiki/Exports#ndkfilter) | +| `opts` | [`NDKFilterOptions`](../wiki/NDKFilterOptions) | + +#### Returns + +`Promise`<``null`` \| [`NDKEvent`](../wiki/NDKEvent)\> + +#### Defined in + +[src/index.ts:131](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L131) + +___ + +### fetchEvents + +▸ **fetchEvents**(`filter`, `opts?`): `Promise`<`Set`<[`NDKEvent`](../wiki/NDKEvent)\>\> + +Fetch events + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `filter` | [`NDKFilter`](../wiki/Exports#ndkfilter) | +| `opts` | [`NDKFilterOptions`](../wiki/NDKFilterOptions) | + +#### Returns + +`Promise`<`Set`<[`NDKEvent`](../wiki/NDKEvent)\>\> + +#### Defined in + +[src/index.ts:163](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L163) + +___ + +### getUser + +▸ **getUser**(`opts`): [`NDKUser`](../wiki/NDKUser) + +Get a NDKUser object + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `opts` | [`GetUserParams`](../wiki/GetUserParams) | + +#### Returns + +[`NDKUser`](../wiki/NDKUser) + +#### Defined in + +[src/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L85) + +___ + +### publish + +▸ **publish**(`event`, `relaySet?`): `Promise`<`void`\> + +Publish an event + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `event` | [`NDKEvent`](../wiki/NDKEvent) | event to publish | +| `relaySet?` | [`NDKRelaySet`](../wiki/NDKRelaySet) | - | + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/index.ts:118](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L118) + +___ + +### subscribe + +▸ **subscribe**(`filter`, `opts?`, `relaySet?`, `autoStart?`): [`NDKSubscription`](../wiki/NDKSubscription) + +Create a new subscription. Subscriptions automatically start and finish when all relays +on the set send back an EOSE. (set `opts.closeOnEose` to `false` in order avoid this) + +#### Parameters + +| Name | Type | Default value | Description | +| :------ | :------ | :------ | :------ | +| `filter` | [`NDKFilter`](../wiki/Exports#ndkfilter) | `undefined` | | +| `opts?` | [`NDKSubscriptionOptions`](../wiki/NDKSubscriptionOptions) | `undefined` | | +| `relaySet?` | [`NDKRelaySet`](../wiki/NDKRelaySet) | `undefined` | explicit relay set to use | +| `autoStart` | `boolean` | `true` | automatically start the subscription | + +#### Returns + +[`NDKSubscription`](../wiki/NDKSubscription) + +NDKSubscription + +#### Defined in + +[src/index.ts:101](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L101) diff --git a/docs/enums/NDKKind.md b/docs/enums/NDKKind.md deleted file mode 100644 index 9be6aa28..00000000 --- a/docs/enums/NDKKind.md +++ /dev/null @@ -1,316 +0,0 @@ -[NDK](../README.md) / [Exports](../modules.md) / NDKKind - -# Enumeration: NDKKind - -## Table of contents - -### Enumeration Members - -- [AppSpecificData](NDKKind.md#appspecificdata) -- [Article](NDKKind.md#article) -- [BadgeAward](NDKKind.md#badgeaward) -- [BadgeDefinition](NDKKind.md#badgedefinition) -- [CategorizedBookmarkList](NDKKind.md#categorizedbookmarklist) -- [CategorizedPeopleList](NDKKind.md#categorizedpeoplelist) -- [ChannelCreation](NDKKind.md#channelcreation) -- [ChannelHideMessage](NDKKind.md#channelhidemessage) -- [ChannelMessage](NDKKind.md#channelmessage) -- [ChannelMetadata](NDKKind.md#channelmetadata) -- [ChannelMuteUser](NDKKind.md#channelmuteuser) -- [ClientAuth](NDKKind.md#clientauth) -- [Contacts](NDKKind.md#contacts) -- [EncryptedDirectMessage](NDKKind.md#encrypteddirectmessage) -- [EventDeletion](NDKKind.md#eventdeletion) -- [Metadata](NDKKind.md#metadata) -- [MuteList](NDKKind.md#mutelist) -- [NostrConnect](NDKKind.md#nostrconnect) -- [PinList](NDKKind.md#pinlist) -- [ProfileBadge](NDKKind.md#profilebadge) -- [Reaction](NDKKind.md#reaction) -- [RecommendRelay](NDKKind.md#recommendrelay) -- [RelayList](NDKKind.md#relaylist) -- [Report](NDKKind.md#report) -- [Repost](NDKKind.md#repost) -- [Text](NDKKind.md#text) -- [Zap](NDKKind.md#zap) -- [ZapRequest](NDKKind.md#zaprequest) - -## Enumeration Members - -### AppSpecificData - -• **AppSpecificData** = ``30078`` - -#### Defined in - -[src/events/kind.ts:31](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L31) - -___ - -### Article - -• **Article** = ``30023`` - -#### Defined in - -[src/events/kind.ts:30](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L30) - -___ - -### BadgeAward - -• **BadgeAward** = ``8`` - -#### Defined in - -[src/events/kind.ts:12](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L12) - -___ - -### BadgeDefinition - -• **BadgeDefinition** = ``30009`` - -#### Defined in - -[src/events/kind.ts:29](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L29) - -___ - -### CategorizedBookmarkList - -• **CategorizedBookmarkList** = ``30001`` - -#### Defined in - -[src/events/kind.ts:27](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L27) - -___ - -### CategorizedPeopleList - -• **CategorizedPeopleList** = ``30000`` - -#### Defined in - -[src/events/kind.ts:26](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L26) - -___ - -### ChannelCreation - -• **ChannelCreation** = ``40`` - -#### Defined in - -[src/events/kind.ts:13](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L13) - -___ - -### ChannelHideMessage - -• **ChannelHideMessage** = ``43`` - -#### Defined in - -[src/events/kind.ts:16](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L16) - -___ - -### ChannelMessage - -• **ChannelMessage** = ``42`` - -#### Defined in - -[src/events/kind.ts:15](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L15) - -___ - -### ChannelMetadata - -• **ChannelMetadata** = ``41`` - -#### Defined in - -[src/events/kind.ts:14](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L14) - -___ - -### ChannelMuteUser - -• **ChannelMuteUser** = ``44`` - -#### Defined in - -[src/events/kind.ts:17](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L17) - -___ - -### ClientAuth - -• **ClientAuth** = ``22242`` - -#### Defined in - -[src/events/kind.ts:24](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L24) - -___ - -### Contacts - -• **Contacts** = ``3`` - -#### Defined in - -[src/events/kind.ts:7](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L7) - -___ - -### EncryptedDirectMessage - -• **EncryptedDirectMessage** = ``4`` - -#### Defined in - -[src/events/kind.ts:8](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L8) - -___ - -### EventDeletion - -• **EventDeletion** = ``5`` - -#### Defined in - -[src/events/kind.ts:9](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L9) - -___ - -### Metadata - -• **Metadata** = ``0`` - -#### Defined in - -[src/events/kind.ts:4](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L4) - -___ - -### MuteList - -• **MuteList** = ``10000`` - -#### Defined in - -[src/events/kind.ts:21](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L21) - -___ - -### NostrConnect - -• **NostrConnect** = ``24133`` - -#### Defined in - -[src/events/kind.ts:25](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L25) - -___ - -### PinList - -• **PinList** = ``10001`` - -#### Defined in - -[src/events/kind.ts:22](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L22) - -___ - -### ProfileBadge - -• **ProfileBadge** = ``30008`` - -#### Defined in - -[src/events/kind.ts:28](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L28) - -___ - -### Reaction - -• **Reaction** = ``7`` - -#### Defined in - -[src/events/kind.ts:11](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L11) - -___ - -### RecommendRelay - -• **RecommendRelay** = ``2`` - -#### Defined in - -[src/events/kind.ts:6](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L6) - -___ - -### RelayList - -• **RelayList** = ``10002`` - -#### Defined in - -[src/events/kind.ts:23](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L23) - -___ - -### Report - -• **Report** = ``1984`` - -#### Defined in - -[src/events/kind.ts:18](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L18) - -___ - -### Repost - -• **Repost** = ``6`` - -#### Defined in - -[src/events/kind.ts:10](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L10) - -___ - -### Text - -• **Text** = ``1`` - -#### Defined in - -[src/events/kind.ts:5](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L5) - -___ - -### Zap - -• **Zap** = ``9735`` - -#### Defined in - -[src/events/kind.ts:20](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L20) - -___ - -### ZapRequest - -• **ZapRequest** = ``9734`` - -#### Defined in - -[src/events/kind.ts:19](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/kind.ts#L19) diff --git a/docs/enums/NDKRelayStatus.md b/docs/enums/NDKRelayStatus.md deleted file mode 100644 index ca4a6f1e..00000000 --- a/docs/enums/NDKRelayStatus.md +++ /dev/null @@ -1,63 +0,0 @@ -[NDK](../README.md) / [Exports](../modules.md) / NDKRelayStatus - -# Enumeration: NDKRelayStatus - -## Table of contents - -### Enumeration Members - -- [CONNECTED](NDKRelayStatus.md#connected) -- [CONNECTING](NDKRelayStatus.md#connecting) -- [DISCONNECTED](NDKRelayStatus.md#disconnected) -- [DISCONNECTING](NDKRelayStatus.md#disconnecting) -- [RECONNECTING](NDKRelayStatus.md#reconnecting) - -## Enumeration Members - -### CONNECTED - -• **CONNECTED** = ``1`` - -#### Defined in - -[src/relay/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L12) - -___ - -### CONNECTING - -• **CONNECTING** = ``0`` - -#### Defined in - -[src/relay/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L11) - -___ - -### DISCONNECTED - -• **DISCONNECTED** = ``3`` - -#### Defined in - -[src/relay/index.ts:14](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L14) - -___ - -### DISCONNECTING - -• **DISCONNECTING** = ``2`` - -#### Defined in - -[src/relay/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L13) - -___ - -### RECONNECTING - -• **RECONNECTING** = ``4`` - -#### Defined in - -[src/relay/index.ts:15](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L15) diff --git a/docs/interfaces/NDKConstructorParams.md b/docs/interfaces/NDKConstructorParams.md deleted file mode 100644 index 648dcf88..00000000 --- a/docs/interfaces/NDKConstructorParams.md +++ /dev/null @@ -1,63 +0,0 @@ -[NDK](../README.md) / [Exports](../modules.md) / NDKConstructorParams - -# Interface: NDKConstructorParams - -## Table of contents - -### Properties - -- [cacheAdapter](NDKConstructorParams.md#cacheadapter) -- [debug](NDKConstructorParams.md#debug) -- [devWriteRelayUrls](NDKConstructorParams.md#devwriterelayurls) -- [explicitRelayUrls](NDKConstructorParams.md#explicitrelayurls) -- [signer](NDKConstructorParams.md#signer) - -## Properties - -### cacheAdapter - -• `Optional` **cacheAdapter**: [`NDKCacheAdapter`](NDKCacheAdapter.md) - -#### Defined in - -[src/index.ts:40](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L40) - -___ - -### debug - -• `Optional` **debug**: `Debugger` - -#### Defined in - -[src/index.ts:41](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L41) - -___ - -### devWriteRelayUrls - -• `Optional` **devWriteRelayUrls**: `string`[] - -#### Defined in - -[src/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L38) - -___ - -### explicitRelayUrls - -• `Optional` **explicitRelayUrls**: `string`[] - -#### Defined in - -[src/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L37) - -___ - -### signer - -• `Optional` **signer**: [`NDKSigner`](NDKSigner.md) - -#### Defined in - -[src/index.ts:39](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/index.ts#L39) diff --git a/docs/interfaces/NDKRelayConnectionStats.md b/docs/interfaces/NDKRelayConnectionStats.md deleted file mode 100644 index 10b76b2e..00000000 --- a/docs/interfaces/NDKRelayConnectionStats.md +++ /dev/null @@ -1,60 +0,0 @@ -[NDK](../README.md) / [Exports](../modules.md) / NDKRelayConnectionStats - -# Interface: NDKRelayConnectionStats - -## Table of contents - -### Properties - -- [attempts](NDKRelayConnectionStats.md#attempts) -- [connectedAt](NDKRelayConnectionStats.md#connectedat) -- [durations](NDKRelayConnectionStats.md#durations) -- [success](NDKRelayConnectionStats.md#success) - -## Properties - -### attempts - -• **attempts**: `number` - -The number of times a connection has been attempted. - -#### Defined in - -[src/relay/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L22) - -___ - -### connectedAt - -• `Optional` **connectedAt**: `number` - -The time the current connection was established in milliseconds. - -#### Defined in - -[src/relay/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L37) - -___ - -### durations - -• **durations**: `number`[] - -The durations of the last 100 connections in milliseconds. - -#### Defined in - -[src/relay/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L32) - -___ - -### success - -• **success**: `number` - -The number of times a connection has been successfully established. - -#### Defined in - -[src/relay/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/relay/index.ts#L27) diff --git a/docs/modules.md b/docs/modules.md deleted file mode 100644 index c7067fe1..00000000 --- a/docs/modules.md +++ /dev/null @@ -1,213 +0,0 @@ -[NDK](README.md) / Exports - -# NDK - -## Table of contents - -### Enumerations - -- [NDKKind](enums/NDKKind.md) -- [NDKRelayStatus](enums/NDKRelayStatus.md) -- [NDKSubscriptionCacheUsage](enums/NDKSubscriptionCacheUsage.md) - -### Classes - -- [NDKEvent](classes/NDKEvent.md) -- [NDKNip07Signer](classes/NDKNip07Signer.md) -- [NDKNip46Backend](classes/NDKNip46Backend.md) -- [NDKNip46Signer](classes/NDKNip46Signer.md) -- [NDKPrivateKeySigner](classes/NDKPrivateKeySigner.md) -- [NDKRelay](classes/NDKRelay.md) -- [NDKRelaySet](classes/NDKRelaySet.md) -- [NDKSubscriptionGroup](classes/NDKSubscriptionGroup.md) -- [NDKUser](classes/NDKUser.md) -- [default](classes/default.md) - -### Interfaces - -- [GetUserParams](interfaces/GetUserParams.md) -- [IEventHandlingStrategy](interfaces/IEventHandlingStrategy.md) -- [NDKCacheAdapter](interfaces/NDKCacheAdapter.md) -- [NDKConstructorParams](interfaces/NDKConstructorParams.md) -- [NDKFilterOptions](interfaces/NDKFilterOptions.md) -- [NDKRelayConnectionStats](interfaces/NDKRelayConnectionStats.md) -- [NDKSigner](interfaces/NDKSigner.md) -- [NDKSubscriptionOptions](interfaces/NDKSubscriptionOptions.md) -- [NDKUserProfile](interfaces/NDKUserProfile.md) -- [NDKZapInvoice](interfaces/NDKZapInvoice.md) - -### Type Aliases - -- [NDKEventId](modules.md#ndkeventid) -- [NDKFilter](modules.md#ndkfilter) -- [NDKTag](modules.md#ndktag) -- [Nip46PermitCallback](modules.md#nip46permitcallback) -- [NostrEvent](modules.md#nostrevent) - -### Variables - -- [defaultOpts](modules.md#defaultopts) - -### Functions - -- [mergeEvent](modules.md#mergeevent) -- [mergeFilters](modules.md#mergefilters) -- [zapInvoiceFromEvent](modules.md#zapinvoicefromevent) - -### Events - -- [NDKSubscription](classes/NDKSubscription.md) - -## Type Aliases - -### NDKEventId - -Ƭ **NDKEventId**: `string` - -#### Defined in - -[src/events/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L12) - -___ - -### NDKFilter - -Ƭ **NDKFilter**: `NostrFilter` - -#### Defined in - -[src/subscription/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L10) - -___ - -### NDKTag - -Ƭ **NDKTag**: `string`[] - -#### Defined in - -[src/events/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L13) - -___ - -### Nip46PermitCallback - -Ƭ **Nip46PermitCallback**: (`pubkey`: `string`, `method`: `string`, `params?`: `any`) => `Promise`<`boolean`\> - -#### Type declaration - -▸ (`pubkey`, `method`, `params?`): `Promise`<`boolean`\> - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `pubkey` | `string` | -| `method` | `string` | -| `params?` | `any` | - -##### Returns - -`Promise`<`boolean`\> - -#### Defined in - -[src/signers/nip46/backend/index.ts:8](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/signers/nip46/backend/index.ts#L8) - -___ - -### NostrEvent - -Ƭ **NostrEvent**: `Object` - -#### Type declaration - -| Name | Type | -| :------ | :------ | -| `content` | `string` | -| `created_at` | `number` | -| `id?` | `string` | -| `kind?` | [`NDKKind`](enums/NDKKind.md) \| `number` | -| `pubkey` | `string` | -| `sig?` | `string` | -| `tags` | [`NDKTag`](modules.md#ndktag)[] | - -#### Defined in - -[src/events/index.ts:15](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/events/index.ts#L15) - -## Variables - -### defaultOpts - -• `Const` **defaultOpts**: [`NDKSubscriptionOptions`](interfaces/NDKSubscriptionOptions.md) - -Default subscription options. - -#### Defined in - -[src/subscription/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L50) - -## Functions - -### mergeEvent - -▸ **mergeEvent**(`event`, `profile`): [`NDKUserProfile`](interfaces/NDKUserProfile.md) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `event` | [`NDKEvent`](classes/NDKEvent.md) | -| `profile` | [`NDKUserProfile`](interfaces/NDKUserProfile.md) | - -#### Returns - -[`NDKUserProfile`](interfaces/NDKUserProfile.md) - -#### Defined in - -[src/user/profile.ts:16](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/user/profile.ts#L16) - -___ - -### mergeFilters - -▸ **mergeFilters**(`filters`): [`NDKFilter`](modules.md#ndkfilter) - -Go through all the passed filters, which should be -relatively similar, and merge them. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `filters` | `Filter`[] | - -#### Returns - -[`NDKFilter`](modules.md#ndkfilter) - -#### Defined in - -[src/subscription/index.ts:385](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/subscription/index.ts#L385) - -___ - -### zapInvoiceFromEvent - -▸ **zapInvoiceFromEvent**(`event`): [`NDKZapInvoice`](interfaces/NDKZapInvoice.md) \| ``null`` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `event` | [`NDKEvent`](classes/NDKEvent.md) | - -#### Returns - -[`NDKZapInvoice`](interfaces/NDKZapInvoice.md) \| ``null`` - -#### Defined in - -[src/zap/invoice.ts:14](https://github.com/nostr-dev-kit/ndk/blob/db9bb3b/src/zap/invoice.ts#L14) diff --git a/package.json b/package.json index d4552d79..a24784fc 100644 --- a/package.json +++ b/package.json @@ -45,12 +45,13 @@ "ts-jest": "^29.1.0", "tsup": "^6.7.0", "typedoc": "^0.24.6", - "typedoc-plugin-markdown": "^3.14.0", + "typedoc-github-wiki-theme": "^1.1.0", + "typedoc-plugin-markdown": "^3.15.3", "typescript": "^5.0.4" }, "dependencies": { - "@noble/secp256k1": "^2.0.0", "@noble/hashes": "^1.3.1", + "@noble/secp256k1": "^2.0.0", "@scure/base": "^1.1.1", "@typescript-eslint/eslint-plugin": "^5.57.0", "@typescript-eslint/parser": "^5.57.0", diff --git a/src/events/index.ts b/src/events/index.ts index 78ab6b74..757976a2 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -355,6 +355,8 @@ export default class NDKEvent extends EventEmitter { * @param publish Whether to publish the reposted event automatically * @param signer The signer to use for signing the reposted event * @returns The reposted event + * + * @function */ public repost = repost.bind(this); } From ca71cec3b7958b5ae256febba7075a2aff4f2290 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Mon, 19 Jun 2023 19:38:13 +0200 Subject: [PATCH 145/773] fix issue with content-tagger --- package.json | 3 ++- src/events/content-tagger.test.ts | 4 +--- src/events/content-tagger.ts | 4 +--- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index a24784fc..c1223d17 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.5.4", + "version": "0.5.5", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", @@ -36,6 +36,7 @@ "author": "pablof7z", "license": "MIT", "devDependencies": { + "@appium/typedoc-plugin-appium": "^0.6.5", "@types/debug": "^4.1.7", "@types/jest": "^29.5.0", "@types/node": "^14.11.2", diff --git a/src/events/content-tagger.test.ts b/src/events/content-tagger.test.ts index 11d6eba7..568f43f7 100644 --- a/src/events/content-tagger.test.ts +++ b/src/events/content-tagger.test.ts @@ -35,7 +35,7 @@ describe("generateContentTags", () => { expect(processedTags.length).toEqual(0); }); - fit("should handle existing tags and update indexes accordingly", () => { + it("should handle existing tags and update indexes accordingly", () => { const content = "This is a sample content with @npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft and @note1d2mheza0d5z5yycucu94nw37e6gyl4vwl6gavyku86rshkhexq6q30s0g7 tags."; const tags: NDKTag[] = [["p", "existing_p"]]; @@ -45,8 +45,6 @@ describe("generateContentTags", () => { tags ); - console.log(processedContent, processedTags); - expect(processedContent).toEqual( "This is a sample content with nostr:npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft and nostr:note1d2mheza0d5z5yycucu94nw37e6gyl4vwl6gavyku86rshkhexq6q30s0g7 tags." ); diff --git a/src/events/content-tagger.ts b/src/events/content-tagger.ts index 6f192aa3..ef755117 100644 --- a/src/events/content-tagger.ts +++ b/src/events/content-tagger.ts @@ -31,9 +31,7 @@ export function generateContentTags( return tag; } - console.log({tag}); - - if (!tags.find((t) => t[0] === t[0] && t[1] === t[1])) { + if (!tags.find((t2) => t2[0] === t[0] && t2[1] === t[1])) { tags.push(t); } From 20ef83cd6b38154fe7b24a16745b31d99ebf3e24 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 20 Jun 2023 01:46:22 +0200 Subject: [PATCH 146/773] Send kind as a string since some relays reject a number in `k` tag --- src/events/repost.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/events/repost.ts b/src/events/repost.ts index 708d8034..ad13952f 100644 --- a/src/events/repost.ts +++ b/src/events/repost.ts @@ -30,7 +30,7 @@ export async function repost(this: NDKEvent, publish = true, signer?: NDKSigner) e.tag(this); if (e.kind === NDKKind.GenericRepost) { - e.tags.push(['k', this.kind!.toString()]); + e.tags.push(['k', `${this.kind}`]); } await e.sign(signer); From d2522adbace792463ee7c5b92d833ecc4b05ed0b Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 20 Jun 2023 01:46:54 +0200 Subject: [PATCH 147/773] Make NIP-07's NIP-04 access into a queue to prevent concurrent enc/decryption --- .DS_Store | Bin 0 -> 6148 bytes package.json | 2 +- src/events/content-tagger.test.ts | 13 ++++++ src/signers/nip07/index.ts | 71 +++++++++++++++++++++++++++++- 4 files changed, 83 insertions(+), 3 deletions(-) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..891753cfe52ebf47e7a0a12ff801bf8061820d60 GIT binary patch literal 6148 zcmeHK%}T>S5Z<-XrW7Fug&r5Y7L3(O#Y?F51&ruHr6#6mFlI}WnnNk%tS{t~_&m<+ zZp31}ir5+0{pNQ!`$6`HF~t1M5cKVr=y7~h@%mtTwlg%B#XYBrctJ9eI2kHc4O$YX0x8#X^U>JJ8z5GQO9kI zgZ;z#ykT$e>>i&DACsq4zGy-@@U3LiU<=_`4&ofwR)a8t;nPD6=bM<)PYIg7omCm@Qk$Pf)7+7SWrcDRW|5Ny7mOk { ["e", "6ab77c8baf6d0542131cc70b59ba3ece904fd58efe91d612dc3e870bdaf93034"] ]); }); + + it("does not replace an event without a nostr: or @ prefix", async() => { + const content = "note13jgf85r2yxjmww8f6gweque5g388agfztrppmgenur7zvh8e929s4cptur " + + "@note13jgf85r2yxjmww8f6gweque5g388agfztrppmgenur7zvh8e929s4cptur"; + + const { content: processedContent, tags: processedTags } = generateContentTags( content, []); + + expect(processedContent).toEqual("note13jgf85r2yxjmww8f6gweque5g388agfztrppmgenur7zvh8e929s4cptur " + + "nostr:note13jgf85r2yxjmww8f6gweque5g388agfztrppmgenur7zvh8e929s4cptur"); + expect(processedTags).toEqual([ + [ "e", "8c9093d06a21a5b738e9d21d907334444e7ea12258c21da333e0fc265cf92a8b" ] + ]); + }); }); diff --git a/src/signers/nip07/index.ts b/src/signers/nip07/index.ts index 531ed258..ca015635 100644 --- a/src/signers/nip07/index.ts +++ b/src/signers/nip07/index.ts @@ -1,18 +1,32 @@ +import debug from "debug"; import type { NostrEvent } from "../../events/index.js"; import NDKUser from "../../user/index.js"; import { NDKSigner } from "../index.js"; +type Nip04QueueItem = { + type: "encrypt" | "decrypt"; + counterpartyHexpubkey: string; + value: string; + resolve: (value: string) => void; + reject: (reason?: Error) => void; +}; + /** * NDKNip07Signer implements the NDKSigner interface for signing Nostr events * with a NIP-07 browser extension (e.g., getalby, nos2x). */ export class NDKNip07Signer implements NDKSigner { private _userPromise: Promise | undefined; + public nip04Queue: Nip04QueueItem[] = []; + private nip04Processing = false; + private debug: debug.Debugger; public constructor() { if (!window.nostr) { throw new Error("NIP-07 extension not available"); } + + this.debug = debug("ndk:nip07"); } public async blockUntilReady(): Promise { @@ -59,7 +73,7 @@ export class NDKNip07Signer implements NDKSigner { } const recipientHexPubKey = recipient.hexpubkey(); - return window.nostr.nip04.encrypt(recipientHexPubKey, value); + return this.queueNip04("encrypt", recipientHexPubKey, value); } public async decrypt(sender: NDKUser, value: string): Promise { @@ -68,7 +82,60 @@ export class NDKNip07Signer implements NDKSigner { } const senderHexPubKey = sender.hexpubkey(); - return window.nostr.nip04.decrypt(senderHexPubKey, value); + return this.queueNip04("decrypt", senderHexPubKey, value); + } + + private async queueNip04( + type: "encrypt" | "decrypt", + counterpartyHexpubkey: string, + value: string + ): Promise { + return new Promise((resolve, reject) => { + this.nip04Queue.push({ type, counterpartyHexpubkey, value, resolve, reject }); + + if (!this.nip04Processing) { + this.processNip04Queue(); + } + }); + } + + private async processNip04Queue(item?: Nip04QueueItem, retries = 0): Promise { + if (!item && this.nip04Queue.length === 0) { + this.nip04Processing = false; + return; + } + + this.nip04Processing = true; + const { type, counterpartyHexpubkey, value, resolve, reject } = item || this.nip04Queue.shift()!; + + this.debug("Processing encryption queue item", { type, counterpartyHexpubkey, value }); + + try { + let result; + + if (type === "encrypt") { + result = await window.nostr!.nip04.encrypt(counterpartyHexpubkey, value); + } else { + result = await window.nostr!.nip04.decrypt(counterpartyHexpubkey, value); + } + + resolve(result); + } catch (error: any) { + // retry a few times if the call is already executing + if (error.message && error.message.includes("call already executing")) { + if (retries < 5) { + this.debug("Retrying encryption queue item", { type, counterpartyHexpubkey, value, retries }); + setTimeout(() => { + this.processNip04Queue(item, retries + 1); + }, 50 * retries); + + return; + } + } + reject(error); + } + + this.processNip04Queue(); } } From c066052598c31a313788bdc7d1aed9f64c4e17b9 Mon Sep 17 00:00:00 2001 From: Jeff Gardner <202880+erskingardner@users.noreply.github.com> Date: Fri, 23 Jun 2023 16:54:15 -0400 Subject: [PATCH 148/773] Add website to NDKUserProfile - Fixes #5 --- src/user/profile.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/user/profile.ts b/src/user/profile.ts index 772c10e7..1d3fc2f6 100644 --- a/src/user/profile.ts +++ b/src/user/profile.ts @@ -1,5 +1,8 @@ import NDKEvent from "../events/index.js"; +/** + * NDKUserProfile represents a user's kind 0 profile metadata + */ export interface NDKUserProfile { name?: string; displayName?: string; @@ -11,6 +14,7 @@ export interface NDKUserProfile { lud16?: string; about?: string; zapService?: string; + website?: string; } export function mergeEvent(event: NDKEvent, profile: NDKUserProfile): NDKUserProfile { @@ -28,6 +32,7 @@ export function mergeEvent(event: NDKEvent, profile: NDKUserProfile): NDKUserPro if (payload.lud16) profile.lud16 = payload.lud16; if (payload.about) profile.about = payload.about; if (payload.zapService) profile.zapService = payload.zapService; + if (payload.website) profile.website = payload.website; return profile; } From 75f9f0c03730aeaf900889fe3429da2d16e29644 Mon Sep 17 00:00:00 2001 From: Jeff Gardner <202880+erskingardner@users.noreply.github.com> Date: Sat, 24 Jun 2023 07:46:58 -0400 Subject: [PATCH 149/773] Add ability for custom fields in NDKUserProfile --- src/user/profile.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/user/profile.ts b/src/user/profile.ts index 1d3fc2f6..36361378 100644 --- a/src/user/profile.ts +++ b/src/user/profile.ts @@ -4,6 +4,7 @@ import NDKEvent from "../events/index.js"; * NDKUserProfile represents a user's kind 0 profile metadata */ export interface NDKUserProfile { + [key: string]: string | undefined; // allows custom fields name?: string; displayName?: string; image?: string; From 76ce4c3499ab2f4c37bf884cce997c283b04b159 Mon Sep 17 00:00:00 2001 From: Jeff Gardner <202880+erskingardner@users.noreply.github.com> Date: Sat, 24 Jun 2023 11:33:50 -0400 Subject: [PATCH 150/773] Add ability to set custom fields and tests --- src/user/index.test.ts | 204 ++++++++++++++++++++++++++++++++++++++++- src/user/index.ts | 22 ++++- src/user/profile.ts | 55 ++++++++--- 3 files changed, 263 insertions(+), 18 deletions(-) diff --git a/src/user/index.test.ts b/src/user/index.test.ts index cc5fca2c..c5686291 100644 --- a/src/user/index.test.ts +++ b/src/user/index.test.ts @@ -1,5 +1,6 @@ import { nip19 } from "nostr-tools"; import NDKUser, { NDKUserParams } from "./index.js"; +import NDK, { NDKEvent, NDKSubscription } from "../index.js"; jest.mock("nostr-tools", () => ({ nip05: { @@ -11,9 +12,16 @@ jest.mock("nostr-tools", () => ({ } })); -jest.mock("../index.js", () => ({ - fetchEvents: jest.fn() -})); +// jest.mock("../index.js", () => { +// return { +// __esModule: true, +// default: jest.fn().mockImplementation(() => { +// return { +// fetchEvents: jest.fn() +// }; +// }) +// }; +// }); describe("NDKUser", () => { beforeEach(() => { @@ -75,4 +83,194 @@ describe("NDKUser", () => { expect(hexpubkey).toEqual("decoded_hexpubkey"); }); }); + + describe("fetchProfile", () => { + const ndk = new NDK(); + let newEvent: NDKEvent; + let oldEvent: NDKEvent; + const user = new NDKUser({ + npub: "npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft" + }); + user.ndk = ndk; + (nip19.decode as jest.Mock).mockReturnValue({ data: "decoded_hexpubkey" }); + const pubkey = user.hexpubkey(); + + it("Returns updated fields", async () => { + newEvent = new NDKEvent(ndk, { + kind: 0, + pubkey: pubkey, + tags: [], + created_at: Date.now() / 1000 - 3600, + content: JSON.stringify({ + displayName: "JeffG", + name: "Jeff", + image: "https://image.url", + banner: "https://banner.url", + bio: "Some bio info", + nip05: "_@jeffg.fyi", + lud06: "lud06value", + lud16: "lud16value", + about: "About jeff", + zapService: "Zapservice details" + }) + }); + + oldEvent = new NDKEvent(ndk, { + kind: 0, + pubkey: pubkey, + tags: [], + created_at: Date.now() / 1000 - 7200, + content: JSON.stringify({ + displayName: "JeffG_OLD", + name: "Jeff_OLD", + image: "https://image.url.old", + banner: "https://banner.url.old", + bio: "Some OLD bio info", + nip05: "OLD@jeffg.fyi", + lud06: "lud06value OLD", + lud16: "lud16value OLD", + about: "About jeff OLD", + zapService: "Zapservice details OLD" + }) + }); + + ndk.subscribe = jest.fn((filter, opts?): NDKSubscription => { + const sub = new NDKSubscription(ndk, filter, opts); + + setTimeout(() => { + sub.emit("event", newEvent); + sub.emit("event", oldEvent); + sub.emit("eose"); + }, 100); + + return sub; + }); + + await user.fetchProfile(); + expect(user.profile?.displayName).toEqual("JeffG"); + expect(user.profile?.name).toEqual("Jeff"); + expect(user.profile?.image).toEqual("https://image.url"); + expect(user.profile?.banner).toEqual("https://banner.url"); + expect(user.profile?.bio).toEqual("Some bio info"); + expect(user.profile?.nip05).toEqual("_@jeffg.fyi"); + expect(user.profile?.lud06).toEqual("lud06value"); + expect(user.profile?.lud16).toEqual("lud16value"); + expect(user.profile?.about).toEqual("About jeff"); + expect(user.profile?.zapService).toEqual("Zapservice details"); + }); + + // Both "display_name" and "displayName" are set to "displayName" field in the user profile + it("Display name is set properly", async () => { + newEvent = new NDKEvent(ndk, { + kind: 0, + pubkey: pubkey, + tags: [], + created_at: Date.now() / 1000 - 3600, + content: JSON.stringify({ + displayName: "JeffG", + display_name: "James" + }) + }); + + oldEvent = new NDKEvent(ndk, { + kind: 0, + pubkey: pubkey, + tags: [], + created_at: Date.now() / 1000 - 7200, + content: JSON.stringify({ + displayName: "Bob" + }) + }); + + ndk.subscribe = jest.fn((filter, opts?): NDKSubscription => { + const sub = new NDKSubscription(ndk, filter, opts); + + setTimeout(() => { + sub.emit("event", newEvent); + sub.emit("event", oldEvent); + sub.emit("eose"); + }, 100); + + return sub; + }); + + await user.fetchProfile(); + expect(user.profile?.displayName).toEqual("JeffG"); + }); + + // Both "image" and "picture" are set to the "image" field in the user profile + it("Image is set properly", async () => { + newEvent = new NDKEvent(ndk, { + kind: 0, + pubkey: pubkey, + tags: [], + created_at: Date.now() / 1000 - 3600, + content: JSON.stringify({ + picture: "https://set-from-picture-field.url" + }) + }); + + oldEvent = new NDKEvent(ndk, { + kind: 0, + pubkey: pubkey, + tags: [], + created_at: Date.now() / 1000 - 7200, + content: JSON.stringify({ + image: "https://set-from-image-field.url" + }) + }); + + ndk.subscribe = jest.fn((filter, opts?): NDKSubscription => { + const sub = new NDKSubscription(ndk, filter, opts); + + setTimeout(() => { + sub.emit("event", newEvent); + sub.emit("event", oldEvent); + sub.emit("eose"); + }, 100); + + return sub; + }); + + await user.fetchProfile(); + expect(user.profile?.image).toEqual("https://set-from-picture-field.url"); + }); + + it("Allows for arbitrary values to be set on user profiles", async () => { + newEvent = new NDKEvent(ndk, { + kind: 0, + pubkey: pubkey, + tags: [], + created_at: Date.now() / 1000 - 3600, + content: JSON.stringify({ + customField: "custom NEW" + }) + }); + + oldEvent = new NDKEvent(ndk, { + kind: 0, + pubkey: pubkey, + tags: [], + created_at: Date.now() / 1000 - 7200, + content: JSON.stringify({ + customField: "custom OLD" + }) + }); + + ndk.subscribe = jest.fn((filter, opts?): NDKSubscription => { + const sub = new NDKSubscription(ndk, filter, opts); + + setTimeout(() => { + sub.emit("event", newEvent); + sub.emit("event", oldEvent); + sub.emit("eose"); + }, 100); + + return sub; + }); + + await user.fetchProfile(); + expect(user.profile?.customField).toEqual("custom NEW"); + }); + }); }); diff --git a/src/user/index.ts b/src/user/index.ts index 64fa49c4..20a2cdf4 100644 --- a/src/user/index.ts +++ b/src/user/index.ts @@ -33,6 +33,11 @@ export default class NDKUser { } } + /** + * Instantiate an NDKUser from a NIP-05 string + * @param nip05Id {string} The user's NIP-05 + * @returns {NDKUser | undefined} An NDKUser if one is found for the given NIP-05, undefined otherwise. + */ static async fromNip05(nip05Id: string): Promise { const profile = await nip05.queryProfile(nip05Id); @@ -44,10 +49,19 @@ export default class NDKUser { } } + /** + * Get the hexpubkey for a user + * @returns {string} The user's hexpubkey + */ public hexpubkey(): string { return nip19.decode(this.npub).data as string; } + /** + * Fetch a user's kind 0 metadata events and merge the events in a single up-to-date profile + * @param opts {NDKFilterOptions} A set of NDKFilterOptions + * @returns {Promise>} A set of all NDKEvents events returned for the given user + */ public async fetchProfile(opts?: NDKFilterOptions): Promise | null> { if (!this.ndk) throw new Error("NDK not set"); @@ -82,6 +96,10 @@ export default class NDKUser { */ public follows = follows.bind(this); + /** + * Returns a set of relay list events for a user. + * @returns {Promise>} A set of NDKEvents returned for the given user. + */ public async relayList(): Promise> { if (!this.ndk) throw new Error("NDK not set"); @@ -99,9 +117,9 @@ export default class NDKUser { /** * Get the tag that can be used to reference this user in an event - * @returns + * @returns {NDKTag} an NDKTag */ public tagReference(): NDKTag { - return ['p', this.hexpubkey()]; + return ["p", this.hexpubkey()]; } } diff --git a/src/user/profile.ts b/src/user/profile.ts index 36361378..63b28ca7 100644 --- a/src/user/profile.ts +++ b/src/user/profile.ts @@ -21,19 +21,48 @@ export interface NDKUserProfile { export function mergeEvent(event: NDKEvent, profile: NDKUserProfile): NDKUserProfile { const payload = JSON.parse(event.content); - if (payload.name) profile.name = payload.name; - if (payload.display_name) profile.displayName = payload.display_name; - if (payload.displayName) profile.displayName = payload.displayName; - if (payload.image) profile.image = payload.image; - if (payload.picture) profile.image = payload.picture; - if (payload.banner) profile.banner = payload.banner; - if (payload.bio) profile.bio = payload.bio; - if (payload.nip05) profile.nip05 = payload.nip05; - if (payload.lud06) profile.lud06 = payload.lud06; - if (payload.lud16) profile.lud16 = payload.lud16; - if (payload.about) profile.about = payload.about; - if (payload.zapService) profile.zapService = payload.zapService; - if (payload.website) profile.website = payload.website; + Object.keys(payload).forEach((key) => { + switch (key) { + case "name": + profile.name = payload.name; + break; + case "display_name": + case "displayName": + profile.displayName = payload.displayName || payload.display_name; + break; + case "image": + case "picture": + profile.image = payload.image || payload.picture; + break; + case "banner": + profile.banner = payload.banner; + break; + case "bio": + profile.bio = payload.bio; + break; + case "nip05": + profile.nip05 = payload.nip05; + break; + case "lud06": + profile.lud06 = payload.lud06; + break; + case "lud16": + profile.lud16 = payload.lud16; + break; + case "about": + profile.about = payload.about; + break; + case "zapService": + profile.zapService = payload.zapService; + break; + case "website": + profile.website = payload.website; + break; + default: + profile[key] = payload[key]; + break; + } + }); return profile; } From 7cc42fc3e78da681faaa2a0f11c65bd3d1fa2578 Mon Sep 17 00:00:00 2001 From: Jeff Gardner <202880+erskingardner@users.noreply.github.com> Date: Sat, 24 Jun 2023 11:35:38 -0400 Subject: [PATCH 151/773] Remove comment --- src/user/index.test.ts | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/user/index.test.ts b/src/user/index.test.ts index c5686291..62f9cd22 100644 --- a/src/user/index.test.ts +++ b/src/user/index.test.ts @@ -12,17 +12,6 @@ jest.mock("nostr-tools", () => ({ } })); -// jest.mock("../index.js", () => { -// return { -// __esModule: true, -// default: jest.fn().mockImplementation(() => { -// return { -// fetchEvents: jest.fn() -// }; -// }) -// }; -// }); - describe("NDKUser", () => { beforeEach(() => { jest.clearAllMocks(); From c4d0d1091da66d4860c8b1df72c9ed90a8876401 Mon Sep 17 00:00:00 2001 From: Jeff Gardner <202880+erskingardner@users.noreply.github.com> Date: Sat, 24 Jun 2023 12:04:31 -0400 Subject: [PATCH 152/773] Add DS_Store to gitignore, remove unused method, add docs --- .DS_Store | Bin 6148 -> 0 bytes .gitignore | 1 + src/events/index.ts | 41 +++++++++++++++++++++++++++++------------ 3 files changed, 30 insertions(+), 12 deletions(-) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 891753cfe52ebf47e7a0a12ff801bf8061820d60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%}T>S5Z<-XrW7Fug&r5Y7L3(O#Y?F51&ruHr6#6mFlI}WnnNk%tS{t~_&m<+ zZp31}ir5+0{pNQ!`$6`HF~t1M5cKVr=y7~h@%mtTwlg%B#XYBrctJ9eI2kHc4O$YX0x8#X^U>JJ8z5GQO9kI zgZ;z#ykT$e>>i&DACsq4zGy-@@U3LiU<=_`4&ofwR)a8t;nPD6=bM<)PYIg7omCm@Qk$Pf)7+7SWrcDRW|5Ny7mOk t[0] === 'p' && t[1] === pTag[1])) continue; + if (this.tags.find((t) => t[0] === "p" && t[1] === pTag[1])) continue; this.tags.push(["p", pTag[1]]); } @@ -131,6 +131,8 @@ export default class NDKEvent extends EventEmitter { /** * Return a NostrEvent object, trying to fill in missing fields * when possible, adding tags when necessary. + * @param pubkey {string} The pubkey of the user who the event belongs to. + * @returns {Promise} A promise that resolves to a NostrEvent. */ async toNostrEvent(pubkey?: string): Promise { if (!pubkey && this.pubkey === "") { @@ -164,6 +166,8 @@ export default class NDKEvent extends EventEmitter { /** * Get all tags with the given name + * @param tagName {string} The name of the tag to search for + * @returns {NDKTag[]} An array of the matching tags */ public getMatchingTags(tagName: string): NDKTag[] { return this.tags.filter((tag) => tag[0] === tagName); @@ -181,22 +185,21 @@ export default class NDKEvent extends EventEmitter { } /** - * Remove all tags with the given name - * @param tagName Tag name to search for + * Remove all tags with the given name (e.g. "d", "a", "p") + * @param tagName Tag name to search for and remove + * @returns {void} */ public removeTag(tagName: string): void { this.tags = this.tags.filter((tag) => tag[0] !== tagName); } - public async toString() { - return await this.toNostrEvent(); - } - /** * Sign the event if a signer is present. * * It will generate tags. * Repleacable events will have their created_at field set to the current time. + * @param signer {NDKSigner} The NDKSigner to use to sign the event + * @returns {Promise} A Promise that resolves to the signature of the signed event. */ public async sign(signer?: NDKSigner) { signer || this.ndk?.assertSigner(); @@ -212,12 +215,22 @@ export default class NDKEvent extends EventEmitter { this.sig = await _signer!.sign(nostrEvent); } + /** + * Attempt to sign and then publish an NDKEvent to a given relaySet + * @param relaySet {NDKRelaySet} The relaySet to publish the even to. + * @returns {Promise} + */ public async publish(relaySet?: NDKRelaySet): Promise { if (!this.sig) await this.sign(); return this.ndk?.publish(this, relaySet); } + /** + * Generates tags for users, notes, and other events tagged in content. + * Will also generate random "d" tag for parameterized replaceable events where needed. + * @returns {ContentTag} The tags and content of the event. + */ private generateTags(): ContentTag { let tags: NDKTag[] = []; @@ -240,7 +253,9 @@ export default class NDKEvent extends EventEmitter { } /** - * @returns the `d` tag of a parameterized replaceable event + * Returns the "d" tag of a parameterized replaceable event or throws an error if the event isn't + * a parameterized replaceable event. + * @returns {string} the "d" tag of the event. */ replaceableDTag() { if (this.kind && this.kind >= 30000 && this.kind <= 40000) { @@ -254,9 +269,10 @@ export default class NDKEvent extends EventEmitter { } /** - * @returns the id of the event, or if it's a parameterized event, the id of the event with the d tag + * Returns the id of the event or, if it's a parameterized event, the generated id of the event using "d" tag, pubkey, and kind. + * @returns {string} The id */ - tagId() { + tagId(): string { // NIP-33 if (this.kind && this.kind >= 30000 && this.kind <= 40000) { const dTagId = this.replaceableDTag(); @@ -275,8 +291,9 @@ export default class NDKEvent extends EventEmitter { * * event = new NDKEvent(ndk, { kind: 1, pubkey: 'pubkey', id: "eventid" }); * event.tagReference(); // ["e", "eventid"] + * @returns {NDKTag} The NDKTag object referencing this event */ - tagReference() { + tagReference(): NDKTag { // NIP-33 if (this.isParamReplaceable()) { return ["a", this.tagId()]; @@ -341,7 +358,7 @@ export default class NDKEvent extends EventEmitter { const e = new NDKEvent(this.ndk, { kind: NDKKind.EventDeletion, - content: reason || "", + content: reason || "" } as NostrEvent); e.tag(this); await e.publish(); From 35ae911b90d81ab3d21fcc0ad8c9e0e90bf8cde4 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 24 Jun 2023 19:42:59 +0200 Subject: [PATCH 153/773] remove a few debug statements --- package.json | 2 +- src/subscription/index.ts | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/package.json b/package.json index 1dbccf7f..8fd35fff 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.5.11", + "version": "0.5.13", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/subscription/index.ts b/src/subscription/index.ts index eb443003..a7d66376 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -200,7 +200,6 @@ export class NDKSubscription extends EventEmitter { if (this.shouldWaitForCache()) { - this.debug("waiting for cache to finish"); await cachePromise; // if the cache has a hit, return early @@ -227,7 +226,6 @@ export class NDKSubscription extends EventEmitter { private async startWithCache(): Promise { if (this.ndk.cacheAdapter?.query) { - this.debug("querying cache"); const promise = this.ndk.cacheAdapter.query(this); if (this.ndk.cacheAdapter.locking) { @@ -242,7 +240,6 @@ export class NDKSubscription extends EventEmitter { } if (this.relaySet) { - this.debug("querying relays"); this.relaySet.subscribe(this); } } From 70c7bab946fac6608d29e669b82090941df89a36 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 24 Jun 2023 19:43:14 +0200 Subject: [PATCH 154/773] 0.6.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 530a20e7..31f08824 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.5.1", + "version": "0.6.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@nostr-dev-kit/ndk", - "version": "0.5.1", + "version": "0.6.0", "license": "MIT", "dependencies": { "@scure/base": "^1.1.1", diff --git a/package.json b/package.json index 8fd35fff..26c20706 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.5.13", + "version": "0.6.0", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", From 1f1fe428f3c1094dc7cb193b15b4600c40a0e77b Mon Sep 17 00:00:00 2001 From: pablof7z Date: Wed, 28 Jun 2023 14:47:11 +0200 Subject: [PATCH 155/773] remove relay hardcode on zap request (fixes: #48) --- package.json | 2 +- src/relay/pool/index.ts | 7 ++++++ src/zap/index.ts | 47 +++++++++++++++++++++++++++++++++-------- 3 files changed, 46 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 26c20706..50f54e3a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.6.0", + "version": "0.6.1", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/relay/pool/index.ts b/src/relay/pool/index.ts index 0c822af9..8bf139ba 100644 --- a/src/relay/pool/index.ts +++ b/src/relay/pool/index.ts @@ -118,4 +118,11 @@ export class NDKPool extends EventEmitter { return stats; } + + /** + * Get a list of all relay urls in the pool. + */ + public urls(): string[] { + return Array.from(this.relays.keys()); + } } diff --git a/src/zap/index.ts b/src/zap/index.ts index 91e03eaa..196194d4 100644 --- a/src/zap/index.ts +++ b/src/zap/index.ts @@ -5,6 +5,16 @@ import type { NostrEvent } from "../events/index.js"; import NDKEvent, { NDKTag } from "../events/index.js"; import NDK from "../index.js"; import User from "../user/index.js"; + +const DEFAULT_RELAYS = [ + "wss://nos.lol", + "wss://relay.nostr.band", + "wss://relay.f7z.io", + "wss://relay.damus.io", + "wss://nostr.mom", + "wss://no.str.cr" +]; + interface ZapConstructorParams { ndk: NDK; zappedEvent?: NDKEvent; @@ -86,10 +96,19 @@ export default class Zap extends EventEmitter { return zapEndpointCallback; } + /** + * Generates a kind:9734 zap request and returns the payment request + * @param amount amount to zap in millisatoshis + * @param comment optional comment to include in the zap request + * @param extraTags optional extra tags to include in the zap request + * @param relays optional relays to ask zapper to publish the zap to + * @returns the payment request + */ public async createZapRequest( amount: number, // amount to zap in millisatoshis comment?: string, - extraTags?: NDKTag[] + extraTags?: NDKTag[], + relays?: string[] ): Promise { const zapEndpoint = await this.getZapEndpoint(); @@ -106,14 +125,7 @@ export default class Zap extends EventEmitter { event: null, amount, comment: comment || "", - relays: [ - "wss://nos.lol", - "wss://relay.nostr.band", - "wss://relay.f7z.io", - "wss://relay.damus.io", - "wss://nostr.mom", - "wss://no.str.cr" - ] // TODO: fix this + relays: relays ?? this.relays() }); // add the event tag if it exists; this supports both 'e' and 'a' tags @@ -145,4 +157,21 @@ export default class Zap extends EventEmitter { return body.pr; } + + /** + * @returns the relays to use for the zap request + */ + private relays(): string[] { + let r: string[] = []; + + if (this.ndk?.pool?.relays) { + r = this.ndk.pool.urls(); + } + + if (!r.length) { + r = DEFAULT_RELAYS; + } + + return r; + } } From 18460f3f57d04392dcf9e2abd4867b4b26262444 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Wed, 28 Jun 2023 15:23:00 +0200 Subject: [PATCH 156/773] update docs --- README.md | 22 +- docs/.nojekyll | 1 - docs/Exports.md | 267 ---- docs/GetUserParams.md | 72 - docs/Home.md | 323 ----- docs/IEventHandlingStrategy.md | 29 - docs/NDKCacheAdapter.md | 67 - docs/NDKConstructorParams.md | 61 - docs/NDKEvent.md | 704 --------- docs/NDKFilterOptions.md | 17 - docs/NDKKind.md | 325 ----- docs/NDKNip07Signer.md | 162 --- docs/NDKNip46Backend.md | 257 ---- docs/NDKNip46Signer.md | 239 ---- docs/NDKNostrRpc.md | 134 -- docs/NDKPrivateKeySigner.md | 192 --- docs/NDKRelay.md | 267 ---- docs/NDKRelayConnectionStats.md | 58 - docs/NDKRelaySet.md | 152 -- docs/NDKRelayStatus.md | 72 - docs/NDKRpcRequest.md | 61 - docs/NDKRpcResponse.md | 50 - docs/NDKSigner.md | 125 -- docs/NDKSubscription.md | 296 ---- docs/NDKSubscriptionCacheUsage.md | 50 - docs/NDKSubscriptionGroup.md | 303 ---- docs/NDKSubscriptionOptions.md | 74 - docs/NDKUser.md | 191 --- docs/NDKUserProfile.md | 116 -- docs/NDKZapInvoice.md | 83 -- docs/_Sidebar.md | 4 - docs/default.md | 286 ---- package.json | 6 +- pnpm-lock.yaml | 2193 +---------------------------- typedoc.json | 16 +- 35 files changed, 68 insertions(+), 7207 deletions(-) delete mode 100644 docs/.nojekyll delete mode 100644 docs/Exports.md delete mode 100644 docs/GetUserParams.md delete mode 100644 docs/Home.md delete mode 100644 docs/IEventHandlingStrategy.md delete mode 100644 docs/NDKCacheAdapter.md delete mode 100644 docs/NDKConstructorParams.md delete mode 100644 docs/NDKEvent.md delete mode 100644 docs/NDKFilterOptions.md delete mode 100644 docs/NDKKind.md delete mode 100644 docs/NDKNip07Signer.md delete mode 100644 docs/NDKNip46Backend.md delete mode 100644 docs/NDKNip46Signer.md delete mode 100644 docs/NDKNostrRpc.md delete mode 100644 docs/NDKPrivateKeySigner.md delete mode 100644 docs/NDKRelay.md delete mode 100644 docs/NDKRelayConnectionStats.md delete mode 100644 docs/NDKRelaySet.md delete mode 100644 docs/NDKRelayStatus.md delete mode 100644 docs/NDKRpcRequest.md delete mode 100644 docs/NDKRpcResponse.md delete mode 100644 docs/NDKSigner.md delete mode 100644 docs/NDKSubscription.md delete mode 100644 docs/NDKSubscriptionCacheUsage.md delete mode 100644 docs/NDKSubscriptionGroup.md delete mode 100644 docs/NDKSubscriptionOptions.md delete mode 100644 docs/NDKUser.md delete mode 100644 docs/NDKUserProfile.md delete mode 100644 docs/NDKZapInvoice.md delete mode 100644 docs/_Sidebar.md delete mode 100644 docs/default.md diff --git a/README.md b/README.md index 8cd4b7a7..6796ca02 100644 --- a/README.md +++ b/README.md @@ -86,6 +86,7 @@ You can pass an object with several options to a newly created instance of NDK. ```ts // Import the package import NDK from "@nostr-dev-kit/ndk"; + // Create a new NDK instance with explicit relays ndk = new NDK({ explicitRelayUrls: ["wss://a.relay", "wss://another.relay"] }); ``` @@ -99,6 +100,7 @@ After you've instatiated NDK, you need to tell it to connect before you'll be ab ```ts // Import the package import NDK from "@nostr-dev-kit/ndk"; + // Create a new NDK instance with explicit relays ndk = new NDK({ explicitRelayUrls: ["wss://a.relay", "wss://another.relay"] }); @@ -173,21 +175,20 @@ const redisAdapter = new RedisAdapter(redisUrl); const ndk = new NDK({ cacheAdapter: redisAdapter }); ``` -## Buffered queries (COMING SOON) - +## Groupable queries Clients often need to load data (e.g. profile data) from individual components at once (e.g. initial page render). This typically causes multiple subscriptions to be submitted fetching the same information and causing poor performance or getting rate-limited/maxed out by relays. NDK implements a convenient subscription model, _buffered queries_, where a named subscription will be created after a customizable amount of time, so that multiple components can append queries. ```ts // Component 1 -ndk.bufferedSubscription({ kinds: [0], authors: ["pubkey-1"] }, "profiles", 500); +ndk.subscribe({ kinds: [0], authors: ["pubkey-1"] }); // Component 2 -ndk.bufferedSubscription({ kinds: [0], authors: ["pubkey-2"] }, "profiles", 500); +ndk.subscribe({ kinds: [0], authors: ["pubkey-2"] }); ``` -In this example, NDK will wait 500ms before creating a subscription with the filter: +In this example, NDK will wait 100ms (default `groupableDelay`) before creating a subscription with the filter: ```ts {kinds: [0], authors: ['pubkey-1', 'pubkey-2'] } @@ -230,12 +231,13 @@ But if NDK has observed that `npub-B` tends to write to `wss://userb.xyz` and ## Auto-closing subscriptions Often, clients need to fetch data but don't need to maintain an open connection to the relay. This is true of profile metadata requests especially. +*NDK defaults to having the `closeOnEose` flag set to `true`, to make permanent subscriptions explicit in the codebase; if you want your +subscription to remain active beyond `EOSE`, you should set it to `false`.* -- The `autoclose` flag will make the connection close immediately after EOSE is seen. -- An integer `autoclose` will close the connection after that amount of ms after EOSE is seen. +- The `closeOnEose` flag will make the connection close immediately after EOSE is seen. ```ts -ndk.subscription({ kinds: [0], authors: ["..."] }, { autoclose: true }); +ndk.subscription({ kinds: [0], authors: ["..."] }, { closeOnEose: false }); ``` ## Convenience methods @@ -258,7 +260,7 @@ const jeff = ndk.getUser({ ### Fetch a user's profile and publish updates -You can easily fetch a user's profile data from `kind: 0` events on relays. Calling `.fetchProfile()` will update the `profile` attribute on the user object instead of returning the profile directly. NDK then makes it trivial to update values and publish those updates back to relays. +You can easily fetch a user's profile data from `kind:0` events on relays. Calling `.fetchProfile()` will update the `profile` attribute on the user object instead of returning the profile directly. NDK then makes it trivial to update values and publish those updates back to relays. ```ts const pablo = ndk.getUser({ @@ -319,5 +321,5 @@ await event.zap(1337, "Zapping your post!"); // Returns a zap request - Users of NDK should instantiate a single NDK instance. - That instance tracks state with all relays connected, explicit and otherwise. - All relays are tracked in a single pool that handles connection errors/reconnection logic. -- RelaySets are assembled ad-hoc as needed depending on the queries set, although some RelaySets might be long-lasting, like the `explicitRelays` specified by the user. +- RelaySets are assembled ad-hoc as needed depending on the queries set, although some RelaySets might be long-lasting, like the `explicitRelayUrls` specified by the user. - RelaySets are always a subset of the pool of all available relays. diff --git a/docs/.nojekyll b/docs/.nojekyll deleted file mode 100644 index e2ac6616..00000000 --- a/docs/.nojekyll +++ /dev/null @@ -1 +0,0 @@ -TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false. \ No newline at end of file diff --git a/docs/Exports.md b/docs/Exports.md deleted file mode 100644 index 52a7c23a..00000000 --- a/docs/Exports.md +++ /dev/null @@ -1,267 +0,0 @@ -# NDK - -## Table of contents - -### Enumerations - -- [NDKKind](../wiki/NDKKind) -- [NDKRelayStatus](../wiki/NDKRelayStatus) -- [NDKSubscriptionCacheUsage](../wiki/NDKSubscriptionCacheUsage) - -### Classes - -- [NDKEvent](../wiki/NDKEvent) -- [NDKNip07Signer](../wiki/NDKNip07Signer) -- [NDKNip46Backend](../wiki/NDKNip46Backend) -- [NDKNip46Signer](../wiki/NDKNip46Signer) -- [NDKNostrRpc](../wiki/NDKNostrRpc) -- [NDKPrivateKeySigner](../wiki/NDKPrivateKeySigner) -- [NDKRelay](../wiki/NDKRelay) -- [NDKRelaySet](../wiki/NDKRelaySet) -- [NDKSubscriptionGroup](../wiki/NDKSubscriptionGroup) -- [NDKUser](../wiki/NDKUser) -- [default](../wiki/default) - -### Interfaces - -- [GetUserParams](../wiki/GetUserParams) -- [IEventHandlingStrategy](../wiki/IEventHandlingStrategy) -- [NDKCacheAdapter](../wiki/NDKCacheAdapter) -- [NDKConstructorParams](../wiki/NDKConstructorParams) -- [NDKFilterOptions](../wiki/NDKFilterOptions) -- [NDKRelayConnectionStats](../wiki/NDKRelayConnectionStats) -- [NDKRpcRequest](../wiki/NDKRpcRequest) -- [NDKRpcResponse](../wiki/NDKRpcResponse) -- [NDKSigner](../wiki/NDKSigner) -- [NDKSubscriptionOptions](../wiki/NDKSubscriptionOptions) -- [NDKUserProfile](../wiki/NDKUserProfile) -- [NDKZapInvoice](../wiki/NDKZapInvoice) - -### Type Aliases - -- [NDKEventId](../wiki/Exports#ndkeventid) -- [NDKFilter](../wiki/Exports#ndkfilter) -- [NDKTag](../wiki/Exports#ndktag) -- [Nip46ApplyTokenCallback](../wiki/Exports#nip46applytokencallback) -- [Nip46PermitCallback](../wiki/Exports#nip46permitcallback) -- [NostrEvent](../wiki/Exports#nostrevent) - -### Variables - -- [defaultOpts](../wiki/Exports#defaultopts) - -### Functions - -- [filterFromId](../wiki/Exports#filterfromid) -- [mergeEvent](../wiki/Exports#mergeevent) -- [mergeFilters](../wiki/Exports#mergefilters) -- [zapInvoiceFromEvent](../wiki/Exports#zapinvoicefromevent) - -### Events - -- [NDKSubscription](../wiki/NDKSubscription) - -## Type Aliases - -### NDKEventId - -Ƭ **NDKEventId**: `string` - -#### Defined in - -[src/events/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L13) - -___ - -### NDKFilter - -Ƭ **NDKFilter**: `NostrFilter` - -#### Defined in - -[src/subscription/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L10) - -___ - -### NDKTag - -Ƭ **NDKTag**: `string`[] - -#### Defined in - -[src/events/index.ts:14](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L14) - -___ - -### Nip46ApplyTokenCallback - -Ƭ **Nip46ApplyTokenCallback**: (`pubkey`: `string`, `token`: `string`) => `Promise`<`void`\> - -#### Type declaration - -▸ (`pubkey`, `token`): `Promise`<`void`\> - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `pubkey` | `string` | -| `token` | `string` | - -##### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/signers/nip46/backend/index.ts:16](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L16) - -___ - -### Nip46PermitCallback - -Ƭ **Nip46PermitCallback**: (`pubkey`: `string`, `method`: `string`, `params?`: `any`) => `Promise`<`boolean`\> - -#### Type declaration - -▸ (`pubkey`, `method`, `params?`): `Promise`<`boolean`\> - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `pubkey` | `string` | -| `method` | `string` | -| `params?` | `any` | - -##### Returns - -`Promise`<`boolean`\> - -#### Defined in - -[src/signers/nip46/backend/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L10) - -___ - -### NostrEvent - -Ƭ **NostrEvent**: `Object` - -#### Type declaration - -| Name | Type | -| :------ | :------ | -| `content` | `string` | -| `created_at` | `number` | -| `id?` | `string` | -| `kind?` | [`NDKKind`](../wiki/NDKKind) \| `number` | -| `pubkey` | `string` | -| `sig?` | `string` | -| `tags` | [`NDKTag`](../wiki/Exports#ndktag)[] | - -#### Defined in - -[src/events/index.ts:16](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L16) - -## Variables - -### defaultOpts - -• `Const` **defaultOpts**: [`NDKSubscriptionOptions`](../wiki/NDKSubscriptionOptions) - -Default subscription options. - -#### Defined in - -[src/subscription/index.ts:55](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L55) - -## Functions - -### filterFromId - -▸ **filterFromId**(`id`): [`NDKFilter`](../wiki/Exports#ndkfilter) - -Creates a valid nostr filter from an event id or a NIP-19 bech32. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `id` | `string` | - -#### Returns - -[`NDKFilter`](../wiki/Exports#ndkfilter) - -#### Defined in - -[src/subscription/index.ts:449](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L449) - -___ - -### mergeEvent - -▸ **mergeEvent**(`event`, `profile`): [`NDKUserProfile`](../wiki/NDKUserProfile) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `event` | [`NDKEvent`](../wiki/NDKEvent) | -| `profile` | [`NDKUserProfile`](../wiki/NDKUserProfile) | - -#### Returns - -[`NDKUserProfile`](../wiki/NDKUserProfile) - -#### Defined in - -[src/user/profile.ts:16](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/profile.ts#L16) - -___ - -### mergeFilters - -▸ **mergeFilters**(`filters`): [`NDKFilter`](../wiki/Exports#ndkfilter) - -Go through all the passed filters, which should be -relatively similar, and merge them. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `filters` | [`NDKFilter`](../wiki/Exports#ndkfilter)[] | - -#### Returns - -[`NDKFilter`](../wiki/Exports#ndkfilter) - -#### Defined in - -[src/subscription/index.ts:426](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L426) - -___ - -### zapInvoiceFromEvent - -▸ **zapInvoiceFromEvent**(`event`): [`NDKZapInvoice`](../wiki/NDKZapInvoice) \| ``null`` - -Parses a zap invoice from a kind 9735 event - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `event` | [`NDKEvent`](../wiki/NDKEvent) | The event to parse | - -#### Returns - -[`NDKZapInvoice`](../wiki/NDKZapInvoice) \| ``null`` - -NDKZapInvoice | null - -#### Defined in - -[src/zap/invoice.ts:21](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/zap/invoice.ts#L21) diff --git a/docs/GetUserParams.md b/docs/GetUserParams.md deleted file mode 100644 index cf02c935..00000000 --- a/docs/GetUserParams.md +++ /dev/null @@ -1,72 +0,0 @@ -# Interface: GetUserParams - -## Hierarchy - -- `NDKUserParams` - - ↳ **`GetUserParams`** - -## Table of contents - -### Properties - -- [hexpubkey](../wiki/GetUserParams#hexpubkey) -- [nip05](../wiki/GetUserParams#nip05) -- [npub](../wiki/GetUserParams#npub) -- [relayUrls](../wiki/GetUserParams#relayurls) - -## Properties - -### hexpubkey - -• `Optional` **hexpubkey**: `string` - -#### Overrides - -NDKUserParams.hexpubkey - -#### Defined in - -[src/index.ts:44](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L44) - -___ - -### nip05 - -• `Optional` **nip05**: `string` - -#### Inherited from - -NDKUserParams.nip05 - -#### Defined in - -[src/user/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/index.ts#L11) - -___ - -### npub - -• `Optional` **npub**: `string` - -#### Overrides - -NDKUserParams.npub - -#### Defined in - -[src/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L43) - -___ - -### relayUrls - -• `Optional` **relayUrls**: `string`[] - -#### Inherited from - -NDKUserParams.relayUrls - -#### Defined in - -[src/user/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/index.ts#L12) diff --git a/docs/Home.md b/docs/Home.md deleted file mode 100644 index 8cd4b7a7..00000000 --- a/docs/Home.md +++ /dev/null @@ -1,323 +0,0 @@ -# NDK - -drawing - -NDK is a [nostr](<[url](https://github.com/nostr-protocol/nostr)>) development kit that makes the experience of building Nostr-related applications, whether they are relays, clients, or anything in between, better, more reliable and overall nicer to work with than existing solutions. - -## NDK Objectives - -1. The core goal of NDK is to improve the decentralization of Nostr via intelligent conventions and data discovery features without depending on any one central point of coordination (such as large relays or centralized search providers). -2. NDK team aims to have new to nostr devs get set up, and reading a NIP-01 event within 10 minutes. -3. NDK's objective is to serve prospective, and current nostr devs as clients. If you have friction with the NDK developer experience, please open issues, and ask for help from the NDK team! Devs are encouraged to search through existing, and/or create new github issues when experiencing friction with NDK. - -## Installation - -```sh -npm add @nostr-dev-kit/ndk -``` - -## Debugging - -NDK uses the `debug` package to assist in understanding what's happening behind the hood. If you are building a package -that runs on the server define the `DEBUG` envionment variable like - -``` -export DEBUG='ndk:*' -``` - -or in the browser enable it by writing in the DevTools console - -``` -localStorage.debug = 'ndk:*' -``` - -## Support - -### NDK NIP-28 group chat - -- note15m6rdfvlmd0z836hk83sg7r59xtv23qnmamhsslq5uc6744fdm4qfkeat3 - - [Coracle](https://app.coracle.social/chat/note15m6rdfvlmd0z836hk83sg7r59xtv23qnmamhsslq5uc6744fdm4qfkeat3) - - [Nostrchat](https://www.nostrchat.io/channel/a6f436a59fdb5e23c757b1e30478742996c54413df777843e0a731af56a96eea) -- [WIP documentation](https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md) - -## Features - -- [x] NIP-01 -- [x] Caching adapters - - Server-side - - [x] [Redis](https://github.com/pablof7z/ndk-cache-redis) - - [ ] In-memory - - Client-side - - [ ] LocalStorage - - [ ] IndexDB -- [~] NIP-04: Encryption support -- [x] NIP-18: Repost -- [ ] NIP-26: Event delegation -- [ ] NIP-41: Relay authentication -- [x] NIP-57: Zaps - - [x] LUD06 - - [x] LUD16 -- [ ] NIP-65: Contacts' Relay list -- Subscription Management - - [x] Auto-grouping queries - - [x] Auto-closing subscriptions -- Signing Adapters - - [x] Private key - - [x] NIP-07 - - [ ] NIP-26 - - [x] NIP-46 - - [x] Permission tokens -- Relay discovery - - [ ] Gossip-model (NIP-65) - - [ ] Implicit relays discovery following pubkey usage - - [ ] Implicit relays discovery following `t` tag usage - - [ ] Explicit relays blacklist -- [ ] nostr-tools/SimplePool drop-in replacement interface - -## Instantiate an NDK instance - -You can pass an object with several options to a newly created instance of NDK. - -- `explicitRelayUrls` – an array of relay URLs. -- `signer` - an instance of a [signer](#signers). -- `cacheAdapter` - an instance of a [Cache Adapter](#caching) -- `debug` - boolean true/false to turn on degbugging - -```ts -// Import the package -import NDK from "@nostr-dev-kit/ndk"; -// Create a new NDK instance with explicit relays -ndk = new NDK({ explicitRelayUrls: ["wss://a.relay", "wss://another.relay"] }); -``` - -Note: In normal client use, it's best practice to instantiate NDK as a singleton class. [See more below](#architecture-decisions--suggestions). - -## Connecting - -After you've instatiated NDK, you need to tell it to connect before you'll be able to interact with any relays. - -```ts -// Import the package -import NDK from "@nostr-dev-kit/ndk"; -// Create a new NDK instance with explicit relays -ndk = new NDK({ explicitRelayUrls: ["wss://a.relay", "wss://another.relay"] }); - -// Now connect to specified relays -await ndk.connect(); -``` - -## Signers - -NDK uses signers _optionally_ passed in to sign events. Note that it is possible to use NDK without signing events (e.g. [to get someone's profile](https://github.com/nostr-dev-kit/ndk-cli/blob/master/src/commands/profile.ts)). - -Signing adapters can be passed in when NDK is instantiated or later during runtime. - -### Using a NIP-07 browser extension (e.g. Alby, nos2x) - -Instatiate NDK with a NIP-07 signer - -```ts -// Import the package, NIP-07 signer and NDK event -import NDK, { NDKNip07Signer, NDKEvent } from "@nostr-dev-kit/ndk"; - -const nip07signer = new NDKNip07Signer(); -const ndk = new NDK({ signer: nip07signer }); -``` - -NDK can now ask for permission, via their NIP-07 extension, to... - -**Read the user's public key** - -```ts -nip07signer.user().then(async (user) => { - if (!!user.npub) { - console.log("Permission granted to read their public key:", user.npub); - } -}); -``` - -**Sign & publish events** - -```ts -const ndkEvent = new NDKEvent(ndk); -ndkEvent.kind = 1; -ndkEvent.content = "Hello, world!"; -ndkEvent.publish(); // This will trigger the extension to ask the user to confirm signing. -``` - - - -## Caching - -NDK provides database-agnostic caching functionality out-of-the-box to improve the performance of your application and reduce load on relays. - -NDK will eventually allow you to use multiple caches simultaneously and allow for selective storage of data in the cache store that makes the most sense for your application. - -### Where to look is more important that long-term storage - -The most important data to cache is _where_ a user or note might be found. UX suffers profoundly when this type of data cannot be found. By design, the Nostr protocol leaves breadcrumbs of where a user or note might be found and NDK does it's best to store this data automatically and use it when you query for events. - -### Instantiating and using a cache adapter - -```ts -const redisAdapter = new RedisAdapter(redisUrl); -const ndk = new NDK({ cacheAdapter: redisAdapter }); -``` - -## Buffered queries (COMING SOON) - -Clients often need to load data (e.g. profile data) from individual components at once (e.g. initial page render). This typically causes multiple subscriptions to be submitted fetching the same information and causing poor performance or getting rate-limited/maxed out by relays. - -NDK implements a convenient subscription model, _buffered queries_, where a named subscription will be created after a customizable amount of time, so that multiple components can append queries. - -```ts -// Component 1 -ndk.bufferedSubscription({ kinds: [0], authors: ["pubkey-1"] }, "profiles", 500); - -// Component 2 -ndk.bufferedSubscription({ kinds: [0], authors: ["pubkey-2"] }, "profiles", 500); -``` - -In this example, NDK will wait 500ms before creating a subscription with the filter: - -```ts -{kinds: [0], authors: ['pubkey-1', 'pubkey-2'] } -``` - -## Intelligent relay selection - -When a client submits a request through NDK, NDK will calculate which relays are most likely able to satisfy this request. - -Queries submitted by the client might be broken into different queries if NDK computes different relays. - -For example, say npub-A follows npub-B and npub-C. If the NDK client uses: - -```ts -const ndk = new NDK({ explicitRelays: ["wss://nos.lol"] }); -const npubA = ndk.getUser("npub-A"); -const feedEvents = await npubA.feed(); -``` - -This would result in the following request: - -```json -{ "kinds": [1], "authors": ["npub-B", "npub-C"] } -``` - -But if NDK has observed that `npub-B` tends to write to `wss://userb.xyz` and -`npub-C` tends to write to `wss://userc.io`, NDK will instead send the following queries. - -```json -// to npub-A's explicit relay wss://nos.lol *if* npub-B and npub-C have been seen on that relay -{ "kinds": [1], "authors": [ "npub-B", "npub-C" ] } - -// to wss://userb.xyz -{ "kinds": [1], "authors": [ "npub-B" ] } - -// to wss://userc.io -{ "kinds": [1], "authors": [ "npub-C" ] } -``` - -## Auto-closing subscriptions - -Often, clients need to fetch data but don't need to maintain an open connection to the relay. This is true of profile metadata requests especially. - -- The `autoclose` flag will make the connection close immediately after EOSE is seen. -- An integer `autoclose` will close the connection after that amount of ms after EOSE is seen. - -```ts -ndk.subscription({ kinds: [0], authors: ["..."] }, { autoclose: true }); -``` - -## Convenience methods - -NDK implements several conveience methods for common queries. - -### Instantiate a user by npub or hex pubkey - -This is a handy method for instantiating a new `NDKUser` and associating the current NDK instance with that user for future calls. - -```ts -const pablo = ndk.getUser({ - npub: "npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft" -}); - -const jeff = ndk.getUser({ - hexpubkey: "1739d937dc8c0c7370aa27585938c119e25c41f6c441a5d34c6d38503e3136ef" -}); -``` - -### Fetch a user's profile and publish updates - -You can easily fetch a user's profile data from `kind: 0` events on relays. Calling `.fetchProfile()` will update the `profile` attribute on the user object instead of returning the profile directly. NDK then makes it trivial to update values and publish those updates back to relays. - -```ts -const pablo = ndk.getUser({ - npub: "npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft" -}); -await pablo.fetchProfile(); - -const pabloFullProfile = pablo.profile; - -pablo.profile.name = "Pablo"; -// COMING SOON -await pablo.publish(); // Triggers signing via signer -``` - -### Finding a single event or all events matching a filter - -You can fetch the first event or all events that match a given set of filters. - -```ts -// Create a filter -const filter: NDKFilter = { kinds: [1], authors: [hexpubkey1, hexpubkey2] }; - -// Will return only the first event -event = await ndk.fetchEvent(filter); - -// Will return all found events -events = await ndk.fetchEvents(filter); -``` - -### Creating & publishing events - -```ts -const ndk = new NDK({ explicitRelays, signer }); -const event = new NDKEvent(ndk); -event.kind = 1; -event.content = "PV Nostr! 🤙🏼"; -await ndk.publish(event); -``` - -### Reacting to an event - -```ts -// Find the first event from @jack, and react/like it. -const event = await ndk.fetchEvent({ author: "jack@cashapp.com" })[0]; -await event.react("🤙"); -``` - -### Zap an event - -```ts -// Find the first event from @jack, and zap it. -const event = await ndk.fetchEvent({ author: "jack@cashapp.com" })[0]; -await event.zap(1337, "Zapping your post!"); // Returns a zap request -``` - -## Architecture decisions & suggestions - -- Users of NDK should instantiate a single NDK instance. -- That instance tracks state with all relays connected, explicit and otherwise. -- All relays are tracked in a single pool that handles connection errors/reconnection logic. -- RelaySets are assembled ad-hoc as needed depending on the queries set, although some RelaySets might be long-lasting, like the `explicitRelays` specified by the user. -- RelaySets are always a subset of the pool of all available relays. diff --git a/docs/IEventHandlingStrategy.md b/docs/IEventHandlingStrategy.md deleted file mode 100644 index 39d301e0..00000000 --- a/docs/IEventHandlingStrategy.md +++ /dev/null @@ -1,29 +0,0 @@ -# Interface: IEventHandlingStrategy - -## Table of contents - -### Methods - -- [handle](../wiki/IEventHandlingStrategy#handle) - -## Methods - -### handle - -▸ **handle**(`backend`, `remotePubkey`, `params`): `Promise`<`undefined` \| `string`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `backend` | [`NDKNip46Backend`](../wiki/NDKNip46Backend) | -| `remotePubkey` | `string` | -| `params` | `string`[] | - -#### Returns - -`Promise`<`undefined` \| `string`\> - -#### Defined in - -[src/signers/nip46/backend/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L22) diff --git a/docs/NDKCacheAdapter.md b/docs/NDKCacheAdapter.md deleted file mode 100644 index 015d135e..00000000 --- a/docs/NDKCacheAdapter.md +++ /dev/null @@ -1,67 +0,0 @@ -# Interface: NDKCacheAdapter - -## Table of contents - -### Properties - -- [locking](../wiki/NDKCacheAdapter#locking) - -### Methods - -- [query](../wiki/NDKCacheAdapter#query) -- [setEvent](../wiki/NDKCacheAdapter#setevent) - -## Properties - -### locking - -• **locking**: `boolean` - -Whether this cache adapter is expected to be fast. -If this is true, the cache will be queried before the relays. -When this is false, the cache will be queried in addition to the relays. - -#### Defined in - -[src/cache/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/cache/index.ts#L10) - -## Methods - -### query - -▸ **query**(`subscription`): `Promise`<`void`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `subscription` | [`NDKSubscription`](../wiki/NDKSubscription) | - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/cache/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/cache/index.ts#L12) - -___ - -### setEvent - -▸ **setEvent**(`event`, `filter`): `Promise`<`void`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `event` | [`NDKEvent`](../wiki/NDKEvent) | -| `filter` | [`NDKFilter`](../wiki/Exports#ndkfilter) | - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/cache/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/cache/index.ts#L13) diff --git a/docs/NDKConstructorParams.md b/docs/NDKConstructorParams.md deleted file mode 100644 index 4c23c006..00000000 --- a/docs/NDKConstructorParams.md +++ /dev/null @@ -1,61 +0,0 @@ -# Interface: NDKConstructorParams - -## Table of contents - -### Properties - -- [cacheAdapter](../wiki/NDKConstructorParams#cacheadapter) -- [debug](../wiki/NDKConstructorParams#debug) -- [devWriteRelayUrls](../wiki/NDKConstructorParams#devwriterelayurls) -- [explicitRelayUrls](../wiki/NDKConstructorParams#explicitrelayurls) -- [signer](../wiki/NDKConstructorParams#signer) - -## Properties - -### cacheAdapter - -• `Optional` **cacheAdapter**: [`NDKCacheAdapter`](../wiki/NDKCacheAdapter) - -#### Defined in - -[src/index.ts:39](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L39) - -___ - -### debug - -• `Optional` **debug**: `Debugger` - -#### Defined in - -[src/index.ts:40](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L40) - -___ - -### devWriteRelayUrls - -• `Optional` **devWriteRelayUrls**: `string`[] - -#### Defined in - -[src/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L37) - -___ - -### explicitRelayUrls - -• `Optional` **explicitRelayUrls**: `string`[] - -#### Defined in - -[src/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L36) - -___ - -### signer - -• `Optional` **signer**: [`NDKSigner`](../wiki/NDKSigner) - -#### Defined in - -[src/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L38) diff --git a/docs/NDKEvent.md b/docs/NDKEvent.md deleted file mode 100644 index e1ba0673..00000000 --- a/docs/NDKEvent.md +++ /dev/null @@ -1,704 +0,0 @@ -# Class: NDKEvent - -NDKEvent is the basic building block of NDK; most things -you do with NDK will revolve around writing or consuming NDKEvents. - -## Hierarchy - -- `EventEmitter` - - ↳ **`NDKEvent`** - -## Table of contents - -### Constructors - -- [constructor](../wiki/NDKEvent#constructor) - -### Properties - -- [content](../wiki/NDKEvent#content) -- [created\_at](../wiki/NDKEvent#created_at) -- [decrypt](../wiki/NDKEvent#decrypt) -- [encode](../wiki/NDKEvent#encode) -- [encrypt](../wiki/NDKEvent#encrypt) -- [id](../wiki/NDKEvent#id) -- [isParamReplaceable](../wiki/NDKEvent#isparamreplaceable) -- [isReplaceable](../wiki/NDKEvent#isreplaceable) -- [kind](../wiki/NDKEvent#kind) -- [ndk](../wiki/NDKEvent#ndk) -- [pubkey](../wiki/NDKEvent#pubkey) -- [relay](../wiki/NDKEvent#relay) -- [repost](../wiki/NDKEvent#repost) -- [sig](../wiki/NDKEvent#sig) -- [tags](../wiki/NDKEvent#tags) - -### Accessors - -- [author](../wiki/NDKEvent#author) - -### Methods - -- [delete](../wiki/NDKEvent#delete) -- [filter](../wiki/NDKEvent#filter) -- [getMatchingTags](../wiki/NDKEvent#getmatchingtags) -- [publish](../wiki/NDKEvent#publish) -- [rawEvent](../wiki/NDKEvent#rawevent) -- [removeTag](../wiki/NDKEvent#removetag) -- [replaceableDTag](../wiki/NDKEvent#replaceabledtag) -- [sign](../wiki/NDKEvent#sign) -- [tag](../wiki/NDKEvent#tag) -- [tagId](../wiki/NDKEvent#tagid) -- [tagReference](../wiki/NDKEvent#tagreference) -- [tagValue](../wiki/NDKEvent#tagvalue) -- [toNostrEvent](../wiki/NDKEvent#tonostrevent) -- [toString](../wiki/NDKEvent#tostring) -- [zap](../wiki/NDKEvent#zap) - -## Constructors - -### constructor - -• **new NDKEvent**(`ndk?`, `event?`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `ndk?` | [`default`](../wiki/default) | -| `event?` | [`NostrEvent`](../wiki/Exports#nostrevent) | - -#### Overrides - -EventEmitter.constructor - -#### Defined in - -[src/events/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L50) - -## Properties - -### content - -• **content**: `string` = `""` - -#### Defined in - -[src/events/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L38) - -___ - -### created\_at - -• `Optional` **created\_at**: `number` - -#### Defined in - -[src/events/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L37) - -___ - -### decrypt - -• **decrypt**: (...`args`: [sender?: NDKUser, signer?: NDKSigner]) => `Promise`<`void`\> - -#### Type declaration - -▸ (`...args`): `Promise`<`void`\> - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `...args` | [sender?: NDKUser, signer?: NDKSigner] | - -##### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/events/index.ts:163](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L163) - -___ - -### encode - -• **encode**: (...`args`: []) => `string` - -#### Type declaration - -▸ (`...args`): `string` - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `...args` | [] | - -##### Returns - -`string` - -#### Defined in - -[src/events/index.ts:161](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L161) - -___ - -### encrypt - -• **encrypt**: (...`args`: [recipient?: NDKUser, signer?: NDKSigner]) => `Promise`<`void`\> - -#### Type declaration - -▸ (`...args`): `Promise`<`void`\> - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `...args` | [recipient?: NDKUser, signer?: NDKSigner] | - -##### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/events/index.ts:162](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L162) - -___ - -### id - -• **id**: `string` = `""` - -#### Defined in - -[src/events/index.ts:41](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L41) - -___ - -### isParamReplaceable - -• **isParamReplaceable**: (...`args`: []) => `boolean` - -#### Type declaration - -▸ (`...args`): `boolean` - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `...args` | [] | - -##### Returns - -`boolean` - -#### Defined in - -[src/events/index.ts:160](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L160) - -___ - -### isReplaceable - -• **isReplaceable**: (...`args`: []) => `boolean` - -#### Type declaration - -▸ (`...args`): `boolean` - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `...args` | [] | - -##### Returns - -`boolean` - -#### Defined in - -[src/events/index.ts:159](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L159) - -___ - -### kind - -• `Optional` **kind**: `number` - -#### Defined in - -[src/events/index.ts:40](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L40) - -___ - -### ndk - -• `Optional` **ndk**: [`default`](../wiki/default) - -#### Defined in - -[src/events/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L36) - -___ - -### pubkey - -• **pubkey**: `string` = `""` - -#### Defined in - -[src/events/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L43) - -___ - -### relay - -• **relay**: `undefined` \| [`NDKRelay`](../wiki/NDKRelay) - -The relay that this event was first received from. - -#### Defined in - -[src/events/index.ts:48](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L48) - -___ - -### repost - -• **repost**: (...`args`: [publish: boolean, signer?: NDKSigner]) => `Promise`<[`NDKEvent`](../wiki/NDKEvent)\> - -#### Type declaration - -▸ (`...args`): `Promise`<[`NDKEvent`](../wiki/NDKEvent)\> - -NIP-18 reposting event. - -**`Function`** - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `...args` | [publish: boolean, signer?: NDKSigner] | - -##### Returns - -`Promise`<[`NDKEvent`](../wiki/NDKEvent)\> - -The reposted event - -#### Defined in - -[src/events/index.ts:361](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L361) - -___ - -### sig - -• `Optional` **sig**: `string` - -#### Defined in - -[src/events/index.ts:42](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L42) - -___ - -### tags - -• **tags**: [`NDKTag`](../wiki/Exports#ndktag)[] = `[]` - -#### Defined in - -[src/events/index.ts:39](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L39) - -## Accessors - -### author - -• `get` **author**(): [`NDKUser`](../wiki/NDKUser) - -Returns an NDKUser for the author of the event. - -#### Returns - -[`NDKUser`](../wiki/NDKUser) - -#### Defined in - -[src/events/index.ts:84](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L84) - -• `set` **author**(`user`): `void` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `user` | [`NDKUser`](../wiki/NDKUser) | - -#### Returns - -`void` - -#### Defined in - -[src/events/index.ts:77](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L77) - -## Methods - -### delete - -▸ **delete**(`reason?`): `Promise`<[`NDKEvent`](../wiki/NDKEvent)\> - -Generates a deletion event of the current event - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `reason?` | `string` | The reason for the deletion | - -#### Returns - -`Promise`<[`NDKEvent`](../wiki/NDKEvent)\> - -The deletion event - -#### Defined in - -[src/events/index.ts:337](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L337) - -___ - -### filter - -▸ **filter**(): [`NDKFilter`](../wiki/Exports#ndkfilter) - -Provides the filter that will return matching events for this event. - -**`Example`** - -```ts -event = new NDKEvent(ndk, { kind: 30000, pubkey: 'pubkey', tags: [ ["d", "d-code"] ] }); - event.filter(); // { "#a": ["30000:pubkey:d-code"] } -``` - -**`Example`** - -```ts -event = new NDKEvent(ndk, { kind: 1, pubkey: 'pubkey', id: "eventid" }); - event.filter(); // { "#e": ["eventid"] } -``` - -#### Returns - -[`NDKFilter`](../wiki/Exports#ndkfilter) - -The filter that will return matching events for this event - -#### Defined in - -[src/events/index.ts:300](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L300) - -___ - -### getMatchingTags - -▸ **getMatchingTags**(`tagName`): [`NDKTag`](../wiki/Exports#ndktag)[] - -Get all tags with the given name - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `tagName` | `string` | - -#### Returns - -[`NDKTag`](../wiki/Exports#ndktag)[] - -#### Defined in - -[src/events/index.ts:168](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L168) - -___ - -### publish - -▸ **publish**(`relaySet?`): `Promise`<`void`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `relaySet?` | [`NDKRelaySet`](../wiki/NDKRelaySet) | - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/events/index.ts:215](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L215) - -___ - -### rawEvent - -▸ **rawEvent**(): [`NostrEvent`](../wiki/Exports#nostrevent) - -Returns the event as is. - -#### Returns - -[`NostrEvent`](../wiki/Exports#nostrevent) - -#### Defined in - -[src/events/index.ts:65](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L65) - -___ - -### removeTag - -▸ **removeTag**(`tagName`): `void` - -Remove all tags with the given name - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `tagName` | `string` | Tag name to search for | - -#### Returns - -`void` - -#### Defined in - -[src/events/index.ts:187](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L187) - -___ - -### replaceableDTag - -▸ **replaceableDTag**(): `string` - -#### Returns - -`string` - -the `d` tag of a parameterized replaceable event - -#### Defined in - -[src/events/index.ts:245](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L245) - -___ - -### sign - -▸ **sign**(`signer?`): `Promise`<`void`\> - -Sign the event if a signer is present. - -It will generate tags. -Repleacable events will have their created_at field set to the current time. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `signer?` | [`NDKSigner`](../wiki/NDKSigner) | - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/events/index.ts:201](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L201) - -___ - -### tag - -▸ **tag**(`user`, `marker?`): `void` - -Tag a user with an optional marker. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `user` | [`NDKUser`](../wiki/NDKUser) | The user to tag. | -| `marker?` | `string` | The marker to use in the tag. | - -#### Returns - -`void` - -#### Defined in - -[src/events/index.ts:95](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L95) - -▸ **tag**(`event`, `marker?`): `void` - -Tag a user with an optional marker. - -**`Example`** - -```typescript -reply.tag(opEvent, "reply"); -// reply.tags => [["e", , , "reply"]] -``` - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `event` | [`NDKEvent`](../wiki/NDKEvent) | The event to tag. | -| `marker?` | `string` | The marker to use in the tag. | - -#### Returns - -`void` - -#### Defined in - -[src/events/index.ts:107](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L107) - -___ - -### tagId - -▸ **tagId**(): `string` - -#### Returns - -`string` - -the id of the event, or if it's a parameterized event, the id of the event with the d tag - -#### Defined in - -[src/events/index.ts:259](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L259) - -___ - -### tagReference - -▸ **tagReference**(): `string`[] - -Get the tag that can be used to reference this event from another event - -**`Example`** - -```ts -event = new NDKEvent(ndk, { kind: 30000, pubkey: 'pubkey', tags: [ ["d", "d-code"] ] }); - event.tagReference(); // ["a", "30000:pubkey:d-code"] - - event = new NDKEvent(ndk, { kind: 1, pubkey: 'pubkey', id: "eventid" }); - event.tagReference(); // ["e", "eventid"] -``` - -#### Returns - -`string`[] - -#### Defined in - -[src/events/index.ts:279](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L279) - -___ - -### tagValue - -▸ **tagValue**(`tagName`): `undefined` \| `string` - -Get the first tag with the given name - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `tagName` | `string` | Tag name to search for | - -#### Returns - -`undefined` \| `string` - -The value of the first tag with the given name, or undefined if no such tag exists - -#### Defined in - -[src/events/index.ts:177](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L177) - -___ - -### toNostrEvent - -▸ **toNostrEvent**(`pubkey?`): `Promise`<[`NostrEvent`](../wiki/Exports#nostrevent)\> - -Return a NostrEvent object, trying to fill in missing fields -when possible, adding tags when necessary. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `pubkey?` | `string` | - -#### Returns - -`Promise`<[`NostrEvent`](../wiki/Exports#nostrevent)\> - -#### Defined in - -[src/events/index.ts:135](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L135) - -___ - -### toString - -▸ **toString**(): `Promise`<[`NostrEvent`](../wiki/Exports#nostrevent)\> - -#### Returns - -`Promise`<[`NostrEvent`](../wiki/Exports#nostrevent)\> - -#### Defined in - -[src/events/index.ts:191](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L191) - -___ - -### zap - -▸ **zap**(`amount`, `comment?`, `extraTags?`): `Promise`<``null`` \| `string`\> - -Create a zap request for an existing event - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `amount` | `number` | The amount to zap in millisatoshis | -| `comment?` | `string` | A comment to add to the zap request | -| `extraTags?` | [`NDKTag`](../wiki/Exports#ndktag)[] | Extra tags to add to the zap request | - -#### Returns - -`Promise`<``null`` \| `string`\> - -#### Defined in - -[src/events/index.ts:315](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/index.ts#L315) diff --git a/docs/NDKFilterOptions.md b/docs/NDKFilterOptions.md deleted file mode 100644 index 8d5b3a7f..00000000 --- a/docs/NDKFilterOptions.md +++ /dev/null @@ -1,17 +0,0 @@ -# Interface: NDKFilterOptions - -## Table of contents - -### Properties - -- [skipCache](../wiki/NDKFilterOptions#skipcache) - -## Properties - -### skipCache - -• `Optional` **skipCache**: `boolean` - -#### Defined in - -[src/subscription/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L13) diff --git a/docs/NDKKind.md b/docs/NDKKind.md deleted file mode 100644 index 393dd98d..00000000 --- a/docs/NDKKind.md +++ /dev/null @@ -1,325 +0,0 @@ -# Enumeration: NDKKind - -## Table of contents - -### Enumeration Members - -- [AppSpecificData](../wiki/NDKKind#appspecificdata) -- [Article](../wiki/NDKKind#article) -- [BadgeAward](../wiki/NDKKind#badgeaward) -- [BadgeDefinition](../wiki/NDKKind#badgedefinition) -- [CategorizedBookmarkList](../wiki/NDKKind#categorizedbookmarklist) -- [CategorizedPeopleList](../wiki/NDKKind#categorizedpeoplelist) -- [ChannelCreation](../wiki/NDKKind#channelcreation) -- [ChannelHideMessage](../wiki/NDKKind#channelhidemessage) -- [ChannelMessage](../wiki/NDKKind#channelmessage) -- [ChannelMetadata](../wiki/NDKKind#channelmetadata) -- [ChannelMuteUser](../wiki/NDKKind#channelmuteuser) -- [ClientAuth](../wiki/NDKKind#clientauth) -- [Contacts](../wiki/NDKKind#contacts) -- [EncryptedDirectMessage](../wiki/NDKKind#encrypteddirectmessage) -- [EventDeletion](../wiki/NDKKind#eventdeletion) -- [GenericRepost](../wiki/NDKKind#genericrepost) -- [Metadata](../wiki/NDKKind#metadata) -- [MuteList](../wiki/NDKKind#mutelist) -- [NostrConnect](../wiki/NDKKind#nostrconnect) -- [PinList](../wiki/NDKKind#pinlist) -- [ProfileBadge](../wiki/NDKKind#profilebadge) -- [Reaction](../wiki/NDKKind#reaction) -- [RecommendRelay](../wiki/NDKKind#recommendrelay) -- [RelayList](../wiki/NDKKind#relaylist) -- [Report](../wiki/NDKKind#report) -- [Repost](../wiki/NDKKind#repost) -- [Text](../wiki/NDKKind#text) -- [Zap](../wiki/NDKKind#zap) -- [ZapRequest](../wiki/NDKKind#zaprequest) - -## Enumeration Members - -### AppSpecificData - -• **AppSpecificData** = ``30078`` - -#### Defined in - -[src/events/kinds/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L30) - -___ - -### Article - -• **Article** = ``30023`` - -#### Defined in - -[src/events/kinds/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L29) - -___ - -### BadgeAward - -• **BadgeAward** = ``8`` - -#### Defined in - -[src/events/kinds/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L10) - -___ - -### BadgeDefinition - -• **BadgeDefinition** = ``30009`` - -#### Defined in - -[src/events/kinds/index.ts:28](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L28) - -___ - -### CategorizedBookmarkList - -• **CategorizedBookmarkList** = ``30001`` - -#### Defined in - -[src/events/kinds/index.ts:26](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L26) - -___ - -### CategorizedPeopleList - -• **CategorizedPeopleList** = ``30000`` - -#### Defined in - -[src/events/kinds/index.ts:25](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L25) - -___ - -### ChannelCreation - -• **ChannelCreation** = ``40`` - -#### Defined in - -[src/events/kinds/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L12) - -___ - -### ChannelHideMessage - -• **ChannelHideMessage** = ``43`` - -#### Defined in - -[src/events/kinds/index.ts:15](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L15) - -___ - -### ChannelMessage - -• **ChannelMessage** = ``42`` - -#### Defined in - -[src/events/kinds/index.ts:14](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L14) - -___ - -### ChannelMetadata - -• **ChannelMetadata** = ``41`` - -#### Defined in - -[src/events/kinds/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L13) - -___ - -### ChannelMuteUser - -• **ChannelMuteUser** = ``44`` - -#### Defined in - -[src/events/kinds/index.ts:16](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L16) - -___ - -### ClientAuth - -• **ClientAuth** = ``22242`` - -#### Defined in - -[src/events/kinds/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L23) - -___ - -### Contacts - -• **Contacts** = ``3`` - -#### Defined in - -[src/events/kinds/index.ts:5](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L5) - -___ - -### EncryptedDirectMessage - -• **EncryptedDirectMessage** = ``4`` - -#### Defined in - -[src/events/kinds/index.ts:6](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L6) - -___ - -### EventDeletion - -• **EventDeletion** = ``5`` - -#### Defined in - -[src/events/kinds/index.ts:7](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L7) - -___ - -### GenericRepost - -• **GenericRepost** = ``16`` - -#### Defined in - -[src/events/kinds/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L11) - -___ - -### Metadata - -• **Metadata** = ``0`` - -#### Defined in - -[src/events/kinds/index.ts:2](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L2) - -___ - -### MuteList - -• **MuteList** = ``10000`` - -#### Defined in - -[src/events/kinds/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L20) - -___ - -### NostrConnect - -• **NostrConnect** = ``24133`` - -#### Defined in - -[src/events/kinds/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L24) - -___ - -### PinList - -• **PinList** = ``10001`` - -#### Defined in - -[src/events/kinds/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L21) - -___ - -### ProfileBadge - -• **ProfileBadge** = ``30008`` - -#### Defined in - -[src/events/kinds/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L27) - -___ - -### Reaction - -• **Reaction** = ``7`` - -#### Defined in - -[src/events/kinds/index.ts:9](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L9) - -___ - -### RecommendRelay - -• **RecommendRelay** = ``2`` - -#### Defined in - -[src/events/kinds/index.ts:4](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L4) - -___ - -### RelayList - -• **RelayList** = ``10002`` - -#### Defined in - -[src/events/kinds/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L22) - -___ - -### Report - -• **Report** = ``1984`` - -#### Defined in - -[src/events/kinds/index.ts:17](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L17) - -___ - -### Repost - -• **Repost** = ``6`` - -#### Defined in - -[src/events/kinds/index.ts:8](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L8) - -___ - -### Text - -• **Text** = ``1`` - -#### Defined in - -[src/events/kinds/index.ts:3](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L3) - -___ - -### Zap - -• **Zap** = ``9735`` - -#### Defined in - -[src/events/kinds/index.ts:19](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L19) - -___ - -### ZapRequest - -• **ZapRequest** = ``9734`` - -#### Defined in - -[src/events/kinds/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/events/kinds/index.ts#L18) diff --git a/docs/NDKNip07Signer.md b/docs/NDKNip07Signer.md deleted file mode 100644 index 856c0d9d..00000000 --- a/docs/NDKNip07Signer.md +++ /dev/null @@ -1,162 +0,0 @@ -# Class: NDKNip07Signer - -NDKNip07Signer implements the NDKSigner interface for signing Nostr events -with a NIP-07 browser extension (e.g., getalby, nos2x). - -## Implements - -- [`NDKSigner`](../wiki/NDKSigner) - -## Table of contents - -### Constructors - -- [constructor](../wiki/NDKNip07Signer#constructor) - -### Methods - -- [blockUntilReady](../wiki/NDKNip07Signer#blockuntilready) -- [decrypt](../wiki/NDKNip07Signer#decrypt) -- [encrypt](../wiki/NDKNip07Signer#encrypt) -- [sign](../wiki/NDKNip07Signer#sign) -- [user](../wiki/NDKNip07Signer#user) - -## Constructors - -### constructor - -• **new NDKNip07Signer**() - -#### Defined in - -[src/signers/nip07/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip07/index.ts#L12) - -## Methods - -### blockUntilReady - -▸ **blockUntilReady**(): `Promise`<[`NDKUser`](../wiki/NDKUser)\> - -Blocks until the signer is ready and returns the associated NDKUser. - -#### Returns - -`Promise`<[`NDKUser`](../wiki/NDKUser)\> - -A promise that resolves to the NDKUser instance. - -#### Implementation of - -[NDKSigner](../wiki/NDKSigner).[blockUntilReady](../wiki/NDKSigner#blockuntilready) - -#### Defined in - -[src/signers/nip07/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip07/index.ts#L18) - -___ - -### decrypt - -▸ **decrypt**(`sender`, `value`): `Promise`<`string`\> - -Decrypts the given value. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `sender` | [`NDKUser`](../wiki/NDKUser) | -| `value` | `string` | - -#### Returns - -`Promise`<`string`\> - -#### Implementation of - -[NDKSigner](../wiki/NDKSigner).[decrypt](../wiki/NDKSigner#decrypt) - -#### Defined in - -[src/signers/nip07/index.ts:65](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip07/index.ts#L65) - -___ - -### encrypt - -▸ **encrypt**(`recipient`, `value`): `Promise`<`string`\> - -Encrypts the given Nostr event for the given recipient. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `recipient` | [`NDKUser`](../wiki/NDKUser) | The recipient of the encrypted value. | -| `value` | `string` | The value to be encrypted. | - -#### Returns - -`Promise`<`string`\> - -#### Implementation of - -[NDKSigner](../wiki/NDKSigner).[encrypt](../wiki/NDKSigner#encrypt) - -#### Defined in - -[src/signers/nip07/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip07/index.ts#L56) - -___ - -### sign - -▸ **sign**(`event`): `Promise`<`string`\> - -Signs the given Nostr event. - -**`Throws`** - -Error if the NIP-07 is not available on the window object. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `event` | [`NostrEvent`](../wiki/Exports#nostrevent) | The Nostr event to be signed. | - -#### Returns - -`Promise`<`string`\> - -The signature of the signed event. - -#### Implementation of - -[NDKSigner](../wiki/NDKSigner).[sign](../wiki/NDKSigner#sign) - -#### Defined in - -[src/signers/nip07/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip07/index.ts#L47) - -___ - -### user - -▸ **user**(): `Promise`<[`NDKUser`](../wiki/NDKUser)\> - -Getter for the user property. - -#### Returns - -`Promise`<[`NDKUser`](../wiki/NDKUser)\> - -The NDKUser instance. - -#### Implementation of - -[NDKSigner](../wiki/NDKSigner).[user](../wiki/NDKSigner#user) - -#### Defined in - -[src/signers/nip07/index.ts:33](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip07/index.ts#L33) diff --git a/docs/NDKNip46Backend.md b/docs/NDKNip46Backend.md deleted file mode 100644 index b59eaa46..00000000 --- a/docs/NDKNip46Backend.md +++ /dev/null @@ -1,257 +0,0 @@ -# Class: NDKNip46Backend - -This class implements a NIP-46 backend, meaning that it will hold a private key -of the npub that wants to be published as. - -This backend is meant to be used by an NDKNip46Signer, which is the class that -should run client-side, where the user wants to sign events from. - -## Table of contents - -### Constructors - -- [constructor](../wiki/NDKNip46Backend#constructor) - -### Properties - -- [debug](../wiki/NDKNip46Backend#debug) -- [handlers](../wiki/NDKNip46Backend#handlers) -- [localUser](../wiki/NDKNip46Backend#localuser) -- [ndk](../wiki/NDKNip46Backend#ndk) -- [signer](../wiki/NDKNip46Backend#signer) - -### Methods - -- [applyToken](../wiki/NDKNip46Backend#applytoken) -- [decrypt](../wiki/NDKNip46Backend#decrypt) -- [encrypt](../wiki/NDKNip46Backend#encrypt) -- [pubkeyAllowed](../wiki/NDKNip46Backend#pubkeyallowed) -- [setStrategy](../wiki/NDKNip46Backend#setstrategy) -- [signEvent](../wiki/NDKNip46Backend#signevent) -- [start](../wiki/NDKNip46Backend#start) - -## Constructors - -### constructor - -• **new NDKNip46Backend**(`ndk`, `privateKey`, `permitCallback`) - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `ndk` | [`default`](../wiki/default) | The NDK instance to use | -| `privateKey` | `string` | The private key of the npub that wants to be published as | -| `permitCallback` | [`Nip46PermitCallback`](../wiki/Exports#nip46permitcallback) | - | - -#### Defined in - -[src/signers/nip46/backend/index.ts:48](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L48) - -## Properties - -### debug - -• `Readonly` **debug**: `Debugger` - -#### Defined in - -[src/signers/nip46/backend/index.ts:40](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L40) - -___ - -### handlers - -• **handlers**: `Object` - -#### Index signature - -▪ [method: `string`]: [`IEventHandlingStrategy`](../wiki/IEventHandlingStrategy) - -#### Defined in - -[src/signers/nip46/backend/index.ts:74](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L74) - -___ - -### localUser - -• `Optional` **localUser**: [`NDKUser`](../wiki/NDKUser) - -#### Defined in - -[src/signers/nip46/backend/index.ts:39](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L39) - -___ - -### ndk - -• `Readonly` **ndk**: [`default`](../wiki/default) - -#### Defined in - -[src/signers/nip46/backend/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L37) - -___ - -### signer - -• `Readonly` **signer**: [`NDKPrivateKeySigner`](../wiki/NDKPrivateKeySigner) - -#### Defined in - -[src/signers/nip46/backend/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L38) - -## Methods - -### applyToken - -▸ **applyToken**(`pubkey`, `token`): `Promise`<`void`\> - -Overload this method to apply tokens, which can -wrap permission sets to be applied to a pubkey. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `pubkey` | `string` | public key to apply token to | -| `token` | `string` | token to apply | - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/signers/nip46/backend/index.ts:98](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L98) - -___ - -### decrypt - -▸ **decrypt**(`remotePubkey`, `senderUser`, `payload`): `Promise`<`undefined` \| `string`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `remotePubkey` | `string` | -| `senderUser` | [`NDKUser`](../wiki/NDKUser) | -| `payload` | `string` | - -#### Returns - -`Promise`<`undefined` \| `string`\> - -#### Defined in - -[src/signers/nip46/backend/index.ts:127](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L127) - -___ - -### encrypt - -▸ **encrypt**(`remotePubkey`, `recipientUser`, `payload`): `Promise`<`undefined` \| `string`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `remotePubkey` | `string` | -| `recipientUser` | [`NDKUser`](../wiki/NDKUser) | -| `payload` | `string` | - -#### Returns - -`Promise`<`undefined` \| `string`\> - -#### Defined in - -[src/signers/nip46/backend/index.ts:136](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L136) - -___ - -### pubkeyAllowed - -▸ **pubkeyAllowed**(`pubkey`, `method`, `params?`): `Promise`<`boolean`\> - -This method should be overriden by the user to allow or reject incoming -connections. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `pubkey` | `string` | -| `method` | `string` | -| `params?` | `any` | - -#### Returns - -`Promise`<`boolean`\> - -#### Defined in - -[src/signers/nip46/backend/index.ts:169](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L169) - -___ - -### setStrategy - -▸ **setStrategy**(`method`, `strategy`): `void` - -Enables the user to set a custom strategy for handling incoming events. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `method` | `string` | The method to set the strategy for | -| `strategy` | [`IEventHandlingStrategy`](../wiki/IEventHandlingStrategy) | The strategy to set | - -#### Returns - -`void` - -#### Defined in - -[src/signers/nip46/backend/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L88) - -___ - -### signEvent - -▸ **signEvent**(`remotePubkey`, `params`): `Promise`<`undefined` \| [`NDKEvent`](../wiki/NDKEvent)\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `remotePubkey` | `string` | -| `params` | `string`[] | - -#### Returns - -`Promise`<`undefined` \| [`NDKEvent`](../wiki/NDKEvent)\> - -#### Defined in - -[src/signers/nip46/backend/index.ts:145](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L145) - -___ - -### start - -▸ **start**(): `Promise`<`void`\> - -This method starts the backend, which will start listening for incoming -requests. - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/signers/nip46/backend/index.ts:60](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/backend/index.ts#L60) diff --git a/docs/NDKNip46Signer.md b/docs/NDKNip46Signer.md deleted file mode 100644 index ec43ef50..00000000 --- a/docs/NDKNip46Signer.md +++ /dev/null @@ -1,239 +0,0 @@ -# Class: NDKNip46Signer - -This NDKSigner implements NIP-46, which allows remote signing of events. -This class is meant to be used client-side, paired with the NDKNip46Backend or a NIP-46 backend (like Nostr-Connect) - -## Implements - -- [`NDKSigner`](../wiki/NDKSigner) - -## Table of contents - -### Constructors - -- [constructor](../wiki/NDKNip46Signer#constructor) - -### Properties - -- [localSigner](../wiki/NDKNip46Signer#localsigner) -- [remotePubkey](../wiki/NDKNip46Signer#remotepubkey) -- [remoteUser](../wiki/NDKNip46Signer#remoteuser) -- [token](../wiki/NDKNip46Signer#token) - -### Methods - -- [blockUntilReady](../wiki/NDKNip46Signer#blockuntilready) -- [decrypt](../wiki/NDKNip46Signer#decrypt) -- [encrypt](../wiki/NDKNip46Signer#encrypt) -- [sign](../wiki/NDKNip46Signer#sign) -- [user](../wiki/NDKNip46Signer#user) - -## Constructors - -### constructor - -• **new NDKNip46Signer**(`ndk`, `token`, `localSigner?`) - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `ndk` | [`default`](../wiki/default) | The NDK instance to use | -| `token` | `string` | connection token, in the form "npub#otp" | -| `localSigner?` | [`NDKSigner`](../wiki/NDKSigner) | The signer that will be used to request events to be signed | - -#### Defined in - -[src/signers/nip46/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/index.ts#L23) - -• **new NDKNip46Signer**(`ndk`, `remoteNpub`, `localSigner?`) - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `ndk` | [`default`](../wiki/default) | The NDK instance to use | -| `remoteNpub` | `string` | The npub that wants to be published as | -| `localSigner?` | [`NDKSigner`](../wiki/NDKSigner) | The signer that will be used to request events to be signed | - -#### Defined in - -[src/signers/nip46/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/index.ts#L30) - -• **new NDKNip46Signer**(`ndk`, `remotePubkey`, `localSigner?`) - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `ndk` | [`default`](../wiki/default) | The NDK instance to use | -| `remotePubkey` | `string` | The public key of the npub that wants to be published as | -| `localSigner?` | [`NDKSigner`](../wiki/NDKSigner) | The signer that will be used to request events to be signed | - -#### Defined in - -[src/signers/nip46/index.ts:37](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/index.ts#L37) - -## Properties - -### localSigner - -• **localSigner**: [`NDKSigner`](../wiki/NDKSigner) - -#### Defined in - -[src/signers/nip46/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/index.ts#L13) - -___ - -### remotePubkey - -• **remotePubkey**: `string` - -#### Defined in - -[src/signers/nip46/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/index.ts#L11) - -___ - -### remoteUser - -• **remoteUser**: [`NDKUser`](../wiki/NDKUser) - -#### Defined in - -[src/signers/nip46/index.ts:10](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/index.ts#L10) - -___ - -### token - -• **token**: `undefined` \| `string` - -#### Defined in - -[src/signers/nip46/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/index.ts#L12) - -## Methods - -### blockUntilReady - -▸ **blockUntilReady**(): `Promise`<[`NDKUser`](../wiki/NDKUser)\> - -Blocks until the signer is ready and returns the associated NDKUser. - -#### Returns - -`Promise`<[`NDKUser`](../wiki/NDKUser)\> - -A promise that resolves to the NDKUser instance. - -#### Implementation of - -[NDKSigner](../wiki/NDKSigner).[blockUntilReady](../wiki/NDKSigner#blockuntilready) - -#### Defined in - -[src/signers/nip46/index.ts:81](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/index.ts#L81) - -___ - -### decrypt - -▸ **decrypt**(`sender`, `value`): `Promise`<`string`\> - -Decrypts the given value. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `sender` | [`NDKUser`](../wiki/NDKUser) | -| `value` | `string` | - -#### Returns - -`Promise`<`string`\> - -#### Implementation of - -[NDKSigner](../wiki/NDKSigner).[decrypt](../wiki/NDKSigner#decrypt) - -#### Defined in - -[src/signers/nip46/index.ts:141](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/index.ts#L141) - -___ - -### encrypt - -▸ **encrypt**(`recipient`, `value`): `Promise`<`string`\> - -Encrypts the given Nostr event for the given recipient. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `recipient` | [`NDKUser`](../wiki/NDKUser) | The recipient of the encrypted value. | -| `value` | `string` | The value to be encrypted. | - -#### Returns - -`Promise`<`string`\> - -#### Implementation of - -[NDKSigner](../wiki/NDKSigner).[encrypt](../wiki/NDKSigner#encrypt) - -#### Defined in - -[src/signers/nip46/index.ts:119](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/index.ts#L119) - -___ - -### sign - -▸ **sign**(`event`): `Promise`<`string`\> - -Signs the given Nostr event. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `event` | [`NostrEvent`](../wiki/Exports#nostrevent) | The Nostr event to be signed. | - -#### Returns - -`Promise`<`string`\> - -A promise that resolves to the signature of the signed event. - -#### Implementation of - -[NDKSigner](../wiki/NDKSigner).[sign](../wiki/NDKSigner#sign) - -#### Defined in - -[src/signers/nip46/index.ts:164](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/index.ts#L164) - -___ - -### user - -▸ **user**(): `Promise`<[`NDKUser`](../wiki/NDKUser)\> - -Get the user that is being published as - -#### Returns - -`Promise`<[`NDKUser`](../wiki/NDKUser)\> - -#### Implementation of - -[NDKSigner](../wiki/NDKSigner).[user](../wiki/NDKSigner#user) - -#### Defined in - -[src/signers/nip46/index.ts:77](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/index.ts#L77) diff --git a/docs/NDKNostrRpc.md b/docs/NDKNostrRpc.md deleted file mode 100644 index 3d862fdd..00000000 --- a/docs/NDKNostrRpc.md +++ /dev/null @@ -1,134 +0,0 @@ -# Class: NDKNostrRpc - -## Hierarchy - -- `EventEmitter` - - ↳ **`NDKNostrRpc`** - -## Table of contents - -### Constructors - -- [constructor](../wiki/NDKNostrRpc#constructor) - -### Methods - -- [parseEvent](../wiki/NDKNostrRpc#parseevent) -- [sendRequest](../wiki/NDKNostrRpc#sendrequest) -- [sendResponse](../wiki/NDKNostrRpc#sendresponse) -- [subscribe](../wiki/NDKNostrRpc#subscribe) - -## Constructors - -### constructor - -• **new NDKNostrRpc**(`ndk`, `signer`, `debug`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `ndk` | [`default`](../wiki/default) | -| `signer` | [`NDKSigner`](../wiki/NDKSigner) | -| `debug` | `Debugger` | - -#### Overrides - -EventEmitter.constructor - -#### Defined in - -[src/signers/nip46/rpc.ts:24](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L24) - -## Methods - -### parseEvent - -▸ **parseEvent**(`event`): `Promise`<[`NDKRpcRequest`](../wiki/NDKRpcRequest) \| [`NDKRpcResponse`](../wiki/NDKRpcResponse)\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `event` | [`NDKEvent`](../wiki/NDKEvent) | - -#### Returns - -`Promise`<[`NDKRpcRequest`](../wiki/NDKRpcRequest) \| [`NDKRpcResponse`](../wiki/NDKRpcResponse)\> - -#### Defined in - -[src/signers/nip46/rpc.ts:55](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L55) - -___ - -### sendRequest - -▸ **sendRequest**(`remotePubkey`, `method`, `params?`, `kind?`, `cb?`): `Promise`<[`NDKRpcResponse`](../wiki/NDKRpcResponse)\> - -Sends a request. - -#### Parameters - -| Name | Type | Default value | -| :------ | :------ | :------ | -| `remotePubkey` | `string` | `undefined` | -| `method` | `string` | `undefined` | -| `params` | `string`[] | `[]` | -| `kind` | `number` | `24133` | -| `cb?` | (`res`: [`NDKRpcResponse`](../wiki/NDKRpcResponse)) => `void` | `undefined` | - -#### Returns - -`Promise`<[`NDKRpcResponse`](../wiki/NDKRpcResponse)\> - -#### Defined in - -[src/signers/nip46/rpc.ts:97](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L97) - -___ - -### sendResponse - -▸ **sendResponse**(`id`, `remotePubkey`, `result`, `kind?`, `error?`): `Promise`<`void`\> - -#### Parameters - -| Name | Type | Default value | -| :------ | :------ | :------ | -| `id` | `string` | `undefined` | -| `remotePubkey` | `string` | `undefined` | -| `result` | `string` | `undefined` | -| `kind` | `number` | `24133` | -| `error?` | `string` | `undefined` | - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/signers/nip46/rpc.ts:69](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L69) - -___ - -### subscribe - -▸ **subscribe**(`filter`): `Promise`<[`NDKSubscription`](../wiki/NDKSubscription)\> - -Subscribe to a filter. This function will resolve once the subscription is ready. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `filter` | [`NDKFilter`](../wiki/Exports#ndkfilter) | - -#### Returns - -`Promise`<[`NDKSubscription`](../wiki/NDKSubscription)\> - -#### Defined in - -[src/signers/nip46/rpc.ts:34](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L34) diff --git a/docs/NDKPrivateKeySigner.md b/docs/NDKPrivateKeySigner.md deleted file mode 100644 index e0e3331d..00000000 --- a/docs/NDKPrivateKeySigner.md +++ /dev/null @@ -1,192 +0,0 @@ -# Class: NDKPrivateKeySigner - -Interface for NDK signers. - -## Implements - -- [`NDKSigner`](../wiki/NDKSigner) - -## Table of contents - -### Constructors - -- [constructor](../wiki/NDKPrivateKeySigner#constructor) - -### Properties - -- [privateKey](../wiki/NDKPrivateKeySigner#privatekey) - -### Methods - -- [blockUntilReady](../wiki/NDKPrivateKeySigner#blockuntilready) -- [decrypt](../wiki/NDKPrivateKeySigner#decrypt) -- [encrypt](../wiki/NDKPrivateKeySigner#encrypt) -- [sign](../wiki/NDKPrivateKeySigner#sign) -- [user](../wiki/NDKPrivateKeySigner#user) -- [generate](../wiki/NDKPrivateKeySigner#generate) - -## Constructors - -### constructor - -• **new NDKPrivateKeySigner**(`privateKey?`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `privateKey?` | `string` | - -#### Defined in - -[src/signers/private-key/index.ts:11](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/private-key/index.ts#L11) - -## Properties - -### privateKey - -• `Optional` **privateKey**: `string` - -#### Defined in - -[src/signers/private-key/index.ts:9](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/private-key/index.ts#L9) - -## Methods - -### blockUntilReady - -▸ **blockUntilReady**(): `Promise`<[`NDKUser`](../wiki/NDKUser)\> - -Blocks until the signer is ready and returns the associated NDKUser. - -#### Returns - -`Promise`<[`NDKUser`](../wiki/NDKUser)\> - -A promise that resolves to the NDKUser instance. - -#### Implementation of - -[NDKSigner](../wiki/NDKSigner).[blockUntilReady](../wiki/NDKSigner#blockuntilready) - -#### Defined in - -[src/signers/private-key/index.ts:23](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/private-key/index.ts#L23) - -___ - -### decrypt - -▸ **decrypt**(`sender`, `value`): `Promise`<`string`\> - -Decrypts the given value. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `sender` | [`NDKUser`](../wiki/NDKUser) | -| `value` | `string` | - -#### Returns - -`Promise`<`string`\> - -#### Implementation of - -[NDKSigner](../wiki/NDKSigner).[decrypt](../wiki/NDKSigner#decrypt) - -#### Defined in - -[src/signers/private-key/index.ts:52](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/private-key/index.ts#L52) - -___ - -### encrypt - -▸ **encrypt**(`recipient`, `value`): `Promise`<`string`\> - -Encrypts the given Nostr event for the given recipient. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `recipient` | [`NDKUser`](../wiki/NDKUser) | The recipient of the encrypted value. | -| `value` | `string` | The value to be encrypted. | - -#### Returns - -`Promise`<`string`\> - -#### Implementation of - -[NDKSigner](../wiki/NDKSigner).[encrypt](../wiki/NDKSigner#encrypt) - -#### Defined in - -[src/signers/private-key/index.ts:43](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/private-key/index.ts#L43) - -___ - -### sign - -▸ **sign**(`event`): `Promise`<`string`\> - -Signs the given Nostr event. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `event` | [`NostrEvent`](../wiki/Exports#nostrevent) | The Nostr event to be signed. | - -#### Returns - -`Promise`<`string`\> - -A promise that resolves to the signature of the signed event. - -#### Implementation of - -[NDKSigner](../wiki/NDKSigner).[sign](../wiki/NDKSigner#sign) - -#### Defined in - -[src/signers/private-key/index.ts:35](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/private-key/index.ts#L35) - -___ - -### user - -▸ **user**(): `Promise`<[`NDKUser`](../wiki/NDKUser)\> - -Getter for the user property. - -#### Returns - -`Promise`<[`NDKUser`](../wiki/NDKUser)\> - -A promise that resolves to the NDKUser instance. - -#### Implementation of - -[NDKSigner](../wiki/NDKSigner).[user](../wiki/NDKSigner#user) - -#### Defined in - -[src/signers/private-key/index.ts:30](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/private-key/index.ts#L30) - -___ - -### generate - -▸ `Static` **generate**(): [`NDKPrivateKeySigner`](../wiki/NDKPrivateKeySigner) - -#### Returns - -[`NDKPrivateKeySigner`](../wiki/NDKPrivateKeySigner) - -#### Defined in - -[src/signers/private-key/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/private-key/index.ts#L18) diff --git a/docs/NDKRelay.md b/docs/NDKRelay.md deleted file mode 100644 index dce4f591..00000000 --- a/docs/NDKRelay.md +++ /dev/null @@ -1,267 +0,0 @@ -# Class: NDKRelay - -The NDKRelay class represents a connection to a relay. - -**`Emits`** - -NDKRelay#connect - -**`Emits`** - -NDKRelay#disconnect - -**`Emits`** - -NDKRelay#notice - -**`Emits`** - -NDKRelay#event - -**`Emits`** - -NDKRelay#eose - -## Hierarchy - -- `EventEmitter` - - ↳ **`NDKRelay`** - -## Table of contents - -### Constructors - -- [constructor](../wiki/NDKRelay#constructor) - -### Properties - -- [activeSubscriptions](../wiki/NDKRelay#activesubscriptions) -- [complaining](../wiki/NDKRelay#complaining) -- [scores](../wiki/NDKRelay#scores) -- [url](../wiki/NDKRelay#url) - -### Accessors - -- [connectionStats](../wiki/NDKRelay#connectionstats) -- [status](../wiki/NDKRelay#status) - -### Methods - -- [connect](../wiki/NDKRelay#connect) -- [disconnect](../wiki/NDKRelay#disconnect) -- [handleNotice](../wiki/NDKRelay#handlenotice) -- [publish](../wiki/NDKRelay#publish) -- [scoreSlowerEvent](../wiki/NDKRelay#scoreslowerevent) -- [subscribe](../wiki/NDKRelay#subscribe) - -## Constructors - -### constructor - -• **new NDKRelay**(`url`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `url` | `string` | - -#### Overrides - -EventEmitter.constructor - -#### Defined in - -[src/relay/index.ts:66](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L66) - -## Properties - -### activeSubscriptions - -• **activeSubscriptions**: `Set`<[`NDKSubscription`](../wiki/NDKSubscription)\> - -Active subscriptions this relay is connected to - -#### Defined in - -[src/relay/index.ts:64](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L64) - -___ - -### complaining - -• **complaining**: `boolean` = `false` - -#### Defined in - -[src/relay/index.ts:58](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L58) - -___ - -### scores - -• `Readonly` **scores**: `Map`<[`NDKUser`](../wiki/NDKUser), `number`\> - -#### Defined in - -[src/relay/index.ts:53](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L53) - -___ - -### url - -• `Readonly` **url**: `string` - -#### Defined in - -[src/relay/index.ts:52](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L52) - -## Accessors - -### connectionStats - -• `get` **connectionStats**(): [`NDKRelayConnectionStats`](../wiki/NDKRelayConnectionStats) - -Returns the connection stats. - -#### Returns - -[`NDKRelayConnectionStats`](../wiki/NDKRelayConnectionStats) - -#### Defined in - -[src/relay/index.ts:265](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L265) - -___ - -### status - -• `get` **status**(): [`NDKRelayStatus`](../wiki/NDKRelayStatus) - -#### Returns - -[`NDKRelayStatus`](../wiki/NDKRelayStatus) - -#### Defined in - -[src/relay/index.ts:128](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L128) - -## Methods - -### connect - -▸ **connect**(): `Promise`<`void`\> - -Connects to the relay. - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/relay/index.ts:135](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L135) - -___ - -### disconnect - -▸ **disconnect**(): `void` - -Disconnects from the relay. - -#### Returns - -`void` - -#### Defined in - -[src/relay/index.ts:150](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L150) - -___ - -### handleNotice - -▸ **handleNotice**(`notice`): `Promise`<`void`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `notice` | `string` | - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/relay/index.ts:155](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L155) - -___ - -### publish - -▸ **publish**(`event`): `Promise`<`void`\> - -Publishes an event to the relay. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `event` | [`NDKEvent`](../wiki/NDKEvent) | - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/relay/index.ts:211](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L211) - -___ - -### scoreSlowerEvent - -▸ **scoreSlowerEvent**(`timeDiffInMs`): `void` - -Called when this relay has responded with an event but -wasn't the fastest one. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `timeDiffInMs` | `number` | The time difference in ms between the fastest and this relay in milliseconds | - -#### Returns - -`void` - -#### Defined in - -[src/relay/index.ts:231](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L231) - -___ - -### subscribe - -▸ **subscribe**(`subscription`): `Sub` - -Subscribes to a subscription. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `subscription` | [`NDKSubscription`](../wiki/NDKSubscription) | - -#### Returns - -`Sub` - -#### Defined in - -[src/relay/index.ts:175](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L175) diff --git a/docs/NDKRelayConnectionStats.md b/docs/NDKRelayConnectionStats.md deleted file mode 100644 index 1d737063..00000000 --- a/docs/NDKRelayConnectionStats.md +++ /dev/null @@ -1,58 +0,0 @@ -# Interface: NDKRelayConnectionStats - -## Table of contents - -### Properties - -- [attempts](../wiki/NDKRelayConnectionStats#attempts) -- [connectedAt](../wiki/NDKRelayConnectionStats#connectedat) -- [durations](../wiki/NDKRelayConnectionStats#durations) -- [success](../wiki/NDKRelayConnectionStats#success) - -## Properties - -### attempts - -• **attempts**: `number` - -The number of times a connection has been attempted. - -#### Defined in - -[src/relay/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L24) - -___ - -### connectedAt - -• `Optional` **connectedAt**: `number` - -The time the current connection was established in milliseconds. - -#### Defined in - -[src/relay/index.ts:39](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L39) - -___ - -### durations - -• **durations**: `number`[] - -The durations of the last 100 connections in milliseconds. - -#### Defined in - -[src/relay/index.ts:34](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L34) - -___ - -### success - -• **success**: `number` - -The number of times a connection has been successfully established. - -#### Defined in - -[src/relay/index.ts:29](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L29) diff --git a/docs/NDKRelaySet.md b/docs/NDKRelaySet.md deleted file mode 100644 index 757bf473..00000000 --- a/docs/NDKRelaySet.md +++ /dev/null @@ -1,152 +0,0 @@ -# Class: NDKRelaySet - -A relay set is a group of relays. This grouping can be short-living, for a single -REQ or can be long-lasting, for example for the explicit relay list the user -has specified. - -Requests to relays should be sent through this interface. - -## Table of contents - -### Constructors - -- [constructor](../wiki/NDKRelaySet#constructor) - -### Properties - -- [relays](../wiki/NDKRelaySet#relays) - -### Methods - -- [getId](../wiki/NDKRelaySet#getid) -- [publish](../wiki/NDKRelaySet#publish) -- [size](../wiki/NDKRelaySet#size) -- [subscribe](../wiki/NDKRelaySet#subscribe) -- [fromRelayUrls](../wiki/NDKRelaySet#fromrelayurls) - -## Constructors - -### constructor - -• **new NDKRelaySet**(`relays`, `ndk`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `relays` | `Set`<[`NDKRelay`](../wiki/NDKRelay)\> | -| `ndk` | [`default`](../wiki/default) | - -#### Defined in - -[src/relay/sets/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/sets/index.ts#L20) - -## Properties - -### relays - -• `Readonly` **relays**: `Set`<[`NDKRelay`](../wiki/NDKRelay)\> - -#### Defined in - -[src/relay/sets/index.ts:16](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/sets/index.ts#L16) - -## Methods - -### getId - -▸ **getId**(): `string` - -Calculates an ID of this specific combination of relays. - -#### Returns - -`string` - -#### Defined in - -[src/relay/sets/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/sets/index.ts#L56) - -___ - -### publish - -▸ **publish**(`event`): `Promise`<`void`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `event` | [`NDKEvent`](../wiki/NDKEvent) | - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/relay/sets/index.ts:140](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/sets/index.ts#L140) - -___ - -### size - -▸ **size**(): `number` - -#### Returns - -`number` - -#### Defined in - -[src/relay/sets/index.ts:150](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/sets/index.ts#L150) - -___ - -### subscribe - -▸ **subscribe**(`subscription`): [`NDKSubscription`](../wiki/NDKSubscription) - -Add a subscription to this relay set - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `subscription` | [`NDKSubscription`](../wiki/NDKSubscription) | - -#### Returns - -[`NDKSubscription`](../wiki/NDKSubscription) - -#### Defined in - -[src/relay/sets/index.ts:65](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/sets/index.ts#L65) - -___ - -### fromRelayUrls - -▸ `Static` **fromRelayUrls**(`relayUrls`, `ndk`): [`NDKRelaySet`](../wiki/NDKRelaySet) - -Creates a relay set from a list of relay URLs. - -This is useful for testing in development to pass a local relay -to publish methods. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `relayUrls` | `string`[] | list of relay URLs to include in this set | -| `ndk` | [`default`](../wiki/default) | | - -#### Returns - -[`NDKRelaySet`](../wiki/NDKRelaySet) - -NDKRelaySet - -#### Defined in - -[src/relay/sets/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/sets/index.ts#L36) diff --git a/docs/NDKRelayStatus.md b/docs/NDKRelayStatus.md deleted file mode 100644 index 7ede9732..00000000 --- a/docs/NDKRelayStatus.md +++ /dev/null @@ -1,72 +0,0 @@ -# Enumeration: NDKRelayStatus - -## Table of contents - -### Enumeration Members - -- [CONNECTED](../wiki/NDKRelayStatus#connected) -- [CONNECTING](../wiki/NDKRelayStatus#connecting) -- [DISCONNECTED](../wiki/NDKRelayStatus#disconnected) -- [DISCONNECTING](../wiki/NDKRelayStatus#disconnecting) -- [FLAPPING](../wiki/NDKRelayStatus#flapping) -- [RECONNECTING](../wiki/NDKRelayStatus#reconnecting) - -## Enumeration Members - -### CONNECTED - -• **CONNECTED** = ``1`` - -#### Defined in - -[src/relay/index.ts:13](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L13) - -___ - -### CONNECTING - -• **CONNECTING** = ``0`` - -#### Defined in - -[src/relay/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L12) - -___ - -### DISCONNECTED - -• **DISCONNECTED** = ``3`` - -#### Defined in - -[src/relay/index.ts:15](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L15) - -___ - -### DISCONNECTING - -• **DISCONNECTING** = ``2`` - -#### Defined in - -[src/relay/index.ts:14](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L14) - -___ - -### FLAPPING - -• **FLAPPING** = ``5`` - -#### Defined in - -[src/relay/index.ts:17](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L17) - -___ - -### RECONNECTING - -• **RECONNECTING** = ``4`` - -#### Defined in - -[src/relay/index.ts:16](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/relay/index.ts#L16) diff --git a/docs/NDKRpcRequest.md b/docs/NDKRpcRequest.md deleted file mode 100644 index 11f6d695..00000000 --- a/docs/NDKRpcRequest.md +++ /dev/null @@ -1,61 +0,0 @@ -# Interface: NDKRpcRequest - -## Table of contents - -### Properties - -- [event](../wiki/NDKRpcRequest#event) -- [id](../wiki/NDKRpcRequest#id) -- [method](../wiki/NDKRpcRequest#method) -- [params](../wiki/NDKRpcRequest#params) -- [pubkey](../wiki/NDKRpcRequest#pubkey) - -## Properties - -### event - -• **event**: [`NDKEvent`](../wiki/NDKEvent) - -#### Defined in - -[src/signers/nip46/rpc.ts:9](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L9) - -___ - -### id - -• **id**: `string` - -#### Defined in - -[src/signers/nip46/rpc.ts:5](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L5) - -___ - -### method - -• **method**: `string` - -#### Defined in - -[src/signers/nip46/rpc.ts:7](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L7) - -___ - -### params - -• **params**: `string`[] - -#### Defined in - -[src/signers/nip46/rpc.ts:8](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L8) - -___ - -### pubkey - -• **pubkey**: `string` - -#### Defined in - -[src/signers/nip46/rpc.ts:6](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L6) diff --git a/docs/NDKRpcResponse.md b/docs/NDKRpcResponse.md deleted file mode 100644 index 4e0bf02b..00000000 --- a/docs/NDKRpcResponse.md +++ /dev/null @@ -1,50 +0,0 @@ -# Interface: NDKRpcResponse - -## Table of contents - -### Properties - -- [error](../wiki/NDKRpcResponse#error) -- [event](../wiki/NDKRpcResponse#event) -- [id](../wiki/NDKRpcResponse#id) -- [result](../wiki/NDKRpcResponse#result) - -## Properties - -### error - -• `Optional` **error**: `string` - -#### Defined in - -[src/signers/nip46/rpc.ts:15](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L15) - -___ - -### event - -• **event**: [`NDKEvent`](../wiki/NDKEvent) - -#### Defined in - -[src/signers/nip46/rpc.ts:16](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L16) - -___ - -### id - -• **id**: `string` - -#### Defined in - -[src/signers/nip46/rpc.ts:13](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L13) - -___ - -### result - -• **result**: `string` - -#### Defined in - -[src/signers/nip46/rpc.ts:14](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/nip46/rpc.ts#L14) diff --git a/docs/NDKSigner.md b/docs/NDKSigner.md deleted file mode 100644 index bbfdda59..00000000 --- a/docs/NDKSigner.md +++ /dev/null @@ -1,125 +0,0 @@ -# Interface: NDKSigner - -Interface for NDK signers. - -## Implemented by - -- [`NDKNip07Signer`](../wiki/NDKNip07Signer) -- [`NDKNip46Signer`](../wiki/NDKNip46Signer) -- [`NDKPrivateKeySigner`](../wiki/NDKPrivateKeySigner) - -## Table of contents - -### Methods - -- [blockUntilReady](../wiki/NDKSigner#blockuntilready) -- [decrypt](../wiki/NDKSigner#decrypt) -- [encrypt](../wiki/NDKSigner#encrypt) -- [sign](../wiki/NDKSigner#sign) -- [user](../wiki/NDKSigner#user) - -## Methods - -### blockUntilReady - -▸ **blockUntilReady**(): `Promise`<[`NDKUser`](../wiki/NDKUser)\> - -Blocks until the signer is ready and returns the associated NDKUser. - -#### Returns - -`Promise`<[`NDKUser`](../wiki/NDKUser)\> - -A promise that resolves to the NDKUser instance. - -#### Defined in - -[src/signers/index.ts:12](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/index.ts#L12) - -___ - -### decrypt - -▸ **decrypt**(`sender`, `value`): `Promise`<`string`\> - -Decrypts the given value. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `sender` | [`NDKUser`](../wiki/NDKUser) | -| `value` | `string` | - -#### Returns - -`Promise`<`string`\> - -#### Defined in - -[src/signers/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/index.ts#L38) - -___ - -### encrypt - -▸ **encrypt**(`recipient`, `value`): `Promise`<`string`\> - -Encrypts the given Nostr event for the given recipient. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `recipient` | [`NDKUser`](../wiki/NDKUser) | The recipient of the encrypted value. | -| `value` | `string` | The value to be encrypted. | - -#### Returns - -`Promise`<`string`\> - -#### Defined in - -[src/signers/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/index.ts#L32) - -___ - -### sign - -▸ **sign**(`event`): `Promise`<`string`\> - -Signs the given Nostr event. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `event` | [`NostrEvent`](../wiki/Exports#nostrevent) | The Nostr event to be signed. | - -#### Returns - -`Promise`<`string`\> - -A promise that resolves to the signature of the signed event. - -#### Defined in - -[src/signers/index.ts:25](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/index.ts#L25) - -___ - -### user - -▸ **user**(): `Promise`<[`NDKUser`](../wiki/NDKUser)\> - -Getter for the user property. - -#### Returns - -`Promise`<[`NDKUser`](../wiki/NDKUser)\> - -A promise that resolves to the NDKUser instance. - -#### Defined in - -[src/signers/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/signers/index.ts#L18) diff --git a/docs/NDKSubscription.md b/docs/NDKSubscription.md deleted file mode 100644 index 4a2da623..00000000 --- a/docs/NDKSubscription.md +++ /dev/null @@ -1,296 +0,0 @@ -# Class: NDKSubscription - -Represents a subscription to an NDK event stream. - - NDKSubscription#event -Emitted when an event is received by the subscription. - -**`Param`** - -The event received by the subscription. - -**`Param`** - -The relay that received the event. - -**`Param`** - -The subscription that received the event. - - NDKSubscription#event:dup -Emitted when a duplicate event is received by the subscription. - -**`Param`** - -The duplicate event received by the subscription. - -**`Param`** - -The relay that received the event. - -**`Param`** - -The time elapsed since the first time the event was seen. - -**`Param`** - -The subscription that received the event. - - NDKSubscription#eose - Emitted when all relays have reached the end of the event stream. - -**`Param`** - -The subscription that received EOSE. - - NDKSubscription#close - Emitted when the subscription is closed. - -**`Param`** - -The subscription that was closed. - -## Hierarchy - -- `EventEmitter` - - ↳ **`NDKSubscription`** - - ↳↳ [`NDKSubscriptionGroup`](../wiki/NDKSubscriptionGroup) - -## Table of contents - -### Constructors - -- [constructor](../wiki/NDKSubscription#constructor) - -### Properties - -- [eosesSeen](../wiki/NDKSubscription#eosesseen) -- [eventFirstSeen](../wiki/NDKSubscription#eventfirstseen) -- [eventsPerRelay](../wiki/NDKSubscription#eventsperrelay) -- [filter](../wiki/NDKSubscription#filter) -- [ndk](../wiki/NDKSubscription#ndk) -- [opts](../wiki/NDKSubscription#opts) -- [relaySet](../wiki/NDKSubscription#relayset) -- [relaySubscriptions](../wiki/NDKSubscription#relaysubscriptions) -- [subId](../wiki/NDKSubscription#subid) - -### Methods - -- [eoseReceived](../wiki/NDKSubscription#eosereceived) -- [eventReceived](../wiki/NDKSubscription#eventreceived) -- [groupableId](../wiki/NDKSubscription#groupableid) -- [start](../wiki/NDKSubscription#start) -- [stop](../wiki/NDKSubscription#stop) - -## Constructors - -### constructor - -• **new NDKSubscription**(`ndk`, `filter`, `opts?`, `relaySet?`, `subId?`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `ndk` | [`default`](../wiki/default) | -| `filter` | [`NDKFilter`](../wiki/Exports#ndkfilter) | -| `opts?` | [`NDKSubscriptionOptions`](../wiki/NDKSubscriptionOptions) | -| `relaySet?` | [`NDKRelaySet`](../wiki/NDKRelaySet) | -| `subId?` | `string` | - -#### Overrides - -EventEmitter.constructor - -#### Defined in - -[src/subscription/index.ts:108](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L108) - -## Properties - -### eosesSeen - -• **eosesSeen**: `Set`<[`NDKRelay`](../wiki/NDKRelay)\> - -Relays that have sent an EOSE. - -#### Defined in - -[src/subscription/index.ts:101](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L101) - -___ - -### eventFirstSeen - -• **eventFirstSeen**: `Map`<`string`, `number`\> - -Events that have been seen by the subscription, with the time they were first seen. - -#### Defined in - -[src/subscription/index.ts:96](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L96) - -___ - -### eventsPerRelay - -• **eventsPerRelay**: `Map`<[`NDKRelay`](../wiki/NDKRelay), `Set`<`string`\>\> - -Events that have been seen by the subscription per relay. - -#### Defined in - -[src/subscription/index.ts:106](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L106) - -___ - -### filter - -• `Readonly` **filter**: [`NDKFilter`](../wiki/Exports#ndkfilter) - -#### Defined in - -[src/subscription/index.ts:86](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L86) - -___ - -### ndk - -• **ndk**: [`default`](../wiki/default) - -#### Defined in - -[src/subscription/index.ts:89](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L89) - -___ - -### opts - -• `Readonly` **opts**: [`NDKSubscriptionOptions`](../wiki/NDKSubscriptionOptions) - -#### Defined in - -[src/subscription/index.ts:87](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L87) - -___ - -### relaySet - -• `Optional` **relaySet**: [`NDKRelaySet`](../wiki/NDKRelaySet) - -#### Defined in - -[src/subscription/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L88) - -___ - -### relaySubscriptions - -• **relaySubscriptions**: `Map`<[`NDKRelay`](../wiki/NDKRelay), `Sub`\> - -#### Defined in - -[src/subscription/index.ts:90](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L90) - -___ - -### subId - -• `Readonly` **subId**: `string` - -#### Defined in - -[src/subscription/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L85) - -## Methods - -### eoseReceived - -▸ **eoseReceived**(`relay`): `void` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `relay` | [`NDKRelay`](../wiki/NDKRelay) | - -#### Returns - -`void` - -#### Defined in - -[src/subscription/index.ts:298](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L298) - -___ - -### eventReceived - -▸ **eventReceived**(`event`, `relay`, `fromCache?`): `void` - -Called when an event is received from a relay or the cache - -#### Parameters - -| Name | Type | Default value | Description | -| :------ | :------ | :------ | :------ | -| `event` | [`NDKEvent`](../wiki/NDKEvent) | `undefined` | | -| `relay` | `undefined` \| [`NDKRelay`](../wiki/NDKRelay) | `undefined` | | -| `fromCache` | `boolean` | `false` | Whether the event was received from the cache | - -#### Returns - -`void` - -#### Defined in - -[src/subscription/index.ts:259](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L259) - -___ - -### groupableId - -▸ **groupableId**(): ``null`` \| `string` - -Calculates the groupable ID for this subscription. - -#### Returns - -``null`` \| `string` - -The groupable ID, or null if the subscription is not groupable. - -#### Defined in - -[src/subscription/index.ts:140](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L140) - -___ - -### start - -▸ **start**(): `Promise`<`void`\> - -Start the subscription. This is the main method that should be called -after creating a subscription. - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/subscription/index.ts:195](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L195) - -___ - -### stop - -▸ **stop**(): `void` - -#### Returns - -`void` - -#### Defined in - -[src/subscription/index.ts:222](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L222) diff --git a/docs/NDKSubscriptionCacheUsage.md b/docs/NDKSubscriptionCacheUsage.md deleted file mode 100644 index ce6998f2..00000000 --- a/docs/NDKSubscriptionCacheUsage.md +++ /dev/null @@ -1,50 +0,0 @@ -# Enumeration: NDKSubscriptionCacheUsage - -## Table of contents - -### Enumeration Members - -- [CACHE\_FIRST](../wiki/NDKSubscriptionCacheUsage#cache_first) -- [ONLY\_CACHE](../wiki/NDKSubscriptionCacheUsage#only_cache) -- [ONLY\_RELAY](../wiki/NDKSubscriptionCacheUsage#only_relay) -- [PARALLEL](../wiki/NDKSubscriptionCacheUsage#parallel) - -## Enumeration Members - -### CACHE\_FIRST - -• **CACHE\_FIRST** = ``"CACHE_FIRST"`` - -#### Defined in - -[src/subscription/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L21) - -___ - -### ONLY\_CACHE - -• **ONLY\_CACHE** = ``"ONLY_CACHE"`` - -#### Defined in - -[src/subscription/index.ts:18](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L18) - -___ - -### ONLY\_RELAY - -• **ONLY\_RELAY** = ``"ONLY_RELAY"`` - -#### Defined in - -[src/subscription/index.ts:27](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L27) - -___ - -### PARALLEL - -• **PARALLEL** = ``"PARALLEL"`` - -#### Defined in - -[src/subscription/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L24) diff --git a/docs/NDKSubscriptionGroup.md b/docs/NDKSubscriptionGroup.md deleted file mode 100644 index f3e85de8..00000000 --- a/docs/NDKSubscriptionGroup.md +++ /dev/null @@ -1,303 +0,0 @@ -# Class: NDKSubscriptionGroup - -Represents a group of subscriptions. - -Events emitted from the group will be emitted from each subscription. - -## Hierarchy - -- [`NDKSubscription`](../wiki/NDKSubscription) - - ↳ **`NDKSubscriptionGroup`** - -## Table of contents - -### Constructors - -- [constructor](../wiki/NDKSubscriptionGroup#constructor) - -### Properties - -- [eosesSeen](../wiki/NDKSubscriptionGroup#eosesseen) -- [eventFirstSeen](../wiki/NDKSubscriptionGroup#eventfirstseen) -- [eventsPerRelay](../wiki/NDKSubscriptionGroup#eventsperrelay) -- [filter](../wiki/NDKSubscriptionGroup#filter) -- [ndk](../wiki/NDKSubscriptionGroup#ndk) -- [opts](../wiki/NDKSubscriptionGroup#opts) -- [relaySet](../wiki/NDKSubscriptionGroup#relayset) -- [relaySubscriptions](../wiki/NDKSubscriptionGroup#relaysubscriptions) -- [subId](../wiki/NDKSubscriptionGroup#subid) - -### Methods - -- [eoseReceived](../wiki/NDKSubscriptionGroup#eosereceived) -- [eventReceived](../wiki/NDKSubscriptionGroup#eventreceived) -- [groupableId](../wiki/NDKSubscriptionGroup#groupableid) -- [start](../wiki/NDKSubscriptionGroup#start) -- [stop](../wiki/NDKSubscriptionGroup#stop) - -## Constructors - -### constructor - -• **new NDKSubscriptionGroup**(`ndk`, `subscriptions`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `ndk` | [`default`](../wiki/default) | -| `subscriptions` | [`NDKSubscription`](../wiki/NDKSubscription)[] | - -#### Overrides - -[NDKSubscription](../wiki/NDKSubscription).[constructor](../wiki/NDKSubscription#constructor) - -#### Defined in - -[src/subscription/index.ts:335](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L335) - -## Properties - -### eosesSeen - -• **eosesSeen**: `Set`<[`NDKRelay`](../wiki/NDKRelay)\> - -Relays that have sent an EOSE. - -#### Inherited from - -[NDKSubscription](../wiki/NDKSubscription).[eosesSeen](../wiki/NDKSubscription#eosesseen) - -#### Defined in - -[src/subscription/index.ts:101](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L101) - -___ - -### eventFirstSeen - -• **eventFirstSeen**: `Map`<`string`, `number`\> - -Events that have been seen by the subscription, with the time they were first seen. - -#### Inherited from - -[NDKSubscription](../wiki/NDKSubscription).[eventFirstSeen](../wiki/NDKSubscription#eventfirstseen) - -#### Defined in - -[src/subscription/index.ts:96](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L96) - -___ - -### eventsPerRelay - -• **eventsPerRelay**: `Map`<[`NDKRelay`](../wiki/NDKRelay), `Set`<`string`\>\> - -Events that have been seen by the subscription per relay. - -#### Inherited from - -[NDKSubscription](../wiki/NDKSubscription).[eventsPerRelay](../wiki/NDKSubscription#eventsperrelay) - -#### Defined in - -[src/subscription/index.ts:106](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L106) - -___ - -### filter - -• `Readonly` **filter**: [`NDKFilter`](../wiki/Exports#ndkfilter) - -#### Inherited from - -[NDKSubscription](../wiki/NDKSubscription).[filter](../wiki/NDKSubscription#filter) - -#### Defined in - -[src/subscription/index.ts:86](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L86) - -___ - -### ndk - -• **ndk**: [`default`](../wiki/default) - -#### Inherited from - -[NDKSubscription](../wiki/NDKSubscription).[ndk](../wiki/NDKSubscription#ndk) - -#### Defined in - -[src/subscription/index.ts:89](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L89) - -___ - -### opts - -• `Readonly` **opts**: [`NDKSubscriptionOptions`](../wiki/NDKSubscriptionOptions) - -#### Inherited from - -[NDKSubscription](../wiki/NDKSubscription).[opts](../wiki/NDKSubscription#opts) - -#### Defined in - -[src/subscription/index.ts:87](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L87) - -___ - -### relaySet - -• `Optional` **relaySet**: [`NDKRelaySet`](../wiki/NDKRelaySet) - -#### Inherited from - -[NDKSubscription](../wiki/NDKSubscription).[relaySet](../wiki/NDKSubscription#relayset) - -#### Defined in - -[src/subscription/index.ts:88](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L88) - -___ - -### relaySubscriptions - -• **relaySubscriptions**: `Map`<[`NDKRelay`](../wiki/NDKRelay), `Sub`\> - -#### Inherited from - -[NDKSubscription](../wiki/NDKSubscription).[relaySubscriptions](../wiki/NDKSubscription#relaysubscriptions) - -#### Defined in - -[src/subscription/index.ts:90](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L90) - -___ - -### subId - -• `Readonly` **subId**: `string` - -#### Inherited from - -[NDKSubscription](../wiki/NDKSubscription).[subId](../wiki/NDKSubscription#subid) - -#### Defined in - -[src/subscription/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L85) - -## Methods - -### eoseReceived - -▸ **eoseReceived**(`relay`): `void` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `relay` | [`NDKRelay`](../wiki/NDKRelay) | - -#### Returns - -`void` - -#### Inherited from - -[NDKSubscription](../wiki/NDKSubscription).[eoseReceived](../wiki/NDKSubscription#eosereceived) - -#### Defined in - -[src/subscription/index.ts:298](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L298) - -___ - -### eventReceived - -▸ **eventReceived**(`event`, `relay`, `fromCache?`): `void` - -Called when an event is received from a relay or the cache - -#### Parameters - -| Name | Type | Default value | Description | -| :------ | :------ | :------ | :------ | -| `event` | [`NDKEvent`](../wiki/NDKEvent) | `undefined` | | -| `relay` | `undefined` \| [`NDKRelay`](../wiki/NDKRelay) | `undefined` | | -| `fromCache` | `boolean` | `false` | Whether the event was received from the cache | - -#### Returns - -`void` - -#### Inherited from - -[NDKSubscription](../wiki/NDKSubscription).[eventReceived](../wiki/NDKSubscription#eventreceived) - -#### Defined in - -[src/subscription/index.ts:259](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L259) - -___ - -### groupableId - -▸ **groupableId**(): ``null`` \| `string` - -Calculates the groupable ID for this subscription. - -#### Returns - -``null`` \| `string` - -The groupable ID, or null if the subscription is not groupable. - -#### Inherited from - -[NDKSubscription](../wiki/NDKSubscription).[groupableId](../wiki/NDKSubscription#groupableid) - -#### Defined in - -[src/subscription/index.ts:140](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L140) - -___ - -### start - -▸ **start**(): `Promise`<`void`\> - -Start the subscription. This is the main method that should be called -after creating a subscription. - -#### Returns - -`Promise`<`void`\> - -#### Inherited from - -[NDKSubscription](../wiki/NDKSubscription).[start](../wiki/NDKSubscription#start) - -#### Defined in - -[src/subscription/index.ts:195](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L195) - -___ - -### stop - -▸ **stop**(): `void` - -#### Returns - -`void` - -#### Inherited from - -[NDKSubscription](../wiki/NDKSubscription).[stop](../wiki/NDKSubscription#stop) - -#### Defined in - -[src/subscription/index.ts:222](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L222) diff --git a/docs/NDKSubscriptionOptions.md b/docs/NDKSubscriptionOptions.md deleted file mode 100644 index c1ce7060..00000000 --- a/docs/NDKSubscriptionOptions.md +++ /dev/null @@ -1,74 +0,0 @@ -# Interface: NDKSubscriptionOptions - -## Table of contents - -### Properties - -- [cacheUsage](../wiki/NDKSubscriptionOptions#cacheusage) -- [closeOnEose](../wiki/NDKSubscriptionOptions#closeoneose) -- [groupable](../wiki/NDKSubscriptionOptions#groupable) -- [groupableDelay](../wiki/NDKSubscriptionOptions#groupabledelay) -- [subId](../wiki/NDKSubscriptionOptions#subid) - -## Properties - -### cacheUsage - -• `Optional` **cacheUsage**: [`NDKSubscriptionCacheUsage`](../wiki/NDKSubscriptionCacheUsage) - -#### Defined in - -[src/subscription/index.ts:32](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L32) - -___ - -### closeOnEose - -• **closeOnEose**: `boolean` - -#### Defined in - -[src/subscription/index.ts:31](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L31) - -___ - -### groupable - -• `Optional` **groupable**: `boolean` - -Groupable subscriptions are created with a slight time -delayed to allow similar filters to be grouped together. - -#### Defined in - -[src/subscription/index.ts:38](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L38) - -___ - -### groupableDelay - -• `Optional` **groupableDelay**: `number` - -The delay to use when grouping subscriptions, specified in milliseconds. - -**`Default`** - -```ts -100 -``` - -#### Defined in - -[src/subscription/index.ts:44](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L44) - -___ - -### subId - -• `Optional` **subId**: `string` - -The subscription ID to use for the subscription. - -#### Defined in - -[src/subscription/index.ts:49](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/subscription/index.ts#L49) diff --git a/docs/NDKUser.md b/docs/NDKUser.md deleted file mode 100644 index f626c984..00000000 --- a/docs/NDKUser.md +++ /dev/null @@ -1,191 +0,0 @@ -# Class: NDKUser - -Represents a pubkey. - -## Table of contents - -### Constructors - -- [constructor](../wiki/NDKUser#constructor) - -### Properties - -- [follows](../wiki/NDKUser#follows) -- [ndk](../wiki/NDKUser#ndk) -- [npub](../wiki/NDKUser#npub) -- [profile](../wiki/NDKUser#profile) -- [relayUrls](../wiki/NDKUser#relayurls) - -### Methods - -- [fetchProfile](../wiki/NDKUser#fetchprofile) -- [hexpubkey](../wiki/NDKUser#hexpubkey) -- [relayList](../wiki/NDKUser#relaylist) -- [tagReference](../wiki/NDKUser#tagreference) -- [fromNip05](../wiki/NDKUser#fromnip05) - -## Constructors - -### constructor - -• **new NDKUser**(`opts`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `opts` | `NDKUserParams` | - -#### Defined in - -[src/user/index.ts:24](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/index.ts#L24) - -## Properties - -### follows - -• **follows**: (...`args`: []) => `Promise`<`Set`<[`NDKUser`](../wiki/NDKUser)\>\> - -#### Type declaration - -▸ (`...args`): `Promise`<`Set`<[`NDKUser`](../wiki/NDKUser)\>\> - -Returns a set of users that this user follows. - -##### Parameters - -| Name | Type | -| :------ | :------ | -| `...args` | [] | - -##### Returns - -`Promise`<`Set`<[`NDKUser`](../wiki/NDKUser)\>\> - -#### Defined in - -[src/user/index.ts:83](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/index.ts#L83) - -___ - -### ndk - -• **ndk**: `undefined` \| [`default`](../wiki/default) - -#### Defined in - -[src/user/index.ts:19](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/index.ts#L19) - -___ - -### npub - -• `Readonly` **npub**: `string` = `""` - -#### Defined in - -[src/user/index.ts:21](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/index.ts#L21) - -___ - -### profile - -• `Optional` **profile**: [`NDKUserProfile`](../wiki/NDKUserProfile) - -#### Defined in - -[src/user/index.ts:20](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/index.ts#L20) - -___ - -### relayUrls - -• `Readonly` **relayUrls**: `string`[] = `[]` - -#### Defined in - -[src/user/index.ts:22](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/index.ts#L22) - -## Methods - -### fetchProfile - -▸ **fetchProfile**(`opts?`): `Promise`<``null`` \| `Set`<[`NDKEvent`](../wiki/NDKEvent)\>\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `opts?` | [`NDKFilterOptions`](../wiki/NDKFilterOptions) | - -#### Returns - -`Promise`<``null`` \| `Set`<[`NDKEvent`](../wiki/NDKEvent)\>\> - -#### Defined in - -[src/user/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/index.ts#L51) - -___ - -### hexpubkey - -▸ **hexpubkey**(): `string` - -#### Returns - -`string` - -#### Defined in - -[src/user/index.ts:47](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/index.ts#L47) - -___ - -### relayList - -▸ **relayList**(): `Promise`<`Set`<[`NDKEvent`](../wiki/NDKEvent)\>\> - -#### Returns - -`Promise`<`Set`<[`NDKEvent`](../wiki/NDKEvent)\>\> - -#### Defined in - -[src/user/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/index.ts#L85) - -___ - -### tagReference - -▸ **tagReference**(): [`NDKTag`](../wiki/Exports#ndktag) - -Get the tag that can be used to reference this user in an event - -#### Returns - -[`NDKTag`](../wiki/Exports#ndktag) - -#### Defined in - -[src/user/index.ts:104](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/index.ts#L104) - -___ - -### fromNip05 - -▸ `Static` **fromNip05**(`nip05Id`): `Promise`<`undefined` \| [`NDKUser`](../wiki/NDKUser)\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `nip05Id` | `string` | - -#### Returns - -`Promise`<`undefined` \| [`NDKUser`](../wiki/NDKUser)\> - -#### Defined in - -[src/user/index.ts:36](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/index.ts#L36) diff --git a/docs/NDKUserProfile.md b/docs/NDKUserProfile.md deleted file mode 100644 index ce2a27d8..00000000 --- a/docs/NDKUserProfile.md +++ /dev/null @@ -1,116 +0,0 @@ -# Interface: NDKUserProfile - -## Table of contents - -### Properties - -- [about](../wiki/NDKUserProfile#about) -- [banner](../wiki/NDKUserProfile#banner) -- [bio](../wiki/NDKUserProfile#bio) -- [displayName](../wiki/NDKUserProfile#displayname) -- [image](../wiki/NDKUserProfile#image) -- [lud06](../wiki/NDKUserProfile#lud06) -- [lud16](../wiki/NDKUserProfile#lud16) -- [name](../wiki/NDKUserProfile#name) -- [nip05](../wiki/NDKUserProfile#nip05) -- [zapService](../wiki/NDKUserProfile#zapservice) - -## Properties - -### about - -• `Optional` **about**: `string` - -#### Defined in - -[src/user/profile.ts:12](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/profile.ts#L12) - -___ - -### banner - -• `Optional` **banner**: `string` - -#### Defined in - -[src/user/profile.ts:7](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/profile.ts#L7) - -___ - -### bio - -• `Optional` **bio**: `string` - -#### Defined in - -[src/user/profile.ts:8](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/profile.ts#L8) - -___ - -### displayName - -• `Optional` **displayName**: `string` - -#### Defined in - -[src/user/profile.ts:5](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/profile.ts#L5) - -___ - -### image - -• `Optional` **image**: `string` - -#### Defined in - -[src/user/profile.ts:6](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/profile.ts#L6) - -___ - -### lud06 - -• `Optional` **lud06**: `string` - -#### Defined in - -[src/user/profile.ts:10](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/profile.ts#L10) - -___ - -### lud16 - -• `Optional` **lud16**: `string` - -#### Defined in - -[src/user/profile.ts:11](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/profile.ts#L11) - -___ - -### name - -• `Optional` **name**: `string` - -#### Defined in - -[src/user/profile.ts:4](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/profile.ts#L4) - -___ - -### nip05 - -• `Optional` **nip05**: `string` - -#### Defined in - -[src/user/profile.ts:9](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/profile.ts#L9) - -___ - -### zapService - -• `Optional` **zapService**: `string` - -#### Defined in - -[src/user/profile.ts:13](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/user/profile.ts#L13) diff --git a/docs/NDKZapInvoice.md b/docs/NDKZapInvoice.md deleted file mode 100644 index 82df2443..00000000 --- a/docs/NDKZapInvoice.md +++ /dev/null @@ -1,83 +0,0 @@ -# Interface: NDKZapInvoice - -## Table of contents - -### Properties - -- [amount](../wiki/NDKZapInvoice#amount) -- [comment](../wiki/NDKZapInvoice#comment) -- [id](../wiki/NDKZapInvoice#id) -- [zapped](../wiki/NDKZapInvoice#zapped) -- [zappedEvent](../wiki/NDKZapInvoice#zappedevent) -- [zappee](../wiki/NDKZapInvoice#zappee) -- [zapper](../wiki/NDKZapInvoice#zapper) - -## Properties - -### amount - -• **amount**: `number` - -#### Defined in - -[src/zap/invoice.ts:10](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/zap/invoice.ts#L10) - -___ - -### comment - -• `Optional` **comment**: `string` - -#### Defined in - -[src/zap/invoice.ts:11](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/zap/invoice.ts#L11) - -___ - -### id - -• `Optional` **id**: `string` - -#### Defined in - -[src/zap/invoice.ts:5](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/zap/invoice.ts#L5) - -___ - -### zapped - -• **zapped**: `string` - -#### Defined in - -[src/zap/invoice.ts:8](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/zap/invoice.ts#L8) - -___ - -### zappedEvent - -• `Optional` **zappedEvent**: `string` - -#### Defined in - -[src/zap/invoice.ts:9](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/zap/invoice.ts#L9) - -___ - -### zappee - -• **zappee**: `string` - -#### Defined in - -[src/zap/invoice.ts:7](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/zap/invoice.ts#L7) - -___ - -### zapper - -• **zapper**: `string` - -#### Defined in - -[src/zap/invoice.ts:6](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/zap/invoice.ts#L6) diff --git a/docs/_Sidebar.md b/docs/_Sidebar.md deleted file mode 100644 index 98840625..00000000 --- a/docs/_Sidebar.md +++ /dev/null @@ -1,4 +0,0 @@ -## NDK - -- [Home](../wiki/Home) -- [Exports](../wiki/Exports) diff --git a/docs/default.md b/docs/default.md deleted file mode 100644 index 921e4666..00000000 --- a/docs/default.md +++ /dev/null @@ -1,286 +0,0 @@ -# Class: default - -## Hierarchy - -- `EventEmitter` - - ↳ **`default`** - -## Table of contents - -### Constructors - -- [constructor](../wiki/default#constructor) - -### Properties - -- [cacheAdapter](../wiki/default#cacheadapter) -- [debug](../wiki/default#debug) -- [delayedSubscriptions](../wiki/default#delayedsubscriptions) -- [devWriteRelaySet](../wiki/default#devwriterelayset) -- [pool](../wiki/default#pool) -- [signer](../wiki/default#signer) - -### Methods - -- [assertSigner](../wiki/default#assertsigner) -- [connect](../wiki/default#connect) -- [fetchEvent](../wiki/default#fetchevent) -- [fetchEvents](../wiki/default#fetchevents) -- [getUser](../wiki/default#getuser) -- [publish](../wiki/default#publish) -- [subscribe](../wiki/default#subscribe) - -## Constructors - -### constructor - -• **new default**(`opts?`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `opts` | [`NDKConstructorParams`](../wiki/NDKConstructorParams) | - -#### Overrides - -EventEmitter.constructor - -#### Defined in - -[src/index.ts:56](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L56) - -## Properties - -### cacheAdapter - -• `Optional` **cacheAdapter**: [`NDKCacheAdapter`](../wiki/NDKCacheAdapter) - -#### Defined in - -[src/index.ts:50](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L50) - -___ - -### debug - -• **debug**: `Debugger` - -#### Defined in - -[src/index.ts:51](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L51) - -___ - -### delayedSubscriptions - -• **delayedSubscriptions**: `Map`<`string`, [`NDKSubscription`](../wiki/NDKSubscription)[]\> - -#### Defined in - -[src/index.ts:54](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L54) - -___ - -### devWriteRelaySet - -• `Optional` **devWriteRelaySet**: [`NDKRelaySet`](../wiki/NDKRelaySet) - -#### Defined in - -[src/index.ts:52](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L52) - -___ - -### pool - -• **pool**: `NDKPool` - -#### Defined in - -[src/index.ts:48](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L48) - -___ - -### signer - -• `Optional` **signer**: [`NDKSigner`](../wiki/NDKSigner) - -#### Defined in - -[src/index.ts:49](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L49) - -## Methods - -### assertSigner - -▸ **assertSigner**(): `Promise`<`void`\> - -Ensures that a signer is available to sign an event. - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/index.ts:192](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L192) - -___ - -### connect - -▸ **connect**(`timeoutMs?`): `Promise`<`void`\> - -Connect to relays with optional timeout. -If the timeout is reached, the connection will be continued to be established in the background. - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `timeoutMs?` | `number` | - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/index.ts:74](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L74) - -___ - -### fetchEvent - -▸ **fetchEvent**(`id`): `Promise`<``null`` \| [`NDKEvent`](../wiki/NDKEvent)\> - -Fetch a single event - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `id` | `string` | - -#### Returns - -`Promise`<``null`` \| [`NDKEvent`](../wiki/NDKEvent)\> - -#### Defined in - -[src/index.ts:130](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L130) - -▸ **fetchEvent**(`filter`, `opts`): `Promise`<``null`` \| [`NDKEvent`](../wiki/NDKEvent)\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `filter` | [`NDKFilter`](../wiki/Exports#ndkfilter) | -| `opts` | [`NDKFilterOptions`](../wiki/NDKFilterOptions) | - -#### Returns - -`Promise`<``null`` \| [`NDKEvent`](../wiki/NDKEvent)\> - -#### Defined in - -[src/index.ts:131](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L131) - -___ - -### fetchEvents - -▸ **fetchEvents**(`filter`, `opts?`): `Promise`<`Set`<[`NDKEvent`](../wiki/NDKEvent)\>\> - -Fetch events - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `filter` | [`NDKFilter`](../wiki/Exports#ndkfilter) | -| `opts` | [`NDKFilterOptions`](../wiki/NDKFilterOptions) | - -#### Returns - -`Promise`<`Set`<[`NDKEvent`](../wiki/NDKEvent)\>\> - -#### Defined in - -[src/index.ts:163](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L163) - -___ - -### getUser - -▸ **getUser**(`opts`): [`NDKUser`](../wiki/NDKUser) - -Get a NDKUser object - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `opts` | [`GetUserParams`](../wiki/GetUserParams) | - -#### Returns - -[`NDKUser`](../wiki/NDKUser) - -#### Defined in - -[src/index.ts:85](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L85) - -___ - -### publish - -▸ **publish**(`event`, `relaySet?`): `Promise`<`void`\> - -Publish an event - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `event` | [`NDKEvent`](../wiki/NDKEvent) | event to publish | -| `relaySet?` | [`NDKRelaySet`](../wiki/NDKRelaySet) | - | - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[src/index.ts:118](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L118) - -___ - -### subscribe - -▸ **subscribe**(`filter`, `opts?`, `relaySet?`, `autoStart?`): [`NDKSubscription`](../wiki/NDKSubscription) - -Create a new subscription. Subscriptions automatically start and finish when all relays -on the set send back an EOSE. (set `opts.closeOnEose` to `false` in order avoid this) - -#### Parameters - -| Name | Type | Default value | Description | -| :------ | :------ | :------ | :------ | -| `filter` | [`NDKFilter`](../wiki/Exports#ndkfilter) | `undefined` | | -| `opts?` | [`NDKSubscriptionOptions`](../wiki/NDKSubscriptionOptions) | `undefined` | | -| `relaySet?` | [`NDKRelaySet`](../wiki/NDKRelaySet) | `undefined` | explicit relay set to use | -| `autoStart` | `boolean` | `true` | automatically start the subscription | - -#### Returns - -[`NDKSubscription`](../wiki/NDKSubscription) - -NDKSubscription - -#### Defined in - -[src/index.ts:101](https://github.com/nostr-dev-kit/ndk/blob/1f6f222/src/index.ts#L101) diff --git a/package.json b/package.json index 59b8befd..2d519dd2 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,6 @@ "author": "pablof7z", "license": "MIT", "devDependencies": { - "@appium/typedoc-plugin-appium": "^0.6.5", "@types/debug": "^4.1.7", "@types/jest": "^29.5.0", "@types/node": "^14.11.2", @@ -46,9 +45,8 @@ "prettier-plugin-organize-imports": "^3.2.2", "ts-jest": "^29.1.0", "tsup": "^6.7.0", - "typedoc": "^0.24.6", - "typedoc-github-wiki-theme": "^1.1.0", - "typedoc-plugin-markdown": "^3.15.3", + "typedoc": "^0.24.8", + "typedoc-plugin-rename-defaults": "^0.6.5", "typescript": "^5.0.4" }, "dependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5389a1af..ac7962e4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -64,9 +64,6 @@ dependencies: version: 0.0.3 devDependencies: - '@appium/typedoc-plugin-appium': - specifier: ^0.6.5 - version: 0.6.5(appium@2.0.0-rc.3)(typedoc-plugin-markdown@3.15.3)(typedoc-plugin-resolve-crossmodule-references@0.3.3)(typedoc@0.24.6)(typescript@5.0.4) '@types/debug': specifier: ^4.1.7 version: 4.1.7 @@ -92,14 +89,11 @@ devDependencies: specifier: ^6.7.0 version: 6.7.0(typescript@5.0.4) typedoc: - specifier: ^0.24.6 - version: 0.24.6(typescript@5.0.4) - typedoc-github-wiki-theme: - specifier: ^1.1.0 - version: 1.1.0(typedoc-plugin-markdown@3.15.3)(typedoc@0.24.6) - typedoc-plugin-markdown: - specifier: ^3.15.3 - version: 3.15.3(typedoc@0.24.6) + specifier: ^0.24.8 + version: 0.24.8(typescript@5.0.4) + typedoc-plugin-rename-defaults: + specifier: ^0.6.5 + version: 0.6.5(typedoc@0.24.8) typescript: specifier: ^5.0.4 version: 5.0.4 @@ -114,222 +108,6 @@ packages: '@jridgewell/trace-mapping': 0.3.18 dev: true - /@appium/base-driver@9.3.13(debug@4.3.4): - resolution: {integrity: sha512-DLN5SVevA9/RcBVDJb4Sbl6RIAuvWj9/FXAX2SQ3KSC/ktTVmV9LtWa6uZOM4VoQZPC5j52aAHAn3vWDSfPpBA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=8'} - dependencies: - '@appium/support': 4.1.0(debug@4.3.4) - '@appium/types': 0.13.0 - '@colors/colors': 1.5.0 - '@types/async-lock': 1.4.0 - '@types/bluebird': 3.5.38 - '@types/express': 4.17.17 - '@types/lodash': 4.14.195 - '@types/method-override': 0.0.32 - '@types/serve-favicon': 2.5.4 - async-lock: 1.4.0 - asyncbox: 2.9.4 - axios: 1.4.0(debug@4.3.4) - bluebird: 3.7.2 - body-parser: 1.20.2 - es6-error: 4.1.1 - express: 4.18.2 - http-status-codes: 2.2.0 - lodash: 4.17.21 - lru-cache: 7.18.3 - method-override: 3.0.0 - morgan: 1.10.0 - serve-favicon: 2.5.0 - source-map-support: 0.5.21 - type-fest: 3.11.1 - validate.js: 0.13.1 - transitivePeerDependencies: - - debug - - supports-color - dev: true - - /@appium/base-plugin@2.2.13(debug@4.3.4): - resolution: {integrity: sha512-a71tHde5Tm+nmRSRgKqn52YAlnW7HGKGcpmA0KsBZoAXtvIWtzX5KCurmXDbgL3Zvj1IlKPiZA3b+pLcYSt9Kg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=8'} - dependencies: - '@appium/base-driver': 9.3.13(debug@4.3.4) - '@appium/support': 4.1.0(debug@4.3.4) - transitivePeerDependencies: - - debug - - supports-color - dev: true - - /@appium/docutils@0.4.2(appium@2.0.0-rc.3)(debug@4.3.4): - resolution: {integrity: sha512-3CBEV3dh13xQfLQAZCN3KDqvMjkHdiD3wr8lM3oXP95jQDjjcvXHc9XOU0OAPxMlELfwVk67MqUtI/eSEsUabQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=8'} - hasBin: true - dependencies: - '@appium/support': 4.1.0(debug@4.3.4) - '@appium/tsconfig': 0.3.0 - '@appium/typedoc-plugin-appium': 0.6.5(appium@2.0.0-rc.3)(typedoc-plugin-markdown@3.14.0)(typedoc-plugin-resolve-crossmodule-references@0.3.3)(typedoc@0.23.28)(typescript@4.9.5) - '@sliphua/lilconfig-ts-loader': 3.2.2(lilconfig@2.1.0)(typescript@4.9.5) - '@types/which': 3.0.0 - chalk: 4.1.2 - consola: 2.15.3 - diff: 5.1.0 - figures: 3.2.0 - find-up: 5.0.0 - json5: 2.2.3 - lilconfig: 2.1.0 - lodash: 4.17.21 - log-symbols: 4.1.0 - pkg-dir: 5.0.0 - read-pkg: 5.2.0 - semver: 7.5.1 - source-map-support: 0.5.21 - teen_process: 2.0.2 - type-fest: 3.11.1 - typedoc: 0.23.28(typescript@4.9.5) - typedoc-plugin-markdown: 3.14.0(typedoc@0.23.28) - typedoc-plugin-resolve-crossmodule-references: 0.3.3(typedoc@0.23.28) - typescript: 4.9.5 - yaml: 2.3.1 - yargs: 17.7.2 - yargs-parser: 21.1.1 - transitivePeerDependencies: - - appium - - debug - dev: true - - /@appium/schema@0.3.0: - resolution: {integrity: sha512-onzP7QoKeAyFqb/MkzDSB6GQfMg/Aq77ZvnICLHBl66WXU6jWgE3TaejrhYEfv81wj0ErNwBv/ZfyNhts59zzw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=8'} - dependencies: - '@types/json-schema': 7.0.12 - json-schema: 0.4.0 - source-map-support: 0.5.21 - dev: true - - /@appium/support@4.1.0(debug@4.3.4): - resolution: {integrity: sha512-3ySDCRoxFnkn54kXNu+3N1RYOD8s91YWn788fGq9zGYh/SeaIUQLwRrjcDI6TxN2S1S3G2lWDiiDDeqwsuf5Hg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=8'} - dependencies: - '@appium/tsconfig': 0.3.0 - '@appium/types': 0.13.0 - '@colors/colors': 1.5.0 - '@types/archiver': 5.3.2 - '@types/base64-stream': 1.0.2 - '@types/find-root': 1.1.2 - '@types/glob': 8.1.0 - '@types/jsftp': 2.1.2 - '@types/klaw': 3.0.3 - '@types/lockfile': 1.0.2 - '@types/mv': 2.1.2 - '@types/ncp': 2.0.5 - '@types/npmlog': 4.1.4 - '@types/pluralize': 0.0.29 - '@types/semver': 7.5.0 - '@types/shell-quote': 1.7.1 - '@types/supports-color': 8.1.1 - '@types/teen_process': 2.0.0 - '@types/uuid': 9.0.1 - '@types/which': 3.0.0 - archiver: 5.3.1 - axios: 1.4.0(debug@4.3.4) - base64-stream: 1.0.0 - bluebird: 3.7.2 - bplist-creator: 0.1.1 - bplist-parser: 0.3.2 - form-data: 4.0.0 - get-stream: 6.0.1 - glob: 8.1.0 - jsftp: 2.1.3(supports-color@8.1.1) - klaw: 4.1.0 - lockfile: 1.0.4 - lodash: 4.17.21 - log-symbols: 4.1.0 - moment: 2.29.4 - mv: 2.1.1 - ncp: 2.0.0 - npmlog: 7.0.1 - opencv-bindings: 4.5.5 - pkg-dir: 5.0.0 - plist: 3.0.6 - pluralize: 8.0.0 - read-pkg: 5.2.0 - resolve-from: 5.0.0 - sanitize-filename: 1.6.3 - semver: 7.5.1 - shell-quote: 1.8.1 - source-map-support: 0.5.21 - supports-color: 8.1.1 - teen_process: 2.0.2 - type-fest: 3.11.1 - uuid: 9.0.0 - which: 3.0.1 - yauzl: 2.10.0 - optionalDependencies: - sharp: 0.32.1 - transitivePeerDependencies: - - debug - dev: true - - /@appium/tsconfig@0.3.0: - resolution: {integrity: sha512-KE4X3KVAUCtAddQA1XvvJABfcTeeb1xQZPdVqEbWld9nH/rqBSQZ7yJozPtktE+80vph5EUp/prMODBWm4WZLA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=8'} - dependencies: - '@tsconfig/node14': 1.0.3 - dev: true - - /@appium/typedoc-plugin-appium@0.6.5(appium@2.0.0-rc.3)(typedoc-plugin-markdown@3.14.0)(typedoc-plugin-resolve-crossmodule-references@0.3.3)(typedoc@0.23.28)(typescript@4.9.5): - resolution: {integrity: sha512-mO+ueKtvaYzfcaPzIBMeczN1ivZ5Jh9KbAlJC3y3VYEHMiPcgYk/e9h1X932JvGm+KpwwLKdeOvU9FN980sX7w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=8'} - peerDependencies: - appium: ^2.0.0-beta.48 - typedoc: ~0.23.14 - typedoc-plugin-markdown: 3.14.0 - typedoc-plugin-resolve-crossmodule-references: ~0.3.3 - typescript: ^4.7.0 || ^5.0.0 - dependencies: - appium: 2.0.0-rc.3(debug@4.3.4) - handlebars: 4.7.7 - lodash: 4.17.21 - pluralize: 8.0.0 - type-fest: 3.11.1 - typedoc: 0.23.28(typescript@4.9.5) - typedoc-plugin-markdown: 3.14.0(typedoc@0.23.28) - typedoc-plugin-resolve-crossmodule-references: 0.3.3(typedoc@0.23.28) - typescript: 4.9.5 - dev: true - - /@appium/typedoc-plugin-appium@0.6.5(appium@2.0.0-rc.3)(typedoc-plugin-markdown@3.15.3)(typedoc-plugin-resolve-crossmodule-references@0.3.3)(typedoc@0.24.6)(typescript@5.0.4): - resolution: {integrity: sha512-mO+ueKtvaYzfcaPzIBMeczN1ivZ5Jh9KbAlJC3y3VYEHMiPcgYk/e9h1X932JvGm+KpwwLKdeOvU9FN980sX7w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=8'} - peerDependencies: - appium: ^2.0.0-beta.48 - typedoc: ~0.23.14 - typedoc-plugin-markdown: 3.14.0 - typedoc-plugin-resolve-crossmodule-references: ~0.3.3 - typescript: ^4.7.0 || ^5.0.0 - dependencies: - appium: 2.0.0-rc.3(debug@4.3.4) - handlebars: 4.7.7 - lodash: 4.17.21 - pluralize: 8.0.0 - type-fest: 3.11.1 - typedoc: 0.24.6(typescript@5.0.4) - typedoc-plugin-markdown: 3.15.3(typedoc@0.24.6) - typedoc-plugin-resolve-crossmodule-references: 0.3.3(typedoc@0.24.6) - typescript: 5.0.4 - dev: true - - /@appium/types@0.13.0: - resolution: {integrity: sha512-W8Um70KQ4YZABcHp9hhHxasUg4e4/7XEhiaekUARCwXvN8CbcEc7/QA0Q30jS0IGAW9dPuR1V/KpGJYiKoctpw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=8'} - dependencies: - '@appium/schema': 0.3.0 - '@appium/tsconfig': 0.3.0 - '@types/express': 4.17.17 - '@types/npmlog': 4.1.4 - '@types/ws': 8.5.4 - type-fest: 3.11.1 - dev: true - /@babel/code-frame@7.12.11: resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} dependencies: @@ -626,20 +404,6 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/runtime@7.19.0: - resolution: {integrity: sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.11 - dev: true - - /@babel/runtime@7.22.5: - resolution: {integrity: sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.11 - dev: true - /@babel/template@7.20.7: resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} engines: {node: '>=6.9.0'} @@ -680,19 +444,6 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@colors/colors@1.5.0: - resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} - engines: {node: '>=0.1.90'} - dev: true - - /@dabh/diagnostics@2.0.3: - resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} - dependencies: - colorspace: 1.1.4 - enabled: 2.0.0 - kuler: 2.0.0 - dev: true - /@esbuild/android-arm64@0.17.15: resolution: {integrity: sha512-0kOB6Y7Br3KDVgHeg8PRcvfLkq+AccreK///B4Z6fNZGr/tNHX0z2VywCc7PTeWp+bPvjA5WMvNXltHw5QjAIA==} engines: {node: '>=12'} @@ -1271,17 +1022,6 @@ packages: '@scure/base': 1.1.1 dev: false - /@sidvind/better-ajv-errors@2.1.0(ajv@8.12.0): - resolution: {integrity: sha512-JuIb009FhHuL9priFBho2kv7QmZOydj0LgYvj+h1t0mMCmhM/YmQNRlJR5wVtBZya6wrVFK5Hi5TIbv5BKEx7w==} - engines: {node: '>= 14.0.0'} - peerDependencies: - ajv: 4.11.8 - 8 - dependencies: - '@babel/code-frame': 7.21.4 - ajv: 8.12.0 - chalk: 4.1.2 - dev: true - /@sinclair/typebox@0.25.24: resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} @@ -1297,43 +1037,10 @@ packages: '@sinonjs/commons': 2.0.0 dev: true - /@sliphua/lilconfig-ts-loader@3.2.2(lilconfig@2.1.0)(typescript@4.9.5): - resolution: {integrity: sha512-nX2aBwAykiG50fSUzK9eyA5UvWcrEKzA0ZzCq9mLwHMwpKxM+U05YH8PHba1LJrbeZ7R1HSjJagWKMqFyq8cxw==} - engines: {node: '>=10.0.0'} - peerDependencies: - lilconfig: '>=2' - dependencies: - lilconfig: 2.1.0 - lodash.get: 4.4.2 - make-error: 1.3.6 - ts-node: 9.1.1(typescript@4.9.5) - tslib: 2.6.0 - transitivePeerDependencies: - - typescript - dev: true - - /@tsconfig/node14@1.0.3: - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - dev: true - /@tsd/typescript@5.0.4: resolution: {integrity: sha512-YQi2lvZSI+xidKeUjlbv6b6Zw7qB3aXHw5oGJLs5OOGAEqKIOvz5UIAkWyg0bJbkSUWPBEtaOHpVxU4EYBO1Jg==} dev: false - /@types/archiver@5.3.2: - resolution: {integrity: sha512-IctHreBuWE5dvBDz/0WeKtyVKVRs4h75IblxOACL92wU66v+HGAfEYAOyXkOFphvRJMhuXdI9huDXpX0FC6lCw==} - dependencies: - '@types/readdir-glob': 1.1.1 - dev: true - - /@types/argparse@2.0.10: - resolution: {integrity: sha512-C4wahC3gz3vQtvPazrJ5ONwmK1zSDllQboiWvpMM/iOswCYfBREFnjFbq/iWKIVOCl8+m5Pk6eva6/ZSsDuIGA==} - dev: true - - /@types/async-lock@1.4.0: - resolution: {integrity: sha512-2+rYSaWrpdbQG3SA0LmMT6YxWLrI81AqpMlSkw3QtFc2HGDufkweQSn30Eiev7x9LL0oyFrBqk1PXOnB9IEgKg==} - dev: true - /@types/babel__core@7.20.0: resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} dependencies: @@ -1363,29 +1070,6 @@ packages: '@babel/types': 7.21.4 dev: true - /@types/base64-stream@1.0.2: - resolution: {integrity: sha512-pPTps4oDwasxGcxpG6Ub8rAkVSPdekoolze0oza1mMFdlgXXKXE2zqCePBfemvWlGI92k9jE7kH3nz0+tJEXQw==} - dependencies: - '@types/node': 14.11.2 - dev: true - - /@types/bluebird@3.5.38: - resolution: {integrity: sha512-yR/Kxc0dd4FfwtEoLZMoqJbM/VE/W7hXn/MIjb+axcwag0iFmSPK7OBUZq1YWLynJUoWQkfUrI7T0HDqGApNSg==} - dev: true - - /@types/body-parser@1.19.2: - resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} - dependencies: - '@types/connect': 3.4.35 - '@types/node': 14.11.2 - dev: true - - /@types/connect@3.4.35: - resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} - dependencies: - '@types/node': 14.11.2 - dev: true - /@types/debug@4.1.7: resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} dependencies: @@ -1403,49 +1087,12 @@ packages: resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} dev: false - /@types/express-serve-static-core@4.17.35: - resolution: {integrity: sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==} - dependencies: - '@types/node': 14.11.2 - '@types/qs': 6.9.7 - '@types/range-parser': 1.2.4 - '@types/send': 0.17.1 - dev: true - - /@types/express@4.17.17: - resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} - dependencies: - '@types/body-parser': 1.19.2 - '@types/express-serve-static-core': 4.17.35 - '@types/qs': 6.9.7 - '@types/serve-static': 1.15.2 - dev: true - - /@types/fancy-log@2.0.0: - resolution: {integrity: sha512-g39Vp8ZJ3D0gXhhkhDidVvdy4QajkF7/PV6HGn23FMaMqE/tLC1JNHUeQ7SshKLsBjucakZsXBLkWULbGLdL5g==} - dev: true - - /@types/find-root@1.1.2: - resolution: {integrity: sha512-lGuMq71TL466jtCpvh7orGd+mrdBmo2h8ozvtOOTbq3ByfWpuN+UVxv4sOv3YpsD4NhW2k6ESGhnT/FIg4Ouzw==} - dev: true - - /@types/glob@8.1.0: - resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} - dependencies: - '@types/minimatch': 5.1.2 - '@types/node': 14.11.2 - dev: true - /@types/graceful-fs@4.1.6: resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} dependencies: '@types/node': 14.11.2 dev: true - /@types/http-errors@2.0.1: - resolution: {integrity: sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==} - dev: true - /@types/istanbul-lib-coverage@2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} dev: true @@ -1469,55 +1116,13 @@ packages: pretty-format: 29.5.0 dev: true - /@types/jsftp@2.1.2: - resolution: {integrity: sha512-IleNyQMESqo8s73kXE5a7qpvosUGpxltWQ/foMa2H3/pkTExkM2V+H//zNH1HRc7+F2aSzJnJ0KbQ3Eh/cMROA==} - dependencies: - '@types/node': 14.11.2 - dev: true - /@types/json-schema@7.0.11: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} - /@types/json-schema@7.0.12: - resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} - dev: true - /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: false - /@types/klaw@3.0.3: - resolution: {integrity: sha512-mXlRDFbTLpVysvxahXUQav0hFctgu3Fqr2xmSrpf/ptO/FwOp7SFEGsJkEihwshMbof3/BIiVJ/o42cuOOuv6g==} - dependencies: - '@types/node': 14.11.2 - dev: true - - /@types/lockfile@1.0.2: - resolution: {integrity: sha512-jD5VbvhfMhaYN4M3qPJuhMVUg3Dfc4tvPvLEAXn6GXbs/ajDFtCQahX37GIE65ipTI3I+hEvNaXS3MYAn9Ce3Q==} - dev: true - - /@types/lodash@4.14.195: - resolution: {integrity: sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==} - dev: true - - /@types/method-override@0.0.32: - resolution: {integrity: sha512-Vf9AohOlANmhNswCbkdRG3p+tYcq1+63O+ex1UoNIVYWW3tO8Mx6Z+5G1R8DENeC6/t1SiDJS+ph6ACKpryokg==} - dependencies: - '@types/express': 4.17.17 - dev: true - - /@types/mime@1.3.2: - resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} - dev: true - - /@types/mime@3.0.1: - resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} - dev: true - - /@types/minimatch@5.1.2: - resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - dev: true - /@types/minimist@1.2.2: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} @@ -1525,16 +1130,6 @@ packages: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: true - /@types/mv@2.1.2: - resolution: {integrity: sha512-IvAjPuiQ2exDicnTrMidt1m+tj3gZ60BM0PaoRsU0m9Cn+lrOyemuO9Tf8CvHFmXlxMjr1TVCfadi9sfwbSuKg==} - dev: true - - /@types/ncp@2.0.5: - resolution: {integrity: sha512-ocK0p8JuFmX7UkMabFPjY0F7apPvQyLWt5qtdvuvQEBz9i4m2dbzV+6L1zNaUp042RfnL6pHnxDE53OH6XQ9VQ==} - dependencies: - '@types/node': 14.11.2 - dev: true - /@types/node@14.11.2: resolution: {integrity: sha512-jiE3QIxJ8JLNcb1Ps6rDbysDhN4xa8DJJvuC9prr6w+1tIh+QAbYyNF3tyiZNLDBIuBCf4KEcV2UvQm/V60xfA==} dev: true @@ -1542,101 +1137,18 @@ packages: /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} - /@types/npmlog@4.1.4: - resolution: {integrity: sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ==} - dev: true - - /@types/pluralize@0.0.29: - resolution: {integrity: sha512-BYOID+l2Aco2nBik+iYS4SZX0Lf20KPILP5RGmM1IgzdwNdTs0eebiFriOPcej1sX9mLnSoiNte5zcFxssgpGA==} - dev: true - /@types/prettier@2.7.2: resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} dev: true - /@types/qs@6.9.7: - resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} - dev: true - - /@types/range-parser@1.2.4: - resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} - dev: true - - /@types/readdir-glob@1.1.1: - resolution: {integrity: sha512-ImM6TmoF8bgOwvehGviEj3tRdRBbQujr1N+0ypaln/GWjaerOB26jb93vsRHmdMtvVQZQebOlqt2HROark87mQ==} - dependencies: - '@types/node': 14.11.2 - dev: true - /@types/semver@7.3.13: resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} dev: false - /@types/semver@7.5.0: - resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} - dev: true - - /@types/send@0.17.1: - resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} - dependencies: - '@types/mime': 1.3.2 - '@types/node': 14.11.2 - dev: true - - /@types/serve-favicon@2.5.4: - resolution: {integrity: sha512-ly+yd6J/1myO40DKhZGx835/e+DXuLzA2J6dsRyBOzNnQoCsnGcuqkUkMmJD6Q8K9CSZOf+CyxL707WHa1PZGA==} - dependencies: - '@types/express': 4.17.17 - dev: true - - /@types/serve-static@1.15.2: - resolution: {integrity: sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==} - dependencies: - '@types/http-errors': 2.0.1 - '@types/mime': 3.0.1 - '@types/node': 14.11.2 - dev: true - - /@types/shell-quote@1.7.1: - resolution: {integrity: sha512-SWZ2Nom1pkyXCDohRSrkSKvDh8QOG9RfAsrt5/NsPQC4UQJ55eG0qClA40I+Gkez4KTQ0uDUT8ELRXThf3J5jw==} - dev: true - /@types/stack-utils@2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true - /@types/supports-color@8.1.1: - resolution: {integrity: sha512-dPWnWsf+kzIG140B8z2w3fr5D03TLWbOAFQl45xUpI3vcizeXriNR5VYkWZ+WTMsUHqZ9Xlt3hrxGNANFyNQfw==} - dev: true - - /@types/teen_process@2.0.0: - resolution: {integrity: sha512-Kb0NjBT9cJXg0mjkmYJbA1WM+4EcEpbUfLXxzKhyAihNU0ipuqRyOolTEB2nDU8D8aCI6EcBLaHbSVefED8lGQ==} - dependencies: - '@types/node': 14.11.2 - dev: true - - /@types/triple-beam@1.3.2: - resolution: {integrity: sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g==} - dev: true - - /@types/uuid@9.0.1: - resolution: {integrity: sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==} - dev: true - - /@types/which@3.0.0: - resolution: {integrity: sha512-ASCxdbsrwNfSMXALlC3Decif9rwDMu+80KGp5zI2RLRotfMsTv7fHL8W8VDp24wymzDyIFudhUeSCugrgRFfHQ==} - dev: true - - /@types/wrap-ansi@3.0.0: - resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} - dev: true - - /@types/ws@8.5.4: - resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==} - dependencies: - '@types/node': 14.11.2 - dev: true - /@types/yargs-parser@21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} dev: true @@ -1883,21 +1395,6 @@ packages: eslint-visitor-keys: 3.4.0 dev: false - /abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - dependencies: - event-target-shim: 5.0.1 - dev: true - - /accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 - dev: true - /acorn-jsx@5.3.2(acorn@7.4.1): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -1926,17 +1423,6 @@ packages: hasBin: true dev: false - /ajv-formats@2.1.1(ajv@8.12.0): - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - dependencies: - ajv: 8.12.0 - dev: true - /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -2001,98 +1487,6 @@ packages: picomatch: 2.3.1 dev: true - /appium@2.0.0-rc.3(debug@4.3.4): - resolution: {integrity: sha512-7GrhPuFjsDg3spRcscxqo9mmfzk2iQVYRaM2qHAk/5ucE7sdHIXXVND4IvrOElIRj+HuMrZrDajJ94hsCBLwUA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=8'} - hasBin: true - requiresBuild: true - dependencies: - '@appium/base-driver': 9.3.13(debug@4.3.4) - '@appium/base-plugin': 2.2.13(debug@4.3.4) - '@appium/docutils': 0.4.2(appium@2.0.0-rc.3)(debug@4.3.4) - '@appium/schema': 0.3.0 - '@appium/support': 4.1.0(debug@4.3.4) - '@appium/types': 0.13.0 - '@sidvind/better-ajv-errors': 2.1.0(ajv@8.12.0) - '@types/argparse': 2.0.10 - '@types/bluebird': 3.5.38 - '@types/fancy-log': 2.0.0 - '@types/semver': 7.5.0 - '@types/teen_process': 2.0.0 - '@types/wrap-ansi': 3.0.0 - ajv: 8.12.0 - ajv-formats: 2.1.1(ajv@8.12.0) - argparse: 2.0.1 - async-lock: 1.4.0 - asyncbox: 2.9.4 - axios: 1.4.0(debug@4.3.4) - bluebird: 3.7.2 - cross-env: 7.0.3 - find-up: 5.0.0 - glob: 8.1.0 - lilconfig: 2.1.0 - lodash: 4.17.21 - npmlog: 7.0.1 - ora: 5.4.1 - package-changed: 3.0.0 - resolve-from: 5.0.0 - semver: 7.5.1 - source-map-support: 0.5.21 - teen_process: 2.0.2 - type-fest: 3.11.1 - winston: 3.9.0 - wrap-ansi: 7.0.0 - yaml: 2.3.1 - transitivePeerDependencies: - - debug - - supports-color - dev: true - - /aproba@2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - dev: true - - /archiver-utils@2.1.0: - resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} - engines: {node: '>= 6'} - dependencies: - glob: 7.2.3 - graceful-fs: 4.2.11 - lazystream: 1.0.1 - lodash.defaults: 4.2.0 - lodash.difference: 4.5.0 - lodash.flatten: 4.4.0 - lodash.isplainobject: 4.0.6 - lodash.union: 4.6.0 - normalize-path: 3.0.0 - readable-stream: 2.3.8 - dev: true - - /archiver@5.3.1: - resolution: {integrity: sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==} - engines: {node: '>= 10'} - dependencies: - archiver-utils: 2.1.0 - async: 3.2.4 - buffer-crc32: 0.2.13 - readable-stream: 3.6.2 - readdir-glob: 1.1.3 - tar-stream: 2.2.0 - zip-stream: 4.1.0 - dev: true - - /are-we-there-yet@4.0.0: - resolution: {integrity: sha512-nSXlV+u3vtVjRgihdTzbfWYzxPWGo424zPgQbHD0ZqIla3jqYAewDcvee0Ua2hjS5IfTAmjGlx1Jf0PKwjZDEw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - delegates: 1.0.0 - readable-stream: 4.4.0 - dev: true - - /arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: true - /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: @@ -2101,6 +1495,7 @@ packages: /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: false /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} @@ -2109,10 +1504,6 @@ packages: is-array-buffer: 3.0.2 dev: false - /array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - dev: true - /array-includes@3.1.6: resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} engines: {node: '>= 0.4'} @@ -2157,44 +1548,11 @@ packages: engines: {node: '>=8'} dev: true - /async-lock@1.4.0: - resolution: {integrity: sha512-coglx5yIWuetakm3/1dsX9hxCNox22h7+V80RQOu2XUUMidtArxKoZoOtHUPuR84SycKTXzgGzAUR5hJxujyJQ==} - dev: true - - /async@3.2.4: - resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} - dev: true - - /asyncbox@2.9.4: - resolution: {integrity: sha512-TCuA73K6Gvn+5tFGsWf4jc+PsR9RmYXw/AF0mv+CRB3VhHLjqHh/w9gPvYILnV0RcRFfjADHtzZexpxWlsP3Tg==} - engines: {node: '>=10'} - dependencies: - '@babel/runtime': 7.22.5 - '@types/bluebird': 3.5.38 - bluebird: 3.7.2 - lodash: 4.17.21 - source-map-support: 0.5.21 - dev: true - - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: true - /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} dev: false - /axios@1.4.0(debug@4.3.4): - resolution: {integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==} - dependencies: - follow-redirects: 1.15.2(debug@4.3.4) - form-data: 4.0.0 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - dev: true - /babel-jest@29.5.0(@babel/core@7.21.4): resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2270,96 +1628,11 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: true - - /base64-stream@1.0.0: - resolution: {integrity: sha512-BQQZftaO48FcE1Kof9CmXMFaAdqkcNorgc8CxesZv9nMbbTF1EFyQe89UOuh//QMmdtfUDXyO8rgUalemL5ODA==} - dev: true - - /basic-auth@2.0.1: - resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} - engines: {node: '>= 0.8'} - dependencies: - safe-buffer: 5.1.2 - dev: true - - /big-integer@1.6.51: - resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} - engines: {node: '>=0.6'} - dev: true - /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} dev: true - /bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - dev: true - - /bluebird@3.7.2: - resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} - dev: true - - /body-parser@1.20.1: - resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.11.0 - raw-body: 2.5.1 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /body-parser@1.20.2: - resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.11.0 - raw-body: 2.5.2 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /bplist-creator@0.1.1: - resolution: {integrity: sha512-Ese7052fdWrxp/vqSJkydgx/1MdBnNOCV2XVfbmdGWD2H6EYza+Q4pyYSuVSnCUD22hfI/BFI4jHaC3NLXLlJQ==} - dependencies: - stream-buffers: 2.2.0 - dev: true - - /bplist-parser@0.3.2: - resolution: {integrity: sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==} - engines: {node: '>= 5.10.0'} - dependencies: - big-integer: 1.6.51 - dev: true - /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -2402,28 +1675,10 @@ packages: node-int64: 0.4.0 dev: true - /buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - dev: true - /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true - /buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - dev: true - - /buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - dev: true - /bufferutil@4.0.7: resolution: {integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==} engines: {node: '>=6.14.2'} @@ -2442,11 +1697,6 @@ packages: load-tsconfig: 0.2.5 dev: true - /bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - dev: true - /cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -2457,6 +1707,7 @@ packages: dependencies: function-bind: 1.1.1 get-intrinsic: 1.2.0 + dev: false /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} @@ -2522,11 +1773,6 @@ packages: fsevents: 2.3.2 dev: true - /chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - dev: true - optional: true - /ci-info@3.8.0: resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} engines: {node: '>=8'} @@ -2543,11 +1789,6 @@ packages: restore-cursor: 3.1.0 dev: true - /cli-spinners@2.9.0: - resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} - engines: {node: '>=6'} - dev: true - /cli-width@3.0.0: resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} engines: {node: '>= 10'} @@ -2562,11 +1803,6 @@ packages: wrap-ansi: 7.0.0 dev: true - /clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - dev: true - /co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} @@ -2593,91 +1829,14 @@ packages: /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - /color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - dev: true - - /color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - dev: true - - /color@3.2.1: - resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} - dependencies: - color-convert: 1.9.3 - color-string: 1.9.1 - dev: true - - /color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} - dependencies: - color-convert: 2.0.1 - color-string: 1.9.1 - dev: true - optional: true - - /colorspace@1.1.4: - resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} - dependencies: - color: 3.2.1 - text-hex: 1.0.0 - dev: true - - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - dependencies: - delayed-stream: 1.0.0 - dev: true - /commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} dev: true - /commander@6.2.1: - resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} - engines: {node: '>= 6'} - dev: true - - /compress-commons@4.1.1: - resolution: {integrity: sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==} - engines: {node: '>= 10'} - dependencies: - buffer-crc32: 0.2.13 - crc32-stream: 4.0.2 - normalize-path: 3.0.0 - readable-stream: 3.6.2 - dev: true - /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - /consola@2.15.3: - resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} - dev: true - - /console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - dev: true - - /content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} - dependencies: - safe-buffer: 5.2.1 - dev: true - - /content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - dev: true - /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} dev: true @@ -2686,33 +1845,6 @@ packages: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: true - /cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - dev: true - - /cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} - engines: {node: '>= 0.6'} - dev: true - - /core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: true - - /crc-32@1.2.2: - resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} - engines: {node: '>=0.8'} - hasBin: true - dev: true - - /crc32-stream@4.0.2: - resolution: {integrity: sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==} - engines: {node: '>= 10'} - dependencies: - crc-32: 1.2.2 - readable-stream: 3.6.2 - dev: true - /create-esm-loader@0.2.3: resolution: {integrity: sha512-cllzD6IU/mzXBs5OdQVWL3+ne5Elpu3Wdm7h5OldMbGXk76yr9XzHlQXWJ4zfs0ZAibe26rkbs4KvMAJm7fIZA==} engines: {node: '>=14.x'} @@ -2720,18 +1852,6 @@ packages: semver: 7.5.0 dev: false - /create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - dev: true - - /cross-env@7.0.3: - resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} - engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} - hasBin: true - dependencies: - cross-spawn: 7.0.3 - dev: true - /cross-spawn@6.0.5: resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} engines: {node: '>=4.8'} @@ -2772,19 +1892,9 @@ packages: optional: true dependencies: ms: 2.0.0 + dev: false - /debug@3.1.0: - resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.0.0 - dev: true - - /debug@3.2.7(supports-color@8.1.1): + /debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: supports-color: '*' @@ -2793,7 +1903,7 @@ packages: optional: true dependencies: ms: 2.1.3 - supports-color: 8.1.1 + dev: false /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} @@ -2817,24 +1927,10 @@ packages: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} - /decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} - dependencies: - mimic-response: 3.1.0 - dev: true - optional: true - /dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true - /deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - dev: true - optional: true - /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -2843,12 +1939,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - dependencies: - clone: 1.0.4 - dev: true - /define-properties@1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} engines: {node: '>= 0.4'} @@ -2857,31 +1947,6 @@ packages: object-keys: 1.1.1 dev: false - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - dev: true - - /delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - dev: true - - /depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - dev: true - - /destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - dev: true - - /detect-libc@2.0.1: - resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} - engines: {node: '>=8'} - dev: true - optional: true - /detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} @@ -2891,16 +1956,6 @@ packages: resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - /diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - dev: true - - /diff@5.1.0: - resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} - engines: {node: '>=0.3.1'} - dev: true - /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -2920,14 +1975,6 @@ packages: dependencies: esutils: 2.0.3 - /duplexer@0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - dev: true - - /ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - dev: true - /electron-to-chromium@1.4.376: resolution: {integrity: sha512-TFeOKd98TpJzRHkr4Aorn16QkMnuCQuGAE6IZ0wYF+qkbSfMPqjplvRppR02tMUpVxZz8nyBNvVm9lIZsqrbPQ==} dev: true @@ -2940,21 +1987,6 @@ packages: /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - /enabled@2.0.0: - resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} - dev: true - - /encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - dev: true - - /end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - dependencies: - once: 1.4.0 - dev: true - /enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} @@ -3041,10 +2073,6 @@ packages: next-tick: 1.1.0 dev: false - /es6-error@4.1.1: - resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} - dev: true - /es6-iterator@2.0.3: resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} dependencies: @@ -3098,10 +2126,6 @@ packages: engines: {node: '>=6'} dev: true - /escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - dev: true - /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} @@ -3150,7 +2174,7 @@ packages: /eslint-import-resolver-node@0.3.7: resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} dependencies: - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7 is-core-module: 2.12.0 resolve: 1.22.2 transitivePeerDependencies: @@ -3179,7 +2203,7 @@ packages: optional: true dependencies: '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.4) - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7 eslint: 8.37.0 eslint-import-resolver-node: 0.3.7 transitivePeerDependencies: @@ -3211,7 +2235,7 @@ packages: array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7 doctrine: 2.1.0 eslint: 8.37.0 eslint-import-resolver-node: 0.3.7 @@ -3468,25 +2492,10 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - /etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - dev: true - - /event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - dev: true - /eventemitter3@5.0.0: resolution: {integrity: sha512-riuVbElZZNXLeLEoprfNYoDSwTBRR44X3mnhdI1YcnENpWTCsTTVZ2zFuqQcpoyqPQIUXdiPEU0ECAq0KQRaHg==} dev: false - /events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - dev: true - /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -3507,12 +2516,6 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /expand-template@2.0.3: - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} - engines: {node: '>=6'} - dev: true - optional: true - /expect@29.5.0: resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3524,45 +2527,6 @@ packages: jest-util: 29.5.0 dev: true - /express@4.18.2: - resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} - engines: {node: '>= 0.10.0'} - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.1 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.5.0 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.2.0 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.1 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.7 - proxy-addr: 2.0.7 - qs: 6.11.0 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - dev: true - /ext@1.7.0: resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} dependencies: @@ -3612,16 +2576,6 @@ packages: bser: 2.1.1 dev: true - /fd-slicer@1.1.0: - resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} - dependencies: - pend: 1.2.0 - dev: true - - /fecha@4.2.3: - resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} - dev: true - /fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} @@ -3649,21 +2603,6 @@ packages: dependencies: to-regex-range: 5.0.1 - /finalhandler@1.2.0: - resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} - engines: {node: '>= 0.8'} - dependencies: - debug: 2.6.9 - encodeurl: 1.0.2 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - dev: true - /find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -3677,6 +2616,7 @@ packages: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 + dev: false /flat-cache@3.0.4: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} @@ -3688,37 +2628,12 @@ packages: /flatted@3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - /fn.name@1.1.0: - resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} - dev: true - - /follow-redirects@1.15.2(debug@4.3.4): - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dependencies: - debug: 4.3.4 - dev: true - /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 dev: false - /form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: true - /formdata-polyfill@4.0.10: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} @@ -3726,20 +2641,6 @@ packages: fetch-blob: 3.2.0 dev: false - /forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - dev: true - - /fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - dev: true - - /fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - dev: true - /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -3751,13 +2652,6 @@ packages: dev: true optional: true - /ftp-response-parser@1.0.1: - resolution: {integrity: sha512-++Ahlo2hs/IC7UVQzjcSAfeUpCwTTzs4uvG5XfGnsinIFkWUYF4xWwPd5qZuK8MJrmUIxFMuHcfqaosCDjvIWw==} - engines: {node: '>=0.8.0'} - dependencies: - readable-stream: 1.1.14 - dev: true - /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} @@ -3779,20 +2673,6 @@ packages: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: false - /gauge@5.0.1: - resolution: {integrity: sha512-CmykPMJGuNan/3S4kZOpvvPYSNqSHANiWnh9XcMU2pSjtBfF0XzZ2p1bFAxTbnFxyBuPxQYHhzwaoOmUdqzvxQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - signal-exit: 4.0.2 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - dev: true - /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -3809,6 +2689,7 @@ packages: function-bind: 1.1.1 has: 1.0.3 has-symbols: 1.0.3 + dev: false /get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} @@ -3828,11 +2709,6 @@ packages: get-intrinsic: 1.2.0 dev: false - /github-from-package@0.0.0: - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} - dev: true - optional: true - /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -3846,16 +2722,6 @@ packages: is-glob: 4.0.3 dev: false - /glob@6.0.4: - resolution: {integrity: sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==} - dependencies: - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true - /glob@7.1.6: resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} dependencies: @@ -3877,17 +2743,6 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - dev: true - /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -3957,19 +2812,6 @@ packages: - supports-color dev: true - /handlebars@4.7.7: - resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} - engines: {node: '>=0.4.7'} - hasBin: true - dependencies: - minimist: 1.2.8 - neo-async: 2.6.2 - source-map: 0.6.1 - wordwrap: 1.0.0 - optionalDependencies: - uglify-js: 3.17.4 - dev: true - /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} @@ -4000,6 +2842,7 @@ packages: /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} + dev: false /has-tostringtag@1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} @@ -4008,10 +2851,6 @@ packages: has-symbols: 1.0.3 dev: false - /has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - dev: true - /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} @@ -4031,21 +2870,6 @@ packages: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true - /http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - dev: true - - /http-status-codes@2.2.0: - resolution: {integrity: sha512-feERVo9iWxvnejp3SEfm/+oNG517npqL2/PIA8ORjyOZjGC7TwCRQsZylciLS64i6pJ0wRYz3rkXLRwbtFa8Ng==} - dev: true - /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -4058,10 +2882,6 @@ packages: safer-buffer: 2.1.2 dev: true - /ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: true - /ignore@4.0.6: resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} engines: {node: '>= 4'} @@ -4104,11 +2924,6 @@ packages: /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - /ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: true - optional: true - /inquirer@7.3.3: resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} engines: {node: '>=8.0.0'} @@ -4137,11 +2952,6 @@ packages: side-channel: 1.0.4 dev: false - /ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - dev: true - /irregular-plurals@3.5.0: resolution: {integrity: sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==} engines: {node: '>=8'} @@ -4158,10 +2968,6 @@ packages: /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - /is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - dev: true - /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: @@ -4219,11 +3025,6 @@ packages: dependencies: is-extglob: 2.1.1 - /is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - dev: true - /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} @@ -4299,6 +3100,7 @@ packages: /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} + dev: false /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} @@ -4306,14 +3108,6 @@ packages: call-bind: 1.0.2 dev: false - /isarray@0.0.1: - resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - dev: true - - /isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: true - /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -4803,20 +3597,6 @@ packages: hasBin: true dev: true - /jsftp@2.1.3(supports-color@8.1.1): - resolution: {integrity: sha512-r79EVB8jaNAZbq8hvanL8e8JGu2ZNr2bXdHC4ZdQhRImpSPpnWwm5DYVzQ5QxJmtGtKhNNuvqGgbNaFl604fEQ==} - engines: {node: '>=6'} - dependencies: - debug: 3.2.7(supports-color@8.1.1) - ftp-response-parser: 1.0.1 - once: 1.4.0 - parse-listing: 1.1.3 - stream-combiner: 0.2.2 - unorm: 1.6.0 - transitivePeerDependencies: - - supports-color - dev: true - /json-parse-better-errors@1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} dev: false @@ -4831,10 +3611,6 @@ packages: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} dev: true - /json-schema@0.4.0: - resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} - dev: true - /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} @@ -4859,27 +3635,11 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - /klaw@4.1.0: - resolution: {integrity: sha512-1zGZ9MF9H22UnkpVeuaGKOjfA2t6WrfdrJmGjy16ykcjnKQDmHVX+KI477rpbGevz/5FD4MC3xf1oxylBgcaQw==} - engines: {node: '>=14.14.0'} - dev: true - /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} dev: true - /kuler@2.0.0: - resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} - dev: true - - /lazystream@1.0.1: - resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} - engines: {node: '>= 0.6.3'} - dependencies: - readable-stream: 2.3.8 - dev: true - /leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -4932,32 +3692,7 @@ packages: engines: {node: '>=10'} dependencies: p-locate: 5.0.0 - - /lockfile@1.0.4: - resolution: {integrity: sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA==} - dependencies: - signal-exit: 3.0.7 - dev: true - - /lodash.defaults@4.2.0: - resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - dev: true - - /lodash.difference@4.5.0: - resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} - dev: true - - /lodash.flatten@4.4.0: - resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} - dev: true - - /lodash.get@4.4.2: - resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} - dev: true - - /lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - dev: true + dev: false /lodash.memoize@4.1.2: resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} @@ -4974,10 +3709,6 @@ packages: resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} dev: true - /lodash.union@4.6.0: - resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==} - dev: true - /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} dev: true @@ -4988,17 +3719,7 @@ packages: dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 - - /logform@2.5.1: - resolution: {integrity: sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==} - dependencies: - '@colors/colors': 1.5.0 - '@types/triple-beam': 1.3.2 - fecha: 4.2.3 - ms: 2.1.3 - safe-stable-stringify: 2.4.3 - triple-beam: 1.3.0 - dev: true + dev: false /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -5012,11 +3733,6 @@ packages: dependencies: yallist: 4.0.0 - /lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - dev: true - /lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} dev: true @@ -5052,11 +3768,6 @@ packages: hasBin: true dev: true - /media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} - dev: true - /memorystream@0.3.1: resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} engines: {node: '>= 0.10.0'} @@ -5079,10 +3790,6 @@ packages: type-fest: 0.18.1 yargs-parser: 20.2.9 - /merge-descriptors@1.0.1: - resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} - dev: true - /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: true @@ -5091,23 +3798,6 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - /method-override@3.0.0: - resolution: {integrity: sha512-IJ2NNN/mSl9w3kzWB92rcdHpz+HjkxhDJWNDBqSlas+zQdP8wBiJzITPg08M/k2uVvMow7Sk41atndNtt/PHSA==} - engines: {node: '>= 0.10'} - dependencies: - debug: 3.1.0 - methods: 1.1.2 - parseurl: 1.3.3 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - dev: true - /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -5115,35 +3805,11 @@ packages: braces: 3.0.2 picomatch: 2.3.1 - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - dev: true - - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 - dev: true - - /mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - dev: true - /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} dev: true - /mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - dev: true - optional: true - /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -5153,22 +3819,8 @@ packages: dependencies: brace-expansion: 1.1.11 - /minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 - dev: true - - /minimatch@7.4.6: - resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} - engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 - dev: true - - /minimatch@9.0.0: - resolution: {integrity: sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==} + /minimatch@9.0.2: + resolution: {integrity: sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==} engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 @@ -5184,62 +3836,23 @@ packages: /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - /mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - dev: true - optional: true - - /mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - dependencies: - minimist: 1.2.8 - dev: true - - /moment@2.29.4: - resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} - dev: true - - /morgan@1.10.0: - resolution: {integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==} - engines: {node: '>= 0.8.0'} - dependencies: - basic-auth: 2.0.1 - debug: 2.6.9 - depd: 2.0.0 - on-finished: 2.3.0 - on-headers: 1.0.2 - transitivePeerDependencies: - - supports-color - dev: true + dev: false /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - - /ms@2.1.1: - resolution: {integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==} - dev: true + dev: false /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: false /mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} dev: true - /mv@2.1.1: - resolution: {integrity: sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==} - engines: {node: '>=0.8.0'} - dependencies: - mkdirp: 0.5.6 - ncp: 2.0.0 - rimraf: 2.4.5 - dev: true - /mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} dependencies: @@ -5248,11 +3861,6 @@ packages: thenify-all: 1.6.0 dev: true - /napi-build-utils@1.0.2: - resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} - dev: true - optional: true - /natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} dev: false @@ -5265,15 +3873,6 @@ packages: hasBin: true dev: true - /negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - dev: true - - /neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - dev: true - /next-tick@1.1.0: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} dev: false @@ -5282,19 +3881,6 @@ packages: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} dev: false - /node-abi@3.45.0: - resolution: {integrity: sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==} - engines: {node: '>=10'} - dependencies: - semver: 7.5.1 - dev: true - optional: true - - /node-addon-api@6.1.0: - resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} - dev: true - optional: true - /node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} @@ -5377,16 +3963,6 @@ packages: path-key: 3.1.1 dev: true - /npmlog@7.0.1: - resolution: {integrity: sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - are-we-there-yet: 4.0.0 - console-control-strings: 1.1.0 - gauge: 5.0.1 - set-blocking: 2.0.0 - dev: true - /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -5394,6 +3970,7 @@ packages: /object-inspect@1.12.3: resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + dev: false /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} @@ -5419,36 +3996,11 @@ packages: es-abstract: 1.21.2 dev: false - /on-finished@2.3.0: - resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} - engines: {node: '>= 0.8'} - dependencies: - ee-first: 1.1.1 - dev: true - - /on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - dependencies: - ee-first: 1.1.1 - dev: true - - /on-headers@1.0.2: - resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} - engines: {node: '>= 0.8'} - dev: true - /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - /one-time@1.0.0: - resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} - dependencies: - fn.name: 1.1.0 - dev: true - /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} @@ -5456,10 +4008,6 @@ packages: mimic-fn: 2.1.0 dev: true - /opencv-bindings@4.5.5: - resolution: {integrity: sha512-FdYE9uqnoPKbAkZFEOpIh6RTtJIz1lz+W27xPCo1Ov6+d0OOgg+Hm9OT2MIGIG8V1Dp3fWlLvi7SIjDOpqO2XA==} - dev: true - /optionator@0.9.1: resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} engines: {node: '>= 0.8.0'} @@ -5471,21 +4019,6 @@ packages: type-check: 0.4.0 word-wrap: 1.2.3 - /ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.0 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - dev: true - /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} @@ -5514,18 +4047,12 @@ packages: engines: {node: '>=10'} dependencies: p-limit: 3.1.0 + dev: false /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - /package-changed@3.0.0: - resolution: {integrity: sha512-HSRbrO+Ab5AuqqYGSevtKJ1Yt96jW1VKV7wrp8K4SKj5tyDp/7D96uPCQyCPiNtWTEH/7nA3hZ4z2slbc9yFxg==} - hasBin: true - dependencies: - commander: 6.2.1 - dev: true - /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -5549,16 +4076,6 @@ packages: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - /parse-listing@1.1.3: - resolution: {integrity: sha512-a1p1i+9Qyc8pJNwdrSvW1g5TPxRH0sywVi6OzVvYHRo6xwF9bDWBxtH0KkxeOOvhUE8vAMtiSfsYQFOuK901eA==} - engines: {node: '>=0.6.21'} - dev: true - - /parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - dev: true - /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -5579,10 +4096,6 @@ packages: /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - /path-to-regexp@0.1.7: - resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} - dev: true - /path-type@3.0.0: resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} engines: {node: '>=4'} @@ -5594,10 +4107,6 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - /pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - dev: true - /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true @@ -5629,21 +4138,6 @@ packages: find-up: 4.1.0 dev: true - /pkg-dir@5.0.0: - resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} - engines: {node: '>=10'} - dependencies: - find-up: 5.0.0 - dev: true - - /plist@3.0.6: - resolution: {integrity: sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==} - engines: {node: '>=6'} - dependencies: - base64-js: 1.5.1 - xmlbuilder: 15.1.1 - dev: true - /plur@4.0.0: resolution: {integrity: sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==} engines: {node: '>=10'} @@ -5651,11 +4145,6 @@ packages: irregular-plurals: 3.5.0 dev: false - /pluralize@8.0.0: - resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} - engines: {node: '>=4'} - dev: true - /postcss-load-config@3.1.4: resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} @@ -5672,26 +4161,6 @@ packages: yaml: 1.10.2 dev: true - /prebuild-install@7.1.1: - resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} - engines: {node: '>=10'} - hasBin: true - dependencies: - detect-libc: 2.0.1 - expand-template: 2.0.3 - github-from-package: 0.0.0 - minimist: 1.2.8 - mkdirp-classic: 0.5.3 - napi-build-utils: 1.0.2 - node-abi: 3.45.0 - pump: 3.0.0 - rc: 1.2.8 - simple-get: 4.0.1 - tar-fs: 2.1.1 - tunnel-agent: 0.6.0 - dev: true - optional: true - /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -5734,15 +4203,6 @@ packages: ansi-styles: 5.2.0 react-is: 18.2.0 - /process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: true - - /process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - dev: true - /progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} @@ -5756,26 +4216,6 @@ packages: sisteransi: 1.0.5 dev: true - /proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - dev: true - - /proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - dev: true - - /pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - dev: true - optional: true - /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} @@ -5784,13 +4224,6 @@ packages: resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} dev: true - /qs@6.11.0: - resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} - engines: {node: '>=0.6'} - dependencies: - side-channel: 1.0.4 - dev: true - /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -5798,42 +4231,6 @@ packages: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} engines: {node: '>=8'} - /range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - dev: true - - /raw-body@2.5.1: - resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} - engines: {node: '>= 0.8'} - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - dev: true - - /raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} - engines: {node: '>= 0.8'} - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - dev: true - - /rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.8 - strip-json-comments: 2.0.1 - dev: true - optional: true - /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} @@ -5863,52 +4260,6 @@ packages: parse-json: 5.2.0 type-fest: 0.6.0 - /readable-stream@1.1.14: - resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 0.0.1 - string_decoder: 0.10.31 - dev: true - - /readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - dev: true - - /readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - dev: true - - /readable-stream@4.4.0: - resolution: {integrity: sha512-kDMOq0qLtxV9f/SQv522h8cxZBqNZXuXNyjyezmfAAuribMyVXziljpQ/uQhfE1XLg2/TLTW2DsnoE4VAi/krg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - abort-controller: 3.0.0 - buffer: 6.0.3 - events: 3.3.0 - process: 0.11.10 - dev: true - - /readdir-glob@1.1.3: - resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} - dependencies: - minimatch: 5.1.6 - dev: true - /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -5923,10 +4274,6 @@ packages: indent-string: 4.0.0 strip-indent: 3.0.0 - /regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - dev: true - /regexp.prototype.flags@1.5.0: resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} engines: {node: '>= 0.4'} @@ -5992,13 +4339,6 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - /rimraf@2.4.5: - resolution: {integrity: sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==} - hasBin: true - dependencies: - glob: 6.0.4 - dev: true - /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true @@ -6030,18 +4370,6 @@ packages: tslib: 1.14.1 dev: true - /safe-buffer@5.1.1: - resolution: {integrity: sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==} - dev: true - - /safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: true - - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: true - /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: @@ -6050,21 +4378,10 @@ packages: is-regex: 1.1.4 dev: false - /safe-stable-stringify@2.4.3: - resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} - engines: {node: '>=10'} - dev: true - /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /sanitize-filename@1.6.3: - resolution: {integrity: sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==} - dependencies: - truncate-utf8-bytes: 1.0.2 - dev: true - /semver@5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true @@ -6080,82 +4397,6 @@ packages: dependencies: lru-cache: 6.0.0 - /semver@7.5.1: - resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - - /send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} - engines: {node: '>= 0.8.0'} - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - dev: true - - /serve-favicon@2.5.0: - resolution: {integrity: sha512-FMW2RvqNr03x+C0WxTyu6sOv21oOjkq5j8tjquWccwa6ScNyGFOGJVpuS1NmTVGBAHS07xnSKotgf2ehQmf9iA==} - engines: {node: '>= 0.8.0'} - dependencies: - etag: 1.8.1 - fresh: 0.5.2 - ms: 2.1.1 - parseurl: 1.3.3 - safe-buffer: 5.1.1 - dev: true - - /serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} - engines: {node: '>= 0.8.0'} - dependencies: - encodeurl: 1.0.2 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.18.0 - transitivePeerDependencies: - - supports-color - dev: true - - /set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: true - - /setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - dev: true - - /sharp@0.32.1: - resolution: {integrity: sha512-kQTFtj7ldpUqSe8kDxoGLZc1rnMFU0AO2pqbX6pLy3b7Oj8ivJIdoKNwxHVQG2HN6XpHPJqCSM2nsma2gOXvOg==} - engines: {node: '>=14.15.0'} - requiresBuild: true - dependencies: - color: 4.2.3 - detect-libc: 2.0.1 - node-addon-api: 6.1.0 - prebuild-install: 7.1.1 - semver: 7.5.1 - simple-get: 4.0.1 - tar-fs: 2.1.1 - tunnel-agent: 0.6.0 - dev: true - optional: true - /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -6178,15 +4419,12 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - /shell-quote@1.7.3: - resolution: {integrity: sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==} - dev: true - /shell-quote@1.8.1: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + dev: false - /shiki@0.14.1: - resolution: {integrity: sha512-+Jz4nBkCBe0mEDqo1eKRcCdjRtrCjozmcbTUjbPTX7OOJfEbTZzlUWlZtGe3Gb5oV1/jnojhG//YZc3rs9zSEw==} + /shiki@0.14.3: + resolution: {integrity: sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==} dependencies: ansi-sequence-parser: 1.1.0 jsonc-parser: 3.2.0 @@ -6200,36 +4438,12 @@ packages: call-bind: 1.0.2 get-intrinsic: 1.2.0 object-inspect: 1.12.3 + dev: false /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true - /signal-exit@4.0.2: - resolution: {integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==} - engines: {node: '>=14'} - dev: true - - /simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - dev: true - optional: true - - /simple-get@4.0.1: - resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - dependencies: - decompress-response: 6.0.0 - once: 1.4.0 - simple-concat: 1.0.1 - dev: true - optional: true - - /simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - dependencies: - is-arrayish: 0.3.2 - dev: true - /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} dev: true @@ -6254,13 +4468,6 @@ packages: source-map: 0.6.1 dev: true - /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -6295,10 +4502,6 @@ packages: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true - /stack-trace@0.0.10: - resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} - dev: true - /stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} @@ -6306,23 +4509,6 @@ packages: escape-string-regexp: 2.0.0 dev: true - /statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - dev: true - - /stream-buffers@2.2.0: - resolution: {integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==} - engines: {node: '>= 0.10.0'} - dev: true - - /stream-combiner@0.2.2: - resolution: {integrity: sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ==} - dependencies: - duplexer: 0.1.2 - through: 2.3.8 - dev: true - /string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} @@ -6373,22 +4559,6 @@ packages: es-abstract: 1.21.2 dev: false - /string_decoder@0.10.31: - resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} - dev: true - - /string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - dependencies: - safe-buffer: 5.1.2 - dev: true - - /string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - dependencies: - safe-buffer: 5.2.1 - dev: true - /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -6416,12 +4586,6 @@ packages: dependencies: min-indent: 1.0.1 - /strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - dev: true - optional: true - /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -6457,6 +4621,7 @@ packages: engines: {node: '>=10'} dependencies: has-flag: 4.0.0 + dev: true /supports-hyperlinks@2.3.0: resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} @@ -6481,39 +4646,6 @@ packages: strip-ansi: 6.0.1 dev: true - /tar-fs@2.1.1: - resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} - dependencies: - chownr: 1.1.4 - mkdirp-classic: 0.5.3 - pump: 3.0.0 - tar-stream: 2.2.0 - dev: true - optional: true - - /tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.4 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - dev: true - - /teen_process@2.0.2: - resolution: {integrity: sha512-8Be+s0d3XIs6rosilYTYR8/TY4JfAl8Der8ItWhI/o/MTYGLTcjvNUNk5AU8c1eTpJ98MF0xextE8VJtqhtUcg==} - engines: {node: '>=14', npm: '>=6'} - dependencies: - '@babel/runtime': 7.19.0 - bluebird: 3.7.2 - lodash: 4.17.21 - shell-quote: 1.7.3 - source-map-support: 0.5.21 - which: 2.0.2 - dev: true - /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -6523,10 +4655,6 @@ packages: minimatch: 3.1.2 dev: true - /text-hex@1.0.0: - resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} - dev: true - /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -6569,11 +4697,6 @@ packages: dependencies: is-number: 7.0.0 - /toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - dev: true - /tr46@1.0.1: resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} dependencies: @@ -6589,16 +4712,6 @@ packages: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} - /triple-beam@1.3.0: - resolution: {integrity: sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==} - dev: true - - /truncate-utf8-bytes@1.0.2: - resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} - dependencies: - utf8-byte-length: 1.0.4 - dev: true - /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: true @@ -6638,22 +4751,6 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-node@9.1.1(typescript@4.9.5): - resolution: {integrity: sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==} - engines: {node: '>=10.0.0'} - hasBin: true - peerDependencies: - typescript: '>=2.7' - dependencies: - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - source-map-support: 0.5.21 - typescript: 4.9.5 - yn: 3.1.1 - dev: true - /tsconfig-paths@3.14.2: resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} dependencies: @@ -6680,10 +4777,6 @@ packages: /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - /tslib@2.6.0: - resolution: {integrity: sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==} - dev: true - /tstl@2.5.13: resolution: {integrity: sha512-h9wayHHFI5+yqt8iau0vqH96cTNhezhZ/Fk/hrIdpfkiMu3lg9nzyvMfs5bIdX51IVzZO6DudLqhkL/rVXpT6g==} dev: false @@ -6733,13 +4826,6 @@ packages: tslib: 1.14.1 typescript: 5.0.4 - /tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - dependencies: - safe-buffer: 5.2.1 - dev: true - optional: true - /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -6771,19 +4857,6 @@ packages: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} - /type-fest@3.11.1: - resolution: {integrity: sha512-aCuRNRERRVh33lgQaJRlUxZqzfhzwTrsE98Mc3o3VXqmiaQdHacgUtJ0esp+7MvZ92qhtzKPeusaX6vIEcoreA==} - engines: {node: '>=14.16'} - dev: true - - /type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} - dependencies: - media-typer: 0.3.0 - mime-types: 2.1.35 - dev: true - /type@1.2.0: resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} dev: false @@ -6805,101 +4878,33 @@ packages: dependencies: is-typedarray: 1.0.0 - /typedoc-github-wiki-theme@1.1.0(typedoc-plugin-markdown@3.15.3)(typedoc@0.24.6): - resolution: {integrity: sha512-VyFmz8ZV2j/qEsCjD5EtR6FgZsCoy64Zr6SS9kCTcq7zx69Cx4UJBx8Ga/naxqs08TDggE6myIfODY6awwAGcA==} - peerDependencies: - typedoc: '>=0.24.0' - typedoc-plugin-markdown: '>=3.15.0' - dependencies: - typedoc: 0.24.6(typescript@5.0.4) - typedoc-plugin-markdown: 3.15.3(typedoc@0.24.6) - dev: true - - /typedoc-plugin-markdown@3.14.0(typedoc@0.23.28): - resolution: {integrity: sha512-UyQLkLRkfTFhLdhSf3RRpA3nNInGn+k6sll2vRXjflaMNwQAAiB61SYbisNZTg16t4K1dt1bPQMMGLrxS0GZ0Q==} - peerDependencies: - typedoc: '>=0.23.0' - dependencies: - handlebars: 4.7.7 - typedoc: 0.23.28(typescript@4.9.5) - dev: true - - /typedoc-plugin-markdown@3.15.3(typedoc@0.24.6): - resolution: {integrity: sha512-idntFYu3vfaY3eaD+w9DeRd0PmNGqGuNLKihPU9poxFGnATJYGn9dPtEhn2QrTdishFMg7jPXAhos+2T6YCWRQ==} - peerDependencies: - typedoc: '>=0.24.0' - dependencies: - handlebars: 4.7.7 - typedoc: 0.24.6(typescript@5.0.4) - dev: true - - /typedoc-plugin-resolve-crossmodule-references@0.3.3(typedoc@0.23.28): - resolution: {integrity: sha512-ZWWBy2WR8z9a6iXYGlyB3KrpV+JDdZv1mndYU6Eh6mInrfMCrQJi3Y5K9ihMBfuaBGB//le1nEmQLgzU3IO+dw==} - engines: {node: '>=14'} - deprecated: Upgrade to typedoc >= 0.24 and remove typedoc-plugin-resolve-crossmodule-references from your dependencies - peerDependencies: - typedoc: '>=0.22 <=0.23' - dependencies: - typedoc: 0.23.28(typescript@4.9.5) - dev: true - - /typedoc-plugin-resolve-crossmodule-references@0.3.3(typedoc@0.24.6): - resolution: {integrity: sha512-ZWWBy2WR8z9a6iXYGlyB3KrpV+JDdZv1mndYU6Eh6mInrfMCrQJi3Y5K9ihMBfuaBGB//le1nEmQLgzU3IO+dw==} - engines: {node: '>=14'} - deprecated: Upgrade to typedoc >= 0.24 and remove typedoc-plugin-resolve-crossmodule-references from your dependencies + /typedoc-plugin-rename-defaults@0.6.5(typedoc@0.24.8): + resolution: {integrity: sha512-DwkgwRMxgu3UrDR3VUAdnF9jYzM6p7rw6UcVIh4MD7yjEmFDR8WWyOlk6oYgELmRYHxTDx0f0GK6iSgoxSh/Qw==} peerDependencies: - typedoc: '>=0.22 <=0.23' + typedoc: 0.22.x || 0.23.x || 0.24.x dependencies: - typedoc: 0.24.6(typescript@5.0.4) + typedoc: 0.24.8(typescript@5.0.4) dev: true - /typedoc@0.23.28(typescript@4.9.5): - resolution: {integrity: sha512-9x1+hZWTHEQcGoP7qFmlo4unUoVJLB0H/8vfO/7wqTnZxg4kPuji9y3uRzEu0ZKez63OJAUmiGhUrtukC6Uj3w==} + /typedoc@0.24.8(typescript@5.0.4): + resolution: {integrity: sha512-ahJ6Cpcvxwaxfu4KtjA8qZNqS43wYt6JL27wYiIgl1vd38WW/KWX11YuAeZhuz9v+ttrutSsgK+XO1CjL1kA3w==} engines: {node: '>= 14.14'} hasBin: true peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x dependencies: lunr: 2.3.9 marked: 4.3.0 - minimatch: 7.4.6 - shiki: 0.14.1 - typescript: 4.9.5 - dev: true - - /typedoc@0.24.6(typescript@5.0.4): - resolution: {integrity: sha512-c3y3h45xJv3qYwKDAwU6Cl+26CjT0ZvblHzfHJ+SjQDM4p1mZxtgHky4lhmG0+nNarRht8kADfZlbspJWdZarQ==} - engines: {node: '>= 14.14'} - hasBin: true - peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x - dependencies: - lunr: 2.3.9 - marked: 4.3.0 - minimatch: 9.0.0 - shiki: 0.14.1 + minimatch: 9.0.2 + shiki: 0.14.3 typescript: 5.0.4 dev: true - /typescript@4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} - hasBin: true - dev: true - /typescript@5.0.4: resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} engines: {node: '>=12.20'} hasBin: true - /uglify-js@3.17.4: - resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} - engines: {node: '>=0.8.0'} - hasBin: true - requiresBuild: true - dev: true - optional: true - /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: @@ -6909,16 +4914,6 @@ packages: which-boxed-primitive: 1.0.2 dev: false - /unorm@1.6.0: - resolution: {integrity: sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==} - engines: {node: '>= 0.4.0'} - dev: true - - /unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - dev: true - /update-browserslist-db@1.0.11(browserslist@4.21.5): resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true @@ -6948,24 +4943,6 @@ packages: engines: {node: '>=8'} dev: false - /utf8-byte-length@1.0.4: - resolution: {integrity: sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==} - dev: true - - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: true - - /utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - dev: true - - /uuid@9.0.0: - resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} - hasBin: true - dev: true - /v8-compile-cache@2.3.0: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} dev: true @@ -6985,15 +4962,6 @@ packages: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - /validate.js@0.13.1: - resolution: {integrity: sha512-PnFM3xiZ+kYmLyTiMgTYmU7ZHkjBZz2/+F0DaALc/uUtVzdCt1wAosvYJ5hFQi/hz8O4zb52FQhHZRC+uVkJ+g==} - dev: true - - /vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - dev: true - /vscode-oniguruma@1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} dev: true @@ -7008,12 +4976,6 @@ packages: makeerror: 1.0.12 dev: true - /wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - dependencies: - defaults: 1.0.4 - dev: true - /web-streams-polyfill@3.2.1: resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} engines: {node: '>= 8'} @@ -7090,54 +5052,10 @@ packages: dependencies: isexe: 2.0.0 - /which@3.0.1: - resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: true - - /wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - dependencies: - string-width: 4.2.3 - dev: true - - /winston-transport@4.5.0: - resolution: {integrity: sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==} - engines: {node: '>= 6.4.0'} - dependencies: - logform: 2.5.1 - readable-stream: 3.6.2 - triple-beam: 1.3.0 - dev: true - - /winston@3.9.0: - resolution: {integrity: sha512-jW51iW/X95BCW6MMtZWr2jKQBP4hV5bIDq9QrIjfDk6Q9QuxvTKEAlpUNAzP+HYHFFCeENhph16s0zEunu4uuQ==} - engines: {node: '>= 12.0.0'} - dependencies: - '@colors/colors': 1.5.0 - '@dabh/diagnostics': 2.0.3 - async: 3.2.4 - is-stream: 2.0.1 - logform: 2.5.1 - one-time: 1.0.0 - readable-stream: 3.6.2 - safe-stable-stringify: 2.4.3 - stack-trace: 0.0.10 - triple-beam: 1.3.0 - winston-transport: 4.5.0 - dev: true - /word-wrap@1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} - /wordwrap@1.0.0: - resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - dev: true - /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -7167,11 +5085,6 @@ packages: signal-exit: 3.0.7 dev: true - /xmlbuilder@15.1.1: - resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} - engines: {node: '>=8.0'} - dev: true - /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -7194,11 +5107,6 @@ packages: engines: {node: '>= 6'} dev: true - /yaml@2.3.1: - resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} - engines: {node: '>= 14'} - dev: true - /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} @@ -7221,27 +5129,6 @@ packages: yargs-parser: 21.1.1 dev: true - /yauzl@2.10.0: - resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} - dependencies: - buffer-crc32: 0.2.13 - fd-slicer: 1.1.0 - dev: true - - /yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - dev: true - /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - - /zip-stream@4.1.0: - resolution: {integrity: sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==} - engines: {node: '>= 10'} - dependencies: - archiver-utils: 2.1.0 - compress-commons: 4.1.1 - readable-stream: 3.6.2 - dev: true diff --git a/typedoc.json b/typedoc.json index ed08adbf..8ff1cca6 100644 --- a/typedoc.json +++ b/typedoc.json @@ -3,9 +3,21 @@ "out": "docs", "name": "NDK", "exclude": ["**/*.test.ts"], - "plugin": ["typedoc-plugin-markdown"], + // "plugin": ["typedoc-plugin-rename-defaults"], "theme": "default", "excludeExternals": true, "excludePrivate": true, - "excludeProtected": true + "excludeProtected": true, + "categorizeByGroup": true, + "hideParameterTypesInTitle": false, + "navigationLinks": { + "Github": "https://github.com/nostr-dev-kit/ndk", + "NDK CLI": "https://github.com/nostr-dev-kit/ndk-cli", + "NDK Svelte Components": "https://github.com/nostr-dev-kit/ndk-svelte-components", + "NDK React": "https://github.com/nostr-dev-kit/ndk-react" + }, + "navigation": { + "includeGroups": true + }, + "customCss": "./docs-styles.css" } From 6bba31f93f3ed0fbdfab3444abb639ece022a98f Mon Sep 17 00:00:00 2001 From: pablof7z Date: Wed, 28 Jun 2023 15:24:59 +0200 Subject: [PATCH 157/773] move docs --- docs-styles.css | 25 +++++++++++++++++++++++++ docs/README.md | 1 + 2 files changed, 26 insertions(+) create mode 100644 docs-styles.css create mode 100644 docs/README.md diff --git a/docs-styles.css b/docs-styles.css new file mode 100644 index 00000000..95897962 --- /dev/null +++ b/docs-styles.css @@ -0,0 +1,25 @@ +html, +body { + font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, + "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", + "Segoe UI Symbol", "Noto Color Emoji"; + background: #222; +} + +header.tsd-page-toolbar .tsd-toolbar-contents { + height: auto; + padding: 1rem; +} + +header.tsd-page-toolbar a.title { + background-image: url("https://raw.githubusercontent.com/nvk/ndk.fyi/master/ndk.svg"); + width: 40px; + height: 40px; + display: block; + background-size: contain; + color: transparent; +} + +header.tsd-page-toolbar .tsd-toolbar-links a { + font-weight: bold; +} diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 00000000..c6911c93 --- /dev/null +++ b/docs/README.md @@ -0,0 +1 @@ +Moved to https://ndk.fyi/docs From 41a59e94d7007b61cfddb091391f4cfcf85962a5 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Wed, 28 Jun 2023 22:57:40 +0200 Subject: [PATCH 158/773] add methods to publish the user profile and add follows to the follow list --- README.md | 1 - package.json | 2 +- src/user/index.ts | 57 +++++++++++++++++++++++++++++++++++++++++++-- src/user/profile.ts | 2 +- 4 files changed, 57 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 6796ca02..69bc02b4 100644 --- a/README.md +++ b/README.md @@ -271,7 +271,6 @@ await pablo.fetchProfile(); const pabloFullProfile = pablo.profile; pablo.profile.name = "Pablo"; -// COMING SOON await pablo.publish(); // Triggers signing via signer ``` diff --git a/package.json b/package.json index 2d519dd2..a0ed3d59 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.6.1", + "version": "0.6.2", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/user/index.ts b/src/user/index.ts index 20a2cdf4..dd921b6d 100644 --- a/src/user/index.ts +++ b/src/user/index.ts @@ -1,9 +1,10 @@ import { nip05, nip19 } from "nostr-tools"; -import Event, { NDKTag } from "../events/index.js"; -import NDK from "../index.js"; +import Event, { NDKTag, NostrEvent } from "../events/index.js"; +import NDK, { NDKKind } from "../index.js"; import { NDKFilterOptions } from "../subscription/index.js"; import { follows } from "./follows.js"; import { mergeEvent, NDKUserProfile } from "./profile"; +import NDKEvent from "../events/index.js"; export interface NDKUserParams { npub?: string; @@ -122,4 +123,56 @@ export default class NDKUser { public tagReference(): NDKTag { return ["p", this.hexpubkey()]; } + + /** + * Publishes the current profile. + */ + public async publish() { + if (!this.ndk) throw new Error("No NDK instance found"); + + this.ndk.assertSigner(); + + const event = new NDKEvent(this.ndk, { + kind: 0, + content: JSON.stringify(this.profile), + } as NostrEvent); + await event.publish(); + } + + /** + * Add a follow to this user's contact list + * + * @param newFollow {NDKUser} The user to follow + * @param currentFollowList {Set} The current follow list + * @returns {Promise} True if the follow was added, false if the follow already exists + */ + public async follow( + newFollow: NDKUser, + currentFollowList?: Set + ): Promise { + if (!this.ndk) throw new Error("No NDK instance found"); + + this.ndk.assertSigner(); + + if (!currentFollowList) { + currentFollowList = await this.follows(); + } + + if (currentFollowList.has(newFollow)) { + return false; + } + + currentFollowList.add(newFollow); + + const event = new NDKEvent(this.ndk, { kind: NDKKind.Contacts } as NostrEvent); + + // This is a horrible hack and I need to fix it + for (const follow of currentFollowList) { + event.tag(follow); + } + + await event.publish(); + + return true; + } } diff --git a/src/user/profile.ts b/src/user/profile.ts index 63b28ca7..acd694fc 100644 --- a/src/user/profile.ts +++ b/src/user/profile.ts @@ -3,7 +3,7 @@ import NDKEvent from "../events/index.js"; /** * NDKUserProfile represents a user's kind 0 profile metadata */ -export interface NDKUserProfile { +export type NDKUserProfile = { [key: string]: string | undefined; // allows custom fields name?: string; displayName?: string; From 686bae7bfcc5ff9d89bf7666a388d926efbe9503 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 1 Jul 2023 11:24:03 +0200 Subject: [PATCH 159/773] Add NDKList support --- package.json | 2 +- src/events/kinds/index.ts | 3 +- src/events/kinds/lists/index.ts | 209 ++++++++++++++++++++++++++++++++ src/index.ts | 6 + src/relay/index.ts | 10 +- src/signers/nip46/index.ts | 1 - 6 files changed, 226 insertions(+), 5 deletions(-) create mode 100644 src/events/kinds/lists/index.ts diff --git a/package.json b/package.json index a0ed3d59..ef412f98 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.6.2", + "version": "0.7.0", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/kinds/index.ts b/src/events/kinds/index.ts index b19e195f..69a6eb8e 100644 --- a/src/events/kinds/index.ts +++ b/src/events/kinds/index.ts @@ -24,10 +24,9 @@ export enum NDKKind { NostrConnect = 24133, CategorizedPeopleList = 30000, CategorizedBookmarkList = 30001, + CategorizedRelayList = 30022, ProfileBadge = 30008, BadgeDefinition = 30009, Article = 30023, AppSpecificData = 30078 } - -// export * from './article.js'; \ No newline at end of file diff --git a/src/events/kinds/lists/index.ts b/src/events/kinds/lists/index.ts new file mode 100644 index 00000000..6260ae46 --- /dev/null +++ b/src/events/kinds/lists/index.ts @@ -0,0 +1,209 @@ +import NDKEvent from '../../index.js'; +import NDK, { NDKKind, NDKRelay, NDKUser } from "../../../index.js"; +import { NDKTag, NostrEvent } from "../../index.js"; + +export type NDKListItem = NDKRelay | NDKUser | NDKEvent; + +/** + * Represents any NIP-33 list kind. + * + * @emits NDKList#change + */ +export class NDKList extends NDKEvent { + public _encryptedTags: NDKTag[] | undefined; + + /** + * Stores the number of bytes the content was before decryption + * to expire the cache when the content changes. + */ + private encryptedTagsLength: number | undefined; + + constructor(ndk?: NDK, rawEvent?: NostrEvent) { + super(ndk, rawEvent); + if (!this.kind) this.kind = NDKKind.CategorizedBookmarkList; + } + + /** + * Wrap a NDKEvent into a NDKList + */ + static from(ndkEvent: NDKEvent): NDKList { + return new NDKList(ndkEvent.ndk, ndkEvent.rawEvent()); + } + + /** + * Returns the name of the list. + */ + get name(): string | undefined { + return this.tagValue('name') ?? this.tagValue('d'); + } + + /** + * Sets the name of the list. + */ + set name(name: string | undefined) { + this.removeTag('name'); + + if (name) { + this.tags.push(['name', name]); + } else { + throw new Error('Name cannot be empty'); + } + } + + /** + * Returns the description of the list. + */ + get description(): string | undefined { + return this.tagValue('description'); + } + + /** + * Sets the description of the list. + */ + set description(name: string | undefined) { + if (name) { + this.tags.push(['description', name]); + } else { + this.removeTag('description'); + } + } + + private isEncryptedTagsCacheValid(): boolean { + return !!(this._encryptedTags && this.encryptedTagsLength === this.content.length); + } + + /** + * Returns the decrypted content of the list. + */ + async encryptedTags(useCache = true): Promise { + if (useCache && this.isEncryptedTagsCacheValid()) + return this._encryptedTags!; + + if (!this.ndk) throw new Error('NDK instance not set'); + if (!this.ndk.signer) throw new Error('NDK signer not set'); + + const user = await this.ndk.signer.user(); + + try { + if (this.content.length > 0) { + try { + const decryptedContent = await this.ndk.signer.decrypt(user, this.content); + const a = JSON.parse(decryptedContent); + if (a && a[0]) { + this.encryptedTagsLength = this.content.length; + return this._encryptedTags = a; + } + this.encryptedTagsLength = this.content.length; + return this._encryptedTags = []; + } catch (e) { + console.log(`error decrypting ${this.content}`); + } + } + } catch (e) { + // console.trace(e); + // throw e; + } + + return []; + } + + /** + * This method can be overriden to validate that a tag is valid for this list. + * + * (i.e. the NDKPersonList can validate that items are NDKUser instances) + */ + public validateTag(tagValue: string): boolean | string { + return true; + } + + /** + * Returns the unecrypted items in this list. + */ + get items(): NDKTag[] { + return this.tags.filter((t) => { + return !['d', 'name', 'description'].includes(t[0]); + }); + } + + /** + * Adds a new item to the list. + * @param relay Relay to add + * @param mark Optional mark to add to the item + * @param encrypted Whether to encrypt the item + */ + async addItem( + item: NDKListItem | NDKTag, + mark: string | undefined = undefined, + encrypted = false + ): Promise { + if (!this.ndk) throw new Error('NDK instance not set'); + if (!this.ndk.signer) throw new Error('NDK signer not set'); + + let tag; + + if (item instanceof NDKEvent) { + tag = item.tagReference(); + } else if (item instanceof NDKUser) { + tag = item.tagReference(); + } else if (item instanceof NDKRelay) { + tag = item.tagReference(); + } else if (Array.isArray(item)) { + // NDKTag + tag = item; + } else { + throw new Error('Invalid object type'); + } + + if (mark) tag.push(mark); + + if (encrypted) { + const user = await this.ndk.signer.user(); + const currentList = await this.encryptedTags(); + + currentList.push(tag); + + this._encryptedTags = currentList; + this.encryptedTagsLength = this.content.length; + this.content = JSON.stringify(currentList); + await this.encrypt(user); + } else { + this.tags.push(tag); + } + + this.created_at = Math.floor(Date.now() / 1000); + + this.emit('change'); + } + + /** + * Removes an item from the list. + * + * @param index The index of the item to remove. + * @param encrypted Whether to remove from the encrypted list or not. + */ + async removeItem(index: number, encrypted: boolean): Promise { + if (!this.ndk) throw new Error('NDK instance not set'); + if (!this.ndk.signer) throw new Error('NDK signer not set'); + + if (encrypted) { + const user = await this.ndk.signer.user(); + const currentList = await this.encryptedTags(); + + currentList.splice(index, 1); + this._encryptedTags = currentList; + this.encryptedTagsLength = this.content.length; + this.content = JSON.stringify(currentList); + await this.encrypt(user); + } else { + this.tags.splice(index, 1); + } + + this.created_at = Math.floor(Date.now() / 1000); + + this.emit('change'); + + return this; + } +} + +export default NDKList; diff --git a/src/index.ts b/src/index.ts index cbff7d4f..32bcb8f2 100644 --- a/src/index.ts +++ b/src/index.ts @@ -19,6 +19,8 @@ import { NDKUserProfile } from "./user/profile.js"; export * from "./events/index.js"; export * from "./events/kinds/index.js"; +export * from './events/kinds/article.js'; +export * from './events/kinds/lists/index.js'; export * from "./relay/index.js"; export * from "./relay/sets/index.js"; export * from "./signers/index.js"; @@ -67,6 +69,10 @@ export default class NDK extends EventEmitter { } } + public toJSON(): string { + return {relayCount: this.pool.relays.size}.toString(); + } + /** * Connect to relays with optional timeout. * If the timeout is reached, the connection will be continued to be established in the background. diff --git a/src/relay/index.ts b/src/relay/index.ts index 293aceaa..d8a67760 100644 --- a/src/relay/index.ts +++ b/src/relay/index.ts @@ -2,7 +2,7 @@ import EventEmitter from "eventemitter3"; import type { Event as SignedEvent } from "nostr-tools"; import { relayInit, Sub } from "nostr-tools"; import "websocket-polyfill"; -import NDKEvent, { NostrEvent } from "../events/index.js"; +import NDKEvent, { NDKTag, NostrEvent } from "../events/index.js"; import { NDKSubscription } from "../subscription/index.js"; import User from "../user/index.js"; import { NDKRelayScore } from "./score.js"; @@ -265,4 +265,12 @@ export class NDKRelay extends EventEmitter { get connectionStats(): NDKRelayConnectionStats { return this._connectionStats; } + + public tagReference(marker?: string): NDKTag { + const tag = [ 'r', this.relay.url ]; + + if (marker) { tag.push(marker); } + + return tag; + } } diff --git a/src/signers/nip46/index.ts b/src/signers/nip46/index.ts index b5e34a8e..5a92a2d9 100644 --- a/src/signers/nip46/index.ts +++ b/src/signers/nip46/index.ts @@ -14,7 +14,6 @@ export class NDKNip46Signer implements NDKSigner { private rpc: NDKNostrRpc; private debug: debug.Debugger; - /** * @param ndk - The NDK instance to use * @param token - connection token, in the form "npub#otp" From a6faf0c8ff6c6e1066f7569c67e10633d54e0511 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 1 Jul 2023 11:38:30 +0200 Subject: [PATCH 160/773] improve docs --- src/events/kinds/lists/index.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/events/kinds/lists/index.ts b/src/events/kinds/lists/index.ts index 6260ae46..b614d424 100644 --- a/src/events/kinds/lists/index.ts +++ b/src/events/kinds/lists/index.ts @@ -7,6 +7,21 @@ export type NDKListItem = NDKRelay | NDKUser | NDKEvent; /** * Represents any NIP-33 list kind. * + * This class provides some helper methods to manage the list, particularly + * a CRUD interface to list items. + * + * List items can be encrypted or not. Encrypted items are JSON-encoded and + * self-signed by the user's key. + * + * @example Adding an event to the list. + * const event1 = new NDKEvent(...); + * const list = new NDKList(); + * list.addItem(event1); + * + * @example Adding an encrypted `p` tag to the list with a "person" mark. + * const secretFollow = new NDKUser(...); + * list.addItem(secretFollow, 'person', true); + * * @emits NDKList#change */ export class NDKList extends NDKEvent { From eda5776bd3d12f6331cc96ac31a7a24454354495 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 4 Jul 2023 16:16:50 +0200 Subject: [PATCH 161/773] Fix bug where signer must be explicitly passed to sign events --- package.json | 2 +- src/events/index.ts | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index ef412f98..64b3c851 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.7.0", + "version": "0.7.1", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/index.ts b/src/events/index.ts index 06cd28a1..1f8219fe 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -201,8 +201,12 @@ export default class NDKEvent extends EventEmitter { * @param signer {NDKSigner} The NDKSigner to use to sign the event * @returns {Promise} A Promise that resolves to the signature of the signed event. */ - public async sign(signer?: NDKSigner) { - signer || this.ndk?.assertSigner(); + public async sign(signer?: NDKSigner): Promise { + if (!signer) { + this.ndk?.assertSigner(); + + signer = this.ndk!.signer!; + } await this.generateTags(); @@ -211,8 +215,10 @@ export default class NDKEvent extends EventEmitter { } const nostrEvent = await this.toNostrEvent(); - const _signer = signer || this.ndk?.signer; - this.sig = await _signer!.sign(nostrEvent); + + this.sig = await signer.sign(nostrEvent); + + return this.sig; } /** From ae6120f4f21334a2b0f0d94c360dca9a26d0d234 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 4 Jul 2023 16:28:20 +0200 Subject: [PATCH 162/773] handle better emitting the connected event when there pool is partially connected --- package.json | 2 +- src/relay/pool/index.ts | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 64b3c851..d6e9b806 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.7.1", + "version": "0.7.2", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/relay/pool/index.ts b/src/relay/pool/index.ts index 8bf139ba..d3f9e227 100644 --- a/src/relay/pool/index.ts +++ b/src/relay/pool/index.ts @@ -12,7 +12,7 @@ export type NDKPoolStats = { /** * Handles connections to all relays. A single pool should be used per NDK instance. * - * @emit connect - Emitted when all relays in the pool are connected. + * @emit connect - Emitted when all relays in the pool are connected, or when the specified timeout has elapsed, and some relays are connected. * @emit notice - Emitted when a relay in the pool sends a notice. * @emit flapping - Emitted when a relay in the pool is flapping. * @emit relay:connect - Emitted when a relay in the pool connects. @@ -78,6 +78,19 @@ export class NDKPool extends EventEmitter { } } + // If we are running with a timeout, check if we need to emit a `connect` event + // in case some, but not all, relays were connected + if (timeoutMs) { + setTimeout(() => { + const allConnected = this.stats().connected === this.relays.size; + const someConnected = this.stats().connected > 0; + + if (!allConnected && someConnected) { + this.emit("connect"); + } + }, timeoutMs); + } + await Promise.all(promises); } From 7597a9f7d2d35891363a849f09ecbc24200d9750 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 4 Jul 2023 16:37:22 +0200 Subject: [PATCH 163/773] fix pool's `connect` emit race condition --- package.json | 2 +- src/relay/index.ts | 4 ++-- src/relay/pool/index.ts | 1 - 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index d6e9b806..4dec0d68 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.7.2", + "version": "0.7.3", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/relay/index.ts b/src/relay/index.ts index d8a67760..f1c712db 100644 --- a/src/relay/index.ts +++ b/src/relay/index.ts @@ -73,19 +73,19 @@ export class NDKRelay extends EventEmitter { this.relay.on("connect", () => { this.updateConnectionStats.connected(); - this.emit("connect"); this._status = NDKRelayStatus.CONNECTED; + this.emit("connect"); }); this.relay.on("disconnect", () => { this.updateConnectionStats.disconnected(); - this.emit("disconnect"); if (this._status === NDKRelayStatus.CONNECTED) { this._status = NDKRelayStatus.DISCONNECTED; this.handleReconnection(); } + this.emit("disconnect"); }); this.relay.on("notice", (notice: string) => this.handleNotice(notice)); diff --git a/src/relay/pool/index.ts b/src/relay/pool/index.ts index d3f9e227..18b8c81f 100644 --- a/src/relay/pool/index.ts +++ b/src/relay/pool/index.ts @@ -39,7 +39,6 @@ export class NDKPool extends EventEmitter { this.debug(`Relay ${relayUrl} connected`); this.emit("relay:connect", this.relays.get(relayUrl)); - // if all relays are connected, emit a 'connect' event if (this.stats().connected === this.relays.size) { this.emit("connect"); } From 3808676ca8963a62b2a43a5b6d0ae50b3112b467 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Thu, 6 Jul 2023 18:07:48 +0200 Subject: [PATCH 164/773] report with not authorized when a key tries to sign with a nip46 backend --- package.json | 2 +- src/relay/pool/index.ts | 1 + src/signers/nip46/backend/index.ts | 9 +++++++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 4dec0d68..96de8b3c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.7.3", + "version": "0.7.4", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/relay/pool/index.ts b/src/relay/pool/index.ts index 18b8c81f..b8664f40 100644 --- a/src/relay/pool/index.ts +++ b/src/relay/pool/index.ts @@ -1,6 +1,7 @@ import EventEmitter from "eventemitter3"; import NDK from "../../index.js"; import { NDKRelay, NDKRelayStatus } from "../index.js"; +import debug from "debug"; export type NDKPoolStats = { total: number; diff --git a/src/signers/nip46/backend/index.ts b/src/signers/nip46/backend/index.ts index c1f5c14f..ca35923e 100644 --- a/src/signers/nip46/backend/index.ts +++ b/src/signers/nip46/backend/index.ts @@ -6,6 +6,7 @@ import GetPublicKeyHandlingStrategy from "./get-public-key.js"; import SignEventHandlingStrategy from "./sign-event.js"; import Nip04DecryptHandlingStrategy from "./nip04-decrypt.js"; import Nip04EncryptHandlingStrategy from "./nip04-encrypt.js"; +import { verifySignature, Event } from 'nostr-tools'; export type Nip46PermitCallback = ( pubkey: string, @@ -106,6 +107,12 @@ export class NDKNip46Backend { this.debug("incoming event", { id, method, params }); + // validate signature explicitly + if (!verifySignature(event.rawEvent() as Event)) { + this.debug("invalid signature", event.rawEvent()); + return; + } + const strategy = this.handlers[method]; if (strategy) { try { @@ -121,6 +128,8 @@ export class NDKNip46Backend { if (response) { this.debug(`sending response to ${remotePubkey}`, response); this.rpc.sendResponse(id, remotePubkey, response); + } else { + this.rpc.sendResponse(id, remotePubkey, "error", undefined, "Not authorized"); } } From e8d83605e01c0e329ed141736e52a9bdd7dc1676 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 8 Jul 2023 14:52:16 +0200 Subject: [PATCH 165/773] 0.7.5 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 96de8b3c..65c7a1d9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.7.4", + "version": "0.7.5", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", From 68d8deeeffed67b1d4f52e5aac5ff957c0bc5290 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Thu, 13 Jul 2023 19:53:04 +0200 Subject: [PATCH 166/773] Attempt to publish notes later if attempting to publish a relay that's down --- package.json | 4 +-- pnpm-lock.yaml | 8 ++--- src/events/index.ts | 13 +++++--- src/index.ts | 14 ++++++--- src/relay/index.ts | 69 +++++++++++++++++++++++++++++++++++------ src/relay/sets/index.ts | 34 +++++++++++++++----- 6 files changed, 111 insertions(+), 31 deletions(-) diff --git a/package.json b/package.json index 65c7a1d9..68856a3a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.7.5", + "version": "0.7.6", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", @@ -62,7 +62,7 @@ "eslint-config-prettier": "^8.8.0", "eslint-plugin-import": "^2.27.5", "esm-loader-typescript": "^1.0.4", - "eventemitter3": "^5.0.0", + "eventemitter3": "^5.0.1", "light-bolt11-decoder": "^3.0.0", "node-fetch": "^3.3.1", "nostr-tools": "^1.11.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ac7962e4..127f13a6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,8 +42,8 @@ dependencies: specifier: ^1.0.4 version: 1.0.4 eventemitter3: - specifier: ^5.0.0 - version: 5.0.0 + specifier: ^5.0.1 + version: 5.0.1 light-bolt11-decoder: specifier: ^3.0.0 version: 3.0.0 @@ -2492,8 +2492,8 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - /eventemitter3@5.0.0: - resolution: {integrity: sha512-riuVbElZZNXLeLEoprfNYoDSwTBRR44X3mnhdI1YcnENpWTCsTTVZ2zFuqQcpoyqPQIUXdiPEU0ECAq0KQRaHg==} + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} dev: false /execa@5.1.1: diff --git a/src/events/index.ts b/src/events/index.ts index 1f8219fe..3343d6eb 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -222,14 +222,19 @@ export default class NDKEvent extends EventEmitter { } /** - * Attempt to sign and then publish an NDKEvent to a given relaySet + * Attempt to sign and then publish an NDKEvent to a given relaySet. + * If no relaySet is provided, the relaySet will be calculated by NDK. * @param relaySet {NDKRelaySet} The relaySet to publish the even to. - * @returns {Promise} + * @returns A promise that resolves to the number of relays the event was published to. */ - public async publish(relaySet?: NDKRelaySet): Promise { + public async publish( + relaySet?: NDKRelaySet, + timeoutMs?: number + ): Promise { if (!this.sig) await this.sign(); + if (!this.ndk) throw new Error("NDKEvent must be associated with an NDK instance to publish"); - return this.ndk?.publish(this, relaySet); + return this.ndk.publish(this, relaySet, timeoutMs); } /** diff --git a/src/index.ts b/src/index.ts index 32bcb8f2..055adb98 100644 --- a/src/index.ts +++ b/src/index.ts @@ -117,17 +117,23 @@ export default class NDK extends EventEmitter { } /** - * Publish an event + * Publish an event to a relay * @param event event to publish - * @returns + * @param relaySet explicit relay set to use + * @param timeoutMs timeout in milliseconds to wait for the event to be published + * @returns The number of relays the event was published to */ - public async publish(event: NDKEvent, relaySet?: NDKRelaySet): Promise { + public async publish( + event: NDKEvent, + relaySet?: NDKRelaySet, + timeoutMs?: number + ): Promise { if (!relaySet) { // If we have a devWriteRelaySet, use it to publish all events relaySet = this.devWriteRelaySet || calculateRelaySetFromEvent(this, event); } - return relaySet.publish(event); + return relaySet.publish(event, timeoutMs); } /** diff --git a/src/relay/index.ts b/src/relay/index.ts index f1c712db..1e62219f 100644 --- a/src/relay/index.ts +++ b/src/relay/index.ts @@ -1,5 +1,4 @@ import EventEmitter from "eventemitter3"; -import type { Event as SignedEvent } from "nostr-tools"; import { relayInit, Sub } from "nostr-tools"; import "websocket-polyfill"; import NDKEvent, { NDKTag, NostrEvent } from "../events/index.js"; @@ -46,6 +45,7 @@ export interface NDKRelayConnectionStats { * @emits NDKRelay#disconnect * @emits NDKRelay#notice * @emits NDKRelay#event + * @emits NDKRelay#published when an event is published to the relay * @emits NDKRelay#eose */ export class NDKRelay extends EventEmitter { @@ -206,20 +206,69 @@ export class NDKRelay extends EventEmitter { } /** - * Publishes an event to the relay. + * Publishes an event to the relay with an optional timeout. + * + * If the relay is not connected, the event will be published when the relay connects, + * unless the timeout is reached before the relay connects. + * + * @param event The event to publish + * @param timeoutMs The timeout for the publish operation in milliseconds + * @returns A promise that resolves when the event has been published or rejects if the operation times out */ - public async publish(event: NDKEvent): Promise { - const nostrEvent = (await event.toNostrEvent()) as SignedEvent; - const a = this.relay.publish(nostrEvent); - a.on('failed', (err: any) => { - this.debug('Publish failed', err, event.rawEvent()); + public async publish( + event: NDKEvent, + timeoutMs = 2500 + ): Promise { + if (this.status === NDKRelayStatus.CONNECTED) { + return this.publishEvent(event, timeoutMs); + } else { + this.once('connect', () => { + this.publishEvent(event, timeoutMs); + }); + return true; + } + } + + private async publishEvent( + event: NDKEvent, + timeoutMs?: number + ): Promise { + const nostrEvent = (await event.toNostrEvent()); + const a = this.relay.publish(nostrEvent as any); + let publishTimeout: NodeJS.Timeout; + + const publishPromise = new Promise((resolve, reject) => { + a.on('failed', (err: any) => { + clearTimeout(publishTimeout); + this.debug('Publish failed', err, event.rawEvent()); + reject(err); + }); + + a.on('ok', () => { + clearTimeout(publishTimeout); + this.debug('Publish ok', event.rawEvent()); + this.emit('published', event); + resolve(true); + }); + + this.debug(`Published event ${event.id}`, event.rawEvent()); }); - a.on('ok', () => { - this.debug('Publish ok', event.rawEvent()); + // If no timeout is specified, just return the publish promise + if (!timeoutMs) { + return publishPromise; + } + + // Create a promise that rejects after timeoutMs milliseconds + const timeoutPromise = new Promise((_, reject) => { + publishTimeout = setTimeout(() => { + this.debug('Publish timed out', event.rawEvent()); + reject(new Error('Publish operation timed out')); + }, timeoutMs); }); - this.debug(`Published event ${event.id}`, event.rawEvent()); + // wait for either the publish operation to complete or the timeout to occur + return Promise.race([publishPromise, timeoutPromise]); } /** diff --git a/src/relay/sets/index.ts b/src/relay/sets/index.ts index 6d912981..1bc306c8 100644 --- a/src/relay/sets/index.ts +++ b/src/relay/sets/index.ts @@ -137,14 +137,34 @@ export class NDKRelaySet { return subscription; } - public async publish(event: NDKEvent): Promise { - this.relays.forEach(async (relay) => { - try { - // TODO: if relay is not connected, don't try to send, but rather attach - // to `connected` event and send it at that moment - await relay.publish(event); - } catch (e) {} + /** + * Publish an event to all relays in this set. Returns the number of relays that have received the event. + * @param event + * @param timeoutMs - timeout in milliseconds for each publish operation and connection operation + */ + public async publish( + event: NDKEvent, + timeoutMs?: number + ): Promise { + let successfulPublications = 0; + + // go through each relay and publish the event + const promises: Promise[] = Array.from(this.relays).map((relay: NDKRelay) => { + return new Promise((resolve) => { + relay.publish(event, timeoutMs).then(() => { + successfulPublications++; + resolve(); + }); + }); }); + + await Promise.all(promises); + + if (successfulPublications === 0) { + throw new Error('No relay was able to receive the event'); + } + + return successfulPublications; } public size(): number { From 33d9e86159ff93f7c8af306b77b93abf1c5ed730 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Fri, 14 Jul 2023 17:26:07 +0200 Subject: [PATCH 167/773] bug fix: fix incorrect publish resolve when a single publish fails * make publish return the a set of the relays where a publish was successful * emit an event when publishing to a relay failed --- package.json | 2 +- src/events/index.ts | 4 ++-- src/index.ts | 5 +++-- src/relay/index.ts | 12 +++++++----- src/relay/sets/index.ts | 14 +++++++++----- 5 files changed, 22 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 68856a3a..ae7aead7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.7.6", + "version": "0.7.7", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/index.ts b/src/events/index.ts index 3343d6eb..3ab78fa1 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -225,12 +225,12 @@ export default class NDKEvent extends EventEmitter { * Attempt to sign and then publish an NDKEvent to a given relaySet. * If no relaySet is provided, the relaySet will be calculated by NDK. * @param relaySet {NDKRelaySet} The relaySet to publish the even to. - * @returns A promise that resolves to the number of relays the event was published to. + * @returns A promise that resolves to the relays the event was published to. */ public async publish( relaySet?: NDKRelaySet, timeoutMs?: number - ): Promise { + ): Promise> { if (!this.sig) await this.sign(); if (!this.ndk) throw new Error("NDKEvent must be associated with an NDK instance to publish"); diff --git a/src/index.ts b/src/index.ts index 055adb98..973ddaf1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -16,6 +16,7 @@ import { } from "./subscription/index.js"; import NDKUser, { NDKUserParams } from "./user/index.js"; import { NDKUserProfile } from "./user/profile.js"; +import type { NDKRelay } from "./relay/index.js"; export * from "./events/index.js"; export * from "./events/kinds/index.js"; @@ -121,13 +122,13 @@ export default class NDK extends EventEmitter { * @param event event to publish * @param relaySet explicit relay set to use * @param timeoutMs timeout in milliseconds to wait for the event to be published - * @returns The number of relays the event was published to + * @returns The relays the event was published to */ public async publish( event: NDKEvent, relaySet?: NDKRelaySet, timeoutMs?: number - ): Promise { + ): Promise> { if (!relaySet) { // If we have a devWriteRelaySet, use it to publish all events relaySet = this.devWriteRelaySet || calculateRelaySetFromEvent(this, event); diff --git a/src/relay/index.ts b/src/relay/index.ts index 1e62219f..2dbc40db 100644 --- a/src/relay/index.ts +++ b/src/relay/index.ts @@ -46,6 +46,7 @@ export interface NDKRelayConnectionStats { * @emits NDKRelay#notice * @emits NDKRelay#event * @emits NDKRelay#published when an event is published to the relay + * @emits NDKRelay#publish:failed when an event fails to publish to the relay * @emits NDKRelay#eose */ export class NDKRelay extends EventEmitter { @@ -157,8 +158,10 @@ export class NDKRelay extends EventEmitter { // remove it from relay set selection for a minute. if (notice.includes("oo many") || notice.includes("aximum")) { this.disconnect(); + + // fixme setTimeout(() => this.connect(), 2000); - console.log(this.relay.url, "Relay complaining?", notice); + this.debug(this.relay.url, "Relay complaining?", notice); // this.complaining = true; // setTimeout(() => { // this.complaining = false; @@ -240,18 +243,16 @@ export class NDKRelay extends EventEmitter { const publishPromise = new Promise((resolve, reject) => { a.on('failed', (err: any) => { clearTimeout(publishTimeout); - this.debug('Publish failed', err, event.rawEvent()); + this.debug('Publish failed', err, event.id); + this.emit('publish:failed', event, err); reject(err); }); a.on('ok', () => { clearTimeout(publishTimeout); - this.debug('Publish ok', event.rawEvent()); this.emit('published', event); resolve(true); }); - - this.debug(`Published event ${event.id}`, event.rawEvent()); }); // If no timeout is specified, just return the publish promise @@ -263,6 +264,7 @@ export class NDKRelay extends EventEmitter { const timeoutPromise = new Promise((_, reject) => { publishTimeout = setTimeout(() => { this.debug('Publish timed out', event.rawEvent()); + this.emit('publish:failed', event, "Timeout"); reject(new Error('Publish operation timed out')); }, timeoutMs); }); diff --git a/src/relay/sets/index.ts b/src/relay/sets/index.ts index 1bc306c8..9f05f83a 100644 --- a/src/relay/sets/index.ts +++ b/src/relay/sets/index.ts @@ -141,18 +141,22 @@ export class NDKRelaySet { * Publish an event to all relays in this set. Returns the number of relays that have received the event. * @param event * @param timeoutMs - timeout in milliseconds for each publish operation and connection operation + * @returns A set where the event was successfully published to */ public async publish( event: NDKEvent, timeoutMs?: number - ): Promise { - let successfulPublications = 0; + ): Promise> { + const publishedToRelays: Set= new Set(); // go through each relay and publish the event const promises: Promise[] = Array.from(this.relays).map((relay: NDKRelay) => { return new Promise((resolve) => { relay.publish(event, timeoutMs).then(() => { - successfulPublications++; + publishedToRelays.add(relay); + resolve(); + }).catch((err) => { + this.debug("error publishing to relay", { relay: relay.url, err }); resolve(); }); }); @@ -160,11 +164,11 @@ export class NDKRelaySet { await Promise.all(promises); - if (successfulPublications === 0) { + if (publishedToRelays.size === 0) { throw new Error('No relay was able to receive the event'); } - return successfulPublications; + return publishedToRelays; } public size(): number { From 133ec3d6ef6e204f9924a2e888f492f114548cff Mon Sep 17 00:00:00 2001 From: natoe33 Date: Fri, 21 Jul 2023 06:18:19 -0400 Subject: [PATCH 168/773] Add Marketplace Kinds --- src/events/kinds/index.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/events/kinds/index.ts b/src/events/kinds/index.ts index 69a6eb8e..cc7cb611 100644 --- a/src/events/kinds/index.ts +++ b/src/events/kinds/index.ts @@ -27,6 +27,8 @@ export enum NDKKind { CategorizedRelayList = 30022, ProfileBadge = 30008, BadgeDefinition = 30009, + MarketStall = 30017, + MarketProduct = 30018, Article = 30023, AppSpecificData = 30078 } From 6304f817fdc39dfa10ed3c391aaa0e741188515b Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 1 Aug 2023 17:11:28 +0300 Subject: [PATCH 169/773] add references --- README.md | 2 +- REFERENCES.md | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 REFERENCES.md diff --git a/README.md b/README.md index 69bc02b4..c008e029 100644 --- a/README.md +++ b/README.md @@ -312,7 +312,7 @@ await event.react("🤙"); ```ts // Find the first event from @jack, and zap it. const event = await ndk.fetchEvent({ author: "jack@cashapp.com" })[0]; -await event.zap(1337, "Zapping your post!"); // Returns a zap request +await event.zap(1337, "Zapping your post!"); // Returns a bolt11 payment request ``` ## Architecture decisions & suggestions diff --git a/REFERENCES.md b/REFERENCES.md new file mode 100644 index 00000000..6faac900 --- /dev/null +++ b/REFERENCES.md @@ -0,0 +1,16 @@ +# Open source Nostr apps using NDK + +This is a running list of applications using NDK that are open source. Use these codebases to understand +how others handle Nostr things using NDK. + +If you are the author of an application that uses NDK, send a pull-request to this repo adding your application +to this list. + +[Highlighter](https://github.com/kind-0/highlighter) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) + * Svelte, frontend +[nsecBunker](https://github.com/kind-0/nsecbunkerd) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) + * Typescript, backend +[Highlighter Chrome Extension](https://github.com/pablof7z/highlighter-chrome-extension/) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) + * Typescript, Chrome extension +[Nostr Data Vending Machine](https://github.com/pablof7z/nostr-data-vending-machine) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) +[Nostr Chat Widget](https://github.com/pablof7z/nostr-chat-widget) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) From e0bd1b245b126b9348e818afb8b6ab63ef1159eb Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 1 Aug 2023 17:14:10 +0300 Subject: [PATCH 170/773] format references --- README.md | 6 +++++- REFERENCES.md | 12 +++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index c008e029..dbec6d78 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ localStorage.debug = 'ndk:*' - Signing Adapters - [x] Private key - [x] NIP-07 - - [ ] NIP-26 + - [!] ~~NIP-26~~ Won't add / NIP-26 is dead - [x] NIP-46 - [x] Permission tokens - Relay discovery @@ -74,6 +74,10 @@ localStorage.debug = 'ndk:*' - [ ] Explicit relays blacklist - [ ] nostr-tools/SimplePool drop-in replacement interface +## Read-world uses of NDK + +See [REFERENCES.md](./REFERENCES.md) for a list of projects using NDK to see how others are using it. + ## Instantiate an NDK instance You can pass an object with several options to a newly created instance of NDK. diff --git a/REFERENCES.md b/REFERENCES.md index 6faac900..20ef1f30 100644 --- a/REFERENCES.md +++ b/REFERENCES.md @@ -6,11 +6,13 @@ how others handle Nostr things using NDK. If you are the author of an application that uses NDK, send a pull-request to this repo adding your application to this list. -[Highlighter](https://github.com/kind-0/highlighter) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) +* [Highlighter](https://github.com/kind-0/highlighter) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) * Svelte, frontend -[nsecBunker](https://github.com/kind-0/nsecbunkerd) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) +* [nsecBunker](https://github.com/kind-0/nsecbunkerd) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) * Typescript, backend -[Highlighter Chrome Extension](https://github.com/pablof7z/highlighter-chrome-extension/) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) +* [Highlighter Chrome Extension](https://github.com/pablof7z/highlighter-chrome-extension/) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) * Typescript, Chrome extension -[Nostr Data Vending Machine](https://github.com/pablof7z/nostr-data-vending-machine) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) -[Nostr Chat Widget](https://github.com/pablof7z/nostr-chat-widget) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) +* [Nostr Data Vending Machine](https://github.com/pablof7z/nostr-data-vending-machine) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) + * Typescript, backend +* [Nostr Chat Widget](https://github.com/pablof7z/nostr-chat-widget) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) + * Svelte, Rollup, embeddable widget From 8db3085405cde0b9e4e89c1a8e0f479beb43a9ee Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 1 Aug 2023 17:25:28 +0300 Subject: [PATCH 171/773] add more references --- REFERENCES.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/REFERENCES.md b/REFERENCES.md index 20ef1f30..99144dd2 100644 --- a/REFERENCES.md +++ b/REFERENCES.md @@ -16,3 +16,15 @@ to this list. * Typescript, backend * [Nostr Chat Widget](https://github.com/pablof7z/nostr-chat-widget) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) * Svelte, Rollup, embeddable widget +* [Zapstr](https://github.com/pablof7z/nostr-chat-widget) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) + * Svelte - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) +* [Ostrich.work](https://github.com/erskingardner/ostrich.work) - By [@jeffg](https://nostr.com/npub1zuuajd7u3sx8xu92yav9jwxpr839cs0kc3q6t56vd5u9q033xmhsk6c2uc) + * Svelte, frontend +* [Listr.lol](https://github.com/erskingardner/listr) - By [@jeffg](https://nostr.com/npub1zuuajd7u3sx8xu92yav9jwxpr839cs0kc3q6t56vd5u9q033xmhsk6c2uc) + * Svelte, frontend +* [Lume](https://github.com/luminous-devs/lume) - By [@reya](https://nostr.com/npub1zfss807aer0j26mwp2la0ume0jqde3823rmu97ra6sgyyg956e0s6xw445) + * Tauri, Desktop app +* [Nostr App Manager](https://github.com/nostrband/nostr-app-manager) - By [@nostrband](https://nostr.com/npub1wc4rc9wxl2gfzxl384g0cw3f79nrms0sfdpe02y7aasy7c3we4sqd0qywr) + * React, Frontend +* [Stemstr](https://github.com/stemstr/Client) - By [@stemstr](https://nostr.com/npub1stemstrls4f5plqeqkeq43gtjhtycuqd9w25v5r5z5ygaq2n2sjsd6mul5) +* [Audgit.ai](https://github.com/ArcadeLabsInc/audgit.ai) - By [@ArcadeLabsInc](https://nostr.com/npub1tlv67m7xvlyplzexuynmfpguvyet0sjffce3y8vu0suuyuwgzauqjk7fdm) \ No newline at end of file From 1db235c85a070ac978cf8e6ba87f5db55799869b Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 1 Aug 2023 17:29:07 +0300 Subject: [PATCH 172/773] Correct one line --- REFERENCES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/REFERENCES.md b/REFERENCES.md index 99144dd2..1181386d 100644 --- a/REFERENCES.md +++ b/REFERENCES.md @@ -17,7 +17,7 @@ to this list. * [Nostr Chat Widget](https://github.com/pablof7z/nostr-chat-widget) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) * Svelte, Rollup, embeddable widget * [Zapstr](https://github.com/pablof7z/nostr-chat-widget) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) - * Svelte - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) + * Svelte, Frontend * [Ostrich.work](https://github.com/erskingardner/ostrich.work) - By [@jeffg](https://nostr.com/npub1zuuajd7u3sx8xu92yav9jwxpr839cs0kc3q6t56vd5u9q033xmhsk6c2uc) * Svelte, frontend * [Listr.lol](https://github.com/erskingardner/listr) - By [@jeffg](https://nostr.com/npub1zuuajd7u3sx8xu92yav9jwxpr839cs0kc3q6t56vd5u9q033xmhsk6c2uc) From b080f8091690f33e71282ba7a59b431759ff40f1 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 1 Aug 2023 23:10:49 +0300 Subject: [PATCH 173/773] EOSE when relays are not going to be queried to signal that the cache check finished --- src/subscription/index.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/subscription/index.ts b/src/subscription/index.ts index a7d66376..b15c61e5 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -213,6 +213,8 @@ export class NDKSubscription extends EventEmitter { if (this.shouldQueryRelays()) { this.startWithRelaySet(); + } else { + this.emit("eose", this); } return; From dbe1bcf81da111da4bc12cb83011a63443580482 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Wed, 2 Aug 2023 15:46:22 +0300 Subject: [PATCH 174/773] Add some extra kinds --- src/events/kinds/index.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/events/kinds/index.ts b/src/events/kinds/index.ts index cc7cb611..12bd367e 100644 --- a/src/events/kinds/index.ts +++ b/src/events/kinds/index.ts @@ -17,6 +17,7 @@ export enum NDKKind { Report = 1984, ZapRequest = 9734, Zap = 9735, + Highlight = 9802, MuteList = 10000, PinList = 10001, RelayList = 10002, @@ -30,5 +31,11 @@ export enum NDKKind { MarketStall = 30017, MarketProduct = 30018, Article = 30023, - AppSpecificData = 30078 + AppSpecificData = 30078, + CategorizedHighlightList = 39802, + + // NIP-90: Data Vending Machines + DVMJobFeedback = 65000, + DVMJobResult = 65001, + DVMJobRequestTranscription = 65002, } From 02c3bdfcec74def94a44d1a079fa41aaed540838 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Wed, 2 Aug 2023 15:47:05 +0300 Subject: [PATCH 175/773] When loading a user profile, hit the cache immediately without grouping --- src/user/index.ts | 44 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/src/user/index.ts b/src/user/index.ts index dd921b6d..cd753f7f 100644 --- a/src/user/index.ts +++ b/src/user/index.ts @@ -1,10 +1,11 @@ import { nip05, nip19 } from "nostr-tools"; import Event, { NDKTag, NostrEvent } from "../events/index.js"; import NDK, { NDKKind } from "../index.js"; -import { NDKFilterOptions } from "../subscription/index.js"; +import { NDKSubscriptionCacheUsage } from "../subscription/index.js"; import { follows } from "./follows.js"; import { mergeEvent, NDKUserProfile } from "./profile"; import NDKEvent from "../events/index.js"; +import { NDKSubscriptionOptions } from "../../dist/index.js"; export interface NDKUserParams { npub?: string; @@ -60,21 +61,48 @@ export default class NDKUser { /** * Fetch a user's kind 0 metadata events and merge the events in a single up-to-date profile - * @param opts {NDKFilterOptions} A set of NDKFilterOptions + * @param opts {NDKSubscriptionOptions} A set of NDKSubscriptionOptions * @returns {Promise>} A set of all NDKEvents events returned for the given user */ - public async fetchProfile(opts?: NDKFilterOptions): Promise | null> { + public async fetchProfile(opts?: NDKSubscriptionOptions): Promise | null> { if (!this.ndk) throw new Error("NDK not set"); if (!this.profile) this.profile = {}; - const setMetadataEvents = await this.ndk.fetchEvents( - { + let setMetadataEvents: Set | null = null; + + // if no options have been set and we have a cache, try to load from cache with no grouping + // This is done in favour of simply using NDKSubscriptionCacheUsage.CACHE_FIRST since + // we want to avoid depending on the grouping, arguably, all queries should go through this + // type of behavior when we have a locking cache + if (!opts && // if no options have been set + this.ndk.cacheAdapter && // and we have a cache + this.ndk.cacheAdapter.locking // and the cache identifies itself as fast 😂 + ) { + setMetadataEvents = await this.ndk.fetchEvents({ kinds: [0], authors: [this.hexpubkey()] - }, - opts - ); + }, { + cacheUsage: NDKSubscriptionCacheUsage.ONLY_CACHE, + closeOnEose: true, + groupable: false + }); + + opts = { + cacheUsage: NDKSubscriptionCacheUsage.ONLY_RELAY, + closeOnEose: true + }; + } + + if (!setMetadataEvents || setMetadataEvents.size === 0) { + setMetadataEvents = await this.ndk.fetchEvents( + { + kinds: [0], + authors: [this.hexpubkey()] + }, + opts + ); + } if (setMetadataEvents) { // sort setMetadataEvents by created_at in ascending order From 411c47fbd36b4f93162dfb4075824eb8d0fbc3a8 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Wed, 2 Aug 2023 15:47:30 +0300 Subject: [PATCH 176/773] Obsolete NDKFilterOptions and make subscription filters an optional array --- package.json | 2 +- src/cache/index.ts | 7 ++++- src/index.ts | 17 ++++++------ src/relay/index.ts | 10 +++---- src/relay/sets/index.ts | 4 +-- src/subscription/index.ts | 55 ++++++++++++++++++++------------------- 6 files changed, 50 insertions(+), 45 deletions(-) diff --git a/package.json b/package.json index ae7aead7..f67ef534 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.7.7", + "version": "0.8.0", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/cache/index.ts b/src/cache/index.ts index 0df4677f..e6a14985 100644 --- a/src/cache/index.ts +++ b/src/cache/index.ts @@ -1,4 +1,5 @@ import NDKEvent from "../events/index.js"; +import { NDKRelay } from "../relay/index.js"; import { NDKFilter, NDKSubscription } from "../subscription/index.js"; export interface NDKCacheAdapter { @@ -10,5 +11,9 @@ export interface NDKCacheAdapter { locking: boolean; query(subscription: NDKSubscription): Promise; - setEvent(event: NDKEvent, filter: NDKFilter): Promise; + setEvent( + event: NDKEvent, + filter: NDKFilter, + relay?: NDKRelay + ): Promise; } diff --git a/src/index.ts b/src/index.ts index 973ddaf1..7a4e6b39 100644 --- a/src/index.ts +++ b/src/index.ts @@ -9,7 +9,6 @@ import { NDKRelaySet } from "./relay/sets/index.js"; import type { NDKSigner } from "./signers/index.js"; import { NDKFilter, - NDKFilterOptions, NDKSubscription, NDKSubscriptionOptions, filterFromId @@ -99,19 +98,19 @@ export default class NDK extends EventEmitter { * Create a new subscription. Subscriptions automatically start and finish when all relays * on the set send back an EOSE. (set `opts.closeOnEose` to `false` in order avoid this) * - * @param filter + * @param filters * @param opts * @param relaySet explicit relay set to use * @param autoStart automatically start the subscription * @returns NDKSubscription */ public subscribe( - filter: NDKFilter, + filters: NDKFilter | NDKFilter[], opts?: NDKSubscriptionOptions, relaySet?: NDKRelaySet, autoStart = true ): NDKSubscription { - const subscription = new NDKSubscription(this, filter, opts, relaySet); + const subscription = new NDKSubscription(this, filters, opts, relaySet); if (autoStart) subscription.start(); return subscription; @@ -141,8 +140,8 @@ export default class NDK extends EventEmitter { * Fetch a single event */ public async fetchEvent(id: string) : Promise; - public async fetchEvent(filter: NDKFilter, opts: NDKFilterOptions) : Promise; - public async fetchEvent(idOrFilter: string|NDKFilter, opts: NDKFilterOptions = {}, relaySet?: NDKRelaySet) : Promise { + public async fetchEvent(filter: NDKFilter, opts?: NDKSubscriptionOptions) : Promise; + public async fetchEvent(idOrFilter: string|NDKFilter, opts?: NDKSubscriptionOptions, relaySet?: NDKRelaySet) : Promise { let filter: NDKFilter; if (typeof idOrFilter === "string") { @@ -156,7 +155,7 @@ export default class NDK extends EventEmitter { } return new Promise((resolve) => { - const s = this.subscribe(filter, { ...opts, closeOnEose: true }, relaySet, false); + const s = this.subscribe(filter, { ...(opts||{}), closeOnEose: true }, relaySet, false); s.on("event", (event) => { event.ndk = this; resolve(event); @@ -175,13 +174,13 @@ export default class NDK extends EventEmitter { */ public async fetchEvents( filter: NDKFilter, - opts: NDKFilterOptions = {}, + opts?: NDKSubscriptionOptions, relaySet?: NDKRelaySet, ): Promise> { return new Promise((resolve) => { const events: Map = new Map(); - const relaySetSubscription = this.subscribe(filter, { ...opts, closeOnEose: true }, relaySet, false); + const relaySetSubscription = this.subscribe(filter, { ...(opts||{}), closeOnEose: true }, relaySet, false); relaySetSubscription.on("event", (event: NDKEvent) => { const existingEvent = events.get(event.tagId()); diff --git a/src/relay/index.ts b/src/relay/index.ts index 2dbc40db..63ad7262 100644 --- a/src/relay/index.ts +++ b/src/relay/index.ts @@ -176,12 +176,12 @@ export class NDKRelay extends EventEmitter { * Subscribes to a subscription. */ public subscribe(subscription: NDKSubscription): Sub { - const { filter } = subscription; + const { filters } = subscription; - const sub = this.relay.sub([filter], { + const sub = this.relay.sub(filters, { id: subscription.subId }); - this.debug(`Subscribed to ${JSON.stringify(filter)}`); + this.debug(`Subscribed to ${JSON.stringify(filters)}`); sub.on("event", (event: NostrEvent) => { const e = new NDKEvent(undefined, event); @@ -195,7 +195,7 @@ export class NDKRelay extends EventEmitter { const unsub = sub.unsub; sub.unsub = () => { - this.debug(`Unsubscribing from ${JSON.stringify(filter)}`); + this.debug(`Unsubscribing from ${JSON.stringify(filters)}`); this.activeSubscriptions.delete(subscription); unsub(); }; @@ -242,7 +242,7 @@ export class NDKRelay extends EventEmitter { const publishPromise = new Promise((resolve, reject) => { a.on('failed', (err: any) => { - clearTimeout(publishTimeout); + clearTimeout(publishTimeout as NodeJS.Timeout); this.debug('Publish failed', err, event.id); this.emit('publish:failed', event, err); reject(err); diff --git a/src/relay/sets/index.ts b/src/relay/sets/index.ts index 9f05f83a..5d0d4692 100644 --- a/src/relay/sets/index.ts +++ b/src/relay/sets/index.ts @@ -110,7 +110,7 @@ export class NDKRelaySet { } private executeSubscription(subscription: NDKSubscription): NDKSubscription { - this.debug("subscribing", { filter: subscription.filter }); + this.debug("subscribing", { filters: subscription.filters }); for (const relay of this.relays) { if (relay.status === NDKRelayStatus.CONNECTED) { @@ -121,7 +121,7 @@ export class NDKRelaySet { const connectedListener = () => { this.debug("new relay coming online for active subscription", { relay: relay.url, - filter: subscription.filter + filters: subscription.filters }); this.subscribeOnRelay(relay, subscription); }; diff --git a/src/subscription/index.ts b/src/subscription/index.ts index b15c61e5..92ac27e4 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -9,10 +9,6 @@ import { queryFullyFilled } from "./utils.js"; export type NDKFilter = NostrFilter; -export interface NDKFilterOptions { - skipCache?: boolean; -} - export enum NDKSubscriptionCacheUsage { // Only use cache, don't subscribe to relays ONLY_CACHE = "ONLY_CACHE", @@ -83,7 +79,7 @@ export const defaultOpts: NDKSubscriptionOptions = { */ export class NDKSubscription extends EventEmitter { readonly subId: string; - readonly filter: NDKFilter; + readonly filters: NDKFilter[]; readonly opts: NDKSubscriptionOptions; public relaySet?: NDKRelaySet; public ndk: NDK; @@ -107,7 +103,7 @@ export class NDKSubscription extends EventEmitter { public constructor( ndk: NDK, - filter: NDKFilter, + filters: NDKFilter | NDKFilter[], opts?: NDKSubscriptionOptions, relaySet?: NDKRelaySet, subId?: string @@ -115,8 +111,9 @@ export class NDKSubscription extends EventEmitter { super(); this.ndk = ndk; this.opts = { ...defaultOpts, ...(opts || {}) }; - this.subId = subId || opts?.subId || generateFilterId(filter); - this.filter = filter; + this.filters = filters instanceof Array ? filters : [filters]; + this.subId = subId || opts?.subId || generateFilterId(this.filters[0]); + this.relaySet = relaySet; this.relaySubscriptions = new Map(); this.debug = ndk.debug.extend(`subscription:${this.subId}`); @@ -132,24 +129,34 @@ export class NDKSubscription extends EventEmitter { } } + /** + * Provides access to the first filter of the subscription for + * backwards compatibility. + */ + get filter(): NDKFilter { + return this.filters[0]; + } + /** * Calculates the groupable ID for this subscription. * * @returns The groupable ID, or null if the subscription is not groupable. */ public groupableId(): string | null { - if (!this.opts?.groupable) { + if (!this.opts?.groupable || this.filters.length > 1) { return null; } + const filter = this.filters[0]; + // Check if there is a kind and no time-based filters - const hasKind = (this.filter.kinds?.length || 0) > 0; - const noTimeConstraints = !this.filter.since && !this.filter.until; - const noLimit = !this.filter.limit; + const hasKind = (filter.kinds?.length || 0) > 0; + const noTimeConstraints = !filter.since && !filter.until; + const noLimit = !filter.limit; if (hasKind && noTimeConstraints && noLimit) { - let id = this.filter.kinds!.join(","); - const keys = Object.keys(this.filter || {}) + let id = filter.kinds!.join(","); + const keys = Object.keys(filter || {}) .sort() .join("-"); id += `-${keys}`; @@ -178,10 +185,6 @@ export class NDKSubscription extends EventEmitter { // Cache adapter must claim to be fast !!this.ndk.cacheAdapter?.locking && - // If we don't have to query relays there's no need - // to wait for the cache - this.shouldQueryRelays() && - // If explicitly told to run in parallel, then // we should not wait for the cache this.opts.cacheUsage !== NDKSubscriptionCacheUsage.PARALLEL @@ -198,13 +201,11 @@ export class NDKSubscription extends EventEmitter { if (this.shouldQueryCache()) { cachePromise = this.startWithCache(); - if (this.shouldWaitForCache()) { await cachePromise; // if the cache has a hit, return early if (queryFullyFilled(this)) { - this.debug("cache hit, fully filled: skipping relay query"); this.emit("eose", this); return; } @@ -238,7 +239,7 @@ export class NDKSubscription extends EventEmitter { private startWithRelaySet(): void { if (!this.relaySet) { - this.relaySet = calculateRelaySetFromFilter(this.ndk, this.filter); + this.relaySet = calculateRelaySetFromFilter(this.ndk, this.filters[0]); } if (this.relaySet) { @@ -280,7 +281,7 @@ export class NDKSubscription extends EventEmitter { } if (this.ndk.cacheAdapter) { - this.ndk.cacheAdapter.setEvent(event, this.filter); + this.ndk.cacheAdapter.setEvent(event, this.filters[0], relay); } this.eventFirstSeen.set(`${event.id}`, Date.now()); @@ -334,7 +335,7 @@ export class NDKSubscriptionGroup extends NDKSubscription { constructor(ndk: NDK, subscriptions: NDKSubscription[]) { const debug = ndk.debug.extend("subscription-group"); - const filters = mergeFilters(subscriptions.map((s) => s.filter)); + const filters = mergeFilters(subscriptions.map((s) => s.filters[0])); super( ndk, @@ -347,7 +348,7 @@ export class NDKSubscriptionGroup extends NDKSubscription { debug("merged filters", { count: subscriptions.length, - mergedFilters: this.filter + mergedFilters: this.filters[0] }); // forward events to the matching subscriptions @@ -358,11 +359,11 @@ export class NDKSubscriptionGroup extends NDKSubscription { } private isEventForSubscription(event: NDKEvent, subscription: NDKSubscription): boolean { - const { filter } = subscription; + const { filters } = subscription; - if (!filter) return false; + if (!filters) return false; - return matchFilter(filter, event.rawEvent() as any); + return matchFilter(filters[0], event.rawEvent() as any); // check if there is a filter whose key begins with '#'; if there is, check if the event has a tag with the same key on the first position // of the tags array of arrays and the same value in the second position From 0700b1e8cb30a7f262b22c1cf54fcc97e86ef308 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Thu, 3 Aug 2023 10:17:44 +0300 Subject: [PATCH 177/773] Add DVM event kinds --- package.json | 4 +- pnpm-lock.yaml | 48 +++++++------ src/events/kinds/dvm/NDKDVMJobResult.ts | 49 +++++++++++++ src/events/kinds/dvm/NDKDVMRequest.ts | 78 +++++++++++++++++++++ src/events/kinds/dvm/NDKTranscriptionDVM.ts | 16 +++++ src/events/kinds/dvm/index.ts | 3 + src/index.ts | 1 + src/relay/index.ts | 19 +++-- 8 files changed, 183 insertions(+), 35 deletions(-) create mode 100644 src/events/kinds/dvm/NDKDVMJobResult.ts create mode 100644 src/events/kinds/dvm/NDKDVMRequest.ts create mode 100644 src/events/kinds/dvm/NDKTranscriptionDVM.ts create mode 100644 src/events/kinds/dvm/index.ts diff --git a/package.json b/package.json index f67ef534..9ead00c0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.8.0", + "version": "0.8.1", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", @@ -65,7 +65,7 @@ "eventemitter3": "^5.0.1", "light-bolt11-decoder": "^3.0.0", "node-fetch": "^3.3.1", - "nostr-tools": "^1.11.2", + "nostr-tools": "^1.14.0", "tsd": "^0.28.1", "utf8-buffer": "^1.0.0", "websocket-polyfill": "^0.0.3" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 127f13a6..b98e5892 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -51,8 +51,8 @@ dependencies: specifier: ^3.3.1 version: 3.3.1 nostr-tools: - specifier: ^1.11.2 - version: 1.11.2 + specifier: ^1.14.0 + version: 1.14.0 tsd: specifier: ^0.28.1 version: 0.28.1 @@ -81,7 +81,7 @@ devDependencies: version: 29.5.0(@types/node@14.11.2) prettier-plugin-organize-imports: specifier: ^3.2.2 - version: 3.2.2(prettier@2.8.8)(typescript@5.0.4) + version: 3.2.2(prettier@3.0.0)(typescript@5.0.4) ts-jest: specifier: ^29.1.0 version: 29.1.0(@babel/core@7.21.4)(esbuild@0.17.15)(jest@29.5.0)(typescript@5.0.4) @@ -966,14 +966,10 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@noble/curves@1.0.0: - resolution: {integrity: sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw==} + /@noble/curves@1.1.0: + resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==} dependencies: - '@noble/hashes': 1.3.0 - dev: false - - /@noble/hashes@1.3.0: - resolution: {integrity: sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==} + '@noble/hashes': 1.3.1 dev: false /@noble/hashes@1.3.1: @@ -1007,16 +1003,16 @@ packages: resolution: {integrity: sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==} dev: false - /@scure/bip32@1.3.0: - resolution: {integrity: sha512-bcKpo1oj54hGholplGLpqPHRbIsnbixFtc06nwuNM5/dwSXOq/AAYoIBRsBmnZJSdfeNW5rnff7NTAz3ZCqR9Q==} + /@scure/bip32@1.3.1: + resolution: {integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==} dependencies: - '@noble/curves': 1.0.0 + '@noble/curves': 1.1.0 '@noble/hashes': 1.3.1 '@scure/base': 1.1.1 dev: false - /@scure/bip39@1.2.0: - resolution: {integrity: sha512-SX/uKq52cuxm4YFXWFaVByaSHJh2w3BnokVSeUJVCv6K7WulT9u2BuNRBhuFl8vAuYnzx9bEu9WgpcNYTrYieg==} + /@scure/bip39@1.2.1: + resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} dependencies: '@noble/hashes': 1.3.1 '@scure/base': 1.1.1 @@ -3930,14 +3926,14 @@ packages: engines: {node: '>=0.10.0'} dev: true - /nostr-tools@1.11.2: - resolution: {integrity: sha512-ezN+QwPlFTRZLjstUJw9xacI7/rKKOn18bRitKcArj5YFLaxA2xDIvkryapYZ1IBsJzFYcODmygKIrHdZXsJjw==} + /nostr-tools@1.14.0: + resolution: {integrity: sha512-hwq2i1z5/DneXRE5Zu/TzQuKzVLcB+gOdfT9CeoiScvNw/2dWRGJvyTXIdF92d7NQ7nMcEwqVJPDytLpEpiiKw==} dependencies: - '@noble/curves': 1.0.0 - '@noble/hashes': 1.3.0 + '@noble/curves': 1.1.0 + '@noble/hashes': 1.3.1 '@scure/base': 1.1.1 - '@scure/bip32': 1.3.0 - '@scure/bip39': 1.2.0 + '@scure/bip32': 1.3.1 + '@scure/bip39': 1.2.1 dev: false /npm-run-all@4.1.5: @@ -4172,7 +4168,7 @@ packages: fast-diff: 1.2.0 dev: true - /prettier-plugin-organize-imports@3.2.2(prettier@2.8.8)(typescript@5.0.4): + /prettier-plugin-organize-imports@3.2.2(prettier@3.0.0)(typescript@5.0.4): resolution: {integrity: sha512-e97lE6odGSiHonHJMTYC0q0iLXQyw0u5z/PJpvP/3vRy6/Zi9kLBwFAbEGjDzIowpjQv8b+J04PDamoUSQbzGA==} peerDependencies: '@volar/vue-language-plugin-pug': ^1.0.4 @@ -4185,7 +4181,7 @@ packages: '@volar/vue-typescript': optional: true dependencies: - prettier: 2.8.8 + prettier: 3.0.0 typescript: 5.0.4 dev: true @@ -4195,6 +4191,12 @@ packages: hasBin: true dev: true + /prettier@3.0.0: + resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==} + engines: {node: '>=14'} + hasBin: true + dev: true + /pretty-format@29.5.0: resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} diff --git a/src/events/kinds/dvm/NDKDVMJobResult.ts b/src/events/kinds/dvm/NDKDVMJobResult.ts new file mode 100644 index 00000000..9d2ab792 --- /dev/null +++ b/src/events/kinds/dvm/NDKDVMJobResult.ts @@ -0,0 +1,49 @@ +import { NDKKind } from "../index.js"; +import NDKEvent, { NostrEvent } from "../../index.js"; +import NDK from "../../../index.js"; + +/** + * This event is published by Data Vending Machines when + * they have finished processing a job. + */ +export class NDKDVMJobResult extends NDKEvent { + constructor(ndk?: NDK, event?: NostrEvent) { + super(ndk, event); + this.kind = NDKKind.DVMJobResult; + } + + set result(result: string | undefined) { + if (result === undefined) { + this.content = ""; + } else { + this.content = result; + } + } + + get result(): string | undefined { + if (this.content === "") { + return undefined; + } + + return this.content; + } + + set status(status: string | undefined) { + this.removeTag('status'); + + if (status !== undefined) { + this.tags.push(['status', status]); + } + } + + get status(): string | undefined { + return this.tagValue('status'); + } + + set jobRequest(event: NDKEvent) { + this.tags.push([ + 'request', JSON.stringify(event.rawEvent()) + ]); + this.tag(event); + } +} \ No newline at end of file diff --git a/src/events/kinds/dvm/NDKDVMRequest.ts b/src/events/kinds/dvm/NDKDVMRequest.ts new file mode 100644 index 00000000..1aeea911 --- /dev/null +++ b/src/events/kinds/dvm/NDKDVMRequest.ts @@ -0,0 +1,78 @@ +import NDK, { NDKDVMJobResult, NDKEvent, NostrEvent } from "../../../index.js"; + +/** + * NIP-90: Data vending machine + * + * A generic Job request class for Data Vending Machines + */ +export class NDKDVMRequest extends NDKEvent { + constructor(ndk: NDK | undefined, event?: NostrEvent) { + super(ndk, event); + + if (ndk) { + this.tags.push([ + 'relays', + ...ndk.pool.urls() + ]); + } + } + + static from(event: NDKEvent) { + return new NDKDVMRequest(event.ndk, event.rawEvent()); + } + + /** + * Create a new result event for this request + */ + public createResult(data?: NostrEvent) { + const event = new NDKDVMJobResult(this.ndk, data); + event.jobRequest = this; + + return event; + } + + set bid(msatAmount: number | undefined) { + if (msatAmount === undefined) { + this.removeTag('bid'); + } else { + this.tags.push(['bid', msatAmount.toString()]); + } + } + + get bid(): number | undefined { + const v = this.tagValue('bid'); + + if (v === undefined) return undefined; + + return parseInt(v); + } + + /** + * Adds a new input to the job + * @param args The arguments to the input + */ + addInput(...args: string[]): void { + this.tags.push(['i', ...args]); + } + + /** + * Adds a new parameter to the job + */ + addParam(...args: string[]): void { + this.tags.push(['param', ...args]); + } + + set output(output: string | string[] | undefined) { + if (output === undefined) { + this.removeTag('output'); + } else { + if (typeof output === 'string') output = [output]; + this.tags.push(['output', ...output]); + } + } + + get output(): string[] | undefined { + const outputTag = this.getMatchingTags('output')[0]; + return outputTag ? outputTag.slice(1) : undefined; + } +} \ No newline at end of file diff --git a/src/events/kinds/dvm/NDKTranscriptionDVM.ts b/src/events/kinds/dvm/NDKTranscriptionDVM.ts new file mode 100644 index 00000000..3ba24d83 --- /dev/null +++ b/src/events/kinds/dvm/NDKTranscriptionDVM.ts @@ -0,0 +1,16 @@ +import { NDKKind } from ".."; +import { NostrEvent } from "../.."; +import NDK from "../../.."; +import { NDKDVMRequest } from "./NDKDVMRequest"; + +/** + * NIP-90 + * + * This class creates DVM transcription job types + */ +export class NDKTranscriptionDVM extends NDKDVMRequest { + constructor(ndk: NDK | undefined, event?: NostrEvent) { + super(ndk, event); + this.kind = NDKKind.DVMJobRequestTranscription; + } +} diff --git a/src/events/kinds/dvm/index.ts b/src/events/kinds/dvm/index.ts new file mode 100644 index 00000000..dbfdd319 --- /dev/null +++ b/src/events/kinds/dvm/index.ts @@ -0,0 +1,3 @@ +export * from './NDKDVMRequest'; +export * from './NDKTranscriptionDVM'; +export * from './NDKDVMJobResult'; \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 7a4e6b39..23f24220 100644 --- a/src/index.ts +++ b/src/index.ts @@ -20,6 +20,7 @@ import type { NDKRelay } from "./relay/index.js"; export * from "./events/index.js"; export * from "./events/kinds/index.js"; export * from './events/kinds/article.js'; +export * from "./events/kinds/dvm/index.js"; export * from './events/kinds/lists/index.js'; export * from "./relay/index.js"; export * from "./relay/sets/index.js"; diff --git a/src/relay/index.ts b/src/relay/index.ts index 63ad7262..797aaf40 100644 --- a/src/relay/index.ts +++ b/src/relay/index.ts @@ -1,5 +1,5 @@ import EventEmitter from "eventemitter3"; -import { relayInit, Sub } from "nostr-tools"; +import { Relay, relayInit, Sub } from "nostr-tools"; import "websocket-polyfill"; import NDKEvent, { NDKTag, NostrEvent } from "../events/index.js"; import { NDKSubscription } from "../subscription/index.js"; @@ -52,7 +52,7 @@ export interface NDKRelayConnectionStats { export class NDKRelay extends EventEmitter { readonly url: string; readonly scores: Map; - private relay; + private relay: Relay; private _status: NDKRelayStatus; private connectedAt?: number; private _connectionStats: NDKRelayConnectionStats = { attempts: 0, success: 0, durations: [] }; @@ -237,22 +237,20 @@ export class NDKRelay extends EventEmitter { timeoutMs?: number ): Promise { const nostrEvent = (await event.toNostrEvent()); - const a = this.relay.publish(nostrEvent as any); + const publish = this.relay.publish(nostrEvent as any); let publishTimeout: NodeJS.Timeout; const publishPromise = new Promise((resolve, reject) => { - a.on('failed', (err: any) => { + publish.then(() => { + clearTimeout(publishTimeout); + this.emit('published', event); + resolve(true); + }).catch((err) => { clearTimeout(publishTimeout as NodeJS.Timeout); this.debug('Publish failed', err, event.id); this.emit('publish:failed', event, err); reject(err); }); - - a.on('ok', () => { - clearTimeout(publishTimeout); - this.emit('published', event); - resolve(true); - }); }); // If no timeout is specified, just return the publish promise @@ -281,6 +279,7 @@ export class NDKRelay extends EventEmitter { // eslint-disable-next-line @typescript-eslint/no-unused-vars public scoreSlowerEvent(timeDiffInMs: number): void { // TODO + } /** From c4e93fa73265b2abf81a98a70c2f5e924a46a459 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 5 Aug 2023 13:52:41 +0300 Subject: [PATCH 178/773] add from to dvms --- package.json | 2 +- src/events/kinds/dvm/NDKDVMJobResult.ts | 4 ++++ src/events/kinds/dvm/NDKTranscriptionDVM.ts | 6 +++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 9ead00c0..93cead16 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.8.1", + "version": "0.8.2", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/kinds/dvm/NDKDVMJobResult.ts b/src/events/kinds/dvm/NDKDVMJobResult.ts index 9d2ab792..53ad7373 100644 --- a/src/events/kinds/dvm/NDKDVMJobResult.ts +++ b/src/events/kinds/dvm/NDKDVMJobResult.ts @@ -12,6 +12,10 @@ export class NDKDVMJobResult extends NDKEvent { this.kind = NDKKind.DVMJobResult; } + static from(event: NDKEvent) { + return new NDKDVMJobResult(event.ndk, event.rawEvent()); + } + set result(result: string | undefined) { if (result === undefined) { this.content = ""; diff --git a/src/events/kinds/dvm/NDKTranscriptionDVM.ts b/src/events/kinds/dvm/NDKTranscriptionDVM.ts index 3ba24d83..29137b3f 100644 --- a/src/events/kinds/dvm/NDKTranscriptionDVM.ts +++ b/src/events/kinds/dvm/NDKTranscriptionDVM.ts @@ -1,5 +1,5 @@ import { NDKKind } from ".."; -import { NostrEvent } from "../.."; +import NDKEvent, { NostrEvent } from "../.."; import NDK from "../../.."; import { NDKDVMRequest } from "./NDKDVMRequest"; @@ -13,4 +13,8 @@ export class NDKTranscriptionDVM extends NDKDVMRequest { super(ndk, event); this.kind = NDKKind.DVMJobRequestTranscription; } + + static from(event: NDKEvent) { + return new NDKTranscriptionDVM(event.ndk, event.rawEvent()); + } } From e5beab189fb019da1f36d3f31e3f8cb36889c99a Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sun, 6 Aug 2023 12:02:43 +0300 Subject: [PATCH 179/773] Heed naddr|nevent relays --- package.json | 2 +- src/events/kinds/dvm/NDKDVMJobResult.ts | 24 ++++-- src/events/kinds/dvm/NDKTranscriptionDVM.ts | 49 +++++++++++ src/index.ts | 38 +++++++-- src/relay/pool/index.ts | 95 +++++++++++++++++++-- src/relay/sets/index.ts | 7 ++ src/relay/sets/utils.ts | 31 +++++++ src/subscription/index.ts | 22 +++++ 8 files changed, 252 insertions(+), 16 deletions(-) create mode 100644 src/relay/sets/utils.ts diff --git a/package.json b/package.json index 93cead16..7f068b1a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.8.2", + "version": "0.8.4", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/kinds/dvm/NDKDVMJobResult.ts b/src/events/kinds/dvm/NDKDVMJobResult.ts index 53ad7373..22f8027d 100644 --- a/src/events/kinds/dvm/NDKDVMJobResult.ts +++ b/src/events/kinds/dvm/NDKDVMJobResult.ts @@ -44,10 +44,24 @@ export class NDKDVMJobResult extends NDKEvent { return this.tagValue('status'); } - set jobRequest(event: NDKEvent) { - this.tags.push([ - 'request', JSON.stringify(event.rawEvent()) - ]); - this.tag(event); + set jobRequest(event: NDKEvent | undefined) { + this.removeTag('request'); + + if (event) { + this.tags.push([ + 'request', JSON.stringify(event.rawEvent()) + ]); + this.tag(event); + } + } + + get jobRequest(): NDKEvent | undefined { + const tag = this.tagValue('request'); + + if (tag === undefined) { + return undefined; + } + + return new NDKEvent(this.ndk, JSON.parse(tag)); } } \ No newline at end of file diff --git a/src/events/kinds/dvm/NDKTranscriptionDVM.ts b/src/events/kinds/dvm/NDKTranscriptionDVM.ts index 29137b3f..a3c46030 100644 --- a/src/events/kinds/dvm/NDKTranscriptionDVM.ts +++ b/src/events/kinds/dvm/NDKTranscriptionDVM.ts @@ -17,4 +17,53 @@ export class NDKTranscriptionDVM extends NDKDVMRequest { static from(event: NDKEvent) { return new NDKTranscriptionDVM(event.ndk, event.rawEvent()); } + + /** + * Returns the original source of the transcription + */ + get url(): string | undefined { + const inputTags = this.getMatchingTags('i'); + + if (inputTags.length !== 1) { + return undefined; + } + + return inputTags[0][1]; + } + + /** + * Getter for the title tag + */ + get title(): string | undefined { + return this.tagValue('title'); + } + + /** + * Setter for the title tag + */ + set title(value: string | undefined) { + this.removeTag('title'); + + if (value) { + this.tags.push(['title', value]); + } + } + + /** + * Getter for the image tag + */ + get image(): string | undefined { + return this.tagValue('image'); + } + + /** + * Setter for the image tag + */ + set image(value: string | undefined) { + this.removeTag('image'); + + if (value) { + this.tags.push(['image', value]); + } + } } diff --git a/src/index.ts b/src/index.ts index 23f24220..51aa8e79 100644 --- a/src/index.ts +++ b/src/index.ts @@ -11,11 +11,13 @@ import { NDKFilter, NDKSubscription, NDKSubscriptionOptions, - filterFromId + filterFromId, + relaysFromBech32 } from "./subscription/index.js"; import NDKUser, { NDKUserParams } from "./user/index.js"; import { NDKUserProfile } from "./user/profile.js"; import type { NDKRelay } from "./relay/index.js"; +import { correctRelaySet } from "./relay/sets/utils.js"; export * from "./events/index.js"; export * from "./events/kinds/index.js"; @@ -112,6 +114,14 @@ export default class NDK extends EventEmitter { autoStart = true ): NDKSubscription { const subscription = new NDKSubscription(this, filters, opts, relaySet); + + // Signal to the relays that they are explicitly being used + if (relaySet) { + for (const relay of relaySet.relays) { + this.pool.useTemporaryRelay(relay); + } + } + if (autoStart) subscription.start(); return subscription; @@ -138,13 +148,31 @@ export default class NDK extends EventEmitter { } /** - * Fetch a single event + * Fetch a single event. + * + * @param idOrFilter event id in bech32 format or filter + * @param opts subscription options + * @param relaySet explicit relay set to use */ - public async fetchEvent(id: string) : Promise; - public async fetchEvent(filter: NDKFilter, opts?: NDKSubscriptionOptions) : Promise; - public async fetchEvent(idOrFilter: string|NDKFilter, opts?: NDKSubscriptionOptions, relaySet?: NDKRelaySet) : Promise { + public async fetchEvent( + idOrFilter: string|NDKFilter, + opts?: NDKSubscriptionOptions, + relaySet?: NDKRelaySet + ) : Promise { let filter: NDKFilter; + // if no relayset has been provided, try to get one from the event id + if (!relaySet && typeof idOrFilter === "string") { + const relays = relaysFromBech32(idOrFilter); + + if (relays.length > 0) { + relaySet = new NDKRelaySet(new Set(relays), this); + + // Make sure we have connected relays in this set + relaySet = correctRelaySet(relaySet, this.pool); + } + } + if (typeof idOrFilter === "string") { filter = filterFromId(idOrFilter); } else { diff --git a/src/relay/pool/index.ts b/src/relay/pool/index.ts index b8664f40..74796eae 100644 --- a/src/relay/pool/index.ts +++ b/src/relay/pool/index.ts @@ -22,20 +22,99 @@ export type NDKPoolStats = { export class NDKPool extends EventEmitter { public relays = new Map(); private debug: debug.Debugger; + private temporaryRelayTimers = new Map(); public constructor(relayUrls: string[] = [], ndk: NDK) { super(); this.debug = ndk.debug.extend("pool"); for (const relayUrl of relayUrls) { const relay = new NDKRelay(relayUrl); - relay.on("notice", (relay, notice) => this.emit("notice", relay, notice)); - relay.on("connect", () => this.handleRelayConnect(relayUrl)); - relay.on("disconnect", () => this.emit("relay:disconnect", relay)); - relay.on("flapping", () => this.handleFlapping(relay)); - this.relays.set(relayUrl, relay); + this.addRelay(relay, false); } } + /** + * Adds a relay to the pool, and sets a timer to remove it if it is not used within the specified time. + * @param relay - The relay to add to the pool. + * @param removeIfUnusedAfter - The time in milliseconds to wait before removing the relay from the pool after it is no longer used. + */ + public useTemporaryRelay( + relay: NDKRelay, + removeIfUnusedAfter = 10000, + ) { + const relayAlreadyInPool = this.relays.has(relay.url); + + // check if the relay is already in the pool + if (!relayAlreadyInPool) { + this.addRelay(relay); + } + + // check if the relay already has a disconnecting timer + const existingTimer = this.temporaryRelayTimers.get(relay.url); + if (existingTimer) { + clearTimeout(existingTimer); + } + + // add a disconnecting timer only if the relay was not already in the pool + // or if it had an existing timer + // this prevents explicit relays from being removed from the pool + if (!relayAlreadyInPool || existingTimer) { + // set a timer to remove the relay from the pool if it is not used within the specified time + const timer = setTimeout(() => { + this.removeRelay(relay.url); + }, removeIfUnusedAfter); + + this.temporaryRelayTimers.set(relay.url, timer); + } + } + + /** + * Adds a relay to the pool. + * + * @param relay - The relay to add to the pool. + * @param connect - Whether or not to connect to the relay. + */ + public addRelay( + relay: NDKRelay, + connect = true, + ) { + const relayUrl = relay.url; + + relay.on("notice", (relay, notice) => this.emit("notice", relay, notice)); + relay.on("connect", () => this.handleRelayConnect(relayUrl)); + relay.on("disconnect", () => this.emit("relay:disconnect", relay)); + relay.on("flapping", () => this.handleFlapping(relay)); + this.relays.set(relayUrl, relay); + + if (connect) { + relay.connect(); + } + } + + /** + * Removes a relay from the pool. + * @param relayUrl - The URL of the relay to remove. + * @returns {boolean} True if the relay was removed, false if it was not found. + */ + public removeRelay(relayUrl: string): boolean { + const relay = this.relays.get(relayUrl); + if (relay) { + relay.disconnect(); + this.relays.delete(relayUrl); + this.emit("relay:disconnect", relay); + return true; + } + + // remove the relay from the temporary relay timers + const existingTimer = this.temporaryRelayTimers.get(relayUrl); + if (existingTimer) { + clearTimeout(existingTimer); + this.temporaryRelayTimers.delete(relayUrl); + } + + return false; + } + private handleRelayConnect(relayUrl: string) { this.debug(`Relay ${relayUrl} connected`); this.emit("relay:connect", this.relays.get(relayUrl)); @@ -132,6 +211,12 @@ export class NDKPool extends EventEmitter { return stats; } + public connectedRelays(): NDKRelay[] { + return Array.from(this.relays.values()).filter( + (relay) => relay.status === NDKRelayStatus.CONNECTED + ); + } + /** * Get a list of all relay urls in the pool. */ diff --git a/src/relay/sets/index.ts b/src/relay/sets/index.ts index 5d0d4692..5c793e05 100644 --- a/src/relay/sets/index.ts +++ b/src/relay/sets/index.ts @@ -23,6 +23,13 @@ export class NDKRelaySet { this.debug = ndk.debug.extend("relayset"); } + /** + * Adds a relay to this set. + */ + public addRelay(relay: NDKRelay) { + this.relays.add(relay); + } + /** * Creates a relay set from a list of relay URLs. * diff --git a/src/relay/sets/utils.ts b/src/relay/sets/utils.ts new file mode 100644 index 00000000..5e1709d4 --- /dev/null +++ b/src/relay/sets/utils.ts @@ -0,0 +1,31 @@ +import { NDKPool } from "../../relay/pool/index.js"; +import { NDKRelaySet } from "../../relay/sets/index.js"; + +/** + * If the provided relay set does not include connected relays in the pool + * the relaySet will have the connected relays added to it. + */ +export function correctRelaySet(relaySet: NDKRelaySet, pool: NDKPool): NDKRelaySet { + const connectedRelays = pool.connectedRelays(); + const includesConnectedRelay = Array.from(relaySet.relays).some((relay) => { + return ( + connectedRelays.map(r => r.url).includes(relay.url) + ); + }); + + if (!includesConnectedRelay) { + // Add connected relays to the relay set + for (const relay of connectedRelays) { + relaySet.addRelay(relay); + } + } + + // if connected relays is empty (such us when we're first starting, add all relays) + if (connectedRelays.length === 0) { + for (const relay of pool.relays.values()) { + relaySet.addRelay(relay); + } + } + + return relaySet; +} \ No newline at end of file diff --git a/src/subscription/index.ts b/src/subscription/index.ts index 92ac27e4..8dbfe0e5 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -1,5 +1,6 @@ import EventEmitter from "eventemitter3"; import { Filter as NostrFilter, matchFilter, Sub, nip19 } from "nostr-tools"; +import { EventPointer } from "nostr-tools/lib/nip19"; import NDKEvent, { NDKEventId } from "../events/index.js"; import NDK from "../index.js"; import { NDKRelay } from "../relay"; @@ -467,6 +468,27 @@ export function filterFromId(id: string): NDKFilter { return {ids: [id]}; } +/** + * Returns the specified relays from a NIP-19 bech32. + * + * @param bech32 The NIP-19 bech32. + */ +export function relaysFromBech32(bech32: string): NDKRelay[] { + try { + const decoded = nip19.decode(bech32); + + if (['naddr', 'nevent'].includes(decoded?.type)) { + const data = decoded.data as unknown as EventPointer; + + if (data?.relays) { + return data.relays.map((r: string) => new NDKRelay(r)); + } + } + } catch (e) { /* empty */ } + + return []; +} + /** * Generates a random filter id, based on the filter keys. */ From 1be97909369379101b2c7506e898eb8302d073be Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sun, 6 Aug 2023 12:10:25 +0300 Subject: [PATCH 180/773] change timeout --- src/relay/pool/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/relay/pool/index.ts b/src/relay/pool/index.ts index 74796eae..60668ca1 100644 --- a/src/relay/pool/index.ts +++ b/src/relay/pool/index.ts @@ -40,7 +40,7 @@ export class NDKPool extends EventEmitter { */ public useTemporaryRelay( relay: NDKRelay, - removeIfUnusedAfter = 10000, + removeIfUnusedAfter = 600000, ) { const relayAlreadyInPool = this.relays.has(relay.url); From 1c42e93e43d125f915a6e92d9d14f4cb899aaa70 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sun, 6 Aug 2023 12:10:36 +0300 Subject: [PATCH 181/773] version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7f068b1a..94524ba9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.8.4", + "version": "0.8.5", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", From 2552e90507759dc6da11c8c42fc0b4c706909e15 Mon Sep 17 00:00:00 2001 From: Stephen DeLorme Date: Mon, 7 Aug 2023 12:54:41 -0400 Subject: [PATCH 182/773] Typo fix --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dbec6d78..875add9d 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,7 @@ localStorage.debug = 'ndk:*' - [ ] Explicit relays blacklist - [ ] nostr-tools/SimplePool drop-in replacement interface -## Read-world uses of NDK +## Real-world uses of NDK See [REFERENCES.md](./REFERENCES.md) for a list of projects using NDK to see how others are using it. From 82b30bda1f7814611828eb98e74912b6a602dee3 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 8 Aug 2023 10:04:12 +0300 Subject: [PATCH 183/773] set a published_at date on NIP-23s --- package.json | 2 +- src/events/index.ts | 4 +-- src/events/kinds/article.ts | 66 ++++++++++++++++++++++++++++++++++++- 3 files changed, 68 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 94524ba9..37985904 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.8.5", + "version": "0.8.6", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/index.ts b/src/events/index.ts index 3ab78fa1..41271903 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -23,7 +23,7 @@ export type NostrEvent = { sig?: string; }; -type ContentTag = { +export type ContentTag = { tags: NDKTag[]; content: string; }; @@ -242,7 +242,7 @@ export default class NDKEvent extends EventEmitter { * Will also generate random "d" tag for parameterized replaceable events where needed. * @returns {ContentTag} The tags and content of the event. */ - private generateTags(): ContentTag { + protected generateTags(): ContentTag { let tags: NDKTag[] = []; // don't autogenerate if there currently are tags diff --git a/src/events/kinds/article.ts b/src/events/kinds/article.ts index 8822c947..8c0a5b74 100644 --- a/src/events/kinds/article.ts +++ b/src/events/kinds/article.ts @@ -1,5 +1,5 @@ import NDK from '../../index.js'; -import { type NostrEvent } from '../index.js'; +import { ContentTag, type NostrEvent } from '../index.js'; import NDKEvent from '../index.js'; import { NDKKind } from "./index.js"; @@ -22,10 +22,20 @@ class NDKArticle extends NDKEvent { return new NDKArticle(event.ndk, event.rawEvent()); } + /** + * Getter for the article title. + * + * @returns {string | undefined} - The article title if available, otherwise undefined. + */ get title(): string | undefined { return this.tagValue('title'); } + /** + * Setter for the article title. + * + * @param {string | undefined} title - The title to set for the article. + */ set title(title: string | undefined) { if (title) { this.tags.push(['title', title]); @@ -34,10 +44,64 @@ class NDKArticle extends NDKEvent { } } + /** + * Getter for the article's publication timestamp. + * + * @returns {number | undefined} - The Unix timestamp of when the article was published or undefined. + */ + get published_at(): number | undefined { + const tag = this.tagValue('published_at'); + if (tag) { + return parseInt(tag); + } + return undefined; + } + + /** + * Setter for the article's publication timestamp. + * + * @param {number | undefined} timestamp - The Unix timestamp to set for the article's publication date. + */ + set published_at(timestamp: number | undefined) { + this.removeTag('published_at'); // Removes any existing 'published_at' tag. + + if (timestamp !== undefined) { + this.tags.push(['published_at', timestamp.toString()]); + } + } + + /** + * Generates content tags for the article. + * + * This method first checks and sets the publication date if not available, + * and then generates content tags based on the base NDKEvent class. + * + * @returns {ContentTag} - The generated content tags. + */ + protected generateTags(): ContentTag { + super.generateTags(); + + if (!this.published_at) { + this.published_at = this.created_at; + } + + return super.generateTags(); + } + + /** + * Getter for the article's URL. + * + * @returns {string | undefined} - The article's URL if available, otherwise undefined. + */ get url(): string | undefined { return this.tagValue('url'); } + /** + * Setter for the article's URL. + * + * @param {string | undefined} url - The URL to set for the article. + */ set url(url: string | undefined) { if (url) { this.tags.push(['url', url]); From 29115e3f7cea4a210e0364a28549b84418baee45 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 8 Aug 2023 10:16:32 +0300 Subject: [PATCH 184/773] stupid changes --- package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 37985904..6147e1c2 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,8 @@ "compile": "tsc", "prepare": "pnpm build", "pretest": "pnpm build", - "posttest": "pnpm lint" + "posttest": "pnpm lint", + "prettify": "prettier --write ." }, "keywords": [ "nostr" @@ -42,6 +43,7 @@ "@types/node": "^14.11.2", "gts": "^3.1.1", "jest": "^29.5.0", + "prettier": "^3.0.1", "prettier-plugin-organize-imports": "^3.2.2", "ts-jest": "^29.1.0", "tsup": "^6.7.0", From 7f7106598ca6663006359a9e8c9dbaaacc2b58e9 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 8 Aug 2023 10:30:44 +0300 Subject: [PATCH 185/773] run that stupid prettify shit --- .eslintrc.json | 6 +- .prettierrc | 15 +- README.md | 14 +- REFERENCES.md | 44 +- docs-styles.css | 18 +- jest.config.js | 12 +- package.json | 1 + pnpm-lock.yaml | 12265 ++++++++++-------- src/events/content-tagger.test.ts | 57 +- src/events/index.test.ts | 54 +- src/events/index.ts | 31 +- src/events/kinds/article.ts | 26 +- src/events/kinds/dvm/NDKDVMJobResult.ts | 20 +- src/events/kinds/dvm/NDKDVMRequest.ts | 25 +- src/events/kinds/dvm/NDKTranscriptionDVM.ts | 14 +- src/events/kinds/dvm/index.ts | 6 +- src/events/kinds/lists/index.ts | 50 +- src/events/nip04.ts | 16 +- src/events/nip19.ts | 2 +- src/events/repost.ts | 14 +- src/index.ts | 41 +- src/relay/index.ts | 61 +- src/relay/pool/index.ts | 36 +- src/relay/sets/calculate.ts | 10 +- src/relay/sets/index.ts | 57 +- src/relay/sets/utils.ts | 11 +- src/signers/nip07/index.ts | 54 +- src/signers/nip46/backend/connect.ts | 4 +- src/signers/nip46/backend/describe.ts | 4 +- src/signers/nip46/backend/get-public-key.ts | 4 +- src/signers/nip46/backend/index.ts | 57 +- src/signers/nip46/backend/nip04-decrypt.ts | 12 +- src/signers/nip46/backend/nip04-encrypt.ts | 12 +- src/signers/nip46/backend/sign-event.ts | 4 +- src/signers/nip46/index.ts | 19 +- src/signers/nip46/rpc.ts | 33 +- src/signers/private-key/index.test.ts | 11 +- src/signers/private-key/index.ts | 11 +- src/subscription/index.ts | 88 +- src/subscription/utils.ts | 11 +- src/user/follows.test.ts | 10 +- src/user/follows.ts | 3 +- src/user/index.test.ts | 63 +- src/user/index.ts | 42 +- src/user/profile.ts | 10 +- src/zap/index.ts | 18 +- src/zap/invoice.ts | 6 +- 47 files changed, 7873 insertions(+), 5509 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index ce99814c..9fffbcde 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,5 +1,9 @@ { - "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended", "prettier"], + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "prettier" + ], "parser": "@typescript-eslint/parser", "parserOptions": { "sourceType": "module", diff --git a/.prettierrc b/.prettierrc index 3076ae80..228ab7c6 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,9 +1,10 @@ { - "importOrder": ["^[./]"], - "tabWidth": 4, - "useTabs": false, - "trailingComma": "none", - "printWidth": 100, - "singleQuote": false, - "semi": true + "plugins": ["@trivago/prettier-plugin-sort-imports"], + "importOrder": ["^[./]"], + "tabWidth": 4, + "useTabs": false, + "trailingComma": "es5", + "printWidth": 80, + "singleQuote": false, + "semi": true } diff --git a/README.md b/README.md index dbec6d78..d1be6717 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@ localStorage.debug = 'ndk:*' - [x] NIP-07 - [!] ~~NIP-26~~ Won't add / NIP-26 is dead - [x] NIP-46 - - [x] Permission tokens + - [x] Permission tokens - Relay discovery - [ ] Gossip-model (NIP-65) - [ ] Implicit relays discovery following pubkey usage @@ -180,6 +180,7 @@ const ndk = new NDK({ cacheAdapter: redisAdapter }); ``` ## Groupable queries + Clients often need to load data (e.g. profile data) from individual components at once (e.g. initial page render). This typically causes multiple subscriptions to be submitted fetching the same information and causing poor performance or getting rate-limited/maxed out by relays. NDK implements a convenient subscription model, _buffered queries_, where a named subscription will be created after a customizable amount of time, so that multiple components can append queries. @@ -235,8 +236,8 @@ But if NDK has observed that `npub-B` tends to write to `wss://userb.xyz` and ## Auto-closing subscriptions Often, clients need to fetch data but don't need to maintain an open connection to the relay. This is true of profile metadata requests especially. -*NDK defaults to having the `closeOnEose` flag set to `true`, to make permanent subscriptions explicit in the codebase; if you want your -subscription to remain active beyond `EOSE`, you should set it to `false`.* +_NDK defaults to having the `closeOnEose` flag set to `true`, to make permanent subscriptions explicit in the codebase; if you want your +subscription to remain active beyond `EOSE`, you should set it to `false`._ - The `closeOnEose` flag will make the connection close immediately after EOSE is seen. @@ -254,11 +255,12 @@ This is a handy method for instantiating a new `NDKUser` and associating the cur ```ts const pablo = ndk.getUser({ - npub: "npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft" + npub: "npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft", }); const jeff = ndk.getUser({ - hexpubkey: "1739d937dc8c0c7370aa27585938c119e25c41f6c441a5d34c6d38503e3136ef" + hexpubkey: + "1739d937dc8c0c7370aa27585938c119e25c41f6c441a5d34c6d38503e3136ef", }); ``` @@ -268,7 +270,7 @@ You can easily fetch a user's profile data from `kind:0` events on relays. Calli ```ts const pablo = ndk.getUser({ - npub: "npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft" + npub: "npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft", }); await pablo.fetchProfile(); diff --git a/REFERENCES.md b/REFERENCES.md index 1181386d..b6e87df9 100644 --- a/REFERENCES.md +++ b/REFERENCES.md @@ -6,25 +6,25 @@ how others handle Nostr things using NDK. If you are the author of an application that uses NDK, send a pull-request to this repo adding your application to this list. -* [Highlighter](https://github.com/kind-0/highlighter) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) - * Svelte, frontend -* [nsecBunker](https://github.com/kind-0/nsecbunkerd) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) - * Typescript, backend -* [Highlighter Chrome Extension](https://github.com/pablof7z/highlighter-chrome-extension/) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) - * Typescript, Chrome extension -* [Nostr Data Vending Machine](https://github.com/pablof7z/nostr-data-vending-machine) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) - * Typescript, backend -* [Nostr Chat Widget](https://github.com/pablof7z/nostr-chat-widget) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) - * Svelte, Rollup, embeddable widget -* [Zapstr](https://github.com/pablof7z/nostr-chat-widget) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) - * Svelte, Frontend -* [Ostrich.work](https://github.com/erskingardner/ostrich.work) - By [@jeffg](https://nostr.com/npub1zuuajd7u3sx8xu92yav9jwxpr839cs0kc3q6t56vd5u9q033xmhsk6c2uc) - * Svelte, frontend -* [Listr.lol](https://github.com/erskingardner/listr) - By [@jeffg](https://nostr.com/npub1zuuajd7u3sx8xu92yav9jwxpr839cs0kc3q6t56vd5u9q033xmhsk6c2uc) - * Svelte, frontend -* [Lume](https://github.com/luminous-devs/lume) - By [@reya](https://nostr.com/npub1zfss807aer0j26mwp2la0ume0jqde3823rmu97ra6sgyyg956e0s6xw445) - * Tauri, Desktop app -* [Nostr App Manager](https://github.com/nostrband/nostr-app-manager) - By [@nostrband](https://nostr.com/npub1wc4rc9wxl2gfzxl384g0cw3f79nrms0sfdpe02y7aasy7c3we4sqd0qywr) - * React, Frontend -* [Stemstr](https://github.com/stemstr/Client) - By [@stemstr](https://nostr.com/npub1stemstrls4f5plqeqkeq43gtjhtycuqd9w25v5r5z5ygaq2n2sjsd6mul5) -* [Audgit.ai](https://github.com/ArcadeLabsInc/audgit.ai) - By [@ArcadeLabsInc](https://nostr.com/npub1tlv67m7xvlyplzexuynmfpguvyet0sjffce3y8vu0suuyuwgzauqjk7fdm) \ No newline at end of file +- [Highlighter](https://github.com/kind-0/highlighter) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) + - Svelte, frontend +- [nsecBunker](https://github.com/kind-0/nsecbunkerd) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) + - Typescript, backend +- [Highlighter Chrome Extension](https://github.com/pablof7z/highlighter-chrome-extension/) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) + - Typescript, Chrome extension +- [Nostr Data Vending Machine](https://github.com/pablof7z/nostr-data-vending-machine) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) + - Typescript, backend +- [Nostr Chat Widget](https://github.com/pablof7z/nostr-chat-widget) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) + - Svelte, Rollup, embeddable widget +- [Zapstr](https://github.com/pablof7z/nostr-chat-widget) - By [@pablof7z](https://nostr.com/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft) + - Svelte, Frontend +- [Ostrich.work](https://github.com/erskingardner/ostrich.work) - By [@jeffg](https://nostr.com/npub1zuuajd7u3sx8xu92yav9jwxpr839cs0kc3q6t56vd5u9q033xmhsk6c2uc) + - Svelte, frontend +- [Listr.lol](https://github.com/erskingardner/listr) - By [@jeffg](https://nostr.com/npub1zuuajd7u3sx8xu92yav9jwxpr839cs0kc3q6t56vd5u9q033xmhsk6c2uc) + - Svelte, frontend +- [Lume](https://github.com/luminous-devs/lume) - By [@reya](https://nostr.com/npub1zfss807aer0j26mwp2la0ume0jqde3823rmu97ra6sgyyg956e0s6xw445) + - Tauri, Desktop app +- [Nostr App Manager](https://github.com/nostrband/nostr-app-manager) - By [@nostrband](https://nostr.com/npub1wc4rc9wxl2gfzxl384g0cw3f79nrms0sfdpe02y7aasy7c3we4sqd0qywr) + - React, Frontend +- [Stemstr](https://github.com/stemstr/Client) - By [@stemstr](https://nostr.com/npub1stemstrls4f5plqeqkeq43gtjhtycuqd9w25v5r5z5ygaq2n2sjsd6mul5) +- [Audgit.ai](https://github.com/ArcadeLabsInc/audgit.ai) - By [@ArcadeLabsInc](https://nostr.com/npub1tlv67m7xvlyplzexuynmfpguvyet0sjffce3y8vu0suuyuwgzauqjk7fdm) diff --git a/docs-styles.css b/docs-styles.css index 95897962..8dfe0774 100644 --- a/docs-styles.css +++ b/docs-styles.css @@ -1,8 +1,20 @@ html, body { - font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, - "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", - "Segoe UI Symbol", "Noto Color Emoji"; + font-family: + ui-sans-serif, + system-ui, + -apple-system, + BlinkMacSystemFont, + "Segoe UI", + Roboto, + "Helvetica Neue", + Arial, + "Noto Sans", + sans-serif, + "Apple Color Emoji", + "Segoe UI Emoji", + "Segoe UI Symbol", + "Noto Color Emoji"; background: #222; } diff --git a/jest.config.js b/jest.config.js index 414bf3d6..53248c8e 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,8 +1,8 @@ /** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - moduleNameMapper: { - '^(\\.{1,2}/.*)\\.js$': '$1', - } -}; \ No newline at end of file + preset: "ts-jest", + testEnvironment: "node", + moduleNameMapper: { + "^(\\.{1,2}/.*)\\.js$": "$1", + }, +}; diff --git a/package.json b/package.json index 6147e1c2..acdd5bb0 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "author": "pablof7z", "license": "MIT", "devDependencies": { + "@trivago/prettier-plugin-sort-imports": "^4.2.0", "@types/debug": "^4.1.7", "@types/jest": "^29.5.0", "@types/node": "^14.11.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b98e5892..d795ba72 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,5136 +1,7191 @@ -lockfileVersion: '6.1' +lockfileVersion: "6.1" settings: - autoInstallPeers: true - excludeLinksFromLockfile: false + autoInstallPeers: true + excludeLinksFromLockfile: false dependencies: - '@noble/hashes': - specifier: ^1.3.1 - version: 1.3.1 - '@noble/secp256k1': - specifier: ^2.0.0 - version: 2.0.0 - '@scure/base': - specifier: ^1.1.1 - version: 1.1.1 - '@typescript-eslint/eslint-plugin': - specifier: ^5.57.0 - version: 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.4) - '@typescript-eslint/parser': - specifier: ^5.57.0 - version: 5.57.0(eslint@8.37.0)(typescript@5.0.4) - debug: - specifier: ^4.3.4 - version: 4.3.4 - esbuild: - specifier: ^0.17.15 - version: 0.17.15 - esbuild-plugin-alias: - specifier: ^0.2.1 - version: 0.2.1 - eslint: - specifier: ^8.37.0 - version: 8.37.0 - eslint-config-prettier: - specifier: ^8.8.0 - version: 8.8.0(eslint@8.37.0) - eslint-plugin-import: - specifier: ^2.27.5 - version: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint@8.37.0) - esm-loader-typescript: - specifier: ^1.0.4 - version: 1.0.4 - eventemitter3: - specifier: ^5.0.1 - version: 5.0.1 - light-bolt11-decoder: - specifier: ^3.0.0 - version: 3.0.0 - node-fetch: - specifier: ^3.3.1 - version: 3.3.1 - nostr-tools: - specifier: ^1.14.0 - version: 1.14.0 - tsd: - specifier: ^0.28.1 - version: 0.28.1 - utf8-buffer: - specifier: ^1.0.0 - version: 1.0.0 - websocket-polyfill: - specifier: ^0.0.3 - version: 0.0.3 + "@noble/hashes": + specifier: ^1.3.1 + version: 1.3.1 + "@noble/secp256k1": + specifier: ^2.0.0 + version: 2.0.0 + "@scure/base": + specifier: ^1.1.1 + version: 1.1.1 + "@typescript-eslint/eslint-plugin": + specifier: ^5.57.0 + version: 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.4) + "@typescript-eslint/parser": + specifier: ^5.57.0 + version: 5.57.0(eslint@8.37.0)(typescript@5.0.4) + debug: + specifier: ^4.3.4 + version: 4.3.4 + esbuild: + specifier: ^0.17.15 + version: 0.17.15 + esbuild-plugin-alias: + specifier: ^0.2.1 + version: 0.2.1 + eslint: + specifier: ^8.37.0 + version: 8.37.0 + eslint-config-prettier: + specifier: ^8.8.0 + version: 8.8.0(eslint@8.37.0) + eslint-plugin-import: + specifier: ^2.27.5 + version: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint@8.37.0) + esm-loader-typescript: + specifier: ^1.0.4 + version: 1.0.4 + eventemitter3: + specifier: ^5.0.1 + version: 5.0.1 + light-bolt11-decoder: + specifier: ^3.0.0 + version: 3.0.0 + node-fetch: + specifier: ^3.3.1 + version: 3.3.1 + nostr-tools: + specifier: ^1.14.0 + version: 1.14.0 + tsd: + specifier: ^0.28.1 + version: 0.28.1 + utf8-buffer: + specifier: ^1.0.0 + version: 1.0.0 + websocket-polyfill: + specifier: ^0.0.3 + version: 0.0.3 devDependencies: - '@types/debug': - specifier: ^4.1.7 - version: 4.1.7 - '@types/jest': - specifier: ^29.5.0 - version: 29.5.0 - '@types/node': - specifier: ^14.11.2 - version: 14.11.2 - gts: - specifier: ^3.1.1 - version: 3.1.1(typescript@5.0.4) - jest: - specifier: ^29.5.0 - version: 29.5.0(@types/node@14.11.2) - prettier-plugin-organize-imports: - specifier: ^3.2.2 - version: 3.2.2(prettier@3.0.0)(typescript@5.0.4) - ts-jest: - specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.21.4)(esbuild@0.17.15)(jest@29.5.0)(typescript@5.0.4) - tsup: - specifier: ^6.7.0 - version: 6.7.0(typescript@5.0.4) - typedoc: - specifier: ^0.24.8 - version: 0.24.8(typescript@5.0.4) - typedoc-plugin-rename-defaults: - specifier: ^0.6.5 - version: 0.6.5(typedoc@0.24.8) - typescript: - specifier: ^5.0.4 - version: 5.0.4 + "@trivago/prettier-plugin-sort-imports": + specifier: ^4.2.0 + version: 4.2.0(prettier@3.0.1) + "@types/debug": + specifier: ^4.1.7 + version: 4.1.7 + "@types/jest": + specifier: ^29.5.0 + version: 29.5.0 + "@types/node": + specifier: ^14.11.2 + version: 14.11.2 + gts: + specifier: ^3.1.1 + version: 3.1.1(typescript@5.0.4) + jest: + specifier: ^29.5.0 + version: 29.5.0(@types/node@14.11.2) + prettier: + specifier: ^3.0.1 + version: 3.0.1 + prettier-plugin-organize-imports: + specifier: ^3.2.2 + version: 3.2.2(prettier@3.0.1)(typescript@5.0.4) + ts-jest: + specifier: ^29.1.0 + version: 29.1.0(@babel/core@7.21.4)(esbuild@0.17.15)(jest@29.5.0)(typescript@5.0.4) + tsup: + specifier: ^6.7.0 + version: 6.7.0(typescript@5.0.4) + typedoc: + specifier: ^0.24.8 + version: 0.24.8(typescript@5.0.4) + typedoc-plugin-rename-defaults: + specifier: ^0.6.5 + version: 0.6.5(typedoc@0.24.8) + typescript: + specifier: ^5.0.4 + version: 5.0.4 packages: - - /@ampproject/remapping@2.2.1: - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - dev: true - - /@babel/code-frame@7.12.11: - resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} - dependencies: - '@babel/highlight': 7.18.6 - dev: true - - /@babel/code-frame@7.21.4: - resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.18.6 - - /@babel/compat-data@7.21.4: - resolution: {integrity: sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/core@7.21.4: - resolution: {integrity: sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.21.4 - '@babel/generator': 7.21.4 - '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) - '@babel/helper-module-transforms': 7.21.2 - '@babel/helpers': 7.21.0 - '@babel/parser': 7.21.4 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4 - '@babel/types': 7.21.4 - convert-source-map: 1.9.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/generator@7.21.4: - resolution: {integrity: sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.21.4 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - jsesc: 2.5.2 - dev: true - - /@babel/helper-compilation-targets@7.21.4(@babel/core@7.21.4): - resolution: {integrity: sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.21.4 - '@babel/core': 7.21.4 - '@babel/helper-validator-option': 7.21.0 - browserslist: 4.21.5 - lru-cache: 5.1.1 - semver: 6.3.0 - dev: true - - /@babel/helper-environment-visitor@7.18.9: - resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-function-name@7.21.0: - resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.20.7 - '@babel/types': 7.21.4 - dev: true - - /@babel/helper-hoist-variables@7.18.6: - resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.21.4 - dev: true - - /@babel/helper-module-imports@7.21.4: - resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.21.4 - dev: true - - /@babel/helper-module-transforms@7.21.2: - resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-module-imports': 7.21.4 - '@babel/helper-simple-access': 7.20.2 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/helper-validator-identifier': 7.19.1 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4 - '@babel/types': 7.21.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-plugin-utils@7.20.2: - resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-simple-access@7.20.2: - resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.21.4 - dev: true - - /@babel/helper-split-export-declaration@7.18.6: - resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.21.4 - dev: true - - /@babel/helper-string-parser@7.19.4: - resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-identifier@7.19.1: - resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} - engines: {node: '>=6.9.0'} - - /@babel/helper-validator-option@7.21.0: - resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helpers@7.21.0: - resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4 - '@babel/types': 7.21.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/highlight@7.18.6: - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.19.1 - chalk: 2.4.2 - js-tokens: 4.0.0 - - /@babel/parser@7.21.4: - resolution: {integrity: sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.21.4 - dev: true - - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.4): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.21.4): - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.4): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.21.4): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.4): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.21.4): - resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.4): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.4): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.4): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.4): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.4): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.4): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.21.4): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.21.4): - resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/template@7.20.7: - resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.21.4 - '@babel/parser': 7.21.4 - '@babel/types': 7.21.4 - dev: true - - /@babel/traverse@7.21.4: - resolution: {integrity: sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.21.4 - '@babel/generator': 7.21.4 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.21.4 - '@babel/types': 7.21.4 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/types@7.21.4: - resolution: {integrity: sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.19.4 - '@babel/helper-validator-identifier': 7.19.1 - to-fast-properties: 2.0.0 - dev: true - - /@bcoe/v8-coverage@0.2.3: - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - dev: true - - /@esbuild/android-arm64@0.17.15: - resolution: {integrity: sha512-0kOB6Y7Br3KDVgHeg8PRcvfLkq+AccreK///B4Z6fNZGr/tNHX0z2VywCc7PTeWp+bPvjA5WMvNXltHw5QjAIA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - optional: true - - /@esbuild/android-arm@0.17.15: - resolution: {integrity: sha512-sRSOVlLawAktpMvDyJIkdLI/c/kdRTOqo8t6ImVxg8yT7LQDUYV5Rp2FKeEosLr6ZCja9UjYAzyRSxGteSJPYg==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - optional: true - - /@esbuild/android-x64@0.17.15: - resolution: {integrity: sha512-MzDqnNajQZ63YkaUWVl9uuhcWyEyh69HGpMIrf+acR4otMkfLJ4sUCxqwbCyPGicE9dVlrysI3lMcDBjGiBBcQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - optional: true - - /@esbuild/darwin-arm64@0.17.15: - resolution: {integrity: sha512-7siLjBc88Z4+6qkMDxPT2juf2e8SJxmsbNVKFY2ifWCDT72v5YJz9arlvBw5oB4W/e61H1+HDB/jnu8nNg0rLA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - optional: true - - /@esbuild/darwin-x64@0.17.15: - resolution: {integrity: sha512-NbImBas2rXwYI52BOKTW342Tm3LTeVlaOQ4QPZ7XuWNKiO226DisFk/RyPk3T0CKZkKMuU69yOvlapJEmax7cg==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - optional: true - - /@esbuild/freebsd-arm64@0.17.15: - resolution: {integrity: sha512-Xk9xMDjBVG6CfgoqlVczHAdJnCs0/oeFOspFap5NkYAmRCT2qTn1vJWA2f419iMtsHSLm+O8B6SLV/HlY5cYKg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - optional: true - - /@esbuild/freebsd-x64@0.17.15: - resolution: {integrity: sha512-3TWAnnEOdclvb2pnfsTWtdwthPfOz7qAfcwDLcfZyGJwm1SRZIMOeB5FODVhnM93mFSPsHB9b/PmxNNbSnd0RQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - optional: true - - /@esbuild/linux-arm64@0.17.15: - resolution: {integrity: sha512-T0MVnYw9KT6b83/SqyznTs/3Jg2ODWrZfNccg11XjDehIved2oQfrX/wVuev9N936BpMRaTR9I1J0tdGgUgpJA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - optional: true - - /@esbuild/linux-arm@0.17.15: - resolution: {integrity: sha512-MLTgiXWEMAMr8nmS9Gigx43zPRmEfeBfGCwxFQEMgJ5MC53QKajaclW6XDPjwJvhbebv+RzK05TQjvH3/aM4Xw==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - optional: true - - /@esbuild/linux-ia32@0.17.15: - resolution: {integrity: sha512-wp02sHs015T23zsQtU4Cj57WiteiuASHlD7rXjKUyAGYzlOKDAjqK6bk5dMi2QEl/KVOcsjwL36kD+WW7vJt8Q==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - optional: true - - /@esbuild/linux-loong64@0.17.15: - resolution: {integrity: sha512-k7FsUJjGGSxwnBmMh8d7IbObWu+sF/qbwc+xKZkBe/lTAF16RqxRCnNHA7QTd3oS2AfGBAnHlXL67shV5bBThQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - optional: true - - /@esbuild/linux-mips64el@0.17.15: - resolution: {integrity: sha512-ZLWk6czDdog+Q9kE/Jfbilu24vEe/iW/Sj2d8EVsmiixQ1rM2RKH2n36qfxK4e8tVcaXkvuV3mU5zTZviE+NVQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - optional: true - - /@esbuild/linux-ppc64@0.17.15: - resolution: {integrity: sha512-mY6dPkIRAiFHRsGfOYZC8Q9rmr8vOBZBme0/j15zFUKM99d4ILY4WpOC7i/LqoY+RE7KaMaSfvY8CqjJtuO4xg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - optional: true - - /@esbuild/linux-riscv64@0.17.15: - resolution: {integrity: sha512-EcyUtxffdDtWjjwIH8sKzpDRLcVtqANooMNASO59y+xmqqRYBBM7xVLQhqF7nksIbm2yHABptoioS9RAbVMWVA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - optional: true - - /@esbuild/linux-s390x@0.17.15: - resolution: {integrity: sha512-BuS6Jx/ezxFuHxgsfvz7T4g4YlVrmCmg7UAwboeyNNg0OzNzKsIZXpr3Sb/ZREDXWgt48RO4UQRDBxJN3B9Rbg==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - optional: true - - /@esbuild/linux-x64@0.17.15: - resolution: {integrity: sha512-JsdS0EgEViwuKsw5tiJQo9UdQdUJYuB+Mf6HxtJSPN35vez1hlrNb1KajvKWF5Sa35j17+rW1ECEO9iNrIXbNg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - optional: true - - /@esbuild/netbsd-x64@0.17.15: - resolution: {integrity: sha512-R6fKjtUysYGym6uXf6qyNephVUQAGtf3n2RCsOST/neIwPqRWcnc3ogcielOd6pT+J0RDR1RGcy0ZY7d3uHVLA==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - optional: true - - /@esbuild/openbsd-x64@0.17.15: - resolution: {integrity: sha512-mVD4PGc26b8PI60QaPUltYKeSX0wxuy0AltC+WCTFwvKCq2+OgLP4+fFd+hZXzO2xW1HPKcytZBdjqL6FQFa7w==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - optional: true - - /@esbuild/sunos-x64@0.17.15: - resolution: {integrity: sha512-U6tYPovOkw3459t2CBwGcFYfFRjivcJJc1WC8Q3funIwX8x4fP+R6xL/QuTPNGOblbq/EUDxj9GU+dWKX0oWlQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - optional: true - - /@esbuild/win32-arm64@0.17.15: - resolution: {integrity: sha512-W+Z5F++wgKAleDABemiyXVnzXgvRFs+GVKThSI+mGgleLWluv0D7Diz4oQpgdpNzh4i2nNDzQtWbjJiqutRp6Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - optional: true - - /@esbuild/win32-ia32@0.17.15: - resolution: {integrity: sha512-Muz/+uGgheShKGqSVS1KsHtCyEzcdOn/W/Xbh6H91Etm+wiIfwZaBn1W58MeGtfI8WA961YMHFYTthBdQs4t+w==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - optional: true - - /@esbuild/win32-x64@0.17.15: - resolution: {integrity: sha512-DjDa9ywLUUmjhV2Y9wUTIF+1XsmuFGvZoCmOWkli1XcNAh5t25cc7fgsCx4Zi/Uurep3TTLyDiKATgGEg61pkA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - optional: true - - /@eslint-community/eslint-utils@4.4.0(eslint@8.37.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 8.37.0 - eslint-visitor-keys: 3.4.0 - dev: false - - /@eslint-community/regexpp@4.5.0: - resolution: {integrity: sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: false - - /@eslint/eslintrc@0.4.3: - resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 7.3.1 - globals: 13.20.0 - ignore: 4.0.6 - import-fresh: 3.3.0 - js-yaml: 3.14.1 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@eslint/eslintrc@2.0.2: - resolution: {integrity: sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.5.1 - globals: 13.20.0 - ignore: 5.2.4 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@eslint/js@8.37.0: - resolution: {integrity: sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: false - - /@humanwhocodes/config-array@0.11.8: - resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: false - - /@humanwhocodes/config-array@0.5.0: - resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@humanwhocodes/module-importer@1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - dev: false - - /@humanwhocodes/object-schema@1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} - - /@istanbuljs/load-nyc-config@1.1.0: - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - dev: true - - /@istanbuljs/schema@0.1.3: - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - dev: true - - /@jest/console@29.5.0: - resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - '@types/node': 14.11.2 - chalk: 4.1.2 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - slash: 3.0.0 - dev: true - - /@jest/core@29.5.0: - resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/console': 29.5.0 - '@jest/reporters': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 14.11.2 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.8.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.5.0 - jest-config: 29.5.0(@types/node@14.11.2) - jest-haste-map: 29.5.0 - jest-message-util: 29.5.0 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-resolve-dependencies: 29.5.0 - jest-runner: 29.5.0 - jest-runtime: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - jest-watcher: 29.5.0 - micromatch: 4.0.5 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - supports-color - - ts-node - dev: true - - /@jest/environment@29.5.0: - resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/fake-timers': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 14.11.2 - jest-mock: 29.5.0 - dev: true - - /@jest/expect-utils@29.5.0: - resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - jest-get-type: 29.4.3 - dev: true - - /@jest/expect@29.5.0: - resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - expect: 29.5.0 - jest-snapshot: 29.5.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/fake-timers@29.5.0: - resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - '@sinonjs/fake-timers': 10.0.2 - '@types/node': 14.11.2 - jest-message-util: 29.5.0 - jest-mock: 29.5.0 - jest-util: 29.5.0 - dev: true - - /@jest/globals@29.5.0: - resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/environment': 29.5.0 - '@jest/expect': 29.5.0 - '@jest/types': 29.5.0 - jest-mock: 29.5.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/reporters@29.5.0: - resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@jridgewell/trace-mapping': 0.3.18 - '@types/node': 14.11.2 - chalk: 4.1.2 - collect-v8-coverage: 1.0.1 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 5.2.1 - istanbul-lib-report: 3.0.0 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.5 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - jest-worker: 29.5.0 - slash: 3.0.0 - string-length: 4.0.2 - strip-ansi: 6.0.1 - v8-to-istanbul: 9.1.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/schemas@29.4.3: - resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@sinclair/typebox': 0.25.24 - - /@jest/source-map@29.4.3: - resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jridgewell/trace-mapping': 0.3.18 - callsites: 3.1.0 - graceful-fs: 4.2.11 - dev: true - - /@jest/test-result@29.5.0: - resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/console': 29.5.0 - '@jest/types': 29.5.0 - '@types/istanbul-lib-coverage': 2.0.4 - collect-v8-coverage: 1.0.1 - dev: true - - /@jest/test-sequencer@29.5.0: - resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/test-result': 29.5.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.5.0 - slash: 3.0.0 - dev: true - - /@jest/transform@29.5.0: - resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/core': 7.21.4 - '@jest/types': 29.5.0 - '@jridgewell/trace-mapping': 0.3.18 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 2.0.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.5.0 - jest-regex-util: 29.4.3 - jest-util: 29.5.0 - micromatch: 4.0.5 - pirates: 4.0.5 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/types@29.5.0: - resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.4.3 - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 14.11.2 - '@types/yargs': 17.0.24 - chalk: 4.1.2 - dev: true - - /@jridgewell/gen-mapping@0.3.3: - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.18 - dev: true - - /@jridgewell/resolve-uri@3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/sourcemap-codec@1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - dev: true - - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - dev: true - - /@jridgewell/trace-mapping@0.3.18: - resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - - /@noble/curves@1.1.0: - resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==} - dependencies: - '@noble/hashes': 1.3.1 - dev: false - - /@noble/hashes@1.3.1: - resolution: {integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==} - engines: {node: '>= 16'} - dev: false - - /@noble/secp256k1@2.0.0: - resolution: {integrity: sha512-rUGBd95e2a45rlmFTqQJYEFA4/gdIARFfuTuTqLglz0PZ6AKyzyXsEZZq7UZn8hZsvaBgpCzKKBJizT2cJERXw==} - dev: false - - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - - /@scure/base@1.1.1: - resolution: {integrity: sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==} - dev: false - - /@scure/bip32@1.3.1: - resolution: {integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==} - dependencies: - '@noble/curves': 1.1.0 - '@noble/hashes': 1.3.1 - '@scure/base': 1.1.1 - dev: false - - /@scure/bip39@1.2.1: - resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} - dependencies: - '@noble/hashes': 1.3.1 - '@scure/base': 1.1.1 - dev: false - - /@sinclair/typebox@0.25.24: - resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} - - /@sinonjs/commons@2.0.0: - resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} - dependencies: - type-detect: 4.0.8 - dev: true - - /@sinonjs/fake-timers@10.0.2: - resolution: {integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==} - dependencies: - '@sinonjs/commons': 2.0.0 - dev: true - - /@tsd/typescript@5.0.4: - resolution: {integrity: sha512-YQi2lvZSI+xidKeUjlbv6b6Zw7qB3aXHw5oGJLs5OOGAEqKIOvz5UIAkWyg0bJbkSUWPBEtaOHpVxU4EYBO1Jg==} - dev: false - - /@types/babel__core@7.20.0: - resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} - dependencies: - '@babel/parser': 7.21.4 - '@babel/types': 7.21.4 - '@types/babel__generator': 7.6.4 - '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.18.5 - dev: true - - /@types/babel__generator@7.6.4: - resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} - dependencies: - '@babel/types': 7.21.4 - dev: true - - /@types/babel__template@7.4.1: - resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} - dependencies: - '@babel/parser': 7.21.4 - '@babel/types': 7.21.4 - dev: true - - /@types/babel__traverse@7.18.5: - resolution: {integrity: sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q==} - dependencies: - '@babel/types': 7.21.4 - dev: true - - /@types/debug@4.1.7: - resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} - dependencies: - '@types/ms': 0.7.31 - dev: true - - /@types/eslint@7.29.0: - resolution: {integrity: sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==} - dependencies: - '@types/estree': 1.0.1 - '@types/json-schema': 7.0.11 - dev: false - - /@types/estree@1.0.1: - resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} - dev: false - - /@types/graceful-fs@4.1.6: - resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} - dependencies: - '@types/node': 14.11.2 - dev: true - - /@types/istanbul-lib-coverage@2.0.4: - resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} - dev: true - - /@types/istanbul-lib-report@3.0.0: - resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} - dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - dev: true - - /@types/istanbul-reports@3.0.1: - resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} - dependencies: - '@types/istanbul-lib-report': 3.0.0 - dev: true - - /@types/jest@29.5.0: - resolution: {integrity: sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==} - dependencies: - expect: 29.5.0 - pretty-format: 29.5.0 - dev: true - - /@types/json-schema@7.0.11: - resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} - - /@types/json5@0.0.29: - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - dev: false - - /@types/minimist@1.2.2: - resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} - - /@types/ms@0.7.31: - resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} - dev: true - - /@types/node@14.11.2: - resolution: {integrity: sha512-jiE3QIxJ8JLNcb1Ps6rDbysDhN4xa8DJJvuC9prr6w+1tIh+QAbYyNF3tyiZNLDBIuBCf4KEcV2UvQm/V60xfA==} - dev: true - - /@types/normalize-package-data@2.4.1: - resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} - - /@types/prettier@2.7.2: - resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} - dev: true - - /@types/semver@7.3.13: - resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} - dev: false - - /@types/stack-utils@2.0.1: - resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} - dev: true - - /@types/yargs-parser@21.0.0: - resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - dev: true - - /@types/yargs@17.0.24: - resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} - dependencies: - '@types/yargs-parser': 21.0.0 - dev: true - - /@typescript-eslint/eslint-plugin@4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@5.0.4): - resolution: {integrity: sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - '@typescript-eslint/parser': ^4.0.0 - eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/experimental-utils': 4.33.0(eslint@7.32.0)(typescript@5.0.4) - '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@5.0.4) - '@typescript-eslint/scope-manager': 4.33.0 - debug: 4.3.4 - eslint: 7.32.0 - functional-red-black-tree: 1.0.1 - ignore: 5.2.4 - regexpp: 3.2.0 - semver: 7.5.0 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/eslint-plugin@5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.4): - resolution: {integrity: sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@eslint-community/regexpp': 4.5.0 - '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.4) - '@typescript-eslint/scope-manager': 5.57.0 - '@typescript-eslint/type-utils': 5.57.0(eslint@8.37.0)(typescript@5.0.4) - '@typescript-eslint/utils': 5.57.0(eslint@8.37.0)(typescript@5.0.4) - debug: 4.3.4 - eslint: 8.37.0 - grapheme-splitter: 1.0.4 - ignore: 5.2.4 - natural-compare-lite: 1.4.0 - semver: 7.5.0 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 - transitivePeerDependencies: - - supports-color - dev: false - - /@typescript-eslint/experimental-utils@4.33.0(eslint@7.32.0)(typescript@5.0.4): - resolution: {integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - eslint: '*' - dependencies: - '@types/json-schema': 7.0.11 - '@typescript-eslint/scope-manager': 4.33.0 - '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/typescript-estree': 4.33.0(typescript@5.0.4) - eslint: 7.32.0 - eslint-scope: 5.1.1 - eslint-utils: 3.0.0(eslint@7.32.0) - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.0.4): - resolution: {integrity: sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 4.33.0 - '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/typescript-estree': 4.33.0(typescript@5.0.4) - debug: 4.3.4 - eslint: 7.32.0 - typescript: 5.0.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/parser@5.57.0(eslint@8.37.0)(typescript@5.0.4): - resolution: {integrity: sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 5.57.0 - '@typescript-eslint/types': 5.57.0 - '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.4) - debug: 4.3.4 - eslint: 8.37.0 - typescript: 5.0.4 - transitivePeerDependencies: - - supports-color - dev: false - - /@typescript-eslint/scope-manager@4.33.0: - resolution: {integrity: sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - dependencies: - '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/visitor-keys': 4.33.0 - dev: true - - /@typescript-eslint/scope-manager@5.57.0: - resolution: {integrity: sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.57.0 - '@typescript-eslint/visitor-keys': 5.57.0 - dev: false - - /@typescript-eslint/type-utils@5.57.0(eslint@8.37.0)(typescript@5.0.4): - resolution: {integrity: sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '*' - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.4) - '@typescript-eslint/utils': 5.57.0(eslint@8.37.0)(typescript@5.0.4) - debug: 4.3.4 - eslint: 8.37.0 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 - transitivePeerDependencies: - - supports-color - dev: false - - /@typescript-eslint/types@4.33.0: - resolution: {integrity: sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - dev: true - - /@typescript-eslint/types@5.57.0: - resolution: {integrity: sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: false - - /@typescript-eslint/typescript-estree@4.33.0(typescript@5.0.4): - resolution: {integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/visitor-keys': 4.33.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.0 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/typescript-estree@5.57.0(typescript@5.0.4): - resolution: {integrity: sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: + /@ampproject/remapping@2.2.1: + resolution: + { + integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==, + } + engines: { node: ">=6.0.0" } + dependencies: + "@jridgewell/gen-mapping": 0.3.3 + "@jridgewell/trace-mapping": 0.3.18 + dev: true + + /@babel/code-frame@7.12.11: + resolution: + { + integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==, + } + dependencies: + "@babel/highlight": 7.18.6 + dev: true + + /@babel/code-frame@7.21.4: + resolution: + { + integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/highlight": 7.18.6 + + /@babel/compat-data@7.21.4: + resolution: + { + integrity: sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==, + } + engines: { node: ">=6.9.0" } + dev: true + + /@babel/core@7.21.4: + resolution: + { + integrity: sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@ampproject/remapping": 2.2.1 + "@babel/code-frame": 7.21.4 + "@babel/generator": 7.21.4 + "@babel/helper-compilation-targets": 7.21.4(@babel/core@7.21.4) + "@babel/helper-module-transforms": 7.21.2 + "@babel/helpers": 7.21.0 + "@babel/parser": 7.21.4 + "@babel/template": 7.20.7 + "@babel/traverse": 7.21.4 + "@babel/types": 7.21.4 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator@7.17.7: + resolution: + { + integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.21.4 + jsesc: 2.5.2 + source-map: 0.5.7 + dev: true + + /@babel/generator@7.21.4: + resolution: + { + integrity: sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.21.4 + "@jridgewell/gen-mapping": 0.3.3 + "@jridgewell/trace-mapping": 0.3.18 + jsesc: 2.5.2 + dev: true + + /@babel/helper-compilation-targets@7.21.4(@babel/core@7.21.4): + resolution: + { + integrity: sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0 + dependencies: + "@babel/compat-data": 7.21.4 + "@babel/core": 7.21.4 + "@babel/helper-validator-option": 7.21.0 + browserslist: 4.21.5 + lru-cache: 5.1.1 + semver: 6.3.0 + dev: true + + /@babel/helper-environment-visitor@7.18.9: + resolution: + { + integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==, + } + engines: { node: ">=6.9.0" } + dev: true + + /@babel/helper-function-name@7.21.0: + resolution: + { + integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/template": 7.20.7 + "@babel/types": 7.21.4 + dev: true + + /@babel/helper-hoist-variables@7.18.6: + resolution: + { + integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.21.4 + dev: true + + /@babel/helper-module-imports@7.21.4: + resolution: + { + integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.21.4 + dev: true + + /@babel/helper-module-transforms@7.21.2: + resolution: + { + integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/helper-environment-visitor": 7.18.9 + "@babel/helper-module-imports": 7.21.4 + "@babel/helper-simple-access": 7.20.2 + "@babel/helper-split-export-declaration": 7.18.6 + "@babel/helper-validator-identifier": 7.19.1 + "@babel/template": 7.20.7 + "@babel/traverse": 7.21.4 + "@babel/types": 7.21.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-plugin-utils@7.20.2: + resolution: + { + integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==, + } + engines: { node: ">=6.9.0" } + dev: true + + /@babel/helper-simple-access@7.20.2: + resolution: + { + integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.21.4 + dev: true + + /@babel/helper-split-export-declaration@7.18.6: + resolution: + { + integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.21.4 + dev: true + + /@babel/helper-string-parser@7.19.4: + resolution: + { + integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==, + } + engines: { node: ">=6.9.0" } + dev: true + + /@babel/helper-validator-identifier@7.19.1: + resolution: + { + integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==, + } + engines: { node: ">=6.9.0" } + + /@babel/helper-validator-option@7.21.0: + resolution: + { + integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==, + } + engines: { node: ">=6.9.0" } + dev: true + + /@babel/helpers@7.21.0: + resolution: + { + integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/template": 7.20.7 + "@babel/traverse": 7.21.4 + "@babel/types": 7.21.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/highlight@7.18.6: + resolution: + { + integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/helper-validator-identifier": 7.19.1 + chalk: 2.4.2 + js-tokens: 4.0.0 + + /@babel/parser@7.21.4: + resolution: + { + integrity: sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==, + } + engines: { node: ">=6.0.0" } + hasBin: true + dependencies: + "@babel/types": 7.21.4 + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.4): + resolution: + { + integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==, + } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.21.4 + "@babel/helper-plugin-utils": 7.20.2 + dev: true + + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.21.4): + resolution: + { + integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==, + } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.21.4 + "@babel/helper-plugin-utils": 7.20.2 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.4): + resolution: + { + integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==, + } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.21.4 + "@babel/helper-plugin-utils": 7.20.2 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.21.4): + resolution: + { + integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==, + } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.21.4 + "@babel/helper-plugin-utils": 7.20.2 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.4): + resolution: + { + integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==, + } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.21.4 + "@babel/helper-plugin-utils": 7.20.2 + dev: true + + /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.21.4): + resolution: + { + integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.21.4 + "@babel/helper-plugin-utils": 7.20.2 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.4): + resolution: + { + integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==, + } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.21.4 + "@babel/helper-plugin-utils": 7.20.2 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.4): + resolution: + { + integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==, + } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.21.4 + "@babel/helper-plugin-utils": 7.20.2 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.4): + resolution: + { + integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==, + } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.21.4 + "@babel/helper-plugin-utils": 7.20.2 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.4): + resolution: + { + integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==, + } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.21.4 + "@babel/helper-plugin-utils": 7.20.2 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.4): + resolution: + { + integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==, + } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.21.4 + "@babel/helper-plugin-utils": 7.20.2 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.4): + resolution: + { + integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==, + } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.21.4 + "@babel/helper-plugin-utils": 7.20.2 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.21.4): + resolution: + { + integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.21.4 + "@babel/helper-plugin-utils": 7.20.2 + dev: true + + /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.21.4): + resolution: + { + integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.21.4 + "@babel/helper-plugin-utils": 7.20.2 + dev: true + + /@babel/template@7.20.7: + resolution: + { + integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/code-frame": 7.21.4 + "@babel/parser": 7.21.4 + "@babel/types": 7.21.4 + dev: true + + /@babel/traverse@7.17.3: + resolution: + { + integrity: sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/code-frame": 7.21.4 + "@babel/generator": 7.21.4 + "@babel/helper-environment-visitor": 7.18.9 + "@babel/helper-function-name": 7.21.0 + "@babel/helper-hoist-variables": 7.18.6 + "@babel/helper-split-export-declaration": 7.18.6 + "@babel/parser": 7.21.4 + "@babel/types": 7.21.4 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/traverse@7.21.4: + resolution: + { + integrity: sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/code-frame": 7.21.4 + "@babel/generator": 7.21.4 + "@babel/helper-environment-visitor": 7.18.9 + "@babel/helper-function-name": 7.21.0 + "@babel/helper-hoist-variables": 7.18.6 + "@babel/helper-split-export-declaration": 7.18.6 + "@babel/parser": 7.21.4 + "@babel/types": 7.21.4 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.17.0: + resolution: + { + integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/helper-validator-identifier": 7.19.1 + to-fast-properties: 2.0.0 + dev: true + + /@babel/types@7.21.4: + resolution: + { + integrity: sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/helper-string-parser": 7.19.4 + "@babel/helper-validator-identifier": 7.19.1 + to-fast-properties: 2.0.0 + dev: true + + /@bcoe/v8-coverage@0.2.3: + resolution: + { + integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==, + } + dev: true + + /@esbuild/android-arm64@0.17.15: + resolution: + { + integrity: sha512-0kOB6Y7Br3KDVgHeg8PRcvfLkq+AccreK///B4Z6fNZGr/tNHX0z2VywCc7PTeWp+bPvjA5WMvNXltHw5QjAIA==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [android] + requiresBuild: true optional: true - dependencies: - '@typescript-eslint/types': 5.57.0 - '@typescript-eslint/visitor-keys': 5.57.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.0 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 - transitivePeerDependencies: - - supports-color - dev: false - - /@typescript-eslint/utils@5.57.0(eslint@8.37.0)(typescript@5.0.4): - resolution: {integrity: sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.37.0) - '@types/json-schema': 7.0.11 - '@types/semver': 7.3.13 - '@typescript-eslint/scope-manager': 5.57.0 - '@typescript-eslint/types': 5.57.0 - '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.4) - eslint: 8.37.0 - eslint-scope: 5.1.1 - semver: 7.5.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: false - - /@typescript-eslint/visitor-keys@4.33.0: - resolution: {integrity: sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - dependencies: - '@typescript-eslint/types': 4.33.0 - eslint-visitor-keys: 2.1.0 - dev: true - - /@typescript-eslint/visitor-keys@5.57.0: - resolution: {integrity: sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.57.0 - eslint-visitor-keys: 3.4.0 - dev: false - - /acorn-jsx@5.3.2(acorn@7.4.1): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 7.4.1 - dev: true - - /acorn-jsx@5.3.2(acorn@8.8.2): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.8.2 - dev: false - - /acorn@7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /acorn@8.8.2: - resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: false - - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - /ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - dev: true - - /ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - dev: true - - /ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.21.3 - - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - /ansi-sequence-parser@1.1.0: - resolution: {integrity: sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==} - dev: true - - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 - - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - - /ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - - /any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - dev: true - - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: true - - /argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - dependencies: - sprintf-js: 1.0.3 - dev: true - - /argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: false - - /array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} - dependencies: - call-bind: 1.0.2 - is-array-buffer: 3.0.2 - dev: false - - /array-includes@3.1.6: - resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - get-intrinsic: 1.2.0 - is-string: 1.0.7 - dev: false - - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - /array.prototype.flat@1.3.1: - resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - es-shim-unscopables: 1.0.0 - dev: false - - /array.prototype.flatmap@1.3.1: - resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - es-shim-unscopables: 1.0.0 - dev: false - - /arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - - /astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} - dev: true - - /available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} - engines: {node: '>= 0.4'} - dev: false - - /babel-jest@29.5.0(@babel/core@7.21.4): - resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.8.0 - dependencies: - '@babel/core': 7.21.4 - '@jest/transform': 29.5.0 - '@types/babel__core': 7.20.0 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.5.0(@babel/core@7.21.4) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} - dependencies: - '@babel/helper-plugin-utils': 7.20.2 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 5.2.1 - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-jest-hoist@29.5.0: - resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/template': 7.20.7 - '@babel/types': 7.21.4 - '@types/babel__core': 7.20.0 - '@types/babel__traverse': 7.18.5 - dev: true - - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.21.4): - resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.21.4 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.4) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.21.4) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.4) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.21.4) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.4) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.4) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.4) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.4) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.4) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.4) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.4) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.21.4) - dev: true - - /babel-preset-jest@29.5.0(@babel/core@7.21.4): - resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.21.4 - babel-plugin-jest-hoist: 29.5.0 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.4) - dev: true - - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - dev: true - - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - /brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - dependencies: - balanced-match: 1.0.2 - dev: true - - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 - - /browserslist@4.21.5: - resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001481 - electron-to-chromium: 1.4.376 - node-releases: 2.0.10 - update-browserslist-db: 1.0.11(browserslist@4.21.5) - dev: true - - /bs-logger@0.2.6: - resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} - engines: {node: '>= 6'} - dependencies: - fast-json-stable-stringify: 2.1.0 - dev: true - - /bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - dependencies: - node-int64: 0.4.0 - dev: true - - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true - - /bufferutil@4.0.7: - resolution: {integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==} - engines: {node: '>=6.14.2'} - requiresBuild: true - dependencies: - node-gyp-build: 4.6.0 - dev: false - - /bundle-require@4.0.1(esbuild@0.17.15): - resolution: {integrity: sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - peerDependencies: - esbuild: '>=0.17' - dependencies: - esbuild: 0.17.15 - load-tsconfig: 0.2.5 - dev: true - - /cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - dev: true - - /call-bind@1.0.2: - resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} - dependencies: - function-bind: 1.1.1 - get-intrinsic: 1.2.0 - dev: false - - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - /camelcase-keys@6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} - dependencies: - camelcase: 5.3.1 - map-obj: 4.3.0 - quick-lru: 4.0.1 - - /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - - /camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - dev: true - - /caniuse-lite@1.0.30001481: - resolution: {integrity: sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ==} - dev: true - - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - /char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - dev: true - - /chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: true - - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /ci-info@3.8.0: - resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} - engines: {node: '>=8'} - dev: true - - /cjs-module-lexer@1.2.2: - resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} - dev: true - - /cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - dependencies: - restore-cursor: 3.1.0 - dev: true - - /cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} - dev: true - - /cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: true - - /co@4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - dev: true - - /collect-v8-coverage@1.0.1: - resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} - dev: true - - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - dependencies: - color-name: 1.1.3 - - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - /commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - dev: true - - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - /convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: true - - /convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - dev: true - - /create-esm-loader@0.2.3: - resolution: {integrity: sha512-cllzD6IU/mzXBs5OdQVWL3+ne5Elpu3Wdm7h5OldMbGXk76yr9XzHlQXWJ4zfs0ZAibe26rkbs4KvMAJm7fIZA==} - engines: {node: '>=14.x'} - dependencies: - semver: 7.5.0 - dev: false - - /cross-spawn@6.0.5: - resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} - engines: {node: '>=4.8'} - dependencies: - nice-try: 1.0.5 - path-key: 2.0.1 - semver: 5.7.1 - shebang-command: 1.2.0 - which: 1.3.1 - dev: false - - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - /d@1.0.1: - resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} - dependencies: - es5-ext: 0.10.62 - type: 1.2.0 - dev: false - - /data-uri-to-buffer@4.0.1: - resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} - engines: {node: '>= 12'} - dev: false - - /debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.0.0 - dev: false - - /debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - dev: false - - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - - /decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} - dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 - - /decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - - /dedent@0.7.0: - resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - dev: true - - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - /deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - dev: true - - /define-properties@1.2.0: - resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} - engines: {node: '>= 0.4'} - dependencies: - has-property-descriptors: 1.0.0 - object-keys: 1.1.1 - dev: false - - /detect-newline@3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - dev: true - - /diff-sequences@29.4.3: - resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - /dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - dependencies: - path-type: 4.0.0 - - /doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - dependencies: - esutils: 2.0.3 - dev: false - - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dependencies: - esutils: 2.0.3 - - /electron-to-chromium@1.4.376: - resolution: {integrity: sha512-TFeOKd98TpJzRHkr4Aorn16QkMnuCQuGAE6IZ0wYF+qkbSfMPqjplvRppR02tMUpVxZz8nyBNvVm9lIZsqrbPQ==} - dev: true - - /emittery@0.13.1: - resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} - engines: {node: '>=12'} - dev: true - - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - /enquirer@2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} - engines: {node: '>=8.6'} - dependencies: - ansi-colors: 4.1.3 - dev: true - - /error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - dependencies: - is-arrayish: 0.2.1 - - /es-abstract@1.21.2: - resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.0 - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - es-set-tostringtag: 2.0.1 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.5 - get-intrinsic: 1.2.0 - get-symbol-description: 1.0.0 - globalthis: 1.0.3 - gopd: 1.0.1 - has: 1.0.3 - has-property-descriptors: 1.0.0 - has-proto: 1.0.1 - has-symbols: 1.0.3 - internal-slot: 1.0.5 - is-array-buffer: 3.0.2 - is-callable: 1.2.7 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - is-string: 1.0.7 - is-typed-array: 1.1.10 - is-weakref: 1.0.2 - object-inspect: 1.12.3 - object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.5.0 - safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.7 - string.prototype.trimend: 1.0.6 - string.prototype.trimstart: 1.0.6 - typed-array-length: 1.0.4 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.9 - dev: false - - /es-set-tostringtag@2.0.1: - resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.0 - has: 1.0.3 - has-tostringtag: 1.0.0 - dev: false - - /es-shim-unscopables@1.0.0: - resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} - dependencies: - has: 1.0.3 - dev: false - - /es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - dev: false - - /es5-ext@0.10.62: - resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} - engines: {node: '>=0.10'} - requiresBuild: true - dependencies: - es6-iterator: 2.0.3 - es6-symbol: 3.1.3 - next-tick: 1.1.0 - dev: false - - /es6-iterator@2.0.3: - resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} - dependencies: - d: 1.0.1 - es5-ext: 0.10.62 - es6-symbol: 3.1.3 - dev: false - - /es6-symbol@3.1.3: - resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} - dependencies: - d: 1.0.1 - ext: 1.7.0 - dev: false - - /esbuild-plugin-alias@0.2.1: - resolution: {integrity: sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==} - dev: false - - /esbuild@0.17.15: - resolution: {integrity: sha512-LBUV2VsUIc/iD9ME75qhT4aJj0r75abCVS0jakhFzOtR7TQsqQA5w0tZ+KTKnwl3kXE0MhskNdHDh/I5aCR1Zw==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.17.15 - '@esbuild/android-arm64': 0.17.15 - '@esbuild/android-x64': 0.17.15 - '@esbuild/darwin-arm64': 0.17.15 - '@esbuild/darwin-x64': 0.17.15 - '@esbuild/freebsd-arm64': 0.17.15 - '@esbuild/freebsd-x64': 0.17.15 - '@esbuild/linux-arm': 0.17.15 - '@esbuild/linux-arm64': 0.17.15 - '@esbuild/linux-ia32': 0.17.15 - '@esbuild/linux-loong64': 0.17.15 - '@esbuild/linux-mips64el': 0.17.15 - '@esbuild/linux-ppc64': 0.17.15 - '@esbuild/linux-riscv64': 0.17.15 - '@esbuild/linux-s390x': 0.17.15 - '@esbuild/linux-x64': 0.17.15 - '@esbuild/netbsd-x64': 0.17.15 - '@esbuild/openbsd-x64': 0.17.15 - '@esbuild/sunos-x64': 0.17.15 - '@esbuild/win32-arm64': 0.17.15 - '@esbuild/win32-ia32': 0.17.15 - '@esbuild/win32-x64': 0.17.15 - - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - dev: true - - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - /escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - dev: true - - /escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - /eslint-config-prettier@7.2.0(eslint@7.32.0): - resolution: {integrity: sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - dependencies: - eslint: 7.32.0 - dev: true - - /eslint-config-prettier@8.8.0(eslint@8.37.0): - resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - dependencies: - eslint: 8.37.0 - dev: false - - /eslint-formatter-pretty@4.1.0: - resolution: {integrity: sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==} - engines: {node: '>=10'} - dependencies: - '@types/eslint': 7.29.0 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - eslint-rule-docs: 1.1.235 - log-symbols: 4.1.0 - plur: 4.0.0 - string-width: 4.2.3 - supports-hyperlinks: 2.3.0 - dev: false - - /eslint-import-resolver-node@0.3.7: - resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} - dependencies: - debug: 3.2.7 - is-core-module: 2.12.0 - resolve: 1.22.2 - transitivePeerDependencies: - - supports-color - dev: false - - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-node@0.3.7)(eslint@8.37.0): - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: + + /@esbuild/android-arm@0.17.15: + resolution: + { + integrity: sha512-sRSOVlLawAktpMvDyJIkdLI/c/kdRTOqo8t6ImVxg8yT7LQDUYV5Rp2FKeEosLr6ZCja9UjYAzyRSxGteSJPYg==, + } + engines: { node: ">=12" } + cpu: [arm] + os: [android] + requiresBuild: true optional: true - eslint-import-resolver-node: + + /@esbuild/android-x64@0.17.15: + resolution: + { + integrity: sha512-MzDqnNajQZ63YkaUWVl9uuhcWyEyh69HGpMIrf+acR4otMkfLJ4sUCxqwbCyPGicE9dVlrysI3lMcDBjGiBBcQ==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [android] + requiresBuild: true optional: true - eslint-import-resolver-typescript: + + /@esbuild/darwin-arm64@0.17.15: + resolution: + { + integrity: sha512-7siLjBc88Z4+6qkMDxPT2juf2e8SJxmsbNVKFY2ifWCDT72v5YJz9arlvBw5oB4W/e61H1+HDB/jnu8nNg0rLA==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [darwin] + requiresBuild: true optional: true - eslint-import-resolver-webpack: + + /@esbuild/darwin-x64@0.17.15: + resolution: + { + integrity: sha512-NbImBas2rXwYI52BOKTW342Tm3LTeVlaOQ4QPZ7XuWNKiO226DisFk/RyPk3T0CKZkKMuU69yOvlapJEmax7cg==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [darwin] + requiresBuild: true optional: true - dependencies: - '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.4) - debug: 3.2.7 - eslint: 8.37.0 - eslint-import-resolver-node: 0.3.7 - transitivePeerDependencies: - - supports-color - dev: false - - /eslint-plugin-es@3.0.1(eslint@7.32.0): - resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} - engines: {node: '>=8.10.0'} - peerDependencies: - eslint: '>=4.19.1' - dependencies: - eslint: 7.32.0 - eslint-utils: 2.1.0 - regexpp: 3.2.0 - dev: true - - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.57.0)(eslint@8.37.0): - resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': + + /@esbuild/freebsd-arm64@0.17.15: + resolution: + { + integrity: sha512-Xk9xMDjBVG6CfgoqlVczHAdJnCs0/oeFOspFap5NkYAmRCT2qTn1vJWA2f419iMtsHSLm+O8B6SLV/HlY5cYKg==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [freebsd] + requiresBuild: true optional: true - dependencies: - '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.4) - array-includes: 3.1.6 - array.prototype.flat: 1.3.1 - array.prototype.flatmap: 1.3.1 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 8.37.0 - eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-node@0.3.7)(eslint@8.37.0) - has: 1.0.3 - is-core-module: 2.12.0 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.values: 1.1.6 - resolve: 1.22.2 - semver: 6.3.0 - tsconfig-paths: 3.14.2 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: false - - /eslint-plugin-node@11.1.0(eslint@7.32.0): - resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} - engines: {node: '>=8.10.0'} - peerDependencies: - eslint: '>=5.16.0' - dependencies: - eslint: 7.32.0 - eslint-plugin-es: 3.0.1(eslint@7.32.0) - eslint-utils: 2.1.0 - ignore: 5.2.4 - minimatch: 3.1.2 - resolve: 1.22.2 - semver: 6.3.0 - dev: true - - /eslint-plugin-prettier@3.4.1(eslint-config-prettier@7.2.0)(eslint@7.32.0)(prettier@2.8.8): - resolution: {integrity: sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==} - engines: {node: '>=6.0.0'} - peerDependencies: - eslint: '>=5.0.0' - eslint-config-prettier: '*' - prettier: '>=1.13.0' - peerDependenciesMeta: - eslint-config-prettier: + + /@esbuild/freebsd-x64@0.17.15: + resolution: + { + integrity: sha512-3TWAnnEOdclvb2pnfsTWtdwthPfOz7qAfcwDLcfZyGJwm1SRZIMOeB5FODVhnM93mFSPsHB9b/PmxNNbSnd0RQ==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [freebsd] + requiresBuild: true optional: true - dependencies: - eslint: 7.32.0 - eslint-config-prettier: 7.2.0(eslint@7.32.0) - prettier: 2.8.8 - prettier-linter-helpers: 1.0.0 - dev: true - - /eslint-rule-docs@1.1.235: - resolution: {integrity: sha512-+TQ+x4JdTnDoFEXXb3fDvfGOwnyNV7duH8fXWTPD1ieaBmB8omj7Gw/pMBBu4uI2uJCCU8APDaQJzWuXnTsH4A==} - dev: false - - /eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - - /eslint-scope@7.2.0: - resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - dev: false - - /eslint-utils@2.1.0: - resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} - engines: {node: '>=6'} - dependencies: - eslint-visitor-keys: 1.3.0 - dev: true - - /eslint-utils@3.0.0(eslint@7.32.0): - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - dependencies: - eslint: 7.32.0 - eslint-visitor-keys: 2.1.0 - dev: true - - /eslint-visitor-keys@1.3.0: - resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} - engines: {node: '>=4'} - dev: true - - /eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - dev: true - - /eslint-visitor-keys@3.4.0: - resolution: {integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: false - - /eslint@7.32.0: - resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==} - engines: {node: ^10.12.0 || >=12.0.0} - hasBin: true - dependencies: - '@babel/code-frame': 7.12.11 - '@eslint/eslintrc': 0.4.3 - '@humanwhocodes/config-array': 0.5.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - enquirer: 2.3.6 - escape-string-regexp: 4.0.0 - eslint-scope: 5.1.1 - eslint-utils: 2.1.0 - eslint-visitor-keys: 2.1.0 - espree: 7.3.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - functional-red-black-tree: 1.0.1 - glob-parent: 5.1.2 - globals: 13.20.0 - ignore: 4.0.6 - import-fresh: 3.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - js-yaml: 3.14.1 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.1 - progress: 2.0.3 - regexpp: 3.2.0 - semver: 7.5.0 - strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 - table: 6.8.1 - text-table: 0.2.0 - v8-compile-cache: 2.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint@8.37.0: - resolution: {integrity: sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.37.0) - '@eslint-community/regexpp': 4.5.0 - '@eslint/eslintrc': 2.0.2 - '@eslint/js': 8.37.0 - '@humanwhocodes/config-array': 0.11.8 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.0 - eslint-visitor-keys: 3.4.0 - espree: 9.5.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.20.0 - grapheme-splitter: 1.0.4 - ignore: 5.2.4 - import-fresh: 3.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-sdsl: 4.4.0 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.1 - strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - dev: false - - /esm-loader-typescript@1.0.4: - resolution: {integrity: sha512-ejo2f+NKIt23jaJKVpjcRQC0xTa6cTqt6VA+z8Ef/A/TCjQ5u7opPO1J4fJFeTiiHEo8JqU92EG4I1KwuXYZMg==} - dependencies: - create-esm-loader: 0.2.3 - npm-run-all: 4.1.5 - semver: 7.5.0 - typescript: 5.0.4 - dev: false - - /espree@7.3.1: - resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - acorn: 7.4.1 - acorn-jsx: 5.3.2(acorn@7.4.1) - eslint-visitor-keys: 1.3.0 - dev: true - - /espree@9.5.1: - resolution: {integrity: sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - acorn: 8.8.2 - acorn-jsx: 5.3.2(acorn@8.8.2) - eslint-visitor-keys: 3.4.0 - dev: false - - /esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} - dependencies: - estraverse: 5.3.0 - - /esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - dependencies: - estraverse: 5.3.0 - - /estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - - /estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - /esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - /eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - dev: false - - /execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - dev: true - - /exit@0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} - dev: true - - /expect@29.5.0: - resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/expect-utils': 29.5.0 - jest-get-type: 29.4.3 - jest-matcher-utils: 29.5.0 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - dev: true - - /ext@1.7.0: - resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} - dependencies: - type: 2.7.2 - dev: false - - /external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - dev: true - - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - /fast-diff@1.2.0: - resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} - dev: true - - /fast-glob@3.2.12: - resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - /fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - /fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} - dependencies: - reusify: 1.0.4 - - /fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - dependencies: - bser: 2.1.1 - dev: true - - /fetch-blob@3.2.0: - resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} - engines: {node: ^12.20 || >= 14.13} - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 3.2.1 - dev: false - - /figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} - dependencies: - escape-string-regexp: 1.0.5 - dev: true - - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flat-cache: 3.0.4 - - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - - /find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - - /find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - dev: false - - /flat-cache@3.0.4: - resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flatted: 3.2.7 - rimraf: 3.0.2 - - /flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - - /for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - dependencies: - is-callable: 1.2.7 - dev: false - - /formdata-polyfill@4.0.10: - resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} - engines: {node: '>=12.20.0'} - dependencies: - fetch-blob: 3.2.0 - dev: false - - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - - /function.prototype.name@1.1.5: - resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - functions-have-names: 1.2.3 - dev: false - - /functional-red-black-tree@1.0.1: - resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} - dev: true - - /functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: false - - /gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - dev: true - - /get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - dev: true - - /get-intrinsic@1.2.0: - resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} - dependencies: - function-bind: 1.1.1 - has: 1.0.3 - has-symbols: 1.0.3 - dev: false - - /get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - dev: true - - /get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - dev: true - - /get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - dev: false - - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - - /glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - dependencies: - is-glob: 4.0.3 - dev: false - - /glob@7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true - - /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: true - - /globals@13.20.0: - resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 - - /globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} - dependencies: - define-properties: 1.2.0 - dev: false - - /globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.2.12 - ignore: 5.2.4 - merge2: 1.4.1 - slash: 3.0.0 - - /gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - dependencies: - get-intrinsic: 1.2.0 - dev: false - - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - /grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: false - - /gts@3.1.1(typescript@5.0.4): - resolution: {integrity: sha512-Jw44aBbzMnd1vtZs7tZt3LMstKQukCBg7N4CKVGzviIQ45Cz5b9lxDJGXVKj/9ySuGv6TYEeijZJGbiiVcM27w==} - engines: {node: '>=10'} - hasBin: true - peerDependencies: - typescript: '>=3' - dependencies: - '@typescript-eslint/eslint-plugin': 4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@5.0.4) - '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@5.0.4) - chalk: 4.1.2 - eslint: 7.32.0 - eslint-config-prettier: 7.2.0(eslint@7.32.0) - eslint-plugin-node: 11.1.0(eslint@7.32.0) - eslint-plugin-prettier: 3.4.1(eslint-config-prettier@7.2.0)(eslint@7.32.0)(prettier@2.8.8) - execa: 5.1.1 - inquirer: 7.3.3 - json5: 2.2.3 - meow: 9.0.0 - ncp: 2.0.0 - prettier: 2.8.8 - rimraf: 3.0.2 - typescript: 5.0.4 - write-file-atomic: 3.0.3 - transitivePeerDependencies: - - supports-color - dev: true - - /hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - - /has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: false - - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - /has-property-descriptors@1.0.0: - resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} - dependencies: - get-intrinsic: 1.2.0 - dev: false - - /has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} - engines: {node: '>= 0.4'} - dev: false - - /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - dev: false - - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: false - - /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.1 - - /hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - - /hosted-git-info@4.1.0: - resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} - engines: {node: '>=10'} - dependencies: - lru-cache: 6.0.0 - - /html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: true - - /human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - dev: true - - /iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: true - - /ignore@4.0.6: - resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} - engines: {node: '>= 4'} - dev: true - - /ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} - - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - /import-local@3.1.0: - resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} - engines: {node: '>=8'} - hasBin: true - dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 - dev: true - - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - /indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - /inquirer@7.3.3: - resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} - engines: {node: '>=8.0.0'} - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.2.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - run-async: 2.4.1 - rxjs: 6.6.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - dev: true - - /internal-slot@1.0.5: - resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.0 - has: 1.0.3 - side-channel: 1.0.4 - dev: false - - /irregular-plurals@3.5.0: - resolution: {integrity: sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==} - engines: {node: '>=8'} - dev: false - - /is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - is-typed-array: 1.1.10 - dev: false - - /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - /is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - dependencies: - has-bigints: 1.0.2 - dev: false - - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.2.0 - dev: true - - /is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: false - - /is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - dev: false - - /is-core-module@2.12.0: - resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} - dependencies: - has: 1.0.3 - - /is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: false - - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - /is-generator-fn@2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - dev: true - - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - - /is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - engines: {node: '>= 0.4'} - dev: false - - /is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: false - - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: false - - /is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - - /is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: false - - /is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} - dependencies: - call-bind: 1.0.2 - dev: false - - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: true - - /is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: false - - /is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: false - - /is-typed-array@1.1.10: - resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 - dev: false - - /is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - - /is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - dev: false - - /is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - dependencies: - call-bind: 1.0.2 - dev: false - - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - /istanbul-lib-coverage@3.2.0: - resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} - engines: {node: '>=8'} - dev: true - - /istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} - dependencies: - '@babel/core': 7.21.4 - '@babel/parser': 7.21.4 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.0 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-lib-report@3.0.0: - resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} - engines: {node: '>=8'} - dependencies: - istanbul-lib-coverage: 3.2.0 - make-dir: 3.1.0 - supports-color: 7.2.0 - dev: true - - /istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} - dependencies: - debug: 4.3.4 - istanbul-lib-coverage: 3.2.0 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-reports@3.1.5: - resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} - engines: {node: '>=8'} - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.0 - dev: true - - /jest-changed-files@29.5.0: - resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - execa: 5.1.1 - p-limit: 3.1.0 - dev: true - - /jest-circus@29.5.0: - resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/environment': 29.5.0 - '@jest/expect': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 14.11.2 - chalk: 4.1.2 - co: 4.6.0 - dedent: 0.7.0 - is-generator-fn: 2.1.0 - jest-each: 29.5.0 - jest-matcher-utils: 29.5.0 - jest-message-util: 29.5.0 - jest-runtime: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 - p-limit: 3.1.0 - pretty-format: 29.5.0 - pure-rand: 6.0.2 - slash: 3.0.0 - stack-utils: 2.0.6 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-cli@29.5.0(@types/node@14.11.2): - resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: + + /@esbuild/linux-arm64@0.17.15: + resolution: + { + integrity: sha512-T0MVnYw9KT6b83/SqyznTs/3Jg2ODWrZfNccg11XjDehIved2oQfrX/wVuev9N936BpMRaTR9I1J0tdGgUgpJA==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [linux] + requiresBuild: true optional: true - dependencies: - '@jest/core': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - import-local: 3.1.0 - jest-config: 29.5.0(@types/node@14.11.2) - jest-util: 29.5.0 - jest-validate: 29.5.0 - prompts: 2.4.2 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node - dev: true - - /jest-config@29.5.0(@types/node@14.11.2): - resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': + + /@esbuild/linux-arm@0.17.15: + resolution: + { + integrity: sha512-MLTgiXWEMAMr8nmS9Gigx43zPRmEfeBfGCwxFQEMgJ5MC53QKajaclW6XDPjwJvhbebv+RzK05TQjvH3/aM4Xw==, + } + engines: { node: ">=12" } + cpu: [arm] + os: [linux] + requiresBuild: true optional: true - ts-node: + + /@esbuild/linux-ia32@0.17.15: + resolution: + { + integrity: sha512-wp02sHs015T23zsQtU4Cj57WiteiuASHlD7rXjKUyAGYzlOKDAjqK6bk5dMi2QEl/KVOcsjwL36kD+WW7vJt8Q==, + } + engines: { node: ">=12" } + cpu: [ia32] + os: [linux] + requiresBuild: true optional: true - dependencies: - '@babel/core': 7.21.4 - '@jest/test-sequencer': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 14.11.2 - babel-jest: 29.5.0(@babel/core@7.21.4) - chalk: 4.1.2 - ci-info: 3.8.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.5.0 - jest-environment-node: 29.5.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-runner: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-diff@29.5.0: - resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - diff-sequences: 29.4.3 - jest-get-type: 29.4.3 - pretty-format: 29.5.0 - - /jest-docblock@29.4.3: - resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - detect-newline: 3.1.0 - dev: true - - /jest-each@29.5.0: - resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - chalk: 4.1.2 - jest-get-type: 29.4.3 - jest-util: 29.5.0 - pretty-format: 29.5.0 - dev: true - - /jest-environment-node@29.5.0: - resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/environment': 29.5.0 - '@jest/fake-timers': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 14.11.2 - jest-mock: 29.5.0 - jest-util: 29.5.0 - dev: true - - /jest-get-type@29.4.3: - resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - /jest-haste-map@29.5.0: - resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - '@types/graceful-fs': 4.1.6 - '@types/node': 14.11.2 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 29.4.3 - jest-util: 29.5.0 - jest-worker: 29.5.0 - micromatch: 4.0.5 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /jest-leak-detector@29.5.0: - resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - jest-get-type: 29.4.3 - pretty-format: 29.5.0 - dev: true - - /jest-matcher-utils@29.5.0: - resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - jest-diff: 29.5.0 - jest-get-type: 29.4.3 - pretty-format: 29.5.0 - dev: true - - /jest-message-util@29.5.0: - resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/code-frame': 7.21.4 - '@jest/types': 29.5.0 - '@types/stack-utils': 2.0.1 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.5 - pretty-format: 29.5.0 - slash: 3.0.0 - stack-utils: 2.0.6 - dev: true - - /jest-mock@29.5.0: - resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - '@types/node': 14.11.2 - jest-util: 29.5.0 - dev: true - - /jest-pnp-resolver@1.2.3(jest-resolve@29.5.0): - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: + + /@esbuild/linux-loong64@0.17.15: + resolution: + { + integrity: sha512-k7FsUJjGGSxwnBmMh8d7IbObWu+sF/qbwc+xKZkBe/lTAF16RqxRCnNHA7QTd3oS2AfGBAnHlXL67shV5bBThQ==, + } + engines: { node: ">=12" } + cpu: [loong64] + os: [linux] + requiresBuild: true optional: true - dependencies: - jest-resolve: 29.5.0 - dev: true - - /jest-regex-util@29.4.3: - resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true - - /jest-resolve-dependencies@29.5.0: - resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - jest-regex-util: 29.4.3 - jest-snapshot: 29.5.0 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-resolve@29.5.0: - resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - graceful-fs: 4.2.11 - jest-haste-map: 29.5.0 - jest-pnp-resolver: 1.2.3(jest-resolve@29.5.0) - jest-util: 29.5.0 - jest-validate: 29.5.0 - resolve: 1.22.2 - resolve.exports: 2.0.2 - slash: 3.0.0 - dev: true - - /jest-runner@29.5.0: - resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/console': 29.5.0 - '@jest/environment': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 14.11.2 - chalk: 4.1.2 - emittery: 0.13.1 - graceful-fs: 4.2.11 - jest-docblock: 29.4.3 - jest-environment-node: 29.5.0 - jest-haste-map: 29.5.0 - jest-leak-detector: 29.5.0 - jest-message-util: 29.5.0 - jest-resolve: 29.5.0 - jest-runtime: 29.5.0 - jest-util: 29.5.0 - jest-watcher: 29.5.0 - jest-worker: 29.5.0 - p-limit: 3.1.0 - source-map-support: 0.5.13 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-runtime@29.5.0: - resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/environment': 29.5.0 - '@jest/fake-timers': 29.5.0 - '@jest/globals': 29.5.0 - '@jest/source-map': 29.4.3 - '@jest/test-result': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 14.11.2 - chalk: 4.1.2 - cjs-module-lexer: 1.2.2 - collect-v8-coverage: 1.0.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-haste-map: 29.5.0 - jest-message-util: 29.5.0 - jest-mock: 29.5.0 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-snapshot@29.5.0: - resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/core': 7.21.4 - '@babel/generator': 7.21.4 - '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.4) - '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.21.4) - '@babel/traverse': 7.21.4 - '@babel/types': 7.21.4 - '@jest/expect-utils': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@types/babel__traverse': 7.18.5 - '@types/prettier': 2.7.2 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.4) - chalk: 4.1.2 - expect: 29.5.0 - graceful-fs: 4.2.11 - jest-diff: 29.5.0 - jest-get-type: 29.4.3 - jest-matcher-utils: 29.5.0 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - natural-compare: 1.4.0 - pretty-format: 29.5.0 - semver: 7.5.0 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-util@29.5.0: - resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - '@types/node': 14.11.2 - chalk: 4.1.2 - ci-info: 3.8.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - dev: true - - /jest-validate@29.5.0: - resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 29.4.3 - leven: 3.1.0 - pretty-format: 29.5.0 - dev: true - - /jest-watcher@29.5.0: - resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 14.11.2 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.13.1 - jest-util: 29.5.0 - string-length: 4.0.2 - dev: true - - /jest-worker@29.5.0: - resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@types/node': 14.11.2 - jest-util: 29.5.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 - dev: true - - /jest@29.5.0(@types/node@14.11.2): - resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: + + /@esbuild/linux-mips64el@0.17.15: + resolution: + { + integrity: sha512-ZLWk6czDdog+Q9kE/Jfbilu24vEe/iW/Sj2d8EVsmiixQ1rM2RKH2n36qfxK4e8tVcaXkvuV3mU5zTZviE+NVQ==, + } + engines: { node: ">=12" } + cpu: [mips64el] + os: [linux] + requiresBuild: true optional: true - dependencies: - '@jest/core': 29.5.0 - '@jest/types': 29.5.0 - import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@14.11.2) - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node - dev: true - - /joycon@3.1.1: - resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} - engines: {node: '>=10'} - dev: true - - /js-sdsl@4.4.0: - resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} - dev: false - - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - /js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: true - - /js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - dependencies: - argparse: 2.0.1 - dev: false - - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - dev: false - - /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - /json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: true - - /json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - /json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - dependencies: - minimist: 1.2.8 - dev: false - - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - dev: true - - /jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - dev: true - - /kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - - /kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - dev: true - - /leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - dev: true - - /levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - - /light-bolt11-decoder@3.0.0: - resolution: {integrity: sha512-AKvOigD2pmC8ktnn2TIqdJu0K0qk6ukUmTvHwF3JNkm8uWCqt18Ijn33A/a7gaRZ4PghJ59X+8+MXrzLKdBTmQ==} - dependencies: - '@scure/base': 1.1.1 - dev: false - - /lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - dev: true - - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - /load-json-file@4.0.0: - resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} - engines: {node: '>=4'} - dependencies: - graceful-fs: 4.2.11 - parse-json: 4.0.0 - pify: 3.0.0 - strip-bom: 3.0.0 - dev: false - - /load-tsconfig@0.2.5: - resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - dependencies: - p-locate: 4.1.0 - - /locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - dependencies: - p-locate: 5.0.0 - dev: false - - /lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - dev: true - - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - /lodash.sortby@4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - dev: true - - /lodash.truncate@4.4.2: - resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} - dev: true - - /lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: true - - /log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - dev: false - - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - dependencies: - yallist: 3.1.1 - dev: true - - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - - /lunr@2.3.9: - resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} - dev: true - - /make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - dependencies: - semver: 6.3.0 - dev: true - - /make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: true - - /makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - dependencies: - tmpl: 1.0.5 - dev: true - - /map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - - /map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - - /marked@4.3.0: - resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} - engines: {node: '>= 12'} - hasBin: true - dev: true - - /memorystream@0.3.1: - resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} - engines: {node: '>= 0.10.0'} - dev: false - - /meow@9.0.0: - resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} - engines: {node: '>=10'} - dependencies: - '@types/minimist': 1.2.2 - camelcase-keys: 6.2.2 - decamelize: 1.2.0 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.18.1 - yargs-parser: 20.2.9 - - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true - - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: true - - /min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - - /minimatch@9.0.2: - resolution: {integrity: sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.1 - dev: true - - /minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - - /minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - dev: false - - /ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - dev: false - - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: false - - /mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - dev: true - - /mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - dev: true - - /natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - dev: false - - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - /ncp@2.0.0: - resolution: {integrity: sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==} - hasBin: true - dev: true - - /next-tick@1.1.0: - resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} - dev: false - - /nice-try@1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - dev: false - - /node-domexception@1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} - dev: false - - /node-fetch@3.3.1: - resolution: {integrity: sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - data-uri-to-buffer: 4.0.1 - fetch-blob: 3.2.0 - formdata-polyfill: 4.0.10 - dev: false - - /node-gyp-build@4.6.0: - resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==} - hasBin: true - dev: false - - /node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - dev: true - - /node-releases@2.0.10: - resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} - dev: true - - /normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.2 - semver: 5.7.1 - validate-npm-package-license: 3.0.4 - - /normalize-package-data@3.0.3: - resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} - engines: {node: '>=10'} - dependencies: - hosted-git-info: 4.1.0 - is-core-module: 2.12.0 - semver: 7.5.0 - validate-npm-package-license: 3.0.4 - - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: true - - /nostr-tools@1.14.0: - resolution: {integrity: sha512-hwq2i1z5/DneXRE5Zu/TzQuKzVLcB+gOdfT9CeoiScvNw/2dWRGJvyTXIdF92d7NQ7nMcEwqVJPDytLpEpiiKw==} - dependencies: - '@noble/curves': 1.1.0 - '@noble/hashes': 1.3.1 - '@scure/base': 1.1.1 - '@scure/bip32': 1.3.1 - '@scure/bip39': 1.2.1 - dev: false - - /npm-run-all@4.1.5: - resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} - engines: {node: '>= 4'} - hasBin: true - dependencies: - ansi-styles: 3.2.1 - chalk: 2.4.2 - cross-spawn: 6.0.5 - memorystream: 0.3.1 - minimatch: 3.1.2 - pidtree: 0.3.1 - read-pkg: 3.0.0 - shell-quote: 1.8.1 - string.prototype.padend: 3.1.4 - dev: false - - /npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - dependencies: - path-key: 3.1.1 - dev: true - - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - dev: true - - /object-inspect@1.12.3: - resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} - dev: false - - /object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - dev: false - - /object.assign@4.1.4: - resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - has-symbols: 1.0.3 - object-keys: 1.1.1 - dev: false - - /object.values@1.1.6: - resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - dev: false - - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 - - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - dev: true - - /optionator@0.9.1: - resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} - engines: {node: '>= 0.8.0'} - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.3 - - /os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - dev: true - - /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - dependencies: - p-try: 2.2.0 - - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - dependencies: - yocto-queue: 0.1.0 - - /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - dependencies: - p-limit: 2.3.0 - - /p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - dependencies: - p-limit: 3.1.0 - dev: false - - /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - dependencies: - callsites: 3.1.0 - - /parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} - dependencies: - error-ex: 1.3.2 - json-parse-better-errors: 1.0.2 - dev: false - - /parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - dependencies: - '@babel/code-frame': 7.21.4 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - /path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - dev: false - - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - /path-type@3.0.0: - resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} - engines: {node: '>=4'} - dependencies: - pify: 3.0.0 - dev: false - - /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true - - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - /pidtree@0.3.1: - resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} - engines: {node: '>=0.10'} - hasBin: true - dev: false - - /pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - dev: false - - /pirates@4.0.5: - resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} - engines: {node: '>= 6'} - dev: true - - /pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - dev: true - - /plur@4.0.0: - resolution: {integrity: sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==} - engines: {node: '>=10'} - dependencies: - irregular-plurals: 3.5.0 - dev: false - - /postcss-load-config@3.1.4: - resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} - engines: {node: '>= 10'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: + + /@esbuild/linux-ppc64@0.17.15: + resolution: + { + integrity: sha512-mY6dPkIRAiFHRsGfOYZC8Q9rmr8vOBZBme0/j15zFUKM99d4ILY4WpOC7i/LqoY+RE7KaMaSfvY8CqjJtuO4xg==, + } + engines: { node: ">=12" } + cpu: [ppc64] + os: [linux] + requiresBuild: true optional: true - ts-node: + + /@esbuild/linux-riscv64@0.17.15: + resolution: + { + integrity: sha512-EcyUtxffdDtWjjwIH8sKzpDRLcVtqANooMNASO59y+xmqqRYBBM7xVLQhqF7nksIbm2yHABptoioS9RAbVMWVA==, + } + engines: { node: ">=12" } + cpu: [riscv64] + os: [linux] + requiresBuild: true optional: true - dependencies: - lilconfig: 2.1.0 - yaml: 1.10.2 - dev: true - - /prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - /prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} - dependencies: - fast-diff: 1.2.0 - dev: true - - /prettier-plugin-organize-imports@3.2.2(prettier@3.0.0)(typescript@5.0.4): - resolution: {integrity: sha512-e97lE6odGSiHonHJMTYC0q0iLXQyw0u5z/PJpvP/3vRy6/Zi9kLBwFAbEGjDzIowpjQv8b+J04PDamoUSQbzGA==} - peerDependencies: - '@volar/vue-language-plugin-pug': ^1.0.4 - '@volar/vue-typescript': ^1.0.4 - prettier: '>=2.0' - typescript: '>=2.9' - peerDependenciesMeta: - '@volar/vue-language-plugin-pug': + + /@esbuild/linux-s390x@0.17.15: + resolution: + { + integrity: sha512-BuS6Jx/ezxFuHxgsfvz7T4g4YlVrmCmg7UAwboeyNNg0OzNzKsIZXpr3Sb/ZREDXWgt48RO4UQRDBxJN3B9Rbg==, + } + engines: { node: ">=12" } + cpu: [s390x] + os: [linux] + requiresBuild: true optional: true - '@volar/vue-typescript': + + /@esbuild/linux-x64@0.17.15: + resolution: + { + integrity: sha512-JsdS0EgEViwuKsw5tiJQo9UdQdUJYuB+Mf6HxtJSPN35vez1hlrNb1KajvKWF5Sa35j17+rW1ECEO9iNrIXbNg==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [linux] + requiresBuild: true optional: true - dependencies: - prettier: 3.0.0 - typescript: 5.0.4 - dev: true - - /prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - dev: true - - /prettier@3.0.0: - resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==} - engines: {node: '>=14'} - hasBin: true - dev: true - - /pretty-format@29.5.0: - resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.4.3 - ansi-styles: 5.2.0 - react-is: 18.2.0 - - /progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - dev: true - - /prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - dev: true - - /punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} - engines: {node: '>=6'} - - /pure-rand@6.0.2: - resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} - dev: true - - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - /quick-lru@4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - - /react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - - /read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - - /read-pkg@3.0.0: - resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} - engines: {node: '>=4'} - dependencies: - load-json-file: 4.0.0 - normalize-package-data: 2.5.0 - path-type: 3.0.0 - dev: false - - /read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} - dependencies: - '@types/normalize-package-data': 2.4.1 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 - - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 - dev: true - - /redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} - dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 - - /regexp.prototype.flags@1.5.0: - resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - functions-have-names: 1.2.3 - dev: false - - /regexpp@3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - dev: true - - /require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - dev: true - - /require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - dev: true - - /resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} - dependencies: - resolve-from: 5.0.0 - dev: true - - /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - /resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true - - /resolve.exports@2.0.2: - resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} - engines: {node: '>=10'} - dev: true - - /resolve@1.22.2: - resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} - hasBin: true - dependencies: - is-core-module: 2.12.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - /restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - dev: true - - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - dependencies: - glob: 7.2.3 - - /rollup@3.25.3: - resolution: {integrity: sha512-ZT279hx8gszBj9uy5FfhoG4bZx8c+0A1sbqtr7Q3KNWIizpTdDEPZbV2xcbvHsnFp4MavCQYZyzApJ+virB8Yw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} - dev: true - - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - dependencies: - queue-microtask: 1.2.3 - - /rxjs@6.6.7: - resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} - engines: {npm: '>=2.0.0'} - dependencies: - tslib: 1.14.1 - dev: true - - /safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - is-regex: 1.1.4 - dev: false - - /safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: true - - /semver@5.7.1: - resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} - hasBin: true - - /semver@6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} - hasBin: true - - /semver@7.5.0: - resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - - /shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - dependencies: - shebang-regex: 1.0.0 - dev: false - - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - - /shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - dev: false - - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - /shell-quote@1.8.1: - resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} - dev: false - - /shiki@0.14.3: - resolution: {integrity: sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==} - dependencies: - ansi-sequence-parser: 1.1.0 - jsonc-parser: 3.2.0 - vscode-oniguruma: 1.7.0 - vscode-textmate: 8.0.0 - dev: true - - /side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - object-inspect: 1.12.3 - dev: false - - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: true - - /sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - dev: true - - /slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - /slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - dev: true - - /source-map-support@0.5.13: - resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - dev: true - - /source-map@0.8.0-beta.0: - resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} - engines: {node: '>= 8'} - dependencies: - whatwg-url: 7.1.0 - dev: true - - /spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.13 - - /spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} - - /spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.13 - - /spdx-license-ids@3.0.13: - resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} - - /sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: true - - /stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - dependencies: - escape-string-regexp: 2.0.0 - dev: true - - /string-length@4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} - dependencies: - char-regex: 1.0.2 - strip-ansi: 6.0.1 - dev: true - - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - /string.prototype.padend@3.1.4: - resolution: {integrity: sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - dev: false - - /string.prototype.trim@1.2.7: - resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - dev: false - - /string.prototype.trimend@1.0.6: - resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - dev: false - - /string.prototype.trimstart@1.0.6: - resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - dev: false - - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.1 - - /strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: false - - /strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - dev: true - - /strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - dev: true - - /strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - dependencies: - min-indent: 1.0.1 - - /strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - /sucrase@3.32.0: - resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==} - engines: {node: '>=8'} - hasBin: true - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - commander: 4.1.1 - glob: 7.1.6 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.5 - ts-interface-checker: 0.1.13 - dev: true - - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - dependencies: - has-flag: 3.0.0 - - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - - /supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - dependencies: - has-flag: 4.0.0 - dev: true - - /supports-hyperlinks@2.3.0: - resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - supports-color: 7.2.0 - dev: false - - /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - /table@6.8.1: - resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} - engines: {node: '>=10.0.0'} - dependencies: - ajv: 8.12.0 - lodash.truncate: 4.4.2 - slice-ansi: 4.0.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true - - /test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 - dev: true - - /text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - - /thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - dependencies: - thenify: 3.3.1 - dev: true - - /thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - dependencies: - any-promise: 1.3.0 - dev: true - - /through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: true - - /tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - dependencies: - os-tmpdir: 1.0.2 - dev: true - - /tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - dev: true - - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - dev: true - - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - - /tr46@1.0.1: - resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} - dependencies: - punycode: 2.3.0 - dev: true - - /tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true - dev: true - - /trim-newlines@3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} - - /ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - dev: true - - /ts-jest@29.1.0(@babel/core@7.21.4)(esbuild@0.17.15)(jest@29.5.0)(typescript@5.0.4): - resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@jest/types': ^29.0.0 - babel-jest: ^29.0.0 - esbuild: '*' - jest: ^29.0.0 - typescript: '>=4.3 <6' - peerDependenciesMeta: - '@babel/core': + + /@esbuild/netbsd-x64@0.17.15: + resolution: + { + integrity: sha512-R6fKjtUysYGym6uXf6qyNephVUQAGtf3n2RCsOST/neIwPqRWcnc3ogcielOd6pT+J0RDR1RGcy0ZY7d3uHVLA==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [netbsd] + requiresBuild: true optional: true - '@jest/types': + + /@esbuild/openbsd-x64@0.17.15: + resolution: + { + integrity: sha512-mVD4PGc26b8PI60QaPUltYKeSX0wxuy0AltC+WCTFwvKCq2+OgLP4+fFd+hZXzO2xW1HPKcytZBdjqL6FQFa7w==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [openbsd] + requiresBuild: true optional: true - babel-jest: + + /@esbuild/sunos-x64@0.17.15: + resolution: + { + integrity: sha512-U6tYPovOkw3459t2CBwGcFYfFRjivcJJc1WC8Q3funIwX8x4fP+R6xL/QuTPNGOblbq/EUDxj9GU+dWKX0oWlQ==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [sunos] + requiresBuild: true optional: true - esbuild: + + /@esbuild/win32-arm64@0.17.15: + resolution: + { + integrity: sha512-W+Z5F++wgKAleDABemiyXVnzXgvRFs+GVKThSI+mGgleLWluv0D7Diz4oQpgdpNzh4i2nNDzQtWbjJiqutRp6Q==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [win32] + requiresBuild: true optional: true - dependencies: - '@babel/core': 7.21.4 - bs-logger: 0.2.6 - esbuild: 0.17.15 - fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@14.11.2) - jest-util: 29.5.0 - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.5.0 - typescript: 5.0.4 - yargs-parser: 21.1.1 - dev: true - - /tsconfig-paths@3.14.2: - resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - dev: false - - /tsd@0.28.1: - resolution: {integrity: sha512-FeYrfJ05QgEMW/qOukNCr4fAJHww4SaKnivAXRv4g5kj4FeLpNV7zH4dorzB9zAfVX4wmA7zWu/wQf7kkcvfbw==} - engines: {node: '>=14.16'} - hasBin: true - dependencies: - '@tsd/typescript': 5.0.4 - eslint-formatter-pretty: 4.1.0 - globby: 11.1.0 - jest-diff: 29.5.0 - meow: 9.0.0 - path-exists: 4.0.0 - read-pkg-up: 7.0.1 - dev: false - - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - - /tstl@2.5.13: - resolution: {integrity: sha512-h9wayHHFI5+yqt8iau0vqH96cTNhezhZ/Fk/hrIdpfkiMu3lg9nzyvMfs5bIdX51IVzZO6DudLqhkL/rVXpT6g==} - dev: false - - /tsup@6.7.0(typescript@5.0.4): - resolution: {integrity: sha512-L3o8hGkaHnu5TdJns+mCqFsDBo83bJ44rlK7e6VdanIvpea4ArPcU3swWGsLVbXak1PqQx/V+SSmFPujBK+zEQ==} - engines: {node: '>=14.18'} - hasBin: true - peerDependencies: - '@swc/core': ^1 - postcss: ^8.4.12 - typescript: '>=4.1.0' - peerDependenciesMeta: - '@swc/core': + + /@esbuild/win32-ia32@0.17.15: + resolution: + { + integrity: sha512-Muz/+uGgheShKGqSVS1KsHtCyEzcdOn/W/Xbh6H91Etm+wiIfwZaBn1W58MeGtfI8WA961YMHFYTthBdQs4t+w==, + } + engines: { node: ">=12" } + cpu: [ia32] + os: [win32] + requiresBuild: true optional: true - postcss: + + /@esbuild/win32-x64@0.17.15: + resolution: + { + integrity: sha512-DjDa9ywLUUmjhV2Y9wUTIF+1XsmuFGvZoCmOWkli1XcNAh5t25cc7fgsCx4Zi/Uurep3TTLyDiKATgGEg61pkA==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [win32] + requiresBuild: true optional: true - typescript: + + /@eslint-community/eslint-utils@4.4.0(eslint@8.37.0): + resolution: + { + integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.37.0 + eslint-visitor-keys: 3.4.0 + dev: false + + /@eslint-community/regexpp@4.5.0: + resolution: + { + integrity: sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==, + } + engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } + dev: false + + /@eslint/eslintrc@0.4.3: + resolution: + { + integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==, + } + engines: { node: ^10.12.0 || >=12.0.0 } + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 7.3.1 + globals: 13.20.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + js-yaml: 3.14.1 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/eslintrc@2.0.2: + resolution: + { + integrity: sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.5.1 + globals: 13.20.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@eslint/js@8.37.0: + resolution: + { + integrity: sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dev: false + + /@humanwhocodes/config-array@0.11.8: + resolution: + { + integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==, + } + engines: { node: ">=10.10.0" } + dependencies: + "@humanwhocodes/object-schema": 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@humanwhocodes/config-array@0.5.0: + resolution: + { + integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==, + } + engines: { node: ">=10.10.0" } + dependencies: + "@humanwhocodes/object-schema": 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: + { + integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, + } + engines: { node: ">=12.22" } + dev: false + + /@humanwhocodes/object-schema@1.2.1: + resolution: + { + integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==, + } + + /@istanbuljs/load-nyc-config@1.1.0: + resolution: + { + integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==, + } + engines: { node: ">=8" } + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + dev: true + + /@istanbuljs/schema@0.1.3: + resolution: + { + integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==, + } + engines: { node: ">=8" } + dev: true + + /@jest/console@29.5.0: + resolution: + { + integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + "@jest/types": 29.5.0 + "@types/node": 14.11.2 + chalk: 4.1.2 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + slash: 3.0.0 + dev: true + + /@jest/core@29.5.0: + resolution: + { + integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + "@jest/console": 29.5.0 + "@jest/reporters": 29.5.0 + "@jest/test-result": 29.5.0 + "@jest/transform": 29.5.0 + "@jest/types": 29.5.0 + "@types/node": 14.11.2 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.8.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.5.0 + jest-config: 29.5.0(@types/node@14.11.2) + jest-haste-map: 29.5.0 + jest-message-util: 29.5.0 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-resolve-dependencies: 29.5.0 + jest-runner: 29.5.0 + jest-runtime: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + jest-watcher: 29.5.0 + micromatch: 4.0.5 + pretty-format: 29.5.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + + /@jest/environment@29.5.0: + resolution: + { + integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + "@jest/fake-timers": 29.5.0 + "@jest/types": 29.5.0 + "@types/node": 14.11.2 + jest-mock: 29.5.0 + dev: true + + /@jest/expect-utils@29.5.0: + resolution: + { + integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + jest-get-type: 29.4.3 + dev: true + + /@jest/expect@29.5.0: + resolution: + { + integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + expect: 29.5.0 + jest-snapshot: 29.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/fake-timers@29.5.0: + resolution: + { + integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + "@jest/types": 29.5.0 + "@sinonjs/fake-timers": 10.0.2 + "@types/node": 14.11.2 + jest-message-util: 29.5.0 + jest-mock: 29.5.0 + jest-util: 29.5.0 + dev: true + + /@jest/globals@29.5.0: + resolution: + { + integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + "@jest/environment": 29.5.0 + "@jest/expect": 29.5.0 + "@jest/types": 29.5.0 + jest-mock: 29.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/reporters@29.5.0: + resolution: + { + integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + "@bcoe/v8-coverage": 0.2.3 + "@jest/console": 29.5.0 + "@jest/test-result": 29.5.0 + "@jest/transform": 29.5.0 + "@jest/types": 29.5.0 + "@jridgewell/trace-mapping": 0.3.18 + "@types/node": 14.11.2 + chalk: 4.1.2 + collect-v8-coverage: 1.0.1 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.0 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.5 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + jest-worker: 29.5.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/schemas@29.4.3: + resolution: + { + integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + "@sinclair/typebox": 0.25.24 + + /@jest/source-map@29.4.3: + resolution: + { + integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + "@jridgewell/trace-mapping": 0.3.18 + callsites: 3.1.0 + graceful-fs: 4.2.11 + dev: true + + /@jest/test-result@29.5.0: + resolution: + { + integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + "@jest/console": 29.5.0 + "@jest/types": 29.5.0 + "@types/istanbul-lib-coverage": 2.0.4 + collect-v8-coverage: 1.0.1 + dev: true + + /@jest/test-sequencer@29.5.0: + resolution: + { + integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + "@jest/test-result": 29.5.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + slash: 3.0.0 + dev: true + + /@jest/transform@29.5.0: + resolution: + { + integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + "@babel/core": 7.21.4 + "@jest/types": 29.5.0 + "@jridgewell/trace-mapping": 0.3.18 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + jest-regex-util: 29.4.3 + jest-util: 29.5.0 + micromatch: 4.0.5 + pirates: 4.0.5 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/types@29.5.0: + resolution: + { + integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + "@jest/schemas": 29.4.3 + "@types/istanbul-lib-coverage": 2.0.4 + "@types/istanbul-reports": 3.0.1 + "@types/node": 14.11.2 + "@types/yargs": 17.0.24 + chalk: 4.1.2 + dev: true + + /@jridgewell/gen-mapping@0.3.3: + resolution: + { + integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==, + } + engines: { node: ">=6.0.0" } + dependencies: + "@jridgewell/set-array": 1.1.2 + "@jridgewell/sourcemap-codec": 1.4.15 + "@jridgewell/trace-mapping": 0.3.18 + dev: true + + /@jridgewell/resolve-uri@3.1.0: + resolution: + { + integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==, + } + engines: { node: ">=6.0.0" } + dev: true + + /@jridgewell/set-array@1.1.2: + resolution: + { + integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==, + } + engines: { node: ">=6.0.0" } + dev: true + + /@jridgewell/sourcemap-codec@1.4.14: + resolution: + { + integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==, + } + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: + { + integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==, + } + dev: true + + /@jridgewell/trace-mapping@0.3.18: + resolution: + { + integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==, + } + dependencies: + "@jridgewell/resolve-uri": 3.1.0 + "@jridgewell/sourcemap-codec": 1.4.14 + dev: true + + /@noble/curves@1.1.0: + resolution: + { + integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==, + } + dependencies: + "@noble/hashes": 1.3.1 + dev: false + + /@noble/hashes@1.3.1: + resolution: + { + integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==, + } + engines: { node: ">= 16" } + dev: false + + /@noble/secp256k1@2.0.0: + resolution: + { + integrity: sha512-rUGBd95e2a45rlmFTqQJYEFA4/gdIARFfuTuTqLglz0PZ6AKyzyXsEZZq7UZn8hZsvaBgpCzKKBJizT2cJERXw==, + } + dev: false + + /@nodelib/fs.scandir@2.1.5: + resolution: + { + integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, + } + engines: { node: ">= 8" } + dependencies: + "@nodelib/fs.stat": 2.0.5 + run-parallel: 1.2.0 + + /@nodelib/fs.stat@2.0.5: + resolution: + { + integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, + } + engines: { node: ">= 8" } + + /@nodelib/fs.walk@1.2.8: + resolution: + { + integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, + } + engines: { node: ">= 8" } + dependencies: + "@nodelib/fs.scandir": 2.1.5 + fastq: 1.15.0 + + /@scure/base@1.1.1: + resolution: + { + integrity: sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==, + } + dev: false + + /@scure/bip32@1.3.1: + resolution: + { + integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==, + } + dependencies: + "@noble/curves": 1.1.0 + "@noble/hashes": 1.3.1 + "@scure/base": 1.1.1 + dev: false + + /@scure/bip39@1.2.1: + resolution: + { + integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==, + } + dependencies: + "@noble/hashes": 1.3.1 + "@scure/base": 1.1.1 + dev: false + + /@sinclair/typebox@0.25.24: + resolution: + { + integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==, + } + + /@sinonjs/commons@2.0.0: + resolution: + { + integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==, + } + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/fake-timers@10.0.2: + resolution: + { + integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==, + } + dependencies: + "@sinonjs/commons": 2.0.0 + dev: true + + /@trivago/prettier-plugin-sort-imports@4.2.0(prettier@3.0.1): + resolution: + { + integrity: sha512-YBepjbt+ZNBVmN3ev1amQH3lWCmHyt5qTbLCp/syXJRu/Kw2koXh44qayB1gMRxcL/gV8egmjN5xWSrYyfUtyw==, + } + peerDependencies: + "@vue/compiler-sfc": 3.x + prettier: 2.x - 3.x + peerDependenciesMeta: + "@vue/compiler-sfc": + optional: true + dependencies: + "@babel/generator": 7.17.7 + "@babel/parser": 7.21.4 + "@babel/traverse": 7.17.3 + "@babel/types": 7.17.0 + javascript-natural-sort: 0.7.1 + lodash: 4.17.21 + prettier: 3.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@tsd/typescript@5.0.4: + resolution: + { + integrity: sha512-YQi2lvZSI+xidKeUjlbv6b6Zw7qB3aXHw5oGJLs5OOGAEqKIOvz5UIAkWyg0bJbkSUWPBEtaOHpVxU4EYBO1Jg==, + } + dev: false + + /@types/babel__core@7.20.0: + resolution: + { + integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==, + } + dependencies: + "@babel/parser": 7.21.4 + "@babel/types": 7.21.4 + "@types/babel__generator": 7.6.4 + "@types/babel__template": 7.4.1 + "@types/babel__traverse": 7.18.5 + dev: true + + /@types/babel__generator@7.6.4: + resolution: + { + integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==, + } + dependencies: + "@babel/types": 7.21.4 + dev: true + + /@types/babel__template@7.4.1: + resolution: + { + integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==, + } + dependencies: + "@babel/parser": 7.21.4 + "@babel/types": 7.21.4 + dev: true + + /@types/babel__traverse@7.18.5: + resolution: + { + integrity: sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q==, + } + dependencies: + "@babel/types": 7.21.4 + dev: true + + /@types/debug@4.1.7: + resolution: + { + integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==, + } + dependencies: + "@types/ms": 0.7.31 + dev: true + + /@types/eslint@7.29.0: + resolution: + { + integrity: sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==, + } + dependencies: + "@types/estree": 1.0.1 + "@types/json-schema": 7.0.11 + dev: false + + /@types/estree@1.0.1: + resolution: + { + integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==, + } + dev: false + + /@types/graceful-fs@4.1.6: + resolution: + { + integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==, + } + dependencies: + "@types/node": 14.11.2 + dev: true + + /@types/istanbul-lib-coverage@2.0.4: + resolution: + { + integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==, + } + dev: true + + /@types/istanbul-lib-report@3.0.0: + resolution: + { + integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==, + } + dependencies: + "@types/istanbul-lib-coverage": 2.0.4 + dev: true + + /@types/istanbul-reports@3.0.1: + resolution: + { + integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==, + } + dependencies: + "@types/istanbul-lib-report": 3.0.0 + dev: true + + /@types/jest@29.5.0: + resolution: + { + integrity: sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==, + } + dependencies: + expect: 29.5.0 + pretty-format: 29.5.0 + dev: true + + /@types/json-schema@7.0.11: + resolution: + { + integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==, + } + + /@types/json5@0.0.29: + resolution: + { + integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==, + } + dev: false + + /@types/minimist@1.2.2: + resolution: + { + integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==, + } + + /@types/ms@0.7.31: + resolution: + { + integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==, + } + dev: true + + /@types/node@14.11.2: + resolution: + { + integrity: sha512-jiE3QIxJ8JLNcb1Ps6rDbysDhN4xa8DJJvuC9prr6w+1tIh+QAbYyNF3tyiZNLDBIuBCf4KEcV2UvQm/V60xfA==, + } + dev: true + + /@types/normalize-package-data@2.4.1: + resolution: + { + integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==, + } + + /@types/prettier@2.7.2: + resolution: + { + integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==, + } + dev: true + + /@types/semver@7.3.13: + resolution: + { + integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==, + } + dev: false + + /@types/stack-utils@2.0.1: + resolution: + { + integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==, + } + dev: true + + /@types/yargs-parser@21.0.0: + resolution: + { + integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==, + } + dev: true + + /@types/yargs@17.0.24: + resolution: + { + integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==, + } + dependencies: + "@types/yargs-parser": 21.0.0 + dev: true + + /@typescript-eslint/eslint-plugin@4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@5.0.4): + resolution: + { + integrity: sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==, + } + engines: { node: ^10.12.0 || >=12.0.0 } + peerDependencies: + "@typescript-eslint/parser": ^4.0.0 + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + dependencies: + "@typescript-eslint/experimental-utils": 4.33.0(eslint@7.32.0)(typescript@5.0.4) + "@typescript-eslint/parser": 4.33.0(eslint@7.32.0)(typescript@5.0.4) + "@typescript-eslint/scope-manager": 4.33.0 + debug: 4.3.4 + eslint: 7.32.0 + functional-red-black-tree: 1.0.1 + ignore: 5.2.4 + regexpp: 3.2.0 + semver: 7.5.0 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/eslint-plugin@5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.4): + resolution: + { + integrity: sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + "@typescript-eslint/parser": ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + dependencies: + "@eslint-community/regexpp": 4.5.0 + "@typescript-eslint/parser": 5.57.0(eslint@8.37.0)(typescript@5.0.4) + "@typescript-eslint/scope-manager": 5.57.0 + "@typescript-eslint/type-utils": 5.57.0(eslint@8.37.0)(typescript@5.0.4) + "@typescript-eslint/utils": 5.57.0(eslint@8.37.0)(typescript@5.0.4) + debug: 4.3.4 + eslint: 8.37.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + semver: 7.5.0 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/experimental-utils@4.33.0(eslint@7.32.0)(typescript@5.0.4): + resolution: + { + integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==, + } + engines: { node: ^10.12.0 || >=12.0.0 } + peerDependencies: + eslint: "*" + dependencies: + "@types/json-schema": 7.0.11 + "@typescript-eslint/scope-manager": 4.33.0 + "@typescript-eslint/types": 4.33.0 + "@typescript-eslint/typescript-estree": 4.33.0(typescript@5.0.4) + eslint: 7.32.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0(eslint@7.32.0) + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.0.4): + resolution: + { + integrity: sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==, + } + engines: { node: ^10.12.0 || >=12.0.0 } + peerDependencies: + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + dependencies: + "@typescript-eslint/scope-manager": 4.33.0 + "@typescript-eslint/types": 4.33.0 + "@typescript-eslint/typescript-estree": 4.33.0(typescript@5.0.4) + debug: 4.3.4 + eslint: 7.32.0 + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@5.57.0(eslint@8.37.0)(typescript@5.0.4): + resolution: + { + integrity: sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + dependencies: + "@typescript-eslint/scope-manager": 5.57.0 + "@typescript-eslint/types": 5.57.0 + "@typescript-eslint/typescript-estree": 5.57.0(typescript@5.0.4) + debug: 4.3.4 + eslint: 8.37.0 + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/scope-manager@4.33.0: + resolution: + { + integrity: sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==, + } + engines: { node: ^8.10.0 || ^10.13.0 || >=11.10.1 } + dependencies: + "@typescript-eslint/types": 4.33.0 + "@typescript-eslint/visitor-keys": 4.33.0 + dev: true + + /@typescript-eslint/scope-manager@5.57.0: + resolution: + { + integrity: sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + "@typescript-eslint/types": 5.57.0 + "@typescript-eslint/visitor-keys": 5.57.0 + dev: false + + /@typescript-eslint/type-utils@5.57.0(eslint@8.37.0)(typescript@5.0.4): + resolution: + { + integrity: sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: "*" + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + dependencies: + "@typescript-eslint/typescript-estree": 5.57.0(typescript@5.0.4) + "@typescript-eslint/utils": 5.57.0(eslint@8.37.0)(typescript@5.0.4) + debug: 4.3.4 + eslint: 8.37.0 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/types@4.33.0: + resolution: + { + integrity: sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==, + } + engines: { node: ^8.10.0 || ^10.13.0 || >=11.10.1 } + dev: true + + /@typescript-eslint/types@5.57.0: + resolution: + { + integrity: sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dev: false + + /@typescript-eslint/typescript-estree@4.33.0(typescript@5.0.4): + resolution: + { + integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==, + } + engines: { node: ^10.12.0 || >=12.0.0 } + peerDependencies: + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + dependencies: + "@typescript-eslint/types": 4.33.0 + "@typescript-eslint/visitor-keys": 4.33.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.0 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree@5.57.0(typescript@5.0.4): + resolution: + { + integrity: sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + dependencies: + "@typescript-eslint/types": 5.57.0 + "@typescript-eslint/visitor-keys": 5.57.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.0 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/utils@5.57.0(eslint@8.37.0)(typescript@5.0.4): + resolution: + { + integrity: sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + "@eslint-community/eslint-utils": 4.4.0(eslint@8.37.0) + "@types/json-schema": 7.0.11 + "@types/semver": 7.3.13 + "@typescript-eslint/scope-manager": 5.57.0 + "@typescript-eslint/types": 5.57.0 + "@typescript-eslint/typescript-estree": 5.57.0(typescript@5.0.4) + eslint: 8.37.0 + eslint-scope: 5.1.1 + semver: 7.5.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: false + + /@typescript-eslint/visitor-keys@4.33.0: + resolution: + { + integrity: sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==, + } + engines: { node: ^8.10.0 || ^10.13.0 || >=11.10.1 } + dependencies: + "@typescript-eslint/types": 4.33.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /@typescript-eslint/visitor-keys@5.57.0: + resolution: + { + integrity: sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + "@typescript-eslint/types": 5.57.0 + eslint-visitor-keys: 3.4.0 + dev: false + + /acorn-jsx@5.3.2(acorn@7.4.1): + resolution: + { + integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, + } + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 7.4.1 + dev: true + + /acorn-jsx@5.3.2(acorn@8.8.2): + resolution: + { + integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, + } + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.8.2 + dev: false + + /acorn@7.4.1: + resolution: + { + integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==, + } + engines: { node: ">=0.4.0" } + hasBin: true + dev: true + + /acorn@8.8.2: + resolution: + { + integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==, + } + engines: { node: ">=0.4.0" } + hasBin: true + dev: false + + /ajv@6.12.6: + resolution: + { + integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==, + } + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + /ajv@8.12.0: + resolution: + { + integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==, + } + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + + /ansi-colors@4.1.3: + resolution: + { + integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==, + } + engines: { node: ">=6" } + dev: true + + /ansi-escapes@4.3.2: + resolution: + { + integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==, + } + engines: { node: ">=8" } + dependencies: + type-fest: 0.21.3 + + /ansi-regex@5.0.1: + resolution: + { + integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, + } + engines: { node: ">=8" } + + /ansi-sequence-parser@1.1.0: + resolution: + { + integrity: sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==, + } + dev: true + + /ansi-styles@3.2.1: + resolution: + { + integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==, + } + engines: { node: ">=4" } + dependencies: + color-convert: 1.9.3 + + /ansi-styles@4.3.0: + resolution: + { + integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, + } + engines: { node: ">=8" } + dependencies: + color-convert: 2.0.1 + + /ansi-styles@5.2.0: + resolution: + { + integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==, + } + engines: { node: ">=10" } + + /any-promise@1.3.0: + resolution: + { + integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==, + } + dev: true + + /anymatch@3.1.3: + resolution: + { + integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, + } + engines: { node: ">= 8" } + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /argparse@1.0.10: + resolution: + { + integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==, + } + dependencies: + sprintf-js: 1.0.3 + dev: true + + /argparse@2.0.1: + resolution: + { + integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, + } + dev: false + + /array-buffer-byte-length@1.0.0: + resolution: + { + integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==, + } + dependencies: + call-bind: 1.0.2 + is-array-buffer: 3.0.2 + dev: false + + /array-includes@3.1.6: + resolution: + { + integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + get-intrinsic: 1.2.0 + is-string: 1.0.7 + dev: false + + /array-union@2.1.0: + resolution: + { + integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==, + } + engines: { node: ">=8" } + + /array.prototype.flat@1.3.1: + resolution: + { + integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + es-shim-unscopables: 1.0.0 + dev: false + + /array.prototype.flatmap@1.3.1: + resolution: + { + integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + es-shim-unscopables: 1.0.0 + dev: false + + /arrify@1.0.1: + resolution: + { + integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==, + } + engines: { node: ">=0.10.0" } + + /astral-regex@2.0.0: + resolution: + { + integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==, + } + engines: { node: ">=8" } + dev: true + + /available-typed-arrays@1.0.5: + resolution: + { + integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==, + } + engines: { node: ">= 0.4" } + dev: false + + /babel-jest@29.5.0(@babel/core@7.21.4): + resolution: + { + integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + peerDependencies: + "@babel/core": ^7.8.0 + dependencies: + "@babel/core": 7.21.4 + "@jest/transform": 29.5.0 + "@types/babel__core": 7.20.0 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.5.0(@babel/core@7.21.4) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-istanbul@6.1.1: + resolution: + { + integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==, + } + engines: { node: ">=8" } + dependencies: + "@babel/helper-plugin-utils": 7.20.2 + "@istanbuljs/load-nyc-config": 1.1.0 + "@istanbuljs/schema": 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-jest-hoist@29.5.0: + resolution: + { + integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + "@babel/template": 7.20.7 + "@babel/types": 7.21.4 + "@types/babel__core": 7.20.0 + "@types/babel__traverse": 7.18.5 + dev: true + + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.21.4): + resolution: + { + integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==, + } + peerDependencies: + "@babel/core": ^7.0.0 + dependencies: + "@babel/core": 7.21.4 + "@babel/plugin-syntax-async-generators": 7.8.4(@babel/core@7.21.4) + "@babel/plugin-syntax-bigint": 7.8.3(@babel/core@7.21.4) + "@babel/plugin-syntax-class-properties": 7.12.13(@babel/core@7.21.4) + "@babel/plugin-syntax-import-meta": 7.10.4(@babel/core@7.21.4) + "@babel/plugin-syntax-json-strings": 7.8.3(@babel/core@7.21.4) + "@babel/plugin-syntax-logical-assignment-operators": 7.10.4(@babel/core@7.21.4) + "@babel/plugin-syntax-nullish-coalescing-operator": 7.8.3(@babel/core@7.21.4) + "@babel/plugin-syntax-numeric-separator": 7.10.4(@babel/core@7.21.4) + "@babel/plugin-syntax-object-rest-spread": 7.8.3(@babel/core@7.21.4) + "@babel/plugin-syntax-optional-catch-binding": 7.8.3(@babel/core@7.21.4) + "@babel/plugin-syntax-optional-chaining": 7.8.3(@babel/core@7.21.4) + "@babel/plugin-syntax-top-level-await": 7.14.5(@babel/core@7.21.4) + dev: true + + /babel-preset-jest@29.5.0(@babel/core@7.21.4): + resolution: + { + integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + peerDependencies: + "@babel/core": ^7.0.0 + dependencies: + "@babel/core": 7.21.4 + babel-plugin-jest-hoist: 29.5.0 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.4) + dev: true + + /balanced-match@1.0.2: + resolution: + { + integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, + } + + /binary-extensions@2.2.0: + resolution: + { + integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==, + } + engines: { node: ">=8" } + dev: true + + /brace-expansion@1.1.11: + resolution: + { + integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, + } + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + /brace-expansion@2.0.1: + resolution: + { + integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==, + } + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces@3.0.2: + resolution: + { + integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==, + } + engines: { node: ">=8" } + dependencies: + fill-range: 7.0.1 + + /browserslist@4.21.5: + resolution: + { + integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==, + } + engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + hasBin: true + dependencies: + caniuse-lite: 1.0.30001481 + electron-to-chromium: 1.4.376 + node-releases: 2.0.10 + update-browserslist-db: 1.0.11(browserslist@4.21.5) + dev: true + + /bs-logger@0.2.6: + resolution: + { + integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==, + } + engines: { node: ">= 6" } + dependencies: + fast-json-stable-stringify: 2.1.0 + dev: true + + /bser@2.1.1: + resolution: + { + integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==, + } + dependencies: + node-int64: 0.4.0 + dev: true + + /buffer-from@1.1.2: + resolution: + { + integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, + } + dev: true + + /bufferutil@4.0.7: + resolution: + { + integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==, + } + engines: { node: ">=6.14.2" } + requiresBuild: true + dependencies: + node-gyp-build: 4.6.0 + dev: false + + /bundle-require@4.0.1(esbuild@0.17.15): + resolution: + { + integrity: sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + peerDependencies: + esbuild: ">=0.17" + dependencies: + esbuild: 0.17.15 + load-tsconfig: 0.2.5 + dev: true + + /cac@6.7.14: + resolution: + { + integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==, + } + engines: { node: ">=8" } + dev: true + + /call-bind@1.0.2: + resolution: + { + integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==, + } + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.2.0 + dev: false + + /callsites@3.1.0: + resolution: + { + integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, + } + engines: { node: ">=6" } + + /camelcase-keys@6.2.2: + resolution: + { + integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==, + } + engines: { node: ">=8" } + dependencies: + camelcase: 5.3.1 + map-obj: 4.3.0 + quick-lru: 4.0.1 + + /camelcase@5.3.1: + resolution: + { + integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==, + } + engines: { node: ">=6" } + + /camelcase@6.3.0: + resolution: + { + integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==, + } + engines: { node: ">=10" } + dev: true + + /caniuse-lite@1.0.30001481: + resolution: + { + integrity: sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ==, + } + dev: true + + /chalk@2.4.2: + resolution: + { + integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==, + } + engines: { node: ">=4" } + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + /chalk@4.1.2: + resolution: + { + integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, + } + engines: { node: ">=10" } + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + /char-regex@1.0.2: + resolution: + { + integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==, + } + engines: { node: ">=10" } + dev: true + + /chardet@0.7.0: + resolution: + { + integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==, + } + dev: true + + /chokidar@3.5.3: + resolution: + { + integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==, + } + engines: { node: ">= 8.10.0" } + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /ci-info@3.8.0: + resolution: + { + integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==, + } + engines: { node: ">=8" } + dev: true + + /cjs-module-lexer@1.2.2: + resolution: + { + integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==, + } + dev: true + + /cli-cursor@3.1.0: + resolution: + { + integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==, + } + engines: { node: ">=8" } + dependencies: + restore-cursor: 3.1.0 + dev: true + + /cli-width@3.0.0: + resolution: + { + integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==, + } + engines: { node: ">= 10" } + dev: true + + /cliui@8.0.1: + resolution: + { + integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, + } + engines: { node: ">=12" } + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /co@4.6.0: + resolution: + { + integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==, + } + engines: { iojs: ">= 1.0.0", node: ">= 0.12.0" } + dev: true + + /collect-v8-coverage@1.0.1: + resolution: + { + integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==, + } + dev: true + + /color-convert@1.9.3: + resolution: + { + integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==, + } + dependencies: + color-name: 1.1.3 + + /color-convert@2.0.1: + resolution: + { + integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, + } + engines: { node: ">=7.0.0" } + dependencies: + color-name: 1.1.4 + + /color-name@1.1.3: + resolution: + { + integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==, + } + + /color-name@1.1.4: + resolution: + { + integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, + } + + /commander@4.1.1: + resolution: + { + integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==, + } + engines: { node: ">= 6" } + dev: true + + /concat-map@0.0.1: + resolution: + { + integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, + } + + /convert-source-map@1.9.0: + resolution: + { + integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==, + } + dev: true + + /convert-source-map@2.0.0: + resolution: + { + integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==, + } + dev: true + + /create-esm-loader@0.2.3: + resolution: + { + integrity: sha512-cllzD6IU/mzXBs5OdQVWL3+ne5Elpu3Wdm7h5OldMbGXk76yr9XzHlQXWJ4zfs0ZAibe26rkbs4KvMAJm7fIZA==, + } + engines: { node: ">=14.x" } + dependencies: + semver: 7.5.0 + dev: false + + /cross-spawn@6.0.5: + resolution: + { + integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==, + } + engines: { node: ">=4.8" } + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.1 + shebang-command: 1.2.0 + which: 1.3.1 + dev: false + + /cross-spawn@7.0.3: + resolution: + { + integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==, + } + engines: { node: ">= 8" } + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + /d@1.0.1: + resolution: + { + integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==, + } + dependencies: + es5-ext: 0.10.62 + type: 1.2.0 + dev: false + + /data-uri-to-buffer@4.0.1: + resolution: + { + integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==, + } + engines: { node: ">= 12" } + dev: false + + /debug@2.6.9: + resolution: + { + integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==, + } + peerDependencies: + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: false + + /debug@3.2.7: + resolution: + { + integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==, + } + peerDependencies: + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: false + + /debug@4.3.4: + resolution: + { + integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==, + } + engines: { node: ">=6.0" } + peerDependencies: + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + + /decamelize-keys@1.1.1: + resolution: + { + integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==, + } + engines: { node: ">=0.10.0" } + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + + /decamelize@1.2.0: + resolution: + { + integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==, + } + engines: { node: ">=0.10.0" } + + /dedent@0.7.0: + resolution: + { + integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==, + } + dev: true + + /deep-is@0.1.4: + resolution: + { + integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, + } + + /deepmerge@4.3.1: + resolution: + { + integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==, + } + engines: { node: ">=0.10.0" } + dev: true + + /define-properties@1.2.0: + resolution: + { + integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==, + } + engines: { node: ">= 0.4" } + dependencies: + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + dev: false + + /detect-newline@3.1.0: + resolution: + { + integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==, + } + engines: { node: ">=8" } + dev: true + + /diff-sequences@29.4.3: + resolution: + { + integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + + /dir-glob@3.0.1: + resolution: + { + integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==, + } + engines: { node: ">=8" } + dependencies: + path-type: 4.0.0 + + /doctrine@2.1.0: + resolution: + { + integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==, + } + engines: { node: ">=0.10.0" } + dependencies: + esutils: 2.0.3 + dev: false + + /doctrine@3.0.0: + resolution: + { + integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==, + } + engines: { node: ">=6.0.0" } + dependencies: + esutils: 2.0.3 + + /electron-to-chromium@1.4.376: + resolution: + { + integrity: sha512-TFeOKd98TpJzRHkr4Aorn16QkMnuCQuGAE6IZ0wYF+qkbSfMPqjplvRppR02tMUpVxZz8nyBNvVm9lIZsqrbPQ==, + } + dev: true + + /emittery@0.13.1: + resolution: + { + integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==, + } + engines: { node: ">=12" } + dev: true + + /emoji-regex@8.0.0: + resolution: + { + integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, + } + + /enquirer@2.3.6: + resolution: + { + integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==, + } + engines: { node: ">=8.6" } + dependencies: + ansi-colors: 4.1.3 + dev: true + + /error-ex@1.3.2: + resolution: + { + integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==, + } + dependencies: + is-arrayish: 0.2.1 + + /es-abstract@1.21.2: + resolution: + { + integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==, + } + engines: { node: ">= 0.4" } + dependencies: + array-buffer-byte-length: 1.0.0 + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + es-set-tostringtag: 2.0.1 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.5 + get-intrinsic: 1.2.0 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has: 1.0.3 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + is-array-buffer: 3.0.2 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.10 + is-weakref: 1.0.2 + object-inspect: 1.12.3 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.5.0 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.7 + string.prototype.trimend: 1.0.6 + string.prototype.trimstart: 1.0.6 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.9 + dev: false + + /es-set-tostringtag@2.0.1: + resolution: + { + integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==, + } + engines: { node: ">= 0.4" } + dependencies: + get-intrinsic: 1.2.0 + has: 1.0.3 + has-tostringtag: 1.0.0 + dev: false + + /es-shim-unscopables@1.0.0: + resolution: + { + integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==, + } + dependencies: + has: 1.0.3 + dev: false + + /es-to-primitive@1.2.1: + resolution: + { + integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==, + } + engines: { node: ">= 0.4" } + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: false + + /es5-ext@0.10.62: + resolution: + { + integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==, + } + engines: { node: ">=0.10" } + requiresBuild: true + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.3 + next-tick: 1.1.0 + dev: false + + /es6-iterator@2.0.3: + resolution: + { + integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==, + } + dependencies: + d: 1.0.1 + es5-ext: 0.10.62 + es6-symbol: 3.1.3 + dev: false + + /es6-symbol@3.1.3: + resolution: + { + integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==, + } + dependencies: + d: 1.0.1 + ext: 1.7.0 + dev: false + + /esbuild-plugin-alias@0.2.1: + resolution: + { + integrity: sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==, + } + dev: false + + /esbuild@0.17.15: + resolution: + { + integrity: sha512-LBUV2VsUIc/iD9ME75qhT4aJj0r75abCVS0jakhFzOtR7TQsqQA5w0tZ+KTKnwl3kXE0MhskNdHDh/I5aCR1Zw==, + } + engines: { node: ">=12" } + hasBin: true + requiresBuild: true + optionalDependencies: + "@esbuild/android-arm": 0.17.15 + "@esbuild/android-arm64": 0.17.15 + "@esbuild/android-x64": 0.17.15 + "@esbuild/darwin-arm64": 0.17.15 + "@esbuild/darwin-x64": 0.17.15 + "@esbuild/freebsd-arm64": 0.17.15 + "@esbuild/freebsd-x64": 0.17.15 + "@esbuild/linux-arm": 0.17.15 + "@esbuild/linux-arm64": 0.17.15 + "@esbuild/linux-ia32": 0.17.15 + "@esbuild/linux-loong64": 0.17.15 + "@esbuild/linux-mips64el": 0.17.15 + "@esbuild/linux-ppc64": 0.17.15 + "@esbuild/linux-riscv64": 0.17.15 + "@esbuild/linux-s390x": 0.17.15 + "@esbuild/linux-x64": 0.17.15 + "@esbuild/netbsd-x64": 0.17.15 + "@esbuild/openbsd-x64": 0.17.15 + "@esbuild/sunos-x64": 0.17.15 + "@esbuild/win32-arm64": 0.17.15 + "@esbuild/win32-ia32": 0.17.15 + "@esbuild/win32-x64": 0.17.15 + + /escalade@3.1.1: + resolution: + { + integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==, + } + engines: { node: ">=6" } + dev: true + + /escape-string-regexp@1.0.5: + resolution: + { + integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, + } + engines: { node: ">=0.8.0" } + + /escape-string-regexp@2.0.0: + resolution: + { + integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==, + } + engines: { node: ">=8" } + dev: true + + /escape-string-regexp@4.0.0: + resolution: + { + integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, + } + engines: { node: ">=10" } + + /eslint-config-prettier@7.2.0(eslint@7.32.0): + resolution: + { + integrity: sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==, + } + hasBin: true + peerDependencies: + eslint: ">=7.0.0" + dependencies: + eslint: 7.32.0 + dev: true + + /eslint-config-prettier@8.8.0(eslint@8.37.0): + resolution: + { + integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==, + } + hasBin: true + peerDependencies: + eslint: ">=7.0.0" + dependencies: + eslint: 8.37.0 + dev: false + + /eslint-formatter-pretty@4.1.0: + resolution: + { + integrity: sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==, + } + engines: { node: ">=10" } + dependencies: + "@types/eslint": 7.29.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + eslint-rule-docs: 1.1.235 + log-symbols: 4.1.0 + plur: 4.0.0 + string-width: 4.2.3 + supports-hyperlinks: 2.3.0 + dev: false + + /eslint-import-resolver-node@0.3.7: + resolution: + { + integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==, + } + dependencies: + debug: 3.2.7 + is-core-module: 2.12.0 + resolve: 1.22.2 + transitivePeerDependencies: + - supports-color + dev: false + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-node@0.3.7)(eslint@8.37.0): + resolution: + { + integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==, + } + engines: { node: ">=4" } + peerDependencies: + "@typescript-eslint/parser": "*" + eslint: "*" + eslint-import-resolver-node: "*" + eslint-import-resolver-typescript: "*" + eslint-import-resolver-webpack: "*" + peerDependenciesMeta: + "@typescript-eslint/parser": + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + "@typescript-eslint/parser": 5.57.0(eslint@8.37.0)(typescript@5.0.4) + debug: 3.2.7 + eslint: 8.37.0 + eslint-import-resolver-node: 0.3.7 + transitivePeerDependencies: + - supports-color + dev: false + + /eslint-plugin-es@3.0.1(eslint@7.32.0): + resolution: + { + integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==, + } + engines: { node: ">=8.10.0" } + peerDependencies: + eslint: ">=4.19.1" + dependencies: + eslint: 7.32.0 + eslint-utils: 2.1.0 + regexpp: 3.2.0 + dev: true + + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.57.0)(eslint@8.37.0): + resolution: + { + integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==, + } + engines: { node: ">=4" } + peerDependencies: + "@typescript-eslint/parser": "*" + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + "@typescript-eslint/parser": + optional: true + dependencies: + "@typescript-eslint/parser": 5.57.0(eslint@8.37.0)(typescript@5.0.4) + array-includes: 3.1.6 + array.prototype.flat: 1.3.1 + array.prototype.flatmap: 1.3.1 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.37.0 + eslint-import-resolver-node: 0.3.7 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-node@0.3.7)(eslint@8.37.0) + has: 1.0.3 + is-core-module: 2.12.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.values: 1.1.6 + resolve: 1.22.2 + semver: 6.3.0 + tsconfig-paths: 3.14.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: false + + /eslint-plugin-node@11.1.0(eslint@7.32.0): + resolution: + { + integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==, + } + engines: { node: ">=8.10.0" } + peerDependencies: + eslint: ">=5.16.0" + dependencies: + eslint: 7.32.0 + eslint-plugin-es: 3.0.1(eslint@7.32.0) + eslint-utils: 2.1.0 + ignore: 5.2.4 + minimatch: 3.1.2 + resolve: 1.22.2 + semver: 6.3.0 + dev: true + + /eslint-plugin-prettier@3.4.1(eslint-config-prettier@7.2.0)(eslint@7.32.0)(prettier@2.8.8): + resolution: + { + integrity: sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==, + } + engines: { node: ">=6.0.0" } + peerDependencies: + eslint: ">=5.0.0" + eslint-config-prettier: "*" + prettier: ">=1.13.0" + peerDependenciesMeta: + eslint-config-prettier: + optional: true + dependencies: + eslint: 7.32.0 + eslint-config-prettier: 7.2.0(eslint@7.32.0) + prettier: 2.8.8 + prettier-linter-helpers: 1.0.0 + dev: true + + /eslint-rule-docs@1.1.235: + resolution: + { + integrity: sha512-+TQ+x4JdTnDoFEXXb3fDvfGOwnyNV7duH8fXWTPD1ieaBmB8omj7Gw/pMBBu4uI2uJCCU8APDaQJzWuXnTsH4A==, + } + dev: false + + /eslint-scope@5.1.1: + resolution: + { + integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==, + } + engines: { node: ">=8.0.0" } + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + /eslint-scope@7.2.0: + resolution: + { + integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: false + + /eslint-utils@2.1.0: + resolution: + { + integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==, + } + engines: { node: ">=6" } + dependencies: + eslint-visitor-keys: 1.3.0 + dev: true + + /eslint-utils@3.0.0(eslint@7.32.0): + resolution: + { + integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==, + } + engines: { node: ^10.0.0 || ^12.0.0 || >= 14.0.0 } + peerDependencies: + eslint: ">=5" + dependencies: + eslint: 7.32.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-visitor-keys@1.3.0: + resolution: + { + integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==, + } + engines: { node: ">=4" } + dev: true + + /eslint-visitor-keys@2.1.0: + resolution: + { + integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==, + } + engines: { node: ">=10" } + dev: true + + /eslint-visitor-keys@3.4.0: + resolution: + { + integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dev: false + + /eslint@7.32.0: + resolution: + { + integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==, + } + engines: { node: ^10.12.0 || >=12.0.0 } + hasBin: true + dependencies: + "@babel/code-frame": 7.12.11 + "@eslint/eslintrc": 0.4.3 + "@humanwhocodes/config-array": 0.5.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + enquirer: 2.3.6 + escape-string-regexp: 4.0.0 + eslint-scope: 5.1.1 + eslint-utils: 2.1.0 + eslint-visitor-keys: 2.1.0 + espree: 7.3.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + functional-red-black-tree: 1.0.1 + glob-parent: 5.1.2 + globals: 13.20.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + js-yaml: 3.14.1 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + progress: 2.0.3 + regexpp: 3.2.0 + semver: 7.5.0 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + table: 6.8.1 + text-table: 0.2.0 + v8-compile-cache: 2.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint@8.37.0: + resolution: + { + integrity: sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + hasBin: true + dependencies: + "@eslint-community/eslint-utils": 4.4.0(eslint@8.37.0) + "@eslint-community/regexpp": 4.5.0 + "@eslint/eslintrc": 2.0.2 + "@eslint/js": 8.37.0 + "@humanwhocodes/config-array": 0.11.8 + "@humanwhocodes/module-importer": 1.0.1 + "@nodelib/fs.walk": 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.0 + eslint-visitor-keys: 3.4.0 + espree: 9.5.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.20.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-sdsl: 4.4.0 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: false + + /esm-loader-typescript@1.0.4: + resolution: + { + integrity: sha512-ejo2f+NKIt23jaJKVpjcRQC0xTa6cTqt6VA+z8Ef/A/TCjQ5u7opPO1J4fJFeTiiHEo8JqU92EG4I1KwuXYZMg==, + } + dependencies: + create-esm-loader: 0.2.3 + npm-run-all: 4.1.5 + semver: 7.5.0 + typescript: 5.0.4 + dev: false + + /espree@7.3.1: + resolution: + { + integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==, + } + engines: { node: ^10.12.0 || >=12.0.0 } + dependencies: + acorn: 7.4.1 + acorn-jsx: 5.3.2(acorn@7.4.1) + eslint-visitor-keys: 1.3.0 + dev: true + + /espree@9.5.1: + resolution: + { + integrity: sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + acorn: 8.8.2 + acorn-jsx: 5.3.2(acorn@8.8.2) + eslint-visitor-keys: 3.4.0 + dev: false + + /esprima@4.0.1: + resolution: + { + integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, + } + engines: { node: ">=4" } + hasBin: true + dev: true + + /esquery@1.5.0: + resolution: + { + integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==, + } + engines: { node: ">=0.10" } + dependencies: + estraverse: 5.3.0 + + /esrecurse@4.3.0: + resolution: + { + integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, + } + engines: { node: ">=4.0" } + dependencies: + estraverse: 5.3.0 + + /estraverse@4.3.0: + resolution: + { + integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==, + } + engines: { node: ">=4.0" } + + /estraverse@5.3.0: + resolution: + { + integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, + } + engines: { node: ">=4.0" } + + /esutils@2.0.3: + resolution: + { + integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, + } + engines: { node: ">=0.10.0" } + + /eventemitter3@5.0.1: + resolution: + { + integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==, + } + dev: false + + /execa@5.1.1: + resolution: + { + integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==, + } + engines: { node: ">=10" } + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /exit@0.1.2: + resolution: + { + integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==, + } + engines: { node: ">= 0.8.0" } + dev: true + + /expect@29.5.0: + resolution: + { + integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + "@jest/expect-utils": 29.5.0 + jest-get-type: 29.4.3 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + dev: true + + /ext@1.7.0: + resolution: + { + integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==, + } + dependencies: + type: 2.7.2 + dev: false + + /external-editor@3.1.0: + resolution: + { + integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==, + } + engines: { node: ">=4" } + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + dev: true + + /fast-deep-equal@3.1.3: + resolution: + { + integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, + } + + /fast-diff@1.2.0: + resolution: + { + integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==, + } + dev: true + + /fast-glob@3.2.12: + resolution: + { + integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==, + } + engines: { node: ">=8.6.0" } + dependencies: + "@nodelib/fs.stat": 2.0.5 + "@nodelib/fs.walk": 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + + /fast-json-stable-stringify@2.1.0: + resolution: + { + integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, + } + + /fast-levenshtein@2.0.6: + resolution: + { + integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, + } + + /fastq@1.15.0: + resolution: + { + integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==, + } + dependencies: + reusify: 1.0.4 + + /fb-watchman@2.0.2: + resolution: + { + integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==, + } + dependencies: + bser: 2.1.1 + dev: true + + /fetch-blob@3.2.0: + resolution: + { + integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==, + } + engines: { node: ^12.20 || >= 14.13 } + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.2.1 + dev: false + + /figures@3.2.0: + resolution: + { + integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==, + } + engines: { node: ">=8" } + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /file-entry-cache@6.0.1: + resolution: + { + integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==, + } + engines: { node: ^10.12.0 || >=12.0.0 } + dependencies: + flat-cache: 3.0.4 + + /fill-range@7.0.1: + resolution: + { + integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==, + } + engines: { node: ">=8" } + dependencies: + to-regex-range: 5.0.1 + + /find-up@4.1.0: + resolution: + { + integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, + } + engines: { node: ">=8" } + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + /find-up@5.0.0: + resolution: + { + integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, + } + engines: { node: ">=10" } + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: false + + /flat-cache@3.0.4: + resolution: + { + integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==, + } + engines: { node: ^10.12.0 || >=12.0.0 } + dependencies: + flatted: 3.2.7 + rimraf: 3.0.2 + + /flatted@3.2.7: + resolution: + { + integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==, + } + + /for-each@0.3.3: + resolution: + { + integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==, + } + dependencies: + is-callable: 1.2.7 + dev: false + + /formdata-polyfill@4.0.10: + resolution: + { + integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==, + } + engines: { node: ">=12.20.0" } + dependencies: + fetch-blob: 3.2.0 + dev: false + + /fs.realpath@1.0.0: + resolution: + { + integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, + } + + /fsevents@2.3.2: + resolution: + { + integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==, + } + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + os: [darwin] + requiresBuild: true + dev: true optional: true - dependencies: - bundle-require: 4.0.1(esbuild@0.17.15) - cac: 6.7.14 - chokidar: 3.5.3 - debug: 4.3.4 - esbuild: 0.17.15 - execa: 5.1.1 - globby: 11.1.0 - joycon: 3.1.1 - postcss-load-config: 3.1.4 - resolve-from: 5.0.0 - rollup: 3.25.3 - source-map: 0.8.0-beta.0 - sucrase: 3.32.0 - tree-kill: 1.2.2 - typescript: 5.0.4 - transitivePeerDependencies: - - supports-color - - ts-node - dev: true - - /tsutils@3.21.0(typescript@5.0.4): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 5.0.4 - - /type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - - /type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - dev: true - - /type-fest@0.18.1: - resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} - engines: {node: '>=10'} - - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - - /type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - - /type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - - /type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - - /type@1.2.0: - resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} - dev: false - - /type@2.7.2: - resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} - dev: false - - /typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} - dependencies: - call-bind: 1.0.2 - for-each: 0.3.3 - is-typed-array: 1.1.10 - dev: false - - /typedarray-to-buffer@3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - dependencies: - is-typedarray: 1.0.0 - - /typedoc-plugin-rename-defaults@0.6.5(typedoc@0.24.8): - resolution: {integrity: sha512-DwkgwRMxgu3UrDR3VUAdnF9jYzM6p7rw6UcVIh4MD7yjEmFDR8WWyOlk6oYgELmRYHxTDx0f0GK6iSgoxSh/Qw==} - peerDependencies: - typedoc: 0.22.x || 0.23.x || 0.24.x - dependencies: - typedoc: 0.24.8(typescript@5.0.4) - dev: true - - /typedoc@0.24.8(typescript@5.0.4): - resolution: {integrity: sha512-ahJ6Cpcvxwaxfu4KtjA8qZNqS43wYt6JL27wYiIgl1vd38WW/KWX11YuAeZhuz9v+ttrutSsgK+XO1CjL1kA3w==} - engines: {node: '>= 14.14'} - hasBin: true - peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x - dependencies: - lunr: 2.3.9 - marked: 4.3.0 - minimatch: 9.0.2 - shiki: 0.14.3 - typescript: 5.0.4 - dev: true - - /typescript@5.0.4: - resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} - engines: {node: '>=12.20'} - hasBin: true - - /unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - dependencies: - call-bind: 1.0.2 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 - dev: false - - /update-browserslist-db@1.0.11(browserslist@4.21.5): - resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.21.5 - escalade: 3.1.1 - picocolors: 1.0.0 - dev: true - - /uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - dependencies: - punycode: 2.3.0 - - /utf-8-validate@5.0.10: - resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} - engines: {node: '>=6.14.2'} - requiresBuild: true - dependencies: - node-gyp-build: 4.6.0 - dev: false - - /utf8-buffer@1.0.0: - resolution: {integrity: sha512-ueuhzvWnp5JU5CiGSY4WdKbiN/PO2AZ/lpeLiz2l38qwdLy/cW40XobgyuIWucNyum0B33bVB0owjFCeGBSLqg==} - engines: {node: '>=8'} - dev: false - - /v8-compile-cache@2.3.0: - resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} - dev: true - - /v8-to-istanbul@9.1.0: - resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} - engines: {node: '>=10.12.0'} - dependencies: - '@jridgewell/trace-mapping': 0.3.18 - '@types/istanbul-lib-coverage': 2.0.4 - convert-source-map: 1.9.0 - dev: true - - /validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 - - /vscode-oniguruma@1.7.0: - resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} - dev: true - - /vscode-textmate@8.0.0: - resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} - dev: true - - /walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - dependencies: - makeerror: 1.0.12 - dev: true - - /web-streams-polyfill@3.2.1: - resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} - engines: {node: '>= 8'} - dev: false - - /webidl-conversions@4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - dev: true - - /websocket-polyfill@0.0.3: - resolution: {integrity: sha512-pF3kR8Uaoau78MpUmFfzbIRxXj9PeQrCuPepGE6JIsfsJ/o/iXr07Q2iQNzKSSblQJ0FiGWlS64N4pVSm+O3Dg==} - dependencies: - tstl: 2.5.13 - websocket: 1.0.34 - transitivePeerDependencies: - - supports-color - dev: false - - /websocket@1.0.34: - resolution: {integrity: sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==} - engines: {node: '>=4.0.0'} - dependencies: - bufferutil: 4.0.7 - debug: 2.6.9 - es5-ext: 0.10.62 - typedarray-to-buffer: 3.1.5 - utf-8-validate: 5.0.10 - yaeti: 0.0.6 - transitivePeerDependencies: - - supports-color - dev: false - - /whatwg-url@7.1.0: - resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} - dependencies: - lodash.sortby: 4.7.0 - tr46: 1.0.1 - webidl-conversions: 4.0.2 - dev: true - - /which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 - dev: false - - /which-typed-array@1.1.9: - resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 - is-typed-array: 1.1.10 - dev: false - - /which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: false - - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 - - /word-wrap@1.2.3: - resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} - engines: {node: '>=0.10.0'} - - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true - - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - /write-file-atomic@3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - dependencies: - imurmurhash: 0.1.4 - is-typedarray: 1.0.0 - signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 - dev: true - - /write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - dev: true - - /y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - dev: true - - /yaeti@0.0.6: - resolution: {integrity: sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==} - engines: {node: '>=0.10.32'} - dev: false - - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: true - - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - /yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - dev: true - - /yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - - /yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - dev: true - - /yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - dependencies: - cliui: 8.0.1 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - dev: true - - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} + + /function-bind@1.1.1: + resolution: + { + integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==, + } + + /function.prototype.name@1.1.5: + resolution: + { + integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + functions-have-names: 1.2.3 + dev: false + + /functional-red-black-tree@1.0.1: + resolution: + { + integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==, + } + dev: true + + /functions-have-names@1.2.3: + resolution: + { + integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==, + } + dev: false + + /gensync@1.0.0-beta.2: + resolution: + { + integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==, + } + engines: { node: ">=6.9.0" } + dev: true + + /get-caller-file@2.0.5: + resolution: + { + integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, + } + engines: { node: 6.* || 8.* || >= 10.* } + dev: true + + /get-intrinsic@1.2.0: + resolution: + { + integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==, + } + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.3 + dev: false + + /get-package-type@0.1.0: + resolution: + { + integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==, + } + engines: { node: ">=8.0.0" } + dev: true + + /get-stream@6.0.1: + resolution: + { + integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==, + } + engines: { node: ">=10" } + dev: true + + /get-symbol-description@1.0.0: + resolution: + { + integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + dev: false + + /glob-parent@5.1.2: + resolution: + { + integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, + } + engines: { node: ">= 6" } + dependencies: + is-glob: 4.0.3 + + /glob-parent@6.0.2: + resolution: + { + integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, + } + engines: { node: ">=10.13.0" } + dependencies: + is-glob: 4.0.3 + dev: false + + /glob@7.1.6: + resolution: + { + integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==, + } + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob@7.2.3: + resolution: + { + integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==, + } + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + /globals@11.12.0: + resolution: + { + integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==, + } + engines: { node: ">=4" } + dev: true + + /globals@13.20.0: + resolution: + { + integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==, + } + engines: { node: ">=8" } + dependencies: + type-fest: 0.20.2 + + /globalthis@1.0.3: + resolution: + { + integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==, + } + engines: { node: ">= 0.4" } + dependencies: + define-properties: 1.2.0 + dev: false + + /globby@11.1.0: + resolution: + { + integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==, + } + engines: { node: ">=10" } + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + + /gopd@1.0.1: + resolution: + { + integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==, + } + dependencies: + get-intrinsic: 1.2.0 + dev: false + + /graceful-fs@4.2.11: + resolution: + { + integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, + } + + /grapheme-splitter@1.0.4: + resolution: + { + integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==, + } + dev: false + + /gts@3.1.1(typescript@5.0.4): + resolution: + { + integrity: sha512-Jw44aBbzMnd1vtZs7tZt3LMstKQukCBg7N4CKVGzviIQ45Cz5b9lxDJGXVKj/9ySuGv6TYEeijZJGbiiVcM27w==, + } + engines: { node: ">=10" } + hasBin: true + peerDependencies: + typescript: ">=3" + dependencies: + "@typescript-eslint/eslint-plugin": 4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@5.0.4) + "@typescript-eslint/parser": 4.33.0(eslint@7.32.0)(typescript@5.0.4) + chalk: 4.1.2 + eslint: 7.32.0 + eslint-config-prettier: 7.2.0(eslint@7.32.0) + eslint-plugin-node: 11.1.0(eslint@7.32.0) + eslint-plugin-prettier: 3.4.1(eslint-config-prettier@7.2.0)(eslint@7.32.0)(prettier@2.8.8) + execa: 5.1.1 + inquirer: 7.3.3 + json5: 2.2.3 + meow: 9.0.0 + ncp: 2.0.0 + prettier: 2.8.8 + rimraf: 3.0.2 + typescript: 5.0.4 + write-file-atomic: 3.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /hard-rejection@2.1.0: + resolution: + { + integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==, + } + engines: { node: ">=6" } + + /has-bigints@1.0.2: + resolution: + { + integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==, + } + dev: false + + /has-flag@3.0.0: + resolution: + { + integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==, + } + engines: { node: ">=4" } + + /has-flag@4.0.0: + resolution: + { + integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, + } + engines: { node: ">=8" } + + /has-property-descriptors@1.0.0: + resolution: + { + integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==, + } + dependencies: + get-intrinsic: 1.2.0 + dev: false + + /has-proto@1.0.1: + resolution: + { + integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==, + } + engines: { node: ">= 0.4" } + dev: false + + /has-symbols@1.0.3: + resolution: + { + integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==, + } + engines: { node: ">= 0.4" } + dev: false + + /has-tostringtag@1.0.0: + resolution: + { + integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==, + } + engines: { node: ">= 0.4" } + dependencies: + has-symbols: 1.0.3 + dev: false + + /has@1.0.3: + resolution: + { + integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==, + } + engines: { node: ">= 0.4.0" } + dependencies: + function-bind: 1.1.1 + + /hosted-git-info@2.8.9: + resolution: + { + integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==, + } + + /hosted-git-info@4.1.0: + resolution: + { + integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==, + } + engines: { node: ">=10" } + dependencies: + lru-cache: 6.0.0 + + /html-escaper@2.0.2: + resolution: + { + integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==, + } + dev: true + + /human-signals@2.1.0: + resolution: + { + integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==, + } + engines: { node: ">=10.17.0" } + dev: true + + /iconv-lite@0.4.24: + resolution: + { + integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==, + } + engines: { node: ">=0.10.0" } + dependencies: + safer-buffer: 2.1.2 + dev: true + + /ignore@4.0.6: + resolution: + { + integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==, + } + engines: { node: ">= 4" } + dev: true + + /ignore@5.2.4: + resolution: + { + integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==, + } + engines: { node: ">= 4" } + + /import-fresh@3.3.0: + resolution: + { + integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==, + } + engines: { node: ">=6" } + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + /import-local@3.1.0: + resolution: + { + integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==, + } + engines: { node: ">=8" } + hasBin: true + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + dev: true + + /imurmurhash@0.1.4: + resolution: + { + integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, + } + engines: { node: ">=0.8.19" } + + /indent-string@4.0.0: + resolution: + { + integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==, + } + engines: { node: ">=8" } + + /inflight@1.0.6: + resolution: + { + integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, + } + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + /inherits@2.0.4: + resolution: + { + integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, + } + + /inquirer@7.3.3: + resolution: + { + integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==, + } + engines: { node: ">=8.0.0" } + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + run-async: 2.4.1 + rxjs: 6.6.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + dev: true + + /internal-slot@1.0.5: + resolution: + { + integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==, + } + engines: { node: ">= 0.4" } + dependencies: + get-intrinsic: 1.2.0 + has: 1.0.3 + side-channel: 1.0.4 + dev: false + + /irregular-plurals@3.5.0: + resolution: + { + integrity: sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==, + } + engines: { node: ">=8" } + dev: false + + /is-array-buffer@3.0.2: + resolution: + { + integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==, + } + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + is-typed-array: 1.1.10 + dev: false + + /is-arrayish@0.2.1: + resolution: + { + integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, + } + + /is-bigint@1.0.4: + resolution: + { + integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==, + } + dependencies: + has-bigints: 1.0.2 + dev: false + + /is-binary-path@2.1.0: + resolution: + { + integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, + } + engines: { node: ">=8" } + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-boolean-object@1.1.2: + resolution: + { + integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: false + + /is-callable@1.2.7: + resolution: + { + integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==, + } + engines: { node: ">= 0.4" } + dev: false + + /is-core-module@2.12.0: + resolution: + { + integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==, + } + dependencies: + has: 1.0.3 + + /is-date-object@1.0.5: + resolution: + { + integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==, + } + engines: { node: ">= 0.4" } + dependencies: + has-tostringtag: 1.0.0 + dev: false + + /is-extglob@2.1.1: + resolution: + { + integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, + } + engines: { node: ">=0.10.0" } + + /is-fullwidth-code-point@3.0.0: + resolution: + { + integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, + } + engines: { node: ">=8" } + + /is-generator-fn@2.1.0: + resolution: + { + integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==, + } + engines: { node: ">=6" } + dev: true + + /is-glob@4.0.3: + resolution: + { + integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, + } + engines: { node: ">=0.10.0" } + dependencies: + is-extglob: 2.1.1 + + /is-negative-zero@2.0.2: + resolution: + { + integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==, + } + engines: { node: ">= 0.4" } + dev: false + + /is-number-object@1.0.7: + resolution: + { + integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==, + } + engines: { node: ">= 0.4" } + dependencies: + has-tostringtag: 1.0.0 + dev: false + + /is-number@7.0.0: + resolution: + { + integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, + } + engines: { node: ">=0.12.0" } + + /is-path-inside@3.0.3: + resolution: + { + integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==, + } + engines: { node: ">=8" } + dev: false + + /is-plain-obj@1.1.0: + resolution: + { + integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==, + } + engines: { node: ">=0.10.0" } + + /is-regex@1.1.4: + resolution: + { + integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: false + + /is-shared-array-buffer@1.0.2: + resolution: + { + integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==, + } + dependencies: + call-bind: 1.0.2 + dev: false + + /is-stream@2.0.1: + resolution: + { + integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==, + } + engines: { node: ">=8" } + dev: true + + /is-string@1.0.7: + resolution: + { + integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==, + } + engines: { node: ">= 0.4" } + dependencies: + has-tostringtag: 1.0.0 + dev: false + + /is-symbol@1.0.4: + resolution: + { + integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==, + } + engines: { node: ">= 0.4" } + dependencies: + has-symbols: 1.0.3 + dev: false + + /is-typed-array@1.1.10: + resolution: + { + integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==, + } + engines: { node: ">= 0.4" } + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: false + + /is-typedarray@1.0.0: + resolution: + { + integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==, + } + + /is-unicode-supported@0.1.0: + resolution: + { + integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==, + } + engines: { node: ">=10" } + dev: false + + /is-weakref@1.0.2: + resolution: + { + integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==, + } + dependencies: + call-bind: 1.0.2 + dev: false + + /isexe@2.0.0: + resolution: + { + integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, + } + + /istanbul-lib-coverage@3.2.0: + resolution: + { + integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==, + } + engines: { node: ">=8" } + dev: true + + /istanbul-lib-instrument@5.2.1: + resolution: + { + integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==, + } + engines: { node: ">=8" } + dependencies: + "@babel/core": 7.21.4 + "@babel/parser": 7.21.4 + "@istanbuljs/schema": 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-report@3.0.0: + resolution: + { + integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==, + } + engines: { node: ">=8" } + dependencies: + istanbul-lib-coverage: 3.2.0 + make-dir: 3.1.0 + supports-color: 7.2.0 + dev: true + + /istanbul-lib-source-maps@4.0.1: + resolution: + { + integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==, + } + engines: { node: ">=10" } + dependencies: + debug: 4.3.4 + istanbul-lib-coverage: 3.2.0 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-reports@3.1.5: + resolution: + { + integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==, + } + engines: { node: ">=8" } + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.0 + dev: true + + /javascript-natural-sort@0.7.1: + resolution: + { + integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==, + } + dev: true + + /jest-changed-files@29.5.0: + resolution: + { + integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + execa: 5.1.1 + p-limit: 3.1.0 + dev: true + + /jest-circus@29.5.0: + resolution: + { + integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + "@jest/environment": 29.5.0 + "@jest/expect": 29.5.0 + "@jest/test-result": 29.5.0 + "@jest/types": 29.5.0 + "@types/node": 14.11.2 + chalk: 4.1.2 + co: 4.6.0 + dedent: 0.7.0 + is-generator-fn: 2.1.0 + jest-each: 29.5.0 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-runtime: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 + p-limit: 3.1.0 + pretty-format: 29.5.0 + pure-rand: 6.0.2 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-cli@29.5.0(@types/node@14.11.2): + resolution: + { + integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + "@jest/core": 29.5.0 + "@jest/test-result": 29.5.0 + "@jest/types": 29.5.0 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + import-local: 3.1.0 + jest-config: 29.5.0(@types/node@14.11.2) + jest-util: 29.5.0 + jest-validate: 29.5.0 + prompts: 2.4.2 + yargs: 17.7.2 + transitivePeerDependencies: + - "@types/node" + - supports-color + - ts-node + dev: true + + /jest-config@29.5.0(@types/node@14.11.2): + resolution: + { + integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + peerDependencies: + "@types/node": "*" + ts-node: ">=9.0.0" + peerDependenciesMeta: + "@types/node": + optional: true + ts-node: + optional: true + dependencies: + "@babel/core": 7.21.4 + "@jest/test-sequencer": 29.5.0 + "@jest/types": 29.5.0 + "@types/node": 14.11.2 + babel-jest: 29.5.0(@babel/core@7.21.4) + chalk: 4.1.2 + ci-info: 3.8.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.5.0 + jest-environment-node: 29.5.0 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-runner: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.5.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-diff@29.5.0: + resolution: + { + integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + chalk: 4.1.2 + diff-sequences: 29.4.3 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 + + /jest-docblock@29.4.3: + resolution: + { + integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + detect-newline: 3.1.0 + dev: true + + /jest-each@29.5.0: + resolution: + { + integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + "@jest/types": 29.5.0 + chalk: 4.1.2 + jest-get-type: 29.4.3 + jest-util: 29.5.0 + pretty-format: 29.5.0 + dev: true + + /jest-environment-node@29.5.0: + resolution: + { + integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + "@jest/environment": 29.5.0 + "@jest/fake-timers": 29.5.0 + "@jest/types": 29.5.0 + "@types/node": 14.11.2 + jest-mock: 29.5.0 + jest-util: 29.5.0 + dev: true + + /jest-get-type@29.4.3: + resolution: + { + integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + + /jest-haste-map@29.5.0: + resolution: + { + integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + "@jest/types": 29.5.0 + "@types/graceful-fs": 4.1.6 + "@types/node": 14.11.2 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.4.3 + jest-util: 29.5.0 + jest-worker: 29.5.0 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /jest-leak-detector@29.5.0: + resolution: + { + integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + jest-get-type: 29.4.3 + pretty-format: 29.5.0 + dev: true + + /jest-matcher-utils@29.5.0: + resolution: + { + integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + chalk: 4.1.2 + jest-diff: 29.5.0 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 + dev: true + + /jest-message-util@29.5.0: + resolution: + { + integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + "@babel/code-frame": 7.21.4 + "@jest/types": 29.5.0 + "@types/stack-utils": 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 29.5.0 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + + /jest-mock@29.5.0: + resolution: + { + integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + "@jest/types": 29.5.0 + "@types/node": 14.11.2 + jest-util: 29.5.0 + dev: true + + /jest-pnp-resolver@1.2.3(jest-resolve@29.5.0): + resolution: + { + integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==, + } + engines: { node: ">=6" } + peerDependencies: + jest-resolve: "*" + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 29.5.0 + dev: true + + /jest-regex-util@29.4.3: + resolution: + { + integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dev: true + + /jest-resolve-dependencies@29.5.0: + resolution: + { + integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + jest-regex-util: 29.4.3 + jest-snapshot: 29.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-resolve@29.5.0: + resolution: + { + integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.5.0) + jest-util: 29.5.0 + jest-validate: 29.5.0 + resolve: 1.22.2 + resolve.exports: 2.0.2 + slash: 3.0.0 + dev: true + + /jest-runner@29.5.0: + resolution: + { + integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + "@jest/console": 29.5.0 + "@jest/environment": 29.5.0 + "@jest/test-result": 29.5.0 + "@jest/transform": 29.5.0 + "@jest/types": 29.5.0 + "@types/node": 14.11.2 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.4.3 + jest-environment-node: 29.5.0 + jest-haste-map: 29.5.0 + jest-leak-detector: 29.5.0 + jest-message-util: 29.5.0 + jest-resolve: 29.5.0 + jest-runtime: 29.5.0 + jest-util: 29.5.0 + jest-watcher: 29.5.0 + jest-worker: 29.5.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-runtime@29.5.0: + resolution: + { + integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + "@jest/environment": 29.5.0 + "@jest/fake-timers": 29.5.0 + "@jest/globals": 29.5.0 + "@jest/source-map": 29.4.3 + "@jest/test-result": 29.5.0 + "@jest/transform": 29.5.0 + "@jest/types": 29.5.0 + "@types/node": 14.11.2 + chalk: 4.1.2 + cjs-module-lexer: 1.2.2 + collect-v8-coverage: 1.0.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + jest-message-util: 29.5.0 + jest-mock: 29.5.0 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-snapshot@29.5.0: + resolution: + { + integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + "@babel/core": 7.21.4 + "@babel/generator": 7.21.4 + "@babel/plugin-syntax-jsx": 7.21.4(@babel/core@7.21.4) + "@babel/plugin-syntax-typescript": 7.21.4(@babel/core@7.21.4) + "@babel/traverse": 7.21.4 + "@babel/types": 7.21.4 + "@jest/expect-utils": 29.5.0 + "@jest/transform": 29.5.0 + "@jest/types": 29.5.0 + "@types/babel__traverse": 7.18.5 + "@types/prettier": 2.7.2 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.4) + chalk: 4.1.2 + expect: 29.5.0 + graceful-fs: 4.2.11 + jest-diff: 29.5.0 + jest-get-type: 29.4.3 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + natural-compare: 1.4.0 + pretty-format: 29.5.0 + semver: 7.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-util@29.5.0: + resolution: + { + integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + "@jest/types": 29.5.0 + "@types/node": 14.11.2 + chalk: 4.1.2 + ci-info: 3.8.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + dev: true + + /jest-validate@29.5.0: + resolution: + { + integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + "@jest/types": 29.5.0 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.4.3 + leven: 3.1.0 + pretty-format: 29.5.0 + dev: true + + /jest-watcher@29.5.0: + resolution: + { + integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + "@jest/test-result": 29.5.0 + "@jest/types": 29.5.0 + "@types/node": 14.11.2 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.5.0 + string-length: 4.0.2 + dev: true + + /jest-worker@29.5.0: + resolution: + { + integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + "@types/node": 14.11.2 + jest-util: 29.5.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest@29.5.0(@types/node@14.11.2): + resolution: + { + integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + "@jest/core": 29.5.0 + "@jest/types": 29.5.0 + import-local: 3.1.0 + jest-cli: 29.5.0(@types/node@14.11.2) + transitivePeerDependencies: + - "@types/node" + - supports-color + - ts-node + dev: true + + /joycon@3.1.1: + resolution: + { + integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==, + } + engines: { node: ">=10" } + dev: true + + /js-sdsl@4.4.0: + resolution: + { + integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==, + } + dev: false + + /js-tokens@4.0.0: + resolution: + { + integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, + } + + /js-yaml@3.14.1: + resolution: + { + integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==, + } + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /js-yaml@4.1.0: + resolution: + { + integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, + } + hasBin: true + dependencies: + argparse: 2.0.1 + dev: false + + /jsesc@2.5.2: + resolution: + { + integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==, + } + engines: { node: ">=4" } + hasBin: true + dev: true + + /json-parse-better-errors@1.0.2: + resolution: + { + integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==, + } + dev: false + + /json-parse-even-better-errors@2.3.1: + resolution: + { + integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, + } + + /json-schema-traverse@0.4.1: + resolution: + { + integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, + } + + /json-schema-traverse@1.0.0: + resolution: + { + integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==, + } + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: + { + integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, + } + + /json5@1.0.2: + resolution: + { + integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==, + } + hasBin: true + dependencies: + minimist: 1.2.8 + dev: false + + /json5@2.2.3: + resolution: + { + integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, + } + engines: { node: ">=6" } + hasBin: true + dev: true + + /jsonc-parser@3.2.0: + resolution: + { + integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==, + } + dev: true + + /kind-of@6.0.3: + resolution: + { + integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==, + } + engines: { node: ">=0.10.0" } + + /kleur@3.0.3: + resolution: + { + integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==, + } + engines: { node: ">=6" } + dev: true + + /leven@3.1.0: + resolution: + { + integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==, + } + engines: { node: ">=6" } + dev: true + + /levn@0.4.1: + resolution: + { + integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, + } + engines: { node: ">= 0.8.0" } + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + /light-bolt11-decoder@3.0.0: + resolution: + { + integrity: sha512-AKvOigD2pmC8ktnn2TIqdJu0K0qk6ukUmTvHwF3JNkm8uWCqt18Ijn33A/a7gaRZ4PghJ59X+8+MXrzLKdBTmQ==, + } + dependencies: + "@scure/base": 1.1.1 + dev: false + + /lilconfig@2.1.0: + resolution: + { + integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==, + } + engines: { node: ">=10" } + dev: true + + /lines-and-columns@1.2.4: + resolution: + { + integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, + } + + /load-json-file@4.0.0: + resolution: + { + integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==, + } + engines: { node: ">=4" } + dependencies: + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + dev: false + + /load-tsconfig@0.2.5: + resolution: + { + integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dev: true + + /locate-path@5.0.0: + resolution: + { + integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, + } + engines: { node: ">=8" } + dependencies: + p-locate: 4.1.0 + + /locate-path@6.0.0: + resolution: + { + integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, + } + engines: { node: ">=10" } + dependencies: + p-locate: 5.0.0 + dev: false + + /lodash.memoize@4.1.2: + resolution: + { + integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==, + } + dev: true + + /lodash.merge@4.6.2: + resolution: + { + integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, + } + + /lodash.sortby@4.7.0: + resolution: + { + integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==, + } + dev: true + + /lodash.truncate@4.4.2: + resolution: + { + integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==, + } + dev: true + + /lodash@4.17.21: + resolution: + { + integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, + } + dev: true + + /log-symbols@4.1.0: + resolution: + { + integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==, + } + engines: { node: ">=10" } + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: false + + /lru-cache@5.1.1: + resolution: + { + integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, + } + dependencies: + yallist: 3.1.1 + dev: true + + /lru-cache@6.0.0: + resolution: + { + integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==, + } + engines: { node: ">=10" } + dependencies: + yallist: 4.0.0 + + /lunr@2.3.9: + resolution: + { + integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==, + } + dev: true + + /make-dir@3.1.0: + resolution: + { + integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==, + } + engines: { node: ">=8" } + dependencies: + semver: 6.3.0 + dev: true + + /make-error@1.3.6: + resolution: + { + integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==, + } + dev: true + + /makeerror@1.0.12: + resolution: + { + integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==, + } + dependencies: + tmpl: 1.0.5 + dev: true + + /map-obj@1.0.1: + resolution: + { + integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==, + } + engines: { node: ">=0.10.0" } + + /map-obj@4.3.0: + resolution: + { + integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==, + } + engines: { node: ">=8" } + + /marked@4.3.0: + resolution: + { + integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==, + } + engines: { node: ">= 12" } + hasBin: true + dev: true + + /memorystream@0.3.1: + resolution: + { + integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==, + } + engines: { node: ">= 0.10.0" } + dev: false + + /meow@9.0.0: + resolution: + { + integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==, + } + engines: { node: ">=10" } + dependencies: + "@types/minimist": 1.2.2 + camelcase-keys: 6.2.2 + decamelize: 1.2.0 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.18.1 + yargs-parser: 20.2.9 + + /merge-stream@2.0.0: + resolution: + { + integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, + } + dev: true + + /merge2@1.4.1: + resolution: + { + integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, + } + engines: { node: ">= 8" } + + /micromatch@4.0.5: + resolution: + { + integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==, + } + engines: { node: ">=8.6" } + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + + /mimic-fn@2.1.0: + resolution: + { + integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, + } + engines: { node: ">=6" } + dev: true + + /min-indent@1.0.1: + resolution: + { + integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==, + } + engines: { node: ">=4" } + + /minimatch@3.1.2: + resolution: + { + integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, + } + dependencies: + brace-expansion: 1.1.11 + + /minimatch@9.0.2: + resolution: + { + integrity: sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==, + } + engines: { node: ">=16 || 14 >=14.17" } + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist-options@4.1.0: + resolution: + { + integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==, + } + engines: { node: ">= 6" } + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + + /minimist@1.2.8: + resolution: + { + integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, + } + dev: false + + /ms@2.0.0: + resolution: + { + integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==, + } + dev: false + + /ms@2.1.2: + resolution: + { + integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, + } + + /ms@2.1.3: + resolution: + { + integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, + } + dev: false + + /mute-stream@0.0.8: + resolution: + { + integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==, + } + dev: true + + /mz@2.7.0: + resolution: + { + integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==, + } + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: true + + /natural-compare-lite@1.4.0: + resolution: + { + integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==, + } + dev: false + + /natural-compare@1.4.0: + resolution: + { + integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, + } + + /ncp@2.0.0: + resolution: + { + integrity: sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==, + } + hasBin: true + dev: true + + /next-tick@1.1.0: + resolution: + { + integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==, + } + dev: false + + /nice-try@1.0.5: + resolution: + { + integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==, + } + dev: false + + /node-domexception@1.0.0: + resolution: + { + integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==, + } + engines: { node: ">=10.5.0" } + dev: false + + /node-fetch@3.3.1: + resolution: + { + integrity: sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + dev: false + + /node-gyp-build@4.6.0: + resolution: + { + integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==, + } + hasBin: true + dev: false + + /node-int64@0.4.0: + resolution: + { + integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==, + } + dev: true + + /node-releases@2.0.10: + resolution: + { + integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==, + } + dev: true + + /normalize-package-data@2.5.0: + resolution: + { + integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==, + } + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.2 + semver: 5.7.1 + validate-npm-package-license: 3.0.4 + + /normalize-package-data@3.0.3: + resolution: + { + integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==, + } + engines: { node: ">=10" } + dependencies: + hosted-git-info: 4.1.0 + is-core-module: 2.12.0 + semver: 7.5.0 + validate-npm-package-license: 3.0.4 + + /normalize-path@3.0.0: + resolution: + { + integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, + } + engines: { node: ">=0.10.0" } + dev: true + + /nostr-tools@1.14.0: + resolution: + { + integrity: sha512-hwq2i1z5/DneXRE5Zu/TzQuKzVLcB+gOdfT9CeoiScvNw/2dWRGJvyTXIdF92d7NQ7nMcEwqVJPDytLpEpiiKw==, + } + dependencies: + "@noble/curves": 1.1.0 + "@noble/hashes": 1.3.1 + "@scure/base": 1.1.1 + "@scure/bip32": 1.3.1 + "@scure/bip39": 1.2.1 + dev: false + + /npm-run-all@4.1.5: + resolution: + { + integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==, + } + engines: { node: ">= 4" } + hasBin: true + dependencies: + ansi-styles: 3.2.1 + chalk: 2.4.2 + cross-spawn: 6.0.5 + memorystream: 0.3.1 + minimatch: 3.1.2 + pidtree: 0.3.1 + read-pkg: 3.0.0 + shell-quote: 1.8.1 + string.prototype.padend: 3.1.4 + dev: false + + /npm-run-path@4.0.1: + resolution: + { + integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, + } + engines: { node: ">=8" } + dependencies: + path-key: 3.1.1 + dev: true + + /object-assign@4.1.1: + resolution: + { + integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==, + } + engines: { node: ">=0.10.0" } + dev: true + + /object-inspect@1.12.3: + resolution: + { + integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==, + } + dev: false + + /object-keys@1.1.1: + resolution: + { + integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==, + } + engines: { node: ">= 0.4" } + dev: false + + /object.assign@4.1.4: + resolution: + { + integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: false + + /object.values@1.1.6: + resolution: + { + integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false + + /once@1.4.0: + resolution: + { + integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, + } + dependencies: + wrappy: 1.0.2 + + /onetime@5.1.2: + resolution: + { + integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, + } + engines: { node: ">=6" } + dependencies: + mimic-fn: 2.1.0 + dev: true + + /optionator@0.9.1: + resolution: + { + integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==, + } + engines: { node: ">= 0.8.0" } + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.3 + + /os-tmpdir@1.0.2: + resolution: + { + integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==, + } + engines: { node: ">=0.10.0" } + dev: true + + /p-limit@2.3.0: + resolution: + { + integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, + } + engines: { node: ">=6" } + dependencies: + p-try: 2.2.0 + + /p-limit@3.1.0: + resolution: + { + integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, + } + engines: { node: ">=10" } + dependencies: + yocto-queue: 0.1.0 + + /p-locate@4.1.0: + resolution: + { + integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, + } + engines: { node: ">=8" } + dependencies: + p-limit: 2.3.0 + + /p-locate@5.0.0: + resolution: + { + integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, + } + engines: { node: ">=10" } + dependencies: + p-limit: 3.1.0 + dev: false + + /p-try@2.2.0: + resolution: + { + integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, + } + engines: { node: ">=6" } + + /parent-module@1.0.1: + resolution: + { + integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, + } + engines: { node: ">=6" } + dependencies: + callsites: 3.1.0 + + /parse-json@4.0.0: + resolution: + { + integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==, + } + engines: { node: ">=4" } + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + dev: false + + /parse-json@5.2.0: + resolution: + { + integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==, + } + engines: { node: ">=8" } + dependencies: + "@babel/code-frame": 7.21.4 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + /path-exists@4.0.0: + resolution: + { + integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, + } + engines: { node: ">=8" } + + /path-is-absolute@1.0.1: + resolution: + { + integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, + } + engines: { node: ">=0.10.0" } + + /path-key@2.0.1: + resolution: + { + integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==, + } + engines: { node: ">=4" } + dev: false + + /path-key@3.1.1: + resolution: + { + integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, + } + engines: { node: ">=8" } + + /path-parse@1.0.7: + resolution: + { + integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, + } + + /path-type@3.0.0: + resolution: + { + integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==, + } + engines: { node: ">=4" } + dependencies: + pify: 3.0.0 + dev: false + + /path-type@4.0.0: + resolution: + { + integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, + } + engines: { node: ">=8" } + + /picocolors@1.0.0: + resolution: + { + integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==, + } + dev: true + + /picomatch@2.3.1: + resolution: + { + integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, + } + engines: { node: ">=8.6" } + + /pidtree@0.3.1: + resolution: + { + integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==, + } + engines: { node: ">=0.10" } + hasBin: true + dev: false + + /pify@3.0.0: + resolution: + { + integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==, + } + engines: { node: ">=4" } + dev: false + + /pirates@4.0.5: + resolution: + { + integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==, + } + engines: { node: ">= 6" } + dev: true + + /pkg-dir@4.2.0: + resolution: + { + integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==, + } + engines: { node: ">=8" } + dependencies: + find-up: 4.1.0 + dev: true + + /plur@4.0.0: + resolution: + { + integrity: sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==, + } + engines: { node: ">=10" } + dependencies: + irregular-plurals: 3.5.0 + dev: false + + /postcss-load-config@3.1.4: + resolution: + { + integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==, + } + engines: { node: ">= 10" } + peerDependencies: + postcss: ">=8.0.9" + ts-node: ">=9.0.0" + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.1.0 + yaml: 1.10.2 + dev: true + + /prelude-ls@1.2.1: + resolution: + { + integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, + } + engines: { node: ">= 0.8.0" } + + /prettier-linter-helpers@1.0.0: + resolution: + { + integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==, + } + engines: { node: ">=6.0.0" } + dependencies: + fast-diff: 1.2.0 + dev: true + + /prettier-plugin-organize-imports@3.2.2(prettier@3.0.1)(typescript@5.0.4): + resolution: + { + integrity: sha512-e97lE6odGSiHonHJMTYC0q0iLXQyw0u5z/PJpvP/3vRy6/Zi9kLBwFAbEGjDzIowpjQv8b+J04PDamoUSQbzGA==, + } + peerDependencies: + "@volar/vue-language-plugin-pug": ^1.0.4 + "@volar/vue-typescript": ^1.0.4 + prettier: ">=2.0" + typescript: ">=2.9" + peerDependenciesMeta: + "@volar/vue-language-plugin-pug": + optional: true + "@volar/vue-typescript": + optional: true + dependencies: + prettier: 3.0.1 + typescript: 5.0.4 + dev: true + + /prettier@2.8.8: + resolution: + { + integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==, + } + engines: { node: ">=10.13.0" } + hasBin: true + dev: true + + /prettier@3.0.1: + resolution: + { + integrity: sha512-fcOWSnnpCrovBsmFZIGIy9UqK2FaI7Hqax+DIO0A9UxeVoY4iweyaFjS5TavZN97Hfehph0nhsZnjlVKzEQSrQ==, + } + engines: { node: ">=14" } + hasBin: true + dev: true + + /pretty-format@29.5.0: + resolution: + { + integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + dependencies: + "@jest/schemas": 29.4.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + + /progress@2.0.3: + resolution: + { + integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==, + } + engines: { node: ">=0.4.0" } + dev: true + + /prompts@2.4.2: + resolution: + { + integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==, + } + engines: { node: ">= 6" } + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + dev: true + + /punycode@2.3.0: + resolution: + { + integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==, + } + engines: { node: ">=6" } + + /pure-rand@6.0.2: + resolution: + { + integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==, + } + dev: true + + /queue-microtask@1.2.3: + resolution: + { + integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, + } + + /quick-lru@4.0.1: + resolution: + { + integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==, + } + engines: { node: ">=8" } + + /react-is@18.2.0: + resolution: + { + integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==, + } + + /read-pkg-up@7.0.1: + resolution: + { + integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==, + } + engines: { node: ">=8" } + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + + /read-pkg@3.0.0: + resolution: + { + integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==, + } + engines: { node: ">=4" } + dependencies: + load-json-file: 4.0.0 + normalize-package-data: 2.5.0 + path-type: 3.0.0 + dev: false + + /read-pkg@5.2.0: + resolution: + { + integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==, + } + engines: { node: ">=8" } + dependencies: + "@types/normalize-package-data": 2.4.1 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + + /readdirp@3.6.0: + resolution: + { + integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, + } + engines: { node: ">=8.10.0" } + dependencies: + picomatch: 2.3.1 + dev: true + + /redent@3.0.0: + resolution: + { + integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==, + } + engines: { node: ">=8" } + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + + /regexp.prototype.flags@1.5.0: + resolution: + { + integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + functions-have-names: 1.2.3 + dev: false + + /regexpp@3.2.0: + resolution: + { + integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==, + } + engines: { node: ">=8" } + dev: true + + /require-directory@2.1.1: + resolution: + { + integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, + } + engines: { node: ">=0.10.0" } + dev: true + + /require-from-string@2.0.2: + resolution: + { + integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==, + } + engines: { node: ">=0.10.0" } + dev: true + + /resolve-cwd@3.0.0: + resolution: + { + integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==, + } + engines: { node: ">=8" } + dependencies: + resolve-from: 5.0.0 + dev: true + + /resolve-from@4.0.0: + resolution: + { + integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, + } + engines: { node: ">=4" } + + /resolve-from@5.0.0: + resolution: + { + integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==, + } + engines: { node: ">=8" } + dev: true + + /resolve.exports@2.0.2: + resolution: + { + integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==, + } + engines: { node: ">=10" } + dev: true + + /resolve@1.22.2: + resolution: + { + integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==, + } + hasBin: true + dependencies: + is-core-module: 2.12.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + /restore-cursor@3.1.0: + resolution: + { + integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==, + } + engines: { node: ">=8" } + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + + /reusify@1.0.4: + resolution: + { + integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==, + } + engines: { iojs: ">=1.0.0", node: ">=0.10.0" } + + /rimraf@3.0.2: + resolution: + { + integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==, + } + hasBin: true + dependencies: + glob: 7.2.3 + + /rollup@3.25.3: + resolution: + { + integrity: sha512-ZT279hx8gszBj9uy5FfhoG4bZx8c+0A1sbqtr7Q3KNWIizpTdDEPZbV2xcbvHsnFp4MavCQYZyzApJ+virB8Yw==, + } + engines: { node: ">=14.18.0", npm: ">=8.0.0" } + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /run-async@2.4.1: + resolution: + { + integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==, + } + engines: { node: ">=0.12.0" } + dev: true + + /run-parallel@1.2.0: + resolution: + { + integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, + } + dependencies: + queue-microtask: 1.2.3 + + /rxjs@6.6.7: + resolution: + { + integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==, + } + engines: { npm: ">=2.0.0" } + dependencies: + tslib: 1.14.1 + dev: true + + /safe-regex-test@1.0.0: + resolution: + { + integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==, + } + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + is-regex: 1.1.4 + dev: false + + /safer-buffer@2.1.2: + resolution: + { + integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, + } + dev: true + + /semver@5.7.1: + resolution: + { + integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==, + } + hasBin: true + + /semver@6.3.0: + resolution: + { + integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==, + } + hasBin: true + + /semver@7.5.0: + resolution: + { + integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==, + } + engines: { node: ">=10" } + hasBin: true + dependencies: + lru-cache: 6.0.0 + + /shebang-command@1.2.0: + resolution: + { + integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==, + } + engines: { node: ">=0.10.0" } + dependencies: + shebang-regex: 1.0.0 + dev: false + + /shebang-command@2.0.0: + resolution: + { + integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, + } + engines: { node: ">=8" } + dependencies: + shebang-regex: 3.0.0 + + /shebang-regex@1.0.0: + resolution: + { + integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==, + } + engines: { node: ">=0.10.0" } + dev: false + + /shebang-regex@3.0.0: + resolution: + { + integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, + } + engines: { node: ">=8" } + + /shell-quote@1.8.1: + resolution: + { + integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==, + } + dev: false + + /shiki@0.14.3: + resolution: + { + integrity: sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==, + } + dependencies: + ansi-sequence-parser: 1.1.0 + jsonc-parser: 3.2.0 + vscode-oniguruma: 1.7.0 + vscode-textmate: 8.0.0 + dev: true + + /side-channel@1.0.4: + resolution: + { + integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==, + } + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + object-inspect: 1.12.3 + dev: false + + /signal-exit@3.0.7: + resolution: + { + integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, + } + dev: true + + /sisteransi@1.0.5: + resolution: + { + integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==, + } + dev: true + + /slash@3.0.0: + resolution: + { + integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, + } + engines: { node: ">=8" } + + /slice-ansi@4.0.0: + resolution: + { + integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==, + } + engines: { node: ">=10" } + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /source-map-support@0.5.13: + resolution: + { + integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==, + } + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map@0.5.7: + resolution: + { + integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==, + } + engines: { node: ">=0.10.0" } + dev: true + + /source-map@0.6.1: + resolution: + { + integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, + } + engines: { node: ">=0.10.0" } + dev: true + + /source-map@0.8.0-beta.0: + resolution: + { + integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==, + } + engines: { node: ">= 8" } + dependencies: + whatwg-url: 7.1.0 + dev: true + + /spdx-correct@3.2.0: + resolution: + { + integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==, + } + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.13 + + /spdx-exceptions@2.3.0: + resolution: + { + integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==, + } + + /spdx-expression-parse@3.0.1: + resolution: + { + integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==, + } + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.13 + + /spdx-license-ids@3.0.13: + resolution: + { + integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==, + } + + /sprintf-js@1.0.3: + resolution: + { + integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==, + } + dev: true + + /stack-utils@2.0.6: + resolution: + { + integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==, + } + engines: { node: ">=10" } + dependencies: + escape-string-regexp: 2.0.0 + dev: true + + /string-length@4.0.2: + resolution: + { + integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==, + } + engines: { node: ">=10" } + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + dev: true + + /string-width@4.2.3: + resolution: + { + integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, + } + engines: { node: ">=8" } + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + /string.prototype.padend@3.1.4: + resolution: + { + integrity: sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false + + /string.prototype.trim@1.2.7: + resolution: + { + integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false + + /string.prototype.trimend@1.0.6: + resolution: + { + integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==, + } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false + + /string.prototype.trimstart@1.0.6: + resolution: + { + integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==, + } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false + + /strip-ansi@6.0.1: + resolution: + { + integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, + } + engines: { node: ">=8" } + dependencies: + ansi-regex: 5.0.1 + + /strip-bom@3.0.0: + resolution: + { + integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, + } + engines: { node: ">=4" } + dev: false + + /strip-bom@4.0.0: + resolution: + { + integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==, + } + engines: { node: ">=8" } + dev: true + + /strip-final-newline@2.0.0: + resolution: + { + integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, + } + engines: { node: ">=6" } + dev: true + + /strip-indent@3.0.0: + resolution: + { + integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==, + } + engines: { node: ">=8" } + dependencies: + min-indent: 1.0.1 + + /strip-json-comments@3.1.1: + resolution: + { + integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, + } + engines: { node: ">=8" } + + /sucrase@3.32.0: + resolution: + { + integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==, + } + engines: { node: ">=8" } + hasBin: true + dependencies: + "@jridgewell/gen-mapping": 0.3.3 + commander: 4.1.1 + glob: 7.1.6 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.5 + ts-interface-checker: 0.1.13 + dev: true + + /supports-color@5.5.0: + resolution: + { + integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==, + } + engines: { node: ">=4" } + dependencies: + has-flag: 3.0.0 + + /supports-color@7.2.0: + resolution: + { + integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, + } + engines: { node: ">=8" } + dependencies: + has-flag: 4.0.0 + + /supports-color@8.1.1: + resolution: + { + integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, + } + engines: { node: ">=10" } + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-hyperlinks@2.3.0: + resolution: + { + integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==, + } + engines: { node: ">=8" } + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + dev: false + + /supports-preserve-symlinks-flag@1.0.0: + resolution: + { + integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, + } + engines: { node: ">= 0.4" } + + /table@6.8.1: + resolution: + { + integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==, + } + engines: { node: ">=10.0.0" } + dependencies: + ajv: 8.12.0 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /test-exclude@6.0.0: + resolution: + { + integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==, + } + engines: { node: ">=8" } + dependencies: + "@istanbuljs/schema": 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + dev: true + + /text-table@0.2.0: + resolution: + { + integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==, + } + + /thenify-all@1.6.0: + resolution: + { + integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==, + } + engines: { node: ">=0.8" } + dependencies: + thenify: 3.3.1 + dev: true + + /thenify@3.3.1: + resolution: + { + integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==, + } + dependencies: + any-promise: 1.3.0 + dev: true + + /through@2.3.8: + resolution: + { + integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==, + } + dev: true + + /tmp@0.0.33: + resolution: + { + integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==, + } + engines: { node: ">=0.6.0" } + dependencies: + os-tmpdir: 1.0.2 + dev: true + + /tmpl@1.0.5: + resolution: + { + integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==, + } + dev: true + + /to-fast-properties@2.0.0: + resolution: + { + integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==, + } + engines: { node: ">=4" } + dev: true + + /to-regex-range@5.0.1: + resolution: + { + integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, + } + engines: { node: ">=8.0" } + dependencies: + is-number: 7.0.0 + + /tr46@1.0.1: + resolution: + { + integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==, + } + dependencies: + punycode: 2.3.0 + dev: true + + /tree-kill@1.2.2: + resolution: + { + integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==, + } + hasBin: true + dev: true + + /trim-newlines@3.0.1: + resolution: + { + integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==, + } + engines: { node: ">=8" } + + /ts-interface-checker@0.1.13: + resolution: + { + integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==, + } + dev: true + + /ts-jest@29.1.0(@babel/core@7.21.4)(esbuild@0.17.15)(jest@29.5.0)(typescript@5.0.4): + resolution: + { + integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + hasBin: true + peerDependencies: + "@babel/core": ">=7.0.0-beta.0 <8" + "@jest/types": ^29.0.0 + babel-jest: ^29.0.0 + esbuild: "*" + jest: ^29.0.0 + typescript: ">=4.3 <6" + peerDependenciesMeta: + "@babel/core": + optional: true + "@jest/types": + optional: true + babel-jest: + optional: true + esbuild: + optional: true + dependencies: + "@babel/core": 7.21.4 + bs-logger: 0.2.6 + esbuild: 0.17.15 + fast-json-stable-stringify: 2.1.0 + jest: 29.5.0(@types/node@14.11.2) + jest-util: 29.5.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.5.0 + typescript: 5.0.4 + yargs-parser: 21.1.1 + dev: true + + /tsconfig-paths@3.14.2: + resolution: + { + integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==, + } + dependencies: + "@types/json5": 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: false + + /tsd@0.28.1: + resolution: + { + integrity: sha512-FeYrfJ05QgEMW/qOukNCr4fAJHww4SaKnivAXRv4g5kj4FeLpNV7zH4dorzB9zAfVX4wmA7zWu/wQf7kkcvfbw==, + } + engines: { node: ">=14.16" } + hasBin: true + dependencies: + "@tsd/typescript": 5.0.4 + eslint-formatter-pretty: 4.1.0 + globby: 11.1.0 + jest-diff: 29.5.0 + meow: 9.0.0 + path-exists: 4.0.0 + read-pkg-up: 7.0.1 + dev: false + + /tslib@1.14.1: + resolution: + { + integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==, + } + + /tstl@2.5.13: + resolution: + { + integrity: sha512-h9wayHHFI5+yqt8iau0vqH96cTNhezhZ/Fk/hrIdpfkiMu3lg9nzyvMfs5bIdX51IVzZO6DudLqhkL/rVXpT6g==, + } + dev: false + + /tsup@6.7.0(typescript@5.0.4): + resolution: + { + integrity: sha512-L3o8hGkaHnu5TdJns+mCqFsDBo83bJ44rlK7e6VdanIvpea4ArPcU3swWGsLVbXak1PqQx/V+SSmFPujBK+zEQ==, + } + engines: { node: ">=14.18" } + hasBin: true + peerDependencies: + "@swc/core": ^1 + postcss: ^8.4.12 + typescript: ">=4.1.0" + peerDependenciesMeta: + "@swc/core": + optional: true + postcss: + optional: true + typescript: + optional: true + dependencies: + bundle-require: 4.0.1(esbuild@0.17.15) + cac: 6.7.14 + chokidar: 3.5.3 + debug: 4.3.4 + esbuild: 0.17.15 + execa: 5.1.1 + globby: 11.1.0 + joycon: 3.1.1 + postcss-load-config: 3.1.4 + resolve-from: 5.0.0 + rollup: 3.25.3 + source-map: 0.8.0-beta.0 + sucrase: 3.32.0 + tree-kill: 1.2.2 + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + + /tsutils@3.21.0(typescript@5.0.4): + resolution: + { + integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==, + } + engines: { node: ">= 6" } + peerDependencies: + typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + dependencies: + tslib: 1.14.1 + typescript: 5.0.4 + + /type-check@0.4.0: + resolution: + { + integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==, + } + engines: { node: ">= 0.8.0" } + dependencies: + prelude-ls: 1.2.1 + + /type-detect@4.0.8: + resolution: + { + integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==, + } + engines: { node: ">=4" } + dev: true + + /type-fest@0.18.1: + resolution: + { + integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==, + } + engines: { node: ">=10" } + + /type-fest@0.20.2: + resolution: + { + integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==, + } + engines: { node: ">=10" } + + /type-fest@0.21.3: + resolution: + { + integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==, + } + engines: { node: ">=10" } + + /type-fest@0.6.0: + resolution: + { + integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==, + } + engines: { node: ">=8" } + + /type-fest@0.8.1: + resolution: + { + integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==, + } + engines: { node: ">=8" } + + /type@1.2.0: + resolution: + { + integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==, + } + dev: false + + /type@2.7.2: + resolution: + { + integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==, + } + dev: false + + /typed-array-length@1.0.4: + resolution: + { + integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==, + } + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + is-typed-array: 1.1.10 + dev: false + + /typedarray-to-buffer@3.1.5: + resolution: + { + integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==, + } + dependencies: + is-typedarray: 1.0.0 + + /typedoc-plugin-rename-defaults@0.6.5(typedoc@0.24.8): + resolution: + { + integrity: sha512-DwkgwRMxgu3UrDR3VUAdnF9jYzM6p7rw6UcVIh4MD7yjEmFDR8WWyOlk6oYgELmRYHxTDx0f0GK6iSgoxSh/Qw==, + } + peerDependencies: + typedoc: 0.22.x || 0.23.x || 0.24.x + dependencies: + typedoc: 0.24.8(typescript@5.0.4) + dev: true + + /typedoc@0.24.8(typescript@5.0.4): + resolution: + { + integrity: sha512-ahJ6Cpcvxwaxfu4KtjA8qZNqS43wYt6JL27wYiIgl1vd38WW/KWX11YuAeZhuz9v+ttrutSsgK+XO1CjL1kA3w==, + } + engines: { node: ">= 14.14" } + hasBin: true + peerDependencies: + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x + dependencies: + lunr: 2.3.9 + marked: 4.3.0 + minimatch: 9.0.2 + shiki: 0.14.3 + typescript: 5.0.4 + dev: true + + /typescript@5.0.4: + resolution: + { + integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==, + } + engines: { node: ">=12.20" } + hasBin: true + + /unbox-primitive@1.0.2: + resolution: + { + integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==, + } + dependencies: + call-bind: 1.0.2 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: false + + /update-browserslist-db@1.0.11(browserslist@4.21.5): + resolution: + { + integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==, + } + hasBin: true + peerDependencies: + browserslist: ">= 4.21.0" + dependencies: + browserslist: 4.21.5 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + + /uri-js@4.4.1: + resolution: + { + integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, + } + dependencies: + punycode: 2.3.0 + + /utf-8-validate@5.0.10: + resolution: + { + integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==, + } + engines: { node: ">=6.14.2" } + requiresBuild: true + dependencies: + node-gyp-build: 4.6.0 + dev: false + + /utf8-buffer@1.0.0: + resolution: + { + integrity: sha512-ueuhzvWnp5JU5CiGSY4WdKbiN/PO2AZ/lpeLiz2l38qwdLy/cW40XobgyuIWucNyum0B33bVB0owjFCeGBSLqg==, + } + engines: { node: ">=8" } + dev: false + + /v8-compile-cache@2.3.0: + resolution: + { + integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==, + } + dev: true + + /v8-to-istanbul@9.1.0: + resolution: + { + integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==, + } + engines: { node: ">=10.12.0" } + dependencies: + "@jridgewell/trace-mapping": 0.3.18 + "@types/istanbul-lib-coverage": 2.0.4 + convert-source-map: 1.9.0 + dev: true + + /validate-npm-package-license@3.0.4: + resolution: + { + integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==, + } + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + /vscode-oniguruma@1.7.0: + resolution: + { + integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==, + } + dev: true + + /vscode-textmate@8.0.0: + resolution: + { + integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==, + } + dev: true + + /walker@1.0.8: + resolution: + { + integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==, + } + dependencies: + makeerror: 1.0.12 + dev: true + + /web-streams-polyfill@3.2.1: + resolution: + { + integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==, + } + engines: { node: ">= 8" } + dev: false + + /webidl-conversions@4.0.2: + resolution: + { + integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==, + } + dev: true + + /websocket-polyfill@0.0.3: + resolution: + { + integrity: sha512-pF3kR8Uaoau78MpUmFfzbIRxXj9PeQrCuPepGE6JIsfsJ/o/iXr07Q2iQNzKSSblQJ0FiGWlS64N4pVSm+O3Dg==, + } + dependencies: + tstl: 2.5.13 + websocket: 1.0.34 + transitivePeerDependencies: + - supports-color + dev: false + + /websocket@1.0.34: + resolution: + { + integrity: sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==, + } + engines: { node: ">=4.0.0" } + dependencies: + bufferutil: 4.0.7 + debug: 2.6.9 + es5-ext: 0.10.62 + typedarray-to-buffer: 3.1.5 + utf-8-validate: 5.0.10 + yaeti: 0.0.6 + transitivePeerDependencies: + - supports-color + dev: false + + /whatwg-url@7.1.0: + resolution: + { + integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==, + } + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + dev: true + + /which-boxed-primitive@1.0.2: + resolution: + { + integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==, + } + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: false + + /which-typed-array@1.1.9: + resolution: + { + integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==, + } + engines: { node: ">= 0.4" } + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + is-typed-array: 1.1.10 + dev: false + + /which@1.3.1: + resolution: + { + integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==, + } + hasBin: true + dependencies: + isexe: 2.0.0 + dev: false + + /which@2.0.2: + resolution: + { + integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, + } + engines: { node: ">= 8" } + hasBin: true + dependencies: + isexe: 2.0.0 + + /word-wrap@1.2.3: + resolution: + { + integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==, + } + engines: { node: ">=0.10.0" } + + /wrap-ansi@7.0.0: + resolution: + { + integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, + } + engines: { node: ">=10" } + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrappy@1.0.2: + resolution: + { + integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, + } + + /write-file-atomic@3.0.3: + resolution: + { + integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==, + } + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + dev: true + + /write-file-atomic@4.0.2: + resolution: + { + integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==, + } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: true + + /y18n@5.0.8: + resolution: + { + integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, + } + engines: { node: ">=10" } + dev: true + + /yaeti@0.0.6: + resolution: + { + integrity: sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==, + } + engines: { node: ">=0.10.32" } + dev: false + + /yallist@3.1.1: + resolution: + { + integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, + } + dev: true + + /yallist@4.0.0: + resolution: + { + integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==, + } + + /yaml@1.10.2: + resolution: + { + integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==, + } + engines: { node: ">= 6" } + dev: true + + /yargs-parser@20.2.9: + resolution: + { + integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==, + } + engines: { node: ">=10" } + + /yargs-parser@21.1.1: + resolution: + { + integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, + } + engines: { node: ">=12" } + dev: true + + /yargs@17.7.2: + resolution: + { + integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==, + } + engines: { node: ">=12" } + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yocto-queue@0.1.0: + resolution: + { + integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, + } + engines: { node: ">=10" } diff --git a/src/events/content-tagger.test.ts b/src/events/content-tagger.test.ts index 9b9bf9f2..35682a1c 100644 --- a/src/events/content-tagger.test.ts +++ b/src/events/content-tagger.test.ts @@ -7,18 +7,22 @@ describe("generateContentTags", () => { "This is a sample content with @npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft and @note1d2mheza0d5z5yycucu94nw37e6gyl4vwl6gavyku86rshkhexq6q30s0g7 tags."; const tags: NDKTag[] = []; - const { content: processedContent, tags: processedTags } = generateContentTags( - content, - tags - ); + const { content: processedContent, tags: processedTags } = + generateContentTags(content, tags); expect(processedContent).toEqual( "This is a sample content with nostr:npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft and nostr:note1d2mheza0d5z5yycucu94nw37e6gyl4vwl6gavyku86rshkhexq6q30s0g7 tags." ); expect(processedTags.length).toEqual(2); expect(processedTags).toEqual([ - ["p", "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52"], - ["e", "6ab77c8baf6d0542131cc70b59ba3ece904fd58efe91d612dc3e870bdaf93034"] + [ + "p", + "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52", + ], + [ + "e", + "6ab77c8baf6d0542131cc70b59ba3ece904fd58efe91d612dc3e870bdaf93034", + ], ]); }); @@ -26,10 +30,8 @@ describe("generateContentTags", () => { const content = "This is a sample content with an @invalidTag."; const tags: NDKTag[] = []; - const { content: processedContent, tags: processedTags } = generateContentTags( - content, - tags - ); + const { content: processedContent, tags: processedTags } = + generateContentTags(content, tags); expect(processedContent).toEqual(content); expect(processedTags.length).toEqual(0); @@ -40,10 +42,8 @@ describe("generateContentTags", () => { "This is a sample content with @npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft and @note1d2mheza0d5z5yycucu94nw37e6gyl4vwl6gavyku86rshkhexq6q30s0g7 tags."; const tags: NDKTag[] = [["p", "existing_p"]]; - const { content: processedContent, tags: processedTags } = generateContentTags( - content, - tags - ); + const { content: processedContent, tags: processedTags } = + generateContentTags(content, tags); expect(processedContent).toEqual( "This is a sample content with nostr:npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft and nostr:note1d2mheza0d5z5yycucu94nw37e6gyl4vwl6gavyku86rshkhexq6q30s0g7 tags." @@ -51,21 +51,34 @@ describe("generateContentTags", () => { expect(processedTags.length).toEqual(3); expect(processedTags).toEqual([ ["p", "existing_p"], - ["p", "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52"], - ["e", "6ab77c8baf6d0542131cc70b59ba3ece904fd58efe91d612dc3e870bdaf93034"] + [ + "p", + "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52", + ], + [ + "e", + "6ab77c8baf6d0542131cc70b59ba3ece904fd58efe91d612dc3e870bdaf93034", + ], ]); }); - it("does not replace an event without a nostr: or @ prefix", async() => { - const content = "note13jgf85r2yxjmww8f6gweque5g388agfztrppmgenur7zvh8e929s4cptur " + + it("does not replace an event without a nostr: or @ prefix", async () => { + const content = + "note13jgf85r2yxjmww8f6gweque5g388agfztrppmgenur7zvh8e929s4cptur " + "@note13jgf85r2yxjmww8f6gweque5g388agfztrppmgenur7zvh8e929s4cptur"; - const { content: processedContent, tags: processedTags } = generateContentTags( content, []); + const { content: processedContent, tags: processedTags } = + generateContentTags(content, []); - expect(processedContent).toEqual("note13jgf85r2yxjmww8f6gweque5g388agfztrppmgenur7zvh8e929s4cptur " + - "nostr:note13jgf85r2yxjmww8f6gweque5g388agfztrppmgenur7zvh8e929s4cptur"); + expect(processedContent).toEqual( + "note13jgf85r2yxjmww8f6gweque5g388agfztrppmgenur7zvh8e929s4cptur " + + "nostr:note13jgf85r2yxjmww8f6gweque5g388agfztrppmgenur7zvh8e929s4cptur" + ); expect(processedTags).toEqual([ - [ "e", "8c9093d06a21a5b738e9d21d907334444e7ea12258c21da333e0fc265cf92a8b" ] + [ + "e", + "8c9093d06a21a5b738e9d21d907334444e7ea12258c21da333e0fc265cf92a8b", + ], ]); }); }); diff --git a/src/events/index.test.ts b/src/events/index.test.ts index fcf430e8..6fb89376 100644 --- a/src/events/index.test.ts +++ b/src/events/index.test.ts @@ -8,8 +8,12 @@ describe("NDKEvent", () => { beforeEach(() => { ndk = new NDK(); - user1 = new NDKUser({ npub: 'npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft' }); - user2 = new NDKUser({ npub: 'npub12262qa4uhw7u8gdwlgmntqtv7aye8vdcmvszkqwgs0zchel6mz7s6cgrkj' }); + user1 = new NDKUser({ + npub: "npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft", + }); + user2 = new NDKUser({ + npub: "npub12262qa4uhw7u8gdwlgmntqtv7aye8vdcmvszkqwgs0zchel6mz7s6cgrkj", + }); event = new NDKEvent(ndk); event.author = user1; }); @@ -17,52 +21,69 @@ describe("NDKEvent", () => { describe("tag", () => { it("tags a user without a marker", () => { event.tag(user2); - expect(event.tags).toEqual([ ["p", user2.hexpubkey()] ]); + expect(event.tags).toEqual([["p", user2.hexpubkey()]]); }); it("tags a user with a marker", () => { event.tag(user2, "author"); - expect(event.tags).toEqual([ ["p", user2.hexpubkey(), "author" ] ]); + expect(event.tags).toEqual([["p", user2.hexpubkey(), "author"]]); }); it("tags an event without a marker", () => { - const otherEvent = new NDKEvent(ndk, { id: '123', kind: 1} as NostrEvent); + const otherEvent = new NDKEvent(ndk, { + id: "123", + kind: 1, + } as NostrEvent); otherEvent.author = user1; event.tag(otherEvent); - expect(event.tags).toEqual([ ["e", otherEvent.id] ]); + expect(event.tags).toEqual([["e", otherEvent.id]]); }); it("tags an event with a marker", () => { - const otherEvent = new NDKEvent(ndk, { id: '123', kind: 1} as NostrEvent); + const otherEvent = new NDKEvent(ndk, { + id: "123", + kind: 1, + } as NostrEvent); otherEvent.author = user1; event.tag(otherEvent, "marker"); - expect(event.tags).toEqual([ ["e", otherEvent.id, "marker"] ]); + expect(event.tags).toEqual([["e", otherEvent.id, "marker"]]); }); it("tags an event author when it's different from the signing user", () => { const otherEvent = new NDKEvent(ndk, { kind: 1 } as NostrEvent); otherEvent.author = user2; event.tag(otherEvent); - expect(event.tags).toEqual([ ["e", otherEvent.id], ["p", user2.hexpubkey()] ]); + expect(event.tags).toEqual([ + ["e", otherEvent.id], + ["p", user2.hexpubkey()], + ]); }); it("does not tag an event author when it's the same as the signing user", () => { const otherEvent = new NDKEvent(ndk, { kind: 1 } as NostrEvent); otherEvent.author = user1; event.tag(otherEvent); - expect(event.tags).toEqual([ ["e", otherEvent.id] ]); + expect(event.tags).toEqual([["e", otherEvent.id]]); }); }); describe("fetchEvents", () => { it("correctly handles a relay sending old replaced events", async () => { - const eventData = { kind: 300001, tags: [["d", ""]], content: "", pubkey: "" }; + const eventData = { + kind: 300001, + tags: [["d", ""]], + content: "", + pubkey: "", + }; const event1 = new NDKEvent(ndk, { ...eventData, - created_at: Date.now() / 1000 - 3600 + created_at: Date.now() / 1000 - 3600, + }); + const event2 = new NDKEvent(ndk, { + ...eventData, + created_at: Date.now() / 1000, }); - const event2 = new NDKEvent(ndk, { ...eventData, created_at: Date.now() / 1000 }); ndk.subscribe = jest.fn((filter, opts?): NDKSubscription => { const sub = new NDKSubscription(ndk, filter, opts); @@ -104,7 +125,8 @@ describe("NDKEvent", () => { const mentionTag = nostrEvent.tags.find( (t) => t[0] === "p" && - t[1] === "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52" + t[1] === + "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52" ); expect(mentionTag).toBeTruthy(); }); @@ -118,7 +140,7 @@ describe("NDKEvent", () => { content: "", kind: 30000, pubkey: "pubkey", - tags: [["d", "d-code"]] + tags: [["d", "d-code"]], }); const event2 = new NDKEvent(ndk, { @@ -127,7 +149,7 @@ describe("NDKEvent", () => { tags: [], kind: 1, pubkey: "pubkey", - id: "eventid" + id: "eventid", }); expect(event1.tagReference()).toEqual(["a", "30000:pubkey:d-code"]); diff --git a/src/events/index.ts b/src/events/index.ts index 41271903..4d2d3323 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -70,7 +70,7 @@ export default class NDKEvent extends EventEmitter { kind: this.kind, pubkey: this.pubkey, id: this.id, - sig: this.sig + sig: this.sig, } as NostrEvent; } @@ -121,7 +121,8 @@ export default class NDKEvent extends EventEmitter { // tag p-tags in the event if they are not the same as the user signing this event for (const pTag of userOrEvent.getMatchingTags("p")) { if (pTag[1] === this.pubkey) continue; - if (this.tags.find((t) => t[0] === "p" && t[1] === pTag[1])) continue; + if (this.tags.find((t) => t[0] === "p" && t[1] === pTag[1])) + continue; this.tags.push(["p", pTag[1]]); } @@ -205,6 +206,7 @@ export default class NDKEvent extends EventEmitter { if (!signer) { this.ndk?.assertSigner(); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion signer = this.ndk!.signer!; } @@ -232,7 +234,10 @@ export default class NDKEvent extends EventEmitter { timeoutMs?: number ): Promise> { if (!this.sig) await this.sign(); - if (!this.ndk) throw new Error("NDKEvent must be associated with an NDK instance to publish"); + if (!this.ndk) + throw new Error( + "NDKEvent must be associated with an NDK instance to publish" + ); return this.ndk.publish(this, relaySet, timeoutMs); } @@ -255,7 +260,9 @@ export default class NDKEvent extends EventEmitter { const dTag = this.getMatchingTags("d")[0]; // generate a string of 32 random bytes if (!dTag) { - const str = [...Array(16)].map(() => Math.random().toString(36)[2]).join(""); + const str = [...Array(16)] + .map(() => Math.random().toString(36)[2]) + .join(""); tags.push(["d", str]); } } @@ -340,17 +347,25 @@ export default class NDKEvent extends EventEmitter { * @param comment A comment to add to the zap request * @param extraTags Extra tags to add to the zap request */ - async zap(amount: number, comment?: string, extraTags?: NDKTag[]): Promise { + async zap( + amount: number, + comment?: string, + extraTags?: NDKTag[] + ): Promise { if (!this.ndk) throw new Error("No NDK instance found"); this.ndk.assertSigner(); const zap = new Zap({ ndk: this.ndk, - zappedEvent: this + zappedEvent: this, }); - const paymentRequest = await zap.createZapRequest(amount, comment, extraTags); + const paymentRequest = await zap.createZapRequest( + amount, + comment, + extraTags + ); // await zap.publish(amount); return paymentRequest; @@ -369,7 +384,7 @@ export default class NDKEvent extends EventEmitter { const e = new NDKEvent(this.ndk, { kind: NDKKind.EventDeletion, - content: reason || "" + content: reason || "", } as NostrEvent); e.tag(this); await e.publish(); diff --git a/src/events/kinds/article.ts b/src/events/kinds/article.ts index 8c0a5b74..d11d43a4 100644 --- a/src/events/kinds/article.ts +++ b/src/events/kinds/article.ts @@ -1,6 +1,6 @@ -import NDK from '../../index.js'; -import { ContentTag, type NostrEvent } from '../index.js'; -import NDKEvent from '../index.js'; +import NDK from "../../index.js"; +import { ContentTag, type NostrEvent } from "../index.js"; +import NDKEvent from "../index.js"; import { NDKKind } from "./index.js"; /** @@ -28,7 +28,7 @@ class NDKArticle extends NDKEvent { * @returns {string | undefined} - The article title if available, otherwise undefined. */ get title(): string | undefined { - return this.tagValue('title'); + return this.tagValue("title"); } /** @@ -38,9 +38,9 @@ class NDKArticle extends NDKEvent { */ set title(title: string | undefined) { if (title) { - this.tags.push(['title', title]); + this.tags.push(["title", title]); } else { - this.removeTag('title'); + this.removeTag("title"); } } @@ -50,7 +50,7 @@ class NDKArticle extends NDKEvent { * @returns {number | undefined} - The Unix timestamp of when the article was published or undefined. */ get published_at(): number | undefined { - const tag = this.tagValue('published_at'); + const tag = this.tagValue("published_at"); if (tag) { return parseInt(tag); } @@ -63,10 +63,10 @@ class NDKArticle extends NDKEvent { * @param {number | undefined} timestamp - The Unix timestamp to set for the article's publication date. */ set published_at(timestamp: number | undefined) { - this.removeTag('published_at'); // Removes any existing 'published_at' tag. + this.removeTag("published_at"); // Removes any existing "published_at" tag. if (timestamp !== undefined) { - this.tags.push(['published_at', timestamp.toString()]); + this.tags.push(["published_at", timestamp.toString()]); } } @@ -94,7 +94,7 @@ class NDKArticle extends NDKEvent { * @returns {string | undefined} - The article's URL if available, otherwise undefined. */ get url(): string | undefined { - return this.tagValue('url'); + return this.tagValue("url"); } /** @@ -104,11 +104,11 @@ class NDKArticle extends NDKEvent { */ set url(url: string | undefined) { if (url) { - this.tags.push(['url', url]); + this.tags.push(["url", url]); } else { - this.removeTag('url'); + this.removeTag("url"); } } } -export default NDKArticle; \ No newline at end of file +export default NDKArticle; diff --git a/src/events/kinds/dvm/NDKDVMJobResult.ts b/src/events/kinds/dvm/NDKDVMJobResult.ts index 22f8027d..5c3273bc 100644 --- a/src/events/kinds/dvm/NDKDVMJobResult.ts +++ b/src/events/kinds/dvm/NDKDVMJobResult.ts @@ -1,6 +1,6 @@ -import { NDKKind } from "../index.js"; -import NDKEvent, { NostrEvent } from "../../index.js"; import NDK from "../../../index.js"; +import NDKEvent, { NostrEvent } from "../../index.js"; +import { NDKKind } from "../index.js"; /** * This event is published by Data Vending Machines when @@ -33,30 +33,28 @@ export class NDKDVMJobResult extends NDKEvent { } set status(status: string | undefined) { - this.removeTag('status'); + this.removeTag("status"); if (status !== undefined) { - this.tags.push(['status', status]); + this.tags.push(["status", status]); } } get status(): string | undefined { - return this.tagValue('status'); + return this.tagValue("status"); } set jobRequest(event: NDKEvent | undefined) { - this.removeTag('request'); + this.removeTag("request"); if (event) { - this.tags.push([ - 'request', JSON.stringify(event.rawEvent()) - ]); + this.tags.push(["request", JSON.stringify(event.rawEvent())]); this.tag(event); } } get jobRequest(): NDKEvent | undefined { - const tag = this.tagValue('request'); + const tag = this.tagValue("request"); if (tag === undefined) { return undefined; @@ -64,4 +62,4 @@ export class NDKDVMJobResult extends NDKEvent { return new NDKEvent(this.ndk, JSON.parse(tag)); } -} \ No newline at end of file +} diff --git a/src/events/kinds/dvm/NDKDVMRequest.ts b/src/events/kinds/dvm/NDKDVMRequest.ts index 1aeea911..548e4466 100644 --- a/src/events/kinds/dvm/NDKDVMRequest.ts +++ b/src/events/kinds/dvm/NDKDVMRequest.ts @@ -10,10 +10,7 @@ export class NDKDVMRequest extends NDKEvent { super(ndk, event); if (ndk) { - this.tags.push([ - 'relays', - ...ndk.pool.urls() - ]); + this.tags.push(["relays", ...ndk.pool.urls()]); } } @@ -33,14 +30,14 @@ export class NDKDVMRequest extends NDKEvent { set bid(msatAmount: number | undefined) { if (msatAmount === undefined) { - this.removeTag('bid'); + this.removeTag("bid"); } else { - this.tags.push(['bid', msatAmount.toString()]); + this.tags.push(["bid", msatAmount.toString()]); } } get bid(): number | undefined { - const v = this.tagValue('bid'); + const v = this.tagValue("bid"); if (v === undefined) return undefined; @@ -52,27 +49,27 @@ export class NDKDVMRequest extends NDKEvent { * @param args The arguments to the input */ addInput(...args: string[]): void { - this.tags.push(['i', ...args]); + this.tags.push(["i", ...args]); } /** * Adds a new parameter to the job */ addParam(...args: string[]): void { - this.tags.push(['param', ...args]); + this.tags.push(["param", ...args]); } set output(output: string | string[] | undefined) { if (output === undefined) { - this.removeTag('output'); + this.removeTag("output"); } else { - if (typeof output === 'string') output = [output]; - this.tags.push(['output', ...output]); + if (typeof output === "string") output = [output]; + this.tags.push(["output", ...output]); } } get output(): string[] | undefined { - const outputTag = this.getMatchingTags('output')[0]; + const outputTag = this.getMatchingTags("output")[0]; return outputTag ? outputTag.slice(1) : undefined; } -} \ No newline at end of file +} diff --git a/src/events/kinds/dvm/NDKTranscriptionDVM.ts b/src/events/kinds/dvm/NDKTranscriptionDVM.ts index a3c46030..4e6ad143 100644 --- a/src/events/kinds/dvm/NDKTranscriptionDVM.ts +++ b/src/events/kinds/dvm/NDKTranscriptionDVM.ts @@ -22,7 +22,7 @@ export class NDKTranscriptionDVM extends NDKDVMRequest { * Returns the original source of the transcription */ get url(): string | undefined { - const inputTags = this.getMatchingTags('i'); + const inputTags = this.getMatchingTags("i"); if (inputTags.length !== 1) { return undefined; @@ -35,17 +35,17 @@ export class NDKTranscriptionDVM extends NDKDVMRequest { * Getter for the title tag */ get title(): string | undefined { - return this.tagValue('title'); + return this.tagValue("title"); } /** * Setter for the title tag */ set title(value: string | undefined) { - this.removeTag('title'); + this.removeTag("title"); if (value) { - this.tags.push(['title', value]); + this.tags.push(["title", value]); } } @@ -53,17 +53,17 @@ export class NDKTranscriptionDVM extends NDKDVMRequest { * Getter for the image tag */ get image(): string | undefined { - return this.tagValue('image'); + return this.tagValue("image"); } /** * Setter for the image tag */ set image(value: string | undefined) { - this.removeTag('image'); + this.removeTag("image"); if (value) { - this.tags.push(['image', value]); + this.tags.push(["image", value]); } } } diff --git a/src/events/kinds/dvm/index.ts b/src/events/kinds/dvm/index.ts index dbfdd319..4e037ea7 100644 --- a/src/events/kinds/dvm/index.ts +++ b/src/events/kinds/dvm/index.ts @@ -1,3 +1,3 @@ -export * from './NDKDVMRequest'; -export * from './NDKTranscriptionDVM'; -export * from './NDKDVMJobResult'; \ No newline at end of file +export * from "./NDKDVMRequest"; +export * from "./NDKTranscriptionDVM"; +export * from "./NDKDVMJobResult"; diff --git a/src/events/kinds/lists/index.ts b/src/events/kinds/lists/index.ts index b614d424..1981439d 100644 --- a/src/events/kinds/lists/index.ts +++ b/src/events/kinds/lists/index.ts @@ -1,5 +1,5 @@ -import NDKEvent from '../../index.js'; import NDK, { NDKKind, NDKRelay, NDKUser } from "../../../index.js"; +import NDKEvent from "../../index.js"; import { NDKTag, NostrEvent } from "../../index.js"; export type NDKListItem = NDKRelay | NDKUser | NDKEvent; @@ -49,19 +49,19 @@ export class NDKList extends NDKEvent { * Returns the name of the list. */ get name(): string | undefined { - return this.tagValue('name') ?? this.tagValue('d'); + return this.tagValue("name") ?? this.tagValue("d"); } /** * Sets the name of the list. */ set name(name: string | undefined) { - this.removeTag('name'); + this.removeTag("name"); if (name) { - this.tags.push(['name', name]); + this.tags.push(["name", name]); } else { - throw new Error('Name cannot be empty'); + throw new Error("Name cannot be empty"); } } @@ -69,7 +69,7 @@ export class NDKList extends NDKEvent { * Returns the description of the list. */ get description(): string | undefined { - return this.tagValue('description'); + return this.tagValue("description"); } /** @@ -77,14 +77,17 @@ export class NDKList extends NDKEvent { */ set description(name: string | undefined) { if (name) { - this.tags.push(['description', name]); + this.tags.push(["description", name]); } else { - this.removeTag('description'); + this.removeTag("description"); } } private isEncryptedTagsCacheValid(): boolean { - return !!(this._encryptedTags && this.encryptedTagsLength === this.content.length); + return !!( + this._encryptedTags && + this.encryptedTagsLength === this.content.length + ); } /** @@ -94,22 +97,25 @@ export class NDKList extends NDKEvent { if (useCache && this.isEncryptedTagsCacheValid()) return this._encryptedTags!; - if (!this.ndk) throw new Error('NDK instance not set'); - if (!this.ndk.signer) throw new Error('NDK signer not set'); + if (!this.ndk) throw new Error("NDK instance not set"); + if (!this.ndk.signer) throw new Error("NDK signer not set"); const user = await this.ndk.signer.user(); try { if (this.content.length > 0) { try { - const decryptedContent = await this.ndk.signer.decrypt(user, this.content); + const decryptedContent = await this.ndk.signer.decrypt( + user, + this.content + ); const a = JSON.parse(decryptedContent); if (a && a[0]) { this.encryptedTagsLength = this.content.length; - return this._encryptedTags = a; + return (this._encryptedTags = a); } this.encryptedTagsLength = this.content.length; - return this._encryptedTags = []; + return (this._encryptedTags = []); } catch (e) { console.log(`error decrypting ${this.content}`); } @@ -136,7 +142,7 @@ export class NDKList extends NDKEvent { */ get items(): NDKTag[] { return this.tags.filter((t) => { - return !['d', 'name', 'description'].includes(t[0]); + return !["d", "name", "description"].includes(t[0]); }); } @@ -151,8 +157,8 @@ export class NDKList extends NDKEvent { mark: string | undefined = undefined, encrypted = false ): Promise { - if (!this.ndk) throw new Error('NDK instance not set'); - if (!this.ndk.signer) throw new Error('NDK signer not set'); + if (!this.ndk) throw new Error("NDK instance not set"); + if (!this.ndk.signer) throw new Error("NDK signer not set"); let tag; @@ -166,7 +172,7 @@ export class NDKList extends NDKEvent { // NDKTag tag = item; } else { - throw new Error('Invalid object type'); + throw new Error("Invalid object type"); } if (mark) tag.push(mark); @@ -187,7 +193,7 @@ export class NDKList extends NDKEvent { this.created_at = Math.floor(Date.now() / 1000); - this.emit('change'); + this.emit("change"); } /** @@ -197,8 +203,8 @@ export class NDKList extends NDKEvent { * @param encrypted Whether to remove from the encrypted list or not. */ async removeItem(index: number, encrypted: boolean): Promise { - if (!this.ndk) throw new Error('NDK instance not set'); - if (!this.ndk.signer) throw new Error('NDK signer not set'); + if (!this.ndk) throw new Error("NDK instance not set"); + if (!this.ndk.signer) throw new Error("NDK signer not set"); if (encrypted) { const user = await this.ndk.signer.user(); @@ -215,7 +221,7 @@ export class NDKList extends NDKEvent { this.created_at = Math.floor(Date.now() / 1000); - this.emit('change'); + this.emit("change"); return this; } diff --git a/src/events/nip04.ts b/src/events/nip04.ts index 99737f8a..6466916d 100644 --- a/src/events/nip04.ts +++ b/src/events/nip04.ts @@ -2,7 +2,11 @@ import NDKEvent from "."; import { NDKSigner } from "../signers"; import NDKUser from "../user"; -export async function encrypt(this: NDKEvent, recipient?: NDKUser, signer?: NDKSigner) { +export async function encrypt( + this: NDKEvent, + recipient?: NDKUser, + signer?: NDKSigner +) { if (!signer) { if (!this.ndk) { throw new Error("No signer available"); @@ -17,7 +21,9 @@ export async function encrypt(this: NDKEvent, recipient?: NDKUser, signer?: NDKS const pTags = this.getMatchingTags("p"); if (pTags.length !== 1) { - throw new Error("No recipient could be determined and no explicit recipient was provided"); + throw new Error( + "No recipient could be determined and no explicit recipient was provided" + ); } recipient = new NDKUser({ hexpubkey: pTags[0][1] }); @@ -27,7 +33,11 @@ export async function encrypt(this: NDKEvent, recipient?: NDKUser, signer?: NDKS this.content = await signer.encrypt(recipient, this.content); } -export async function decrypt(this: NDKEvent, sender?: NDKUser, signer?: NDKSigner) { +export async function decrypt( + this: NDKEvent, + sender?: NDKUser, + signer?: NDKSigner +) { if (!signer) { if (!this.ndk) { throw new Error("No signer available"); diff --git a/src/events/nip19.ts b/src/events/nip19.ts index 96a7de78..1960901f 100644 --- a/src/events/nip19.ts +++ b/src/events/nip19.ts @@ -6,7 +6,7 @@ export function encode(this: NDKEvent) { return nip19.naddrEncode({ kind: this.kind as number, pubkey: this.pubkey, - identifier: this.replaceableDTag() + identifier: this.replaceableDTag(), }); } else { return nip19.noteEncode(this.tagId()); diff --git a/src/events/repost.ts b/src/events/repost.ts index ad13952f..8f722cf8 100644 --- a/src/events/repost.ts +++ b/src/events/repost.ts @@ -1,6 +1,6 @@ +import { NDKSigner } from "../signers/index.js"; import NDKEvent, { NostrEvent } from "./index.js"; import { NDKKind } from "./kinds/index.js"; -import { NDKSigner } from "../signers/index.js"; /** * NIP-18 reposting event. @@ -9,7 +9,11 @@ import { NDKSigner } from "../signers/index.js"; * @param signer The signer to use for signing the reposted event * @returns The reposted event */ -export async function repost(this: NDKEvent, publish = true, signer?: NDKSigner) { +export async function repost( + this: NDKEvent, + publish = true, + signer?: NDKSigner +) { if (!signer) { if (!this.ndk) throw new Error("No NDK instance found"); this.ndk.assertSigner(); @@ -25,12 +29,12 @@ export async function repost(this: NDKEvent, publish = true, signer?: NDKSigner) const e = new NDKEvent(this.ndk, { kind: getKind(this), content: "", - pubkey: user.hexpubkey() + pubkey: user.hexpubkey(), } as NostrEvent); e.tag(this); if (e.kind === NDKKind.GenericRepost) { - e.tags.push(['k', `${this.kind}`]); + e.tags.push(["k", `${this.kind}`]); } await e.sign(signer); @@ -45,4 +49,4 @@ function getKind(event: NDKEvent): NDKKind { } return NDKKind.GenericRepost; -} \ No newline at end of file +} diff --git a/src/index.ts b/src/index.ts index 51aa8e79..a29569b3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -3,27 +3,27 @@ import EventEmitter from "eventemitter3"; import { NDKCacheAdapter } from "./cache/index.js"; import dedupEvent from "./events/dedup.js"; import NDKEvent from "./events/index.js"; +import type { NDKRelay } from "./relay/index.js"; import { NDKPool } from "./relay/pool/index.js"; import { calculateRelaySetFromEvent } from "./relay/sets/calculate.js"; import { NDKRelaySet } from "./relay/sets/index.js"; +import { correctRelaySet } from "./relay/sets/utils.js"; import type { NDKSigner } from "./signers/index.js"; import { NDKFilter, NDKSubscription, NDKSubscriptionOptions, filterFromId, - relaysFromBech32 + relaysFromBech32, } from "./subscription/index.js"; import NDKUser, { NDKUserParams } from "./user/index.js"; import { NDKUserProfile } from "./user/profile.js"; -import type { NDKRelay } from "./relay/index.js"; -import { correctRelaySet } from "./relay/sets/utils.js"; export * from "./events/index.js"; export * from "./events/kinds/index.js"; -export * from './events/kinds/article.js'; +export * from "./events/kinds/article.js"; export * from "./events/kinds/dvm/index.js"; -export * from './events/kinds/lists/index.js'; +export * from "./events/kinds/lists/index.js"; export * from "./relay/index.js"; export * from "./relay/sets/index.js"; export * from "./signers/index.js"; @@ -68,12 +68,15 @@ export default class NDK extends EventEmitter { this.delayedSubscriptions = new Map(); if (opts.devWriteRelayUrls) { - this.devWriteRelaySet = NDKRelaySet.fromRelayUrls(opts.devWriteRelayUrls, this); + this.devWriteRelaySet = NDKRelaySet.fromRelayUrls( + opts.devWriteRelayUrls, + this + ); } } public toJSON(): string { - return {relayCount: this.pool.relays.size}.toString(); + return { relayCount: this.pool.relays.size }.toString(); } /** @@ -141,7 +144,9 @@ export default class NDK extends EventEmitter { ): Promise> { if (!relaySet) { // If we have a devWriteRelaySet, use it to publish all events - relaySet = this.devWriteRelaySet || calculateRelaySetFromEvent(this, event); + relaySet = + this.devWriteRelaySet || + calculateRelaySetFromEvent(this, event); } return relaySet.publish(event, timeoutMs); @@ -155,10 +160,10 @@ export default class NDK extends EventEmitter { * @param relaySet explicit relay set to use */ public async fetchEvent( - idOrFilter: string|NDKFilter, + idOrFilter: string | NDKFilter, opts?: NDKSubscriptionOptions, relaySet?: NDKRelaySet - ) : Promise { + ): Promise { let filter: NDKFilter; // if no relayset has been provided, try to get one from the event id @@ -184,7 +189,12 @@ export default class NDK extends EventEmitter { } return new Promise((resolve) => { - const s = this.subscribe(filter, { ...(opts||{}), closeOnEose: true }, relaySet, false); + const s = this.subscribe( + filter, + { ...(opts || {}), closeOnEose: true }, + relaySet, + false + ); s.on("event", (event) => { event.ndk = this; resolve(event); @@ -204,12 +214,17 @@ export default class NDK extends EventEmitter { public async fetchEvents( filter: NDKFilter, opts?: NDKSubscriptionOptions, - relaySet?: NDKRelaySet, + relaySet?: NDKRelaySet ): Promise> { return new Promise((resolve) => { const events: Map = new Map(); - const relaySetSubscription = this.subscribe(filter, { ...(opts||{}), closeOnEose: true }, relaySet, false); + const relaySetSubscription = this.subscribe( + filter, + { ...(opts || {}), closeOnEose: true }, + relaySet, + false + ); relaySetSubscription.on("event", (event: NDKEvent) => { const existingEvent = events.get(event.tagId()); diff --git a/src/relay/index.ts b/src/relay/index.ts index 797aaf40..fa85e11d 100644 --- a/src/relay/index.ts +++ b/src/relay/index.ts @@ -1,3 +1,4 @@ +import debug from "debug"; import EventEmitter from "eventemitter3"; import { Relay, relayInit, Sub } from "nostr-tools"; import "websocket-polyfill"; @@ -5,7 +6,6 @@ import NDKEvent, { NDKTag, NostrEvent } from "../events/index.js"; import { NDKSubscription } from "../subscription/index.js"; import User from "../user/index.js"; import { NDKRelayScore } from "./score.js"; -import debug from "debug"; export enum NDKRelayStatus { CONNECTING, @@ -55,7 +55,11 @@ export class NDKRelay extends EventEmitter { private relay: Relay; private _status: NDKRelayStatus; private connectedAt?: number; - private _connectionStats: NDKRelayConnectionStats = { attempts: 0, success: 0, durations: [] }; + private _connectionStats: NDKRelayConnectionStats = { + attempts: 0, + success: 0, + durations: [], + }; public complaining = false; private debug: debug.Debugger; @@ -102,8 +106,9 @@ export class NDKRelay extends EventEmitter { const sum = durations.reduce((a, b) => a + b, 0); const avg = sum / durations.length; const variance = - durations.map((x) => Math.pow(x - avg, 2)).reduce((a, b) => a + b, 0) / - durations.length; + durations + .map((x) => Math.pow(x - avg, 2)) + .reduce((a, b) => a + b, 0) / durations.length; const stdDev = Math.sqrt(variance); const isFlapping = stdDev < 1000; @@ -179,7 +184,7 @@ export class NDKRelay extends EventEmitter { const { filters } = subscription; const sub = this.relay.sub(filters, { - id: subscription.subId + id: subscription.subId, }); this.debug(`Subscribed to ${JSON.stringify(filters)}`); @@ -218,14 +223,11 @@ export class NDKRelay extends EventEmitter { * @param timeoutMs The timeout for the publish operation in milliseconds * @returns A promise that resolves when the event has been published or rejects if the operation times out */ - public async publish( - event: NDKEvent, - timeoutMs = 2500 - ): Promise { + public async publish(event: NDKEvent, timeoutMs = 2500): Promise { if (this.status === NDKRelayStatus.CONNECTED) { return this.publishEvent(event, timeoutMs); } else { - this.once('connect', () => { + this.once("connect", () => { this.publishEvent(event, timeoutMs); }); return true; @@ -236,21 +238,23 @@ export class NDKRelay extends EventEmitter { event: NDKEvent, timeoutMs?: number ): Promise { - const nostrEvent = (await event.toNostrEvent()); + const nostrEvent = await event.toNostrEvent(); const publish = this.relay.publish(nostrEvent as any); let publishTimeout: NodeJS.Timeout; const publishPromise = new Promise((resolve, reject) => { - publish.then(() => { - clearTimeout(publishTimeout); - this.emit('published', event); - resolve(true); - }).catch((err) => { - clearTimeout(publishTimeout as NodeJS.Timeout); - this.debug('Publish failed', err, event.id); - this.emit('publish:failed', event, err); - reject(err); - }); + publish + .then(() => { + clearTimeout(publishTimeout); + this.emit("published", event); + resolve(true); + }) + .catch((err) => { + clearTimeout(publishTimeout as NodeJS.Timeout); + this.debug("Publish failed", err, event.id); + this.emit("publish:failed", event, err); + reject(err); + }); }); // If no timeout is specified, just return the publish promise @@ -261,9 +265,9 @@ export class NDKRelay extends EventEmitter { // Create a promise that rejects after timeoutMs milliseconds const timeoutPromise = new Promise((_, reject) => { publishTimeout = setTimeout(() => { - this.debug('Publish timed out', event.rawEvent()); - this.emit('publish:failed', event, "Timeout"); - reject(new Error('Publish operation timed out')); + this.debug("Publish timed out", event.rawEvent()); + this.emit("publish:failed", event, "Timeout"); + reject(new Error("Publish operation timed out")); }, timeoutMs); }); @@ -279,7 +283,6 @@ export class NDKRelay extends EventEmitter { // eslint-disable-next-line @typescript-eslint/no-unused-vars public scoreSlowerEvent(timeDiffInMs: number): void { // TODO - } /** @@ -306,7 +309,7 @@ export class NDKRelay extends EventEmitter { attempt: () => { this._connectionStats.attempts++; - } + }, }; /** @@ -317,9 +320,11 @@ export class NDKRelay extends EventEmitter { } public tagReference(marker?: string): NDKTag { - const tag = [ 'r', this.relay.url ]; + const tag = ["r", this.relay.url]; - if (marker) { tag.push(marker); } + if (marker) { + tag.push(marker); + } return tag; } diff --git a/src/relay/pool/index.ts b/src/relay/pool/index.ts index 60668ca1..8cad1ddb 100644 --- a/src/relay/pool/index.ts +++ b/src/relay/pool/index.ts @@ -1,7 +1,7 @@ +import debug from "debug"; import EventEmitter from "eventemitter3"; import NDK from "../../index.js"; import { NDKRelay, NDKRelayStatus } from "../index.js"; -import debug from "debug"; export type NDKPoolStats = { total: number; @@ -38,10 +38,7 @@ export class NDKPool extends EventEmitter { * @param relay - The relay to add to the pool. * @param removeIfUnusedAfter - The time in milliseconds to wait before removing the relay from the pool after it is no longer used. */ - public useTemporaryRelay( - relay: NDKRelay, - removeIfUnusedAfter = 600000, - ) { + public useTemporaryRelay(relay: NDKRelay, removeIfUnusedAfter = 600000) { const relayAlreadyInPool = this.relays.has(relay.url); // check if the relay is already in the pool @@ -74,13 +71,12 @@ export class NDKPool extends EventEmitter { * @param relay - The relay to add to the pool. * @param connect - Whether or not to connect to the relay. */ - public addRelay( - relay: NDKRelay, - connect = true, - ) { + public addRelay(relay: NDKRelay, connect = true) { const relayUrl = relay.url; - relay.on("notice", (relay, notice) => this.emit("notice", relay, notice)); + relay.on("notice", (relay, notice) => + this.emit("notice", relay, notice) + ); relay.on("connect", () => this.handleRelayConnect(relayUrl)); relay.on("disconnect", () => this.emit("relay:disconnect", relay)); relay.on("flapping", () => this.handleFlapping(relay)); @@ -144,13 +140,20 @@ export class NDKPool extends EventEmitter { for (const relay of this.relays.values()) { if (timeoutMs) { const timeoutPromise = new Promise((_, reject) => { - setTimeout(() => reject(`Timed out after ${timeoutMs}ms`), timeoutMs); + setTimeout( + () => reject(`Timed out after ${timeoutMs}ms`), + timeoutMs + ); }); promises.push( - Promise.race([relay.connect(), timeoutPromise]).catch((e) => { - this.debug(`Failed to connect to relay ${relay.url}: ${e}`); - }) + Promise.race([relay.connect(), timeoutPromise]).catch( + (e) => { + this.debug( + `Failed to connect to relay ${relay.url}: ${e}` + ); + } + ) ); } else { promises.push(relay.connect()); @@ -161,7 +164,8 @@ export class NDKPool extends EventEmitter { // in case some, but not all, relays were connected if (timeoutMs) { setTimeout(() => { - const allConnected = this.stats().connected === this.relays.size; + const allConnected = + this.stats().connected === this.relays.size; const someConnected = this.stats().connected > 0; if (!allConnected && someConnected) { @@ -194,7 +198,7 @@ export class NDKPool extends EventEmitter { total: 0, connected: 0, disconnected: 0, - connecting: 0 + connecting: 0, }; for (const relay of this.relays.values()) { diff --git a/src/relay/sets/calculate.ts b/src/relay/sets/calculate.ts index 59badf43..178f2c14 100644 --- a/src/relay/sets/calculate.ts +++ b/src/relay/sets/calculate.ts @@ -12,7 +12,10 @@ import { NDKRelaySet } from "./index.js"; * @param event {Event} * @returns Promise */ -export function calculateRelaySetFromEvent(ndk: NDK, event: Event): NDKRelaySet { +export function calculateRelaySetFromEvent( + ndk: NDK, + event: Event +): NDKRelaySet { const relays: Set = new Set(); ndk.pool?.relays.forEach((relay) => relays.add(relay)); @@ -26,7 +29,10 @@ export function calculateRelaySetFromEvent(ndk: NDK, event: Event): NDKRelaySet * @param filter * @returns Promise */ -export function calculateRelaySetFromFilter(ndk: NDK, filter: NDKFilter): NDKRelaySet { +export function calculateRelaySetFromFilter( + ndk: NDK, + filter: NDKFilter +): NDKRelaySet { const relays: Set = new Set(); ndk.pool?.relays.forEach((relay) => { diff --git a/src/relay/sets/index.ts b/src/relay/sets/index.ts index 5c793e05..16103eb5 100644 --- a/src/relay/sets/index.ts +++ b/src/relay/sets/index.ts @@ -1,8 +1,11 @@ import { sha256 } from "@noble/hashes/sha256"; -import {bytesToHex} from '@noble/hashes/utils'; +import { bytesToHex } from "@noble/hashes/utils"; import NDKEvent from "../../events/index.js"; import type NDK from "../../index.js"; -import { NDKSubscription, NDKSubscriptionGroup } from "../../subscription/index.js"; +import { + NDKSubscription, + NDKSubscriptionGroup, +} from "../../subscription/index.js"; import { NDKRelay, NDKRelayStatus } from "../index.js"; /** @@ -78,7 +81,8 @@ export class NDKRelaySet { return subscription; } - const delayedSubscription = this.ndk.delayedSubscriptions.get(groupableId); + const delayedSubscription = + this.ndk.delayedSubscriptions.get(groupableId); if (delayedSubscription) { delayedSubscription.push(subscription); } else { @@ -116,7 +120,9 @@ export class NDKRelaySet { this.executeSubscription(subGroup); } - private executeSubscription(subscription: NDKSubscription): NDKSubscription { + private executeSubscription( + subscription: NDKSubscription + ): NDKSubscription { this.debug("subscribing", { filters: subscription.filters }); for (const relay of this.relays) { @@ -126,10 +132,13 @@ export class NDKRelaySet { } else { // If the relay is not connected, add a one-time listener to wait for the 'connected' event const connectedListener = () => { - this.debug("new relay coming online for active subscription", { - relay: relay.url, - filters: subscription.filters - }); + this.debug( + "new relay coming online for active subscription", + { + relay: relay.url, + filters: subscription.filters, + } + ); this.subscribeOnRelay(relay, subscription); }; relay.once("connect", connectedListener); @@ -154,25 +163,33 @@ export class NDKRelaySet { event: NDKEvent, timeoutMs?: number ): Promise> { - const publishedToRelays: Set= new Set(); + const publishedToRelays: Set = new Set(); // go through each relay and publish the event - const promises: Promise[] = Array.from(this.relays).map((relay: NDKRelay) => { - return new Promise((resolve) => { - relay.publish(event, timeoutMs).then(() => { - publishedToRelays.add(relay); - resolve(); - }).catch((err) => { - this.debug("error publishing to relay", { relay: relay.url, err }); - resolve(); + const promises: Promise[] = Array.from(this.relays).map( + (relay: NDKRelay) => { + return new Promise((resolve) => { + relay + .publish(event, timeoutMs) + .then(() => { + publishedToRelays.add(relay); + resolve(); + }) + .catch((err) => { + this.debug("error publishing to relay", { + relay: relay.url, + err, + }); + resolve(); + }); }); - }); - }); + } + ); await Promise.all(promises); if (publishedToRelays.size === 0) { - throw new Error('No relay was able to receive the event'); + throw new Error("No relay was able to receive the event"); } return publishedToRelays; diff --git a/src/relay/sets/utils.ts b/src/relay/sets/utils.ts index 5e1709d4..56b68c68 100644 --- a/src/relay/sets/utils.ts +++ b/src/relay/sets/utils.ts @@ -5,12 +5,13 @@ import { NDKRelaySet } from "../../relay/sets/index.js"; * If the provided relay set does not include connected relays in the pool * the relaySet will have the connected relays added to it. */ -export function correctRelaySet(relaySet: NDKRelaySet, pool: NDKPool): NDKRelaySet { +export function correctRelaySet( + relaySet: NDKRelaySet, + pool: NDKPool +): NDKRelaySet { const connectedRelays = pool.connectedRelays(); const includesConnectedRelay = Array.from(relaySet.relays).some((relay) => { - return ( - connectedRelays.map(r => r.url).includes(relay.url) - ); + return connectedRelays.map((r) => r.url).includes(relay.url); }); if (!includesConnectedRelay) { @@ -28,4 +29,4 @@ export function correctRelaySet(relaySet: NDKRelaySet, pool: NDKPool): NDKRelayS } return relaySet; -} \ No newline at end of file +} diff --git a/src/signers/nip07/index.ts b/src/signers/nip07/index.ts index ca015635..9d04b0cc 100644 --- a/src/signers/nip07/index.ts +++ b/src/signers/nip07/index.ts @@ -91,7 +91,13 @@ export class NDKNip07Signer implements NDKSigner { value: string ): Promise { return new Promise((resolve, reject) => { - this.nip04Queue.push({ type, counterpartyHexpubkey, value, resolve, reject }); + this.nip04Queue.push({ + type, + counterpartyHexpubkey, + value, + resolve, + reject, + }); if (!this.nip04Processing) { this.processNip04Queue(); @@ -99,32 +105,54 @@ export class NDKNip07Signer implements NDKSigner { }); } - private async processNip04Queue(item?: Nip04QueueItem, retries = 0): Promise { + private async processNip04Queue( + item?: Nip04QueueItem, + retries = 0 + ): Promise { if (!item && this.nip04Queue.length === 0) { this.nip04Processing = false; return; } this.nip04Processing = true; - const { type, counterpartyHexpubkey, value, resolve, reject } = item || this.nip04Queue.shift()!; + const { type, counterpartyHexpubkey, value, resolve, reject } = + item || this.nip04Queue.shift()!; - this.debug("Processing encryption queue item", { type, counterpartyHexpubkey, value }); + this.debug("Processing encryption queue item", { + type, + counterpartyHexpubkey, + value, + }); try { let result; if (type === "encrypt") { - result = await window.nostr!.nip04.encrypt(counterpartyHexpubkey, value); + result = await window.nostr!.nip04.encrypt( + counterpartyHexpubkey, + value + ); } else { - result = await window.nostr!.nip04.decrypt(counterpartyHexpubkey, value); + result = await window.nostr!.nip04.decrypt( + counterpartyHexpubkey, + value + ); } resolve(result); } catch (error: any) { // retry a few times if the call is already executing - if (error.message && error.message.includes("call already executing")) { + if ( + error.message && + error.message.includes("call already executing") + ) { if (retries < 5) { - this.debug("Retrying encryption queue item", { type, counterpartyHexpubkey, value, retries }); + this.debug("Retrying encryption queue item", { + type, + counterpartyHexpubkey, + value, + retries, + }); setTimeout(() => { this.processNip04Queue(item, retries + 1); }, 50 * retries); @@ -145,8 +173,14 @@ declare global { getPublicKey(): Promise; signEvent(event: NostrEvent): Promise<{ sig: string }>; nip04: { - encrypt(recipientHexPubKey: string, value: string): Promise; - decrypt(senderHexPubKey: string, value: string): Promise; + encrypt( + recipientHexPubKey: string, + value: string + ): Promise; + decrypt( + senderHexPubKey: string, + value: string + ): Promise; }; }; } diff --git a/src/signers/nip46/backend/connect.ts b/src/signers/nip46/backend/connect.ts index 4b2162c7..56a8c731 100644 --- a/src/signers/nip46/backend/connect.ts +++ b/src/signers/nip46/backend/connect.ts @@ -1,6 +1,8 @@ import { IEventHandlingStrategy, NDKNip46Backend } from "./index.js"; -export default class ConnectEventHandlingStrategy implements IEventHandlingStrategy { +export default class ConnectEventHandlingStrategy + implements IEventHandlingStrategy +{ async handle( backend: NDKNip46Backend, remotePubkey: string, diff --git a/src/signers/nip46/backend/describe.ts b/src/signers/nip46/backend/describe.ts index 11ece62b..ee300666 100644 --- a/src/signers/nip46/backend/describe.ts +++ b/src/signers/nip46/backend/describe.ts @@ -1,6 +1,8 @@ import { IEventHandlingStrategy, NDKNip46Backend } from "./index.js"; -export default class DescribeHandlingStrategy implements IEventHandlingStrategy { +export default class DescribeHandlingStrategy + implements IEventHandlingStrategy +{ async handle( backend: NDKNip46Backend, remotePubkey: string, diff --git a/src/signers/nip46/backend/get-public-key.ts b/src/signers/nip46/backend/get-public-key.ts index 515d99be..b93b1b05 100644 --- a/src/signers/nip46/backend/get-public-key.ts +++ b/src/signers/nip46/backend/get-public-key.ts @@ -1,6 +1,8 @@ import { IEventHandlingStrategy, NDKNip46Backend } from "./index.js"; -export default class GetPublicKeyHandlingStrategy implements IEventHandlingStrategy { +export default class GetPublicKeyHandlingStrategy + implements IEventHandlingStrategy +{ async handle( backend: NDKNip46Backend, remotePubkey: string, diff --git a/src/signers/nip46/backend/index.ts b/src/signers/nip46/backend/index.ts index ca35923e..15acd4a2 100644 --- a/src/signers/nip46/backend/index.ts +++ b/src/signers/nip46/backend/index.ts @@ -1,12 +1,12 @@ +import { verifySignature, Event } from "nostr-tools"; import NDK, { NDKEvent, NDKPrivateKeySigner, NDKUser } from "../../../index.js"; import { NDKNostrRpc } from "../rpc.js"; import ConnectEventHandlingStrategy from "./connect.js"; import DescribeEventHandlingStrategy from "./describe.js"; import GetPublicKeyHandlingStrategy from "./get-public-key.js"; -import SignEventHandlingStrategy from "./sign-event.js"; import Nip04DecryptHandlingStrategy from "./nip04-decrypt.js"; import Nip04EncryptHandlingStrategy from "./nip04-encrypt.js"; -import { verifySignature, Event } from 'nostr-tools'; +import SignEventHandlingStrategy from "./sign-event.js"; export type Nip46PermitCallback = ( pubkey: string, @@ -46,7 +46,11 @@ export class NDKNip46Backend { * @param ndk The NDK instance to use * @param privateKey The private key of the npub that wants to be published as */ - public constructor(ndk: NDK, privateKey: string, permitCallback: Nip46PermitCallback) { + public constructor( + ndk: NDK, + privateKey: string, + permitCallback: Nip46PermitCallback + ) { this.ndk = ndk; this.signer = new NDKPrivateKeySigner(privateKey); this.debug = ndk.debug.extend("nip46:backend"); @@ -64,7 +68,7 @@ export class NDKNip46Backend { const sub = this.ndk.subscribe( { kinds: [24133 as number], - "#p": [this.localUser.hexpubkey()] + "#p": [this.localUser.hexpubkey()], }, { closeOnEose: false } ); @@ -78,7 +82,7 @@ export class NDKNip46Backend { nip04_encrypt: new Nip04EncryptHandlingStrategy(), nip04_decrypt: new Nip04DecryptHandlingStrategy(), get_public_key: new GetPublicKeyHandlingStrategy(), - describe: new DescribeEventHandlingStrategy() + describe: new DescribeEventHandlingStrategy(), }; /** @@ -101,7 +105,9 @@ export class NDKNip46Backend { } protected async handleIncomingEvent(event: NDKEvent) { - const { id, method, params } = (await this.rpc.parseEvent(event)) as any; + const { id, method, params } = (await this.rpc.parseEvent( + event + )) as any; const remotePubkey = event.pubkey; let response: string | undefined; @@ -119,7 +125,13 @@ export class NDKNip46Backend { response = await strategy.handle(this, remotePubkey, params); } catch (e: any) { this.debug("error handling event", e, { id, method, params }); - this.rpc.sendResponse(id, remotePubkey, "error", undefined, e.message); + this.rpc.sendResponse( + id, + remotePubkey, + "error", + undefined, + e.message + ); } } else { this.debug("unsupported method", { method, params }); @@ -129,11 +141,21 @@ export class NDKNip46Backend { this.debug(`sending response to ${remotePubkey}`, response); this.rpc.sendResponse(id, remotePubkey, response); } else { - this.rpc.sendResponse(id, remotePubkey, "error", undefined, "Not authorized"); + this.rpc.sendResponse( + id, + remotePubkey, + "error", + undefined, + "Not authorized" + ); } } - public async decrypt(remotePubkey: string, senderUser: NDKUser, payload: string) { + public async decrypt( + remotePubkey: string, + senderUser: NDKUser, + payload: string + ) { if (!(await this.pubkeyAllowed(remotePubkey, "decrypt", payload))) { this.debug(`decrypt request from ${remotePubkey} rejected`); return undefined; @@ -142,7 +164,11 @@ export class NDKNip46Backend { return await this.signer.decrypt(senderUser, payload); } - public async encrypt(remotePubkey: string, recipientUser: NDKUser, payload: string) { + public async encrypt( + remotePubkey: string, + recipientUser: NDKUser, + payload: string + ) { if (!(await this.pubkeyAllowed(remotePubkey, "encrypt", payload))) { this.debug(`encrypt request from ${remotePubkey} rejected`); return undefined; @@ -151,7 +177,10 @@ export class NDKNip46Backend { return await this.signer.encrypt(recipientUser, payload); } - public async signEvent(remotePubkey: string, params: string[]): Promise { + public async signEvent( + remotePubkey: string, + params: string[] + ): Promise { const [eventString] = params; this.debug(`sign event request from ${remotePubkey}`); @@ -175,7 +204,11 @@ export class NDKNip46Backend { * This method should be overriden by the user to allow or reject incoming * connections. */ - public async pubkeyAllowed(pubkey: string, method: string, params?: any): Promise { + public async pubkeyAllowed( + pubkey: string, + method: string, + params?: any + ): Promise { return this.permitCallback(pubkey, method, params); } } diff --git a/src/signers/nip46/backend/nip04-decrypt.ts b/src/signers/nip46/backend/nip04-decrypt.ts index cd85fc6a..aa94f875 100644 --- a/src/signers/nip46/backend/nip04-decrypt.ts +++ b/src/signers/nip46/backend/nip04-decrypt.ts @@ -1,15 +1,21 @@ import NDKUser from "../../../user/index.js"; import { IEventHandlingStrategy, NDKNip46Backend } from "./index.js"; -export default class Nip04DecryptHandlingStrategy implements IEventHandlingStrategy { +export default class Nip04DecryptHandlingStrategy + implements IEventHandlingStrategy +{ async handle( backend: NDKNip46Backend, remotePubkey: string, params: string[] ): Promise { - const [ senderPubkey, payload ] = params; + const [senderPubkey, payload] = params; const senderUser = new NDKUser({ hexpubkey: senderPubkey }); - const decryptedPayload = await backend.decrypt(remotePubkey, senderUser, payload); + const decryptedPayload = await backend.decrypt( + remotePubkey, + senderUser, + payload + ); return JSON.stringify([decryptedPayload]); } diff --git a/src/signers/nip46/backend/nip04-encrypt.ts b/src/signers/nip46/backend/nip04-encrypt.ts index 9a688c08..b1f1d183 100644 --- a/src/signers/nip46/backend/nip04-encrypt.ts +++ b/src/signers/nip46/backend/nip04-encrypt.ts @@ -1,15 +1,21 @@ import NDKUser from "../../../user/index.js"; import { IEventHandlingStrategy, NDKNip46Backend } from "./index.js"; -export default class Nip04EncryptHandlingStrategy implements IEventHandlingStrategy { +export default class Nip04EncryptHandlingStrategy + implements IEventHandlingStrategy +{ async handle( backend: NDKNip46Backend, remotePubkey: string, params: string[] ): Promise { - const [ recipientPubkey, payload ] = params; + const [recipientPubkey, payload] = params; const recipientUser = new NDKUser({ hexpubkey: recipientPubkey }); - const decryptedPayload = await backend.encrypt(remotePubkey, recipientUser, payload); + const decryptedPayload = await backend.encrypt( + remotePubkey, + recipientUser, + payload + ); return decryptedPayload; } diff --git a/src/signers/nip46/backend/sign-event.ts b/src/signers/nip46/backend/sign-event.ts index ba561631..21228a6e 100644 --- a/src/signers/nip46/backend/sign-event.ts +++ b/src/signers/nip46/backend/sign-event.ts @@ -1,6 +1,8 @@ import { IEventHandlingStrategy, NDKNip46Backend } from "./index.js"; -export default class SignEventHandlingStrategy implements IEventHandlingStrategy { +export default class SignEventHandlingStrategy + implements IEventHandlingStrategy +{ async handle( backend: NDKNip46Backend, remotePubkey: string, diff --git a/src/signers/nip46/index.ts b/src/signers/nip46/index.ts index 5a92a2d9..8280bfcb 100644 --- a/src/signers/nip46/index.ts +++ b/src/signers/nip46/index.ts @@ -1,4 +1,9 @@ -import NDK, { NDKPrivateKeySigner, NDKSigner, NDKUser, NostrEvent } from "../../index.js"; +import NDK, { + NDKPrivateKeySigner, + NDKSigner, + NDKUser, + NostrEvent, +} from "../../index.js"; import { NDKNostrRpc, NDKRpcResponse } from "./rpc.js"; /** @@ -40,16 +45,22 @@ export class NDKNip46Signer implements NDKSigner { * @param tokenOrRemotePubkey - The public key, or a connection token, of the npub that wants to be published as * @param localSigner - The signer that will be used to request events to be signed */ - public constructor(ndk: NDK, tokenOrRemotePubkey: string, localSigner?: NDKSigner) { + public constructor( + ndk: NDK, + tokenOrRemotePubkey: string, + localSigner?: NDKSigner + ) { let remotePubkey: string; let token: string | undefined; if (tokenOrRemotePubkey.includes("#")) { const parts = tokenOrRemotePubkey.split("#"); - remotePubkey = (new NDKUser({ npub: parts[0] })).hexpubkey(); + remotePubkey = new NDKUser({ npub: parts[0] }).hexpubkey(); token = parts[1]; } else if (tokenOrRemotePubkey.startsWith("npub")) { - remotePubkey = (new NDKUser({ npub: tokenOrRemotePubkey })).hexpubkey(); + remotePubkey = new NDKUser({ + npub: tokenOrRemotePubkey, + }).hexpubkey(); } else { remotePubkey = tokenOrRemotePubkey; } diff --git a/src/signers/nip46/rpc.ts b/src/signers/nip46/rpc.ts index 7ab736fe..ee6b4ee8 100644 --- a/src/signers/nip46/rpc.ts +++ b/src/signers/nip46/rpc.ts @@ -1,5 +1,11 @@ import EventEmitter from "eventemitter3"; -import NDK, { NDKEvent, NDKFilter, NDKSigner, NDKSubscription, NostrEvent } from "../../index.js"; +import NDK, { + NDKEvent, + NDKFilter, + NDKSigner, + NDKSubscription, + NostrEvent, +} from "../../index.js"; export interface NDKRpcRequest { id: string; @@ -48,14 +54,19 @@ export class NDKNostrRpc extends EventEmitter { }); return new Promise((resolve, reject) => { - sub.on('eose', () => resolve(sub)); + sub.on("eose", () => resolve(sub)); }); } - public async parseEvent(event: NDKEvent): Promise { + public async parseEvent( + event: NDKEvent + ): Promise { const remoteUser = this.ndk.getUser({ hexpubkey: event.pubkey }); remoteUser.ndk = this.ndk; - const decryptedContent = await this.signer.decrypt(remoteUser, event.content); + const decryptedContent = await this.signer.decrypt( + remoteUser, + event.content + ); const parsedContent = JSON.parse(decryptedContent); const { id, method, params, result, error } = parsedContent; @@ -66,7 +77,13 @@ export class NDKNostrRpc extends EventEmitter { } } - public async sendResponse(id: string, remotePubkey: string, result: string, kind = 24133, error?: string) { + public async sendResponse( + id: string, + remotePubkey: string, + result: string, + kind = 24133, + error?: string + ) { const res = { id, result } as NDKRpcResponse; if (error) { res.error = error; @@ -78,7 +95,7 @@ export class NDKNostrRpc extends EventEmitter { kind, content: JSON.stringify(res), tags: [["p", remotePubkey]], - pubkey: localUser.hexpubkey() + pubkey: localUser.hexpubkey(), } as NostrEvent); event.content = await this.signer.encrypt(remoteUser, event.content); @@ -105,7 +122,7 @@ export class NDKNostrRpc extends EventEmitter { const localUser = await this.signer.user(); const remoteUser = this.ndk.getUser({ hexpubkey: remotePubkey }); const request = { id, method, params }; - const promise = new Promise(resolve => { + const promise = new Promise((resolve) => { if (cb) this.once(`response-${id}`, cb); }); @@ -113,7 +130,7 @@ export class NDKNostrRpc extends EventEmitter { kind, content: JSON.stringify(request), tags: [["p", remotePubkey]], - pubkey: localUser.hexpubkey() + pubkey: localUser.hexpubkey(), } as NostrEvent); event.content = await this.signer.encrypt(remoteUser, event.content); diff --git a/src/signers/private-key/index.test.ts b/src/signers/private-key/index.test.ts index 73cac51d..654e6ca9 100644 --- a/src/signers/private-key/index.test.ts +++ b/src/signers/private-key/index.test.ts @@ -10,14 +10,16 @@ describe("NDKPrivateKeySigner", () => { }); it("creates a new NDKPrivateKeySigner instance with a provided private key", () => { - const privateKey = "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff"; + const privateKey = + "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff"; const signer = new NDKPrivateKeySigner(privateKey); expect(signer).toBeInstanceOf(NDKPrivateKeySigner); expect(signer.privateKey).toBe(privateKey); }); it("returns a user instance with a public key corresponding to the private key", async () => { - const privateKey = "e8eb7464168139c6ccb9111f768777f332fa1289dff11244ccfe89970ff776d4"; + const privateKey = + "e8eb7464168139c6ccb9111f768777f332fa1289dff11244ccfe89970ff776d4"; const signer = new NDKPrivateKeySigner(privateKey); const user = await signer.user(); expect(user).toBeInstanceOf(User); @@ -27,7 +29,8 @@ describe("NDKPrivateKeySigner", () => { }); it("signs a NostrEvent with the private key", async () => { - const privateKey = "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff"; + const privateKey = + "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff"; const signer = new NDKPrivateKeySigner(privateKey); const event: NostrEvent = { @@ -35,7 +38,7 @@ describe("NDKPrivateKeySigner", () => { created_at: Math.floor(Date.now() / 1000), tags: [], content: "Test content", - kind: 1 + kind: 1, }; const signature = await signer.sign(event); diff --git a/src/signers/private-key/index.ts b/src/signers/private-key/index.ts index ca6ee771..28c9c02e 100644 --- a/src/signers/private-key/index.ts +++ b/src/signers/private-key/index.ts @@ -1,5 +1,10 @@ import type { UnsignedEvent } from "nostr-tools"; -import { generatePrivateKey, getPublicKey, nip04, getSignature } from "nostr-tools"; +import { + generatePrivateKey, + getPublicKey, + nip04, + getSignature, +} from "nostr-tools"; import type { NostrEvent } from "../../events/index.js"; import NDKUser from "../../user"; import { NDKSigner } from "../index.js"; @@ -11,7 +16,9 @@ export class NDKPrivateKeySigner implements NDKSigner { public constructor(privateKey?: string) { if (privateKey) { this.privateKey = privateKey; - this._user = new NDKUser({ hexpubkey: getPublicKey(this.privateKey) }); + this._user = new NDKUser({ + hexpubkey: getPublicKey(this.privateKey), + }); } } diff --git a/src/subscription/index.ts b/src/subscription/index.ts index 8dbfe0e5..b63cdc11 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -21,7 +21,7 @@ export enum NDKSubscriptionCacheUsage { PARALLEL = "PARALLEL", // Skip cache, don't query it - ONLY_RELAY = "ONLY_RELAY" + ONLY_RELAY = "ONLY_RELAY", } export interface NDKSubscriptionOptions { @@ -53,7 +53,7 @@ export const defaultOpts: NDKSubscriptionOptions = { closeOnEose: true, cacheUsage: NDKSubscriptionCacheUsage.CACHE_FIRST, groupable: true, - groupableDelay: 100 + groupableDelay: 100, }; /** @@ -126,7 +126,9 @@ export class NDKSubscription extends EventEmitter { this.opts.cacheUsage === NDKSubscriptionCacheUsage.ONLY_CACHE && !this.opts.closeOnEose ) { - throw new Error("Cannot use cache-only options with a persistent subscription"); + throw new Error( + "Cannot use cache-only options with a persistent subscription" + ); } } @@ -182,10 +184,8 @@ export class NDKSubscription extends EventEmitter { // that want to receive further updates must // always hit the relay this.opts.closeOnEose && - // Cache adapter must claim to be fast !!this.ndk.cacheAdapter?.locking && - // If explicitly told to run in parallel, then // we should not wait for the cache this.opts.cacheUsage !== NDKSubscriptionCacheUsage.PARALLEL @@ -240,7 +240,10 @@ export class NDKSubscription extends EventEmitter { private startWithRelaySet(): void { if (!this.relaySet) { - this.relaySet = calculateRelaySetFromFilter(this.ndk, this.filters[0]); + this.relaySet = calculateRelaySetFromFilter( + this.ndk, + this.filters[0] + ); } if (this.relaySet) { @@ -250,14 +253,17 @@ export class NDKSubscription extends EventEmitter { // EVENT handling - /** * Called when an event is received from a relay or the cache * @param event * @param relay * @param fromCache Whether the event was received from the cache */ - public eventReceived(event: NDKEvent, relay: NDKRelay | undefined, fromCache = false) { + public eventReceived( + event: NDKEvent, + relay: NDKRelay | undefined, + fromCache = false + ) { if (!fromCache && relay) { // track the event per relay let events = this.eventsPerRelay.get(relay); @@ -273,7 +279,8 @@ export class NDKSubscription extends EventEmitter { const eventAlreadySeen = this.eventFirstSeen.has(event.id); if (eventAlreadySeen) { - const timeSinceFirstSeen = Date.now() - (this.eventFirstSeen.get(event.id) || 0); + const timeSinceFirstSeen = + Date.now() - (this.eventFirstSeen.get(event.id) || 0); relay.scoreSlowerEvent(timeSinceFirstSeen); this.emit("event:dup", event, relay, timeSinceFirstSeen, this); @@ -349,7 +356,7 @@ export class NDKSubscriptionGroup extends NDKSubscription { debug("merged filters", { count: subscriptions.length, - mergedFilters: this.filters[0] + mergedFilters: this.filters[0], }); // forward events to the matching subscriptions @@ -359,7 +366,10 @@ export class NDKSubscriptionGroup extends NDKSubscription { this.on("close", this.forwardClose); } - private isEventForSubscription(event: NDKEvent, subscription: NDKSubscription): boolean { + private isEventForSubscription( + event: NDKEvent, + subscription: NDKSubscription + ): boolean { const { filters } = subscription; if (!filters) return false; @@ -397,13 +407,23 @@ export class NDKSubscriptionGroup extends NDKSubscription { } } - private forwardEventDup(event: NDKEvent, relay: NDKRelay, timeSinceFirstSeen: number) { + private forwardEventDup( + event: NDKEvent, + relay: NDKRelay, + timeSinceFirstSeen: number + ) { for (const subscription of this.subscriptions) { if (!this.isEventForSubscription(event, subscription)) { continue; } - subscription.emit("event:dup", event, relay, timeSinceFirstSeen, subscription); + subscription.emit( + "event:dup", + event, + relay, + timeSinceFirstSeen, + subscription + ); } } @@ -433,7 +453,9 @@ export function mergeFilters(filters: NDKFilter[]): NDKFilter { if (result[key] === undefined) { result[key] = [...value]; } else { - result[key] = Array.from(new Set([...result[key], ...value])); + result[key] = Array.from( + new Set([...result[key], ...value]) + ); } } else { result[key] = value; @@ -454,18 +476,20 @@ export function filterFromId(id: string): NDKFilter { decoded = nip19.decode(id); switch (decoded.type) { - case 'nevent': return {ids: [decoded.data.id]}; - case 'note': return {ids: [decoded.data]}; - case 'naddr': return { - authors: [decoded.data.pubkey], - "#d": [decoded.data.identifier], - kinds: [decoded.data.kind] - }; + case "nevent": + return { ids: [decoded.data.id] }; + case "note": + return { ids: [decoded.data] }; + case "naddr": + return { + authors: [decoded.data.pubkey], + "#d": [decoded.data.identifier], + kinds: [decoded.data.kind], + }; } - } catch (e) { - } + } catch (e) {} - return {ids: [id]}; + return { ids: [id] }; } /** @@ -477,14 +501,16 @@ export function relaysFromBech32(bech32: string): NDKRelay[] { try { const decoded = nip19.decode(bech32); - if (['naddr', 'nevent'].includes(decoded?.type)) { + if (["naddr", "nevent"].includes(decoded?.type)) { const data = decoded.data as unknown as EventPointer; if (data?.relays) { return data.relays.map((r: string) => new NDKRelay(r)); } } - } catch (e) { /* empty */ } + } catch (e) { + /* empty */ + } return []; } @@ -493,18 +519,18 @@ export function relaysFromBech32(bech32: string): NDKRelay[] { * Generates a random filter id, based on the filter keys. */ function generateFilterId(filter: NDKFilter) { - const keys = Object.keys(filter)||[]; + const keys = Object.keys(filter) || []; const subId = []; for (const key of keys) { - if (key === 'kinds') { - const v = [key, filter.kinds!.join(',')]; - subId.push(v.join(':')); + if (key === "kinds") { + const v = [key, filter.kinds!.join(",")]; + subId.push(v.join(":")); } else { subId.push(key); } } subId.push(Math.floor(Math.random() * 999999999).toString()); - return subId.join('-'); + return subId.join("-"); } diff --git a/src/subscription/utils.ts b/src/subscription/utils.ts index d94a8c3d..5157443d 100644 --- a/src/subscription/utils.ts +++ b/src/subscription/utils.ts @@ -19,14 +19,11 @@ export function queryFullyFilled(subscription: NDKSubscription): boolean { } function filterIncludesIds(filter: NDKFilter): boolean { - return !!filter['ids']; + return !!filter["ids"]; } function resultHasAllRequestedIds(subscription: NDKSubscription): boolean { - const ids = subscription.filter['ids']; + const ids = subscription.filter["ids"]; - return ( - !!ids && - ids.length === subscription.eventFirstSeen.size - ); -} \ No newline at end of file + return !!ids && ids.length === subscription.eventFirstSeen.size; +} diff --git a/src/user/follows.test.ts b/src/user/follows.test.ts index f1f6312b..d3242cac 100644 --- a/src/user/follows.test.ts +++ b/src/user/follows.test.ts @@ -7,9 +7,9 @@ jest.mock("../index.js", () => { __esModule: true, default: jest.fn().mockImplementation(() => { return { - fetchEvents: jest.fn() + fetchEvents: jest.fn(), }; - }) + }), }; }); @@ -17,7 +17,8 @@ describe("follows", () => { it("skips tags on the contact list with invalid pubkeys", async () => { const ndk = new NDK(); const user = new NDKUser({ - hexpubkey: "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52" + hexpubkey: + "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52", }); user.ndk = ndk; @@ -45,7 +46,8 @@ describe("follows", () => { it("dedupes followed users", async () => { const ndk = new NDK(); const user = new NDKUser({ - hexpubkey: "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52" + hexpubkey: + "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52", }); user.ndk = ndk; diff --git a/src/user/follows.ts b/src/user/follows.ts index b1cb31d2..44750023 100644 --- a/src/user/follows.ts +++ b/src/user/follows.ts @@ -1,5 +1,4 @@ import { nip19 } from "nostr-tools"; - import NDKUser from "./index.js"; export async function follows(this: NDKUser): Promise> { @@ -7,7 +6,7 @@ export async function follows(this: NDKUser): Promise> { const contactListEvents = await this.ndk.fetchEvents({ kinds: [3], - authors: [this.hexpubkey()] + authors: [this.hexpubkey()], }); if (contactListEvents) { diff --git a/src/user/index.test.ts b/src/user/index.test.ts index 62f9cd22..0d497894 100644 --- a/src/user/index.test.ts +++ b/src/user/index.test.ts @@ -1,15 +1,15 @@ import { nip19 } from "nostr-tools"; -import NDKUser, { NDKUserParams } from "./index.js"; import NDK, { NDKEvent, NDKSubscription } from "../index.js"; +import NDKUser, { NDKUserParams } from "./index.js"; jest.mock("nostr-tools", () => ({ nip05: { - queryProfile: jest.fn() + queryProfile: jest.fn(), }, nip19: { npubEncode: jest.fn(), - decode: jest.fn() - } + decode: jest.fn(), + }, })); describe("NDKUser", () => { @@ -20,7 +20,7 @@ describe("NDKUser", () => { describe("constructor", () => { it("sets npub from provided npub", () => { const opts: NDKUserParams = { - npub: "npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft" + npub: "npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft", }; const user = new NDKUser(opts); @@ -32,7 +32,8 @@ describe("NDKUser", () => { it("sets npub from provided hexpubkey", () => { const opts: NDKUserParams = { - hexpubkey: "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52" + hexpubkey: + "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52", }; (nip19.npubEncode as jest.Mock).mockReturnValue("encoded_npub"); @@ -47,7 +48,7 @@ describe("NDKUser", () => { it("sets relayUrls from provided relayUrls", () => { const opts: NDKUserParams = { - relayUrls: ["url1", "url2"] + relayUrls: ["url1", "url2"], }; const user = new NDKUser(opts); @@ -59,10 +60,12 @@ describe("NDKUser", () => { describe("hexpubkey", () => { it("returns the decoded hexpubkey", () => { const user = new NDKUser({ - npub: "npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft" + npub: "npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft", }); - (nip19.decode as jest.Mock).mockReturnValue({ data: "decoded_hexpubkey" }); + (nip19.decode as jest.Mock).mockReturnValue({ + data: "decoded_hexpubkey", + }); const hexpubkey = user.hexpubkey(); @@ -78,10 +81,12 @@ describe("NDKUser", () => { let newEvent: NDKEvent; let oldEvent: NDKEvent; const user = new NDKUser({ - npub: "npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft" + npub: "npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft", }); user.ndk = ndk; - (nip19.decode as jest.Mock).mockReturnValue({ data: "decoded_hexpubkey" }); + (nip19.decode as jest.Mock).mockReturnValue({ + data: "decoded_hexpubkey", + }); const pubkey = user.hexpubkey(); it("Returns updated fields", async () => { @@ -100,8 +105,8 @@ describe("NDKUser", () => { lud06: "lud06value", lud16: "lud16value", about: "About jeff", - zapService: "Zapservice details" - }) + zapService: "Zapservice details", + }), }); oldEvent = new NDKEvent(ndk, { @@ -119,8 +124,8 @@ describe("NDKUser", () => { lud06: "lud06value OLD", lud16: "lud16value OLD", about: "About jeff OLD", - zapService: "Zapservice details OLD" - }) + zapService: "Zapservice details OLD", + }), }); ndk.subscribe = jest.fn((filter, opts?): NDKSubscription => { @@ -157,8 +162,8 @@ describe("NDKUser", () => { created_at: Date.now() / 1000 - 3600, content: JSON.stringify({ displayName: "JeffG", - display_name: "James" - }) + display_name: "James", + }), }); oldEvent = new NDKEvent(ndk, { @@ -167,8 +172,8 @@ describe("NDKUser", () => { tags: [], created_at: Date.now() / 1000 - 7200, content: JSON.stringify({ - displayName: "Bob" - }) + displayName: "Bob", + }), }); ndk.subscribe = jest.fn((filter, opts?): NDKSubscription => { @@ -195,8 +200,8 @@ describe("NDKUser", () => { tags: [], created_at: Date.now() / 1000 - 3600, content: JSON.stringify({ - picture: "https://set-from-picture-field.url" - }) + picture: "https://set-from-picture-field.url", + }), }); oldEvent = new NDKEvent(ndk, { @@ -205,8 +210,8 @@ describe("NDKUser", () => { tags: [], created_at: Date.now() / 1000 - 7200, content: JSON.stringify({ - image: "https://set-from-image-field.url" - }) + image: "https://set-from-image-field.url", + }), }); ndk.subscribe = jest.fn((filter, opts?): NDKSubscription => { @@ -222,7 +227,9 @@ describe("NDKUser", () => { }); await user.fetchProfile(); - expect(user.profile?.image).toEqual("https://set-from-picture-field.url"); + expect(user.profile?.image).toEqual( + "https://set-from-picture-field.url" + ); }); it("Allows for arbitrary values to be set on user profiles", async () => { @@ -232,8 +239,8 @@ describe("NDKUser", () => { tags: [], created_at: Date.now() / 1000 - 3600, content: JSON.stringify({ - customField: "custom NEW" - }) + customField: "custom NEW", + }), }); oldEvent = new NDKEvent(ndk, { @@ -242,8 +249,8 @@ describe("NDKUser", () => { tags: [], created_at: Date.now() / 1000 - 7200, content: JSON.stringify({ - customField: "custom OLD" - }) + customField: "custom OLD", + }), }); ndk.subscribe = jest.fn((filter, opts?): NDKSubscription => { diff --git a/src/user/index.ts b/src/user/index.ts index cd753f7f..21364cf9 100644 --- a/src/user/index.ts +++ b/src/user/index.ts @@ -1,11 +1,11 @@ import { nip05, nip19 } from "nostr-tools"; +import { NDKSubscriptionOptions } from "../../dist/index.js"; import Event, { NDKTag, NostrEvent } from "../events/index.js"; +import NDKEvent from "../events/index.js"; import NDK, { NDKKind } from "../index.js"; import { NDKSubscriptionCacheUsage } from "../subscription/index.js"; import { follows } from "./follows.js"; import { mergeEvent, NDKUserProfile } from "./profile"; -import NDKEvent from "../events/index.js"; -import { NDKSubscriptionOptions } from "../../dist/index.js"; export interface NDKUserParams { npub?: string; @@ -46,7 +46,7 @@ export default class NDKUser { if (profile) { return new NDKUser({ hexpubkey: profile.pubkey, - relayUrls: profile.relays + relayUrls: profile.relays, }); } } @@ -64,7 +64,9 @@ export default class NDKUser { * @param opts {NDKSubscriptionOptions} A set of NDKSubscriptionOptions * @returns {Promise>} A set of all NDKEvents events returned for the given user */ - public async fetchProfile(opts?: NDKSubscriptionOptions): Promise | null> { + public async fetchProfile( + opts?: NDKSubscriptionOptions + ): Promise | null> { if (!this.ndk) throw new Error("NDK not set"); if (!this.profile) this.profile = {}; @@ -75,22 +77,26 @@ export default class NDKUser { // This is done in favour of simply using NDKSubscriptionCacheUsage.CACHE_FIRST since // we want to avoid depending on the grouping, arguably, all queries should go through this // type of behavior when we have a locking cache - if (!opts && // if no options have been set + if ( + !opts && // if no options have been set this.ndk.cacheAdapter && // and we have a cache this.ndk.cacheAdapter.locking // and the cache identifies itself as fast 😂 ) { - setMetadataEvents = await this.ndk.fetchEvents({ - kinds: [0], - authors: [this.hexpubkey()] - }, { - cacheUsage: NDKSubscriptionCacheUsage.ONLY_CACHE, - closeOnEose: true, - groupable: false - }); + setMetadataEvents = await this.ndk.fetchEvents( + { + kinds: [0], + authors: [this.hexpubkey()], + }, + { + cacheUsage: NDKSubscriptionCacheUsage.ONLY_CACHE, + closeOnEose: true, + groupable: false, + } + ); opts = { cacheUsage: NDKSubscriptionCacheUsage.ONLY_RELAY, - closeOnEose: true + closeOnEose: true, }; } @@ -98,7 +104,7 @@ export default class NDKUser { setMetadataEvents = await this.ndk.fetchEvents( { kinds: [0], - authors: [this.hexpubkey()] + authors: [this.hexpubkey()], }, opts ); @@ -134,7 +140,7 @@ export default class NDKUser { const relayListEvents = await this.ndk.fetchEvents({ kinds: [10002], - authors: [this.hexpubkey()] + authors: [this.hexpubkey()], }); if (relayListEvents) { @@ -192,7 +198,9 @@ export default class NDKUser { currentFollowList.add(newFollow); - const event = new NDKEvent(this.ndk, { kind: NDKKind.Contacts } as NostrEvent); + const event = new NDKEvent(this.ndk, { + kind: NDKKind.Contacts, + } as NostrEvent); // This is a horrible hack and I need to fix it for (const follow of currentFollowList) { diff --git a/src/user/profile.ts b/src/user/profile.ts index acd694fc..b9d9206d 100644 --- a/src/user/profile.ts +++ b/src/user/profile.ts @@ -16,9 +16,12 @@ export type NDKUserProfile = { about?: string; zapService?: string; website?: string; -} +}; -export function mergeEvent(event: NDKEvent, profile: NDKUserProfile): NDKUserProfile { +export function mergeEvent( + event: NDKEvent, + profile: NDKUserProfile +): NDKUserProfile { const payload = JSON.parse(event.content); Object.keys(payload).forEach((key) => { @@ -28,7 +31,8 @@ export function mergeEvent(event: NDKEvent, profile: NDKUserProfile): NDKUserPro break; case "display_name": case "displayName": - profile.displayName = payload.displayName || payload.display_name; + profile.displayName = + payload.displayName || payload.display_name; break; case "image": case "picture": diff --git a/src/zap/index.ts b/src/zap/index.ts index 196194d4..528fe9e6 100644 --- a/src/zap/index.ts +++ b/src/zap/index.ts @@ -12,7 +12,7 @@ const DEFAULT_RELAYS = [ "wss://relay.f7z.io", "wss://relay.damus.io", "wss://nostr.mom", - "wss://no.str.cr" + "wss://no.str.cr", ]; interface ZapConstructorParams { @@ -21,7 +21,9 @@ interface ZapConstructorParams { zappedUser?: User; } -type ZapConstructorParamsRequired = Required> & +type ZapConstructorParamsRequired = Required< + Pick +> & Pick & ZapConstructorParams; @@ -36,7 +38,8 @@ export default class Zap extends EventEmitter { this.zappedEvent = args.zappedEvent; this.zappedUser = - args.zappedUser || this.ndk.getUser({ hexpubkey: this.zappedEvent.pubkey }); + args.zappedUser || + this.ndk.getUser({ hexpubkey: this.zappedEvent.pubkey }); } public async getZapEndpoint(): Promise { @@ -125,7 +128,7 @@ export default class Zap extends EventEmitter { event: null, amount, comment: comment || "", - relays: relays ?? this.relays() + relays: relays ?? this.relays(), }); // add the event tag if it exists; this supports both 'e' and 'a' tags @@ -138,7 +141,10 @@ export default class Zap extends EventEmitter { zapRequest.tags.push(["lnurl", zapEndpoint]); - const zapRequestEvent = new NDKEvent(this.ndk, zapRequest as NostrEvent); + const zapRequestEvent = new NDKEvent( + this.ndk, + zapRequest as NostrEvent + ); if (extraTags) { zapRequestEvent.tags = zapRequestEvent.tags.concat(extraTags); } @@ -150,7 +156,7 @@ export default class Zap extends EventEmitter { `${zapEndpoint}?` + new URLSearchParams({ amount: amount.toString(), - nostr: JSON.stringify(zapRequestNostrEvent) + nostr: JSON.stringify(zapRequestNostrEvent), }) ); const body = await response.json(); diff --git a/src/zap/invoice.ts b/src/zap/invoice.ts index 47fcd5e6..ad7a574d 100644 --- a/src/zap/invoice.ts +++ b/src/zap/invoice.ts @@ -43,7 +43,9 @@ export function zapInvoiceFromEvent(event: NDKEvent): NDKZapInvoice | null { return null; } - const amountSection = decodedInvoice.sections.find((s: any) => s.name === "amount"); + const amountSection = decodedInvoice.sections.find( + (s: any) => s.name === "amount" + ); if (!amountSection) { return null; } @@ -74,7 +76,7 @@ export function zapInvoiceFromEvent(event: NDKEvent): NDKZapInvoice | null { zapped: recipient, zappedEvent: zappedEventId, amount, - comment: content + comment: content, }; return zapInvoice; From b45781d494219a1d2c79dfd915f948b4a587b106 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 8 Aug 2023 11:26:28 +0300 Subject: [PATCH 186/773] export NDKArticle properly --- package.json | 2 +- src/events/kinds/article.ts | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index acdd5bb0..3545facc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.8.6", + "version": "0.8.7", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/kinds/article.ts b/src/events/kinds/article.ts index d11d43a4..31e88f0a 100644 --- a/src/events/kinds/article.ts +++ b/src/events/kinds/article.ts @@ -6,7 +6,7 @@ import { NDKKind } from "./index.js"; /** * Represents a NIP-23 article. */ -class NDKArticle extends NDKEvent { +export class NDKArticle extends NDKEvent { constructor(ndk: NDK | undefined, rawEvent?: NostrEvent) { super(ndk, rawEvent); this.kind = NDKKind.Article; @@ -110,5 +110,3 @@ class NDKArticle extends NDKEvent { } } } - -export default NDKArticle; From baca75c22c31aeef2c246019d46b3a6593b3c0a2 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Wed, 9 Aug 2023 00:40:01 +0300 Subject: [PATCH 187/773] Prefer nevent encoding when relay is available --- package.json | 2 +- src/events/index.ts | 41 +++++++++++++--------------------- src/events/nip19.test.ts | 46 +++++++++++++++++++++++++++++++++++++++ src/events/nip19.ts | 7 ++++++ src/subscription/index.ts | 3 +++ 5 files changed, 72 insertions(+), 27 deletions(-) create mode 100644 src/events/nip19.test.ts diff --git a/package.json b/package.json index 3545facc..86a1b0cb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.8.7", + "version": "0.8.8", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/index.ts b/src/events/index.ts index 4d2d3323..41f0546e 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -70,7 +70,7 @@ export default class NDKEvent extends EventEmitter { kind: this.kind, pubkey: this.pubkey, id: this.id, - sig: this.sig, + sig: this.sig } as NostrEvent; } @@ -121,8 +121,7 @@ export default class NDKEvent extends EventEmitter { // tag p-tags in the event if they are not the same as the user signing this event for (const pTag of userOrEvent.getMatchingTags("p")) { if (pTag[1] === this.pubkey) continue; - if (this.tags.find((t) => t[0] === "p" && t[1] === pTag[1])) - continue; + if (this.tags.find((t) => t[0] === "p" && t[1] === pTag[1])) continue; this.tags.push(["p", pTag[1]]); } @@ -161,6 +160,12 @@ export default class NDKEvent extends EventEmitter { public isReplaceable = isReplaceable.bind(this); public isParamReplaceable = isParamReplaceable.bind(this); + + /** + * Encodes a bech32 id. + * + * @returns {string} - Encoded naddr, note or nevent. + */ public encode = encode.bind(this); public encrypt = encrypt.bind(this); public decrypt = decrypt.bind(this); @@ -229,15 +234,9 @@ export default class NDKEvent extends EventEmitter { * @param relaySet {NDKRelaySet} The relaySet to publish the even to. * @returns A promise that resolves to the relays the event was published to. */ - public async publish( - relaySet?: NDKRelaySet, - timeoutMs?: number - ): Promise> { + public async publish(relaySet?: NDKRelaySet, timeoutMs?: number): Promise> { if (!this.sig) await this.sign(); - if (!this.ndk) - throw new Error( - "NDKEvent must be associated with an NDK instance to publish" - ); + if (!this.ndk) throw new Error("NDKEvent must be associated with an NDK instance to publish"); return this.ndk.publish(this, relaySet, timeoutMs); } @@ -260,9 +259,7 @@ export default class NDKEvent extends EventEmitter { const dTag = this.getMatchingTags("d")[0]; // generate a string of 32 random bytes if (!dTag) { - const str = [...Array(16)] - .map(() => Math.random().toString(36)[2]) - .join(""); + const str = [...Array(16)].map(() => Math.random().toString(36)[2]).join(""); tags.push(["d", str]); } } @@ -347,25 +344,17 @@ export default class NDKEvent extends EventEmitter { * @param comment A comment to add to the zap request * @param extraTags Extra tags to add to the zap request */ - async zap( - amount: number, - comment?: string, - extraTags?: NDKTag[] - ): Promise { + async zap(amount: number, comment?: string, extraTags?: NDKTag[]): Promise { if (!this.ndk) throw new Error("No NDK instance found"); this.ndk.assertSigner(); const zap = new Zap({ ndk: this.ndk, - zappedEvent: this, + zappedEvent: this }); - const paymentRequest = await zap.createZapRequest( - amount, - comment, - extraTags - ); + const paymentRequest = await zap.createZapRequest(amount, comment, extraTags); // await zap.publish(amount); return paymentRequest; @@ -384,7 +373,7 @@ export default class NDKEvent extends EventEmitter { const e = new NDKEvent(this.ndk, { kind: NDKKind.EventDeletion, - content: reason || "", + content: reason || "" } as NostrEvent); e.tag(this); await e.publish(); diff --git a/src/events/nip19.test.ts b/src/events/nip19.test.ts new file mode 100644 index 00000000..af32c549 --- /dev/null +++ b/src/events/nip19.test.ts @@ -0,0 +1,46 @@ +import NDK, { NDKEvent, NDKRelay, NDKSubscription, NDKUser, NostrEvent } from "../index"; + +let ndk: NDK; + +beforeAll(() => { + ndk = new NDK(); +}); + +describe("NDKEvent", () => { + describe("encode", () => { + it("encodes NIP-33 events", () => { + const event = new NDKEvent(ndk, { + kind: 30000, + pubkey: "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52", + tags: [ [ "d", "1234" ]] + } as NostrEvent); + + const a = event.encode(); + expect(a).toBe("naddr1qqzrzv3nxspzp75cf0tahv5z7plpdeaws7ex52nmnwgtwfr2g3m37r844evqrr6jqvzqqqr4xq098d2k"); + }); + + it("encodes NIP-33 events with relay when it's known", () => { + const event = new NDKEvent(ndk, { + kind: 30000, + pubkey: "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52", + tags: [ [ "d", "1234" ]] + } as NostrEvent); + event.relay = new NDKRelay("wss://relay.f7z.io"); + + const a = event.encode(); + expect(a).toBe("naddr1qqzrzv3nxsq3yamnwvaz7tmjv4kxz7fwvcmh5tnfdupzp75cf0tahv5z7plpdeaws7ex52nmnwgtwfr2g3m37r844evqrr6jqvzqqqr4xq45f5n4"); + }); + + it("encodes events as notes when the relay it's known", () => { + const event = new NDKEvent(ndk, { + kind: 1, + pubkey: "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52", + tags: [ [ "d", "1234" ]] + } as NostrEvent); + event.relay = new NDKRelay("wss://relay.f7z.io"); + + const a = event.encode(); + expect(a).toBe("naddr1qqzrzv3nxsq3yamnwvaz7tmjv4kxz7fwvcmh5tnfdupzp75cf0tahv5z7plpdeaws7ex52nmnwgtwfr2g3m37r844evqrr6jqvzqqqr4xq45f5n4"); + }); + }); +}); \ No newline at end of file diff --git a/src/events/nip19.ts b/src/events/nip19.ts index 1960901f..816fd8d8 100644 --- a/src/events/nip19.ts +++ b/src/events/nip19.ts @@ -7,6 +7,13 @@ export function encode(this: NDKEvent) { kind: this.kind as number, pubkey: this.pubkey, identifier: this.replaceableDTag(), + relays: this.relay ? [this.relay.url] : [], + }); + } else if (this.relay) { + return nip19.neventEncode({ + id: this.tagId(), + relays: [this.relay.url], + author: this.pubkey, }); } else { return nip19.noteEncode(this.tagId()); diff --git a/src/subscription/index.ts b/src/subscription/index.ts index b63cdc11..70600e74 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -264,6 +264,9 @@ export class NDKSubscription extends EventEmitter { relay: NDKRelay | undefined, fromCache = false ) { + if (relay) event.relay = relay; + if (!relay) relay = event.relay; + if (!fromCache && relay) { // track the event per relay let events = this.eventsPerRelay.get(relay); From a593044de37407a1a1496254fc13b22a7d79a9c6 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Wed, 9 Aug 2023 16:36:15 +0300 Subject: [PATCH 188/773] Add deprecation notice (re: Calling publish directly on the NDK instance does not auto-sign the event #60) --- src/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/index.ts b/src/index.ts index a29569b3..c7100552 100644 --- a/src/index.ts +++ b/src/index.ts @@ -136,12 +136,16 @@ export default class NDK extends EventEmitter { * @param relaySet explicit relay set to use * @param timeoutMs timeout in milliseconds to wait for the event to be published * @returns The relays the event was published to + * + * @deprecated Use `event.publish()` instead */ public async publish( event: NDKEvent, relaySet?: NDKRelaySet, timeoutMs?: number ): Promise> { + this.debug("Deprecated: Use `event.publish()` instead"); + if (!relaySet) { // If we have a devWriteRelaySet, use it to publish all events relaySet = From f07d8a6ef0787642aad3a592cf1f3d070b0bc7ad Mon Sep 17 00:00:00 2001 From: pablof7z Date: Thu, 10 Aug 2023 15:22:07 +0300 Subject: [PATCH 189/773] add NDKRepost for NIP-18 event treatment --- package.json | 2 +- src/events/index.ts | 35 +++++++++++++++----- src/events/kinds/index.ts | 4 +++ src/events/kinds/repost.ts | 68 ++++++++++++++++++++++++++++++++++++++ src/events/nip19.test.ts | 28 +++++++++++----- src/index.ts | 3 -- 6 files changed, 119 insertions(+), 21 deletions(-) create mode 100644 src/events/kinds/repost.ts diff --git a/package.json b/package.json index 86a1b0cb..73075440 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.8.8", + "version": "0.8.9", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/index.ts b/src/events/index.ts index 41f0546e..d53677d2 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -70,7 +70,7 @@ export default class NDKEvent extends EventEmitter { kind: this.kind, pubkey: this.pubkey, id: this.id, - sig: this.sig + sig: this.sig, } as NostrEvent; } @@ -121,7 +121,8 @@ export default class NDKEvent extends EventEmitter { // tag p-tags in the event if they are not the same as the user signing this event for (const pTag of userOrEvent.getMatchingTags("p")) { if (pTag[1] === this.pubkey) continue; - if (this.tags.find((t) => t[0] === "p" && t[1] === pTag[1])) continue; + if (this.tags.find((t) => t[0] === "p" && t[1] === pTag[1])) + continue; this.tags.push(["p", pTag[1]]); } @@ -234,9 +235,15 @@ export default class NDKEvent extends EventEmitter { * @param relaySet {NDKRelaySet} The relaySet to publish the even to. * @returns A promise that resolves to the relays the event was published to. */ - public async publish(relaySet?: NDKRelaySet, timeoutMs?: number): Promise> { + public async publish( + relaySet?: NDKRelaySet, + timeoutMs?: number + ): Promise> { if (!this.sig) await this.sign(); - if (!this.ndk) throw new Error("NDKEvent must be associated with an NDK instance to publish"); + if (!this.ndk) + throw new Error( + "NDKEvent must be associated with an NDK instance to publish" + ); return this.ndk.publish(this, relaySet, timeoutMs); } @@ -259,7 +266,9 @@ export default class NDKEvent extends EventEmitter { const dTag = this.getMatchingTags("d")[0]; // generate a string of 32 random bytes if (!dTag) { - const str = [...Array(16)].map(() => Math.random().toString(36)[2]).join(""); + const str = [...Array(16)] + .map(() => Math.random().toString(36)[2]) + .join(""); tags.push(["d", str]); } } @@ -344,17 +353,25 @@ export default class NDKEvent extends EventEmitter { * @param comment A comment to add to the zap request * @param extraTags Extra tags to add to the zap request */ - async zap(amount: number, comment?: string, extraTags?: NDKTag[]): Promise { + async zap( + amount: number, + comment?: string, + extraTags?: NDKTag[] + ): Promise { if (!this.ndk) throw new Error("No NDK instance found"); this.ndk.assertSigner(); const zap = new Zap({ ndk: this.ndk, - zappedEvent: this + zappedEvent: this, }); - const paymentRequest = await zap.createZapRequest(amount, comment, extraTags); + const paymentRequest = await zap.createZapRequest( + amount, + comment, + extraTags + ); // await zap.publish(amount); return paymentRequest; @@ -373,7 +390,7 @@ export default class NDKEvent extends EventEmitter { const e = new NDKEvent(this.ndk, { kind: NDKKind.EventDeletion, - content: reason || "" + content: reason || "", } as NostrEvent); e.tag(this); await e.publish(); diff --git a/src/events/kinds/index.ts b/src/events/kinds/index.ts index 12bd367e..83396837 100644 --- a/src/events/kinds/index.ts +++ b/src/events/kinds/index.ts @@ -39,3 +39,7 @@ export enum NDKKind { DVMJobResult = 65001, DVMJobRequestTranscription = 65002, } +export * from "./article.js"; +export * from "./dvm/index.js"; +export * from "./lists/index.js"; +export * from "./repost.js"; diff --git a/src/events/kinds/repost.ts b/src/events/kinds/repost.ts new file mode 100644 index 00000000..17ce484d --- /dev/null +++ b/src/events/kinds/repost.ts @@ -0,0 +1,68 @@ +import NDK, { NDKFilter } from "../../index.js"; +import NDKEvent, { NDKTag, NostrEvent } from "../index.js"; + +type classWithConvertFunction = { + from: (event: NDKEvent) => T; +}; + +/** + * Handles NIP-18 reposts. + */ +export class NDKRepost extends NDKEvent { + private _repostedEvents: T[] | undefined; + + constructor(ndk?: NDK, rawEvent?: NostrEvent) { + super(ndk, rawEvent); + } + + static from(event: NDKEvent) { + return new NDKRepost(event.ndk, event.rawEvent()); + } + + /** + * Returns all reposted events by the current event. + * + * @param klass Optional class to convert the events to. + * @returns + */ + async repostedEvents(klass?: classWithConvertFunction): Promise<(T|NDKEvent)[]> { + const items: (T|NDKEvent)[] = []; + + if (!this.ndk) throw new Error('NDK instance not set'); + + if (this._repostedEvents !== undefined) return this._repostedEvents; + + for (const eventId of this.repostedEventIds()) { + const filter = filterForId(eventId); + const event = await this.ndk.fetchEvent(filter); + + if (event) { + items.push( + klass ? klass.from(event) : event + ); + } + } + + return items; + } + + /** + * Returns the reposted event IDs. + */ + repostedEventIds(): string[] { + return this.tags.filter( + (t: NDKTag) => t[0] === 'e' || t[0] === 'a' + ).map( + (t: NDKTag) => t[1] + ); + } +} + +function filterForId(id: string): NDKFilter { + if (id.match(/:/)) { + const [kind, pubkey, identifier] = id.split(':'); + return { kinds: [parseInt(kind)], authors: [pubkey], '#d': [identifier] }; + } else { + return { ids: [id] }; + } +} \ No newline at end of file diff --git a/src/events/nip19.test.ts b/src/events/nip19.test.ts index af32c549..ff16ffb7 100644 --- a/src/events/nip19.test.ts +++ b/src/events/nip19.test.ts @@ -1,4 +1,10 @@ -import NDK, { NDKEvent, NDKRelay, NDKSubscription, NDKUser, NostrEvent } from "../index"; +import NDK, { + NDKEvent, + NDKRelay, + NDKSubscription, + NDKUser, + NostrEvent, +} from "../index"; let ndk: NDK; @@ -12,35 +18,41 @@ describe("NDKEvent", () => { const event = new NDKEvent(ndk, { kind: 30000, pubkey: "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52", - tags: [ [ "d", "1234" ]] + tags: [["d", "1234"]], } as NostrEvent); const a = event.encode(); - expect(a).toBe("naddr1qqzrzv3nxspzp75cf0tahv5z7plpdeaws7ex52nmnwgtwfr2g3m37r844evqrr6jqvzqqqr4xq098d2k"); + expect(a).toBe( + "naddr1qqzrzv3nxspzp75cf0tahv5z7plpdeaws7ex52nmnwgtwfr2g3m37r844evqrr6jqvzqqqr4xq098d2k" + ); }); it("encodes NIP-33 events with relay when it's known", () => { const event = new NDKEvent(ndk, { kind: 30000, pubkey: "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52", - tags: [ [ "d", "1234" ]] + tags: [["d", "1234"]], } as NostrEvent); event.relay = new NDKRelay("wss://relay.f7z.io"); const a = event.encode(); - expect(a).toBe("naddr1qqzrzv3nxsq3yamnwvaz7tmjv4kxz7fwvcmh5tnfdupzp75cf0tahv5z7plpdeaws7ex52nmnwgtwfr2g3m37r844evqrr6jqvzqqqr4xq45f5n4"); + expect(a).toBe( + "naddr1qqzrzv3nxsq3yamnwvaz7tmjv4kxz7fwvcmh5tnfdupzp75cf0tahv5z7plpdeaws7ex52nmnwgtwfr2g3m37r844evqrr6jqvzqqqr4xq45f5n4" + ); }); it("encodes events as notes when the relay it's known", () => { const event = new NDKEvent(ndk, { kind: 1, pubkey: "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52", - tags: [ [ "d", "1234" ]] + tags: [["d", "1234"]], } as NostrEvent); event.relay = new NDKRelay("wss://relay.f7z.io"); const a = event.encode(); - expect(a).toBe("naddr1qqzrzv3nxsq3yamnwvaz7tmjv4kxz7fwvcmh5tnfdupzp75cf0tahv5z7plpdeaws7ex52nmnwgtwfr2g3m37r844evqrr6jqvzqqqr4xq45f5n4"); + expect(a).toBe( + "naddr1qqzrzv3nxsq3yamnwvaz7tmjv4kxz7fwvcmh5tnfdupzp75cf0tahv5z7plpdeaws7ex52nmnwgtwfr2g3m37r844evqrr6jqvzqqqr4xq45f5n4" + ); }); }); -}); \ No newline at end of file +}); diff --git a/src/index.ts b/src/index.ts index c7100552..2e1b7a58 100644 --- a/src/index.ts +++ b/src/index.ts @@ -21,9 +21,6 @@ import { NDKUserProfile } from "./user/profile.js"; export * from "./events/index.js"; export * from "./events/kinds/index.js"; -export * from "./events/kinds/article.js"; -export * from "./events/kinds/dvm/index.js"; -export * from "./events/kinds/lists/index.js"; export * from "./relay/index.js"; export * from "./relay/sets/index.js"; export * from "./signers/index.js"; From 5865eb8e919ab46f6ea6cd6626090eeb52e6ecd1 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Thu, 10 Aug 2023 16:03:43 +0300 Subject: [PATCH 190/773] prettify --- package.json | 2 +- src/events/kinds/index.ts | 4 ---- src/events/kinds/repost.ts | 28 ++++++++++++++-------------- src/index.ts | 6 +++++- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 73075440..48896f91 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.8.9", + "version": "0.8.11", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/kinds/index.ts b/src/events/kinds/index.ts index 83396837..12bd367e 100644 --- a/src/events/kinds/index.ts +++ b/src/events/kinds/index.ts @@ -39,7 +39,3 @@ export enum NDKKind { DVMJobResult = 65001, DVMJobRequestTranscription = 65002, } -export * from "./article.js"; -export * from "./dvm/index.js"; -export * from "./lists/index.js"; -export * from "./repost.js"; diff --git a/src/events/kinds/repost.ts b/src/events/kinds/repost.ts index 17ce484d..f19dc3a1 100644 --- a/src/events/kinds/repost.ts +++ b/src/events/kinds/repost.ts @@ -25,10 +25,10 @@ export class NDKRepost extends NDKEvent { * @param klass Optional class to convert the events to. * @returns */ - async repostedEvents(klass?: classWithConvertFunction): Promise<(T|NDKEvent)[]> { - const items: (T|NDKEvent)[] = []; + async repostedEvents(klass?: classWithConvertFunction): Promise { + const items: T[] = []; - if (!this.ndk) throw new Error('NDK instance not set'); + if (!this.ndk) throw new Error("NDK instance not set"); if (this._repostedEvents !== undefined) return this._repostedEvents; @@ -37,9 +37,7 @@ export class NDKRepost extends NDKEvent { const event = await this.ndk.fetchEvent(filter); if (event) { - items.push( - klass ? klass.from(event) : event - ); + items.push(klass ? klass.from(event) : (event as T)); } } @@ -50,19 +48,21 @@ export class NDKRepost extends NDKEvent { * Returns the reposted event IDs. */ repostedEventIds(): string[] { - return this.tags.filter( - (t: NDKTag) => t[0] === 'e' || t[0] === 'a' - ).map( - (t: NDKTag) => t[1] - ); + return this.tags + .filter((t: NDKTag) => t[0] === "e" || t[0] === "a") + .map((t: NDKTag) => t[1]); } } function filterForId(id: string): NDKFilter { if (id.match(/:/)) { - const [kind, pubkey, identifier] = id.split(':'); - return { kinds: [parseInt(kind)], authors: [pubkey], '#d': [identifier] }; + const [kind, pubkey, identifier] = id.split(":"); + return { + kinds: [parseInt(kind)], + authors: [pubkey], + "#d": [identifier], + }; } else { return { ids: [id] }; } -} \ No newline at end of file +} diff --git a/src/index.ts b/src/index.ts index 2e1b7a58..8fd950dd 100644 --- a/src/index.ts +++ b/src/index.ts @@ -19,8 +19,13 @@ import { import NDKUser, { NDKUserParams } from "./user/index.js"; import { NDKUserProfile } from "./user/profile.js"; +export { NDKEvent, NDKUser, NDKFilter, NDKUserProfile, NDKCacheAdapter }; export * from "./events/index.js"; export * from "./events/kinds/index.js"; +export * from "./events/kinds/article.js"; +export * from "./events/kinds/dvm/index.js"; +export * from "./events/kinds/lists/index.js"; +export * from "./events/kinds/repost.js"; export * from "./relay/index.js"; export * from "./relay/sets/index.js"; export * from "./signers/index.js"; @@ -32,7 +37,6 @@ export * from "./signers/private-key/index.js"; export * from "./subscription/index.js"; export * from "./user/profile.js"; export { NDKZapInvoice, zapInvoiceFromEvent } from "./zap/invoice.js"; -export { NDKEvent, NDKUser, NDKFilter, NDKUserProfile, NDKCacheAdapter }; export interface NDKConstructorParams { explicitRelayUrls?: string[]; From dace2a3d27481c63a4b668a7e185309f57cc8943 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Lo=CC=81pez=20Guevara?= Date: Thu, 10 Aug 2023 10:39:04 -0300 Subject: [PATCH 191/773] fix import --- src/user/index.ts | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/user/index.ts b/src/user/index.ts index 21364cf9..282e4441 100644 --- a/src/user/index.ts +++ b/src/user/index.ts @@ -1,11 +1,17 @@ import { nip05, nip19 } from "nostr-tools"; -import { NDKSubscriptionOptions } from "../../dist/index.js"; -import Event, { NDKTag, NostrEvent } from "../events/index.js"; -import NDKEvent from "../events/index.js"; +import { + default as Event, + default as NDKEvent, + NDKTag, + NostrEvent, +} from "../events/index.js"; import NDK, { NDKKind } from "../index.js"; -import { NDKSubscriptionCacheUsage } from "../subscription/index.js"; +import { + NDKSubscriptionCacheUsage, + NDKSubscriptionOptions, +} from "../subscription/index.js"; import { follows } from "./follows.js"; -import { mergeEvent, NDKUserProfile } from "./profile"; +import { NDKUserProfile, mergeEvent } from "./profile"; export interface NDKUserParams { npub?: string; From dd3e1b8a3a06a3cbbfacc14892d4f40b0e3d0cc1 Mon Sep 17 00:00:00 2001 From: Sam Samskies Date: Thu, 10 Aug 2023 11:39:37 -0700 Subject: [PATCH 192/773] minor README improvements (#69) * fix function name * add missing const --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ff812622..1dab7e50 100644 --- a/README.md +++ b/README.md @@ -92,7 +92,7 @@ You can pass an object with several options to a newly created instance of NDK. import NDK from "@nostr-dev-kit/ndk"; // Create a new NDK instance with explicit relays -ndk = new NDK({ explicitRelayUrls: ["wss://a.relay", "wss://another.relay"] }); +const ndk = new NDK({ explicitRelayUrls: ["wss://a.relay", "wss://another.relay"] }); ``` Note: In normal client use, it's best practice to instantiate NDK as a singleton class. [See more below](#architecture-decisions--suggestions). @@ -106,7 +106,7 @@ After you've instatiated NDK, you need to tell it to connect before you'll be ab import NDK from "@nostr-dev-kit/ndk"; // Create a new NDK instance with explicit relays -ndk = new NDK({ explicitRelayUrls: ["wss://a.relay", "wss://another.relay"] }); +const ndk = new NDK({ explicitRelayUrls: ["wss://a.relay", "wss://another.relay"] }); // Now connect to specified relays await ndk.connect(); @@ -242,7 +242,7 @@ subscription to remain active beyond `EOSE`, you should set it to `false`._ - The `closeOnEose` flag will make the connection close immediately after EOSE is seen. ```ts -ndk.subscription({ kinds: [0], authors: ["..."] }, { closeOnEose: false }); +ndk.subscribe({ kinds: [0], authors: ["..."] }, { closeOnEose: false }); ``` ## Convenience methods From b025f50479b0b25e9047ee3871dcb31f0533b4a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Lo=CC=81pez=20Guevara?= Date: Fri, 11 Aug 2023 13:22:22 -0300 Subject: [PATCH 193/773] fix(test): Circular depencency => TypeError: Class extends value undefined is not a constructor or null --- src/signers/private-key/index.test.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/signers/private-key/index.test.ts b/src/signers/private-key/index.test.ts index 654e6ca9..22e93283 100644 --- a/src/signers/private-key/index.test.ts +++ b/src/signers/private-key/index.test.ts @@ -1,5 +1,4 @@ -import { NostrEvent } from "../../events/index"; -import User from "../../user"; +import { NDKUser, NostrEvent } from "../../index.js"; import { NDKPrivateKeySigner } from "./index"; describe("NDKPrivateKeySigner", () => { @@ -22,7 +21,7 @@ describe("NDKPrivateKeySigner", () => { "e8eb7464168139c6ccb9111f768777f332fa1289dff11244ccfe89970ff776d4"; const signer = new NDKPrivateKeySigner(privateKey); const user = await signer.user(); - expect(user).toBeInstanceOf(User); + expect(user).toBeInstanceOf(NDKUser); expect(user.hexpubkey()).toBe( "07f61c41b44a923952db82e6e7bcd184b059fe087f58f9d9a918da391f38d503" ); From 9a1a9c34f7e7fb35a9c7e85a50e41c2bd058cbda Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 12 Aug 2023 12:22:53 +0300 Subject: [PATCH 194/773] allow fetchEvents to use multiple filters --- README.md | 8 ++++++-- package.json | 2 +- src/index.ts | 4 ++-- src/user/index.ts | 19 +++++++------------ 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 1dab7e50..6d90b139 100644 --- a/README.md +++ b/README.md @@ -92,7 +92,9 @@ You can pass an object with several options to a newly created instance of NDK. import NDK from "@nostr-dev-kit/ndk"; // Create a new NDK instance with explicit relays -const ndk = new NDK({ explicitRelayUrls: ["wss://a.relay", "wss://another.relay"] }); +const ndk = new NDK({ + explicitRelayUrls: ["wss://a.relay", "wss://another.relay"], +}); ``` Note: In normal client use, it's best practice to instantiate NDK as a singleton class. [See more below](#architecture-decisions--suggestions). @@ -106,7 +108,9 @@ After you've instatiated NDK, you need to tell it to connect before you'll be ab import NDK from "@nostr-dev-kit/ndk"; // Create a new NDK instance with explicit relays -const ndk = new NDK({ explicitRelayUrls: ["wss://a.relay", "wss://another.relay"] }); +const ndk = new NDK({ + explicitRelayUrls: ["wss://a.relay", "wss://another.relay"], +}); // Now connect to specified relays await ndk.connect(); diff --git a/package.json b/package.json index 48896f91..174a8112 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.8.11", + "version": "0.8.12", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/index.ts b/src/index.ts index 8fd950dd..aa76a38b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -217,7 +217,7 @@ export default class NDK extends EventEmitter { * Fetch events */ public async fetchEvents( - filter: NDKFilter, + filters: NDKFilter | NDKFilter[], opts?: NDKSubscriptionOptions, relaySet?: NDKRelaySet ): Promise> { @@ -225,7 +225,7 @@ export default class NDK extends EventEmitter { const events: Map = new Map(); const relaySetSubscription = this.subscribe( - filter, + filters, { ...(opts || {}), closeOnEose: true }, relaySet, false diff --git a/src/user/index.ts b/src/user/index.ts index 282e4441..ae47aee3 100644 --- a/src/user/index.ts +++ b/src/user/index.ts @@ -1,10 +1,5 @@ import { nip05, nip19 } from "nostr-tools"; -import { - default as Event, - default as NDKEvent, - NDKTag, - NostrEvent, -} from "../events/index.js"; +import { default as NDKEvent, NDKTag, NostrEvent } from "../events/index.js"; import NDK, { NDKKind } from "../index.js"; import { NDKSubscriptionCacheUsage, @@ -68,16 +63,16 @@ export default class NDKUser { /** * Fetch a user's kind 0 metadata events and merge the events in a single up-to-date profile * @param opts {NDKSubscriptionOptions} A set of NDKSubscriptionOptions - * @returns {Promise>} A set of all NDKEvents events returned for the given user + * @returns {Promise>} A set of all NDKEvents events returned for the given user */ public async fetchProfile( opts?: NDKSubscriptionOptions - ): Promise | null> { + ): Promise | null> { if (!this.ndk) throw new Error("NDK not set"); if (!this.profile) this.profile = {}; - let setMetadataEvents: Set | null = null; + let setMetadataEvents: Set | null = null; // if no options have been set and we have a cache, try to load from cache with no grouping // This is done in favour of simply using NDKSubscriptionCacheUsage.CACHE_FIRST since @@ -139,9 +134,9 @@ export default class NDKUser { /** * Returns a set of relay list events for a user. - * @returns {Promise>} A set of NDKEvents returned for the given user. + * @returns {Promise>} A set of NDKEvents returned for the given user. */ - public async relayList(): Promise> { + public async relayList(): Promise> { if (!this.ndk) throw new Error("NDK not set"); const relayListEvents = await this.ndk.fetchEvents({ @@ -153,7 +148,7 @@ export default class NDKUser { return relayListEvents; } - return new Set(); + return new Set(); } /** From 281908551349f9502d3b219ddc0ae105d6be4e1b Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 12 Aug 2023 13:03:46 +0300 Subject: [PATCH 195/773] fix tests --- src/events/nip19.test.ts | 6 ++---- src/relay/index.ts | 4 ++-- src/relay/pool/index.ts | 2 +- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/events/nip19.test.ts b/src/events/nip19.test.ts index ff16ffb7..a4b77e73 100644 --- a/src/events/nip19.test.ts +++ b/src/events/nip19.test.ts @@ -1,8 +1,6 @@ import NDK, { NDKEvent, NDKRelay, - NDKSubscription, - NDKUser, NostrEvent, } from "../index"; @@ -41,7 +39,7 @@ describe("NDKEvent", () => { ); }); - it("encodes events as notes when the relay it's known", () => { + it("encodes events as notes when the relay is known", () => { const event = new NDKEvent(ndk, { kind: 1, pubkey: "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52", @@ -51,7 +49,7 @@ describe("NDKEvent", () => { const a = event.encode(); expect(a).toBe( - "naddr1qqzrzv3nxsq3yamnwvaz7tmjv4kxz7fwvcmh5tnfdupzp75cf0tahv5z7plpdeaws7ex52nmnwgtwfr2g3m37r844evqrr6jqvzqqqr4xq45f5n4" + "nevent1qqqqzynhwden5te0wfjkccte9enrw73wd9hsyg86np9a0kajstc8u9h846rmy6320wdepdeydfz8w8cv7kh9sqv02gyxar4d" ); }); }); diff --git a/src/relay/index.ts b/src/relay/index.ts index fa85e11d..76f6d14e 100644 --- a/src/relay/index.ts +++ b/src/relay/index.ts @@ -240,12 +240,12 @@ export class NDKRelay extends EventEmitter { ): Promise { const nostrEvent = await event.toNostrEvent(); const publish = this.relay.publish(nostrEvent as any); - let publishTimeout: NodeJS.Timeout; + let publishTimeout: NodeJS.Timeout | number; const publishPromise = new Promise((resolve, reject) => { publish .then(() => { - clearTimeout(publishTimeout); + clearTimeout(publishTimeout as unknown as NodeJS.Timeout); this.emit("published", event); resolve(true); }) diff --git a/src/relay/pool/index.ts b/src/relay/pool/index.ts index 8cad1ddb..531b484e 100644 --- a/src/relay/pool/index.ts +++ b/src/relay/pool/index.ts @@ -59,7 +59,7 @@ export class NDKPool extends EventEmitter { // set a timer to remove the relay from the pool if it is not used within the specified time const timer = setTimeout(() => { this.removeRelay(relay.url); - }, removeIfUnusedAfter); + }, removeIfUnusedAfter) as unknown as NodeJS.Timeout; this.temporaryRelayTimers.set(relay.url, timer); } From dcb6d27a5ca357711ad35f82db87e2f19db2ee49 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 12 Aug 2023 13:05:35 +0300 Subject: [PATCH 196/773] use an explicit deduplication key (fixes: tagId should handle kind 0, 3 and 10k #34) --- package.json | 2 +- src/events/index.test.ts | 32 ++++++++++++++++++++++++++++++++ src/events/index.ts | 15 +++++++++++++++ src/index.ts | 16 ++++++++++++---- 4 files changed, 60 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 174a8112..8e794fa1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.8.12", + "version": "0.8.13", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/index.test.ts b/src/events/index.test.ts index 6fb89376..cb84bad7 100644 --- a/src/events/index.test.ts +++ b/src/events/index.test.ts @@ -18,6 +18,38 @@ describe("NDKEvent", () => { event.author = user1; }); + describe("deduplicationKey", () => { + it("returns : for kinds 0", () => { + event.kind = 0; + const result = event.deduplicationKey(); + expect(result).toEqual(`0:${user1.hexpubkey()}`); + }); + + it("returns : for kinds 3", () => { + event.kind = 3; + const result = event.deduplicationKey(); + expect(result).toEqual(`3:${user1.hexpubkey()}`); + }); + + it("returns tagId for other kinds", () => { + event.kind = 2; + const spy = jest.spyOn(event, "tagId").mockReturnValue("mockTagId"); + const result = event.deduplicationKey(); + expect(result).toEqual("mockTagId"); + expect(spy).toHaveBeenCalled(); + spy.mockRestore(); + }); + + it("returns parameterized tagId for kinds between 30k and 40k", () => { + event.kind = 35000; + const spy = jest.spyOn(event, "tagId").mockReturnValue("parameterizedTagId"); + const result = event.deduplicationKey(); + expect(result).toEqual("parameterizedTagId"); + expect(spy).toHaveBeenCalled(); + spy.mockRestore(); + }); + }); + describe("tag", () => { it("tags a user without a marker", () => { event.tag(user2); diff --git a/src/events/index.ts b/src/events/index.ts index d53677d2..1f64edbb 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -292,6 +292,21 @@ export default class NDKEvent extends EventEmitter { throw new Error("Event is not a parameterized replaceable event"); } + /** + * Provides a deduplication key for the event. + * + * For kinds 0, 3, 10k-20k this will be the event : + * For kinds 30k-40k this will be the event :: + * For all other kinds this will be the event id + */ + deduplicationKey(): string { + if (this.kind === 0 || this.kind === 3) { + return `${this.kind}:${this.pubkey}`; + } else { + return this.tagId(); + } + } + /** * Returns the id of the event or, if it's a parameterized event, the generated id of the event using "d" tag, pubkey, and kind. * @returns {string} The id diff --git a/src/index.ts b/src/index.ts index aa76a38b..e2068158 100644 --- a/src/index.ts +++ b/src/index.ts @@ -231,15 +231,23 @@ export default class NDK extends EventEmitter { false ); - relaySetSubscription.on("event", (event: NDKEvent) => { - const existingEvent = events.get(event.tagId()); + const onEvent = (event: NDKEvent) => { + const dedupKey = event.deduplicationKey(); + + const existingEvent = events.get(dedupKey); if (existingEvent) { event = dedupEvent(existingEvent, event); } event.ndk = this; - events.set(event.tagId(), event); - }); + events.set(dedupKey, event); + }; + + // We want to inspect duplicated events + // so we can dedup them + relaySetSubscription.on("event", onEvent); + relaySetSubscription.on("event:dup", onEvent); + relaySetSubscription.on("eose", () => { resolve(new Set(events.values())); }); From 97d68798d43466b065c3125c867d79d02f83db2b Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 12 Aug 2023 13:31:53 +0300 Subject: [PATCH 197/773] Add swarmstr to REFERENCES.md --- REFERENCES.md | 1 + src/events/index.test.ts | 4 +++- src/events/nip19.test.ts | 6 +----- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/REFERENCES.md b/REFERENCES.md index b6e87df9..cfacb70a 100644 --- a/REFERENCES.md +++ b/REFERENCES.md @@ -28,3 +28,4 @@ to this list. - React, Frontend - [Stemstr](https://github.com/stemstr/Client) - By [@stemstr](https://nostr.com/npub1stemstrls4f5plqeqkeq43gtjhtycuqd9w25v5r5z5ygaq2n2sjsd6mul5) - [Audgit.ai](https://github.com/ArcadeLabsInc/audgit.ai) - By [@ArcadeLabsInc](https://nostr.com/npub1tlv67m7xvlyplzexuynmfpguvyet0sjffce3y8vu0suuyuwgzauqjk7fdm) +- [Swarmstr](https://github.com/ptrio42/swarmstr.com) - By [@pitiunited](https://nostr.com/npub178umpxtdflcm7a08nexvs4mu384kx0ngg9w8ltm5eut6q7lcp0vq05qrg4) \ No newline at end of file diff --git a/src/events/index.test.ts b/src/events/index.test.ts index cb84bad7..d229793b 100644 --- a/src/events/index.test.ts +++ b/src/events/index.test.ts @@ -42,7 +42,9 @@ describe("NDKEvent", () => { it("returns parameterized tagId for kinds between 30k and 40k", () => { event.kind = 35000; - const spy = jest.spyOn(event, "tagId").mockReturnValue("parameterizedTagId"); + const spy = jest + .spyOn(event, "tagId") + .mockReturnValue("parameterizedTagId"); const result = event.deduplicationKey(); expect(result).toEqual("parameterizedTagId"); expect(spy).toHaveBeenCalled(); diff --git a/src/events/nip19.test.ts b/src/events/nip19.test.ts index a4b77e73..ca352633 100644 --- a/src/events/nip19.test.ts +++ b/src/events/nip19.test.ts @@ -1,8 +1,4 @@ -import NDK, { - NDKEvent, - NDKRelay, - NostrEvent, -} from "../index"; +import NDK, { NDKEvent, NDKRelay, NostrEvent } from "../index"; let ndk: NDK; From 3aebdfda6b314097175f4495b9a49c057cfdbd74 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Mon, 14 Aug 2023 23:33:31 +0300 Subject: [PATCH 198/773] bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8e794fa1..483ed38a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.8.13", + "version": "0.8.14", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", From 575e300b144dc56bf9a427607758f809ea81c632 Mon Sep 17 00:00:00 2001 From: Jeff Gardner <202880+erskingardner@users.noreply.github.com> Date: Tue, 15 Aug 2023 15:55:55 +0200 Subject: [PATCH 199/773] Add Classified Event Kind --- src/events/kinds/article.ts | 2 +- src/events/kinds/classified.ts | 172 +++++++++++++++++++++++++++++++++ src/events/kinds/index.ts | 1 + 3 files changed, 174 insertions(+), 1 deletion(-) create mode 100644 src/events/kinds/classified.ts diff --git a/src/events/kinds/article.ts b/src/events/kinds/article.ts index 31e88f0a..8e0ea94b 100644 --- a/src/events/kinds/article.ts +++ b/src/events/kinds/article.ts @@ -15,7 +15,7 @@ export class NDKArticle extends NDKEvent { /** * Creates a NDKArticle from an existing NDKEvent. * - * @param event NDKEVent to create the NDKArticle from. + * @param event NDKEvent to create the NDKArticle from. * @returns NDKArticle */ static from(event: NDKEvent) { diff --git a/src/events/kinds/classified.ts b/src/events/kinds/classified.ts new file mode 100644 index 00000000..e3adbf38 --- /dev/null +++ b/src/events/kinds/classified.ts @@ -0,0 +1,172 @@ +import NDK from "../../index.js"; +import { ContentTag, type NostrEvent } from "../index.js"; +import NDKEvent from "../index.js"; +import { NDKKind } from "./index.js"; +import { NDKTag } from "../index.js"; + +interface NDKClassifiedPriceTag { + amount: number; + currency?: string; + frequency?: string; +} + +/** + * Represents a NIP-99 Classified Listing. + */ +export class NDKClassified extends NDKEvent { + constructor(ndk: NDK | undefined, rawEvent?: NostrEvent) { + super(ndk, rawEvent); + this.kind = NDKKind.Classified; + } + + /** + * Creates a NDKClassified from an existing NDKEvent. + * + * @param event NDKEvent to create the NDKClassified from. + * @returns NDKClassified + */ + static from(event: NDKEvent) { + return new NDKClassified(event.ndk, event.rawEvent()); + } + + /** + * Getter for the classified title. + * + * @returns {string | undefined} - The classified title if available, otherwise undefined. + */ + get title(): string | undefined { + return this.tagValue("title"); + } + + /** + * Setter for the classified title. + * + * @param {string | undefined} title - The title to set for the classified. + */ + set title(title: string | undefined) { + if (title) { + this.tags.push(["title", title]); + } else { + this.removeTag("title"); + } + } + + /** + * Getter for the classified summary. + * + * @returns {string | undefined} - The classified summary if available, otherwise undefined. + */ + get summary(): string | undefined { + return this.tagValue("summary"); + } + + /** + * Setter for the classified summary. + * + * @param {string | undefined} summary - The summary to set for the classified. + */ + set summary(summary: string | undefined) { + if (summary) { + this.tags.push(["summary", summary]); + } else { + this.removeTag("summary"); + } + } + + /** + * Getter for the classified's publication timestamp. + * + * @returns {number | undefined} - The Unix timestamp of when the classified was published or undefined. + */ + get published_at(): number | undefined { + const tag = this.tagValue("published_at"); + if (tag) { + return parseInt(tag); + } + return undefined; + } + + /** + * Setter for the classified's publication timestamp. + * + * @param {number | undefined} timestamp - The Unix timestamp to set for the classified's publication date. + */ + set published_at(timestamp: number | undefined) { + this.removeTag("published_at"); // Removes any existing "published_at" tag. + + if (timestamp !== undefined) { + this.tags.push(["published_at", timestamp.toString()]); + } + } + + /** + * Getter for the classified location. + * + * @returns {string | undefined} - The classified location if available, otherwise undefined. + */ + get location(): string | undefined { + return this.tagValue("location"); + } + + /** + * Setter for the classified location. + * + * @param {string | undefined} location - The location to set for the classified. + */ + set location(location: string | undefined) { + if (location) { + this.tags.push(["location", location]); + } else { + this.removeTag("location"); + } + } + + /** + * Getter for the classified price. + * + * @returns {NDKClassifiedPriceTag | undefined} - The classified price if available, otherwise undefined. + */ + get price(): NDKClassifiedPriceTag | undefined { + const priceTag = this.tags.find((tag) => tag[0] === 'price'); + if (priceTag) { + return {amount: parseFloat(priceTag[1]), currency: priceTag[2], frequency: priceTag[3]}; + } else { + return undefined; + } + } + + /** + * Setter for the classified price. + * + * @param {NDKClassifiedPriceTag | undefined} price - The price to set for the classified. + */ + set price(priceTag: NDKClassifiedPriceTag | undefined) { + if (priceTag?.amount) { + const tag: NDKTag = ["price", priceTag.amount.toString()]; + if(priceTag.currency) tag.push(priceTag.currency); + if(priceTag.frequency) tag.push(priceTag.frequency); + + this.tags.push(tag); + } else { + this.removeTag("price"); + } + } + + /** + * Generates content tags for the classified. + * + * This method first checks and sets the publication date if not available, + * and then generates content tags based on the base NDKEvent class. + * + * @returns {ContentTag} - The generated content tags. + */ + protected generateTags(): ContentTag { + super.generateTags(); + + if (!this.published_at) { + this.published_at = this.created_at; + } + + return super.generateTags(); + } +} diff --git a/src/events/kinds/index.ts b/src/events/kinds/index.ts index 12bd367e..fc7f8784 100644 --- a/src/events/kinds/index.ts +++ b/src/events/kinds/index.ts @@ -32,6 +32,7 @@ export enum NDKKind { MarketProduct = 30018, Article = 30023, AppSpecificData = 30078, + Classified = 30402, CategorizedHighlightList = 39802, // NIP-90: Data Vending Machines From 3780f03b017c336765f8497943d6c75b671bdffb Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 15 Aug 2023 21:21:18 +0300 Subject: [PATCH 200/773] don't require a kind to group subscriptions --- package.json | 2 +- src/events/kinds/repost.ts | 11 +++++++++-- src/subscription/index.ts | 5 ++--- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 483ed38a..001c2cd2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.8.14", + "version": "0.8.15-2", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/kinds/repost.ts b/src/events/kinds/repost.ts index f19dc3a1..783df19b 100644 --- a/src/events/kinds/repost.ts +++ b/src/events/kinds/repost.ts @@ -1,3 +1,4 @@ +import { NDKSubscriptionOptions } from "../../subscription/index.js"; import NDK, { NDKFilter } from "../../index.js"; import NDKEvent, { NDKTag, NostrEvent } from "../index.js"; @@ -25,7 +26,10 @@ export class NDKRepost extends NDKEvent { * @param klass Optional class to convert the events to. * @returns */ - async repostedEvents(klass?: classWithConvertFunction): Promise { + async repostedEvents( + klass?: classWithConvertFunction, + opts?: NDKSubscriptionOptions + ): Promise { const items: T[] = []; if (!this.ndk) throw new Error("NDK instance not set"); @@ -34,7 +38,10 @@ export class NDKRepost extends NDKEvent { for (const eventId of this.repostedEventIds()) { const filter = filterForId(eventId); - const event = await this.ndk.fetchEvent(filter); + const event = await this.ndk.fetchEvent( + filter, + opts + ); if (event) { items.push(klass ? klass.from(event) : (event as T)); diff --git a/src/subscription/index.ts b/src/subscription/index.ts index 70600e74..8ccdb0f2 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -153,12 +153,11 @@ export class NDKSubscription extends EventEmitter { const filter = this.filters[0]; // Check if there is a kind and no time-based filters - const hasKind = (filter.kinds?.length || 0) > 0; const noTimeConstraints = !filter.since && !filter.until; const noLimit = !filter.limit; - if (hasKind && noTimeConstraints && noLimit) { - let id = filter.kinds!.join(","); + if (noTimeConstraints && noLimit) { + let id = filter.kinds ? filter.kinds.join(",") : ""; const keys = Object.keys(filter || {}) .sort() .join("-"); From ece64e1cf4e98f0a06710475ebce3dfed93bcca8 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 15 Aug 2023 22:52:15 +0300 Subject: [PATCH 201/773] add article image getter/setter --- REFERENCES.md | 2 +- package.json | 2 +- src/events/kinds/article.ts | 28 +++++++++++++++++++++++----- src/events/kinds/repost.ts | 7 ++----- 4 files changed, 27 insertions(+), 12 deletions(-) diff --git a/REFERENCES.md b/REFERENCES.md index cfacb70a..0c6eec5a 100644 --- a/REFERENCES.md +++ b/REFERENCES.md @@ -28,4 +28,4 @@ to this list. - React, Frontend - [Stemstr](https://github.com/stemstr/Client) - By [@stemstr](https://nostr.com/npub1stemstrls4f5plqeqkeq43gtjhtycuqd9w25v5r5z5ygaq2n2sjsd6mul5) - [Audgit.ai](https://github.com/ArcadeLabsInc/audgit.ai) - By [@ArcadeLabsInc](https://nostr.com/npub1tlv67m7xvlyplzexuynmfpguvyet0sjffce3y8vu0suuyuwgzauqjk7fdm) -- [Swarmstr](https://github.com/ptrio42/swarmstr.com) - By [@pitiunited](https://nostr.com/npub178umpxtdflcm7a08nexvs4mu384kx0ngg9w8ltm5eut6q7lcp0vq05qrg4) \ No newline at end of file +- [Swarmstr](https://github.com/ptrio42/swarmstr.com) - By [@pitiunited](https://nostr.com/npub178umpxtdflcm7a08nexvs4mu384kx0ngg9w8ltm5eut6q7lcp0vq05qrg4) diff --git a/package.json b/package.json index 001c2cd2..dca66733 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.8.15-2", + "version": "0.8.17", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/kinds/article.ts b/src/events/kinds/article.ts index 31e88f0a..90df6942 100644 --- a/src/events/kinds/article.ts +++ b/src/events/kinds/article.ts @@ -37,11 +37,29 @@ export class NDKArticle extends NDKEvent { * @param {string | undefined} title - The title to set for the article. */ set title(title: string | undefined) { - if (title) { - this.tags.push(["title", title]); - } else { - this.removeTag("title"); - } + this.removeTag("title"); + + if (title) this.tags.push(["title", title]); + } + + /** + * Getter for the article image. + * + * @returns {string | undefined} - The article image if available, otherwise undefined. + */ + get image(): string | undefined { + return this.tagValue("image"); + } + + /** + * Setter for the article image. + * + * @param {string | undefined} image - The image to set for the article. + */ + set image(image: string | undefined) { + this.removeTag("image"); + + if (image) this.tags.push(["image", image]); } /** diff --git a/src/events/kinds/repost.ts b/src/events/kinds/repost.ts index 783df19b..ab4a98a6 100644 --- a/src/events/kinds/repost.ts +++ b/src/events/kinds/repost.ts @@ -1,5 +1,5 @@ -import { NDKSubscriptionOptions } from "../../subscription/index.js"; import NDK, { NDKFilter } from "../../index.js"; +import { NDKSubscriptionOptions } from "../../subscription/index.js"; import NDKEvent, { NDKTag, NostrEvent } from "../index.js"; type classWithConvertFunction = { @@ -38,10 +38,7 @@ export class NDKRepost extends NDKEvent { for (const eventId of this.repostedEventIds()) { const filter = filterForId(eventId); - const event = await this.ndk.fetchEvent( - filter, - opts - ); + const event = await this.ndk.fetchEvent(filter, opts); if (event) { items.push(klass ? klass.from(event) : (event as T)); From 91ce7c4cc86181f81282346cebbd71e5ce0c1f8e Mon Sep 17 00:00:00 2001 From: Jeff Gardner <202880+erskingardner@users.noreply.github.com> Date: Wed, 16 Aug 2023 13:32:30 +0200 Subject: [PATCH 202/773] Improve name getter for other common lists --- src/events/kinds/lists/index.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/events/kinds/lists/index.ts b/src/events/kinds/lists/index.ts index 1981439d..fd6c68ce 100644 --- a/src/events/kinds/lists/index.ts +++ b/src/events/kinds/lists/index.ts @@ -49,7 +49,13 @@ export class NDKList extends NDKEvent { * Returns the name of the list. */ get name(): string | undefined { + if(this.kind === NDKKind.MuteList && !this.tagValue("name")) { + return "Mute"; + } else if (this.kind === NDKKind.PinList && !this.tagValue("name")) { + return "Pin"; + } else { return this.tagValue("name") ?? this.tagValue("d"); + } } /** From 80851c9ecb86af0bc0a4ae7310a7e066a7061c46 Mon Sep 17 00:00:00 2001 From: jeremyd Date: Sat, 12 Aug 2023 12:39:22 -0700 Subject: [PATCH 203/773] fix for #52 - remove websocket-polyfill, including pnpm-lock.yaml --- package.json | 4 +- pnpm-lock.yaml | 12225 ++++++++++++++++++------------------------- src/relay/index.ts | 1 - 3 files changed, 5067 insertions(+), 7163 deletions(-) diff --git a/package.json b/package.json index dca66733..1a8061aa 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,7 @@ "@types/node": "^14.11.2", "gts": "^3.1.1", "jest": "^29.5.0", + "pnpm": "^8.6.12", "prettier": "^3.0.1", "prettier-plugin-organize-imports": "^3.2.2", "ts-jest": "^29.1.0", @@ -70,7 +71,6 @@ "node-fetch": "^3.3.1", "nostr-tools": "^1.14.0", "tsd": "^0.28.1", - "utf8-buffer": "^1.0.0", - "websocket-polyfill": "^0.0.3" + "utf8-buffer": "^1.0.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d795ba72..e3123d48 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,7191 +1,5096 @@ -lockfileVersion: "6.1" +lockfileVersion: '6.0' settings: - autoInstallPeers: true - excludeLinksFromLockfile: false + autoInstallPeers: true + excludeLinksFromLockfile: false dependencies: - "@noble/hashes": - specifier: ^1.3.1 - version: 1.3.1 - "@noble/secp256k1": - specifier: ^2.0.0 - version: 2.0.0 - "@scure/base": - specifier: ^1.1.1 - version: 1.1.1 - "@typescript-eslint/eslint-plugin": - specifier: ^5.57.0 - version: 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.4) - "@typescript-eslint/parser": - specifier: ^5.57.0 - version: 5.57.0(eslint@8.37.0)(typescript@5.0.4) - debug: - specifier: ^4.3.4 - version: 4.3.4 - esbuild: - specifier: ^0.17.15 - version: 0.17.15 - esbuild-plugin-alias: - specifier: ^0.2.1 - version: 0.2.1 - eslint: - specifier: ^8.37.0 - version: 8.37.0 - eslint-config-prettier: - specifier: ^8.8.0 - version: 8.8.0(eslint@8.37.0) - eslint-plugin-import: - specifier: ^2.27.5 - version: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint@8.37.0) - esm-loader-typescript: - specifier: ^1.0.4 - version: 1.0.4 - eventemitter3: - specifier: ^5.0.1 - version: 5.0.1 - light-bolt11-decoder: - specifier: ^3.0.0 - version: 3.0.0 - node-fetch: - specifier: ^3.3.1 - version: 3.3.1 - nostr-tools: - specifier: ^1.14.0 - version: 1.14.0 - tsd: - specifier: ^0.28.1 - version: 0.28.1 - utf8-buffer: - specifier: ^1.0.0 - version: 1.0.0 - websocket-polyfill: - specifier: ^0.0.3 - version: 0.0.3 + '@noble/hashes': + specifier: ^1.3.1 + version: 1.3.1 + '@noble/secp256k1': + specifier: ^2.0.0 + version: 2.0.0 + '@scure/base': + specifier: ^1.1.1 + version: 1.1.1 + '@typescript-eslint/eslint-plugin': + specifier: ^5.57.0 + version: 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.4) + '@typescript-eslint/parser': + specifier: ^5.57.0 + version: 5.57.0(eslint@8.37.0)(typescript@5.0.4) + debug: + specifier: ^4.3.4 + version: 4.3.4 + esbuild: + specifier: ^0.17.15 + version: 0.17.15 + esbuild-plugin-alias: + specifier: ^0.2.1 + version: 0.2.1 + eslint: + specifier: ^8.37.0 + version: 8.37.0 + eslint-config-prettier: + specifier: ^8.8.0 + version: 8.8.0(eslint@8.37.0) + eslint-plugin-import: + specifier: ^2.27.5 + version: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint@8.37.0) + esm-loader-typescript: + specifier: ^1.0.4 + version: 1.0.4 + eventemitter3: + specifier: ^5.0.1 + version: 5.0.1 + light-bolt11-decoder: + specifier: ^3.0.0 + version: 3.0.0 + node-fetch: + specifier: ^3.3.1 + version: 3.3.1 + nostr-tools: + specifier: ^1.14.0 + version: 1.14.0 + tsd: + specifier: ^0.28.1 + version: 0.28.1 + utf8-buffer: + specifier: ^1.0.0 + version: 1.0.0 devDependencies: - "@trivago/prettier-plugin-sort-imports": - specifier: ^4.2.0 - version: 4.2.0(prettier@3.0.1) - "@types/debug": - specifier: ^4.1.7 - version: 4.1.7 - "@types/jest": - specifier: ^29.5.0 - version: 29.5.0 - "@types/node": - specifier: ^14.11.2 - version: 14.11.2 - gts: - specifier: ^3.1.1 - version: 3.1.1(typescript@5.0.4) - jest: - specifier: ^29.5.0 - version: 29.5.0(@types/node@14.11.2) - prettier: - specifier: ^3.0.1 - version: 3.0.1 - prettier-plugin-organize-imports: - specifier: ^3.2.2 - version: 3.2.2(prettier@3.0.1)(typescript@5.0.4) - ts-jest: - specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.21.4)(esbuild@0.17.15)(jest@29.5.0)(typescript@5.0.4) - tsup: - specifier: ^6.7.0 - version: 6.7.0(typescript@5.0.4) - typedoc: - specifier: ^0.24.8 - version: 0.24.8(typescript@5.0.4) - typedoc-plugin-rename-defaults: - specifier: ^0.6.5 - version: 0.6.5(typedoc@0.24.8) - typescript: - specifier: ^5.0.4 - version: 5.0.4 + '@trivago/prettier-plugin-sort-imports': + specifier: ^4.2.0 + version: 4.2.0(prettier@3.0.1) + '@types/debug': + specifier: ^4.1.7 + version: 4.1.7 + '@types/jest': + specifier: ^29.5.0 + version: 29.5.0 + '@types/node': + specifier: ^14.11.2 + version: 14.11.2 + gts: + specifier: ^3.1.1 + version: 3.1.1(typescript@5.0.4) + jest: + specifier: ^29.5.0 + version: 29.5.0(@types/node@14.11.2) + pnpm: + specifier: ^8.6.12 + version: 8.6.12 + prettier: + specifier: ^3.0.1 + version: 3.0.1 + prettier-plugin-organize-imports: + specifier: ^3.2.2 + version: 3.2.2(prettier@3.0.1)(typescript@5.0.4) + ts-jest: + specifier: ^29.1.0 + version: 29.1.0(@babel/core@7.21.4)(esbuild@0.17.15)(jest@29.5.0)(typescript@5.0.4) + tsup: + specifier: ^6.7.0 + version: 6.7.0(typescript@5.0.4) + typedoc: + specifier: ^0.24.8 + version: 0.24.8(typescript@5.0.4) + typedoc-plugin-rename-defaults: + specifier: ^0.6.5 + version: 0.6.5(typedoc@0.24.8) + typescript: + specifier: ^5.0.4 + version: 5.0.4 packages: - /@ampproject/remapping@2.2.1: - resolution: - { - integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==, - } - engines: { node: ">=6.0.0" } - dependencies: - "@jridgewell/gen-mapping": 0.3.3 - "@jridgewell/trace-mapping": 0.3.18 - dev: true - - /@babel/code-frame@7.12.11: - resolution: - { - integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==, - } - dependencies: - "@babel/highlight": 7.18.6 - dev: true - - /@babel/code-frame@7.21.4: - resolution: - { - integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/highlight": 7.18.6 - - /@babel/compat-data@7.21.4: - resolution: - { - integrity: sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==, - } - engines: { node: ">=6.9.0" } - dev: true - - /@babel/core@7.21.4: - resolution: - { - integrity: sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@ampproject/remapping": 2.2.1 - "@babel/code-frame": 7.21.4 - "@babel/generator": 7.21.4 - "@babel/helper-compilation-targets": 7.21.4(@babel/core@7.21.4) - "@babel/helper-module-transforms": 7.21.2 - "@babel/helpers": 7.21.0 - "@babel/parser": 7.21.4 - "@babel/template": 7.20.7 - "@babel/traverse": 7.21.4 - "@babel/types": 7.21.4 - convert-source-map: 1.9.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/generator@7.17.7: - resolution: - { - integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/types": 7.21.4 - jsesc: 2.5.2 - source-map: 0.5.7 - dev: true - - /@babel/generator@7.21.4: - resolution: - { - integrity: sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/types": 7.21.4 - "@jridgewell/gen-mapping": 0.3.3 - "@jridgewell/trace-mapping": 0.3.18 - jsesc: 2.5.2 - dev: true - - /@babel/helper-compilation-targets@7.21.4(@babel/core@7.21.4): - resolution: - { - integrity: sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - dependencies: - "@babel/compat-data": 7.21.4 - "@babel/core": 7.21.4 - "@babel/helper-validator-option": 7.21.0 - browserslist: 4.21.5 - lru-cache: 5.1.1 - semver: 6.3.0 - dev: true - - /@babel/helper-environment-visitor@7.18.9: - resolution: - { - integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==, - } - engines: { node: ">=6.9.0" } - dev: true - - /@babel/helper-function-name@7.21.0: - resolution: - { - integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/template": 7.20.7 - "@babel/types": 7.21.4 - dev: true - - /@babel/helper-hoist-variables@7.18.6: - resolution: - { - integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/types": 7.21.4 - dev: true - - /@babel/helper-module-imports@7.21.4: - resolution: - { - integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/types": 7.21.4 - dev: true - - /@babel/helper-module-transforms@7.21.2: - resolution: - { - integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/helper-environment-visitor": 7.18.9 - "@babel/helper-module-imports": 7.21.4 - "@babel/helper-simple-access": 7.20.2 - "@babel/helper-split-export-declaration": 7.18.6 - "@babel/helper-validator-identifier": 7.19.1 - "@babel/template": 7.20.7 - "@babel/traverse": 7.21.4 - "@babel/types": 7.21.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-plugin-utils@7.20.2: - resolution: - { - integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==, - } - engines: { node: ">=6.9.0" } - dev: true - - /@babel/helper-simple-access@7.20.2: - resolution: - { - integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/types": 7.21.4 - dev: true - - /@babel/helper-split-export-declaration@7.18.6: - resolution: - { - integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/types": 7.21.4 - dev: true - - /@babel/helper-string-parser@7.19.4: - resolution: - { - integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==, - } - engines: { node: ">=6.9.0" } - dev: true - - /@babel/helper-validator-identifier@7.19.1: - resolution: - { - integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==, - } - engines: { node: ">=6.9.0" } - - /@babel/helper-validator-option@7.21.0: - resolution: - { - integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==, - } - engines: { node: ">=6.9.0" } - dev: true - - /@babel/helpers@7.21.0: - resolution: - { - integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/template": 7.20.7 - "@babel/traverse": 7.21.4 - "@babel/types": 7.21.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/highlight@7.18.6: - resolution: - { - integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/helper-validator-identifier": 7.19.1 - chalk: 2.4.2 - js-tokens: 4.0.0 - - /@babel/parser@7.21.4: - resolution: - { - integrity: sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==, - } - engines: { node: ">=6.0.0" } - hasBin: true - dependencies: - "@babel/types": 7.21.4 - dev: true - - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.4): - resolution: - { - integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.21.4 - "@babel/helper-plugin-utils": 7.20.2 - dev: true - - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.21.4): - resolution: - { - integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.21.4 - "@babel/helper-plugin-utils": 7.20.2 - dev: true - - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.4): - resolution: - { - integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.21.4 - "@babel/helper-plugin-utils": 7.20.2 - dev: true - - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.21.4): - resolution: - { - integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.21.4 - "@babel/helper-plugin-utils": 7.20.2 - dev: true - - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.4): - resolution: - { - integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.21.4 - "@babel/helper-plugin-utils": 7.20.2 - dev: true - - /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.21.4): - resolution: - { - integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.21.4 - "@babel/helper-plugin-utils": 7.20.2 - dev: true - - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.4): - resolution: - { - integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.21.4 - "@babel/helper-plugin-utils": 7.20.2 - dev: true - - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.4): - resolution: - { - integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.21.4 - "@babel/helper-plugin-utils": 7.20.2 - dev: true - - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.4): - resolution: - { - integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.21.4 - "@babel/helper-plugin-utils": 7.20.2 - dev: true - - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.4): - resolution: - { - integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.21.4 - "@babel/helper-plugin-utils": 7.20.2 - dev: true - - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.4): - resolution: - { - integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.21.4 - "@babel/helper-plugin-utils": 7.20.2 - dev: true - - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.4): - resolution: - { - integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.21.4 - "@babel/helper-plugin-utils": 7.20.2 - dev: true - - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.21.4): - resolution: - { - integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.21.4 - "@babel/helper-plugin-utils": 7.20.2 - dev: true - - /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.21.4): - resolution: - { - integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.21.4 - "@babel/helper-plugin-utils": 7.20.2 - dev: true - - /@babel/template@7.20.7: - resolution: - { - integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/code-frame": 7.21.4 - "@babel/parser": 7.21.4 - "@babel/types": 7.21.4 - dev: true - - /@babel/traverse@7.17.3: - resolution: - { - integrity: sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/code-frame": 7.21.4 - "@babel/generator": 7.21.4 - "@babel/helper-environment-visitor": 7.18.9 - "@babel/helper-function-name": 7.21.0 - "@babel/helper-hoist-variables": 7.18.6 - "@babel/helper-split-export-declaration": 7.18.6 - "@babel/parser": 7.21.4 - "@babel/types": 7.21.4 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/traverse@7.21.4: - resolution: - { - integrity: sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/code-frame": 7.21.4 - "@babel/generator": 7.21.4 - "@babel/helper-environment-visitor": 7.18.9 - "@babel/helper-function-name": 7.21.0 - "@babel/helper-hoist-variables": 7.18.6 - "@babel/helper-split-export-declaration": 7.18.6 - "@babel/parser": 7.21.4 - "@babel/types": 7.21.4 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/types@7.17.0: - resolution: - { - integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/helper-validator-identifier": 7.19.1 - to-fast-properties: 2.0.0 - dev: true - - /@babel/types@7.21.4: - resolution: - { - integrity: sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/helper-string-parser": 7.19.4 - "@babel/helper-validator-identifier": 7.19.1 - to-fast-properties: 2.0.0 - dev: true - - /@bcoe/v8-coverage@0.2.3: - resolution: - { - integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==, - } - dev: true - - /@esbuild/android-arm64@0.17.15: - resolution: - { - integrity: sha512-0kOB6Y7Br3KDVgHeg8PRcvfLkq+AccreK///B4Z6fNZGr/tNHX0z2VywCc7PTeWp+bPvjA5WMvNXltHw5QjAIA==, - } - engines: { node: ">=12" } - cpu: [arm64] - os: [android] - requiresBuild: true - optional: true - /@esbuild/android-arm@0.17.15: - resolution: - { - integrity: sha512-sRSOVlLawAktpMvDyJIkdLI/c/kdRTOqo8t6ImVxg8yT7LQDUYV5Rp2FKeEosLr6ZCja9UjYAzyRSxGteSJPYg==, - } - engines: { node: ">=12" } - cpu: [arm] - os: [android] - requiresBuild: true + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + dev: true + + /@babel/code-frame@7.12.11: + resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} + dependencies: + '@babel/highlight': 7.18.6 + dev: true + + /@babel/code-frame@7.21.4: + resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.18.6 + + /@babel/compat-data@7.21.4: + resolution: {integrity: sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core@7.21.4: + resolution: {integrity: sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.21.4 + '@babel/generator': 7.21.4 + '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) + '@babel/helper-module-transforms': 7.21.2 + '@babel/helpers': 7.21.0 + '@babel/parser': 7.21.4 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.4 + '@babel/types': 7.21.4 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator@7.17.7: + resolution: {integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.4 + jsesc: 2.5.2 + source-map: 0.5.7 + dev: true + + /@babel/generator@7.21.4: + resolution: {integrity: sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.4 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + jsesc: 2.5.2 + dev: true + + /@babel/helper-compilation-targets@7.21.4(@babel/core@7.21.4): + resolution: {integrity: sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.21.4 + '@babel/core': 7.21.4 + '@babel/helper-validator-option': 7.21.0 + browserslist: 4.21.5 + lru-cache: 5.1.1 + semver: 6.3.0 + dev: true + + /@babel/helper-environment-visitor@7.18.9: + resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-function-name@7.21.0: + resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.20.7 + '@babel/types': 7.21.4 + dev: true + + /@babel/helper-hoist-variables@7.18.6: + resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.4 + dev: true + + /@babel/helper-module-imports@7.21.4: + resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.4 + dev: true + + /@babel/helper-module-transforms@7.21.2: + resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-module-imports': 7.21.4 + '@babel/helper-simple-access': 7.20.2 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-validator-identifier': 7.19.1 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.4 + '@babel/types': 7.21.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-plugin-utils@7.20.2: + resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-simple-access@7.20.2: + resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.4 + dev: true + + /@babel/helper-split-export-declaration@7.18.6: + resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.4 + dev: true + + /@babel/helper-string-parser@7.19.4: + resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-identifier@7.19.1: + resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-option@7.21.0: + resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helpers@7.21.0: + resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.4 + '@babel/types': 7.21.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/highlight@7.18.6: + resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.19.1 + chalk: 2.4.2 + js-tokens: 4.0.0 + + /@babel/parser@7.21.4: + resolution: {integrity: sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.21.4 + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.4): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.4): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.21.4): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.21.4): + resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.4): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.4): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.21.4): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.21.4): + resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/template@7.20.7: + resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.21.4 + '@babel/parser': 7.21.4 + '@babel/types': 7.21.4 + dev: true + + /@babel/traverse@7.17.3: + resolution: {integrity: sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.21.4 + '@babel/generator': 7.21.4 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.21.4 + '@babel/types': 7.21.4 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/traverse@7.21.4: + resolution: {integrity: sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.21.4 + '@babel/generator': 7.21.4 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.21.4 + '@babel/types': 7.21.4 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.17.0: + resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 + dev: true + + /@babel/types@7.21.4: + resolution: {integrity: sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.19.4 + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 + dev: true + + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true + + /@esbuild/android-arm64@0.17.15: + resolution: {integrity: sha512-0kOB6Y7Br3KDVgHeg8PRcvfLkq+AccreK///B4Z6fNZGr/tNHX0z2VywCc7PTeWp+bPvjA5WMvNXltHw5QjAIA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + optional: true + + /@esbuild/android-arm@0.17.15: + resolution: {integrity: sha512-sRSOVlLawAktpMvDyJIkdLI/c/kdRTOqo8t6ImVxg8yT7LQDUYV5Rp2FKeEosLr6ZCja9UjYAzyRSxGteSJPYg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + optional: true + + /@esbuild/android-x64@0.17.15: + resolution: {integrity: sha512-MzDqnNajQZ63YkaUWVl9uuhcWyEyh69HGpMIrf+acR4otMkfLJ4sUCxqwbCyPGicE9dVlrysI3lMcDBjGiBBcQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + optional: true + + /@esbuild/darwin-arm64@0.17.15: + resolution: {integrity: sha512-7siLjBc88Z4+6qkMDxPT2juf2e8SJxmsbNVKFY2ifWCDT72v5YJz9arlvBw5oB4W/e61H1+HDB/jnu8nNg0rLA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + + /@esbuild/darwin-x64@0.17.15: + resolution: {integrity: sha512-NbImBas2rXwYI52BOKTW342Tm3LTeVlaOQ4QPZ7XuWNKiO226DisFk/RyPk3T0CKZkKMuU69yOvlapJEmax7cg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + + /@esbuild/freebsd-arm64@0.17.15: + resolution: {integrity: sha512-Xk9xMDjBVG6CfgoqlVczHAdJnCs0/oeFOspFap5NkYAmRCT2qTn1vJWA2f419iMtsHSLm+O8B6SLV/HlY5cYKg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + optional: true + + /@esbuild/freebsd-x64@0.17.15: + resolution: {integrity: sha512-3TWAnnEOdclvb2pnfsTWtdwthPfOz7qAfcwDLcfZyGJwm1SRZIMOeB5FODVhnM93mFSPsHB9b/PmxNNbSnd0RQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + optional: true + + /@esbuild/linux-arm64@0.17.15: + resolution: {integrity: sha512-T0MVnYw9KT6b83/SqyznTs/3Jg2ODWrZfNccg11XjDehIved2oQfrX/wVuev9N936BpMRaTR9I1J0tdGgUgpJA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-arm@0.17.15: + resolution: {integrity: sha512-MLTgiXWEMAMr8nmS9Gigx43zPRmEfeBfGCwxFQEMgJ5MC53QKajaclW6XDPjwJvhbebv+RzK05TQjvH3/aM4Xw==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-ia32@0.17.15: + resolution: {integrity: sha512-wp02sHs015T23zsQtU4Cj57WiteiuASHlD7rXjKUyAGYzlOKDAjqK6bk5dMi2QEl/KVOcsjwL36kD+WW7vJt8Q==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-loong64@0.17.15: + resolution: {integrity: sha512-k7FsUJjGGSxwnBmMh8d7IbObWu+sF/qbwc+xKZkBe/lTAF16RqxRCnNHA7QTd3oS2AfGBAnHlXL67shV5bBThQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-mips64el@0.17.15: + resolution: {integrity: sha512-ZLWk6czDdog+Q9kE/Jfbilu24vEe/iW/Sj2d8EVsmiixQ1rM2RKH2n36qfxK4e8tVcaXkvuV3mU5zTZviE+NVQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-ppc64@0.17.15: + resolution: {integrity: sha512-mY6dPkIRAiFHRsGfOYZC8Q9rmr8vOBZBme0/j15zFUKM99d4ILY4WpOC7i/LqoY+RE7KaMaSfvY8CqjJtuO4xg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-riscv64@0.17.15: + resolution: {integrity: sha512-EcyUtxffdDtWjjwIH8sKzpDRLcVtqANooMNASO59y+xmqqRYBBM7xVLQhqF7nksIbm2yHABptoioS9RAbVMWVA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-s390x@0.17.15: + resolution: {integrity: sha512-BuS6Jx/ezxFuHxgsfvz7T4g4YlVrmCmg7UAwboeyNNg0OzNzKsIZXpr3Sb/ZREDXWgt48RO4UQRDBxJN3B9Rbg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-x64@0.17.15: + resolution: {integrity: sha512-JsdS0EgEViwuKsw5tiJQo9UdQdUJYuB+Mf6HxtJSPN35vez1hlrNb1KajvKWF5Sa35j17+rW1ECEO9iNrIXbNg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/netbsd-x64@0.17.15: + resolution: {integrity: sha512-R6fKjtUysYGym6uXf6qyNephVUQAGtf3n2RCsOST/neIwPqRWcnc3ogcielOd6pT+J0RDR1RGcy0ZY7d3uHVLA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + optional: true + + /@esbuild/openbsd-x64@0.17.15: + resolution: {integrity: sha512-mVD4PGc26b8PI60QaPUltYKeSX0wxuy0AltC+WCTFwvKCq2+OgLP4+fFd+hZXzO2xW1HPKcytZBdjqL6FQFa7w==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + optional: true + + /@esbuild/sunos-x64@0.17.15: + resolution: {integrity: sha512-U6tYPovOkw3459t2CBwGcFYfFRjivcJJc1WC8Q3funIwX8x4fP+R6xL/QuTPNGOblbq/EUDxj9GU+dWKX0oWlQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + optional: true + + /@esbuild/win32-arm64@0.17.15: + resolution: {integrity: sha512-W+Z5F++wgKAleDABemiyXVnzXgvRFs+GVKThSI+mGgleLWluv0D7Diz4oQpgdpNzh4i2nNDzQtWbjJiqutRp6Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + optional: true + + /@esbuild/win32-ia32@0.17.15: + resolution: {integrity: sha512-Muz/+uGgheShKGqSVS1KsHtCyEzcdOn/W/Xbh6H91Etm+wiIfwZaBn1W58MeGtfI8WA961YMHFYTthBdQs4t+w==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true + + /@esbuild/win32-x64@0.17.15: + resolution: {integrity: sha512-DjDa9ywLUUmjhV2Y9wUTIF+1XsmuFGvZoCmOWkli1XcNAh5t25cc7fgsCx4Zi/Uurep3TTLyDiKATgGEg61pkA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.37.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.37.0 + eslint-visitor-keys: 3.4.0 + dev: false + + /@eslint-community/regexpp@4.5.0: + resolution: {integrity: sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: false + + /@eslint/eslintrc@0.4.3: + resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 7.3.1 + globals: 13.20.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + js-yaml: 3.14.1 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/eslintrc@2.0.2: + resolution: {integrity: sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.5.1 + globals: 13.20.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@eslint/js@8.37.0: + resolution: {integrity: sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: false + + /@humanwhocodes/config-array@0.11.8: + resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@humanwhocodes/config-array@0.5.0: + resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: false + + /@humanwhocodes/object-schema@1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + + /@istanbuljs/load-nyc-config@1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + dev: true + + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true + + /@jest/console@29.5.0: + resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@types/node': 14.11.2 + chalk: 4.1.2 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + slash: 3.0.0 + dev: true + + /@jest/core@29.5.0: + resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: optional: true - - /@esbuild/android-x64@0.17.15: - resolution: - { - integrity: sha512-MzDqnNajQZ63YkaUWVl9uuhcWyEyh69HGpMIrf+acR4otMkfLJ4sUCxqwbCyPGicE9dVlrysI3lMcDBjGiBBcQ==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [android] - requiresBuild: true + dependencies: + '@jest/console': 29.5.0 + '@jest/reporters': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 14.11.2 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.8.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.5.0 + jest-config: 29.5.0(@types/node@14.11.2) + jest-haste-map: 29.5.0 + jest-message-util: 29.5.0 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-resolve-dependencies: 29.5.0 + jest-runner: 29.5.0 + jest-runtime: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + jest-watcher: 29.5.0 + micromatch: 4.0.5 + pretty-format: 29.5.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + + /@jest/environment@29.5.0: + resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 14.11.2 + jest-mock: 29.5.0 + dev: true + + /@jest/expect-utils@29.5.0: + resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.4.3 + dev: true + + /@jest/expect@29.5.0: + resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + expect: 29.5.0 + jest-snapshot: 29.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/fake-timers@29.5.0: + resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@sinonjs/fake-timers': 10.0.2 + '@types/node': 14.11.2 + jest-message-util: 29.5.0 + jest-mock: 29.5.0 + jest-util: 29.5.0 + dev: true + + /@jest/globals@29.5.0: + resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.5.0 + '@jest/expect': 29.5.0 + '@jest/types': 29.5.0 + jest-mock: 29.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/reporters@29.5.0: + resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: optional: true - - /@esbuild/darwin-arm64@0.17.15: - resolution: - { - integrity: sha512-7siLjBc88Z4+6qkMDxPT2juf2e8SJxmsbNVKFY2ifWCDT72v5YJz9arlvBw5oB4W/e61H1+HDB/jnu8nNg0rLA==, - } - engines: { node: ">=12" } - cpu: [arm64] - os: [darwin] - requiresBuild: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@jridgewell/trace-mapping': 0.3.18 + '@types/node': 14.11.2 + chalk: 4.1.2 + collect-v8-coverage: 1.0.1 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.0 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.5 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + jest-worker: 29.5.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/schemas@29.4.3: + resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.25.24 + + /@jest/source-map@29.4.3: + resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jridgewell/trace-mapping': 0.3.18 + callsites: 3.1.0 + graceful-fs: 4.2.11 + dev: true + + /@jest/test-result@29.5.0: + resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.5.0 + '@jest/types': 29.5.0 + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.1 + dev: true + + /@jest/test-sequencer@29.5.0: + resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.5.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + slash: 3.0.0 + dev: true + + /@jest/transform@29.5.0: + resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.21.4 + '@jest/types': 29.5.0 + '@jridgewell/trace-mapping': 0.3.18 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + jest-regex-util: 29.4.3 + jest-util: 29.5.0 + micromatch: 4.0.5 + pirates: 4.0.5 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/types@29.5.0: + resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.4.3 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 14.11.2 + '@types/yargs': 17.0.24 + chalk: 4.1.2 + dev: true + + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.18 + dev: true + + /@jridgewell/resolve-uri@3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.18: + resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + + /@noble/curves@1.1.0: + resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==} + dependencies: + '@noble/hashes': 1.3.1 + dev: false + + /@noble/hashes@1.3.1: + resolution: {integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==} + engines: {node: '>= 16'} + dev: false + + /@noble/secp256k1@2.0.0: + resolution: {integrity: sha512-rUGBd95e2a45rlmFTqQJYEFA4/gdIARFfuTuTqLglz0PZ6AKyzyXsEZZq7UZn8hZsvaBgpCzKKBJizT2cJERXw==} + dev: false + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + + /@scure/base@1.1.1: + resolution: {integrity: sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==} + dev: false + + /@scure/bip32@1.3.1: + resolution: {integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==} + dependencies: + '@noble/curves': 1.1.0 + '@noble/hashes': 1.3.1 + '@scure/base': 1.1.1 + dev: false + + /@scure/bip39@1.2.1: + resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} + dependencies: + '@noble/hashes': 1.3.1 + '@scure/base': 1.1.1 + dev: false + + /@sinclair/typebox@0.25.24: + resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} + + /@sinonjs/commons@2.0.0: + resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/fake-timers@10.0.2: + resolution: {integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==} + dependencies: + '@sinonjs/commons': 2.0.0 + dev: true + + /@trivago/prettier-plugin-sort-imports@4.2.0(prettier@3.0.1): + resolution: {integrity: sha512-YBepjbt+ZNBVmN3ev1amQH3lWCmHyt5qTbLCp/syXJRu/Kw2koXh44qayB1gMRxcL/gV8egmjN5xWSrYyfUtyw==} + peerDependencies: + '@vue/compiler-sfc': 3.x + prettier: 2.x - 3.x + peerDependenciesMeta: + '@vue/compiler-sfc': optional: true - - /@esbuild/darwin-x64@0.17.15: - resolution: - { - integrity: sha512-NbImBas2rXwYI52BOKTW342Tm3LTeVlaOQ4QPZ7XuWNKiO226DisFk/RyPk3T0CKZkKMuU69yOvlapJEmax7cg==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [darwin] - requiresBuild: true + dependencies: + '@babel/generator': 7.17.7 + '@babel/parser': 7.21.4 + '@babel/traverse': 7.17.3 + '@babel/types': 7.17.0 + javascript-natural-sort: 0.7.1 + lodash: 4.17.21 + prettier: 3.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@tsd/typescript@5.0.4: + resolution: {integrity: sha512-YQi2lvZSI+xidKeUjlbv6b6Zw7qB3aXHw5oGJLs5OOGAEqKIOvz5UIAkWyg0bJbkSUWPBEtaOHpVxU4EYBO1Jg==} + dev: false + + /@types/babel__core@7.20.0: + resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} + dependencies: + '@babel/parser': 7.21.4 + '@babel/types': 7.21.4 + '@types/babel__generator': 7.6.4 + '@types/babel__template': 7.4.1 + '@types/babel__traverse': 7.18.5 + dev: true + + /@types/babel__generator@7.6.4: + resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + dependencies: + '@babel/types': 7.21.4 + dev: true + + /@types/babel__template@7.4.1: + resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + dependencies: + '@babel/parser': 7.21.4 + '@babel/types': 7.21.4 + dev: true + + /@types/babel__traverse@7.18.5: + resolution: {integrity: sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q==} + dependencies: + '@babel/types': 7.21.4 + dev: true + + /@types/debug@4.1.7: + resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} + dependencies: + '@types/ms': 0.7.31 + dev: true + + /@types/eslint@7.29.0: + resolution: {integrity: sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==} + dependencies: + '@types/estree': 1.0.1 + '@types/json-schema': 7.0.11 + dev: false + + /@types/estree@1.0.1: + resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} + dev: false + + /@types/graceful-fs@4.1.6: + resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} + dependencies: + '@types/node': 14.11.2 + dev: true + + /@types/istanbul-lib-coverage@2.0.4: + resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} + dev: true + + /@types/istanbul-lib-report@3.0.0: + resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + dev: true + + /@types/istanbul-reports@3.0.1: + resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} + dependencies: + '@types/istanbul-lib-report': 3.0.0 + dev: true + + /@types/jest@29.5.0: + resolution: {integrity: sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==} + dependencies: + expect: 29.5.0 + pretty-format: 29.5.0 + dev: true + + /@types/json-schema@7.0.11: + resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} + + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: false + + /@types/minimist@1.2.2: + resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} + + /@types/ms@0.7.31: + resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + dev: true + + /@types/node@14.11.2: + resolution: {integrity: sha512-jiE3QIxJ8JLNcb1Ps6rDbysDhN4xa8DJJvuC9prr6w+1tIh+QAbYyNF3tyiZNLDBIuBCf4KEcV2UvQm/V60xfA==} + dev: true + + /@types/normalize-package-data@2.4.1: + resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + + /@types/prettier@2.7.2: + resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} + dev: true + + /@types/semver@7.3.13: + resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} + dev: false + + /@types/stack-utils@2.0.1: + resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} + dev: true + + /@types/yargs-parser@21.0.0: + resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} + dev: true + + /@types/yargs@17.0.24: + resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} + dependencies: + '@types/yargs-parser': 21.0.0 + dev: true + + /@typescript-eslint/eslint-plugin@4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@5.0.4): + resolution: {integrity: sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + '@typescript-eslint/parser': ^4.0.0 + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: optional: true - - /@esbuild/freebsd-arm64@0.17.15: - resolution: - { - integrity: sha512-Xk9xMDjBVG6CfgoqlVczHAdJnCs0/oeFOspFap5NkYAmRCT2qTn1vJWA2f419iMtsHSLm+O8B6SLV/HlY5cYKg==, - } - engines: { node: ">=12" } - cpu: [arm64] - os: [freebsd] - requiresBuild: true + dependencies: + '@typescript-eslint/experimental-utils': 4.33.0(eslint@7.32.0)(typescript@5.0.4) + '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@5.0.4) + '@typescript-eslint/scope-manager': 4.33.0 + debug: 4.3.4 + eslint: 7.32.0 + functional-red-black-tree: 1.0.1 + ignore: 5.2.4 + regexpp: 3.2.0 + semver: 7.5.0 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/eslint-plugin@5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.4): + resolution: {integrity: sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: optional: true - - /@esbuild/freebsd-x64@0.17.15: - resolution: - { - integrity: sha512-3TWAnnEOdclvb2pnfsTWtdwthPfOz7qAfcwDLcfZyGJwm1SRZIMOeB5FODVhnM93mFSPsHB9b/PmxNNbSnd0RQ==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [freebsd] - requiresBuild: true + dependencies: + '@eslint-community/regexpp': 4.5.0 + '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.4) + '@typescript-eslint/scope-manager': 5.57.0 + '@typescript-eslint/type-utils': 5.57.0(eslint@8.37.0)(typescript@5.0.4) + '@typescript-eslint/utils': 5.57.0(eslint@8.37.0)(typescript@5.0.4) + debug: 4.3.4 + eslint: 8.37.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + semver: 7.5.0 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/experimental-utils@4.33.0(eslint@7.32.0)(typescript@5.0.4): + resolution: {integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: '*' + dependencies: + '@types/json-schema': 7.0.11 + '@typescript-eslint/scope-manager': 4.33.0 + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/typescript-estree': 4.33.0(typescript@5.0.4) + eslint: 7.32.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0(eslint@7.32.0) + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.0.4): + resolution: {integrity: sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: optional: true - - /@esbuild/linux-arm64@0.17.15: - resolution: - { - integrity: sha512-T0MVnYw9KT6b83/SqyznTs/3Jg2ODWrZfNccg11XjDehIved2oQfrX/wVuev9N936BpMRaTR9I1J0tdGgUgpJA==, - } - engines: { node: ">=12" } - cpu: [arm64] - os: [linux] - requiresBuild: true + dependencies: + '@typescript-eslint/scope-manager': 4.33.0 + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/typescript-estree': 4.33.0(typescript@5.0.4) + debug: 4.3.4 + eslint: 7.32.0 + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@5.57.0(eslint@8.37.0)(typescript@5.0.4): + resolution: {integrity: sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: optional: true - - /@esbuild/linux-arm@0.17.15: - resolution: - { - integrity: sha512-MLTgiXWEMAMr8nmS9Gigx43zPRmEfeBfGCwxFQEMgJ5MC53QKajaclW6XDPjwJvhbebv+RzK05TQjvH3/aM4Xw==, - } - engines: { node: ">=12" } - cpu: [arm] - os: [linux] - requiresBuild: true + dependencies: + '@typescript-eslint/scope-manager': 5.57.0 + '@typescript-eslint/types': 5.57.0 + '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.4) + debug: 4.3.4 + eslint: 8.37.0 + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/scope-manager@4.33.0: + resolution: {integrity: sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dependencies: + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/visitor-keys': 4.33.0 + dev: true + + /@typescript-eslint/scope-manager@5.57.0: + resolution: {integrity: sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.57.0 + '@typescript-eslint/visitor-keys': 5.57.0 + dev: false + + /@typescript-eslint/type-utils@5.57.0(eslint@8.37.0)(typescript@5.0.4): + resolution: {integrity: sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: optional: true - - /@esbuild/linux-ia32@0.17.15: - resolution: - { - integrity: sha512-wp02sHs015T23zsQtU4Cj57WiteiuASHlD7rXjKUyAGYzlOKDAjqK6bk5dMi2QEl/KVOcsjwL36kD+WW7vJt8Q==, - } - engines: { node: ">=12" } - cpu: [ia32] - os: [linux] - requiresBuild: true + dependencies: + '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.4) + '@typescript-eslint/utils': 5.57.0(eslint@8.37.0)(typescript@5.0.4) + debug: 4.3.4 + eslint: 8.37.0 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/types@4.33.0: + resolution: {integrity: sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dev: true + + /@typescript-eslint/types@5.57.0: + resolution: {integrity: sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: false + + /@typescript-eslint/typescript-estree@4.33.0(typescript@5.0.4): + resolution: {integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: optional: true - - /@esbuild/linux-loong64@0.17.15: - resolution: - { - integrity: sha512-k7FsUJjGGSxwnBmMh8d7IbObWu+sF/qbwc+xKZkBe/lTAF16RqxRCnNHA7QTd3oS2AfGBAnHlXL67shV5bBThQ==, - } - engines: { node: ">=12" } - cpu: [loong64] - os: [linux] - requiresBuild: true + dependencies: + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/visitor-keys': 4.33.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.0 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree@5.57.0(typescript@5.0.4): + resolution: {integrity: sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: optional: true - - /@esbuild/linux-mips64el@0.17.15: - resolution: - { - integrity: sha512-ZLWk6czDdog+Q9kE/Jfbilu24vEe/iW/Sj2d8EVsmiixQ1rM2RKH2n36qfxK4e8tVcaXkvuV3mU5zTZviE+NVQ==, - } - engines: { node: ">=12" } - cpu: [mips64el] - os: [linux] - requiresBuild: true + dependencies: + '@typescript-eslint/types': 5.57.0 + '@typescript-eslint/visitor-keys': 5.57.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.0 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/utils@5.57.0(eslint@8.37.0)(typescript@5.0.4): + resolution: {integrity: sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.37.0) + '@types/json-schema': 7.0.11 + '@types/semver': 7.3.13 + '@typescript-eslint/scope-manager': 5.57.0 + '@typescript-eslint/types': 5.57.0 + '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.4) + eslint: 8.37.0 + eslint-scope: 5.1.1 + semver: 7.5.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: false + + /@typescript-eslint/visitor-keys@4.33.0: + resolution: {integrity: sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dependencies: + '@typescript-eslint/types': 4.33.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /@typescript-eslint/visitor-keys@5.57.0: + resolution: {integrity: sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.57.0 + eslint-visitor-keys: 3.4.0 + dev: false + + /acorn-jsx@5.3.2(acorn@7.4.1): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 7.4.1 + dev: true + + /acorn-jsx@5.3.2(acorn@8.8.2): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.8.2 + dev: false + + /acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /acorn@8.8.2: + resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: false + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + /ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + + /ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + dev: true + + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + /ansi-sequence-parser@1.1.0: + resolution: {integrity: sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==} + dev: true + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: false + + /array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + dependencies: + call-bind: 1.0.2 + is-array-buffer: 3.0.2 + dev: false + + /array-includes@3.1.6: + resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + get-intrinsic: 1.2.0 + is-string: 1.0.7 + dev: false + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + /array.prototype.flat@1.3.1: + resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + es-shim-unscopables: 1.0.0 + dev: false + + /array.prototype.flatmap@1.3.1: + resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + es-shim-unscopables: 1.0.0 + dev: false + + /arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + + /astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + dev: true + + /available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + dev: false + + /babel-jest@29.5.0(@babel/core@7.21.4): + resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.21.4 + '@jest/transform': 29.5.0 + '@types/babel__core': 7.20.0 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.5.0(@babel/core@7.21.4) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + dependencies: + '@babel/helper-plugin-utils': 7.20.2 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-jest-hoist@29.5.0: + resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/template': 7.20.7 + '@babel/types': 7.21.4 + '@types/babel__core': 7.20.0 + '@types/babel__traverse': 7.18.5 + dev: true + + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.21.4): + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.4 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.4) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.4) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.21.4) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.4) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.4) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.21.4) + dev: true + + /babel-preset-jest@29.5.0(@babel/core@7.21.4): + resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.4 + babel-plugin-jest-hoist: 29.5.0 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.4) + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + + /browserslist@4.21.5: + resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001481 + electron-to-chromium: 1.4.376 + node-releases: 2.0.10 + update-browserslist-db: 1.0.11(browserslist@4.21.5) + dev: true + + /bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + dependencies: + fast-json-stable-stringify: 2.1.0 + dev: true + + /bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + dependencies: + node-int64: 0.4.0 + dev: true + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /bundle-require@4.0.1(esbuild@0.17.15): + resolution: {integrity: sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.17' + dependencies: + esbuild: 0.17.15 + load-tsconfig: 0.2.5 + dev: true + + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true + + /call-bind@1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.2.0 + dev: false + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + /camelcase-keys@6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + map-obj: 4.3.0 + quick-lru: 4.0.1 + + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + + /caniuse-lite@1.0.30001481: + resolution: {integrity: sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ==} + dev: true + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + /char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + dev: true + + /chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + dev: true + + /chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /ci-info@3.8.0: + resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + engines: {node: '>=8'} + dev: true + + /cjs-module-lexer@1.2.2: + resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} + dev: true + + /cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + dependencies: + restore-cursor: 3.1.0 + dev: true + + /cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + dev: true + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + dev: true + + /collect-v8-coverage@1.0.1: + resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} + dev: true + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + /convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + dev: true + + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + + /create-esm-loader@0.2.3: + resolution: {integrity: sha512-cllzD6IU/mzXBs5OdQVWL3+ne5Elpu3Wdm7h5OldMbGXk76yr9XzHlQXWJ4zfs0ZAibe26rkbs4KvMAJm7fIZA==} + engines: {node: '>=14.x'} + dependencies: + semver: 7.5.0 + dev: false + + /cross-spawn@6.0.5: + resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} + engines: {node: '>=4.8'} + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.1 + shebang-command: 1.2.0 + which: 1.3.1 + dev: false + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + /data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + dev: false + + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: optional: true - - /@esbuild/linux-ppc64@0.17.15: - resolution: - { - integrity: sha512-mY6dPkIRAiFHRsGfOYZC8Q9rmr8vOBZBme0/j15zFUKM99d4ILY4WpOC7i/LqoY+RE7KaMaSfvY8CqjJtuO4xg==, - } - engines: { node: ">=12" } - cpu: [ppc64] - os: [linux] - requiresBuild: true + dependencies: + ms: 2.1.3 + dev: false + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: optional: true - - /@esbuild/linux-riscv64@0.17.15: - resolution: - { - integrity: sha512-EcyUtxffdDtWjjwIH8sKzpDRLcVtqANooMNASO59y+xmqqRYBBM7xVLQhqF7nksIbm2yHABptoioS9RAbVMWVA==, - } - engines: { node: ">=12" } - cpu: [riscv64] - os: [linux] - requiresBuild: true + dependencies: + ms: 2.1.2 + + /decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + + /decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + /dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: true + + /define-properties@1.2.0: + resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} + engines: {node: '>= 0.4'} + dependencies: + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + dev: false + + /detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + dev: true + + /diff-sequences@29.4.3: + resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: false + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + + /electron-to-chromium@1.4.376: + resolution: {integrity: sha512-TFeOKd98TpJzRHkr4Aorn16QkMnuCQuGAE6IZ0wYF+qkbSfMPqjplvRppR02tMUpVxZz8nyBNvVm9lIZsqrbPQ==} + dev: true + + /emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + /enquirer@2.3.6: + resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + engines: {node: '>=8.6'} + dependencies: + ansi-colors: 4.1.3 + dev: true + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + + /es-abstract@1.21.2: + resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + es-set-tostringtag: 2.0.1 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.5 + get-intrinsic: 1.2.0 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has: 1.0.3 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + is-array-buffer: 3.0.2 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.10 + is-weakref: 1.0.2 + object-inspect: 1.12.3 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.5.0 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.7 + string.prototype.trimend: 1.0.6 + string.prototype.trimstart: 1.0.6 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.9 + dev: false + + /es-set-tostringtag@2.0.1: + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.0 + has: 1.0.3 + has-tostringtag: 1.0.0 + dev: false + + /es-shim-unscopables@1.0.0: + resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + dependencies: + has: 1.0.3 + dev: false + + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: false + + /esbuild-plugin-alias@0.2.1: + resolution: {integrity: sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==} + dev: false + + /esbuild@0.17.15: + resolution: {integrity: sha512-LBUV2VsUIc/iD9ME75qhT4aJj0r75abCVS0jakhFzOtR7TQsqQA5w0tZ+KTKnwl3kXE0MhskNdHDh/I5aCR1Zw==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.17.15 + '@esbuild/android-arm64': 0.17.15 + '@esbuild/android-x64': 0.17.15 + '@esbuild/darwin-arm64': 0.17.15 + '@esbuild/darwin-x64': 0.17.15 + '@esbuild/freebsd-arm64': 0.17.15 + '@esbuild/freebsd-x64': 0.17.15 + '@esbuild/linux-arm': 0.17.15 + '@esbuild/linux-arm64': 0.17.15 + '@esbuild/linux-ia32': 0.17.15 + '@esbuild/linux-loong64': 0.17.15 + '@esbuild/linux-mips64el': 0.17.15 + '@esbuild/linux-ppc64': 0.17.15 + '@esbuild/linux-riscv64': 0.17.15 + '@esbuild/linux-s390x': 0.17.15 + '@esbuild/linux-x64': 0.17.15 + '@esbuild/netbsd-x64': 0.17.15 + '@esbuild/openbsd-x64': 0.17.15 + '@esbuild/sunos-x64': 0.17.15 + '@esbuild/win32-arm64': 0.17.15 + '@esbuild/win32-ia32': 0.17.15 + '@esbuild/win32-x64': 0.17.15 + + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + /eslint-config-prettier@7.2.0(eslint@7.32.0): + resolution: {integrity: sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 7.32.0 + dev: true + + /eslint-config-prettier@8.8.0(eslint@8.37.0): + resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.37.0 + dev: false + + /eslint-formatter-pretty@4.1.0: + resolution: {integrity: sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==} + engines: {node: '>=10'} + dependencies: + '@types/eslint': 7.29.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + eslint-rule-docs: 1.1.235 + log-symbols: 4.1.0 + plur: 4.0.0 + string-width: 4.2.3 + supports-hyperlinks: 2.3.0 + dev: false + + /eslint-import-resolver-node@0.3.7: + resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} + dependencies: + debug: 3.2.7 + is-core-module: 2.12.0 + resolve: 1.22.2 + transitivePeerDependencies: + - supports-color + dev: false + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-node@0.3.7)(eslint@8.37.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': optional: true - - /@esbuild/linux-s390x@0.17.15: - resolution: - { - integrity: sha512-BuS6Jx/ezxFuHxgsfvz7T4g4YlVrmCmg7UAwboeyNNg0OzNzKsIZXpr3Sb/ZREDXWgt48RO4UQRDBxJN3B9Rbg==, - } - engines: { node: ">=12" } - cpu: [s390x] - os: [linux] - requiresBuild: true + eslint: optional: true - - /@esbuild/linux-x64@0.17.15: - resolution: - { - integrity: sha512-JsdS0EgEViwuKsw5tiJQo9UdQdUJYuB+Mf6HxtJSPN35vez1hlrNb1KajvKWF5Sa35j17+rW1ECEO9iNrIXbNg==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [linux] - requiresBuild: true + eslint-import-resolver-node: optional: true - - /@esbuild/netbsd-x64@0.17.15: - resolution: - { - integrity: sha512-R6fKjtUysYGym6uXf6qyNephVUQAGtf3n2RCsOST/neIwPqRWcnc3ogcielOd6pT+J0RDR1RGcy0ZY7d3uHVLA==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [netbsd] - requiresBuild: true + eslint-import-resolver-typescript: optional: true - - /@esbuild/openbsd-x64@0.17.15: - resolution: - { - integrity: sha512-mVD4PGc26b8PI60QaPUltYKeSX0wxuy0AltC+WCTFwvKCq2+OgLP4+fFd+hZXzO2xW1HPKcytZBdjqL6FQFa7w==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [openbsd] - requiresBuild: true + eslint-import-resolver-webpack: optional: true - - /@esbuild/sunos-x64@0.17.15: - resolution: - { - integrity: sha512-U6tYPovOkw3459t2CBwGcFYfFRjivcJJc1WC8Q3funIwX8x4fP+R6xL/QuTPNGOblbq/EUDxj9GU+dWKX0oWlQ==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [sunos] - requiresBuild: true + dependencies: + '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.4) + debug: 3.2.7 + eslint: 8.37.0 + eslint-import-resolver-node: 0.3.7 + transitivePeerDependencies: + - supports-color + dev: false + + /eslint-plugin-es@3.0.1(eslint@7.32.0): + resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=4.19.1' + dependencies: + eslint: 7.32.0 + eslint-utils: 2.1.0 + regexpp: 3.2.0 + dev: true + + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.57.0)(eslint@8.37.0): + resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': optional: true - - /@esbuild/win32-arm64@0.17.15: - resolution: - { - integrity: sha512-W+Z5F++wgKAleDABemiyXVnzXgvRFs+GVKThSI+mGgleLWluv0D7Diz4oQpgdpNzh4i2nNDzQtWbjJiqutRp6Q==, - } - engines: { node: ">=12" } - cpu: [arm64] - os: [win32] - requiresBuild: true + dependencies: + '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.4) + array-includes: 3.1.6 + array.prototype.flat: 1.3.1 + array.prototype.flatmap: 1.3.1 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.37.0 + eslint-import-resolver-node: 0.3.7 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-node@0.3.7)(eslint@8.37.0) + has: 1.0.3 + is-core-module: 2.12.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.values: 1.1.6 + resolve: 1.22.2 + semver: 6.3.0 + tsconfig-paths: 3.14.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: false + + /eslint-plugin-node@11.1.0(eslint@7.32.0): + resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=5.16.0' + dependencies: + eslint: 7.32.0 + eslint-plugin-es: 3.0.1(eslint@7.32.0) + eslint-utils: 2.1.0 + ignore: 5.2.4 + minimatch: 3.1.2 + resolve: 1.22.2 + semver: 6.3.0 + dev: true + + /eslint-plugin-prettier@3.4.1(eslint-config-prettier@7.2.0)(eslint@7.32.0)(prettier@2.8.8): + resolution: {integrity: sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==} + engines: {node: '>=6.0.0'} + peerDependencies: + eslint: '>=5.0.0' + eslint-config-prettier: '*' + prettier: '>=1.13.0' + peerDependenciesMeta: + eslint-config-prettier: optional: true - - /@esbuild/win32-ia32@0.17.15: - resolution: - { - integrity: sha512-Muz/+uGgheShKGqSVS1KsHtCyEzcdOn/W/Xbh6H91Etm+wiIfwZaBn1W58MeGtfI8WA961YMHFYTthBdQs4t+w==, - } - engines: { node: ">=12" } - cpu: [ia32] - os: [win32] - requiresBuild: true + dependencies: + eslint: 7.32.0 + eslint-config-prettier: 7.2.0(eslint@7.32.0) + prettier: 2.8.8 + prettier-linter-helpers: 1.0.0 + dev: true + + /eslint-rule-docs@1.1.235: + resolution: {integrity: sha512-+TQ+x4JdTnDoFEXXb3fDvfGOwnyNV7duH8fXWTPD1ieaBmB8omj7Gw/pMBBu4uI2uJCCU8APDaQJzWuXnTsH4A==} + dev: false + + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + /eslint-scope@7.2.0: + resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: false + + /eslint-utils@2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} + dependencies: + eslint-visitor-keys: 1.3.0 + dev: true + + /eslint-utils@3.0.0(eslint@7.32.0): + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 7.32.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-visitor-keys@1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + dev: true + + /eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + dev: true + + /eslint-visitor-keys@3.4.0: + resolution: {integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: false + + /eslint@7.32.0: + resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==} + engines: {node: ^10.12.0 || >=12.0.0} + hasBin: true + dependencies: + '@babel/code-frame': 7.12.11 + '@eslint/eslintrc': 0.4.3 + '@humanwhocodes/config-array': 0.5.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + enquirer: 2.3.6 + escape-string-regexp: 4.0.0 + eslint-scope: 5.1.1 + eslint-utils: 2.1.0 + eslint-visitor-keys: 2.1.0 + espree: 7.3.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + functional-red-black-tree: 1.0.1 + glob-parent: 5.1.2 + globals: 13.20.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + js-yaml: 3.14.1 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + progress: 2.0.3 + regexpp: 3.2.0 + semver: 7.5.0 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + table: 6.8.1 + text-table: 0.2.0 + v8-compile-cache: 2.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint@8.37.0: + resolution: {integrity: sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.37.0) + '@eslint-community/regexpp': 4.5.0 + '@eslint/eslintrc': 2.0.2 + '@eslint/js': 8.37.0 + '@humanwhocodes/config-array': 0.11.8 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.0 + eslint-visitor-keys: 3.4.0 + espree: 9.5.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.20.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-sdsl: 4.4.0 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: false + + /esm-loader-typescript@1.0.4: + resolution: {integrity: sha512-ejo2f+NKIt23jaJKVpjcRQC0xTa6cTqt6VA+z8Ef/A/TCjQ5u7opPO1J4fJFeTiiHEo8JqU92EG4I1KwuXYZMg==} + dependencies: + create-esm-loader: 0.2.3 + npm-run-all: 4.1.5 + semver: 7.5.0 + typescript: 5.0.4 + dev: false + + /espree@7.3.1: + resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + acorn: 7.4.1 + acorn-jsx: 5.3.2(acorn@7.4.1) + eslint-visitor-keys: 1.3.0 + dev: true + + /espree@9.5.1: + resolution: {integrity: sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.8.2 + acorn-jsx: 5.3.2(acorn@8.8.2) + eslint-visitor-keys: 3.4.0 + dev: false + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + dev: false + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + dev: true + + /expect@29.5.0: + resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/expect-utils': 29.5.0 + jest-get-type: 29.4.3 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + dev: true + + /external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + /fast-diff@1.2.0: + resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} + dev: true + + /fast-glob@3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + /fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + dependencies: + reusify: 1.0.4 + + /fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + dependencies: + bser: 2.1.1 + dev: true + + /fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.2.1 + dev: false + + /figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.0.4 + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: false + + /flat-cache@3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.7 + rimraf: 3.0.2 + + /flatted@3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: false + + /formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + dependencies: + fetch-blob: 3.2.0 + dev: false + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + /fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind@1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + + /function.prototype.name@1.1.5: + resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + functions-have-names: 1.2.3 + dev: false + + /functional-red-black-tree@1.0.1: + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + dev: true + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: false + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-intrinsic@1.2.0: + resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.3 + dev: false + + /get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + dev: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + dev: false + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: false + + /glob@7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /globals@13.20.0: + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + + /globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.0 + dev: false + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.0 + dev: false + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + /grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: false + + /gts@3.1.1(typescript@5.0.4): + resolution: {integrity: sha512-Jw44aBbzMnd1vtZs7tZt3LMstKQukCBg7N4CKVGzviIQ45Cz5b9lxDJGXVKj/9ySuGv6TYEeijZJGbiiVcM27w==} + engines: {node: '>=10'} + hasBin: true + peerDependencies: + typescript: '>=3' + dependencies: + '@typescript-eslint/eslint-plugin': 4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@5.0.4) + '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@5.0.4) + chalk: 4.1.2 + eslint: 7.32.0 + eslint-config-prettier: 7.2.0(eslint@7.32.0) + eslint-plugin-node: 11.1.0(eslint@7.32.0) + eslint-plugin-prettier: 3.4.1(eslint-config-prettier@7.2.0)(eslint@7.32.0)(prettier@2.8.8) + execa: 5.1.1 + inquirer: 7.3.3 + json5: 2.2.3 + meow: 9.0.0 + ncp: 2.0.0 + prettier: 2.8.8 + rimraf: 3.0.2 + typescript: 5.0.4 + write-file-atomic: 3.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /hard-rejection@2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: false + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + /has-property-descriptors@1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + dependencies: + get-intrinsic: 1.2.0 + dev: false + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: false + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: false + + /has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: false + + /has@1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + + /hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + /hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + dependencies: + lru-cache: 6.0.0 + + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /ignore@4.0.6: + resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} + engines: {node: '>= 4'} + dev: true + + /ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + /import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /inquirer@7.3.3: + resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} + engines: {node: '>=8.0.0'} + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + run-async: 2.4.1 + rxjs: 6.6.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + dev: true + + /internal-slot@1.0.5: + resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.0 + has: 1.0.3 + side-channel: 1.0.4 + dev: false + + /irregular-plurals@3.5.0: + resolution: {integrity: sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==} + engines: {node: '>=8'} + dev: false + + /is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + is-typed-array: 1.1.10 + dev: false + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: false + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: false + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: false + + /is-core-module@2.12.0: + resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} + dependencies: + has: 1.0.3 + + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: false + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + /is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + + /is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: false + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: false + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: false + + /is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: false + + /is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.2 + dev: false + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: false + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: false + + /is-typed-array@1.1.10: + resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: false + + /is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + dev: true + + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: false + + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.2 + dev: false + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + /istanbul-lib-coverage@3.2.0: + resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} + engines: {node: '>=8'} + dev: true + + /istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.21.4 + '@babel/parser': 7.21.4 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-report@3.0.0: + resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} + engines: {node: '>=8'} + dependencies: + istanbul-lib-coverage: 3.2.0 + make-dir: 3.1.0 + supports-color: 7.2.0 + dev: true + + /istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + dependencies: + debug: 4.3.4 + istanbul-lib-coverage: 3.2.0 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-reports@3.1.5: + resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.0 + dev: true + + /javascript-natural-sort@0.7.1: + resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} + dev: true + + /jest-changed-files@29.5.0: + resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + execa: 5.1.1 + p-limit: 3.1.0 + dev: true + + /jest-circus@29.5.0: + resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.5.0 + '@jest/expect': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 14.11.2 + chalk: 4.1.2 + co: 4.6.0 + dedent: 0.7.0 + is-generator-fn: 2.1.0 + jest-each: 29.5.0 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-runtime: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 + p-limit: 3.1.0 + pretty-format: 29.5.0 + pure-rand: 6.0.2 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-cli@29.5.0(@types/node@14.11.2): + resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: optional: true - - /@esbuild/win32-x64@0.17.15: - resolution: - { - integrity: sha512-DjDa9ywLUUmjhV2Y9wUTIF+1XsmuFGvZoCmOWkli1XcNAh5t25cc7fgsCx4Zi/Uurep3TTLyDiKATgGEg61pkA==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [win32] - requiresBuild: true + dependencies: + '@jest/core': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + import-local: 3.1.0 + jest-config: 29.5.0(@types/node@14.11.2) + jest-util: 29.5.0 + jest-validate: 29.5.0 + prompts: 2.4.2 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + + /jest-config@29.5.0(@types/node@14.11.2): + resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': optional: true - - /@eslint-community/eslint-utils@4.4.0(eslint@8.37.0): - resolution: - { - integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 8.37.0 - eslint-visitor-keys: 3.4.0 - dev: false - - /@eslint-community/regexpp@4.5.0: - resolution: - { - integrity: sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==, - } - engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } - dev: false - - /@eslint/eslintrc@0.4.3: - resolution: - { - integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==, - } - engines: { node: ^10.12.0 || >=12.0.0 } - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 7.3.1 - globals: 13.20.0 - ignore: 4.0.6 - import-fresh: 3.3.0 - js-yaml: 3.14.1 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@eslint/eslintrc@2.0.2: - resolution: - { - integrity: sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.5.1 - globals: 13.20.0 - ignore: 5.2.4 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@eslint/js@8.37.0: - resolution: - { - integrity: sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - dev: false - - /@humanwhocodes/config-array@0.11.8: - resolution: - { - integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==, - } - engines: { node: ">=10.10.0" } - dependencies: - "@humanwhocodes/object-schema": 1.2.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: false - - /@humanwhocodes/config-array@0.5.0: - resolution: - { - integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==, - } - engines: { node: ">=10.10.0" } - dependencies: - "@humanwhocodes/object-schema": 1.2.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@humanwhocodes/module-importer@1.0.1: - resolution: - { - integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, - } - engines: { node: ">=12.22" } - dev: false - - /@humanwhocodes/object-schema@1.2.1: - resolution: - { - integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==, - } - - /@istanbuljs/load-nyc-config@1.1.0: - resolution: - { - integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==, - } - engines: { node: ">=8" } - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - dev: true - - /@istanbuljs/schema@0.1.3: - resolution: - { - integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==, - } - engines: { node: ">=8" } - dev: true - - /@jest/console@29.5.0: - resolution: - { - integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/types": 29.5.0 - "@types/node": 14.11.2 - chalk: 4.1.2 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - slash: 3.0.0 - dev: true - - /@jest/core@29.5.0: - resolution: - { - integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - "@jest/console": 29.5.0 - "@jest/reporters": 29.5.0 - "@jest/test-result": 29.5.0 - "@jest/transform": 29.5.0 - "@jest/types": 29.5.0 - "@types/node": 14.11.2 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.8.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.5.0 - jest-config: 29.5.0(@types/node@14.11.2) - jest-haste-map: 29.5.0 - jest-message-util: 29.5.0 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-resolve-dependencies: 29.5.0 - jest-runner: 29.5.0 - jest-runtime: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - jest-watcher: 29.5.0 - micromatch: 4.0.5 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - supports-color - - ts-node - dev: true - - /@jest/environment@29.5.0: - resolution: - { - integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/fake-timers": 29.5.0 - "@jest/types": 29.5.0 - "@types/node": 14.11.2 - jest-mock: 29.5.0 - dev: true - - /@jest/expect-utils@29.5.0: - resolution: - { - integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - jest-get-type: 29.4.3 - dev: true - - /@jest/expect@29.5.0: - resolution: - { - integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - expect: 29.5.0 - jest-snapshot: 29.5.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/fake-timers@29.5.0: - resolution: - { - integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/types": 29.5.0 - "@sinonjs/fake-timers": 10.0.2 - "@types/node": 14.11.2 - jest-message-util: 29.5.0 - jest-mock: 29.5.0 - jest-util: 29.5.0 - dev: true - - /@jest/globals@29.5.0: - resolution: - { - integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/environment": 29.5.0 - "@jest/expect": 29.5.0 - "@jest/types": 29.5.0 - jest-mock: 29.5.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/reporters@29.5.0: - resolution: - { - integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - "@bcoe/v8-coverage": 0.2.3 - "@jest/console": 29.5.0 - "@jest/test-result": 29.5.0 - "@jest/transform": 29.5.0 - "@jest/types": 29.5.0 - "@jridgewell/trace-mapping": 0.3.18 - "@types/node": 14.11.2 - chalk: 4.1.2 - collect-v8-coverage: 1.0.1 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 5.2.1 - istanbul-lib-report: 3.0.0 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.5 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - jest-worker: 29.5.0 - slash: 3.0.0 - string-length: 4.0.2 - strip-ansi: 6.0.1 - v8-to-istanbul: 9.1.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/schemas@29.4.3: - resolution: - { - integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@sinclair/typebox": 0.25.24 - - /@jest/source-map@29.4.3: - resolution: - { - integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jridgewell/trace-mapping": 0.3.18 - callsites: 3.1.0 - graceful-fs: 4.2.11 - dev: true - - /@jest/test-result@29.5.0: - resolution: - { - integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/console": 29.5.0 - "@jest/types": 29.5.0 - "@types/istanbul-lib-coverage": 2.0.4 - collect-v8-coverage: 1.0.1 - dev: true - - /@jest/test-sequencer@29.5.0: - resolution: - { - integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/test-result": 29.5.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.5.0 - slash: 3.0.0 - dev: true - - /@jest/transform@29.5.0: - resolution: - { - integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@babel/core": 7.21.4 - "@jest/types": 29.5.0 - "@jridgewell/trace-mapping": 0.3.18 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 2.0.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.5.0 - jest-regex-util: 29.4.3 - jest-util: 29.5.0 - micromatch: 4.0.5 - pirates: 4.0.5 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/types@29.5.0: - resolution: - { - integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/schemas": 29.4.3 - "@types/istanbul-lib-coverage": 2.0.4 - "@types/istanbul-reports": 3.0.1 - "@types/node": 14.11.2 - "@types/yargs": 17.0.24 - chalk: 4.1.2 - dev: true - - /@jridgewell/gen-mapping@0.3.3: - resolution: - { - integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==, - } - engines: { node: ">=6.0.0" } - dependencies: - "@jridgewell/set-array": 1.1.2 - "@jridgewell/sourcemap-codec": 1.4.15 - "@jridgewell/trace-mapping": 0.3.18 - dev: true - - /@jridgewell/resolve-uri@3.1.0: - resolution: - { - integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==, - } - engines: { node: ">=6.0.0" } - dev: true - - /@jridgewell/set-array@1.1.2: - resolution: - { - integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==, - } - engines: { node: ">=6.0.0" } - dev: true - - /@jridgewell/sourcemap-codec@1.4.14: - resolution: - { - integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==, - } - dev: true - - /@jridgewell/sourcemap-codec@1.4.15: - resolution: - { - integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==, - } - dev: true - - /@jridgewell/trace-mapping@0.3.18: - resolution: - { - integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==, - } - dependencies: - "@jridgewell/resolve-uri": 3.1.0 - "@jridgewell/sourcemap-codec": 1.4.14 - dev: true - - /@noble/curves@1.1.0: - resolution: - { - integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==, - } - dependencies: - "@noble/hashes": 1.3.1 - dev: false - - /@noble/hashes@1.3.1: - resolution: - { - integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==, - } - engines: { node: ">= 16" } - dev: false - - /@noble/secp256k1@2.0.0: - resolution: - { - integrity: sha512-rUGBd95e2a45rlmFTqQJYEFA4/gdIARFfuTuTqLglz0PZ6AKyzyXsEZZq7UZn8hZsvaBgpCzKKBJizT2cJERXw==, - } - dev: false - - /@nodelib/fs.scandir@2.1.5: - resolution: - { - integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, - } - engines: { node: ">= 8" } - dependencies: - "@nodelib/fs.stat": 2.0.5 - run-parallel: 1.2.0 - - /@nodelib/fs.stat@2.0.5: - resolution: - { - integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, - } - engines: { node: ">= 8" } - - /@nodelib/fs.walk@1.2.8: - resolution: - { - integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, - } - engines: { node: ">= 8" } - dependencies: - "@nodelib/fs.scandir": 2.1.5 - fastq: 1.15.0 - - /@scure/base@1.1.1: - resolution: - { - integrity: sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==, - } - dev: false - - /@scure/bip32@1.3.1: - resolution: - { - integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==, - } - dependencies: - "@noble/curves": 1.1.0 - "@noble/hashes": 1.3.1 - "@scure/base": 1.1.1 - dev: false - - /@scure/bip39@1.2.1: - resolution: - { - integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==, - } - dependencies: - "@noble/hashes": 1.3.1 - "@scure/base": 1.1.1 - dev: false - - /@sinclair/typebox@0.25.24: - resolution: - { - integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==, - } - - /@sinonjs/commons@2.0.0: - resolution: - { - integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==, - } - dependencies: - type-detect: 4.0.8 - dev: true - - /@sinonjs/fake-timers@10.0.2: - resolution: - { - integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==, - } - dependencies: - "@sinonjs/commons": 2.0.0 - dev: true - - /@trivago/prettier-plugin-sort-imports@4.2.0(prettier@3.0.1): - resolution: - { - integrity: sha512-YBepjbt+ZNBVmN3ev1amQH3lWCmHyt5qTbLCp/syXJRu/Kw2koXh44qayB1gMRxcL/gV8egmjN5xWSrYyfUtyw==, - } - peerDependencies: - "@vue/compiler-sfc": 3.x - prettier: 2.x - 3.x - peerDependenciesMeta: - "@vue/compiler-sfc": - optional: true - dependencies: - "@babel/generator": 7.17.7 - "@babel/parser": 7.21.4 - "@babel/traverse": 7.17.3 - "@babel/types": 7.17.0 - javascript-natural-sort: 0.7.1 - lodash: 4.17.21 - prettier: 3.0.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@tsd/typescript@5.0.4: - resolution: - { - integrity: sha512-YQi2lvZSI+xidKeUjlbv6b6Zw7qB3aXHw5oGJLs5OOGAEqKIOvz5UIAkWyg0bJbkSUWPBEtaOHpVxU4EYBO1Jg==, - } - dev: false - - /@types/babel__core@7.20.0: - resolution: - { - integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==, - } - dependencies: - "@babel/parser": 7.21.4 - "@babel/types": 7.21.4 - "@types/babel__generator": 7.6.4 - "@types/babel__template": 7.4.1 - "@types/babel__traverse": 7.18.5 - dev: true - - /@types/babel__generator@7.6.4: - resolution: - { - integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==, - } - dependencies: - "@babel/types": 7.21.4 - dev: true - - /@types/babel__template@7.4.1: - resolution: - { - integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==, - } - dependencies: - "@babel/parser": 7.21.4 - "@babel/types": 7.21.4 - dev: true - - /@types/babel__traverse@7.18.5: - resolution: - { - integrity: sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q==, - } - dependencies: - "@babel/types": 7.21.4 - dev: true - - /@types/debug@4.1.7: - resolution: - { - integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==, - } - dependencies: - "@types/ms": 0.7.31 - dev: true - - /@types/eslint@7.29.0: - resolution: - { - integrity: sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==, - } - dependencies: - "@types/estree": 1.0.1 - "@types/json-schema": 7.0.11 - dev: false - - /@types/estree@1.0.1: - resolution: - { - integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==, - } - dev: false - - /@types/graceful-fs@4.1.6: - resolution: - { - integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==, - } - dependencies: - "@types/node": 14.11.2 - dev: true - - /@types/istanbul-lib-coverage@2.0.4: - resolution: - { - integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==, - } - dev: true - - /@types/istanbul-lib-report@3.0.0: - resolution: - { - integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==, - } - dependencies: - "@types/istanbul-lib-coverage": 2.0.4 - dev: true - - /@types/istanbul-reports@3.0.1: - resolution: - { - integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==, - } - dependencies: - "@types/istanbul-lib-report": 3.0.0 - dev: true - - /@types/jest@29.5.0: - resolution: - { - integrity: sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==, - } - dependencies: - expect: 29.5.0 - pretty-format: 29.5.0 - dev: true - - /@types/json-schema@7.0.11: - resolution: - { - integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==, - } - - /@types/json5@0.0.29: - resolution: - { - integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==, - } - dev: false - - /@types/minimist@1.2.2: - resolution: - { - integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==, - } - - /@types/ms@0.7.31: - resolution: - { - integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==, - } - dev: true - - /@types/node@14.11.2: - resolution: - { - integrity: sha512-jiE3QIxJ8JLNcb1Ps6rDbysDhN4xa8DJJvuC9prr6w+1tIh+QAbYyNF3tyiZNLDBIuBCf4KEcV2UvQm/V60xfA==, - } - dev: true - - /@types/normalize-package-data@2.4.1: - resolution: - { - integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==, - } - - /@types/prettier@2.7.2: - resolution: - { - integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==, - } - dev: true - - /@types/semver@7.3.13: - resolution: - { - integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==, - } - dev: false - - /@types/stack-utils@2.0.1: - resolution: - { - integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==, - } - dev: true - - /@types/yargs-parser@21.0.0: - resolution: - { - integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==, - } - dev: true - - /@types/yargs@17.0.24: - resolution: - { - integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==, - } - dependencies: - "@types/yargs-parser": 21.0.0 - dev: true - - /@typescript-eslint/eslint-plugin@4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@5.0.4): - resolution: - { - integrity: sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==, - } - engines: { node: ^10.12.0 || >=12.0.0 } - peerDependencies: - "@typescript-eslint/parser": ^4.0.0 - eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 - typescript: "*" - peerDependenciesMeta: - typescript: - optional: true - dependencies: - "@typescript-eslint/experimental-utils": 4.33.0(eslint@7.32.0)(typescript@5.0.4) - "@typescript-eslint/parser": 4.33.0(eslint@7.32.0)(typescript@5.0.4) - "@typescript-eslint/scope-manager": 4.33.0 - debug: 4.3.4 - eslint: 7.32.0 - functional-red-black-tree: 1.0.1 - ignore: 5.2.4 - regexpp: 3.2.0 - semver: 7.5.0 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/eslint-plugin@5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.4): - resolution: - { - integrity: sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - "@typescript-eslint/parser": ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: "*" - peerDependenciesMeta: - typescript: - optional: true - dependencies: - "@eslint-community/regexpp": 4.5.0 - "@typescript-eslint/parser": 5.57.0(eslint@8.37.0)(typescript@5.0.4) - "@typescript-eslint/scope-manager": 5.57.0 - "@typescript-eslint/type-utils": 5.57.0(eslint@8.37.0)(typescript@5.0.4) - "@typescript-eslint/utils": 5.57.0(eslint@8.37.0)(typescript@5.0.4) - debug: 4.3.4 - eslint: 8.37.0 - grapheme-splitter: 1.0.4 - ignore: 5.2.4 - natural-compare-lite: 1.4.0 - semver: 7.5.0 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 - transitivePeerDependencies: - - supports-color - dev: false - - /@typescript-eslint/experimental-utils@4.33.0(eslint@7.32.0)(typescript@5.0.4): - resolution: - { - integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==, - } - engines: { node: ^10.12.0 || >=12.0.0 } - peerDependencies: - eslint: "*" - dependencies: - "@types/json-schema": 7.0.11 - "@typescript-eslint/scope-manager": 4.33.0 - "@typescript-eslint/types": 4.33.0 - "@typescript-eslint/typescript-estree": 4.33.0(typescript@5.0.4) - eslint: 7.32.0 - eslint-scope: 5.1.1 - eslint-utils: 3.0.0(eslint@7.32.0) - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.0.4): - resolution: - { - integrity: sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==, - } - engines: { node: ^10.12.0 || >=12.0.0 } - peerDependencies: - eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 - typescript: "*" - peerDependenciesMeta: - typescript: - optional: true - dependencies: - "@typescript-eslint/scope-manager": 4.33.0 - "@typescript-eslint/types": 4.33.0 - "@typescript-eslint/typescript-estree": 4.33.0(typescript@5.0.4) - debug: 4.3.4 - eslint: 7.32.0 - typescript: 5.0.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/parser@5.57.0(eslint@8.37.0)(typescript@5.0.4): - resolution: - { - integrity: sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: "*" - peerDependenciesMeta: - typescript: - optional: true - dependencies: - "@typescript-eslint/scope-manager": 5.57.0 - "@typescript-eslint/types": 5.57.0 - "@typescript-eslint/typescript-estree": 5.57.0(typescript@5.0.4) - debug: 4.3.4 - eslint: 8.37.0 - typescript: 5.0.4 - transitivePeerDependencies: - - supports-color - dev: false - - /@typescript-eslint/scope-manager@4.33.0: - resolution: - { - integrity: sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==, - } - engines: { node: ^8.10.0 || ^10.13.0 || >=11.10.1 } - dependencies: - "@typescript-eslint/types": 4.33.0 - "@typescript-eslint/visitor-keys": 4.33.0 - dev: true - - /@typescript-eslint/scope-manager@5.57.0: - resolution: - { - integrity: sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - dependencies: - "@typescript-eslint/types": 5.57.0 - "@typescript-eslint/visitor-keys": 5.57.0 - dev: false - - /@typescript-eslint/type-utils@5.57.0(eslint@8.37.0)(typescript@5.0.4): - resolution: - { - integrity: sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: "*" - typescript: "*" - peerDependenciesMeta: - typescript: - optional: true - dependencies: - "@typescript-eslint/typescript-estree": 5.57.0(typescript@5.0.4) - "@typescript-eslint/utils": 5.57.0(eslint@8.37.0)(typescript@5.0.4) - debug: 4.3.4 - eslint: 8.37.0 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 - transitivePeerDependencies: - - supports-color - dev: false - - /@typescript-eslint/types@4.33.0: - resolution: - { - integrity: sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==, - } - engines: { node: ^8.10.0 || ^10.13.0 || >=11.10.1 } - dev: true - - /@typescript-eslint/types@5.57.0: - resolution: - { - integrity: sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - dev: false - - /@typescript-eslint/typescript-estree@4.33.0(typescript@5.0.4): - resolution: - { - integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==, - } - engines: { node: ^10.12.0 || >=12.0.0 } - peerDependencies: - typescript: "*" - peerDependenciesMeta: - typescript: - optional: true - dependencies: - "@typescript-eslint/types": 4.33.0 - "@typescript-eslint/visitor-keys": 4.33.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.0 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/typescript-estree@5.57.0(typescript@5.0.4): - resolution: - { - integrity: sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - typescript: "*" - peerDependenciesMeta: - typescript: - optional: true - dependencies: - "@typescript-eslint/types": 5.57.0 - "@typescript-eslint/visitor-keys": 5.57.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.0 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 - transitivePeerDependencies: - - supports-color - dev: false - - /@typescript-eslint/utils@5.57.0(eslint@8.37.0)(typescript@5.0.4): - resolution: - { - integrity: sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - "@eslint-community/eslint-utils": 4.4.0(eslint@8.37.0) - "@types/json-schema": 7.0.11 - "@types/semver": 7.3.13 - "@typescript-eslint/scope-manager": 5.57.0 - "@typescript-eslint/types": 5.57.0 - "@typescript-eslint/typescript-estree": 5.57.0(typescript@5.0.4) - eslint: 8.37.0 - eslint-scope: 5.1.1 - semver: 7.5.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: false - - /@typescript-eslint/visitor-keys@4.33.0: - resolution: - { - integrity: sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==, - } - engines: { node: ^8.10.0 || ^10.13.0 || >=11.10.1 } - dependencies: - "@typescript-eslint/types": 4.33.0 - eslint-visitor-keys: 2.1.0 - dev: true - - /@typescript-eslint/visitor-keys@5.57.0: - resolution: - { - integrity: sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - dependencies: - "@typescript-eslint/types": 5.57.0 - eslint-visitor-keys: 3.4.0 - dev: false - - /acorn-jsx@5.3.2(acorn@7.4.1): - resolution: - { - integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, - } - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 7.4.1 - dev: true - - /acorn-jsx@5.3.2(acorn@8.8.2): - resolution: - { - integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, - } - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.8.2 - dev: false - - /acorn@7.4.1: - resolution: - { - integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==, - } - engines: { node: ">=0.4.0" } - hasBin: true - dev: true - - /acorn@8.8.2: - resolution: - { - integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==, - } - engines: { node: ">=0.4.0" } - hasBin: true - dev: false - - /ajv@6.12.6: - resolution: - { - integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==, - } - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - /ajv@8.12.0: - resolution: - { - integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==, - } - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - dev: true - - /ansi-colors@4.1.3: - resolution: - { - integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==, - } - engines: { node: ">=6" } - dev: true - - /ansi-escapes@4.3.2: - resolution: - { - integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==, - } - engines: { node: ">=8" } - dependencies: - type-fest: 0.21.3 - - /ansi-regex@5.0.1: - resolution: - { - integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, - } - engines: { node: ">=8" } - - /ansi-sequence-parser@1.1.0: - resolution: - { - integrity: sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==, - } - dev: true - - /ansi-styles@3.2.1: - resolution: - { - integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==, - } - engines: { node: ">=4" } - dependencies: - color-convert: 1.9.3 - - /ansi-styles@4.3.0: - resolution: - { - integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, - } - engines: { node: ">=8" } - dependencies: - color-convert: 2.0.1 - - /ansi-styles@5.2.0: - resolution: - { - integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==, - } - engines: { node: ">=10" } - - /any-promise@1.3.0: - resolution: - { - integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==, - } - dev: true - - /anymatch@3.1.3: - resolution: - { - integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, - } - engines: { node: ">= 8" } - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: true - - /argparse@1.0.10: - resolution: - { - integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==, - } - dependencies: - sprintf-js: 1.0.3 - dev: true - - /argparse@2.0.1: - resolution: - { - integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, - } - dev: false - - /array-buffer-byte-length@1.0.0: - resolution: - { - integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==, - } - dependencies: - call-bind: 1.0.2 - is-array-buffer: 3.0.2 - dev: false - - /array-includes@3.1.6: - resolution: - { - integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - get-intrinsic: 1.2.0 - is-string: 1.0.7 - dev: false - - /array-union@2.1.0: - resolution: - { - integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==, - } - engines: { node: ">=8" } - - /array.prototype.flat@1.3.1: - resolution: - { - integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - es-shim-unscopables: 1.0.0 - dev: false - - /array.prototype.flatmap@1.3.1: - resolution: - { - integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - es-shim-unscopables: 1.0.0 - dev: false - - /arrify@1.0.1: - resolution: - { - integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==, - } - engines: { node: ">=0.10.0" } - - /astral-regex@2.0.0: - resolution: - { - integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==, - } - engines: { node: ">=8" } - dev: true - - /available-typed-arrays@1.0.5: - resolution: - { - integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==, - } - engines: { node: ">= 0.4" } - dev: false - - /babel-jest@29.5.0(@babel/core@7.21.4): - resolution: - { - integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - "@babel/core": ^7.8.0 - dependencies: - "@babel/core": 7.21.4 - "@jest/transform": 29.5.0 - "@types/babel__core": 7.20.0 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.5.0(@babel/core@7.21.4) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-istanbul@6.1.1: - resolution: - { - integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==, - } - engines: { node: ">=8" } - dependencies: - "@babel/helper-plugin-utils": 7.20.2 - "@istanbuljs/load-nyc-config": 1.1.0 - "@istanbuljs/schema": 0.1.3 - istanbul-lib-instrument: 5.2.1 - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-jest-hoist@29.5.0: - resolution: - { - integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@babel/template": 7.20.7 - "@babel/types": 7.21.4 - "@types/babel__core": 7.20.0 - "@types/babel__traverse": 7.18.5 - dev: true - - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.21.4): - resolution: - { - integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==, - } - peerDependencies: - "@babel/core": ^7.0.0 - dependencies: - "@babel/core": 7.21.4 - "@babel/plugin-syntax-async-generators": 7.8.4(@babel/core@7.21.4) - "@babel/plugin-syntax-bigint": 7.8.3(@babel/core@7.21.4) - "@babel/plugin-syntax-class-properties": 7.12.13(@babel/core@7.21.4) - "@babel/plugin-syntax-import-meta": 7.10.4(@babel/core@7.21.4) - "@babel/plugin-syntax-json-strings": 7.8.3(@babel/core@7.21.4) - "@babel/plugin-syntax-logical-assignment-operators": 7.10.4(@babel/core@7.21.4) - "@babel/plugin-syntax-nullish-coalescing-operator": 7.8.3(@babel/core@7.21.4) - "@babel/plugin-syntax-numeric-separator": 7.10.4(@babel/core@7.21.4) - "@babel/plugin-syntax-object-rest-spread": 7.8.3(@babel/core@7.21.4) - "@babel/plugin-syntax-optional-catch-binding": 7.8.3(@babel/core@7.21.4) - "@babel/plugin-syntax-optional-chaining": 7.8.3(@babel/core@7.21.4) - "@babel/plugin-syntax-top-level-await": 7.14.5(@babel/core@7.21.4) - dev: true - - /babel-preset-jest@29.5.0(@babel/core@7.21.4): - resolution: - { - integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - "@babel/core": ^7.0.0 - dependencies: - "@babel/core": 7.21.4 - babel-plugin-jest-hoist: 29.5.0 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.4) - dev: true - - /balanced-match@1.0.2: - resolution: - { - integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, - } - - /binary-extensions@2.2.0: - resolution: - { - integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==, - } - engines: { node: ">=8" } - dev: true - - /brace-expansion@1.1.11: - resolution: - { - integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, - } - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - /brace-expansion@2.0.1: - resolution: - { - integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==, - } - dependencies: - balanced-match: 1.0.2 - dev: true - - /braces@3.0.2: - resolution: - { - integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==, - } - engines: { node: ">=8" } - dependencies: - fill-range: 7.0.1 - - /browserslist@4.21.5: - resolution: - { - integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==, - } - engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } - hasBin: true - dependencies: - caniuse-lite: 1.0.30001481 - electron-to-chromium: 1.4.376 - node-releases: 2.0.10 - update-browserslist-db: 1.0.11(browserslist@4.21.5) - dev: true - - /bs-logger@0.2.6: - resolution: - { - integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==, - } - engines: { node: ">= 6" } - dependencies: - fast-json-stable-stringify: 2.1.0 - dev: true - - /bser@2.1.1: - resolution: - { - integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==, - } - dependencies: - node-int64: 0.4.0 - dev: true - - /buffer-from@1.1.2: - resolution: - { - integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, - } - dev: true - - /bufferutil@4.0.7: - resolution: - { - integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==, - } - engines: { node: ">=6.14.2" } - requiresBuild: true - dependencies: - node-gyp-build: 4.6.0 - dev: false - - /bundle-require@4.0.1(esbuild@0.17.15): - resolution: - { - integrity: sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - peerDependencies: - esbuild: ">=0.17" - dependencies: - esbuild: 0.17.15 - load-tsconfig: 0.2.5 - dev: true - - /cac@6.7.14: - resolution: - { - integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==, - } - engines: { node: ">=8" } - dev: true - - /call-bind@1.0.2: - resolution: - { - integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==, - } - dependencies: - function-bind: 1.1.1 - get-intrinsic: 1.2.0 - dev: false - - /callsites@3.1.0: - resolution: - { - integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, - } - engines: { node: ">=6" } - - /camelcase-keys@6.2.2: - resolution: - { - integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==, - } - engines: { node: ">=8" } - dependencies: - camelcase: 5.3.1 - map-obj: 4.3.0 - quick-lru: 4.0.1 - - /camelcase@5.3.1: - resolution: - { - integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==, - } - engines: { node: ">=6" } - - /camelcase@6.3.0: - resolution: - { - integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==, - } - engines: { node: ">=10" } - dev: true - - /caniuse-lite@1.0.30001481: - resolution: - { - integrity: sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ==, - } - dev: true - - /chalk@2.4.2: - resolution: - { - integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==, - } - engines: { node: ">=4" } - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - - /chalk@4.1.2: - resolution: - { - integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, - } - engines: { node: ">=10" } - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - /char-regex@1.0.2: - resolution: - { - integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==, - } - engines: { node: ">=10" } - dev: true - - /chardet@0.7.0: - resolution: - { - integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==, - } - dev: true - - /chokidar@3.5.3: - resolution: - { - integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==, - } - engines: { node: ">= 8.10.0" } - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /ci-info@3.8.0: - resolution: - { - integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==, - } - engines: { node: ">=8" } - dev: true - - /cjs-module-lexer@1.2.2: - resolution: - { - integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==, - } - dev: true - - /cli-cursor@3.1.0: - resolution: - { - integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==, - } - engines: { node: ">=8" } - dependencies: - restore-cursor: 3.1.0 - dev: true - - /cli-width@3.0.0: - resolution: - { - integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==, - } - engines: { node: ">= 10" } - dev: true - - /cliui@8.0.1: - resolution: - { - integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, - } - engines: { node: ">=12" } - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: true - - /co@4.6.0: - resolution: - { - integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==, - } - engines: { iojs: ">= 1.0.0", node: ">= 0.12.0" } - dev: true - - /collect-v8-coverage@1.0.1: - resolution: - { - integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==, - } - dev: true - - /color-convert@1.9.3: - resolution: - { - integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==, - } - dependencies: - color-name: 1.1.3 - - /color-convert@2.0.1: - resolution: - { - integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, - } - engines: { node: ">=7.0.0" } - dependencies: - color-name: 1.1.4 - - /color-name@1.1.3: - resolution: - { - integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==, - } - - /color-name@1.1.4: - resolution: - { - integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, - } - - /commander@4.1.1: - resolution: - { - integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==, - } - engines: { node: ">= 6" } - dev: true - - /concat-map@0.0.1: - resolution: - { - integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, - } - - /convert-source-map@1.9.0: - resolution: - { - integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==, - } - dev: true - - /convert-source-map@2.0.0: - resolution: - { - integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==, - } - dev: true - - /create-esm-loader@0.2.3: - resolution: - { - integrity: sha512-cllzD6IU/mzXBs5OdQVWL3+ne5Elpu3Wdm7h5OldMbGXk76yr9XzHlQXWJ4zfs0ZAibe26rkbs4KvMAJm7fIZA==, - } - engines: { node: ">=14.x" } - dependencies: - semver: 7.5.0 - dev: false - - /cross-spawn@6.0.5: - resolution: - { - integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==, - } - engines: { node: ">=4.8" } - dependencies: - nice-try: 1.0.5 - path-key: 2.0.1 - semver: 5.7.1 - shebang-command: 1.2.0 - which: 1.3.1 - dev: false - - /cross-spawn@7.0.3: - resolution: - { - integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==, - } - engines: { node: ">= 8" } - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - /d@1.0.1: - resolution: - { - integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==, - } - dependencies: - es5-ext: 0.10.62 - type: 1.2.0 - dev: false - - /data-uri-to-buffer@4.0.1: - resolution: - { - integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==, - } - engines: { node: ">= 12" } - dev: false - - /debug@2.6.9: - resolution: - { - integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==, - } - peerDependencies: - supports-color: "*" - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.0.0 - dev: false - - /debug@3.2.7: - resolution: - { - integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==, - } - peerDependencies: - supports-color: "*" - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - dev: false - - /debug@4.3.4: - resolution: - { - integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==, - } - engines: { node: ">=6.0" } - peerDependencies: - supports-color: "*" - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - - /decamelize-keys@1.1.1: - resolution: - { - integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==, - } - engines: { node: ">=0.10.0" } - dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 - - /decamelize@1.2.0: - resolution: - { - integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==, - } - engines: { node: ">=0.10.0" } - - /dedent@0.7.0: - resolution: - { - integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==, - } - dev: true - - /deep-is@0.1.4: - resolution: - { - integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, - } - - /deepmerge@4.3.1: - resolution: - { - integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==, - } - engines: { node: ">=0.10.0" } - dev: true - - /define-properties@1.2.0: - resolution: - { - integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==, - } - engines: { node: ">= 0.4" } - dependencies: - has-property-descriptors: 1.0.0 - object-keys: 1.1.1 - dev: false - - /detect-newline@3.1.0: - resolution: - { - integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==, - } - engines: { node: ">=8" } - dev: true - - /diff-sequences@29.4.3: - resolution: - { - integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - /dir-glob@3.0.1: - resolution: - { - integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==, - } - engines: { node: ">=8" } - dependencies: - path-type: 4.0.0 - - /doctrine@2.1.0: - resolution: - { - integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==, - } - engines: { node: ">=0.10.0" } - dependencies: - esutils: 2.0.3 - dev: false - - /doctrine@3.0.0: - resolution: - { - integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==, - } - engines: { node: ">=6.0.0" } - dependencies: - esutils: 2.0.3 - - /electron-to-chromium@1.4.376: - resolution: - { - integrity: sha512-TFeOKd98TpJzRHkr4Aorn16QkMnuCQuGAE6IZ0wYF+qkbSfMPqjplvRppR02tMUpVxZz8nyBNvVm9lIZsqrbPQ==, - } - dev: true - - /emittery@0.13.1: - resolution: - { - integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==, - } - engines: { node: ">=12" } - dev: true - - /emoji-regex@8.0.0: - resolution: - { - integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, - } - - /enquirer@2.3.6: - resolution: - { - integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==, - } - engines: { node: ">=8.6" } - dependencies: - ansi-colors: 4.1.3 - dev: true - - /error-ex@1.3.2: - resolution: - { - integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==, - } - dependencies: - is-arrayish: 0.2.1 - - /es-abstract@1.21.2: - resolution: - { - integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==, - } - engines: { node: ">= 0.4" } - dependencies: - array-buffer-byte-length: 1.0.0 - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - es-set-tostringtag: 2.0.1 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.5 - get-intrinsic: 1.2.0 - get-symbol-description: 1.0.0 - globalthis: 1.0.3 - gopd: 1.0.1 - has: 1.0.3 - has-property-descriptors: 1.0.0 - has-proto: 1.0.1 - has-symbols: 1.0.3 - internal-slot: 1.0.5 - is-array-buffer: 3.0.2 - is-callable: 1.2.7 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - is-string: 1.0.7 - is-typed-array: 1.1.10 - is-weakref: 1.0.2 - object-inspect: 1.12.3 - object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.5.0 - safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.7 - string.prototype.trimend: 1.0.6 - string.prototype.trimstart: 1.0.6 - typed-array-length: 1.0.4 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.9 - dev: false - - /es-set-tostringtag@2.0.1: - resolution: - { - integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==, - } - engines: { node: ">= 0.4" } - dependencies: - get-intrinsic: 1.2.0 - has: 1.0.3 - has-tostringtag: 1.0.0 - dev: false - - /es-shim-unscopables@1.0.0: - resolution: - { - integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==, - } - dependencies: - has: 1.0.3 - dev: false - - /es-to-primitive@1.2.1: - resolution: - { - integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==, - } - engines: { node: ">= 0.4" } - dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - dev: false - - /es5-ext@0.10.62: - resolution: - { - integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==, - } - engines: { node: ">=0.10" } - requiresBuild: true - dependencies: - es6-iterator: 2.0.3 - es6-symbol: 3.1.3 - next-tick: 1.1.0 - dev: false - - /es6-iterator@2.0.3: - resolution: - { - integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==, - } - dependencies: - d: 1.0.1 - es5-ext: 0.10.62 - es6-symbol: 3.1.3 - dev: false - - /es6-symbol@3.1.3: - resolution: - { - integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==, - } - dependencies: - d: 1.0.1 - ext: 1.7.0 - dev: false - - /esbuild-plugin-alias@0.2.1: - resolution: - { - integrity: sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==, - } - dev: false - - /esbuild@0.17.15: - resolution: - { - integrity: sha512-LBUV2VsUIc/iD9ME75qhT4aJj0r75abCVS0jakhFzOtR7TQsqQA5w0tZ+KTKnwl3kXE0MhskNdHDh/I5aCR1Zw==, - } - engines: { node: ">=12" } - hasBin: true - requiresBuild: true - optionalDependencies: - "@esbuild/android-arm": 0.17.15 - "@esbuild/android-arm64": 0.17.15 - "@esbuild/android-x64": 0.17.15 - "@esbuild/darwin-arm64": 0.17.15 - "@esbuild/darwin-x64": 0.17.15 - "@esbuild/freebsd-arm64": 0.17.15 - "@esbuild/freebsd-x64": 0.17.15 - "@esbuild/linux-arm": 0.17.15 - "@esbuild/linux-arm64": 0.17.15 - "@esbuild/linux-ia32": 0.17.15 - "@esbuild/linux-loong64": 0.17.15 - "@esbuild/linux-mips64el": 0.17.15 - "@esbuild/linux-ppc64": 0.17.15 - "@esbuild/linux-riscv64": 0.17.15 - "@esbuild/linux-s390x": 0.17.15 - "@esbuild/linux-x64": 0.17.15 - "@esbuild/netbsd-x64": 0.17.15 - "@esbuild/openbsd-x64": 0.17.15 - "@esbuild/sunos-x64": 0.17.15 - "@esbuild/win32-arm64": 0.17.15 - "@esbuild/win32-ia32": 0.17.15 - "@esbuild/win32-x64": 0.17.15 - - /escalade@3.1.1: - resolution: - { - integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==, - } - engines: { node: ">=6" } - dev: true - - /escape-string-regexp@1.0.5: - resolution: - { - integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, - } - engines: { node: ">=0.8.0" } - - /escape-string-regexp@2.0.0: - resolution: - { - integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==, - } - engines: { node: ">=8" } - dev: true - - /escape-string-regexp@4.0.0: - resolution: - { - integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, - } - engines: { node: ">=10" } - - /eslint-config-prettier@7.2.0(eslint@7.32.0): - resolution: - { - integrity: sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==, - } - hasBin: true - peerDependencies: - eslint: ">=7.0.0" - dependencies: - eslint: 7.32.0 - dev: true - - /eslint-config-prettier@8.8.0(eslint@8.37.0): - resolution: - { - integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==, - } - hasBin: true - peerDependencies: - eslint: ">=7.0.0" - dependencies: - eslint: 8.37.0 - dev: false - - /eslint-formatter-pretty@4.1.0: - resolution: - { - integrity: sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==, - } - engines: { node: ">=10" } - dependencies: - "@types/eslint": 7.29.0 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - eslint-rule-docs: 1.1.235 - log-symbols: 4.1.0 - plur: 4.0.0 - string-width: 4.2.3 - supports-hyperlinks: 2.3.0 - dev: false - - /eslint-import-resolver-node@0.3.7: - resolution: - { - integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==, - } - dependencies: - debug: 3.2.7 - is-core-module: 2.12.0 - resolve: 1.22.2 - transitivePeerDependencies: - - supports-color - dev: false - - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-node@0.3.7)(eslint@8.37.0): - resolution: - { - integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==, - } - engines: { node: ">=4" } - peerDependencies: - "@typescript-eslint/parser": "*" - eslint: "*" - eslint-import-resolver-node: "*" - eslint-import-resolver-typescript: "*" - eslint-import-resolver-webpack: "*" - peerDependenciesMeta: - "@typescript-eslint/parser": - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - dependencies: - "@typescript-eslint/parser": 5.57.0(eslint@8.37.0)(typescript@5.0.4) - debug: 3.2.7 - eslint: 8.37.0 - eslint-import-resolver-node: 0.3.7 - transitivePeerDependencies: - - supports-color - dev: false - - /eslint-plugin-es@3.0.1(eslint@7.32.0): - resolution: - { - integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==, - } - engines: { node: ">=8.10.0" } - peerDependencies: - eslint: ">=4.19.1" - dependencies: - eslint: 7.32.0 - eslint-utils: 2.1.0 - regexpp: 3.2.0 - dev: true - - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.57.0)(eslint@8.37.0): - resolution: - { - integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==, - } - engines: { node: ">=4" } - peerDependencies: - "@typescript-eslint/parser": "*" - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - "@typescript-eslint/parser": - optional: true - dependencies: - "@typescript-eslint/parser": 5.57.0(eslint@8.37.0)(typescript@5.0.4) - array-includes: 3.1.6 - array.prototype.flat: 1.3.1 - array.prototype.flatmap: 1.3.1 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 8.37.0 - eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-node@0.3.7)(eslint@8.37.0) - has: 1.0.3 - is-core-module: 2.12.0 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.values: 1.1.6 - resolve: 1.22.2 - semver: 6.3.0 - tsconfig-paths: 3.14.2 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: false - - /eslint-plugin-node@11.1.0(eslint@7.32.0): - resolution: - { - integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==, - } - engines: { node: ">=8.10.0" } - peerDependencies: - eslint: ">=5.16.0" - dependencies: - eslint: 7.32.0 - eslint-plugin-es: 3.0.1(eslint@7.32.0) - eslint-utils: 2.1.0 - ignore: 5.2.4 - minimatch: 3.1.2 - resolve: 1.22.2 - semver: 6.3.0 - dev: true - - /eslint-plugin-prettier@3.4.1(eslint-config-prettier@7.2.0)(eslint@7.32.0)(prettier@2.8.8): - resolution: - { - integrity: sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==, - } - engines: { node: ">=6.0.0" } - peerDependencies: - eslint: ">=5.0.0" - eslint-config-prettier: "*" - prettier: ">=1.13.0" - peerDependenciesMeta: - eslint-config-prettier: - optional: true - dependencies: - eslint: 7.32.0 - eslint-config-prettier: 7.2.0(eslint@7.32.0) - prettier: 2.8.8 - prettier-linter-helpers: 1.0.0 - dev: true - - /eslint-rule-docs@1.1.235: - resolution: - { - integrity: sha512-+TQ+x4JdTnDoFEXXb3fDvfGOwnyNV7duH8fXWTPD1ieaBmB8omj7Gw/pMBBu4uI2uJCCU8APDaQJzWuXnTsH4A==, - } - dev: false - - /eslint-scope@5.1.1: - resolution: - { - integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==, - } - engines: { node: ">=8.0.0" } - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - - /eslint-scope@7.2.0: - resolution: - { - integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - dev: false - - /eslint-utils@2.1.0: - resolution: - { - integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==, - } - engines: { node: ">=6" } - dependencies: - eslint-visitor-keys: 1.3.0 - dev: true - - /eslint-utils@3.0.0(eslint@7.32.0): - resolution: - { - integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==, - } - engines: { node: ^10.0.0 || ^12.0.0 || >= 14.0.0 } - peerDependencies: - eslint: ">=5" - dependencies: - eslint: 7.32.0 - eslint-visitor-keys: 2.1.0 - dev: true - - /eslint-visitor-keys@1.3.0: - resolution: - { - integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==, - } - engines: { node: ">=4" } - dev: true - - /eslint-visitor-keys@2.1.0: - resolution: - { - integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==, - } - engines: { node: ">=10" } - dev: true - - /eslint-visitor-keys@3.4.0: - resolution: - { - integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - dev: false - - /eslint@7.32.0: - resolution: - { - integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==, - } - engines: { node: ^10.12.0 || >=12.0.0 } - hasBin: true - dependencies: - "@babel/code-frame": 7.12.11 - "@eslint/eslintrc": 0.4.3 - "@humanwhocodes/config-array": 0.5.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - enquirer: 2.3.6 - escape-string-regexp: 4.0.0 - eslint-scope: 5.1.1 - eslint-utils: 2.1.0 - eslint-visitor-keys: 2.1.0 - espree: 7.3.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - functional-red-black-tree: 1.0.1 - glob-parent: 5.1.2 - globals: 13.20.0 - ignore: 4.0.6 - import-fresh: 3.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - js-yaml: 3.14.1 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.1 - progress: 2.0.3 - regexpp: 3.2.0 - semver: 7.5.0 - strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 - table: 6.8.1 - text-table: 0.2.0 - v8-compile-cache: 2.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint@8.37.0: - resolution: - { - integrity: sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - hasBin: true - dependencies: - "@eslint-community/eslint-utils": 4.4.0(eslint@8.37.0) - "@eslint-community/regexpp": 4.5.0 - "@eslint/eslintrc": 2.0.2 - "@eslint/js": 8.37.0 - "@humanwhocodes/config-array": 0.11.8 - "@humanwhocodes/module-importer": 1.0.1 - "@nodelib/fs.walk": 1.2.8 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.0 - eslint-visitor-keys: 3.4.0 - espree: 9.5.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.20.0 - grapheme-splitter: 1.0.4 - ignore: 5.2.4 - import-fresh: 3.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-sdsl: 4.4.0 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.1 - strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - dev: false - - /esm-loader-typescript@1.0.4: - resolution: - { - integrity: sha512-ejo2f+NKIt23jaJKVpjcRQC0xTa6cTqt6VA+z8Ef/A/TCjQ5u7opPO1J4fJFeTiiHEo8JqU92EG4I1KwuXYZMg==, - } - dependencies: - create-esm-loader: 0.2.3 - npm-run-all: 4.1.5 - semver: 7.5.0 - typescript: 5.0.4 - dev: false - - /espree@7.3.1: - resolution: - { - integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==, - } - engines: { node: ^10.12.0 || >=12.0.0 } - dependencies: - acorn: 7.4.1 - acorn-jsx: 5.3.2(acorn@7.4.1) - eslint-visitor-keys: 1.3.0 - dev: true - - /espree@9.5.1: - resolution: - { - integrity: sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - dependencies: - acorn: 8.8.2 - acorn-jsx: 5.3.2(acorn@8.8.2) - eslint-visitor-keys: 3.4.0 - dev: false - - /esprima@4.0.1: - resolution: - { - integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, - } - engines: { node: ">=4" } - hasBin: true - dev: true - - /esquery@1.5.0: - resolution: - { - integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==, - } - engines: { node: ">=0.10" } - dependencies: - estraverse: 5.3.0 - - /esrecurse@4.3.0: - resolution: - { - integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, - } - engines: { node: ">=4.0" } - dependencies: - estraverse: 5.3.0 - - /estraverse@4.3.0: - resolution: - { - integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==, - } - engines: { node: ">=4.0" } - - /estraverse@5.3.0: - resolution: - { - integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, - } - engines: { node: ">=4.0" } - - /esutils@2.0.3: - resolution: - { - integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, - } - engines: { node: ">=0.10.0" } - - /eventemitter3@5.0.1: - resolution: - { - integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==, - } - dev: false - - /execa@5.1.1: - resolution: - { - integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==, - } - engines: { node: ">=10" } - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - dev: true - - /exit@0.1.2: - resolution: - { - integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==, - } - engines: { node: ">= 0.8.0" } - dev: true - - /expect@29.5.0: - resolution: - { - integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/expect-utils": 29.5.0 - jest-get-type: 29.4.3 - jest-matcher-utils: 29.5.0 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - dev: true - - /ext@1.7.0: - resolution: - { - integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==, - } - dependencies: - type: 2.7.2 - dev: false - - /external-editor@3.1.0: - resolution: - { - integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==, - } - engines: { node: ">=4" } - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - dev: true - - /fast-deep-equal@3.1.3: - resolution: - { - integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, - } - - /fast-diff@1.2.0: - resolution: - { - integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==, - } - dev: true - - /fast-glob@3.2.12: - resolution: - { - integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==, - } - engines: { node: ">=8.6.0" } - dependencies: - "@nodelib/fs.stat": 2.0.5 - "@nodelib/fs.walk": 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - - /fast-json-stable-stringify@2.1.0: - resolution: - { - integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, - } - - /fast-levenshtein@2.0.6: - resolution: - { - integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, - } - - /fastq@1.15.0: - resolution: - { - integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==, - } - dependencies: - reusify: 1.0.4 - - /fb-watchman@2.0.2: - resolution: - { - integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==, - } - dependencies: - bser: 2.1.1 - dev: true - - /fetch-blob@3.2.0: - resolution: - { - integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==, - } - engines: { node: ^12.20 || >= 14.13 } - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 3.2.1 - dev: false - - /figures@3.2.0: - resolution: - { - integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==, - } - engines: { node: ">=8" } - dependencies: - escape-string-regexp: 1.0.5 - dev: true - - /file-entry-cache@6.0.1: - resolution: - { - integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==, - } - engines: { node: ^10.12.0 || >=12.0.0 } - dependencies: - flat-cache: 3.0.4 - - /fill-range@7.0.1: - resolution: - { - integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==, - } - engines: { node: ">=8" } - dependencies: - to-regex-range: 5.0.1 - - /find-up@4.1.0: - resolution: - { - integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, - } - engines: { node: ">=8" } - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - - /find-up@5.0.0: - resolution: - { - integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, - } - engines: { node: ">=10" } - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - dev: false - - /flat-cache@3.0.4: - resolution: - { - integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==, - } - engines: { node: ^10.12.0 || >=12.0.0 } - dependencies: - flatted: 3.2.7 - rimraf: 3.0.2 - - /flatted@3.2.7: - resolution: - { - integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==, - } - - /for-each@0.3.3: - resolution: - { - integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==, - } - dependencies: - is-callable: 1.2.7 - dev: false - - /formdata-polyfill@4.0.10: - resolution: - { - integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==, - } - engines: { node: ">=12.20.0" } - dependencies: - fetch-blob: 3.2.0 - dev: false - - /fs.realpath@1.0.0: - resolution: - { - integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, - } - - /fsevents@2.3.2: - resolution: - { - integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==, - } - engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } - os: [darwin] - requiresBuild: true - dev: true + ts-node: optional: true - - /function-bind@1.1.1: - resolution: - { - integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==, - } - - /function.prototype.name@1.1.5: - resolution: - { - integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - functions-have-names: 1.2.3 - dev: false - - /functional-red-black-tree@1.0.1: - resolution: - { - integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==, - } - dev: true - - /functions-have-names@1.2.3: - resolution: - { - integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==, - } - dev: false - - /gensync@1.0.0-beta.2: - resolution: - { - integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==, - } - engines: { node: ">=6.9.0" } - dev: true - - /get-caller-file@2.0.5: - resolution: - { - integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, - } - engines: { node: 6.* || 8.* || >= 10.* } - dev: true - - /get-intrinsic@1.2.0: - resolution: - { - integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==, - } - dependencies: - function-bind: 1.1.1 - has: 1.0.3 - has-symbols: 1.0.3 - dev: false - - /get-package-type@0.1.0: - resolution: - { - integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==, - } - engines: { node: ">=8.0.0" } - dev: true - - /get-stream@6.0.1: - resolution: - { - integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==, - } - engines: { node: ">=10" } - dev: true - - /get-symbol-description@1.0.0: - resolution: - { - integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - dev: false - - /glob-parent@5.1.2: - resolution: - { - integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, - } - engines: { node: ">= 6" } - dependencies: - is-glob: 4.0.3 - - /glob-parent@6.0.2: - resolution: - { - integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, - } - engines: { node: ">=10.13.0" } - dependencies: - is-glob: 4.0.3 - dev: false - - /glob@7.1.6: - resolution: - { - integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==, - } - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true - - /glob@7.2.3: - resolution: - { - integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==, - } - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - /globals@11.12.0: - resolution: - { - integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==, - } - engines: { node: ">=4" } - dev: true - - /globals@13.20.0: - resolution: - { - integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==, - } - engines: { node: ">=8" } - dependencies: - type-fest: 0.20.2 - - /globalthis@1.0.3: - resolution: - { - integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==, - } - engines: { node: ">= 0.4" } - dependencies: - define-properties: 1.2.0 - dev: false - - /globby@11.1.0: - resolution: - { - integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==, - } - engines: { node: ">=10" } - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.2.12 - ignore: 5.2.4 - merge2: 1.4.1 - slash: 3.0.0 - - /gopd@1.0.1: - resolution: - { - integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==, - } - dependencies: - get-intrinsic: 1.2.0 - dev: false - - /graceful-fs@4.2.11: - resolution: - { - integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, - } - - /grapheme-splitter@1.0.4: - resolution: - { - integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==, - } - dev: false - - /gts@3.1.1(typescript@5.0.4): - resolution: - { - integrity: sha512-Jw44aBbzMnd1vtZs7tZt3LMstKQukCBg7N4CKVGzviIQ45Cz5b9lxDJGXVKj/9ySuGv6TYEeijZJGbiiVcM27w==, - } - engines: { node: ">=10" } - hasBin: true - peerDependencies: - typescript: ">=3" - dependencies: - "@typescript-eslint/eslint-plugin": 4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@5.0.4) - "@typescript-eslint/parser": 4.33.0(eslint@7.32.0)(typescript@5.0.4) - chalk: 4.1.2 - eslint: 7.32.0 - eslint-config-prettier: 7.2.0(eslint@7.32.0) - eslint-plugin-node: 11.1.0(eslint@7.32.0) - eslint-plugin-prettier: 3.4.1(eslint-config-prettier@7.2.0)(eslint@7.32.0)(prettier@2.8.8) - execa: 5.1.1 - inquirer: 7.3.3 - json5: 2.2.3 - meow: 9.0.0 - ncp: 2.0.0 - prettier: 2.8.8 - rimraf: 3.0.2 - typescript: 5.0.4 - write-file-atomic: 3.0.3 - transitivePeerDependencies: - - supports-color - dev: true - - /hard-rejection@2.1.0: - resolution: - { - integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==, - } - engines: { node: ">=6" } - - /has-bigints@1.0.2: - resolution: - { - integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==, - } - dev: false - - /has-flag@3.0.0: - resolution: - { - integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==, - } - engines: { node: ">=4" } - - /has-flag@4.0.0: - resolution: - { - integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, - } - engines: { node: ">=8" } - - /has-property-descriptors@1.0.0: - resolution: - { - integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==, - } - dependencies: - get-intrinsic: 1.2.0 - dev: false - - /has-proto@1.0.1: - resolution: - { - integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==, - } - engines: { node: ">= 0.4" } - dev: false - - /has-symbols@1.0.3: - resolution: - { - integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==, - } - engines: { node: ">= 0.4" } - dev: false - - /has-tostringtag@1.0.0: - resolution: - { - integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==, - } - engines: { node: ">= 0.4" } - dependencies: - has-symbols: 1.0.3 - dev: false - - /has@1.0.3: - resolution: - { - integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==, - } - engines: { node: ">= 0.4.0" } - dependencies: - function-bind: 1.1.1 - - /hosted-git-info@2.8.9: - resolution: - { - integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==, - } - - /hosted-git-info@4.1.0: - resolution: - { - integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==, - } - engines: { node: ">=10" } - dependencies: - lru-cache: 6.0.0 - - /html-escaper@2.0.2: - resolution: - { - integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==, - } - dev: true - - /human-signals@2.1.0: - resolution: - { - integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==, - } - engines: { node: ">=10.17.0" } - dev: true - - /iconv-lite@0.4.24: - resolution: - { - integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==, - } - engines: { node: ">=0.10.0" } - dependencies: - safer-buffer: 2.1.2 - dev: true - - /ignore@4.0.6: - resolution: - { - integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==, - } - engines: { node: ">= 4" } - dev: true - - /ignore@5.2.4: - resolution: - { - integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==, - } - engines: { node: ">= 4" } - - /import-fresh@3.3.0: - resolution: - { - integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==, - } - engines: { node: ">=6" } - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - /import-local@3.1.0: - resolution: - { - integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==, - } - engines: { node: ">=8" } - hasBin: true - dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 - dev: true - - /imurmurhash@0.1.4: - resolution: - { - integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, - } - engines: { node: ">=0.8.19" } - - /indent-string@4.0.0: - resolution: - { - integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==, - } - engines: { node: ">=8" } - - /inflight@1.0.6: - resolution: - { - integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, - } - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - /inherits@2.0.4: - resolution: - { - integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, - } - - /inquirer@7.3.3: - resolution: - { - integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==, - } - engines: { node: ">=8.0.0" } - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.2.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - run-async: 2.4.1 - rxjs: 6.6.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - dev: true - - /internal-slot@1.0.5: - resolution: - { - integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==, - } - engines: { node: ">= 0.4" } - dependencies: - get-intrinsic: 1.2.0 - has: 1.0.3 - side-channel: 1.0.4 - dev: false - - /irregular-plurals@3.5.0: - resolution: - { - integrity: sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==, - } - engines: { node: ">=8" } - dev: false - - /is-array-buffer@3.0.2: - resolution: - { - integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==, - } - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - is-typed-array: 1.1.10 - dev: false - - /is-arrayish@0.2.1: - resolution: - { - integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, - } - - /is-bigint@1.0.4: - resolution: - { - integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==, - } - dependencies: - has-bigints: 1.0.2 - dev: false - - /is-binary-path@2.1.0: - resolution: - { - integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, - } - engines: { node: ">=8" } - dependencies: - binary-extensions: 2.2.0 - dev: true - - /is-boolean-object@1.1.2: - resolution: - { - integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: false - - /is-callable@1.2.7: - resolution: - { - integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==, - } - engines: { node: ">= 0.4" } - dev: false - - /is-core-module@2.12.0: - resolution: - { - integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==, - } - dependencies: - has: 1.0.3 - - /is-date-object@1.0.5: - resolution: - { - integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==, - } - engines: { node: ">= 0.4" } - dependencies: - has-tostringtag: 1.0.0 - dev: false - - /is-extglob@2.1.1: - resolution: - { - integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, - } - engines: { node: ">=0.10.0" } - - /is-fullwidth-code-point@3.0.0: - resolution: - { - integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, - } - engines: { node: ">=8" } - - /is-generator-fn@2.1.0: - resolution: - { - integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==, - } - engines: { node: ">=6" } - dev: true - - /is-glob@4.0.3: - resolution: - { - integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, - } - engines: { node: ">=0.10.0" } - dependencies: - is-extglob: 2.1.1 - - /is-negative-zero@2.0.2: - resolution: - { - integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==, - } - engines: { node: ">= 0.4" } - dev: false - - /is-number-object@1.0.7: - resolution: - { - integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==, - } - engines: { node: ">= 0.4" } - dependencies: - has-tostringtag: 1.0.0 - dev: false - - /is-number@7.0.0: - resolution: - { - integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, - } - engines: { node: ">=0.12.0" } - - /is-path-inside@3.0.3: - resolution: - { - integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==, - } - engines: { node: ">=8" } - dev: false - - /is-plain-obj@1.1.0: - resolution: - { - integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==, - } - engines: { node: ">=0.10.0" } - - /is-regex@1.1.4: - resolution: - { - integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: false - - /is-shared-array-buffer@1.0.2: - resolution: - { - integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==, - } - dependencies: - call-bind: 1.0.2 - dev: false - - /is-stream@2.0.1: - resolution: - { - integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==, - } - engines: { node: ">=8" } - dev: true - - /is-string@1.0.7: - resolution: - { - integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==, - } - engines: { node: ">= 0.4" } - dependencies: - has-tostringtag: 1.0.0 - dev: false - - /is-symbol@1.0.4: - resolution: - { - integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==, - } - engines: { node: ">= 0.4" } - dependencies: - has-symbols: 1.0.3 - dev: false - - /is-typed-array@1.1.10: - resolution: - { - integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==, - } - engines: { node: ">= 0.4" } - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 - dev: false - - /is-typedarray@1.0.0: - resolution: - { - integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==, - } - - /is-unicode-supported@0.1.0: - resolution: - { - integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==, - } - engines: { node: ">=10" } - dev: false - - /is-weakref@1.0.2: - resolution: - { - integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==, - } - dependencies: - call-bind: 1.0.2 - dev: false - - /isexe@2.0.0: - resolution: - { - integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, - } - - /istanbul-lib-coverage@3.2.0: - resolution: - { - integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==, - } - engines: { node: ">=8" } - dev: true - - /istanbul-lib-instrument@5.2.1: - resolution: - { - integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==, - } - engines: { node: ">=8" } - dependencies: - "@babel/core": 7.21.4 - "@babel/parser": 7.21.4 - "@istanbuljs/schema": 0.1.3 - istanbul-lib-coverage: 3.2.0 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-lib-report@3.0.0: - resolution: - { - integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==, - } - engines: { node: ">=8" } - dependencies: - istanbul-lib-coverage: 3.2.0 - make-dir: 3.1.0 - supports-color: 7.2.0 - dev: true - - /istanbul-lib-source-maps@4.0.1: - resolution: - { - integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==, - } - engines: { node: ">=10" } - dependencies: - debug: 4.3.4 - istanbul-lib-coverage: 3.2.0 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-reports@3.1.5: - resolution: - { - integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==, - } - engines: { node: ">=8" } - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.0 - dev: true - - /javascript-natural-sort@0.7.1: - resolution: - { - integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==, - } - dev: true - - /jest-changed-files@29.5.0: - resolution: - { - integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - execa: 5.1.1 - p-limit: 3.1.0 - dev: true - - /jest-circus@29.5.0: - resolution: - { - integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/environment": 29.5.0 - "@jest/expect": 29.5.0 - "@jest/test-result": 29.5.0 - "@jest/types": 29.5.0 - "@types/node": 14.11.2 - chalk: 4.1.2 - co: 4.6.0 - dedent: 0.7.0 - is-generator-fn: 2.1.0 - jest-each: 29.5.0 - jest-matcher-utils: 29.5.0 - jest-message-util: 29.5.0 - jest-runtime: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 - p-limit: 3.1.0 - pretty-format: 29.5.0 - pure-rand: 6.0.2 - slash: 3.0.0 - stack-utils: 2.0.6 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-cli@29.5.0(@types/node@14.11.2): - resolution: - { - integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - "@jest/core": 29.5.0 - "@jest/test-result": 29.5.0 - "@jest/types": 29.5.0 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - import-local: 3.1.0 - jest-config: 29.5.0(@types/node@14.11.2) - jest-util: 29.5.0 - jest-validate: 29.5.0 - prompts: 2.4.2 - yargs: 17.7.2 - transitivePeerDependencies: - - "@types/node" - - supports-color - - ts-node - dev: true - - /jest-config@29.5.0(@types/node@14.11.2): - resolution: - { - integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - "@types/node": "*" - ts-node: ">=9.0.0" - peerDependenciesMeta: - "@types/node": - optional: true - ts-node: - optional: true - dependencies: - "@babel/core": 7.21.4 - "@jest/test-sequencer": 29.5.0 - "@jest/types": 29.5.0 - "@types/node": 14.11.2 - babel-jest: 29.5.0(@babel/core@7.21.4) - chalk: 4.1.2 - ci-info: 3.8.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.5.0 - jest-environment-node: 29.5.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-runner: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-diff@29.5.0: - resolution: - { - integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - chalk: 4.1.2 - diff-sequences: 29.4.3 - jest-get-type: 29.4.3 - pretty-format: 29.5.0 - - /jest-docblock@29.4.3: - resolution: - { - integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - detect-newline: 3.1.0 - dev: true - - /jest-each@29.5.0: - resolution: - { - integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/types": 29.5.0 - chalk: 4.1.2 - jest-get-type: 29.4.3 - jest-util: 29.5.0 - pretty-format: 29.5.0 - dev: true - - /jest-environment-node@29.5.0: - resolution: - { - integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/environment": 29.5.0 - "@jest/fake-timers": 29.5.0 - "@jest/types": 29.5.0 - "@types/node": 14.11.2 - jest-mock: 29.5.0 - jest-util: 29.5.0 - dev: true - - /jest-get-type@29.4.3: - resolution: - { - integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - /jest-haste-map@29.5.0: - resolution: - { - integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/types": 29.5.0 - "@types/graceful-fs": 4.1.6 - "@types/node": 14.11.2 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 29.4.3 - jest-util: 29.5.0 - jest-worker: 29.5.0 - micromatch: 4.0.5 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /jest-leak-detector@29.5.0: - resolution: - { - integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - jest-get-type: 29.4.3 - pretty-format: 29.5.0 - dev: true - - /jest-matcher-utils@29.5.0: - resolution: - { - integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - chalk: 4.1.2 - jest-diff: 29.5.0 - jest-get-type: 29.4.3 - pretty-format: 29.5.0 - dev: true - - /jest-message-util@29.5.0: - resolution: - { - integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@babel/code-frame": 7.21.4 - "@jest/types": 29.5.0 - "@types/stack-utils": 2.0.1 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.5 - pretty-format: 29.5.0 - slash: 3.0.0 - stack-utils: 2.0.6 - dev: true - - /jest-mock@29.5.0: - resolution: - { - integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/types": 29.5.0 - "@types/node": 14.11.2 - jest-util: 29.5.0 - dev: true - - /jest-pnp-resolver@1.2.3(jest-resolve@29.5.0): - resolution: - { - integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==, - } - engines: { node: ">=6" } - peerDependencies: - jest-resolve: "*" - peerDependenciesMeta: - jest-resolve: - optional: true - dependencies: - jest-resolve: 29.5.0 - dev: true - - /jest-regex-util@29.4.3: - resolution: - { - integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dev: true - - /jest-resolve-dependencies@29.5.0: - resolution: - { - integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - jest-regex-util: 29.4.3 - jest-snapshot: 29.5.0 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-resolve@29.5.0: - resolution: - { - integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - chalk: 4.1.2 - graceful-fs: 4.2.11 - jest-haste-map: 29.5.0 - jest-pnp-resolver: 1.2.3(jest-resolve@29.5.0) - jest-util: 29.5.0 - jest-validate: 29.5.0 - resolve: 1.22.2 - resolve.exports: 2.0.2 - slash: 3.0.0 - dev: true - - /jest-runner@29.5.0: - resolution: - { - integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/console": 29.5.0 - "@jest/environment": 29.5.0 - "@jest/test-result": 29.5.0 - "@jest/transform": 29.5.0 - "@jest/types": 29.5.0 - "@types/node": 14.11.2 - chalk: 4.1.2 - emittery: 0.13.1 - graceful-fs: 4.2.11 - jest-docblock: 29.4.3 - jest-environment-node: 29.5.0 - jest-haste-map: 29.5.0 - jest-leak-detector: 29.5.0 - jest-message-util: 29.5.0 - jest-resolve: 29.5.0 - jest-runtime: 29.5.0 - jest-util: 29.5.0 - jest-watcher: 29.5.0 - jest-worker: 29.5.0 - p-limit: 3.1.0 - source-map-support: 0.5.13 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-runtime@29.5.0: - resolution: - { - integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/environment": 29.5.0 - "@jest/fake-timers": 29.5.0 - "@jest/globals": 29.5.0 - "@jest/source-map": 29.4.3 - "@jest/test-result": 29.5.0 - "@jest/transform": 29.5.0 - "@jest/types": 29.5.0 - "@types/node": 14.11.2 - chalk: 4.1.2 - cjs-module-lexer: 1.2.2 - collect-v8-coverage: 1.0.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-haste-map: 29.5.0 - jest-message-util: 29.5.0 - jest-mock: 29.5.0 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-snapshot@29.5.0: - resolution: - { - integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@babel/core": 7.21.4 - "@babel/generator": 7.21.4 - "@babel/plugin-syntax-jsx": 7.21.4(@babel/core@7.21.4) - "@babel/plugin-syntax-typescript": 7.21.4(@babel/core@7.21.4) - "@babel/traverse": 7.21.4 - "@babel/types": 7.21.4 - "@jest/expect-utils": 29.5.0 - "@jest/transform": 29.5.0 - "@jest/types": 29.5.0 - "@types/babel__traverse": 7.18.5 - "@types/prettier": 2.7.2 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.4) - chalk: 4.1.2 - expect: 29.5.0 - graceful-fs: 4.2.11 - jest-diff: 29.5.0 - jest-get-type: 29.4.3 - jest-matcher-utils: 29.5.0 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - natural-compare: 1.4.0 - pretty-format: 29.5.0 - semver: 7.5.0 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-util@29.5.0: - resolution: - { - integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/types": 29.5.0 - "@types/node": 14.11.2 - chalk: 4.1.2 - ci-info: 3.8.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - dev: true - - /jest-validate@29.5.0: - resolution: - { - integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/types": 29.5.0 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 29.4.3 - leven: 3.1.0 - pretty-format: 29.5.0 - dev: true - - /jest-watcher@29.5.0: - resolution: - { - integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/test-result": 29.5.0 - "@jest/types": 29.5.0 - "@types/node": 14.11.2 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.13.1 - jest-util: 29.5.0 - string-length: 4.0.2 - dev: true - - /jest-worker@29.5.0: - resolution: - { - integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@types/node": 14.11.2 - jest-util: 29.5.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 - dev: true - - /jest@29.5.0(@types/node@14.11.2): - resolution: - { - integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - "@jest/core": 29.5.0 - "@jest/types": 29.5.0 - import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@14.11.2) - transitivePeerDependencies: - - "@types/node" - - supports-color - - ts-node - dev: true - - /joycon@3.1.1: - resolution: - { - integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==, - } - engines: { node: ">=10" } - dev: true - - /js-sdsl@4.4.0: - resolution: - { - integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==, - } - dev: false - - /js-tokens@4.0.0: - resolution: - { - integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, - } - - /js-yaml@3.14.1: - resolution: - { - integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==, - } - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: true - - /js-yaml@4.1.0: - resolution: - { - integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, - } - hasBin: true - dependencies: - argparse: 2.0.1 - dev: false - - /jsesc@2.5.2: - resolution: - { - integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==, - } - engines: { node: ">=4" } - hasBin: true - dev: true - - /json-parse-better-errors@1.0.2: - resolution: - { - integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==, - } - dev: false - - /json-parse-even-better-errors@2.3.1: - resolution: - { - integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, - } - - /json-schema-traverse@0.4.1: - resolution: - { - integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, - } - - /json-schema-traverse@1.0.0: - resolution: - { - integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==, - } - dev: true - - /json-stable-stringify-without-jsonify@1.0.1: - resolution: - { - integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, - } - - /json5@1.0.2: - resolution: - { - integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==, - } - hasBin: true - dependencies: - minimist: 1.2.8 - dev: false - - /json5@2.2.3: - resolution: - { - integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, - } - engines: { node: ">=6" } - hasBin: true - dev: true - - /jsonc-parser@3.2.0: - resolution: - { - integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==, - } - dev: true - - /kind-of@6.0.3: - resolution: - { - integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==, - } - engines: { node: ">=0.10.0" } - - /kleur@3.0.3: - resolution: - { - integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==, - } - engines: { node: ">=6" } - dev: true - - /leven@3.1.0: - resolution: - { - integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==, - } - engines: { node: ">=6" } - dev: true - - /levn@0.4.1: - resolution: - { - integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, - } - engines: { node: ">= 0.8.0" } - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - - /light-bolt11-decoder@3.0.0: - resolution: - { - integrity: sha512-AKvOigD2pmC8ktnn2TIqdJu0K0qk6ukUmTvHwF3JNkm8uWCqt18Ijn33A/a7gaRZ4PghJ59X+8+MXrzLKdBTmQ==, - } - dependencies: - "@scure/base": 1.1.1 - dev: false - - /lilconfig@2.1.0: - resolution: - { - integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==, - } - engines: { node: ">=10" } - dev: true - - /lines-and-columns@1.2.4: - resolution: - { - integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, - } - - /load-json-file@4.0.0: - resolution: - { - integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==, - } - engines: { node: ">=4" } - dependencies: - graceful-fs: 4.2.11 - parse-json: 4.0.0 - pify: 3.0.0 - strip-bom: 3.0.0 - dev: false - - /load-tsconfig@0.2.5: - resolution: - { - integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - dev: true - - /locate-path@5.0.0: - resolution: - { - integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, - } - engines: { node: ">=8" } - dependencies: - p-locate: 4.1.0 - - /locate-path@6.0.0: - resolution: - { - integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, - } - engines: { node: ">=10" } - dependencies: - p-locate: 5.0.0 - dev: false - - /lodash.memoize@4.1.2: - resolution: - { - integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==, - } - dev: true - - /lodash.merge@4.6.2: - resolution: - { - integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, - } - - /lodash.sortby@4.7.0: - resolution: - { - integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==, - } - dev: true - - /lodash.truncate@4.4.2: - resolution: - { - integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==, - } - dev: true - - /lodash@4.17.21: - resolution: - { - integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, - } - dev: true - - /log-symbols@4.1.0: - resolution: - { - integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==, - } - engines: { node: ">=10" } - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - dev: false - - /lru-cache@5.1.1: - resolution: - { - integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, - } - dependencies: - yallist: 3.1.1 - dev: true - - /lru-cache@6.0.0: - resolution: - { - integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==, - } - engines: { node: ">=10" } - dependencies: - yallist: 4.0.0 - - /lunr@2.3.9: - resolution: - { - integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==, - } - dev: true - - /make-dir@3.1.0: - resolution: - { - integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==, - } - engines: { node: ">=8" } - dependencies: - semver: 6.3.0 - dev: true - - /make-error@1.3.6: - resolution: - { - integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==, - } - dev: true - - /makeerror@1.0.12: - resolution: - { - integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==, - } - dependencies: - tmpl: 1.0.5 - dev: true - - /map-obj@1.0.1: - resolution: - { - integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==, - } - engines: { node: ">=0.10.0" } - - /map-obj@4.3.0: - resolution: - { - integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==, - } - engines: { node: ">=8" } - - /marked@4.3.0: - resolution: - { - integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==, - } - engines: { node: ">= 12" } - hasBin: true - dev: true - - /memorystream@0.3.1: - resolution: - { - integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==, - } - engines: { node: ">= 0.10.0" } - dev: false - - /meow@9.0.0: - resolution: - { - integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==, - } - engines: { node: ">=10" } - dependencies: - "@types/minimist": 1.2.2 - camelcase-keys: 6.2.2 - decamelize: 1.2.0 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.18.1 - yargs-parser: 20.2.9 - - /merge-stream@2.0.0: - resolution: - { - integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, - } - dev: true - - /merge2@1.4.1: - resolution: - { - integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, - } - engines: { node: ">= 8" } - - /micromatch@4.0.5: - resolution: - { - integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==, - } - engines: { node: ">=8.6" } - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - - /mimic-fn@2.1.0: - resolution: - { - integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, - } - engines: { node: ">=6" } - dev: true - - /min-indent@1.0.1: - resolution: - { - integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==, - } - engines: { node: ">=4" } - - /minimatch@3.1.2: - resolution: - { - integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, - } - dependencies: - brace-expansion: 1.1.11 - - /minimatch@9.0.2: - resolution: - { - integrity: sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==, - } - engines: { node: ">=16 || 14 >=14.17" } - dependencies: - brace-expansion: 2.0.1 - dev: true - - /minimist-options@4.1.0: - resolution: - { - integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==, - } - engines: { node: ">= 6" } - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - - /minimist@1.2.8: - resolution: - { - integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, - } - dev: false - - /ms@2.0.0: - resolution: - { - integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==, - } - dev: false - - /ms@2.1.2: - resolution: - { - integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, - } - - /ms@2.1.3: - resolution: - { - integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, - } - dev: false - - /mute-stream@0.0.8: - resolution: - { - integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==, - } - dev: true - - /mz@2.7.0: - resolution: - { - integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==, - } - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - dev: true - - /natural-compare-lite@1.4.0: - resolution: - { - integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==, - } - dev: false - - /natural-compare@1.4.0: - resolution: - { - integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, - } - - /ncp@2.0.0: - resolution: - { - integrity: sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==, - } - hasBin: true - dev: true - - /next-tick@1.1.0: - resolution: - { - integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==, - } - dev: false - - /nice-try@1.0.5: - resolution: - { - integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==, - } - dev: false - - /node-domexception@1.0.0: - resolution: - { - integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==, - } - engines: { node: ">=10.5.0" } - dev: false - - /node-fetch@3.3.1: - resolution: - { - integrity: sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - dependencies: - data-uri-to-buffer: 4.0.1 - fetch-blob: 3.2.0 - formdata-polyfill: 4.0.10 - dev: false - - /node-gyp-build@4.6.0: - resolution: - { - integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==, - } - hasBin: true - dev: false - - /node-int64@0.4.0: - resolution: - { - integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==, - } - dev: true - - /node-releases@2.0.10: - resolution: - { - integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==, - } - dev: true - - /normalize-package-data@2.5.0: - resolution: - { - integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==, - } - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.2 - semver: 5.7.1 - validate-npm-package-license: 3.0.4 - - /normalize-package-data@3.0.3: - resolution: - { - integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==, - } - engines: { node: ">=10" } - dependencies: - hosted-git-info: 4.1.0 - is-core-module: 2.12.0 - semver: 7.5.0 - validate-npm-package-license: 3.0.4 - - /normalize-path@3.0.0: - resolution: - { - integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, - } - engines: { node: ">=0.10.0" } - dev: true - - /nostr-tools@1.14.0: - resolution: - { - integrity: sha512-hwq2i1z5/DneXRE5Zu/TzQuKzVLcB+gOdfT9CeoiScvNw/2dWRGJvyTXIdF92d7NQ7nMcEwqVJPDytLpEpiiKw==, - } - dependencies: - "@noble/curves": 1.1.0 - "@noble/hashes": 1.3.1 - "@scure/base": 1.1.1 - "@scure/bip32": 1.3.1 - "@scure/bip39": 1.2.1 - dev: false - - /npm-run-all@4.1.5: - resolution: - { - integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==, - } - engines: { node: ">= 4" } - hasBin: true - dependencies: - ansi-styles: 3.2.1 - chalk: 2.4.2 - cross-spawn: 6.0.5 - memorystream: 0.3.1 - minimatch: 3.1.2 - pidtree: 0.3.1 - read-pkg: 3.0.0 - shell-quote: 1.8.1 - string.prototype.padend: 3.1.4 - dev: false - - /npm-run-path@4.0.1: - resolution: - { - integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, - } - engines: { node: ">=8" } - dependencies: - path-key: 3.1.1 - dev: true - - /object-assign@4.1.1: - resolution: - { - integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==, - } - engines: { node: ">=0.10.0" } - dev: true - - /object-inspect@1.12.3: - resolution: - { - integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==, - } - dev: false - - /object-keys@1.1.1: - resolution: - { - integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==, - } - engines: { node: ">= 0.4" } - dev: false - - /object.assign@4.1.4: - resolution: - { - integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - has-symbols: 1.0.3 - object-keys: 1.1.1 - dev: false - - /object.values@1.1.6: - resolution: - { - integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - dev: false - - /once@1.4.0: - resolution: - { - integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, - } - dependencies: - wrappy: 1.0.2 - - /onetime@5.1.2: - resolution: - { - integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, - } - engines: { node: ">=6" } - dependencies: - mimic-fn: 2.1.0 - dev: true - - /optionator@0.9.1: - resolution: - { - integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==, - } - engines: { node: ">= 0.8.0" } - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.3 - - /os-tmpdir@1.0.2: - resolution: - { - integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==, - } - engines: { node: ">=0.10.0" } - dev: true - - /p-limit@2.3.0: - resolution: - { - integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, - } - engines: { node: ">=6" } - dependencies: - p-try: 2.2.0 - - /p-limit@3.1.0: - resolution: - { - integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, - } - engines: { node: ">=10" } - dependencies: - yocto-queue: 0.1.0 - - /p-locate@4.1.0: - resolution: - { - integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, - } - engines: { node: ">=8" } - dependencies: - p-limit: 2.3.0 - - /p-locate@5.0.0: - resolution: - { - integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, - } - engines: { node: ">=10" } - dependencies: - p-limit: 3.1.0 - dev: false - - /p-try@2.2.0: - resolution: - { - integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, - } - engines: { node: ">=6" } - - /parent-module@1.0.1: - resolution: - { - integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, - } - engines: { node: ">=6" } - dependencies: - callsites: 3.1.0 - - /parse-json@4.0.0: - resolution: - { - integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==, - } - engines: { node: ">=4" } - dependencies: - error-ex: 1.3.2 - json-parse-better-errors: 1.0.2 - dev: false - - /parse-json@5.2.0: - resolution: - { - integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==, - } - engines: { node: ">=8" } - dependencies: - "@babel/code-frame": 7.21.4 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - - /path-exists@4.0.0: - resolution: - { - integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, - } - engines: { node: ">=8" } - - /path-is-absolute@1.0.1: - resolution: - { - integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, - } - engines: { node: ">=0.10.0" } - - /path-key@2.0.1: - resolution: - { - integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==, - } - engines: { node: ">=4" } - dev: false - - /path-key@3.1.1: - resolution: - { - integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, - } - engines: { node: ">=8" } - - /path-parse@1.0.7: - resolution: - { - integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, - } - - /path-type@3.0.0: - resolution: - { - integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==, - } - engines: { node: ">=4" } - dependencies: - pify: 3.0.0 - dev: false - - /path-type@4.0.0: - resolution: - { - integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, - } - engines: { node: ">=8" } - - /picocolors@1.0.0: - resolution: - { - integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==, - } - dev: true - - /picomatch@2.3.1: - resolution: - { - integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, - } - engines: { node: ">=8.6" } - - /pidtree@0.3.1: - resolution: - { - integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==, - } - engines: { node: ">=0.10" } - hasBin: true - dev: false - - /pify@3.0.0: - resolution: - { - integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==, - } - engines: { node: ">=4" } - dev: false - - /pirates@4.0.5: - resolution: - { - integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==, - } - engines: { node: ">= 6" } - dev: true - - /pkg-dir@4.2.0: - resolution: - { - integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==, - } - engines: { node: ">=8" } - dependencies: - find-up: 4.1.0 - dev: true - - /plur@4.0.0: - resolution: - { - integrity: sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==, - } - engines: { node: ">=10" } - dependencies: - irregular-plurals: 3.5.0 - dev: false - - /postcss-load-config@3.1.4: - resolution: - { - integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==, - } - engines: { node: ">= 10" } - peerDependencies: - postcss: ">=8.0.9" - ts-node: ">=9.0.0" - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - dependencies: - lilconfig: 2.1.0 - yaml: 1.10.2 - dev: true - - /prelude-ls@1.2.1: - resolution: - { - integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, - } - engines: { node: ">= 0.8.0" } - - /prettier-linter-helpers@1.0.0: - resolution: - { - integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==, - } - engines: { node: ">=6.0.0" } - dependencies: - fast-diff: 1.2.0 - dev: true - - /prettier-plugin-organize-imports@3.2.2(prettier@3.0.1)(typescript@5.0.4): - resolution: - { - integrity: sha512-e97lE6odGSiHonHJMTYC0q0iLXQyw0u5z/PJpvP/3vRy6/Zi9kLBwFAbEGjDzIowpjQv8b+J04PDamoUSQbzGA==, - } - peerDependencies: - "@volar/vue-language-plugin-pug": ^1.0.4 - "@volar/vue-typescript": ^1.0.4 - prettier: ">=2.0" - typescript: ">=2.9" - peerDependenciesMeta: - "@volar/vue-language-plugin-pug": - optional: true - "@volar/vue-typescript": - optional: true - dependencies: - prettier: 3.0.1 - typescript: 5.0.4 - dev: true - - /prettier@2.8.8: - resolution: - { - integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==, - } - engines: { node: ">=10.13.0" } - hasBin: true - dev: true - - /prettier@3.0.1: - resolution: - { - integrity: sha512-fcOWSnnpCrovBsmFZIGIy9UqK2FaI7Hqax+DIO0A9UxeVoY4iweyaFjS5TavZN97Hfehph0nhsZnjlVKzEQSrQ==, - } - engines: { node: ">=14" } - hasBin: true - dev: true - - /pretty-format@29.5.0: - resolution: - { - integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/schemas": 29.4.3 - ansi-styles: 5.2.0 - react-is: 18.2.0 - - /progress@2.0.3: - resolution: - { - integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==, - } - engines: { node: ">=0.4.0" } - dev: true - - /prompts@2.4.2: - resolution: - { - integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==, - } - engines: { node: ">= 6" } - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - dev: true - - /punycode@2.3.0: - resolution: - { - integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==, - } - engines: { node: ">=6" } - - /pure-rand@6.0.2: - resolution: - { - integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==, - } - dev: true - - /queue-microtask@1.2.3: - resolution: - { - integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, - } - - /quick-lru@4.0.1: - resolution: - { - integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==, - } - engines: { node: ">=8" } - - /react-is@18.2.0: - resolution: - { - integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==, - } - - /read-pkg-up@7.0.1: - resolution: - { - integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==, - } - engines: { node: ">=8" } - dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - - /read-pkg@3.0.0: - resolution: - { - integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==, - } - engines: { node: ">=4" } - dependencies: - load-json-file: 4.0.0 - normalize-package-data: 2.5.0 - path-type: 3.0.0 - dev: false - - /read-pkg@5.2.0: - resolution: - { - integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==, - } - engines: { node: ">=8" } - dependencies: - "@types/normalize-package-data": 2.4.1 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 - - /readdirp@3.6.0: - resolution: - { - integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, - } - engines: { node: ">=8.10.0" } - dependencies: - picomatch: 2.3.1 - dev: true - - /redent@3.0.0: - resolution: - { - integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==, - } - engines: { node: ">=8" } - dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 - - /regexp.prototype.flags@1.5.0: - resolution: - { - integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - functions-have-names: 1.2.3 - dev: false - - /regexpp@3.2.0: - resolution: - { - integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==, - } - engines: { node: ">=8" } - dev: true - - /require-directory@2.1.1: - resolution: - { - integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, - } - engines: { node: ">=0.10.0" } - dev: true - - /require-from-string@2.0.2: - resolution: - { - integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==, - } - engines: { node: ">=0.10.0" } - dev: true - - /resolve-cwd@3.0.0: - resolution: - { - integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==, - } - engines: { node: ">=8" } - dependencies: - resolve-from: 5.0.0 - dev: true - - /resolve-from@4.0.0: - resolution: - { - integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, - } - engines: { node: ">=4" } - - /resolve-from@5.0.0: - resolution: - { - integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==, - } - engines: { node: ">=8" } - dev: true - - /resolve.exports@2.0.2: - resolution: - { - integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==, - } - engines: { node: ">=10" } - dev: true - - /resolve@1.22.2: - resolution: - { - integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==, - } - hasBin: true - dependencies: - is-core-module: 2.12.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - /restore-cursor@3.1.0: - resolution: - { - integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==, - } - engines: { node: ">=8" } - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - dev: true - - /reusify@1.0.4: - resolution: - { - integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==, - } - engines: { iojs: ">=1.0.0", node: ">=0.10.0" } - - /rimraf@3.0.2: - resolution: - { - integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==, - } - hasBin: true - dependencies: - glob: 7.2.3 - - /rollup@3.25.3: - resolution: - { - integrity: sha512-ZT279hx8gszBj9uy5FfhoG4bZx8c+0A1sbqtr7Q3KNWIizpTdDEPZbV2xcbvHsnFp4MavCQYZyzApJ+virB8Yw==, - } - engines: { node: ">=14.18.0", npm: ">=8.0.0" } - hasBin: true - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /run-async@2.4.1: - resolution: - { - integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==, - } - engines: { node: ">=0.12.0" } - dev: true - - /run-parallel@1.2.0: - resolution: - { - integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, - } - dependencies: - queue-microtask: 1.2.3 - - /rxjs@6.6.7: - resolution: - { - integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==, - } - engines: { npm: ">=2.0.0" } - dependencies: - tslib: 1.14.1 - dev: true - - /safe-regex-test@1.0.0: - resolution: - { - integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==, - } - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - is-regex: 1.1.4 - dev: false - - /safer-buffer@2.1.2: - resolution: - { - integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, - } - dev: true - - /semver@5.7.1: - resolution: - { - integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==, - } - hasBin: true - - /semver@6.3.0: - resolution: - { - integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==, - } - hasBin: true - - /semver@7.5.0: - resolution: - { - integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==, - } - engines: { node: ">=10" } - hasBin: true - dependencies: - lru-cache: 6.0.0 - - /shebang-command@1.2.0: - resolution: - { - integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==, - } - engines: { node: ">=0.10.0" } - dependencies: - shebang-regex: 1.0.0 - dev: false - - /shebang-command@2.0.0: - resolution: - { - integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, - } - engines: { node: ">=8" } - dependencies: - shebang-regex: 3.0.0 - - /shebang-regex@1.0.0: - resolution: - { - integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==, - } - engines: { node: ">=0.10.0" } - dev: false - - /shebang-regex@3.0.0: - resolution: - { - integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, - } - engines: { node: ">=8" } - - /shell-quote@1.8.1: - resolution: - { - integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==, - } - dev: false - - /shiki@0.14.3: - resolution: - { - integrity: sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==, - } - dependencies: - ansi-sequence-parser: 1.1.0 - jsonc-parser: 3.2.0 - vscode-oniguruma: 1.7.0 - vscode-textmate: 8.0.0 - dev: true - - /side-channel@1.0.4: - resolution: - { - integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==, - } - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - object-inspect: 1.12.3 - dev: false - - /signal-exit@3.0.7: - resolution: - { - integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, - } - dev: true - - /sisteransi@1.0.5: - resolution: - { - integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==, - } - dev: true - - /slash@3.0.0: - resolution: - { - integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, - } - engines: { node: ">=8" } - - /slice-ansi@4.0.0: - resolution: - { - integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==, - } - engines: { node: ">=10" } - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - dev: true - - /source-map-support@0.5.13: - resolution: - { - integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==, - } - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - - /source-map@0.5.7: - resolution: - { - integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==, - } - engines: { node: ">=0.10.0" } - dev: true - - /source-map@0.6.1: - resolution: - { - integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, - } - engines: { node: ">=0.10.0" } - dev: true - - /source-map@0.8.0-beta.0: - resolution: - { - integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==, - } - engines: { node: ">= 8" } - dependencies: - whatwg-url: 7.1.0 - dev: true - - /spdx-correct@3.2.0: - resolution: - { - integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==, - } - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.13 - - /spdx-exceptions@2.3.0: - resolution: - { - integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==, - } - - /spdx-expression-parse@3.0.1: - resolution: - { - integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==, - } - dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.13 - - /spdx-license-ids@3.0.13: - resolution: - { - integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==, - } - - /sprintf-js@1.0.3: - resolution: - { - integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==, - } - dev: true - - /stack-utils@2.0.6: - resolution: - { - integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==, - } - engines: { node: ">=10" } - dependencies: - escape-string-regexp: 2.0.0 - dev: true - - /string-length@4.0.2: - resolution: - { - integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==, - } - engines: { node: ">=10" } - dependencies: - char-regex: 1.0.2 - strip-ansi: 6.0.1 - dev: true - - /string-width@4.2.3: - resolution: - { - integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, - } - engines: { node: ">=8" } - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - /string.prototype.padend@3.1.4: - resolution: - { - integrity: sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - dev: false - - /string.prototype.trim@1.2.7: - resolution: - { - integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - dev: false - - /string.prototype.trimend@1.0.6: - resolution: - { - integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==, - } - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - dev: false - - /string.prototype.trimstart@1.0.6: - resolution: - { - integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==, - } - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - dev: false - - /strip-ansi@6.0.1: - resolution: - { - integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, - } - engines: { node: ">=8" } - dependencies: - ansi-regex: 5.0.1 - - /strip-bom@3.0.0: - resolution: - { - integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, - } - engines: { node: ">=4" } - dev: false - - /strip-bom@4.0.0: - resolution: - { - integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==, - } - engines: { node: ">=8" } - dev: true - - /strip-final-newline@2.0.0: - resolution: - { - integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, - } - engines: { node: ">=6" } - dev: true - - /strip-indent@3.0.0: - resolution: - { - integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==, - } - engines: { node: ">=8" } - dependencies: - min-indent: 1.0.1 - - /strip-json-comments@3.1.1: - resolution: - { - integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, - } - engines: { node: ">=8" } - - /sucrase@3.32.0: - resolution: - { - integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==, - } - engines: { node: ">=8" } - hasBin: true - dependencies: - "@jridgewell/gen-mapping": 0.3.3 - commander: 4.1.1 - glob: 7.1.6 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.5 - ts-interface-checker: 0.1.13 - dev: true - - /supports-color@5.5.0: - resolution: - { - integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==, - } - engines: { node: ">=4" } - dependencies: - has-flag: 3.0.0 - - /supports-color@7.2.0: - resolution: - { - integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, - } - engines: { node: ">=8" } - dependencies: - has-flag: 4.0.0 - - /supports-color@8.1.1: - resolution: - { - integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, - } - engines: { node: ">=10" } - dependencies: - has-flag: 4.0.0 - dev: true - - /supports-hyperlinks@2.3.0: - resolution: - { - integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==, - } - engines: { node: ">=8" } - dependencies: - has-flag: 4.0.0 - supports-color: 7.2.0 - dev: false - - /supports-preserve-symlinks-flag@1.0.0: - resolution: - { - integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, - } - engines: { node: ">= 0.4" } - - /table@6.8.1: - resolution: - { - integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==, - } - engines: { node: ">=10.0.0" } - dependencies: - ajv: 8.12.0 - lodash.truncate: 4.4.2 - slice-ansi: 4.0.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true - - /test-exclude@6.0.0: - resolution: - { - integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==, - } - engines: { node: ">=8" } - dependencies: - "@istanbuljs/schema": 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 - dev: true - - /text-table@0.2.0: - resolution: - { - integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==, - } - - /thenify-all@1.6.0: - resolution: - { - integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==, - } - engines: { node: ">=0.8" } - dependencies: - thenify: 3.3.1 - dev: true - - /thenify@3.3.1: - resolution: - { - integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==, - } - dependencies: - any-promise: 1.3.0 - dev: true - - /through@2.3.8: - resolution: - { - integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==, - } - dev: true - - /tmp@0.0.33: - resolution: - { - integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==, - } - engines: { node: ">=0.6.0" } - dependencies: - os-tmpdir: 1.0.2 - dev: true - - /tmpl@1.0.5: - resolution: - { - integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==, - } - dev: true - - /to-fast-properties@2.0.0: - resolution: - { - integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==, - } - engines: { node: ">=4" } - dev: true - - /to-regex-range@5.0.1: - resolution: - { - integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, - } - engines: { node: ">=8.0" } - dependencies: - is-number: 7.0.0 - - /tr46@1.0.1: - resolution: - { - integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==, - } - dependencies: - punycode: 2.3.0 - dev: true - - /tree-kill@1.2.2: - resolution: - { - integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==, - } - hasBin: true - dev: true - - /trim-newlines@3.0.1: - resolution: - { - integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==, - } - engines: { node: ">=8" } - - /ts-interface-checker@0.1.13: - resolution: - { - integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==, - } - dev: true - - /ts-jest@29.1.0(@babel/core@7.21.4)(esbuild@0.17.15)(jest@29.5.0)(typescript@5.0.4): - resolution: - { - integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - hasBin: true - peerDependencies: - "@babel/core": ">=7.0.0-beta.0 <8" - "@jest/types": ^29.0.0 - babel-jest: ^29.0.0 - esbuild: "*" - jest: ^29.0.0 - typescript: ">=4.3 <6" - peerDependenciesMeta: - "@babel/core": - optional: true - "@jest/types": - optional: true - babel-jest: - optional: true - esbuild: - optional: true - dependencies: - "@babel/core": 7.21.4 - bs-logger: 0.2.6 - esbuild: 0.17.15 - fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@14.11.2) - jest-util: 29.5.0 - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.5.0 - typescript: 5.0.4 - yargs-parser: 21.1.1 - dev: true - - /tsconfig-paths@3.14.2: - resolution: - { - integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==, - } - dependencies: - "@types/json5": 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - dev: false - - /tsd@0.28.1: - resolution: - { - integrity: sha512-FeYrfJ05QgEMW/qOukNCr4fAJHww4SaKnivAXRv4g5kj4FeLpNV7zH4dorzB9zAfVX4wmA7zWu/wQf7kkcvfbw==, - } - engines: { node: ">=14.16" } - hasBin: true - dependencies: - "@tsd/typescript": 5.0.4 - eslint-formatter-pretty: 4.1.0 - globby: 11.1.0 - jest-diff: 29.5.0 - meow: 9.0.0 - path-exists: 4.0.0 - read-pkg-up: 7.0.1 - dev: false - - /tslib@1.14.1: - resolution: - { - integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==, - } - - /tstl@2.5.13: - resolution: - { - integrity: sha512-h9wayHHFI5+yqt8iau0vqH96cTNhezhZ/Fk/hrIdpfkiMu3lg9nzyvMfs5bIdX51IVzZO6DudLqhkL/rVXpT6g==, - } - dev: false - - /tsup@6.7.0(typescript@5.0.4): - resolution: - { - integrity: sha512-L3o8hGkaHnu5TdJns+mCqFsDBo83bJ44rlK7e6VdanIvpea4ArPcU3swWGsLVbXak1PqQx/V+SSmFPujBK+zEQ==, - } - engines: { node: ">=14.18" } - hasBin: true - peerDependencies: - "@swc/core": ^1 - postcss: ^8.4.12 - typescript: ">=4.1.0" - peerDependenciesMeta: - "@swc/core": - optional: true - postcss: - optional: true - typescript: - optional: true - dependencies: - bundle-require: 4.0.1(esbuild@0.17.15) - cac: 6.7.14 - chokidar: 3.5.3 - debug: 4.3.4 - esbuild: 0.17.15 - execa: 5.1.1 - globby: 11.1.0 - joycon: 3.1.1 - postcss-load-config: 3.1.4 - resolve-from: 5.0.0 - rollup: 3.25.3 - source-map: 0.8.0-beta.0 - sucrase: 3.32.0 - tree-kill: 1.2.2 - typescript: 5.0.4 - transitivePeerDependencies: - - supports-color - - ts-node - dev: true - - /tsutils@3.21.0(typescript@5.0.4): - resolution: - { - integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==, - } - engines: { node: ">= 6" } - peerDependencies: - typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - dependencies: - tslib: 1.14.1 - typescript: 5.0.4 - - /type-check@0.4.0: - resolution: - { - integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==, - } - engines: { node: ">= 0.8.0" } - dependencies: - prelude-ls: 1.2.1 - - /type-detect@4.0.8: - resolution: - { - integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==, - } - engines: { node: ">=4" } - dev: true - - /type-fest@0.18.1: - resolution: - { - integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==, - } - engines: { node: ">=10" } - - /type-fest@0.20.2: - resolution: - { - integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==, - } - engines: { node: ">=10" } - - /type-fest@0.21.3: - resolution: - { - integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==, - } - engines: { node: ">=10" } - - /type-fest@0.6.0: - resolution: - { - integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==, - } - engines: { node: ">=8" } - - /type-fest@0.8.1: - resolution: - { - integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==, - } - engines: { node: ">=8" } - - /type@1.2.0: - resolution: - { - integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==, - } - dev: false - - /type@2.7.2: - resolution: - { - integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==, - } - dev: false - - /typed-array-length@1.0.4: - resolution: - { - integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==, - } - dependencies: - call-bind: 1.0.2 - for-each: 0.3.3 - is-typed-array: 1.1.10 - dev: false - - /typedarray-to-buffer@3.1.5: - resolution: - { - integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==, - } - dependencies: - is-typedarray: 1.0.0 - - /typedoc-plugin-rename-defaults@0.6.5(typedoc@0.24.8): - resolution: - { - integrity: sha512-DwkgwRMxgu3UrDR3VUAdnF9jYzM6p7rw6UcVIh4MD7yjEmFDR8WWyOlk6oYgELmRYHxTDx0f0GK6iSgoxSh/Qw==, - } - peerDependencies: - typedoc: 0.22.x || 0.23.x || 0.24.x - dependencies: - typedoc: 0.24.8(typescript@5.0.4) - dev: true - - /typedoc@0.24.8(typescript@5.0.4): - resolution: - { - integrity: sha512-ahJ6Cpcvxwaxfu4KtjA8qZNqS43wYt6JL27wYiIgl1vd38WW/KWX11YuAeZhuz9v+ttrutSsgK+XO1CjL1kA3w==, - } - engines: { node: ">= 14.14" } - hasBin: true - peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x - dependencies: - lunr: 2.3.9 - marked: 4.3.0 - minimatch: 9.0.2 - shiki: 0.14.3 - typescript: 5.0.4 - dev: true - - /typescript@5.0.4: - resolution: - { - integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==, - } - engines: { node: ">=12.20" } - hasBin: true - - /unbox-primitive@1.0.2: - resolution: - { - integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==, - } - dependencies: - call-bind: 1.0.2 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 - dev: false - - /update-browserslist-db@1.0.11(browserslist@4.21.5): - resolution: - { - integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==, - } - hasBin: true - peerDependencies: - browserslist: ">= 4.21.0" - dependencies: - browserslist: 4.21.5 - escalade: 3.1.1 - picocolors: 1.0.0 - dev: true - - /uri-js@4.4.1: - resolution: - { - integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, - } - dependencies: - punycode: 2.3.0 - - /utf-8-validate@5.0.10: - resolution: - { - integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==, - } - engines: { node: ">=6.14.2" } - requiresBuild: true - dependencies: - node-gyp-build: 4.6.0 - dev: false - - /utf8-buffer@1.0.0: - resolution: - { - integrity: sha512-ueuhzvWnp5JU5CiGSY4WdKbiN/PO2AZ/lpeLiz2l38qwdLy/cW40XobgyuIWucNyum0B33bVB0owjFCeGBSLqg==, - } - engines: { node: ">=8" } - dev: false - - /v8-compile-cache@2.3.0: - resolution: - { - integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==, - } - dev: true - - /v8-to-istanbul@9.1.0: - resolution: - { - integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==, - } - engines: { node: ">=10.12.0" } - dependencies: - "@jridgewell/trace-mapping": 0.3.18 - "@types/istanbul-lib-coverage": 2.0.4 - convert-source-map: 1.9.0 - dev: true - - /validate-npm-package-license@3.0.4: - resolution: - { - integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==, - } - dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 - - /vscode-oniguruma@1.7.0: - resolution: - { - integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==, - } - dev: true - - /vscode-textmate@8.0.0: - resolution: - { - integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==, - } - dev: true - - /walker@1.0.8: - resolution: - { - integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==, - } - dependencies: - makeerror: 1.0.12 - dev: true - - /web-streams-polyfill@3.2.1: - resolution: - { - integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==, - } - engines: { node: ">= 8" } - dev: false - - /webidl-conversions@4.0.2: - resolution: - { - integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==, - } - dev: true - - /websocket-polyfill@0.0.3: - resolution: - { - integrity: sha512-pF3kR8Uaoau78MpUmFfzbIRxXj9PeQrCuPepGE6JIsfsJ/o/iXr07Q2iQNzKSSblQJ0FiGWlS64N4pVSm+O3Dg==, - } - dependencies: - tstl: 2.5.13 - websocket: 1.0.34 - transitivePeerDependencies: - - supports-color - dev: false - - /websocket@1.0.34: - resolution: - { - integrity: sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==, - } - engines: { node: ">=4.0.0" } - dependencies: - bufferutil: 4.0.7 - debug: 2.6.9 - es5-ext: 0.10.62 - typedarray-to-buffer: 3.1.5 - utf-8-validate: 5.0.10 - yaeti: 0.0.6 - transitivePeerDependencies: - - supports-color - dev: false - - /whatwg-url@7.1.0: - resolution: - { - integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==, - } - dependencies: - lodash.sortby: 4.7.0 - tr46: 1.0.1 - webidl-conversions: 4.0.2 - dev: true - - /which-boxed-primitive@1.0.2: - resolution: - { - integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==, - } - dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 - dev: false - - /which-typed-array@1.1.9: - resolution: - { - integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==, - } - engines: { node: ">= 0.4" } - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 - is-typed-array: 1.1.10 - dev: false - - /which@1.3.1: - resolution: - { - integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==, - } - hasBin: true - dependencies: - isexe: 2.0.0 - dev: false - - /which@2.0.2: - resolution: - { - integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, - } - engines: { node: ">= 8" } - hasBin: true - dependencies: - isexe: 2.0.0 - - /word-wrap@1.2.3: - resolution: - { - integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==, - } - engines: { node: ">=0.10.0" } - - /wrap-ansi@7.0.0: - resolution: - { - integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, - } - engines: { node: ">=10" } - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true - - /wrappy@1.0.2: - resolution: - { - integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, - } - - /write-file-atomic@3.0.3: - resolution: - { - integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==, - } - dependencies: - imurmurhash: 0.1.4 - is-typedarray: 1.0.0 - signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 - dev: true - - /write-file-atomic@4.0.2: - resolution: - { - integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==, - } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - dependencies: - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - dev: true - - /y18n@5.0.8: - resolution: - { - integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, - } - engines: { node: ">=10" } - dev: true - - /yaeti@0.0.6: - resolution: - { - integrity: sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==, - } - engines: { node: ">=0.10.32" } - dev: false - - /yallist@3.1.1: - resolution: - { - integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, - } - dev: true - - /yallist@4.0.0: - resolution: - { - integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==, - } - - /yaml@1.10.2: - resolution: - { - integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==, - } - engines: { node: ">= 6" } - dev: true - - /yargs-parser@20.2.9: - resolution: - { - integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==, - } - engines: { node: ">=10" } - - /yargs-parser@21.1.1: - resolution: - { - integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, - } - engines: { node: ">=12" } - dev: true - - /yargs@17.7.2: - resolution: - { - integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==, - } - engines: { node: ">=12" } - dependencies: - cliui: 8.0.1 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - dev: true - - /yocto-queue@0.1.0: - resolution: - { - integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, - } - engines: { node: ">=10" } + dependencies: + '@babel/core': 7.21.4 + '@jest/test-sequencer': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 14.11.2 + babel-jest: 29.5.0(@babel/core@7.21.4) + chalk: 4.1.2 + ci-info: 3.8.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.5.0 + jest-environment-node: 29.5.0 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-runner: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.5.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-diff@29.5.0: + resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.4.3 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 + + /jest-docblock@29.4.3: + resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + detect-newline: 3.1.0 + dev: true + + /jest-each@29.5.0: + resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + chalk: 4.1.2 + jest-get-type: 29.4.3 + jest-util: 29.5.0 + pretty-format: 29.5.0 + dev: true + + /jest-environment-node@29.5.0: + resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.5.0 + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 14.11.2 + jest-mock: 29.5.0 + jest-util: 29.5.0 + dev: true + + /jest-get-type@29.4.3: + resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + /jest-haste-map@29.5.0: + resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@types/graceful-fs': 4.1.6 + '@types/node': 14.11.2 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.4.3 + jest-util: 29.5.0 + jest-worker: 29.5.0 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /jest-leak-detector@29.5.0: + resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.4.3 + pretty-format: 29.5.0 + dev: true + + /jest-matcher-utils@29.5.0: + resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 29.5.0 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 + dev: true + + /jest-message-util@29.5.0: + resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.21.4 + '@jest/types': 29.5.0 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 29.5.0 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + + /jest-mock@29.5.0: + resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@types/node': 14.11.2 + jest-util: 29.5.0 + dev: true + + /jest-pnp-resolver@1.2.3(jest-resolve@29.5.0): + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 29.5.0 + dev: true + + /jest-regex-util@29.4.3: + resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-resolve-dependencies@29.5.0: + resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-regex-util: 29.4.3 + jest-snapshot: 29.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-resolve@29.5.0: + resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.5.0) + jest-util: 29.5.0 + jest-validate: 29.5.0 + resolve: 1.22.2 + resolve.exports: 2.0.2 + slash: 3.0.0 + dev: true + + /jest-runner@29.5.0: + resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.5.0 + '@jest/environment': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 14.11.2 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.4.3 + jest-environment-node: 29.5.0 + jest-haste-map: 29.5.0 + jest-leak-detector: 29.5.0 + jest-message-util: 29.5.0 + jest-resolve: 29.5.0 + jest-runtime: 29.5.0 + jest-util: 29.5.0 + jest-watcher: 29.5.0 + jest-worker: 29.5.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-runtime@29.5.0: + resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.5.0 + '@jest/fake-timers': 29.5.0 + '@jest/globals': 29.5.0 + '@jest/source-map': 29.4.3 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 14.11.2 + chalk: 4.1.2 + cjs-module-lexer: 1.2.2 + collect-v8-coverage: 1.0.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + jest-message-util: 29.5.0 + jest-mock: 29.5.0 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-snapshot@29.5.0: + resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.21.4 + '@babel/generator': 7.21.4 + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.4) + '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.21.4) + '@babel/traverse': 7.21.4 + '@babel/types': 7.21.4 + '@jest/expect-utils': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/babel__traverse': 7.18.5 + '@types/prettier': 2.7.2 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.4) + chalk: 4.1.2 + expect: 29.5.0 + graceful-fs: 4.2.11 + jest-diff: 29.5.0 + jest-get-type: 29.4.3 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + natural-compare: 1.4.0 + pretty-format: 29.5.0 + semver: 7.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-util@29.5.0: + resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@types/node': 14.11.2 + chalk: 4.1.2 + ci-info: 3.8.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + dev: true + + /jest-validate@29.5.0: + resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.4.3 + leven: 3.1.0 + pretty-format: 29.5.0 + dev: true + + /jest-watcher@29.5.0: + resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 14.11.2 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.5.0 + string-length: 4.0.2 + dev: true + + /jest-worker@29.5.0: + resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@types/node': 14.11.2 + jest-util: 29.5.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest@29.5.0(@types/node@14.11.2): + resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.5.0 + '@jest/types': 29.5.0 + import-local: 3.1.0 + jest-cli: 29.5.0(@types/node@14.11.2) + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + + /joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + dev: true + + /js-sdsl@4.4.0: + resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} + dev: false + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: false + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + dev: false + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: false + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + dev: true + + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + dev: true + + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + dev: true + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + /light-bolt11-decoder@3.0.0: + resolution: {integrity: sha512-AKvOigD2pmC8ktnn2TIqdJu0K0qk6ukUmTvHwF3JNkm8uWCqt18Ijn33A/a7gaRZ4PghJ59X+8+MXrzLKdBTmQ==} + dependencies: + '@scure/base': 1.1.1 + dev: false + + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + dev: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + /load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} + dependencies: + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + dev: false + + /load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: false + + /lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + /lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + dev: true + + /lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + dev: true + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true + + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: false + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + + /lunr@2.3.9: + resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + dev: true + + /make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + dependencies: + semver: 6.3.0 + dev: true + + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true + + /makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + dependencies: + tmpl: 1.0.5 + dev: true + + /map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + + /map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + + /marked@4.3.0: + resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} + engines: {node: '>= 12'} + hasBin: true + dev: true + + /memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + dev: false + + /meow@9.0.0: + resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} + engines: {node: '>=10'} + dependencies: + '@types/minimist': 1.2.2 + camelcase-keys: 6.2.2 + decamelize: 1.2.0 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.18.1 + yargs-parser: 20.2.9 + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + + /minimatch@9.0.2: + resolution: {integrity: sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist-options@4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: false + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: false + + /mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + dev: true + + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: true + + /natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + dev: false + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + /ncp@2.0.0: + resolution: {integrity: sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==} + hasBin: true + dev: true + + /nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + dev: false + + /node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + dev: false + + /node-fetch@3.3.1: + resolution: {integrity: sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + dev: false + + /node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + dev: true + + /node-releases@2.0.10: + resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} + dev: true + + /normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.2 + semver: 5.7.1 + validate-npm-package-license: 3.0.4 + + /normalize-package-data@3.0.3: + resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} + engines: {node: '>=10'} + dependencies: + hosted-git-info: 4.1.0 + is-core-module: 2.12.0 + semver: 7.5.0 + validate-npm-package-license: 3.0.4 + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /nostr-tools@1.14.0: + resolution: {integrity: sha512-hwq2i1z5/DneXRE5Zu/TzQuKzVLcB+gOdfT9CeoiScvNw/2dWRGJvyTXIdF92d7NQ7nMcEwqVJPDytLpEpiiKw==} + dependencies: + '@noble/curves': 1.1.0 + '@noble/hashes': 1.3.1 + '@scure/base': 1.1.1 + '@scure/bip32': 1.3.1 + '@scure/bip39': 1.2.1 + dev: false + + /npm-run-all@4.1.5: + resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} + engines: {node: '>= 4'} + hasBin: true + dependencies: + ansi-styles: 3.2.1 + chalk: 2.4.2 + cross-spawn: 6.0.5 + memorystream: 0.3.1 + minimatch: 3.1.2 + pidtree: 0.3.1 + read-pkg: 3.0.0 + shell-quote: 1.8.1 + string.prototype.padend: 3.1.4 + dev: false + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: true + + /object-inspect@1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + dev: false + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: false + + /object.assign@4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: false + + /object.values@1.1.6: + resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /optionator@0.9.1: + resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.3 + + /os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + dev: true + + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: false + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + + /parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + dev: false + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.21.4 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + /path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + dev: false + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + /path-type@3.0.0: + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} + dependencies: + pify: 3.0.0 + dev: false + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + /pidtree@0.3.1: + resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} + engines: {node: '>=0.10'} + hasBin: true + dev: false + + /pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + dev: false + + /pirates@4.0.5: + resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} + engines: {node: '>= 6'} + dev: true + + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + dev: true + + /plur@4.0.0: + resolution: {integrity: sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==} + engines: {node: '>=10'} + dependencies: + irregular-plurals: 3.5.0 + dev: false + + /pnpm@8.6.12: + resolution: {integrity: sha512-Eza4C5SO/Xl5IYozupbZ5NOA5leBRPYxmXmXfe7G4/4uCkRLhks84rB33aitxNZU/uMrnDGGjwrLktoKvPjqHA==} + engines: {node: '>=16.14'} + hasBin: true + dev: true + + /postcss-load-config@3.1.4: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.1.0 + yaml: 1.10.2 + dev: true + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + /prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + dependencies: + fast-diff: 1.2.0 + dev: true + + /prettier-plugin-organize-imports@3.2.2(prettier@3.0.1)(typescript@5.0.4): + resolution: {integrity: sha512-e97lE6odGSiHonHJMTYC0q0iLXQyw0u5z/PJpvP/3vRy6/Zi9kLBwFAbEGjDzIowpjQv8b+J04PDamoUSQbzGA==} + peerDependencies: + '@volar/vue-language-plugin-pug': ^1.0.4 + '@volar/vue-typescript': ^1.0.4 + prettier: '>=2.0' + typescript: '>=2.9' + peerDependenciesMeta: + '@volar/vue-language-plugin-pug': + optional: true + '@volar/vue-typescript': + optional: true + dependencies: + prettier: 3.0.1 + typescript: 5.0.4 + dev: true + + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + + /prettier@3.0.1: + resolution: {integrity: sha512-fcOWSnnpCrovBsmFZIGIy9UqK2FaI7Hqax+DIO0A9UxeVoY4iweyaFjS5TavZN97Hfehph0nhsZnjlVKzEQSrQ==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /pretty-format@29.5.0: + resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.4.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + + /progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: true + + /prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + dev: true + + /punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + + /pure-rand@6.0.2: + resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + /quick-lru@4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + + /read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + + /read-pkg@3.0.0: + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} + engines: {node: '>=4'} + dependencies: + load-json-file: 4.0.0 + normalize-package-data: 2.5.0 + path-type: 3.0.0 + dev: false + + /read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + dependencies: + '@types/normalize-package-data': 2.4.1 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + + /regexp.prototype.flags@1.5.0: + resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + functions-have-names: 1.2.3 + dev: false + + /regexpp@3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + dev: true + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: true + + /resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + dev: true + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + dev: true + + /resolve@1.22.2: + resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} + hasBin: true + dependencies: + is-core-module: 2.12.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + /restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + + /rollup@3.25.3: + resolution: {integrity: sha512-ZT279hx8gszBj9uy5FfhoG4bZx8c+0A1sbqtr7Q3KNWIizpTdDEPZbV2xcbvHsnFp4MavCQYZyzApJ+virB8Yw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + + /rxjs@6.6.7: + resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} + engines: {npm: '>=2.0.0'} + dependencies: + tslib: 1.14.1 + dev: true + + /safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + is-regex: 1.1.4 + dev: false + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /semver@5.7.1: + resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + hasBin: true + + /semver@6.3.0: + resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + hasBin: true + + /semver@7.5.0: + resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + + /shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + dependencies: + shebang-regex: 1.0.0 + dev: false + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + + /shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + dev: false + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + /shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + dev: false + + /shiki@0.14.3: + resolution: {integrity: sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==} + dependencies: + ansi-sequence-parser: 1.1.0 + jsonc-parser: 3.2.0 + vscode-oniguruma: 1.7.0 + vscode-textmate: 8.0.0 + dev: true + + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + object-inspect: 1.12.3 + dev: false + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + /slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + dependencies: + whatwg-url: 7.1.0 + dev: true + + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.13 + + /spdx-exceptions@2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + + /spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.13 + + /spdx-license-ids@3.0.13: + resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} + + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + dev: true + + /string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + /string.prototype.padend@3.1.4: + resolution: {integrity: sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false + + /string.prototype.trim@1.2.7: + resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false + + /string.prototype.trimend@1.0.6: + resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false + + /string.prototype.trimstart@1.0.6: + resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: false + + /strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + dev: true + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + dependencies: + min-indent: 1.0.1 + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + /sucrase@3.32.0: + resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==} + engines: {node: '>=8'} + hasBin: true + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + commander: 4.1.1 + glob: 7.1.6 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.5 + ts-interface-checker: 0.1.13 + dev: true + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-hyperlinks@2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + dev: false + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + /table@6.8.1: + resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} + engines: {node: '>=10.0.0'} + dependencies: + ajv: 8.12.0 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + dev: true + + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + dev: true + + /through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: true + + /tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + dependencies: + os-tmpdir: 1.0.2 + dev: true + + /tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + dev: true + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + + /tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + dependencies: + punycode: 2.3.0 + dev: true + + /tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + dev: true + + /trim-newlines@3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: true + + /ts-jest@29.1.0(@babel/core@7.21.4)(esbuild@0.17.15)(jest@29.5.0)(typescript@5.0.4): + resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3 <6' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + dependencies: + '@babel/core': 7.21.4 + bs-logger: 0.2.6 + esbuild: 0.17.15 + fast-json-stable-stringify: 2.1.0 + jest: 29.5.0(@types/node@14.11.2) + jest-util: 29.5.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.5.0 + typescript: 5.0.4 + yargs-parser: 21.1.1 + dev: true + + /tsconfig-paths@3.14.2: + resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: false + + /tsd@0.28.1: + resolution: {integrity: sha512-FeYrfJ05QgEMW/qOukNCr4fAJHww4SaKnivAXRv4g5kj4FeLpNV7zH4dorzB9zAfVX4wmA7zWu/wQf7kkcvfbw==} + engines: {node: '>=14.16'} + hasBin: true + dependencies: + '@tsd/typescript': 5.0.4 + eslint-formatter-pretty: 4.1.0 + globby: 11.1.0 + jest-diff: 29.5.0 + meow: 9.0.0 + path-exists: 4.0.0 + read-pkg-up: 7.0.1 + dev: false + + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + /tsup@6.7.0(typescript@5.0.4): + resolution: {integrity: sha512-L3o8hGkaHnu5TdJns+mCqFsDBo83bJ44rlK7e6VdanIvpea4ArPcU3swWGsLVbXak1PqQx/V+SSmFPujBK+zEQ==} + engines: {node: '>=14.18'} + hasBin: true + peerDependencies: + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.1.0' + peerDependenciesMeta: + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + dependencies: + bundle-require: 4.0.1(esbuild@0.17.15) + cac: 6.7.14 + chokidar: 3.5.3 + debug: 4.3.4 + esbuild: 0.17.15 + execa: 5.1.1 + globby: 11.1.0 + joycon: 3.1.1 + postcss-load-config: 3.1.4 + resolve-from: 5.0.0 + rollup: 3.25.3 + source-map: 0.8.0-beta.0 + sucrase: 3.32.0 + tree-kill: 1.2.2 + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + + /tsutils@3.21.0(typescript@5.0.4): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.0.4 + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest@0.18.1: + resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} + engines: {node: '>=10'} + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + /type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + + /type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + /typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + is-typed-array: 1.1.10 + dev: false + + /typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + dependencies: + is-typedarray: 1.0.0 + dev: true + + /typedoc-plugin-rename-defaults@0.6.5(typedoc@0.24.8): + resolution: {integrity: sha512-DwkgwRMxgu3UrDR3VUAdnF9jYzM6p7rw6UcVIh4MD7yjEmFDR8WWyOlk6oYgELmRYHxTDx0f0GK6iSgoxSh/Qw==} + peerDependencies: + typedoc: 0.22.x || 0.23.x || 0.24.x + dependencies: + typedoc: 0.24.8(typescript@5.0.4) + dev: true + + /typedoc@0.24.8(typescript@5.0.4): + resolution: {integrity: sha512-ahJ6Cpcvxwaxfu4KtjA8qZNqS43wYt6JL27wYiIgl1vd38WW/KWX11YuAeZhuz9v+ttrutSsgK+XO1CjL1kA3w==} + engines: {node: '>= 14.14'} + hasBin: true + peerDependencies: + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x + dependencies: + lunr: 2.3.9 + marked: 4.3.0 + minimatch: 9.0.2 + shiki: 0.14.3 + typescript: 5.0.4 + dev: true + + /typescript@5.0.4: + resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} + engines: {node: '>=12.20'} + hasBin: true + + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.2 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: false + + /update-browserslist-db@1.0.11(browserslist@4.21.5): + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.5 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.0 + + /utf8-buffer@1.0.0: + resolution: {integrity: sha512-ueuhzvWnp5JU5CiGSY4WdKbiN/PO2AZ/lpeLiz2l38qwdLy/cW40XobgyuIWucNyum0B33bVB0owjFCeGBSLqg==} + engines: {node: '>=8'} + dev: false + + /v8-compile-cache@2.3.0: + resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} + dev: true + + /v8-to-istanbul@9.1.0: + resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} + engines: {node: '>=10.12.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.18 + '@types/istanbul-lib-coverage': 2.0.4 + convert-source-map: 1.9.0 + dev: true + + /validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + /vscode-oniguruma@1.7.0: + resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} + dev: true + + /vscode-textmate@8.0.0: + resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} + dev: true + + /walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + dependencies: + makeerror: 1.0.12 + dev: true + + /web-streams-polyfill@3.2.1: + resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} + engines: {node: '>= 8'} + dev: false + + /webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + dev: true + + /whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + dev: true + + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: false + + /which-typed-array@1.1.9: + resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + is-typed-array: 1.1.10 + dev: false + + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: false + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + + /word-wrap@1.2.3: + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + /write-file-atomic@3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + dev: true + + /write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: true + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + /yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: true + + /yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} diff --git a/src/relay/index.ts b/src/relay/index.ts index 76f6d14e..99a9fe53 100644 --- a/src/relay/index.ts +++ b/src/relay/index.ts @@ -1,7 +1,6 @@ import debug from "debug"; import EventEmitter from "eventemitter3"; import { Relay, relayInit, Sub } from "nostr-tools"; -import "websocket-polyfill"; import NDKEvent, { NDKTag, NostrEvent } from "../events/index.js"; import { NDKSubscription } from "../subscription/index.js"; import User from "../user/index.js"; From 54497b3d7648f2673da3f3aab4d98a271ab58a62 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Fri, 18 Aug 2023 22:09:48 +0300 Subject: [PATCH 204/773] improve code --- package.json | 2 +- src/events/kinds/lists/index.ts | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index dca66733..638e16d2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.8.17", + "version": "0.8.17-1", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/kinds/lists/index.ts b/src/events/kinds/lists/index.ts index fd6c68ce..8c25c9b9 100644 --- a/src/events/kinds/lists/index.ts +++ b/src/events/kinds/lists/index.ts @@ -49,13 +49,14 @@ export class NDKList extends NDKEvent { * Returns the name of the list. */ get name(): string | undefined { - if(this.kind === NDKKind.MuteList && !this.tagValue("name")) { - return "Mute"; - } else if (this.kind === NDKKind.PinList && !this.tagValue("name")) { - return "Pin"; - } else { - return this.tagValue("name") ?? this.tagValue("d"); - } + const nameTag = this.tagValue("name"); + if (this.kind === NDKKind.MuteList && !nameTag) { + return "Mute"; + } else if (this.kind === NDKKind.PinList && !nameTag) { + return "Pin"; + } else { + return nameTag ?? this.tagValue("d"); + } } /** From dc3cc8ee27b7ad1a669c0dd811305586957720e5 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Fri, 18 Aug 2023 22:38:09 +0300 Subject: [PATCH 205/773] refactor classifieds kind --- README.md | 8 +- src/events/kinds/classified.ts | 246 +++++++++++++++++---------------- 2 files changed, 132 insertions(+), 122 deletions(-) diff --git a/README.md b/README.md index 1dab7e50..6d90b139 100644 --- a/README.md +++ b/README.md @@ -92,7 +92,9 @@ You can pass an object with several options to a newly created instance of NDK. import NDK from "@nostr-dev-kit/ndk"; // Create a new NDK instance with explicit relays -const ndk = new NDK({ explicitRelayUrls: ["wss://a.relay", "wss://another.relay"] }); +const ndk = new NDK({ + explicitRelayUrls: ["wss://a.relay", "wss://another.relay"], +}); ``` Note: In normal client use, it's best practice to instantiate NDK as a singleton class. [See more below](#architecture-decisions--suggestions). @@ -106,7 +108,9 @@ After you've instatiated NDK, you need to tell it to connect before you'll be ab import NDK from "@nostr-dev-kit/ndk"; // Create a new NDK instance with explicit relays -const ndk = new NDK({ explicitRelayUrls: ["wss://a.relay", "wss://another.relay"] }); +const ndk = new NDK({ + explicitRelayUrls: ["wss://a.relay", "wss://another.relay"], +}); // Now connect to specified relays await ndk.connect(); diff --git a/src/events/kinds/classified.ts b/src/events/kinds/classified.ts index e3adbf38..0b5c3c40 100644 --- a/src/events/kinds/classified.ts +++ b/src/events/kinds/classified.ts @@ -1,13 +1,13 @@ import NDK from "../../index.js"; import { ContentTag, type NostrEvent } from "../index.js"; import NDKEvent from "../index.js"; -import { NDKKind } from "./index.js"; import { NDKTag } from "../index.js"; +import { NDKKind } from "./index.js"; interface NDKClassifiedPriceTag { - amount: number; - currency?: string; - frequency?: string; + amount: number; + currency?: string; + frequency?: string; } /** @@ -44,11 +44,9 @@ export class NDKClassified extends NDKEvent { * @param {string | undefined} title - The title to set for the classified. */ set title(title: string | undefined) { - if (title) { - this.tags.push(["title", title]); - } else { - this.removeTag("title"); - } + this.removeTag("title"); + + if (title) this.tags.push(["title", title]); } /** @@ -57,116 +55,124 @@ export class NDKClassified extends NDKEvent { * @returns {string | undefined} - The classified summary if available, otherwise undefined. */ get summary(): string | undefined { - return this.tagValue("summary"); - } - - /** - * Setter for the classified summary. - * - * @param {string | undefined} summary - The summary to set for the classified. - */ - set summary(summary: string | undefined) { - if (summary) { - this.tags.push(["summary", summary]); - } else { - this.removeTag("summary"); - } - } - - /** - * Getter for the classified's publication timestamp. - * - * @returns {number | undefined} - The Unix timestamp of when the classified was published or undefined. - */ - get published_at(): number | undefined { - const tag = this.tagValue("published_at"); - if (tag) { - return parseInt(tag); - } - return undefined; - } - - /** - * Setter for the classified's publication timestamp. - * - * @param {number | undefined} timestamp - The Unix timestamp to set for the classified's publication date. - */ - set published_at(timestamp: number | undefined) { - this.removeTag("published_at"); // Removes any existing "published_at" tag. - - if (timestamp !== undefined) { - this.tags.push(["published_at", timestamp.toString()]); - } - } - - /** - * Getter for the classified location. - * - * @returns {string | undefined} - The classified location if available, otherwise undefined. - */ - get location(): string | undefined { - return this.tagValue("location"); - } - - /** - * Setter for the classified location. - * - * @param {string | undefined} location - The location to set for the classified. - */ - set location(location: string | undefined) { - if (location) { - this.tags.push(["location", location]); - } else { - this.removeTag("location"); - } - } - - /** - * Getter for the classified price. - * - * @returns {NDKClassifiedPriceTag | undefined} - The classified price if available, otherwise undefined. - */ - get price(): NDKClassifiedPriceTag | undefined { - const priceTag = this.tags.find((tag) => tag[0] === 'price'); - if (priceTag) { - return {amount: parseFloat(priceTag[1]), currency: priceTag[2], frequency: priceTag[3]}; - } else { - return undefined; + return this.tagValue("summary"); + } + + /** + * Setter for the classified summary. + * + * @param {string | undefined} summary - The summary to set for the classified. + */ + set summary(summary: string | undefined) { + this.removeTag("summary"); + + if (summary) this.tags.push(["summary", summary]); + } + + /** + * Getter for the classified's publication timestamp. + * + * @returns {number | undefined} - The Unix timestamp of when the classified was published or undefined. + */ + get published_at(): number | undefined { + const tag = this.tagValue("published_at"); + + if (tag) { + return parseInt(tag); + } + + return undefined; + } + + /** + * Setter for the classified's publication timestamp. + * + * @param {number | undefined} timestamp - The Unix timestamp to set for the classified's publication date. + */ + set published_at(timestamp: number | undefined) { + this.removeTag("published_at"); + + if (timestamp !== undefined) { + this.tags.push(["published_at", timestamp.toString()]); + } + } + + /** + * Getter for the classified location. + * + * @returns {string | undefined} - The classified location if available, otherwise undefined. + */ + get location(): string | undefined { + return this.tagValue("location"); + } + + /** + * Setter for the classified location. + * + * @param {string | undefined} location - The location to set for the classified. + */ + set location(location: string | undefined) { + this.removeTag("location"); + + if (location) this.tags.push(["location", location]); + } + + /** + * Getter for the classified price. + * + * @returns {NDKClassifiedPriceTag | undefined} - The classified price if available, otherwise undefined. + */ + get price(): NDKClassifiedPriceTag | undefined { + const priceTag = this.tags.find((tag) => tag[0] === "price"); + if (priceTag) { + return { + amount: parseFloat(priceTag[1]), + currency: priceTag[2], + frequency: priceTag[3], + }; + } else { + return undefined; + } + } + + /** + * Setter for the classified price. + * + * @param price - The price to set for the classified. + */ + set price(priceTag: NDKClassifiedPriceTag | string | undefined) { + if (typeof priceTag === "string") { + priceTag = { + amount: parseFloat(priceTag), + }; + } + + if (priceTag?.amount) { + const tag: NDKTag = ["price", priceTag.amount.toString()]; + if (priceTag.currency) tag.push(priceTag.currency); + if (priceTag.frequency) tag.push(priceTag.frequency); + + this.tags.push(tag); + } else { + this.removeTag("price"); + } + } + + /** + * Generates content tags for the classified. + * + * This method first checks and sets the publication date if not available, + * and then generates content tags based on the base NDKEvent class. + * + * @returns {ContentTag} - The generated content tags. + */ + protected generateTags(): ContentTag { + super.generateTags(); + + if (!this.published_at) { + this.published_at = this.created_at; + } + + return super.generateTags(); } - } - - /** - * Setter for the classified price. - * - * @param {NDKClassifiedPriceTag | undefined} price - The price to set for the classified. - */ - set price(priceTag: NDKClassifiedPriceTag | undefined) { - if (priceTag?.amount) { - const tag: NDKTag = ["price", priceTag.amount.toString()]; - if(priceTag.currency) tag.push(priceTag.currency); - if(priceTag.frequency) tag.push(priceTag.frequency); - - this.tags.push(tag); - } else { - this.removeTag("price"); - } - } - - /** - * Generates content tags for the classified. - * - * This method first checks and sets the publication date if not available, - * and then generates content tags based on the base NDKEvent class. - * - * @returns {ContentTag} - The generated content tags. - */ - protected generateTags(): ContentTag { - super.generateTags(); - - if (!this.published_at) { - this.published_at = this.created_at; - } - - return super.generateTags(); - } } From 9307f8dc3a922d9f9d3fa3efd0b6c5b940a52f06 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sat, 19 Aug 2023 15:25:40 +0300 Subject: [PATCH 206/773] version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 638e16d2..48715f3b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.8.17-1", + "version": "0.8.18", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", From a3dbab5801ad5636752c90cbf9c75cf628ed4bd7 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sun, 20 Aug 2023 17:41:25 +0300 Subject: [PATCH 207/773] add NDKDvmParam definition --- package.json | 2 +- src/events/kinds/dvm/index.ts | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 48715f3b..c0f77b7f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.8.18", + "version": "0.8.18-3", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/kinds/dvm/index.ts b/src/events/kinds/dvm/index.ts index 4e037ea7..80b837ef 100644 --- a/src/events/kinds/dvm/index.ts +++ b/src/events/kinds/dvm/index.ts @@ -1,3 +1,5 @@ export * from "./NDKDVMRequest"; export * from "./NDKTranscriptionDVM"; export * from "./NDKDVMJobResult"; + +export type NDKDvmParam = [ string, string, ...string[] ]; \ No newline at end of file From e3e5f7399d7528d0f9c1b41e82fef7930cc602d6 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Sun, 20 Aug 2023 18:02:59 +0300 Subject: [PATCH 208/773] Add NDKDvmParam --- package.json | 2 +- src/events/kinds/dvm/index.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index c0f77b7f..ce578f8f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.8.18-3", + "version": "0.8.19", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/kinds/dvm/index.ts b/src/events/kinds/dvm/index.ts index 80b837ef..9d762fac 100644 --- a/src/events/kinds/dvm/index.ts +++ b/src/events/kinds/dvm/index.ts @@ -2,4 +2,4 @@ export * from "./NDKDVMRequest"; export * from "./NDKTranscriptionDVM"; export * from "./NDKDVMJobResult"; -export type NDKDvmParam = [ string, string, ...string[] ]; \ No newline at end of file +export type NDKDvmParam = [string, string, ...string[]]; From c5a10c450938fae4587c99c5239d0b02d4716828 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Mon, 21 Aug 2023 14:34:44 +0300 Subject: [PATCH 209/773] add NDKDVMJobFeedback --- package.json | 2 +- src/events/kinds/dvm/NDKDVMJobFeedback.ts | 29 +++++++++++++++++++++++ src/events/kinds/dvm/NDKDVMJobResult.ts | 8 +++++++ src/events/kinds/dvm/NDKDVMRequest.ts | 15 ++++++++++++ src/events/kinds/dvm/index.ts | 1 + 5 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 src/events/kinds/dvm/NDKDVMJobFeedback.ts diff --git a/package.json b/package.json index ce578f8f..dba7cd0f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.8.19", + "version": "0.8.20", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/kinds/dvm/NDKDVMJobFeedback.ts b/src/events/kinds/dvm/NDKDVMJobFeedback.ts new file mode 100644 index 00000000..567a4778 --- /dev/null +++ b/src/events/kinds/dvm/NDKDVMJobFeedback.ts @@ -0,0 +1,29 @@ +import NDK from "../../../index.js"; +import NDKEvent, { NostrEvent } from "../../index.js"; +import { NDKKind } from "../index.js"; + +export enum NDKDvmJobFeedbackStatus { + Processing = "processing", + Success = "success", + Scheduled = "scheduled", + PayReq = "payment_required", +} + +export class NDKDVMJobFeedback extends NDKEvent { + constructor(ndk?: NDK, event?: NostrEvent) { + super(ndk, event); + this.kind ??= NDKKind.DVMJobFeedback; + } + + get status(): NDKDvmJobFeedbackStatus | string | undefined { + return this.tagValue("status"); + } + + set status(status: NDKDvmJobFeedbackStatus | string | undefined) { + this.removeTag("status"); + + if (status !== undefined) { + this.tags.push(["status", status]); + } + } +} diff --git a/src/events/kinds/dvm/NDKDVMJobResult.ts b/src/events/kinds/dvm/NDKDVMJobResult.ts index 5c3273bc..10a0bbfb 100644 --- a/src/events/kinds/dvm/NDKDVMJobResult.ts +++ b/src/events/kinds/dvm/NDKDVMJobResult.ts @@ -16,6 +16,14 @@ export class NDKDVMJobResult extends NDKEvent { return new NDKDVMJobResult(event.ndk, event.rawEvent()); } + setAmount(msat: number, invoice?: string) { + this.removeTag("amount"); + + const tag = ["amount", msat.toString()]; + if (invoice) tag.push(invoice); + this.tags.push(tag); + } + set result(result: string | undefined) { if (result === undefined) { this.content = ""; diff --git a/src/events/kinds/dvm/NDKDVMRequest.ts b/src/events/kinds/dvm/NDKDVMRequest.ts index 548e4466..0e5b9cd5 100644 --- a/src/events/kinds/dvm/NDKDVMRequest.ts +++ b/src/events/kinds/dvm/NDKDVMRequest.ts @@ -1,4 +1,8 @@ import NDK, { NDKDVMJobResult, NDKEvent, NostrEvent } from "../../../index.js"; +import { + NDKDVMJobFeedback, + NDKDvmJobFeedbackStatus, +} from "./NDKDVMJobFeedback.js"; /** * NIP-90: Data vending machine @@ -18,6 +22,17 @@ export class NDKDVMRequest extends NDKEvent { return new NDKDVMRequest(event.ndk, event.rawEvent()); } + /** + * Create a new job feedback for this request + */ + public createFeedback(status: NDKDvmJobFeedbackStatus | string) { + const feedback = new NDKDVMJobFeedback(this.ndk); + feedback.status = status; + feedback.tag(this, "job"); + + return feedback; + } + /** * Create a new result event for this request */ diff --git a/src/events/kinds/dvm/index.ts b/src/events/kinds/dvm/index.ts index 9d762fac..464be2f0 100644 --- a/src/events/kinds/dvm/index.ts +++ b/src/events/kinds/dvm/index.ts @@ -1,5 +1,6 @@ export * from "./NDKDVMRequest"; export * from "./NDKTranscriptionDVM"; export * from "./NDKDVMJobResult"; +export * from "./NDKDVMJobFeedback"; export type NDKDvmParam = [string, string, ...string[]]; From 995cde7a93c88665c82dacae245c9df489692a47 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 22 Aug 2023 10:54:51 +0300 Subject: [PATCH 210/773] add NIP-89 App Handler support --- package.json | 2 +- src/events/kinds/index.ts | 5 +++ src/events/kinds/nip89/NDKAppHandler.ts | 51 +++++++++++++++++++++++++ src/index.ts | 1 + 4 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 src/events/kinds/nip89/NDKAppHandler.ts diff --git a/package.json b/package.json index dba7cd0f..65699490 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.8.20", + "version": "0.8.21", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/kinds/index.ts b/src/events/kinds/index.ts index fc7f8784..608520db 100644 --- a/src/events/kinds/index.ts +++ b/src/events/kinds/index.ts @@ -33,6 +33,11 @@ export enum NDKKind { Article = 30023, AppSpecificData = 30078, Classified = 30402, + + // NIP-89: App Metadata + AppRecommendation = 31989, + AppHandler = 31990, + CategorizedHighlightList = 39802, // NIP-90: Data Vending Machines diff --git a/src/events/kinds/nip89/NDKAppHandler.ts b/src/events/kinds/nip89/NDKAppHandler.ts new file mode 100644 index 00000000..49234011 --- /dev/null +++ b/src/events/kinds/nip89/NDKAppHandler.ts @@ -0,0 +1,51 @@ +import { NDKKind } from "../index.js"; +import NDKEvent, { NostrEvent } from "../../index.js"; +import NDK, { NDKUserProfile } from "../../../index.js"; + +/** + * This is a NIP-89 app handler wrapper. + * + * @summary NIP-89 App Handler + * @implements kind:31990 + */ +export class NDKAppHandlerEvent extends NDKEvent { + private profile: NDKUserProfile | null | undefined; + + constructor(ndk?: NDK, rawEvent?: NostrEvent) { + super(ndk, rawEvent); + this.kind ??= NDKKind.AppHandler; + } + + static from(ndkEvent: NDKEvent) { + return new NDKAppHandlerEvent(ndkEvent.ndk, ndkEvent.rawEvent()); + } + + /** + * Fetches app handler information + * If no app information is available on the kind:31990, + * we fetch the event's author's profile and return that instead. + */ + async fetchProfile(): Promise { + if (this.profile === undefined && this.content.length > 0) { + try { + const profile = JSON.parse(this.content); + + // make sure there is something + if (profile && profile.name) { + return profile as NDKUserProfile; + } else { + this.profile = null; + } + } catch (e) { + this.profile = null; + } + } + + return new Promise((resolve, reject) => { + const author = this.author; + author.fetchProfile().then(() => { + resolve(author.profile); + }).catch(reject); + }); + } +} \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index e2068158..43f28420 100644 --- a/src/index.ts +++ b/src/index.ts @@ -26,6 +26,7 @@ export * from "./events/kinds/article.js"; export * from "./events/kinds/dvm/index.js"; export * from "./events/kinds/lists/index.js"; export * from "./events/kinds/repost.js"; +export * from "./events/kinds/nip89/NDKAppHandler.js"; export * from "./relay/index.js"; export * from "./relay/sets/index.js"; export * from "./signers/index.js"; From d688dc26c591f176e41559d4c001819107cead35 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 22 Aug 2023 10:55:07 +0300 Subject: [PATCH 211/773] prettify shit --- src/events/kinds/nip89/NDKAppHandler.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/events/kinds/nip89/NDKAppHandler.ts b/src/events/kinds/nip89/NDKAppHandler.ts index 49234011..f181d033 100644 --- a/src/events/kinds/nip89/NDKAppHandler.ts +++ b/src/events/kinds/nip89/NDKAppHandler.ts @@ -1,6 +1,6 @@ -import { NDKKind } from "../index.js"; -import NDKEvent, { NostrEvent } from "../../index.js"; import NDK, { NDKUserProfile } from "../../../index.js"; +import NDKEvent, { NostrEvent } from "../../index.js"; +import { NDKKind } from "../index.js"; /** * This is a NIP-89 app handler wrapper. @@ -43,9 +43,12 @@ export class NDKAppHandlerEvent extends NDKEvent { return new Promise((resolve, reject) => { const author = this.author; - author.fetchProfile().then(() => { - resolve(author.profile); - }).catch(reject); + author + .fetchProfile() + .then(() => { + resolve(author.profile); + }) + .catch(reject); }); } -} \ No newline at end of file +} From 24181ca5955b04c719027fb98f73aa36d19ec677 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Tue, 22 Aug 2023 11:00:17 +0300 Subject: [PATCH 212/773] redefine NDKFilter to allow for more kinds --- src/subscription/index.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/subscription/index.ts b/src/subscription/index.ts index 8ccdb0f2..e04ebdce 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -1,5 +1,6 @@ import EventEmitter from "eventemitter3"; -import { Filter as NostrFilter, matchFilter, Sub, nip19 } from "nostr-tools"; +import { matchFilter, Sub, nip19 } from "nostr-tools"; +import { NDKKind } from "../events/kinds/index.js"; import { EventPointer } from "nostr-tools/lib/nip19"; import NDKEvent, { NDKEventId } from "../events/index.js"; import NDK from "../index.js"; @@ -8,7 +9,16 @@ import { calculateRelaySetFromFilter } from "../relay/sets/calculate"; import { NDKRelaySet } from "../relay/sets/index.js"; import { queryFullyFilled } from "./utils.js"; -export type NDKFilter = NostrFilter; +export type NDKFilter = { + ids?: string[]; + kinds?: K[]; + authors?: string[]; + since?: number; + until?: number; + limit?: number; + search?: string; + [key: `#${string}`]: string[]; +}; export enum NDKSubscriptionCacheUsage { // Only use cache, don't subscribe to relays From 87ab5cd444718264d12e0345208c0018853d0858 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Thu, 24 Aug 2023 14:47:10 +0300 Subject: [PATCH 213/773] add from to NDKDVMJobFeedback --- package.json | 2 +- src/events/kinds/dvm/NDKDVMJobFeedback.ts | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 65699490..24a9ac2a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nostr-dev-kit/ndk", - "version": "0.8.21", + "version": "0.8.21-1", "description": "NDK - Nostr Development Kit", "homepage": "https://ndk.fyi", "documentation": "https://github.com/nostr-dev-kit/ndk/blob/master/docs/modules.md", diff --git a/src/events/kinds/dvm/NDKDVMJobFeedback.ts b/src/events/kinds/dvm/NDKDVMJobFeedback.ts index 567a4778..a85a59f0 100644 --- a/src/events/kinds/dvm/NDKDVMJobFeedback.ts +++ b/src/events/kinds/dvm/NDKDVMJobFeedback.ts @@ -15,6 +15,10 @@ export class NDKDVMJobFeedback extends NDKEvent { this.kind ??= NDKKind.DVMJobFeedback; } + static from(event: NDKEvent) { + return new NDKDVMJobFeedback(event.ndk, event.rawEvent()); + } + get status(): NDKDvmJobFeedbackStatus | string | undefined { return this.tagValue("status"); } From e43320aed98457f4144170c96d3def426b91196e Mon Sep 17 00:00:00 2001 From: pablof7z Date: Thu, 24 Aug 2023 21:06:34 +0300 Subject: [PATCH 214/773] update README --- README.md | 10 ++++++---- src/subscription/index.ts | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 6d90b139..2f9d0a92 100644 --- a/README.md +++ b/README.md @@ -45,19 +45,21 @@ localStorage.debug = 'ndk:*' - [x] NIP-01 - [x] Caching adapters - Server-side - - [x] [Redis](https://github.com/pablof7z/ndk-cache-redis) + - [x] [Redis](https://github.com/nostr-dev-kit/ndk-cache-redis) - [ ] In-memory - Client-side - [ ] LocalStorage - - [ ] IndexDB + - [x] IndexD ([Dexie](https://github.com/nostr-dev-kit/ndk-cache-dexie)) - [~] NIP-04: Encryption support - [x] NIP-18: Repost -- [ ] NIP-26: Event delegation +- [ ] ~~NIP-26~~ Won't add / NIP-26 is dead - [ ] NIP-41: Relay authentication - [x] NIP-57: Zaps - [x] LUD06 - [x] LUD16 - [ ] NIP-65: Contacts' Relay list +- [x] NIP-89: Application Handlers +- [x] NIP-90: Data Vending Machines - Subscription Management - [x] Auto-grouping queries - [x] Auto-closing subscriptions @@ -68,7 +70,7 @@ localStorage.debug = 'ndk:*' - [x] NIP-46 - [x] Permission tokens - Relay discovery - - [ ] Gossip-model (NIP-65) + - [ ] Outbox-model (NIP-65) - [ ] Implicit relays discovery following pubkey usage - [ ] Implicit relays discovery following `t` tag usage - [ ] Explicit relays blacklist diff --git a/src/subscription/index.ts b/src/subscription/index.ts index e04ebdce..0bdcfc73 100644 --- a/src/subscription/index.ts +++ b/src/subscription/index.ts @@ -1,8 +1,8 @@ import EventEmitter from "eventemitter3"; import { matchFilter, Sub, nip19 } from "nostr-tools"; -import { NDKKind } from "../events/kinds/index.js"; import { EventPointer } from "nostr-tools/lib/nip19"; import NDKEvent, { NDKEventId } from "../events/index.js"; +import { NDKKind } from "../events/kinds/index.js"; import NDK from "../index.js"; import { NDKRelay } from "../relay"; import { calculateRelaySetFromFilter } from "../relay/sets/calculate"; From 7cff4d3f305505b2d406341a5d7a4a7c4755218b Mon Sep 17 00:00:00 2001 From: pablof7z Date: Fri, 25 Aug 2023 21:20:13 +0300 Subject: [PATCH 215/773] don't overwrite kind --- src/events/kinds/dvm/NDKDVMJobResult.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/events/kinds/dvm/NDKDVMJobResult.ts b/src/events/kinds/dvm/NDKDVMJobResult.ts index 10a0bbfb..daa7859a 100644 --- a/src/events/kinds/dvm/NDKDVMJobResult.ts +++ b/src/events/kinds/dvm/NDKDVMJobResult.ts @@ -9,7 +9,7 @@ import { NDKKind } from "../index.js"; export class NDKDVMJobResult extends NDKEvent { constructor(ndk?: NDK, event?: NostrEvent) { super(ndk, event); - this.kind = NDKKind.DVMJobResult; + this.kind ??= NDKKind.DVMJobResult; } static from(event: NDKEvent) { From 69f5efcba72e40f5f6db76bda8a6790e53612f07 Mon Sep 17 00:00:00 2001 From: pablof7z Date: Fri, 25 Aug 2023 21:36:34 +0300 Subject: [PATCH 216/773] add gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 8d40ce19..b255288f 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ package-lock.json **/*.d.ts.map *.tgz .DS_Store +.turbo From fd4599071d40b362a6e1c7c7744ab80f6c91050a Mon Sep 17 00:00:00 2001 From: Jeff Gardner <202880+erskingardner@users.noreply.github.com> Date: Mon, 28 Aug 2023 17:26:09 +0200 Subject: [PATCH 217/773] Adding some tests around event tagging methods --- src/events/index.test.ts | 48 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/src/events/index.test.ts b/src/events/index.test.ts index d229793b..0be68608 100644 --- a/src/events/index.test.ts +++ b/src/events/index.test.ts @@ -190,4 +190,52 @@ describe("NDKEvent", () => { expect(event2.tagReference()).toEqual(["e", "eventid"]); }); }); + + describe("tagId", () => { + it("returns the correct tagId for a given event", () => { + const event1 = new NDKEvent(ndk, { + created_at: Date.now() / 1000, + content: "", + kind: 30000, + pubkey: "pubkey", + tags: [["d", "d-code"]], + }); + + const event2 = new NDKEvent(ndk, { + created_at: Date.now() / 1000, + content: "", + tags: [], + kind: 1, + pubkey: "pubkey", + id: "eventid", + }); + + expect(event1.tagId()).toEqual("30000:pubkey:d-code"); + expect(event2.tagId()).toEqual("eventid"); + }); + }); + + describe("replacableDTag", () => { + it("returns the correct tagId for a given event", () => { + const event1 = new NDKEvent(ndk, { + created_at: Date.now() / 1000, + content: "", + kind: 30000, + pubkey: "pubkey", + tags: [["d", "d-code"]], + }); + + const event2 = new NDKEvent(ndk, { + created_at: Date.now() / 1000, + content: "", + tags: [], + kind: 1, + pubkey: "pubkey", + id: "eventid", + }); + + expect(event1.replaceableDTag()).toEqual("d-code"); + expect(() => event2.replaceableDTag()).toThrowError("Event is not a parameterized replaceable event"); + }); + }); }); From 556fb663b4bfb33d87674a1f741f52594c69e4a8 Mon Sep 17 00:00:00 2001 From: Pablo Fernandez Date: Mon, 28 Aug 2023 23:23:01 +0300 Subject: [PATCH 218/773] bit the bullet: turn everything into a monorepo --- .gitignore | 7 + README.md | 10 + ndk-cache-dexie/.eslintrc | 23 + ndk-cache-dexie/.gitignore | 4 + ndk-cache-dexie/.prettierrc | 20 + ndk-cache-dexie/README.md | 28 + ndk-cache-dexie/package.json | 57 + ndk-cache-dexie/src/db.ts | 61 + ndk-cache-dexie/src/index.ts | 402 + ndk-cache-dexie/tsconfig.json | 6 + ndk-cache-redis/.eslintrc.json | 27 + ndk-cache-redis/.gitignore | 3 + ndk-cache-redis/.prettierrc.json | 7 + ndk-cache-redis/README.md | 25 + ndk-cache-redis/config/tsconfig.cjs.json | 7 + ndk-cache-redis/config/tsconfig.esm.json | 8 + ndk-cache-redis/config/tsconfig.types.json | 8 + ndk-cache-redis/config/tsconfig.umd.json | 7 + ndk-cache-redis/dump.rdb | Bin 0 -> 88 bytes ndk-cache-redis/package.json | 46 + ndk-cache-redis/src/index.ts | 81 + ndk-cache-redis/tools/cleanup | 29 + ndk-cache-redis/tsconfig.json | 5 + ndk-svelte-components/.eslintignore | 13 + ndk-svelte-components/.eslintrc.cjs | 31 + ndk-svelte-components/.gitignore | 13 + ndk-svelte-components/.npmrc | 2 + ndk-svelte-components/.prettierignore | 13 + ndk-svelte-components/.prettierrc | 18 + ndk-svelte-components/.storybook/main.ts | 26 + ndk-svelte-components/.storybook/preview.ts | 15 + ndk-svelte-components/LICENSE | 21 + ndk-svelte-components/README.md | 1 + ndk-svelte-components/images/relay-list.png | Bin 0 -> 200622 bytes ndk-svelte-components/package.json | 94 + ndk-svelte-components/postcss.config.cjs | 7 + ndk-svelte-components/src/app.html | 28 + .../src/lib/event/EventCard.svelte | 64 + .../lib/event/EventCardDropdownMenu.svelte | 65 + .../src/lib/event/content/EventContent.svelte | 40 + .../src/lib/event/content/Kind1.svelte | 66 + .../src/lib/event/content/Kind1063.svelte | 81 + .../src/lib/event/content/Kind30000.svelte | 29 + .../src/lib/event/content/Kind30001.svelte | 27 + .../src/lib/event/content/Kind30023.svelte | 50 + .../src/lib/event/content/Kind9802.svelte | 47 + .../lib/event/content/NoteContentLink.svelte | 30 + .../event/content/NoteContentNewline.svelte | 7 + .../event/content/NoteContentPerson.svelte | 15 + .../lib/event/content/NoteContentTopic.svelte | 5 + ndk-svelte-components/src/lib/index.ts | 24 + .../src/lib/relay/RelayList.svelte | 198 + .../src/lib/relay/RelayName.svelte | 8 + ndk-svelte-components/src/lib/stores/ndk.ts | 13 + .../src/lib/user/Avatar.svelte | 93 + .../src/lib/user/Name.svelte | 77 + .../src/lib/user/Nip05.svelte | 67 + .../src/lib/user/Npub.svelte | 86 + .../src/lib/user/UserCard.svelte | 84 + .../src/lib/utils/event/index.ts | 30 + ndk-svelte-components/src/lib/utils/index.ts | 14 + .../src/lib/utils/markdown.ts | 14 + ndk-svelte-components/src/lib/utils/notes.ts | 236 + .../src/lib/utils/relay/index.ts | 20 + .../src/lib/utils/user/index.ts | 7 + ndk-svelte-components/src/routes/+page.svelte | 6 + .../src/stories/Introduction.mdx | 21 + .../src/stories/events/EventCard.stories.ts | 62 + .../events/EventCardDropdownMenu.stories.ts | 45 + .../stories/events/EventContent.stories.ts | 46 + .../src/stories/events/kinds/1.stories.ts | 46 + .../src/stories/events/kinds/1063.stories.ts | 42 + .../src/stories/events/kinds/30023.stories.ts | 52 + .../src/stories/events/kinds/9802.stories.ts | 44 + .../events/kinds/lists/30000.stories.ts | 45 + .../events/kinds/lists/30001.stories.ts | 45 + .../src/stories/relay/RelayList.stories.ts | 40 + .../src/stories/user/Avatar.stories.ts | 86 + .../src/stories/user/Name.stories.ts | 82 + .../src/stories/user/Nip05.stories.ts | 87 + .../src/stories/user/Npub.stories.ts | 59 + .../src/stories/user/UserCard.stories.ts | 75 + ndk-svelte-components/src/styles/global.css | 11 + ndk-svelte-components/static/favicon.png | Bin 0 -> 1571 bytes ndk-svelte-components/svelte.config.js | 8 + ndk-svelte-components/tailwind.config.js | 4 + ndk-svelte-components/tsconfig.json | 13 + ndk-svelte-components/tsconfig.json.txt | 5 + ndk-svelte-components/vite.config.ts | 6 + ndk-svelte/.gitignore | 13 + ndk-svelte/LICENSE | 21 + ndk-svelte/README.md | 101 + ndk-svelte/package.json | 37 + ndk-svelte/src/index.ts | 255 + ndk-svelte/tsconfig.json | 5 + CHANGELOG => ndk/CHANGELOG | 0 ndk/LICENSE | 21 + ndk/README.md | 336 + REFERENCES.md => ndk/REFERENCES.md | 0 docs-styles.css => ndk/docs-styles.css | 0 {docs => ndk/docs}/README.md | 0 jest.config.js => ndk/jest.config.js | 0 ndk/package.json | 76 + {src => ndk/src}/cache/index.ts | 0 .../src}/events/content-tagger.test.ts | 0 {src => ndk/src}/events/content-tagger.ts | 0 {src => ndk/src}/events/dedup.ts | 0 {src => ndk/src}/events/index.test.ts | 0 {src => ndk/src}/events/index.ts | 0 {src => ndk/src}/events/kind.ts | 0 {src => ndk/src}/events/kinds/article.ts | 0 {src => ndk/src}/events/kinds/classified.ts | 0 .../events/kinds/dvm/NDKDVMJobFeedback.ts | 0 .../src}/events/kinds/dvm/NDKDVMJobResult.ts | 0 .../src}/events/kinds/dvm/NDKDVMRequest.ts | 0 .../events/kinds/dvm/NDKTranscriptionDVM.ts | 0 {src => ndk/src}/events/kinds/dvm/index.ts | 0 {src => ndk/src}/events/kinds/index.ts | 0 {src => ndk/src}/events/kinds/lists/index.ts | 0 .../src}/events/kinds/nip89/NDKAppHandler.ts | 0 {src => ndk/src}/events/kinds/repost.ts | 0 {src => ndk/src}/events/nip04.ts | 0 {src => ndk/src}/events/nip19.test.ts | 0 {src => ndk/src}/events/nip19.ts | 0 {src => ndk/src}/events/repost.ts | 0 {src => ndk/src}/index.ts | 0 {src => ndk/src}/light-bolt11-decoder.d.ts | 0 {src => ndk/src}/relay/index.ts | 29 +- {src => ndk/src}/relay/pool/index.ts | 0 {src => ndk/src}/relay/score.ts | 0 {src => ndk/src}/relay/sets/calculate.ts | 0 {src => ndk/src}/relay/sets/index.ts | 0 {src => ndk/src}/relay/sets/utils.ts | 0 {src => ndk/src}/signers/index.ts | 0 {src => ndk/src}/signers/nip07/index.ts | 0 .../src}/signers/nip46/backend/connect.ts | 0 .../src}/signers/nip46/backend/describe.ts | 0 .../signers/nip46/backend/get-public-key.ts | 0 .../src}/signers/nip46/backend/index.ts | 0 .../signers/nip46/backend/nip04-decrypt.ts | 0 .../signers/nip46/backend/nip04-encrypt.ts | 0 .../src}/signers/nip46/backend/sign-event.ts | 0 {src => ndk/src}/signers/nip46/index.ts | 0 {src => ndk/src}/signers/nip46/rpc.ts | 0 .../src}/signers/private-key/index.test.ts | 0 {src => ndk/src}/signers/private-key/index.ts | 0 {src => ndk/src}/subscription/index.ts | 0 {src => ndk/src}/subscription/utils.ts | 0 {src => ndk/src}/user/follows.test.ts | 0 {src => ndk/src}/user/follows.ts | 0 {src => ndk/src}/user/index.test.ts | 0 {src => ndk/src}/user/index.ts | 0 {src => ndk/src}/user/profile.ts | 0 {src => ndk/src}/zap/index.ts | 0 {src => ndk/src}/zap/invoice.ts | 0 ndk/tsconfig.json | 6 + typedoc.json => ndk/typedoc.json | 0 package.json | 93 +- packages/eslint-config-custom/package.json | 16 + packages/tailwind-config/package.json | 11 + packages/tailwind-config/tailwind.config.js | 24 + packages/tsconfig/base.json | 20 + packages/tsconfig/ndk-cache-dexie.json | 13 + packages/tsconfig/ndk-cache-redis.json | 13 + packages/tsconfig/ndk-svelte-components.json | 25 + packages/tsconfig/ndk-svelte.json | 17 + tsconfig.json => packages/tsconfig/ndk.json | 4 +- packages/tsconfig/package.json | 17 + pnpm-lock.yaml | 10624 ++++++++++++++-- pnpm-workspace.yaml | 9 + turbo.json | 22 + 171 files changed, 14186 insertions(+), 1202 deletions(-) create mode 100644 ndk-cache-dexie/.eslintrc create mode 100644 ndk-cache-dexie/.gitignore create mode 100644 ndk-cache-dexie/.prettierrc create mode 100644 ndk-cache-dexie/README.md create mode 100644 ndk-cache-dexie/package.json create mode 100644 ndk-cache-dexie/src/db.ts create mode 100644 ndk-cache-dexie/src/index.ts create mode 100644 ndk-cache-dexie/tsconfig.json create mode 100644 ndk-cache-redis/.eslintrc.json create mode 100644 ndk-cache-redis/.gitignore create mode 100644 ndk-cache-redis/.prettierrc.json create mode 100644 ndk-cache-redis/README.md create mode 100644 ndk-cache-redis/config/tsconfig.cjs.json create mode 100644 ndk-cache-redis/config/tsconfig.esm.json create mode 100644 ndk-cache-redis/config/tsconfig.types.json create mode 100644 ndk-cache-redis/config/tsconfig.umd.json create mode 100644 ndk-cache-redis/dump.rdb create mode 100644 ndk-cache-redis/package.json create mode 100644 ndk-cache-redis/src/index.ts create mode 100644 ndk-cache-redis/tools/cleanup create mode 100644 ndk-cache-redis/tsconfig.json create mode 100644 ndk-svelte-components/.eslintignore create mode 100644 ndk-svelte-components/.eslintrc.cjs create mode 100644 ndk-svelte-components/.gitignore create mode 100644 ndk-svelte-components/.npmrc create mode 100644 ndk-svelte-components/.prettierignore create mode 100644 ndk-svelte-components/.prettierrc create mode 100644 ndk-svelte-components/.storybook/main.ts create mode 100644 ndk-svelte-components/.storybook/preview.ts create mode 100644 ndk-svelte-components/LICENSE create mode 100644 ndk-svelte-components/README.md create mode 100644 ndk-svelte-components/images/relay-list.png create mode 100644 ndk-svelte-components/package.json create mode 100644 ndk-svelte-components/postcss.config.cjs create mode 100644 ndk-svelte-components/src/app.html create mode 100644 ndk-svelte-components/src/lib/event/EventCard.svelte create mode 100644 ndk-svelte-components/src/lib/event/EventCardDropdownMenu.svelte create mode 100644 ndk-svelte-components/src/lib/event/content/EventContent.svelte create mode 100644 ndk-svelte-components/src/lib/event/content/Kind1.svelte create mode 100644 ndk-svelte-components/src/lib/event/content/Kind1063.svelte create mode 100644 ndk-svelte-components/src/lib/event/content/Kind30000.svelte create mode 100644 ndk-svelte-components/src/lib/event/content/Kind30001.svelte create mode 100644 ndk-svelte-components/src/lib/event/content/Kind30023.svelte create mode 100644 ndk-svelte-components/src/lib/event/content/Kind9802.svelte create mode 100644 ndk-svelte-components/src/lib/event/content/NoteContentLink.svelte create mode 100644 ndk-svelte-components/src/lib/event/content/NoteContentNewline.svelte create mode 100644 ndk-svelte-components/src/lib/event/content/NoteContentPerson.svelte create mode 100644 ndk-svelte-components/src/lib/event/content/NoteContentTopic.svelte create mode 100644 ndk-svelte-components/src/lib/index.ts create mode 100644 ndk-svelte-components/src/lib/relay/RelayList.svelte create mode 100644 ndk-svelte-components/src/lib/relay/RelayName.svelte create mode 100644 ndk-svelte-components/src/lib/stores/ndk.ts create mode 100644 ndk-svelte-components/src/lib/user/Avatar.svelte create mode 100644 ndk-svelte-components/src/lib/user/Name.svelte create mode 100644 ndk-svelte-components/src/lib/user/Nip05.svelte create mode 100644 ndk-svelte-components/src/lib/user/Npub.svelte create mode 100644 ndk-svelte-components/src/lib/user/UserCard.svelte create mode 100644 ndk-svelte-components/src/lib/utils/event/index.ts create mode 100644 ndk-svelte-components/src/lib/utils/index.ts create mode 100644 ndk-svelte-components/src/lib/utils/markdown.ts create mode 100644 ndk-svelte-components/src/lib/utils/notes.ts create mode 100644 ndk-svelte-components/src/lib/utils/relay/index.ts create mode 100644 ndk-svelte-components/src/lib/utils/user/index.ts create mode 100644 ndk-svelte-components/src/routes/+page.svelte create mode 100644 ndk-svelte-components/src/stories/Introduction.mdx create mode 100644 ndk-svelte-components/src/stories/events/EventCard.stories.ts create mode 100644 ndk-svelte-components/src/stories/events/EventCardDropdownMenu.stories.ts create mode 100644 ndk-svelte-components/src/stories/events/EventContent.stories.ts create mode 100644 ndk-svelte-components/src/stories/events/kinds/1.stories.ts create mode 100644 ndk-svelte-components/src/stories/events/kinds/1063.stories.ts create mode 100644 ndk-svelte-components/src/stories/events/kinds/30023.stories.ts create mode 100644 ndk-svelte-components/src/stories/events/kinds/9802.stories.ts create mode 100644 ndk-svelte-components/src/stories/events/kinds/lists/30000.stories.ts create mode 100644 ndk-svelte-components/src/stories/events/kinds/lists/30001.stories.ts create mode 100644 ndk-svelte-components/src/stories/relay/RelayList.stories.ts create mode 100644 ndk-svelte-components/src/stories/user/Avatar.stories.ts create mode 100644 ndk-svelte-components/src/stories/user/Name.stories.ts create mode 100644 ndk-svelte-components/src/stories/user/Nip05.stories.ts create mode 100644 ndk-svelte-components/src/stories/user/Npub.stories.ts create mode 100644 ndk-svelte-components/src/stories/user/UserCard.stories.ts create mode 100644 ndk-svelte-components/src/styles/global.css create mode 100644 ndk-svelte-components/static/favicon.png create mode 100644 ndk-svelte-components/svelte.config.js create mode 100644 ndk-svelte-components/tailwind.config.js create mode 100644 ndk-svelte-components/tsconfig.json create mode 100644 ndk-svelte-components/tsconfig.json.txt create mode 100644 ndk-svelte-components/vite.config.ts create mode 100644 ndk-svelte/.gitignore create mode 100644 ndk-svelte/LICENSE create mode 100644 ndk-svelte/README.md create mode 100644 ndk-svelte/package.json create mode 100644 ndk-svelte/src/index.ts create mode 100644 ndk-svelte/tsconfig.json rename CHANGELOG => ndk/CHANGELOG (100%) create mode 100644 ndk/LICENSE create mode 100644 ndk/README.md rename REFERENCES.md => ndk/REFERENCES.md (100%) rename docs-styles.css => ndk/docs-styles.css (100%) rename {docs => ndk/docs}/README.md (100%) rename jest.config.js => ndk/jest.config.js (100%) create mode 100644 ndk/package.json rename {src => ndk/src}/cache/index.ts (100%) rename {src => ndk/src}/events/content-tagger.test.ts (100%) rename {src => ndk/src}/events/content-tagger.ts (100%) rename {src => ndk/src}/events/dedup.ts (100%) rename {src => ndk/src}/events/index.test.ts (100%) rename {src => ndk/src}/events/index.ts (100%) rename {src => ndk/src}/events/kind.ts (100%) rename {src => ndk/src}/events/kinds/article.ts (100%) rename {src => ndk/src}/events/kinds/classified.ts (100%) rename {src => ndk/src}/events/kinds/dvm/NDKDVMJobFeedback.ts (100%) rename {src => ndk/src}/events/kinds/dvm/NDKDVMJobResult.ts (100%) rename {src => ndk/src}/events/kinds/dvm/NDKDVMRequest.ts (100%) rename {src => ndk/src}/events/kinds/dvm/NDKTranscriptionDVM.ts (100%) rename {src => ndk/src}/events/kinds/dvm/index.ts (100%) rename {src => ndk/src}/events/kinds/index.ts (100%) rename {src => ndk/src}/events/kinds/lists/index.ts (100%) rename {src => ndk/src}/events/kinds/nip89/NDKAppHandler.ts (100%) rename {src => ndk/src}/events/kinds/repost.ts (100%) rename {src => ndk/src}/events/nip04.ts (100%) rename {src => ndk/src}/events/nip19.test.ts (100%) rename {src => ndk/src}/events/nip19.ts (100%) rename {src => ndk/src}/events/repost.ts (100%) rename {src => ndk/src}/index.ts (100%) rename {src => ndk/src}/light-bolt11-decoder.d.ts (100%) rename {src => ndk/src}/relay/index.ts (91%) rename {src => ndk/src}/relay/pool/index.ts (100%) rename {src => ndk/src}/relay/score.ts (100%) rename {src => ndk/src}/relay/sets/calculate.ts (100%) rename {src => ndk/src}/relay/sets/index.ts (100%) rename {src => ndk/src}/relay/sets/utils.ts (100%) rename {src => ndk/src}/signers/index.ts (100%) rename {src => ndk/src}/signers/nip07/index.ts (100%) rename {src => ndk/src}/signers/nip46/backend/connect.ts (100%) rename {src => ndk/src}/signers/nip46/backend/describe.ts (100%) rename {src => ndk/src}/signers/nip46/backend/get-public-key.ts (100%) rename {src => ndk/src}/signers/nip46/backend/index.ts (100%) rename {src => ndk/src}/signers/nip46/backend/nip04-decrypt.ts (100%) rename {src => ndk/src}/signers/nip46/backend/nip04-encrypt.ts (100%) rename {src => ndk/src}/signers/nip46/backend/sign-event.ts (100%) rename {src => ndk/src}/signers/nip46/index.ts (100%) rename {src => ndk/src}/signers/nip46/rpc.ts (100%) rename {src => ndk/src}/signers/private-key/index.test.ts (100%) rename {src => ndk/src}/signers/private-key/index.ts (100%) rename {src => ndk/src}/subscription/index.ts (100%) rename {src => ndk/src}/subscription/utils.ts (100%) rename {src => ndk/src}/user/follows.test.ts (100%) rename {src => ndk/src}/user/follows.ts (100%) rename {src => ndk/src}/user/index.test.ts (100%) rename {src => ndk/src}/user/index.ts (100%) rename {src => ndk/src}/user/profile.ts (100%) rename {src => ndk/src}/zap/index.ts (100%) rename {src => ndk/src}/zap/invoice.ts (100%) create mode 100644 ndk/tsconfig.json rename typedoc.json => ndk/typedoc.json (100%) mode change 100644 => 100755 package.json create mode 100644 packages/eslint-config-custom/package.json create mode 100644 packages/tailwind-config/package.json create mode 100644 packages/tailwind-config/tailwind.config.js create mode 100644 packages/tsconfig/base.json create mode 100644 packages/tsconfig/ndk-cache-dexie.json create mode 100644 packages/tsconfig/ndk-cache-redis.json create mode 100644 packages/tsconfig/ndk-svelte-components.json create mode 100644 packages/tsconfig/ndk-svelte.json rename tsconfig.json => packages/tsconfig/ndk.json (82%) create mode 100644 packages/tsconfig/package.json create mode 100644 pnpm-workspace.yaml create mode 100644 turbo.json diff --git a/.gitignore b/.gitignore index b255288f..4bc3c7d0 100644 --- a/.gitignore +++ b/.gitignore @@ -2,13 +2,20 @@ **/build **/dist **/lib +!ndk-svelte-components/src/lib/ **/.vscode justfile package-lock.json **/*.js !jest.config.js +!svelte.config.js +!tailwind.config.js +!postcss.config.js **/*.d.ts **/*.d.ts.map +!light-bolt11-decoder.d.ts *.tgz .DS_Store .turbo +_local_ +.svelte-kit/ \ No newline at end of file diff --git a/README.md b/README.md index 2f9d0a92..b0d7ac74 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,16 @@ NDK is a [nostr](<[url](https://github.com/nostr-protocol/nostr)>) development kit that makes the experience of building Nostr-related applications, whether they are relays, clients, or anything in between, better, more reliable and overall nicer to work with than existing solutions. +## Monorepo + +This repository contains multiple packages: + +- [@nostr-dev-kit/ndk](./packages/ndk) – The core NDK package +- [@nostr-dev-kit/ndk-cache-dexie](./packages/ndk-cache-dexie) – A caching adapter for the browser using [Dexie](https://dexie.org/) +- [@nostr-dev-kit/ndk-cache-redis](./packages/ndk-cache-redis) – A caching adapter for the server using [Redis](https://redis.io/) +- [@nostr-dev-kit/ndk-svelte](./packages/ndk-svelte) – Convenience functionalities to make using Svelte+NDK nicer. +- [@nostr-dev-kit/ndk-svelte-components](./packages/ndk-svelte-components) – Minimally styled Svelte components for common NDK use cases. + ## NDK Objectives 1. The core goal of NDK is to improve the decentralization of Nostr via intelligent conventions and data discovery features without depending on any one central point of coordination (such as large relays or centralized search providers). diff --git a/ndk-cache-dexie/.eslintrc b/ndk-cache-dexie/.eslintrc new file mode 100644 index 00000000..ce99814c --- /dev/null +++ b/ndk-cache-dexie/.eslintrc @@ -0,0 +1,23 @@ +{ + "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended", "prettier"], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "sourceType": "module", + "ecmaVersion": 2021 + }, + "plugins": ["@typescript-eslint"], + "env": { + "jest": true + }, + "rules": { + "@typescript-eslint/no-unused-vars": ["warn", { "args": "none" }], // No warnings for unused function arguments, which might be used in the future. + "no-constant-binary-expression": "error", + "semi": ["error", "always"] + }, + "globals": { + "Buffer": true, + "expect": true, + "process": true, + "test": true + } +} diff --git a/ndk-cache-dexie/.gitignore b/ndk-cache-dexie/.gitignore new file mode 100644 index 00000000..165b90ba --- /dev/null +++ b/ndk-cache-dexie/.gitignore @@ -0,0 +1,4 @@ +.DS_Store +node_modules +**/*.js +dist diff --git a/ndk-cache-dexie/.prettierrc b/ndk-cache-dexie/.prettierrc new file mode 100644 index 00000000..409139da --- /dev/null +++ b/ndk-cache-dexie/.prettierrc @@ -0,0 +1,20 @@ +{ + "useTabs": false, + "tabWidth": 4, + "singleQuote": false, + "semi": true, + "trailingComma": "es5", + "printWidth": 100, + "importOrder": ["^@core/(.*)$", "^@server/(.*)$", "^@ui/(.*)$", "^[./]"], + "importOrderSeparation": true, + "importOrderSortSpecifiers": true, + "plugins": ["@trivago/prettier-plugin-sort-imports"], + "overrides": [ + { + "files": "*.svelte", + "options": { + "parser": "svelte" + } + } + ] +} diff --git a/ndk-cache-dexie/README.md b/ndk-cache-dexie/README.md new file mode 100644 index 00000000..e79c24a6 --- /dev/null +++ b/ndk-cache-dexie/README.md @@ -0,0 +1,28 @@ +# ndk-cache-dexie + +NDK cache adapter for [Dexie](https://dexie.org/). Dexie is a wrapper around IndexedDB, an in-browser database. + +## Usage + +NDK will attempt to use the Dexie adapter to store users, events, and tags. The default behaviour is to always check the cache first and then hit relays, replacing older cached events as needed. + +### Install + +``` +pnpm add @nostr-dev-kit/ndk-cache-dexie +``` + +### Add as a cache adapter + +```ts +import NDKCacheAdapterDexie from "@nostr-dev-kit/ndk-cache-dexie"; + +const dexieAdapter = new NDKCacheAdapterDexie({ dbName: 'your-db-name' }); +const ndk = new NDK({cacheAdapter: dexieAdapter, ...other config options}); +``` + +🚨 Because Dexie only exists client-side, this cache adapter will not work in pure node.js environments. You'll need to make sure that you're using the right cache adapter in the right place (e.g. Redis on the backend, Dexie on the frontend). + +# License + +MIT diff --git a/ndk-cache-dexie/package.json b/ndk-cache-dexie/package.json new file mode 100644 index 00000000..3b64a0b7 --- /dev/null +++ b/ndk-cache-dexie/package.json @@ -0,0 +1,57 @@ +{ + "name": "@nostr-dev-kit/ndk-cache-dexie", + "version": "0.8.21-1", + "description": "NDK Dexie Cache Adapter", + "license": "MIT", + "bugs": { + "url": "https://github.com/nostr-dev-kit/ndk-cache-dexie/issues" + }, + "homepage": "https://github.com/nostr-dev-kit/ndk-cache-dexie#readme", + "types": "./dist/index.d.ts", + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "exports": { + "import": "./dist/index.mjs", + "require": "./dist/index.js" + }, + "files": [ + "dist", + "README.md" + ], + "packageManager": "pnpm@8.6.12", + "scripts": { + "dev": "pnpm build --watch", + "build": "tsup src/index.ts --format cjs,esm --dts", + "clean": "rm -rf dist", + "lint": "eslint src/**/*.ts", + "prettify": "prettier . --write --config .prettierrc" + }, + "keywords": [ + "nostr", + "dexie", + "cache" + ], + "authors": [ + "pablof7z", + "erskingardner" + ], + "devDependencies": { + "@nostr-dev-kit/tsconfig": "*", + "@trivago/prettier-plugin-sort-imports": "^4.2.0", + "@types/debug": "^4.1.8", + "@types/node": "^20.5.0", + "@typescript-eslint/eslint-plugin": "^6.4.0", + "@typescript-eslint/parser": "^6.4.0", + "eslint": "^8.47.0", + "eslint-config-prettier": "^9.0.0", + "prettier": "^3.0.1", + "tsup": "^7.2.0", + "typescript": "^5.1.6" + }, + "dependencies": { + "@nostr-dev-kit/ndk": "*", + "debug": "^4.3.4", + "dexie": "^3.2.4", + "nostr-tools": "^1.14.0" + } +} diff --git a/ndk-cache-dexie/src/db.ts b/ndk-cache-dexie/src/db.ts new file mode 100644 index 00000000..072c180f --- /dev/null +++ b/ndk-cache-dexie/src/db.ts @@ -0,0 +1,61 @@ +import Dexie, { type Table } from "dexie"; + +interface User { + pubkey: string; + npub: string; + name?: string; + displayName?: string; + image?: string; + banner?: string; + bio?: string; + nip05?: string; + lud06?: string; + lud16?: string; + about?: string; + zapService?: string; + event: string; +} + +interface Event { + id: string; + pubkey: string; + content: string; + kind: number; + createdAt: number; + relay?: string; + event: string; +} + +interface EventTag { + id: string; + eventId: string; + tag: string; + value: string; + tagValue: string; +} + +export class Database extends Dexie { + users!: Table; + events!: Table; + eventTags!: Table; + + constructor(name: string) { + super(name); + this.version(2).stores({ + users: "&pubkey, npub, name, displayName, image, banner, bio, nip05, lud06, lud16, about, zapService, event", + events: "&id, pubkey, content, kind, createdAt, relay, [kind+pubkey]", + eventTags: "id, tagValue, tag, value, eventId", + }); + } +} + +export let db: Database; + +/** + * Create database + * + * @param name - Database name + */ +export function createDatabase(name: string) { + db = new Database(name); +} diff --git a/ndk-cache-dexie/src/index.ts b/ndk-cache-dexie/src/index.ts new file mode 100644 index 00000000..2e73c7c3 --- /dev/null +++ b/ndk-cache-dexie/src/index.ts @@ -0,0 +1,402 @@ +import { NDKCacheAdapter, NDKFilter, NDKRelay, NDKUser, NDKUserProfile } from "@nostr-dev-kit/ndk"; +import { NDKEvent, NDKSubscription } from "@nostr-dev-kit/ndk"; +import _debug from "debug"; +import { matchFilter } from "nostr-tools"; + +import { createDatabase, db } from "./db"; + +export { db } from "./db"; + +interface NDKCacheAdapterDexieOptions { + /** + * The name of the database to use + */ + dbName?: string; + + /** + * Debug instance to use for logging + */ + debug?: debug.IDebugger; + + /** + * The number of seconds to store events in Dexie (IndexedDB) before they expire + * Defaults to 3600 seconds (1 hour) + */ + expirationTime?: number; +} + +export default class NDKCacheAdapterDexie implements NDKCacheAdapter { + public debug: debug.Debugger; + private expirationTime; + readonly locking; + + constructor(opts: NDKCacheAdapterDexieOptions = {}) { + createDatabase(opts.dbName || "ndk"); + this.debug = opts.debug || _debug("ndk:dexie-adapter"); + this.locking = true; + this.expirationTime = opts.expirationTime || 3600; + } + + public async query(subscription: NDKSubscription): Promise { + Promise.allSettled( + subscription.filters.map((filter) => this.processFilter(filter, subscription)) + ); + } + + private async processFilter(filter: NDKFilter, subscription: NDKSubscription): Promise { + const filterKeys = Object.keys(filter || {}).sort(); + try { + (await this.byKindAndAuthor(filterKeys, filter, subscription)) || + (await this.byAuthors(filterKeys, filter, subscription)) || + (await this.byKinds(filterKeys, filter, subscription)) || + (await this.byIdsQuery(filterKeys, filter, subscription)) || + (await this.byNip33Query(filterKeys, filter, subscription)) || + (await this.byTagsAndOptionallyKinds(filterKeys, filter, subscription)); + } catch (error) { + console.error(error); + } + } + + public async setEvent(event: NDKEvent, _filter: NDKFilter, relay?: NDKRelay): Promise { + if (false) { + // This is a user profile event, create/update a user. + const user = new NDKUser({ hexpubkey: event.pubkey }); + const profile = profileFromEvent(event, {}); + + db.users.put({ + pubkey: event.pubkey, + npub: user.npub, + name: profile.name, + displayName: profile.displayName, + image: profile.image, + banner: profile.banner, + bio: profile.bio, + nip05: profile.nip05, + lud06: profile.lud06, + lud16: profile.lud16, + about: profile.about, + zapService: profile.zapService, + event: JSON.stringify(event.rawEvent()), + }); + } else { + let addEvent = true; + + if (event.isParamReplaceable()) { + const replaceableId = `${event.kind}:${event.pubkey}:${event.tagId()}`; + const existingEvent = await db.events.where({ id: replaceableId }).first(); + if ( + existingEvent && + event.created_at && + existingEvent.createdAt > event.created_at + ) { + addEvent = false; + } + } + + if (addEvent) { + db.events.put({ + id: event.tagId(), + pubkey: event.pubkey, + content: event.content, + kind: event.kind as number, + createdAt: event.created_at as number, + relay: relay?.url, + event: JSON.stringify(event.rawEvent()), + }); + + // Don't cache contact lists as tags since it's expensive + // and there is no use case for it + if (event.kind !== 3) { + event.tags.forEach((tag) => { + if (tag[0].length !== 1) return; + + db.eventTags.put({ + id: `${event.id}:${tag[0]}:${tag[1]}`, + eventId: event.id, + tag: tag[0], + value: tag[1], + tagValue: tag[0] + tag[1], + }); + }); + } + } + } + } + + /** + * Searches by authors + */ + private async byAuthors( + filterKeys: string[], + filter: NDKFilter, + subscription: NDKSubscription + ): Promise { + const f = ["authors"]; + const hasAllKeys = filterKeys.length === f.length && f.every((k) => filterKeys.includes(k)); + + let foundEvents = false; + + if (hasAllKeys && filter.authors) { + for (const pubkey of filter.authors) { + const events = await db.events.where({ pubkey }).toArray(); + for (const event of events) { + let rawEvent; + try { + rawEvent = JSON.parse(event.event); + } catch (e) { + console.log("failed to parse event", e); + continue; + } + + const ndkEvent = new NDKEvent(undefined, rawEvent); + const relay = event.relay ? new NDKRelay(event.relay) : undefined; + subscription.eventReceived(ndkEvent, relay, true); + foundEvents = true; + } + } + } + return foundEvents; + } + + /** + * Searches by kinds + */ + private async byKinds( + filterKeys: string[], + filter: NDKFilter, + subscription: NDKSubscription + ): Promise { + const f = ["kinds"]; + const hasAllKeys = filterKeys.length === f.length && f.every((k) => filterKeys.includes(k)); + + let foundEvents = false; + + if (hasAllKeys && filter.kinds) { + for (const kind of filter.kinds) { + const events = await db.events.where({ kind }).toArray(); + for (const event of events) { + let rawEvent; + try { + rawEvent = JSON.parse(event.event); + } catch (e) { + console.log("failed to parse event", e); + continue; + } + + const ndkEvent = new NDKEvent(undefined, rawEvent); + const relay = event.relay ? new NDKRelay(event.relay) : undefined; + subscription.eventReceived(ndkEvent, relay, true); + foundEvents = true; + } + } + } + return foundEvents; + } + + /** + * Searches by ids + */ + private async byIdsQuery( + filterKeys: string[], + filter: NDKFilter, + subscription: NDKSubscription + ): Promise { + const f = ["ids"]; + const hasAllKeys = filterKeys.length === f.length && f.every((k) => filterKeys.includes(k)); + + if (hasAllKeys && filter.ids) { + for (const id of filter.ids) { + const event = await db.events.where({ id }).first(); + if (!event) continue; + + let rawEvent; + try { + rawEvent = JSON.parse(event.event); + } catch (e) { + console.log("failed to parse event", e); + continue; + } + + const ndkEvent = new NDKEvent(undefined, rawEvent); + const relay = event.relay ? new NDKRelay(event.relay) : undefined; + subscription.eventReceived(ndkEvent, relay, true); + } + + return true; + } + + return false; + } + + /** + * Searches by NIP-33 + */ + private async byNip33Query( + filterKeys: string[], + filter: NDKFilter, + subscription: NDKSubscription + ): Promise { + const f = ["#d", "authors", "kinds"]; + const hasAllKeys = filterKeys.length === f.length && f.every((k) => filterKeys.includes(k)); + + if (hasAllKeys && filter.kinds && filter.authors) { + for (const kind of filter.kinds) { + const replaceableKind = kind >= 30000 && kind < 40000; + + if (!replaceableKind) continue; + + for (const author of filter.authors) { + for (const dTag of filter["#d"]) { + const replaceableId = `${kind}:${author}:${dTag}`; + const event = await db.events.where({ id: replaceableId }).first(); + if (!event) continue; + + let rawEvent; + try { + rawEvent = JSON.parse(event.event); + } catch (e) { + console.log("failed to parse event", e); + continue; + } + + const ndkEvent = new NDKEvent(undefined, rawEvent); + const relay = event.relay ? new NDKRelay(event.relay) : undefined; + subscription.eventReceived(ndkEvent, relay, true); + } + } + } + return true; + } + return false; + } + + /** + * Searches by kind & author + */ + private async byKindAndAuthor( + filterKeys: string[], + filter: NDKFilter, + subscription: NDKSubscription + ): Promise { + const f = ["authors", "kinds"]; + const hasAllKeys = filterKeys.length === f.length && f.every((k) => filterKeys.includes(k)); + let foundEvents = false; + + if (!hasAllKeys) return false; + + if (filter.kinds && filter.authors) { + for (const kind of filter.kinds) { + for (const author of filter.authors) { + const events = await db.events.where({ kind, pubkey: author }).toArray(); + + for (const event of events) { + let rawEvent; + try { + rawEvent = JSON.parse(event.event); + } catch (e) { + console.log("failed to parse event", e); + continue; + } + + const ndkEvent = new NDKEvent(undefined, rawEvent); + const relay = event.relay ? new NDKRelay(event.relay) : undefined; + subscription.eventReceived(ndkEvent, relay, true); + foundEvents = true; + } + } + } + } + return foundEvents; + } + + /** + * Searches by tags and optionally filters by tags + */ + private async byTagsAndOptionallyKinds( + filterKeys: string[], + filter: NDKFilter, + subscription: NDKSubscription + ): Promise { + for (const filterKey of filterKeys) { + const isKind = filterKey === "kinds"; + const isTag = filterKey.startsWith("#") && filterKey.length === 2; + + if (!isKind && !isTag) return false; + } + + const events = await this.filterByTag(filterKeys, filter); + const kinds = filter.kinds as number[]; + + for (const event of events) { + if (!kinds?.includes(event.kind as number)) continue; + + subscription.eventReceived(event, undefined, true); + } + + return false; + } + + private async filterByTag(filterKeys: string[], filter: NDKFilter): Promise { + const retEvents: NDKEvent[] = []; + + for (const filterKey of filterKeys) { + if (filterKey.length !== 2) continue; + const tag = filterKey.slice(1); + // const values = filter[filterKey] as string[]; + const values: string[] = []; + for (const [key, value] of Object.entries(filter)) { + if (key === filterKey) values.push(value as string); + } + + for (const value of values) { + const eventTags = await db.eventTags.where({ tagValue: tag + value }).toArray(); + if (!eventTags.length) continue; + + const eventIds = eventTags.map((t) => t.eventId); + + const events = await db.events.where("id").anyOf(eventIds).toArray(); + for (const event of events) { + let rawEvent; + try { + rawEvent = JSON.parse(event.event); + + // Make sure all passed filters match the event + if (!matchFilter(filter, rawEvent)) continue; + } catch (e) { + console.log("failed to parse event", e); + continue; + } + + const ndkEvent = new NDKEvent(undefined, rawEvent); + const relay = event.relay ? new NDKRelay(event.relay) : undefined; + ndkEvent.relay = relay; + retEvents.push(ndkEvent); + } + } + } + + return retEvents; + } +} + +/** + * Constructs a UserProfile from kind 0 event + */ +function profileFromEvent(event: NDKEvent, profile: NDKUserProfile): NDKUserProfile { + const payload = JSON.parse(event.content); + + if (payload.name) profile.name = payload.name; + if (payload.display_name) profile.displayName = payload.display_name; + if (payload.displayName) profile.displayName = payload.displayName; + if (payload.image) profile.image = payload.image; + if (payload.picture) profile.image = payload.picture; + if (payload.banner) profile.banner = payload.banner; + if (payload.bio) profile.bio = payload.bio; + if (payload.nip05) profile.nip05 = payload.nip05; + if (payload.lud06) profile.lud06 = payload.lud06; + if (payload.lud16) profile.lud16 = payload.lud16; + if (payload.about) profile.about = payload.about; + if (payload.zapService) profile.zapService = payload.zapService; + + return profile; +} diff --git a/ndk-cache-dexie/tsconfig.json b/ndk-cache-dexie/tsconfig.json new file mode 100644 index 00000000..3a1e26df --- /dev/null +++ b/ndk-cache-dexie/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "@nostr-dev-kit/tsconfig/ndk-cache-dexie.json", + "include": ["src/**/*"], + "exclude": ["dist", "build", "node_modules"] +} + \ No newline at end of file diff --git a/ndk-cache-redis/.eslintrc.json b/ndk-cache-redis/.eslintrc.json new file mode 100644 index 00000000..a1910e57 --- /dev/null +++ b/ndk-cache-redis/.eslintrc.json @@ -0,0 +1,27 @@ +{ + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "prettier" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "sourceType": "module", + "ecmaVersion": 2021 + }, + "plugins": ["@typescript-eslint"], + "env": { + "jest": true + }, + "rules": { + "@typescript-eslint/no-unused-vars": ["warn", { "args": "none" }], // No warnings for unused function arguments, which might be used in the future. + "no-constant-binary-expression": "error", + "semi": ["error", "always"] + }, + "globals": { + "Buffer": true, + "expect": true, + "process": true, + "test": true + } +} \ No newline at end of file diff --git a/ndk-cache-redis/.gitignore b/ndk-cache-redis/.gitignore new file mode 100644 index 00000000..c92e9f04 --- /dev/null +++ b/ndk-cache-redis/.gitignore @@ -0,0 +1,3 @@ +node_modules +**/*.js +dist diff --git a/ndk-cache-redis/.prettierrc.json b/ndk-cache-redis/.prettierrc.json new file mode 100644 index 00000000..2519bad6 --- /dev/null +++ b/ndk-cache-redis/.prettierrc.json @@ -0,0 +1,7 @@ +{ + "importOrder": ["^[./]"], + "importOrderSeparation": true, + "tabWidth": 4, + "useTabs": false, + "semi": true +} diff --git a/ndk-cache-redis/README.md b/ndk-cache-redis/README.md new file mode 100644 index 00000000..404a6f44 --- /dev/null +++ b/ndk-cache-redis/README.md @@ -0,0 +1,25 @@ +# ndk-cache-redis + +NDK cache adapter for redis. + +This cache is mostly a skeleton; the cache hit logic is very basic and only checks if +a query is using precisely `kinds` and `authors` filtering. + +## Usage + +### Install + +``` +npm add @nostr-dev-kit/ndk-cache-redis +``` + +### Add as a cache adapter +```ts +import NDKRedisCacheAdapter from '@nostr-dev-kit/ndk-cache-redis'; +const cacheAdapter = new NDKRedisCacheAdapter(); +const ndk = new NDK({ cacheAdapter }); +``` + +# License + +MIT diff --git a/ndk-cache-redis/config/tsconfig.cjs.json b/ndk-cache-redis/config/tsconfig.cjs.json new file mode 100644 index 00000000..6c52e127 --- /dev/null +++ b/ndk-cache-redis/config/tsconfig.cjs.json @@ -0,0 +1,7 @@ +{ + "extends": "../tsconfig", + "compilerOptions": { + "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, + "outDir": "../dist/cjs" /* Redirect output structure to the directory. */ + } +} diff --git a/ndk-cache-redis/config/tsconfig.esm.json b/ndk-cache-redis/config/tsconfig.esm.json new file mode 100644 index 00000000..1c3ce177 --- /dev/null +++ b/ndk-cache-redis/config/tsconfig.esm.json @@ -0,0 +1,8 @@ +{ + "extends": "../tsconfig", + "compilerOptions": { + "moduleResolution": "node", + "module": "ESNext" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, + "outDir": "../dist/esm" /* Redirect output structure to the directory. */ + } +} diff --git a/ndk-cache-redis/config/tsconfig.types.json b/ndk-cache-redis/config/tsconfig.types.json new file mode 100644 index 00000000..8de87ee2 --- /dev/null +++ b/ndk-cache-redis/config/tsconfig.types.json @@ -0,0 +1,8 @@ +{ + "extends": "../tsconfig", + "compilerOptions": { + "declaration": true /* Generates corresponding '.d.ts' file. */, + "emitDeclarationOnly": true, + "outDir": "../dist/types" /* Redirect output structure to the directory. */ + } +} diff --git a/ndk-cache-redis/config/tsconfig.umd.json b/ndk-cache-redis/config/tsconfig.umd.json new file mode 100644 index 00000000..5559c666 --- /dev/null +++ b/ndk-cache-redis/config/tsconfig.umd.json @@ -0,0 +1,7 @@ +{ + "extends": "../tsconfig", + "compilerOptions": { + "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, + "declaration": false /* Generates corresponding '.d.ts' file. */ + } +} diff --git a/ndk-cache-redis/dump.rdb b/ndk-cache-redis/dump.rdb new file mode 100644 index 0000000000000000000000000000000000000000..9d2234a8db8da7dd77797434cb4620670186dc27 GIT binary patch literal 88 zcmWG?b@2=~FfcUu#aWb^l3A=;FEc3IM*7B#8h3 literal 0 HcmV?d00001 diff --git a/ndk-cache-redis/package.json b/ndk-cache-redis/package.json new file mode 100644 index 00000000..df35b59e --- /dev/null +++ b/ndk-cache-redis/package.json @@ -0,0 +1,46 @@ +{ + "name": "@nostr-dev-kit/ndk-cache-redis", + "version": "1.8.0", + "description": "NDK cache adapter for redis.", + "main": "dist/cjs/index.js", + "module": "dist/esm/index.js", + "umd:main": "dist/umd/index.js", + "types": "dist/types/index.d.js", + "scripts": { + "dev": "node tools/cleanup esm && tsc -w -p config/tsconfig.esm.json", + "build": "npm run build:cjs && npm run build:esm && npm run build:types", + "build:cjs": "node tools/cleanup cjs && tsc -p config/tsconfig.cjs.json", + "build:esm": "node tools/cleanup esm && tsc -p config/tsconfig.esm.json", + "build:types": "node tools/cleanup types && tsc -p config/tsconfig.types.json", + "lint": "eslint src/**/*.ts" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/nostr-dev-kit/ndk-cache-redis.git" + }, + "keywords": [ + "nostr" + ], + "author": "pablof7z", + "license": "MIT", + "bugs": { + "url": "https://github.com/nostr-dev-kit/ndk-cache-redis/issues" + }, + "homepage": "https://github.com/nostr-dev-kit/ndk-cache-redis#readme", + "devDependencies": { + "@nostr-dev-kit/tsconfig": "*", + "@types/debug": "^4.1.7", + "@types/node": "^18.15.11", + "@typescript-eslint/eslint-plugin": "^5.57.0", + "@typescript-eslint/parser": "^5.57.0", + "eslint": "^8.37.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-import": "^2.27.5", + "typescript": "^5.1.6" + }, + "dependencies": { + "@nostr-dev-kit/ndk": "*", + "debug": "^4.3.4", + "ioredis": "^5.3.1" + } +} diff --git a/ndk-cache-redis/src/index.ts b/ndk-cache-redis/src/index.ts new file mode 100644 index 00000000..94840d61 --- /dev/null +++ b/ndk-cache-redis/src/index.ts @@ -0,0 +1,81 @@ +import { NDKCacheAdapter, NDKFilter } from '@nostr-dev-kit/ndk'; +import { NDKSubscription, NDKEvent } from '@nostr-dev-kit/ndk'; +import Redis from 'ioredis'; +import _debug from 'debug'; + +interface RedisAdapterOptions { + /** + * Debug instance to use for logging. + */ + debug?: debug.IDebugger; + + /** + * The number of seconds to store events in redis before they expire. + */ + expirationTime?: number; +} + +export default class RedisAdapter implements NDKCacheAdapter { + public redis; + public debug; + private expirationTime; + readonly locking; + + constructor(opts: RedisAdapterOptions = {}) { + this.redis = new Redis(); + this.debug = opts.debug || _debug('ndk:redis-adapter'); + this.locking = true; + this.expirationTime = opts.expirationTime || 3600; + } + + public async query(subscription: NDKSubscription): Promise { + const { filter } = subscription; + + this.debug('query', filter); + + // if this filter uses both authors and kinds, then we need to query for each combination of author and kind + // and then combine the results + if (filter.authors && filter.kinds) { + const promises = []; + + for (const author of filter.authors) { + for (const kind of filter.kinds) { + const key = `${author}:${kind}`; + promises.push(this.redis.hgetall(key)); + } + } + + const results = await Promise.all(promises); + + for (const result of results) { + if (result && result.event) { + const event = await this.redis.get(result.event); + + if (event) { + const ndkEvent = new NDKEvent(subscription.ndk, JSON.parse(event)); + this.debug('hit', ndkEvent.id); + subscription.eventReceived(ndkEvent, undefined, true); + } + } + } + } + } + + public async setEvent(event: NDKEvent, filter: NDKFilter): Promise { + const nostrEvent = await event.toNostrEvent(); + const key = `${nostrEvent.pubkey}:${nostrEvent.kind}`; + + this.debug('setEvent', {nostrEvent, key}); + + return new Promise((resolve) => { + // store in redis the event with an expiration of 1 minute + // and store the filter that was used to find the event on an hset where the key is the filter and the value is the event id + // run both at the same time and resolve when both complete + Promise.all([ + this.redis.set(event.id, JSON.stringify(nostrEvent), 'EX', this.expirationTime), + this.redis.hset(key, 'event', event.id), + this.redis.expire(key, this.expirationTime), + ]).then(() => resolve()); + }); + } +} \ No newline at end of file diff --git a/ndk-cache-redis/tools/cleanup b/ndk-cache-redis/tools/cleanup new file mode 100644 index 00000000..e3215a48 --- /dev/null +++ b/ndk-cache-redis/tools/cleanup @@ -0,0 +1,29 @@ +/* eslint-disable */ +const fs = require('fs') +const Path = require('path') +/* eslint-enable */ + +const deleteFolderRecursive = (path) => { + if (fs.existsSync(path)) { + fs.readdirSync(path).forEach((file) => { + const curPath = Path.join(path, file) + if (fs.lstatSync(curPath).isDirectory()) { + deleteFolderRecursive(curPath) + } else { + fs.unlinkSync(curPath) + } + }) + fs.rmdirSync(path) + } +} + +const folder = process.argv.slice(2)[0] + +if (folder) { + deleteFolderRecursive(Path.join(__dirname, '../dist', folder)) +} else { + deleteFolderRecursive(Path.join(__dirname, '../dist/cjs')) + deleteFolderRecursive(Path.join(__dirname, '../dist/esm')) + deleteFolderRecursive(Path.join(__dirname, '../dist/umd')) + deleteFolderRecursive(Path.join(__dirname, '../dist/types')) +} \ No newline at end of file diff --git a/ndk-cache-redis/tsconfig.json b/ndk-cache-redis/tsconfig.json new file mode 100644 index 00000000..75b9f4b7 --- /dev/null +++ b/ndk-cache-redis/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "@nostr-dev-kit/tsconfig/ndk-cache-redis.json", + "include": ["src/**/*"], + "exclude": ["dist", "build", "node_modules"] +} diff --git a/ndk-svelte-components/.eslintignore b/ndk-svelte-components/.eslintignore new file mode 100644 index 00000000..38972655 --- /dev/null +++ b/ndk-svelte-components/.eslintignore @@ -0,0 +1,13 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example + +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/ndk-svelte-components/.eslintrc.cjs b/ndk-svelte-components/.eslintrc.cjs new file mode 100644 index 00000000..ce19594e --- /dev/null +++ b/ndk-svelte-components/.eslintrc.cjs @@ -0,0 +1,31 @@ +module.exports = { + root: true, + extends: [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:svelte/recommended", + "prettier", + "plugin:storybook/recommended", + ], + parser: "@typescript-eslint/parser", + plugins: ["@typescript-eslint"], + parserOptions: { + sourceType: "module", + ecmaVersion: 2020, + extraFileExtensions: [".svelte"], + }, + env: { + browser: true, + es2017: true, + node: true, + }, + overrides: [ + { + files: ["*.svelte"], + parser: "svelte-eslint-parser", + parserOptions: { + parser: "@typescript-eslint/parser", + }, + }, + ], +}; diff --git a/ndk-svelte-components/.gitignore b/ndk-svelte-components/.gitignore new file mode 100644 index 00000000..eb8de58a --- /dev/null +++ b/ndk-svelte-components/.gitignore @@ -0,0 +1,13 @@ +.DS_Store +node_modules +**/build +**/dist +**/.svelte-kit +**/package +.env +.env.* +!.env.example +vite.config.js.timestamp-* +vite.config.ts.timestamp-* +pnpm-lock.yaml +justfile diff --git a/ndk-svelte-components/.npmrc b/ndk-svelte-components/.npmrc new file mode 100644 index 00000000..0c05da45 --- /dev/null +++ b/ndk-svelte-components/.npmrc @@ -0,0 +1,2 @@ +engine-strict=true +resolution-mode=highest diff --git a/ndk-svelte-components/.prettierignore b/ndk-svelte-components/.prettierignore new file mode 100644 index 00000000..38972655 --- /dev/null +++ b/ndk-svelte-components/.prettierignore @@ -0,0 +1,13 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example + +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/ndk-svelte-components/.prettierrc b/ndk-svelte-components/.prettierrc new file mode 100644 index 00000000..4ac48f9b --- /dev/null +++ b/ndk-svelte-components/.prettierrc @@ -0,0 +1,18 @@ +{ + "plugins": ["@trivago/prettier-plugin-sort-imports", "prettier-plugin-svelte"], + "overrides": [ + { + "files": "*.svelte", + "options": { + "parser": "svelte" + } + } + ], + "importOrder": ["^[./]"], + "tabWidth": 4, + "useTabs": false, + "trailingComma": "es5", + "printWidth": 100, + "singleQuote": false, + "semi": true +} diff --git a/ndk-svelte-components/.storybook/main.ts b/ndk-svelte-components/.storybook/main.ts new file mode 100644 index 00000000..1b6cc1b7 --- /dev/null +++ b/ndk-svelte-components/.storybook/main.ts @@ -0,0 +1,26 @@ +import type { StorybookConfig } from "@storybook/sveltekit"; +import { join, dirname } from "path"; + +/** + * This function is used to resolve the absolute path of a package. + * It is needed in projects that use Yarn PnP or are set up within a monorepo. + */ +function getAbsolutePath(value: string): any { + return dirname(require.resolve(join(value, "package.json"))); +} +const config: StorybookConfig = { + stories: ["../src/**/*.mdx", "../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"], + addons: [ + getAbsolutePath("@storybook/addon-links"), + getAbsolutePath("@storybook/addon-essentials"), + getAbsolutePath("@storybook/addon-interactions"), + ], + framework: { + name: getAbsolutePath("@storybook/sveltekit"), + options: {}, + }, + docs: { + autodocs: "tag", + }, +}; +export default config; diff --git a/ndk-svelte-components/.storybook/preview.ts b/ndk-svelte-components/.storybook/preview.ts new file mode 100644 index 00000000..3d25b73e --- /dev/null +++ b/ndk-svelte-components/.storybook/preview.ts @@ -0,0 +1,15 @@ +import type { Preview } from "@storybook/svelte"; + +const preview: Preview = { + parameters: { + actions: { argTypesRegex: "^on[A-Z].*" }, + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/, + }, + }, + }, +}; + +export default preview; diff --git a/ndk-svelte-components/LICENSE b/ndk-svelte-components/LICENSE new file mode 100644 index 00000000..2a6ea523 --- /dev/null +++ b/ndk-svelte-components/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Pablo Fernandez + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/ndk-svelte-components/README.md b/ndk-svelte-components/README.md new file mode 100644 index 00000000..b92a8697 --- /dev/null +++ b/ndk-svelte-components/README.md @@ -0,0 +1 @@ +# ndk-svelte-components \ No newline at end of file diff --git a/ndk-svelte-components/images/relay-list.png b/ndk-svelte-components/images/relay-list.png new file mode 100644 index 0000000000000000000000000000000000000000..4151551a4393e096bab58eaf80a32b51349087f9 GIT binary patch literal 200622 zcmeEtf_Mtuy=iy&UMG< zvNzD=0jDC+i}%J^#SP9m6nSYf2JW(Mg^+)fsWlLu8j)pj5W4m*abyG!?&Fu!{na_F z0GXLWY}I1_)4Pd`w&isfc#(`pO3SM*E{}xJ;0y+d-eAH}%XuE4H8)>Mgz=N~cSVnpF%Bj9Qa0}_`ENaX2V);xlm)5N zt5G~;N#z=t8Qf`fWYP$%Q%)o%LoR3Nq(TCJ66}0TuZEvQT`P@MfAJ)d>oa0GK{Np= zcKM^uw)T`BH01P;Y-kqZ4>ZyE6;)cJ!nAOfB(JYO^M(#GI2jbRlT633Sv)1W=8Mu= z)7;u_rV|Lv|L&jKYsqr_bUb6=oGzRRSCxwNPi>T6|x``xEp@e_i37Q#MzPXtcUG zwy?im=XX8Gbu0D7Y`LY6u~>@OdT<^!wT2LJZn$#>(P?H7JC#PNvWixHhTXwzE!V<)u<_0tce3RPWLj)t@3 z(E*zNTB%MbdwkEL_fJC@LzLRZ+ug*TLw}lymY?T7?hdlgqbll=oQ|$2m3Ydx8J_NdbTC(hJ*8_%_+ye*zPoK1(4@p^ft7VT$K#xjN?N&$whj>7G7 zTQ@Avckx~CvD}dEV9$@uvOf)Y6u4};UDE8cEGoZm&V*-Cey0DVr{~FME+|Q$vL$AH z6z%4a(hwV*Obh$r#6&Xbln3I7)!oqG9U@#hL2z)ebhC>wBi!UVeC-`{KLrcXkN*Qa zuSX&a9!Vdcp4X$++K`8{R+p`$iHPL9RF;d_je){w2*%VHoxx@t=u+wE6ZNDD$Xsn; z6@u4h7pntI1~og?e8aH7`;Q5m%#`lbGF^pTwgxJsf@}o1~E> zngkw1PSSm*Y$KFm{LJOyyKmWpxpvv9Urt`(RTouH>S*hj>oipJS6x4Le1%m`KTsv>^YO!933v_68kiFJ@FoT5} z5fLdCAtALLp+tT{woQ6PZb??kBV<2oBgS>Wjh9%&!)JV$Qle-%>asy}tl`y?|HUdV zztgqSDs0n|%cc^k(xg(*;%tCv?ZJ`j(fAtc+6^%Su_>#C&Y1RW4V^CM6E4;Xof_@t z+KL*v3Y}NuuTBPZhLh~{&GapOCth1GTXJ>fd|OLm9rOZjoT6Y3|Vr zs`jWQnJlf{r;sJxJX^`{ zlhvYrXygiHa!ZFrvVrEnm(`W2Tod(u7fG1o^poaM^6&duG`%&Ow^1gN?Vr__+hfk@ z%r<}Zu6sAPJ?Aa>1gt7pAo!J3C*svN{BL~9L6!mQ6vLTmR86x@7>%diH>y8KU=?WIP&kSGPii@@zfB7 z7dade8@bWav)rOw3B@GvQDAl;rD&2Ux@f%US@2*GSI~CQmH4cfMM%m6`jFRQC1|@Q zA@4e_G`EV%8q{<|jd}B3QWBNOdU7^!+%4 z3j-A}Vi~gc6mHtzER8v$j80mOTixgpd$67%52x2AP4u5ZOIL&y&twfh-9G7HG*y>! z$T76=v`7!2&m(N?!x)@SJP{IL_VzwCQc@jC)61S6o9z%&G_EP*9_Dq>G05#PcuBLB zw#02d_`%Pq4x%d*C;YS}Uj*~Er&ivUu0;k!cuA~5Mld(!$W(yHBR_s4Dyd)jT) zQ*SO=^LLxv^`ovE_ z*vjt+Arsk!1bj)qlJFIO9N$THLTo>joCNv~=^a0D!xMwrb6uv=W3f+a+MZJh^t1FN zev~&hU8TYDKN8%ZxER(L^EuT!UPKc4vA7qFX=zs-juey^KGgW3nNZ@_U~!mqv|6%C zKB4+k?x(w^#LH*Jm0Gnva|wL|ecS5r>fQxdg(R9ShQqr4=D~NbFC(SM`+5AP=_XxW zTzb}CKP*f-WbI@P)lIWioSi-;U#^|DLz(HT@ttFvoo}Lbm$oUEw%b+eNbTSH&M&LK zUxMDiwvRnK_i|sQ#WQ*+t)j`O)NKFAH~-3h2WMfyIl$@j?dR3DE%7SxY%H0MDU5H6`OvI)N*0@-{~bOsBg)Qsz<^I{LsQM&1Oz&v@^f%c&%2{b|;D z{kZPOgpR3>z)(m!p9jzR&L)q=%o`V>^{BKne*bfXWwB++vv*j#_Pb$z9#=OiVcyam z^wIK)34-j;J)$~?4G_UYul2|f^5+cpu%;LTiN= zK6xiN)*h!_HXUBQKC`(kyD?R+^*$>{4aAwI`X<8LWZsjVp?J=%Z%NbGpY#jrR1p}$5;m8U0+{jO#Ds{7=u5x?c3Pt!`|ZSt;z{zA=4z+t5gKVDv47uFVCvD6?#xI^zB4zF0k77@JmkKPRSf36R=GlvmvsA6b` z05|dyZb=Y+Yl%}YY{~{tmhIt54jE z5#<*^N%7WPOV&bB5sn!+MuS6we+Y*R9Ki!mA$aot981AJhC}@IJpvqDm=zq-pKFwW z_xryX;CX+~?{~zw*Knx7Cw$-u`Hb+-)rg?ai2ocTa{%YyMAgJ)Wr24!Q)hE?dzV)Z zuH>qUbHEqqjxyRVaB#%*_fL3PRXP|zf5PgemaCSc0>7z)9h}>5__#uKczpmg1j_d)=KCqbH5uC9*!?Cc&M9&8?5Y!1$r>`(dl_}Do(**Q5`fh$;DJndbL zA*}W;w7-e`Lr22g#njo#(bdYqp8B4yv5AA5s~`={J){5p{g%@lV)b86_AYUGeF=fzNkvU0>>>_j=aa@G z#Eqe5z(r^N95)ba1c%;^NJKzKT1=30JlpP=vBMKaweMjxKeh)B%L+@k+IGp>i6%hff zF9`tFcb2UW?*)NFr^5x#A$cV>5&<;x@IS-CnU#p8?ggQXnYt%)Y6!QV4zMN-Gz*mu zM!_<>Jl;H9d9N(j;&&4i-*NL>YT)%PTqvqP%KgVhW$G*#M@C1A+<~!-qwFtYA_%ug zkHOdVj_mhbk%&MBBgQI<$vlc%6QvG3^>qK3whYi%i=$5N{w890Lnxktt7B&eO}F|V z)59K#K%t1C4fo~{!9&9Z5mH|3|5hbNqz@1{D}{0xpeAFBzy=i^iJinr_K^N10j@V- zymHF{7T{_#1%xQr=Z&63oS13`fOX(2TrGZw^e3rj>1^O4wD`H-1=`@}$yOqlo|utxZ}`ZfejDV)=XO1BG}%u@sI!9X{Av7QP` zOI96$hwo5nFi4vHCEz(7M^%ShcOwRO=LV9hwe(}7novAK)32eNT<_06!&(U}@1rwN z1OdLCHai2cGU;r8A)PA)m2(YrZ@F**g!$Mgtwf3JF774lq5|AdX|NE{&o_W$L1=X$ z($18O16ONZd1tL;=NP9f7Cds0}*rDcYQI=EYfM5% zucWj#U+s%OY(u3gxKxa*wz+dM4?VA23_8j-?{8SyDlCn&ovNshy0Ys$YD&5kd*Zrz zm^d}o4~$2-$cN+lSJymBDZGzd)^F+dTkZk}K5=Q**v+iA47Rb6pWc!?G>VqA-10NF)HV+Va%k+;=LYM!#wN=0?55s;#YSLNQ6Om*ocV+29jJv3AS)dO`1Ev2$VXSqu(FPIeE`DR%JNoX`TV^SI;w*8l zi{(V9F_hN1)X$o5QZ#sPjOR2>Mo=~GuPy&oLoqEozrqWNBuA}edGA`#ZiB5x*vt} zv#uE!HUq~li-iRg9((cf=8Pad;7M*xqN*IVpfqUIG>bkvMb#S=Ds7E^=mQJ~3Hn6^ zYSLaTRo9RlBIU?~!Q|Q=BF(Y)zE`KAC9dI_U!+i%HVuO3#Io8=zeSMsbrzeKEwxYI z4L&!NE!L^_IZ}nxNuT;Wy4WdF%dLqZJE|YX+rtP8&~y!PQ7Ssh3jL&6wBJ_hgMlN= zJo{@tpuxk$c^kFj&vP(J8s;xns9|TeH74Sp%&cCJ_acTzHD6V-_Y+q_kztF$$z$b@ zBbhhk?!q_Er29T%J#%}L;Ei?ik_Hdd;J&LWR_qtRj@sAVBk?0gaiyqo2>)EKNWVct z=o)5vaj~9`$cCd~iS6{mv8z?AYQ09+RuKCXo%r*t;MXiw}#XJkM81;eA2Oek<^KBc3HecD~UQ z@zh275NR*J=JAEXX3TQ&!km!Erb=j@VO%@ymW=lOWEF%P-ZS<#gSIgj#2)Fy>$l+T z&>bM>u{o;!)nor*8I^!Wk=7%R*%2}BTb}x;1$SL8&x=(O{i`xO_Opj7Pi>^>+A}SO z=Q*8Mu6|C*7E<|Ne|h#wMc7E#{d4SWiGEms>9DZy*u>_-3@qwnzPbo<5oJ7c>h{AE z>+yo@2V{pS@wDgGa$Dq$&$y)}NShU;qe1b3i0QG<=SiW=);p6=5k@)*$>3*NXezi& z(*^LP1s{V=?i!#(!0N%t5LlMl|3lt&XXY#&N-5Og;j_HvqD^t(a_yo76!6rxo>CLO}i_DthM4oiCJ}?V3OR@b8uIvwFOf3@Zs)eSkO7pu?(2o(! zk@LjNIJ791)UR0^R#Ic&)J98};ZcQnH}6#Nvz^X;70k(~baUEWmU@L?un+}7Gv6i> zf5WpS3dOs8-kS+5#-9=bXu$!k%05}S8zQL@umIcueL*SV7>;fvhSo~8CNH;@1^?Q< z1%GxAcTv|C>nHo%4V~gPSYie1+0Ir(Mh%r;YEAv}^5CUjhrF7IBj>Xph?r zdA!Xr6bR#{V;@R)PXb0i5)PbD-&uo&uWp4D!hT|MA0FH9V{7HY(3BxY&C!pZ(QT8sQb=k*B|9APjeA?Rs99}SQ~;s*uDLl&cK4`Sy5 zS3hk>+?D~R)ugc!eKigQ1ktCKL!}kYs}Fq#h{?ta^dGOM>B=T+-(2nUeB$0_w0jsD z!EK|VCU~*F;j(ilbg?2&Zy#kHw%D*|ZB6A|e0MT||4CT5_r*~~zjY7adR?mJ&BNuB zE&WaA4hPfQYh*UAbR)qw=rg?qpCi_jCsz$@M_nYDCuYGVsrj?vVcv>+#O*{Ni_Ug7 zhw*~dI7VfVw`Rda(=g5#llRF3xEbUGq|?0u(P6#=4Io7|mJe9z=_~jQt&K-R0tgkJ z`&5D0DA+!7>%p>9ud&FHpbs8H?TxEHN{<9$BvVSWfrjak*N+cO?|tP6SrLd?I>Y^nUtMP=@?9Q*qeE_PmNl%Hm!xfjcvSst%< z;6+E=B5C^r>!ubSj0p6F?c+xvPRf4q;`O6&r<^F#X5_L=+rqM+yL4ap_U53!CrvOJ z|3RQ&jU(yZPG$Mmjis)4`LKMf-Tn9JqM&FdDbJy_G>15OywcJ}=4i*paY@wn4t}he=hxenyOwAx4QPg>9^X1!0yV3^~ zyfS>7Ef)J2S~%ZQ+B@v5iQtATQMHCr_!N=f%N#Br_O|PbqB(Zbq9u~<<-o!p=@Bae zx%L-y2|Dnoj%z>>D_E!M6*Hf+84g@j_{*NKm30?mrSp@C1&X`qkF3ea5h>IQXA8;+ zgUNT}xz8NtC6cW_9hHZ)27VW{9$i6kYifP83wafBws#ZKc(v#KHEpeByiikSZ?=9g zr!osBBle;Zz95n9;|$l&xkVs42aVh_6Qvmb>H8zmZ(x z(&!qSb+WVSe-%?atr4O6dh&DIr(;dbRm6u{-*p7}GJRgv&nZQP)R! zqP=nS<7N>FGwMIL=kcf_EMAuQL>(r}UCtb*mAP&%h>BZyA2|!e1kAN|k7!+aBK@Rx zjNV%y%i>1*1H2yl$v@@pHh5l{BerX zVUs|1t)^5)AREkm9Ra*G*2M>}@X1d3yPekEznhN_?S7 zI@u>pUzq_zl)&KF9V^v1EG-5Og*^6@-G9QRCpjt>2MJm>zy>&@y9tz!<7*fECYs$g z$2Q?N=Nb}hsGif%E)r3ZUW6xjg7NLD5S3rI(^f1nx&S4)83>^lBl?(-67oO_Ldg75 z#J=g|^0V?cv}k7aq4)3DOO}$^^`HmcRQ`p%hqvF&sgK#jU^Ko*gLG{xp=~}At_&xJ zV6^C#Tb(DG`fic=aRxN_u?suPB?^qsuh*(%T%iZ^-n7}8r9x~JZJkLhKYFnSyn`;3 z6*6EPbhG^`?Vb}Q`l^LL%}X}ydA%=>^Sxen>f_haJTel1NIM%89etaI3jRDfV@YrC zh{iaJ1*XCP85!vPs)6%ZFa*_t<8I}BmM4GT2PXQH?TPUhMYw|)o3kz~ee?-0C$|0W zx`JUMO^rgBlh1w5IjrWdm5NXlNgvf6d`s5HON-$f3GH4R)cx?P7_SvMw%Evkkogg( zRw}=JB@G6SzsZ*n)S>gm;1`GI%Yyoh6ZvYo$nvDSmUW62+(cP5|9NQ?xcia_xW zEqj9RSMWp;6(}A~2I4S1AX|xm-Lx%t;Jnn__dtiUGnb6}V$-!ORjjUpv zg1aS22=x}e4_+hFm=6eMC|Y{g6T9!NEDwPOlG~4Dm$BZMH?4}Tnvl+S8zSmIzBX7S`x9@OLpMZ+9(gU@Ku>givH-amGi&E>htx-Y& zMZ-z?{-vXd)6YjW(N+yE!|G)JE^BIq^8vyEsc4^Wt^@%UA;|ce<5MUAVW{CdqDMmr zC?PbPOyC_@L!LaaDtz#lASimR;DkO6v(za&TB7f*)@7Ce z)SR*Kh-vPt{ZHBvpGR6ouk-qxW3r)q;Q@-Jf``-MsZR(&`2-+1KC>PU&)W+qwp!6x zfx3JX$v2swMcVpT^-$$jVo-TnM@Kk%X$)+}A=-;hM@An5=Wc=KEbe}g5`zwy`C*U< z*khfl@LAU%tQcJeHe*>d zhgOtcJhCy27Y$BxTE(>N><|dlFT0>@A6zd8n4WC(tc-Yg65DvOrYkxa!XfVpRGMR* zZ`9+z7p!r%C2?8SBsFBEFmJw;+x8Z8Tm5cxdQDE+_E>Grb^;wp*%Q3?WDUY^fU4CR z*~*0OL!K>1YWwuD-Qx@j7iwln}k&zc<&Q+uo>x1RV6??aJk0uBqMx{3)T=3N_?t+(z?udLnP%JbS(+f2Bd z&op?H&I>`#>kNolQx@D($N_EWaM=N5H3*D8(?aX9r-#7B!f;>L^}IsbK@r*l*$78F zo=@IV9;oIzZc*BUq97siZ!hi(U~&NYrB()@nAO96_Lj{|5<@*nfsd%YeRIF4P9QZd zA<|Njn&;_p*?E6^#QSmRO1atB^j!zbh?Ib%DIsWRc@^Ux&#D73+d9XT>9Td$tC5U1 z019z4CR%d8Y>1%H0&7aQ+PLX1EDdxf2aN@dc`5=4W`syUd&fGH-9odtqTXq+kn>M% z`fSnQeqU!Nl6#V7PY`M{J-sHtY1fJwgF)@I(-PVsfL;awoWnfhW@_vbvgI|mXh{qp zX}}8F%1Gkzi{Cd|I2T6KEu_laDg};0{`D-+3D&+@mKOw}(iuY9^8jrT>wA#+BlR%j zAISL~Txb|_aN)hqMtGlLWk!yGw|?R6s`3EDUXA1_bk7)o#%0DB`>%dC0c1!3FnKd5 zm4qI!G#p@m&Q@^~qTet*CpKW%h@&DcH9*lSdJ$-BO`|9GFZ?pT@n%Ah)0vFcqu=Ku6aWoqg#~{CWT-y^G)!a@%zv{p;|I8X+KWAU4M^Ee z2hd=6Y(e|mIf0HqXoZNs@w|^$+Ixx5$2^DcT_u9>loq&@tLjN2Krt9-YV<7P#Ek!T zYB)PU^56ulMGhF{{9Y{K;UMlm27?36p~G-JG4E;IpCc%G^5M5~m4K6bij>pN?h6Ns zz-I&?Mx_*)5;m~XuMUC;0$Cbh#Mk~IjeysmAptN?T+Z1;E~x02*qq^5lHWpy695dH z4ym=U0OsN7ojTzX`Va^*Y7Gv64uxS;#nMVg_dY$rx#GRWJ8%eOytnv&9wKki6AvPb z07%LGgkAd7769K*0}f5-MKTz`jX}$K_@sBc!qlkP6d25$9ACvTivlbMDSzAJ&nqrB z!k6h;Tv|RCiv&GB7a1OUsU1Q)_&94Ql!zj4C#~s@X~gM!{&RaekCGJG=b3vH>lDHz zQi6H>6jFNkCJG$G=PjAfM?P9tw0qjTzCQ)vSvlpbWe$>c?|+*~5{a6o!eWp{Ml!C@() zh!I{Z>I--jM>%5{F@)$i!thQTFypCeoAl4!ST!aaZsMzp6VQYOZ`xm76QGvD4t(_% z0Ax471RsGVTLj@i4sO@&-0O2w)QH^!YLSSQ{sj5m=#o3>&h`!#nzBfYz1eEbci0h* zgim5Lv8i4}t?WE{H?csvEeV9gB2va9p~w9A*V64XznuL}gooQCjZ2zmm9yM1I^fko z>~qc0yl{L*ce%|TX^Hj@Wmltx(^PMyoR_$i$khDURO&($-Mg1ge@0UzdX|)rifh(E z$I|NkxTMBLGaF1&7f9L{WD;5=P^C7sx9eIVBA?%NETF1^!QNsMVmp;0{6Y(Tu&{Dt##P7AU5~ZeJ0=iSIX%9+8f2k`Aw}hy)Ch&oqpeTt0BTo9l$EfAG zB(qREKB!FsRf>;eI?z=oHmGk*?v=r+FU{{}lPd%6oAb{bGV5Vo{r7`ZgaS8UD*oY) zpD@0mpaH9YMWdTmV=2A|+ zz?8nEUWo?IOpwSD5mju27aa?@F_Uugn{arv-HgY!N`2Q`Vw2+nh1=zoU4Uh$aG=V) zBDd*OHZs37lZ6XH7%8dQoh;7OBkJ+*o9JNSX`E@>B8vrDjfnlh%=7zczNp7f!Yv|kYAsSC-^9i9jT(Y(Fe3zFY zs7S9UCjCF_PG#r~;;mPk&}!Z1`{-x*?e~r!+E~ zUwzI^QR)U~X6X=?ke`Fe0%4~IfV}zmpqh>L=MRDS9d;RAXKP~_d z^cCZgDgFW4Y$$!}+@c0of7t~mxaKMhN1-r8IRW~p_z2u#{;m4E)KVbS* zjQz8y%1|GmkwRkyEH!#_+RKyiaL!#4{ZI8#kB-ndsw+anw7cp~!k#SuLm^0;Lab~J<_9;}i-i|0RfsYA;ugazb}?=_*ihQ6|1^WIzYEibb9V6W}jdPK>7%oR3)r`<}q-yHOsIyWPM#3 zdf)xr;hDS8^Bwa~V9zABtx+9rvqiP0%ok7k|JJsSZjlJYkj3^<<|*01{eZ0^1QlwO z#-eCG$KDpzdwGIDb}>|_S|tN5JCsh!m!A+iT%B~ftn$(vi^ZAuW*wzT1a=|(qX}@p z`2a`3(<|Y`vY3ZG2CIIHw7gFS|9Jq-ek*41K*XxWr+HeCozDED z`(`g!zQatjIMAS?r}F3jc0zY`y2-FRQ{%e(?i)&|^s~nm4}N7XzXlnQuZp!QLs}dA zB&y#Qmn=vT33e1DC(Kp>d;D&OrR1$|P2EPkoB_HG$S64VrK@wqtcTMBg%6Ou>E8@IWQ zU1iabJ21)ZuV2@|Pa$E>mVi+3I*MqN7_i)3R~ldtJ)yQtRhN@X^UP^|I?rx5RiPe5 zDV&3|+Ml4DzMSCDJ*4jpGm3-jL=--Xz=xk25G*llc@ae+M6+(FqAeE>=Ax$Z_>Zmb z4+5y*F>r>%QK{#qDuS<%kHCX0A7JPEEjOdJca?`-2@6PNp)QwYZOXFQZ&wkcjHQ95 zRi^ktL^9CHZYe+xtK|qsN(|Qbx1-gZT@IGZdRd}6)9ZK8rEb2nP6afxk%KZcQVY!+ zIJw1x4Ev9%nt8%boVTj9IgJ)o=u3WnJxzDlc~Rdmo_gq*>#Yw|JxeJ6btWL-V<5i* zK@YClg;#%C6sJ&in%{litQRl${Mzx7Cx)q=vU`cq?C3TV0e zuJGtpuVuVyJB=1w3X|PjXfY0FAXn-!Xiv2!503ecUc%GQO0pTXd!!w(k``;)Ji0CKFhpcQ*L=iN1(k` zxiN$mtO8P~pQk#>r$*3>-bKZUOmj?`i%St@>;$dF{Fl z_9mP&E|YfaP8dAk2ojn_@EukOvI8pUtl zNB_wa|JZmDC~%!y3-E*wZ6#<<=jp2|V3e9?n)?2;?6QB}rji zZn>2xO}+z~O1Px&?hKgK3sW4F+*s|5N2(4KIrYY;luVm1H9)(kA(h+7?85lx>C|l= zD_@2LQ%nv0pUO2NWL#!rQQqN1KwNhZ1I8K-o%wE#e;j+lL<7b73H}Pn5E{UCs1)5S z8oV=Pcx9r+dYr;}!(x>JGkuL0E!#Ve-_knUcB;VUf+$(Zbo=x>;O#k z#%8Hb?Us6t#y}XalFDQ&sc@^GviA9DWRUrx(?1)oe%p-t-m6b3+a+Er#wVWd)=CbQ zE-m9o$;|O5@Xws~U671BJv=Mt_f*`jgoWf-C#0apyQ;R9e*}H z{MnG{iifNFZf$rplQdzhX_|?cL4%|EFz4p#tbguqo33R*cTsS~_Ut8t5#_$!wyg^Q z%>8S+ZUkyRC8_ElDx`sr3hgrA&Ip=gQuv$`^@lj=+dH z+UN{mjUqkP$Pz(%=6U}!ZtZI8$YX!6GBx})W^|r2w2-L}OkAtWBc@1S+-^pX#M9y| z6cMETt`D85{^c5xHK0l~4*hW=1=$+Ud^bA*-3u_3T%MWX&7_4DZj7+H)@c)}0QgIZ zb2}ag&GemPjSMbwY11+wb{=k=l059-a%SeAl`FcFlH0m%(Ly0MFWdim5>>S*cj zIKD#ZBu10C)=9`t4qknFx;@tUR?|@5aNh4G)bXv+ubo$amcc*;poZ_j2chNb77nSG zq_-(oG9sUIOb)FkO5hOe5j|09bp!F>&J{!?>4QD?X5qVSp-x?^)vFz`rKl_A(i%Do zZVh0;&$TQ#KEhjio=uhPz@)4cdfwEc7UvM=(%wsS?%vwn!EQI*C>a^?AeM2QE_9x3 zP@v#YVZ+E#3wHFfg{Ch0FQ05Ik96XL&IKbNSH5J&JC5tQPCu|FdJ5T7Ic3`eFOEo< z(__?VAGui@(hLjDb-xLycH4IMJPVFqt)5sI$;9LkKa}$GD)Kh8{N@s2F_6kFyNZ_( zP`-{K3i1}hurzFYv7c!FK1EY-w> zOX9xe=x+%mAYYs0zi<1)7TW^8`5JQTd~e=my2DF3o-IqL<|xN(4M&jDQt+}|k>(VM z5$dA`FV_9OkXi=Ecy z(WRjrzb?mr#}}|M89+*x0vC|3nHLR>pY7H{ ze21}oRFf7wnK=nh+h#W+pD)ChFDS$S8HI7edup`l8mmWkI&*kcqPIISB&#QQ`+Vyn zi>-#8N&rmpu}$1Sweo|qI}%Eicn|n&;63MAuAy6<-j4jxEP9UG^Z8Ko6Pz@veuhGQvMZk)C2@QFLN}?eTF#7b-sv=Sq#Rh zzb({mGIn1**@iXTMx{1XX_H7%eUAa)WeB3*)hT6#Uk5|JN^{D}aQbj*UCdSEdw8W} zuts0HKHCc4sVG`87WwnO+Z)tu+fS;Z$nn0|6MxXO-*e9|Xs&l3&O%qc&=5LnS0U$P~N(x%LTgZD*W)$_L-2PIN0r zH&e!Awt-e$!F~sgQ{H^e!e2%ApMZ@q0_HsYoxsaEY>My6wO_mW##W(GquMv7e|xZs z27uT!vVI)!8~Oq)- z{{N-_4_E;Ac{}ZzM<3=te)_XAWeEhPOi2QpG8wchE#jYOSMbUgEvL(#ew_+4|46_* zC9tDdlf0vka_qgaa<^M?9nF0Ww19(S&;RQgX0R@%& z&g7#|45GtGYsq!zThhOV9kmmB)*F~sy>oVvPPH5+Hd^#M_GYa{s4Ei~|4jOuz#n+` zPjQuqiGzks%Rit8!lfE7P3zWuSpNr=C`Xr2gaDi8rp$HC zL!=`ga#M^LBZXS!PWw3#5kC=m_ z+B;(Y2Ug%@49xrG8hn!uIt(1~Ao;%nwI>A$0Iz{)acVzzg#)&_uU(5Cl>8Mgt?7AExwIDprGCG+*Z$Y2F>pwuijaYHVZ$1S1)$m* z|49l2*WyH{?%%)z^*#5ojV|!kRISE z0M)+r`cSHlEAR`9J)CzQzkd_)kKuXlRVK9U3`>V`&{FcEjEF*wg)#mINm;@V{|bX+ z4#yeLv&Rp4&C1W20ZXiO3w$!&^z!G9E_(y^{?A$sUdu;J2`yDGSzl^zrTA_64f;xd z-FXg^1oq!MwpvY9n7{v_#6m+q{Dh4}ollurlbI@p5zpOrwo1~#a~aW>CDNf;iY?#s z#n-u?(Jt$~=Wl-al%_v-0P!6~EIDgza;?7QuclK@n{B@MgWvyN85arfM*yK=oue_6 zp-_Hcqw}hqodI&2@vU)HCa|YfwQ7>=E6>4}9(LQo;A^IeWmt*Yn9t9*Yfqlkez5+) z41Xw73-3kPlM9(BaWe!> zoQPx&?x}4{0O8(y<(@g#wDZAVt%C6>;-8@zB5E{}F2B;D{H^b9dX{ZnqXhRG8BK6l z3lpEqTFekm4JM2K6RzFqCh0WF)7Q`H4ms;j3s_7&^YcF3%w<_|`U1sC(Se(@Rk3wG z+Y#_HhQkH_t8Ak-gpvvaAG@sk4)|ALuTnyR;=FCG42Mnyh=>s|{DJvot&dK&nv5N|ROvo)O?=S6ZV)OB6+=D=CujxnyK1=?l5EcV-qrJZXbfirc`+#b30+)P1T~;pRKDQH zepY3}rp^w2K4mguu`zqY#H3mmbG&^cQ*mLM3I%qZ_NomxWrRrES$S<&mpAJb^xs|g z@0+bfxAfR4mLzy37$y}Qy6?Z7Ov9$Z{|J;*sX5)ujCr~z5nr+_zNr?>AJU3&2k`qv(hilqShc+ zaYjug#HEk<18tMUq_@+;$tLZi z(St`DIh|bFo)Lj8(|v0|o2@EFV9aPx3y$p1T-tg|wDf4pLN|G~t$S{TW(lB46#vZN=v0famj&CRP z+_8}J*vE>6V#r)LTcT6UD^?8mCNoC2UOXIz%$%m)=fQS1Z@+Y|?2ztyV@`AsN+xe{s#w3l;C9Ae#K_vx$LD9BZ)wE2NQphfQ-)jz&DXKrMf5Ym z7`Ob#C-5i7Gfpq{$uq&E55IA-Y1UNj@AvQP?fqWM(W2qze?S(Jp4kk6FT7?~VsbRX zuqipGPAa_9*Hz7|Lv8L(&YW-3q}hD{)G*5^@VcbJshGZBL-x}sy*l+5u@cistwytY zd)*Iwg;_#t+|@ywyi(?iS5A9;L}Gqi2ZP$x7O503X@xn=r9={pQoT2PuB5f8i*##W z45_pk4!v+2-m}8|Tzt5`WR8G|j1=B>=Gaxh{dE9ySXdgSIR9l}dLrK)vn1gzi;8tC z!pn$iS^_PkQtBehLX9$#B=2aTcCz(cdfa%uWUj(z^&wErTi!H1PwiY!*OaY&@jXXu z26@fJZvi^zecHDmudzWhEL>|65FK7m3|SwD6=&9X%xHvFgG%&nlwN+r*U!A;rBA-s z>pau^ILnPIx&Ekrpq)&*8USkzj<$s2MUG$}1&6zi-6NAeUDlqPCub-0i?2=>n~Dcl zS87B3dmE^HN@{iIJqz{Rd%K37R+^;y_eW}OekQ+WKWY-o6hFDmKH# zl9BK&ERFIzWg-96dMm@BExm%!rE3uvzR_VkxH6>5dS0sqJRsyv_6F99dH93`D#=2D=DW zo|dMp*iGF7rx8=a{SymH*pM`cXRZB+gs{W=gx}dh;0B&Zh@{W9SR@2e`m^b*@+%?- zJ{68@gy3`AkZs*)XQ)x+evRy_x@gF{sg>W1qH3+XVx=zoNR4-$jeog-q~aBv5a{A) zJ>H=ud5IsDGUY7ai0@nJIK}l=vMfR+qX0B{s`^N8&UzZQ@Az8vee9J-Yhy4w=4a?w=##JxTd;K0PM zLFMP=B$n99Kpq_}PE#r(PEZaqi7p0fyV5~Lt1f9m+1wWU zF0wL-Zudp{Wz$Yia-C%rLDMcCc=;9YkC_Ranly%X#301Gh(!+hXQ1W5?&V0L^qwF} zf0SjSk=rdv_771+x*@(wyzPkYfi3JhMg9MWv9k=TqU+nflz?>iCMA_l*>p>Hmq<%U zZfeur($XPPf`EW@O1B{0-J5QBN4>85dG6=a`;B9B%*>jZHEY)TpTF}Q$q9xi^i+Ji z6@Q|Dm;8gSqt%#WZ$4a`@y_KYL*Ac3@5JnUcZZ0|Vbc|!choIS81EawXA$6u%4n^- ziwDQ4P8<+K44w4kBP;F{*@FS4wgb8m_^4#dT%j_+@V4Zs>&CD2@(ZCToct|gPlg#z zM<4IhQCl;Hj968Yv!_V%+clp1E0}7%c&-T7(Pm~}o!>8n9<>TC=i|H(x%{hz1u0W~ z2?`}?mO=Q|ADm>q)NInf7*YP#KD?TyOgTcje>PN#<_lzFg zhAI*ho?!VM{}psypUFgQ ze(m}|!+?w5(SNRLAy@mXM_|)D@LZ)(i_+(!#w|-i_>6nr(auMx4pscu{nbzJ&nbws z@X8|Bsq*N{8IEd<0MUx@%eYvUb`xt+@FvJ~TzD62zTh>%h!$J6o@WsJ*5JK|zq<1J zG1<%ZhtHbaaW8GI@QYRNU(JeP6zci18B#m6UZ&B?zFL@)X3kE)Z_%^V0y2%tj?_EP z<9IJjF;iJIC}34HCr57nFOSDJN?qKdyuaD{G#c?euH4x-XTLwh$+sn7NlfaLiPat6qw%O?6S)VOa4`p` zzPA#vAtCv+@2*Eq74<>HD`T>*CcL$;*e{DOR7P3?YjjA!Uqgo-UKlkUu%Hm2kU5^$ z4rHK7y?;*a-E1gRC|+|^}Y zlE*sDMA(7QjAwUfvuYb?Rc`mlVMb|W6e~QxIJq3kNX&nwDdRmY#8{Z&7=)~l0^=0x zh%DJMyF|Xroo+sJa|o?h;+NNlv7S4%YgvZ^5N3ISpc#pM7>)P zvZUcK(Y43QECip{^TMpKxL{6W;=7Yta5ba#G`?-j$d%1-_~3ym`qi`u_nJnr7KY-= zO5QLE3(5azEN<8~#@6n>*5}W*Ex}W&t-6|<#zICP)4~1{cQsq0Y{q)-f@0iP1y>nG zG7L*FE!TOU>{Zcc(oasvxNQ#@{c?x8Jl`T+yb{RP`v=&@_BKUM)jEYt^19?F-<=qR z3jNP37FU*KrSk30YmfVbSQj#kqubZJb0JUfKh>~~Z%S;It1*M`q$d^AHoa^Wd`vdr zL_!JrJK#|tFdREVumaxe^*~Rf-+7<%G}M7^#h?GwI==Zby%mHDa$k5KInna1A#*{O zFVAE<$0$Zhmad~SO1jNpceeDNL64hOEVUDZ1_gC#8!(eU>k8&0F~+;S6@jjD+X)3W zu`35!Yeq-1;k&Sgoba3{XMQ{YmZoM#=FG|QK{DV}y_HyyZvp*=8gJka4P|c6d>kYi zoil$cG%R$9H~gISZy!?QM=C5Ag(>q1h-=z}#B1h6&H(-NmePmml<>v4)Ej#3Y4w{= zd=qH+OrNNch9a@eO%S)ven!60{Pd!~r78zXh^_od6aULPuJqGoTQ~-XCMpHBH9t=4 z6NToT9@2O&lcVsrbJn{QyCSCnUA6A11h=Er{vgb-$qV6Tv0i6!)O?&HXn^LDt;u4l zuE;}4Z2BWrZ3&~8d*w~^n-9!?l~(_0Y~Tj?&vt?>V>q=R>{i||SUqc*tfe#t#@b zbwM#|Uw+i+!>y#B?gf2>pxlm~5N4v7H*77uYHo+~6wK+un+#ybwkUoR3OtPV8BEj_ zBxDSqA*Nd#^QC7D0tqlaI)ixs>z0+5@qj?pq%?ANAt zg{p(QF`d|w-bv8hrOcDO zy5>sd9HfM=#rXk0yhR^O3yvD18TJ=fW~FB3%NV9nEG7WKVj)h;k?>1|3G7br`s!Z0 z=w~2mBw&$&L&EpIgh^Z=Bqf<#z`2)nL*$LOFFX1|tFmQ^9FankNrR;te_4rkRgs@>J}NhQVGruNhQ03uK9H9V+i!_X1T6 zre&{)Tgb@{kxP2Vp+dAIgenN;Nsvrw;o>GfV+iuqJ1MqAFpk&xT!b16F!@>R!W2a= z(gdI)FYduFG|^VUd!&?D+_=bRI{}6`&-Ec!_oJ%QIy^XIiPj>!P6>FR)Sk|mQS36# z%~+Bi(~!XLW9=U}9^2m^W#Dao3NUNmbx79}%BRs>7ZGTu9uBv7{RPHe`?(0O3x3tX zi^2ArV)0!NvQclRF;x3k`5gAyFRJ;rIelIw_A+V(Y(cOdYMxCYXDcb6X~~+ELu|L? z9>4(qp3HCx{=T$JiXZ9mTC#HmF~&Tsa7hcSrt{lvI)3Eag^sy6s1U4+brMrw1)^f{ zySl5NI!?#z6>^PVnZ2P|x3>Y|N@|OTCLgfd=}behVS!zjzvi+yXi@lEjgN*s%b9;_ z$rZz%5J^G;?e>Bk8tMwj?|&xzH$}P^)q9r%-!EZAKx_ zUAAfm!t#smE|MuoKwfPCI;UIb!cl09ZQEH7|2vOImG|>^Pb#x;SNu;EMo@ko1kHd$ zn_z{D8&l3EQzEG_z==;Cq0*yMF!2maf7#T{qbaNzwR75$P~rp+ga&<7Z+`b7Pi-YQ zna#n7XJA)PjDKl-7s)8so5ar3ytV7Vc6wwM^s(lYt}bTjnP*lMZF=TXdFzrx-|%0P zJC%PgYHGLJ3&k(&oUx+Mu`#fbVUvhA4ci+zI`MSg?3DTwtxP(TV8ggqMBS7Rph6@Td) z1dq$iRywC-DWeHf6$x%mO@G@l7V@XuHCGlindJjkJt#|9&de^DYakq?caw|`Jg6Fi8u~t(c}rU>D~I8%S#-M1;K1KY zzg}7b2#K&jeCjHxixP_^q9WPWOzF zTytly>FB)cRpo_lE1zxC{ZQgk8p~q<1y#q(L8GNkL&L#96Xo!B=8u{rRelW{HlD-E z-eb$NW|S{ca`baZeAMZYFV?<9Hnt3DpmwoRAXkL3OY(4I0J22*or0X{`* zUsD#{q|xt!LU&Nbq5LuJs=^=M#`>)UN68W|wjmNnWEBn8V=H!bS@TW#y<~d#`dELr zd~o%(hehQ5$(~$4E8mU--6tsfrrtlGDI%^c+KPW^o`h}GNsV7VA8DKHmC>^Pyh89{ z-B9YN2YSN6QsT5|KG_lqVvDuY0MCt}L#Q#I-7_GhA?v)o$M}`Ay4ZIO)lEb8ky;sE z#{-e1ohd6G{qF~~sQv-hg-v3HqY&x(f#ix`t};F*N*czBf+qAU5^06302&ZbOjQ(- z?JRI%r#>dodJAnZla9Vn!r-~4y3@Cl{to(ZOd>b?YLa7*0UU=6Zlw^B3XlHe3B}#- z-?KHc@>t}-X_%qRci)7zmcEx$yX^fI#xGI;tHpMqq<4XaOAaaU z;4tQApRo9y65#H0kQIMzM0&QKGHE--guHS+jE2->_8hFjyXo3iG>~SQQSQ6!dsjbk zEGJq4N8ffVT~O88DXuYJ64VJ$uddrBiPqyl9b?pY(1NTwfTn9vjAuPuguciJ9c8Jpq7uk*3;Q)?NX^gyg$Ho|tgq5JcMY@*`%_r*jT=nD zoD$?O5QB)#1J+2%#~$WdjgyN=jEA;~`UA322CEb}F@2|{n{A6?p9(Xw@98zY4F-s{ zsd{9=pd5khf66>jGEXo(xbr$W%%v?s8@w!GfT=Dhb&Nwdhc`(QAh%;9xWe4zkM z2~S?~z?N*Btm7NMxk@rWN*A~#x;6->(vLC;dJ@$n%yQvjL2>D)J3PjE;`WdRhRUZ_ ztdK$rC!p7~GnP8JhS+kMH1*P7oA5#Hy&3aZ)uj%+3h@-7?!kko*)jUBc|N@Qtc{h% zHqmZ{f;Ekg>2v(@v)FcX7Rh1PgANMTo#_e|r%nLz?&LXi33Y1}yN3=8VM+^nT5%v7 zd{4~daeF_4n0q1q9Gz$>zoXX^NvX(ruo4))63yP&r*k&Tqr1MLhs@Vy!`e`OJ>g*~ zU05?qfs6MuwK}WS;3xSxCmeI`TW3F|ItY7@l603Bzw#pphg0$gN|Jp`ZagGEJ*a=g z>>tS>P8H<}H8x7^5>mzxER(8?1pjvI@Kcq=lIM&oKNHwyB_p`N;9*>?MrA_-6;nMJ zIH5$O+qN-dD1)OBFKRQ6_QaRxM8+=uO*s~=k|$hn0nK#eU2$q}Y=Ws3B;!OC?5D+N zQFCV<6&tk|fOfSeHm|2v;$=`vqoi3T;nf=lq+yA}JjgbQlO-jH&tYUYXDkDaY@{6s z<}?w+(tLxA_!p)+c+Ms!SEMms*fzC_FHTZ}q(v0UKgbhfhIXbISKwJl-ivbtHbpU|3}R?H)xbHkkq(CAJTC`o|*;cCPTLRaqQ(Qc$1~p-geJN+qqx{V(D3HM}%rz1K}#-!LZ{p&C-% z)nG^OP%)P>oabqUX92>x?f#wx2H@y*l23G@6wPQ#7XbOlVm^@gflD5LY9*ZS-F%*6 zWfYgNg;j-0%e&XCKb-%E)T7!&1PlqoM%GGD7CkZ5*7 z6Xn?E4?2CHVR-n$I%m`7Sm}_cxwM+@e^lczOgLI_Rllm8jd>6NW4l~c;s4J+|H!*i zZ78umUT%%v;HW1Y@(5^i&~RZ8RO9~uZnC0)FKij>uP5a{Fd}e@fI~J_q|UZ0uuzLb zX5_!|4AD)%6c+E1#dGx67549TJ)J5^@2w}y8p3q{O309NCSqq zh0)WF|NQd%k2nvY>%7gf91;Y4ga4yb`@8(^3HI9_rvK|lz+wgl03yzj>dnmm((6SV zep>+f&YIZ&3uypS1pwS*OZQaizZTsGDd^oyYC|$z>_JL z^z(b36#=Z4;%_(Gs?+bJG-NE$2e60J=kMrQf4n!pTaN7uw57wF-no`FPO34b|D(^I z`P9n7O<9Kknq2+er%yJy{c2lhyQazO*>-D%FHic(D7ORu(Wc{lyAfw@A7qUC$IV%u z10?cz=^R3fJI~F)@yTt+j}JmJZXS6(5+7*2+?KpathZWx9(TNy>@vsrvpH@pbb8daUuG-8#ciJ8`?fb}6n)p)vb&6`8 z+tAnk=_d11g*0KAiRJBZo&egw%TJ`A zbo|QhEd$Yk_lQsQUU@kKpV1W6`Z?!KJCTu(vR1iXsl)I3mbZgtmmuXpc4W$qnZ(nJ zL_iI^-W)&?d|YTSl#V5-KoU<;dX(2pqQ+kIJW|(f@YWo4vTrEQHSju55{q4H3p)Bd z;GR&3Jmfs{oJc-$&f%9hjZUG+qaL$E^qm44QY#nn)oWyPK%v~ z?Pj(8Z+REFLB_Ek0d(`K7d4&GlU=c+;W{)+q0B5C*$FnPn)wBQm=rF)>p~mcG87g# z`SNbKU#RMTOlfAybB;^vpvBhB1K!BPg6_VrmrSm!2V`x6kRRNhVnQ`*?;3~Tw8|B% znN;&qNtvc;_W0g8T`YP2oOIF*Y#6R>J{f2V=G;xF$S|yT+DJTQ)=tb6bRU>?CCj+S zZo}??qUM=(HD>dNo@@-TBu(@p?tZ^I+R%HuLe&qo5WUQy)gr$CSZ5Nit^{O$6*Q6V z=+y60w#y6@^nebjHu{r!)Bns-MLY1?tWKsKT2s7cc~VMcbwSRqi&S$W9r~rZu%2&D0VeXtl7?@PS53{Ys4aaYl3SlVl zjL-8r@sn_m0rq4&Q%?<&@y7Jm!;M#36A)_`XX5!wH#+OLm?}_42D9p=T`>2&FD57g!8mgig5MI+hD!^k4j!pqWC3OL>Vb#vdCu^cK)qb#{C%pS(2a^01Dp1r z9yW&3HsP{xQ-E23&_88&lBipyowhxDBz+|Gc(-@d(20DjUH%{gz1iRs_+o|g42!J@ zSX>XMvi!8XryH_wR$?u2G9tD_9I1LO6uDB-#4=^9&L#?JI(@KO=nHkw18|E#q7QyD zj9_mN^I)lTIcUw9?#|F|#GWvIh5#^A>pzPXrC+00N|H;k+(qD98kH@#c99Y-Ofm8` zzSb}Mb(`&VbNqxd^3#A;9}BJUXwPwnL9bRxuXa8Q%>8xOO47iFt|;H0Ow7R5;lGA}&vaV-?(jiyvg6(|j4Sb*N#XfuYLF{% z)L+7&bBlY5^~xKp|0UhlxF|Xi1?$Y9lgZ~c#?a|(n`5$5Rp)i`3!I69=hNq7)lKhz zw!$+2SLJj75d2f%kxq~YKwlqWE1msameu?7HTsuT_-s%;QL`y8wbwpiY>%C6SF)t= zMQTH3ZgEAn#!FJ@oK^3tuzP9N#ohJEjw)R0MNs-^LaX@z?-2PEtKn``&Q$2kc;#Bp zS+&0hKJGra(dBhj<4`hBx}=j`#^c5mp84!x_E%;skx{L5-W`m+){2%iy6qaV6E0;^ zk@p`JGQbj)SoB7tffp;E&0Mo=G)Gb{+?R5vhJ0ZIkh9~@=N3C^mi=q7iBHy!#h*4lN$mkrVm3SvjT+|tqOce#A}MXE`!QndI&|4beIgJ_=oG>}B* zw*HmjadQ5>k6H$dS$ve6*>LH>DpjcU{ld6kfskHwJ5k&(E+DJ+NqLQ=t5Fh@;rQik z4W!TM-j0X%*hsy!+3Rvgl_bh7+e-=Qo}zBgzG6+k`8ATVSYqchAUCUQ-16!DV#noi z_Bok(rVS+!;`d%aW>Tn;feNEV4n`&fFfsz_8)A*-{~-`=X%1Bmid{>7qEAV{$mk|W z&fA1j@$(mIq^~zD)HCe?00DdYhmuu(j?lM%=!1pfwmQNcZ=Mq@d3YU!wl_}z{6Lk; z{b+{8mrXa`Ww@RI!CUeS?ws-ue}HTPXB!2f(0K8>w3aHM>MAMP4f_?9stjU4yU(>Q zPpYk?m)yzNPd1~E{O(3= zrdM|JKQENFo||*J9NoWbJLTy4+BL9sy>&C)xITAO$WKXeWeGvbv9k%@wv67LdY>7K zk^WMerYWDKqD7#8W%@kc%LSjsfx6bpPlxns-E8s28-*{9l!3?>D3HFj4Z-zbzH<*p z=BAyS5IA$uCef~CcR_aD(alENJzIIK&!guJ06UwXVfvMw$)M~ek=N_QPH42>n( znkszIDB{N!9o%!$?yr8i9C*hj0u;u~r<5z!mg~dMaAHa-f58JpB>~6foELX%4$iVm zXeW7wr$4muH173_Z;OgzM>6gsy&ops$2ZFhIcuaBsC%*pE_R%r1CKDD)Mt92wD!jtii;#G4#S1p9;?L@2$j>{6Sk{+a5!g?lh7c##c(ztny0h9nLS0c$Cohc|UE*QmJ+jDyDRBV;RhK@V-`!|r zKu7Xew+bC-7|pV>&=HhoM-hcvRm#wp@Ae24GmP+1gurG|H&oZCqy1SZw|m@jWWpbIqm!= z(64Qgf2dLBtc!8q$PSd`WaB88MqcXI$qhvUo}?(14uq}Ta>rM#umI=8jV_~WkHw<~ z3A}tpA<$k?UiiiYMN-k$GlF_N97fZUcQi@jh&k%h$`H{zA+9sm`-NZo@d<>c;%ikE#$zn{?-3KR!u#ebTi=XFZ_ckZweK%lSS@*%lykD#@*FO(~DF z=7KtTzF6k=1|-Nh9;&oO8*c$b)|+F-XA@}|48xZ%f)V$etF^Lg#ioo`MewN$23iEPI>_p@oYW| zu4DY_4Y4MCh*NYa00;owGdB%JV`&-xfHh7ds4VvD<^~aL>{-kgSz4+BaVDg$4vmC1 zkg6co(-dQ(XLqb|O+pgeeIn5P?@(3oAgWyC4#}GSk1uWgbPa$UEc0cO<`PfIC{h1D zqL84v5>tKjT$=Wl%dyahEkUp?B2E@Xkj&S&dG^cv(zH#Tzlf84)un1UX)TtK;ocjd zQZ;oc*py_Pu|L~VtTht|2^!;COEKxc)EN=G!9FB#ZeaftP-8(AM+iux8q2p~I7ou+ z$XNbjum!2t#jv(|ZN4T0`}$+%vR9}vu;0waLoMd^PpKn5C@V@9JQr1h34931E9xvC zpc(RC2HvAkM0u1ch<_%5Pa#)ZinY}A!{@%TTRHx^`>nKK_T^$?1`LLlc(PbDqKTc@ zT2PM5Ka_MHB$w+A1|*ADveX}6F`_-IFuMix{J8jj@r@VetG}8Dnm2LZ1j*2vQ;+HB zHl%)24u%~R&r-M{f35_Z^WYymFACprmA;MVW0k84 zR4xy43<_OPk??@}@?Uk57D1Z|RU^7H+)rw*TkngZZN}Toxt~Ful~&vz-#(Z`lMs34 z9mGFLjFx^pNwRe{!-*CXq_*IBSdK=GHeTZeBDqAe{O=nZcC9aikZmRBa`mW{+7LVr zf>J=hU0)Qj+3$=zwByl6!u2#RSIIrzNAyJr!$VCHs#Pt~#zw#S65)3i4YLjNK`owtcj%)Rb>a*VCa(1k(0RtvKYJXoPHf zbWLxMfvwO}Oe~Dshu5IL7wNsdzgZMNEYA*(_LqY(wv$DqCV95Rh0+kjy|>(iNP*dh zxnwPc@fg%&($NJ(nh&MWK9q2iB`j~+)1vFvs6POMXq3{`^HarBu9|1R+QWHOwI>CV zTSbLAR#DAmXuwfC2!r#KO?5TKlP*Co60Or!$W}OteCwVV;~~1Y7ll^7V{g}6PJnM! z)GxX=VwVq=+; z2q(ivcV^SJ)k(*FMR~xX63Nc(7Z@D;Lq2~ghbU9^FQ;xnw)+At>PaV#$L`Jm#M zVyu=lm^1qUeyV0WDw!5iEgL<(b`X;~yRVFTi|$8<`l(m#%-!PMMER|{z=1X}MxiDUm!M*j ziEE!OO_Uh%$Os0*R%a&q(T8&Tp}eP?T7%eRwWg$RSseEzAZm=p+=R`;L;N87j^5r6 z<}5XRIHZlQL;3q86+1AmgxlT@C;>CKTdW~glYB71E{arEDBpH!Ga4mLq3J<@$ zIEmy!$`B^lE|mUO7=Jnhb)MEHb&iDU8eq{fGqTuJ+h1gw(bF6CdDT~@OSji@AGkVb6G=Q7S5_>|-;{?k#(jl;eM#_J z?Rt1|_1Z}7lt#VGRzP2h|MuM=|ADggi60-0%MB7PJ4IV9Ow`|sY)Gp`5RK^mAT>At zOPJfIh4$?R2tFTh(b?B#>gNv^>OyD1bvb;BlFuu?i_&5@_sBvY$ZkZ5A7@VG=u(78 zJ30lQnU-6lJ*|MX$)n+9#E~-3{h;qZW7OefV<+#~FL5la#tX?=(hy=PBw7*3%G1vpMwQ^AQ*KJf?B4hcFDvbR2dkAGet z@VM+tg({~Ih=bsB)h|uvR9DEGcpOSY^w<&MW!pp%6nK=FAmI*eNYJhUr|Bw38i>6A z9=D?_=H`k;s1<*(9bguGdr~yJB>3MT-#*L&xEb7*V;FfWuoTU~@UIOr7MGz=C_fPR z0$lR$v+s)pCH6Mr#;u5<$Mqs?jzgA6EB;C%B1{mlmrHn4t|z}EIag8)i6BlXTr;cZR^Ow^@Y!B~REf+s zTMzdDd0oCts*jGeJj9#BEdY;oq*kP+!u(fsHCb(Qz8Qey=B{BsT;)@o8_;cny{zd! z1zeL3PAdeY5kQS)`|d;bRWU@y%%PvL9WK!34A2I6Y^MeQe}kdazDX?J1z$ITw(JJW` z{WR@5|I$^*$D+(s<9zMb+*xD-VKO6i>Ivk`FYI5$b*?9##hO6lHwCxOad-d&{9v>f z2jPqENBEH(=gZG$-tT-sM+HZe*9sjz;OjHA*~Hmejc`dw8@lIx_YmBvZ|*+pZhDro zD^-U!-LLSD&QQnSyhFHEFmtL1W7+M!Y$auF)K_cC6KB#X+L>u4KvuVXtNoS&XP^GEIh2(`;6 z=~9N-gO7izM{uYG!LTd)aqcwOJvs#y619b*cpyH87q`w(-H?k>p88Kr+ek2E%B%pe z=eP0Yq(^)-A9-o+xiRGabhBe&0!$ZHj#&NN%SpJi<06p#faa)fFp6sV4%#fpB9cU2 zObA*I=v9U>aiCJ$;EW>2gPS);ED(D~)@OiJ29UH1G_94LN}N6>ZCEnu%%rQQKsG4! zda;9hHfTjgKsxT)74zesq%*Lpmf#`<7Ssx$FlHbYV-TC_B$Trzt)yeg$JL1y*#W|r zVXI6PDhGvqfE9X_Xg^v`=Cp_lq^t$|N%MSI2H4Yp<%cF{&it5R* zB+vhv2>=tGCRr${XE_h-Q=FBpLp)!*BGbWzkDyA^+OdiO7zGuk6#t6{7 zM!ds|{D(bgxAFT+WlQX=o8)5OrRiFiO0H2>5W?2^>cWNF{=FdpMDd;CjVN|;F~O?@ zc5PfBfEkX4#ax>faeG@5VKIuGxTz2iJ=*h%bom}^9GoyzDBhJ1cgO%{e--l=rEqZK z6+(Ja9*y}TszrjFD$RkS3u6=CU-#Z&7nb?3H2GE1&f4f=;$2!__6i{gDq@o84?;TQPM0Po&FZyf zm}^40y(hJ)Jwh;ow@RHI%VGDPk%^8--J2d(WBhp)Ycl;l?%8|Wkt088wl|9DV+iY) zwo!8(2xEmO`eQ|om})k`$o*d}MSf5^9ob_wkhi~&Es8u|XjAyaZpMjvdAh=2=E^2H zevQRHMy&vvL!BejMe}gPSkqqP@!>L0eSSxcoePh;;$atRm+B#Oc}GTHT0zw|KqMsE zT~AK=RI;EdH0QlCq{X7!Zk%m(0p#P4KsarvTs`wq=7a?hFenv0CL)EvfNENRMQ% zgf#&wjai%B{A9qA;Yh=G-vqOzb>+;X1^p`|Xf2 zWSJiV6@*6MlF4VrU4MT%xZKuf??5dwYlfsjyyWNuHtBw9jPr9-jKpMVJ=xZk*!*43 zD^*AkRR-=cV4Cx1p0*IP%2@O~owRXT`EDZoRInWmMMNhdM=uw~p}%STdW9@0b}e^M zZ69QZg3@&$o!a30%P!G)i_OXN@gNJ$S<%ZL{fy4U2uX8X>)Q5yz81G zzz~jQ%6?|RQYG+`83+&cL=fg@ImUwjzkiTWD0@55IrEH|r%i#{F!HmUea4A!=${FGvoC7hQ`=P#$hX z*JN_M+Ky&^yu^}W8M+3Mqm9btGetyZqfAi18Wx*eGe1P`324qaEW84Hw? z%jrdmZjFHgoks$r6C_b8?C@Rwq zCc(bs4^cP{Y&;b)$pW!NEv6()>vIuH(30z6OY`Mnw7U;%xF@!*v0B~B?dUM$`VBYR z;A#mevcz;=!wBwR^L%XB=2kKaHXMy8qFU&arzcdTP`rReEt6Ud`6u280neUJH4a`@ z7cmjZ!!UqvV>BMKG2vR|ZD?aI?E!U^9}ASN4fEV75ECa{_*J;5`Qrfn?u8y6lO$(_ zWvNKNo#b|5`t-4o?6i75ho+tgf^OgAGp0qiyORXSRqkp*`~Gg=B;MP#tRW>EpnJL) z=sv&;+>hdMW~0XikUV`M8c132x?tu#x|=c7F45w2A%LW@_T!=gMAzh(o+YSh>wQ!^ z>HWW?%Nd7e^-oq9VwqgL$E%* zT7yeZZhz{yO<_huv=cEwjNUjFG~YDp?adE;Q`k=0+wqAgGrbRS;AQEp$%>iC)!;`d z(+~-yK&vY^1JC37G{WqkU@D3V5*fx+Hzr;2`iO2qJWMU$vN~i(Jx31>U28aNB6!70^N%A8P_u8mw&KS_stn(FHDk-H zGMDlUu};Kuo<7)|xaV48T5l8O$%r+_>_q|}nDTtgA9>j~u|;@IKqQHGTz+<_O_>#{ zY9^BGL4THg`y!cDb3EuZ_-BaH8A}g0&`JMXP2KP(;W9R3&yQtaW-%3GyiamZ@5TIT zjl~HIbS6N2cp^3dg=TiOk<-iQY&1xQziFwBfNsP+JwWa6oM6=QZFX(*AV$!#A`K`q zY~ENC(mG$gI1r4w;cPX`1wRNM)#$Y2U?QwRx{QuO6hF)rDF@CkQMq<9AP1gvev;Qq zXrwZ4@(=}0kyN3mS5fV{I(U!=g3I`(p4vt34IZZO>5;yRK2|X0kagvaO3vQ;w*$N- zfTsf$OC@*F)VyPWeDyuM5N{LV|2`-j4K^h_6D`Onx~JuNwS*88=R3}D85E4efA{pK*JAr;go^fu z^&AR$Y4(|_&fkwkR^6_xxQU2-0}(CZa#jML)EM>}h5Yz^9=}JCKW8gI=Kq2gL`5`r zDDpE;el@b zfqNow)_qzP{?B9jcVD8faHx)D8D`%_{;!<_8?CDV$939{-ZIDg?}ob2h_1#feVZZt zKWCW>9Cv+`Y-E7`zZ<$E>DNV@X;uC5|D2ZuaNOQpzN{3*|8D5`?=Jsp%tHU)mjCTl zRH49eabVrbhJ5mycDi&T4#v;ZFW*&udcDrZsu`gXXBIj2;U|_5wTYsD;2hu5a9pf# z8eP59RF)e2-ycP0+AUf6~b{MXraNds+tDosUBS(Zgb zcKI&mW3|Quu9NvSnyhGE9v#4p8xMSsWtcVia@43O-;O8I zz+i+UkNeLByTZawty^aBxc_pw4h)&Ssx>7@yX|c~St)?5Be&<}fSM@6!ezHurFnzp zp*1Xct6>dmt*)*rPMi>W_$ha?F}2jE8O@rku2i1llIeSY4s5rD$)r_grDG_O4VBWW zcu<@baS2UiGGyMLZ-)ZcX9F|#&OAfm?tYF@fHV8mBkX5^^~M13nWP9Qzpg+m_r+-a9FKivwRoUC4A*R6x* zyLem)3*3F>G~L3yK){Vfap%Vw&()0gX2eaaqXVUJm_GZr6H$Hj9CD~~n$$z<9yV;; zI7Lk`pSuvr$BjK|$)=?uk27b1CRzWql;2T%E(d-=b9|q6HCcDEv2N|8*%`UU5=9db+3h#jSQptIVbFao<48P5P zDhKwqmkt#Od~@S+g^wm5Fe3BldC)PQM{#$5xddNBUZBz*p!OX`9q?@_`lHj(?9!+2 zl~~}seN$c`J)y&TA+L+nD&Jlpr|-FOOOumTnwr`LOyaqAxq*Fc*e&o0i-aYpvE`(H zC_XctCbM=NAiT>AQm#wVbkUCO<;2Rw33h=0J|J<1*nY}STAG;?J`cxT_V|D_*DAd( z?T75^4jR#AdncaR0oFj=+o7Hp-qE|71v+Cirmp#4vI*HzUK8}o^?mr!IlN-BqAXt^ zyV9Xn{6@fQ*w&`TZqBVV$^WQFm8W!uL$2`k1%t_5<=s|N)qoXr8B4FS1LwmWV&QQD z@MWsriqc=b{Ykb3Wh5+<+&&}ed=5HVQN@HW4BqvK6Dxn=6eg5Ud3?85=B%K|q*)d8 zj(hD>Qt8y}1$OGw0O5SfZG>(M;)MIVJ)1tW8@0JamIje*-iy+m&cY%6w|!OF8>M|q zy6Pn?tj%p%!kgQqA4bk>4;*}ZDff7FP6b*yW&msMdQWz;MWR57Cp{&O9U5e7Bt^MI zyOgGll(fR|Y2>pF%sOkRt3+UJ@4UoWrFVVRMZ*V*Icwj5cXD7b<0tXCT+QzM^HEBM z{;c=A;hX-&FKDAANT7`68G4V9`i8ORs;EzlKu5%aQbqdB8^;LN-sT7b*Ii}{He3h3 zJR5=@kDVjt6{ql$^l>R<={(7_r5b}8^s?gMF4~zrAQRY0CN=c$=vu`BABHI4boRZd zt8?!1BJ*~DIut)*V8W)eTanYG*SX4hs{HHjvWbtxPw8B4^!aSB9Yt%;^9`qNYlh(Q zN(AQ$`}E^n5kO0h%!8?^%iCnu;P5`F%aOw1l%V6lJnGlC-87=buXJ|X zIpwBrp9QV=ZAtfPNq`ODaGEZM$+&Q8YBO(U-NdX!oebcLMbAcoG>VW9?}yl0d71IF zzV{S67Gm+>n}>FFA`Dl{FMZG@BZ8>m34(JqDC$c+t3`v)k#Xpp5AtpM4PRDV4n4~| zK0B=#$a_BEGh+MZbdU5I)Ek;N{0_Pm7eW$>eAvSDGm=IP$|uBlEc?SX4)VR%Is5O0 z$K*yFmja)8g~M4bysCK%#K5^N$6grrz$C+wyD_fHvt2qWo$lWEOzYlUi@c};jN_Lu z3HK0`A8gX;?2v6Vw}8`G`ji>e5nv#S2i*9TvpMCNAe3t|Eu-p$%CL_}Lr71L zj1@lGc$@!{t+p+X`#JQMwM%eV{9!i)cGqIxoZ;eaSUMCY4OT(EdG`7ARgEo>4Li5q zNa9>}@g$*&Vs_pf&|*`7v0)a<%A?9-Oe{RkpE8v)z&h;6ij3+<*bxiyyE`YlixTy6 z9z(L6u@y^iyW?8hL-_Eka$!L$J=g^WC>=_$wqAJ`TYiGOEz`fYEX?Tl*4t0!9Pw#xFz=yuI>E%$?#kkur_+XM-v|*tI%*C-Iqx7&#wV~TlB@t~xGVoC=krVJ z6SDN73?XCohY~A=`B@Q2C@&5Th$zE7guCIcL*-SsH$@}nx3}gd*_gaOed7e2`)S%6 zt7s#rIMf+WRN*S&%FEs8G;|}})uh3{mQ8Yq7RG5;h@2AdK-xR67HW_|d zzdm!*j4-+JK&8@li%pH8ioH3gA7*H61%O&<$U{j-mct2Ci{4Z8{v_@@j>fX*pRX;3 zjZ8p`V;9(iK5-sY?W3A)VRLS~mRNhg%AdQ>la^QdD*_lwxt)`>!2`XXFZODD#Ga@Z z9Vp^e-QTy4BNa^?<|>>4J6_Ae^n--N6ZL(t$H`Sk68do%H{8{Fb%icVw12bUw0{L= zl^C5K@y|oGPp_{oqzX+iQDD`xJF>4KsNUEU))YHm5B-?b^I2G{s?TL3>0g7Jpe*)j zR$Xg1wiSs#l?2*{K(pFv?B5+e$6?unyCiCG*i&pAb05VcOHkpj;ZOrinrhvTgyHI8 z5jP*v59h|tiv5J{#~2dU6GmFAZXFpzttZ2Krf?LvZw2za_7r}+?+-&(_~I7pEBB!H zfg{J&^(l8vgiq-ivVX=`g8kWJe}&+-#ma5;uGkg8`s}cW9+UEv_z{;molx5v#g8ivN8K|tvgkW!JBMx;9i=?3X; zNeSuh?(XiPn*r&154XPeKJV{u#^X6V*4pb6Ynx6MJ(E{MEeth3s=9G=pR$~JE^uv# z6Q60KgkP)$jta;gyc6TEFE=Yp^qZ0)kIN}gt{LeaVMOauEb$WCP zcB~~y1MqY9R6fiDzb5n4?vPd(ulIv2pR~2NfhGxgo5Nn&c5CX)sq(;Z{Ljf&TY5whL7&%TEf) z{<(&P9mM{K_nJloX>!Nk-6U~kQAEDj-NIoZzQQWX&8$i7LcBux{cXnY%D%s);Fo{t zI&fK|OphbHxsF-7x9MQ>YNO^C&vv~VJ`>!~(9 z80v}BmOpiCIJjNGUzK|!qR*~4lAnMf#NP#{?R3| z^{`Dzyu2pW4#bU*_7vA`;wcfyb5^0Ef7Q}de2?Lo{jrLKebw&Wh$DVLz}HhoUgN^t zXV+0`Rt#RofyXd4snIo$KtgD$ zf}L$=-X3A7E&@2r7@MD8{t^+sI!w_Z6N+(3w^q&|1x1>C!Eb-N>M!QiCUJdo-h{!Ly2~bAR`4zA~j9pMF*}y6y!LGv*v(ZxK9rr_u{ed+_o!3Wyf$5 zngz!9+KRg4NXbV-T5$LBwj^f~VQFiq{*?8Myyc#+8sKo6u$`22gwXgzvnqKouA?ss zaIOz;QvIgzJ-vy{5HvmYd1;u0*_;vP#Z*2+t$~JO{pe@AH8}@vz)6juwj(n&a7{Do zm^xuj?;rSK|GO}60BVtIcW4Sn*QI*PC>f#-S{EAed+o_%C>tk(EVw=4TNO1Kv7LT{ z)u%y|vCF=o0+MR7@7mqmsy;ZIYG_wst$auwKa1Fp+EiO7%~lo=^smoC)tJcj;Y^s5;sPW!R(uKG1ZD%W#z&ybuUg33eB|8)F=;c_aD>=Y2Wr zfiQ)ATg9Dt`Q^$_tRbv+v@NP#&PZ!Ihda*rf-79mI{Xhxw^yy1^tay(kO%|f&2qn@vK0Ww( z{_0doD!YbNwC*Me2AbYELNJjRrC}1Px}R^hSRJpEF6D;8E7m6s;w1sAZK<(+S;b9Q zjnNAw);%Ck@A{?+USd>7R_oEY=O@r^pGv9s)o~tl&J?-YN;Nb7q(l$wryqXWAk%&L z8_U3f2O$sx%>-zA3@C2NaM029zo&V%p0VgBDosQO(U%0z{+sLYG3uW(x4!5uX5qoY zU=8D->!GI|!GX&Z3)U8AY6aMi(>B8sd;^x;78fjYo#1Gb4+SgLcnYZ>M?rXD#LwIQ zVL3k7w&kq#0UdL8{I9zqq3ScqvIH<;KD27T64TLjPiKpvbse8u;6fiStO%TpKy7i1 z^)LzkG?oLQ_1ThNBEiSr=kGYCJ?j_}2~@h>F4a^klak@cw>{SXbPH871eaFESSpHId@e1Y_)oH| zbJL<FlVr8gxIGVi)`_V$U`cbK*_yP9^!Oe_bimzt<#jM#zAIC=zXeaZ3U*Yu( z4p2(_30!&oCJ8Ui)-2d#fCc#C4F3nw#qlH$egxK=t{MQ~`k$`?UOJrR5m@(qHBbFt zy!s8XCnTU-;(<@)uzrg>XlmL0jyZ|jGUAMkyRYmE^cer;3jj_79iATSxO|ZoOb+7@l%z|Gm;d+Y0pBVN1^&Za z#iLhhuiSq;s%VKqBS;vs$&JwVXUkPi)_cwGx897@4c-5Zj01zQ zk|y3l4-UiLe=%5ODhge7%*iQAqCc%-icGC8jvREZnqi_pA&Pq`@v^71)3kTT|Hq07 zlSYo~=>g`|c9e8ve}}w<{qUg8O#07qdv|^N!&LYCh>I>)mgV7i#`&rT<8mTKtVxZT&EU!xAf~km?M9Wv_8(-6l+bX zP(d_)-K6nzE+U3Qdj>xGq-*}DzhbAH^Q=ZPZptAdkx1J~V{_<%ef&xlor<~esF7Z| zDmwYWq|Y&yD!r_apkHQwsyZi2OZl%rhYChGCA_5r)Mq~y=Afi+ekoT96R`nj{YTfU z@r{MV-oz%e#?OcFuNw{J3Na`Te0=ItX4V$BIZ^BV#m!Oqq?$}Q$)8zw1nxRaq>535sFV=wklCd@gyr+RIbzFM=}xlKBn-$ioEd z`<%Nnolhitrp)IzGBAe9j8heoX@qWTIu5(9%gwG>)0uLngtQX1r`hb1WBBO6YJn_! zf6zzds{en2VxPZDy>R{_GLrtg%*9Zl-sbQwru%KF);BE37*5!DmUKIc+T!Q2v#@WD z4K8fKXTLPvqXr>Yf@+Te$M8I6j%(TdO3JIH~b+ByDQPF8R62`)nuA0ELa^AN8;@s`QIpEXP*CI-3PL4OLL_VX6&wzWlI({PQ20ZoOC1d3KT^T%2IV?D@JO{yVzb!(WJE z-Z2x1{cV4~_;D)jajT>@TE(eW;9LGf%kjk|O(}j3k;ro&qYm1Gl-{>kFJX}Dgsm)F ze}6pf+J)Q;Y*NL1Y+IDh-#Y>Jpw-jSX03YFS zcihZZ@b^Mf=HW_Rh9!1+cpsZw)OzE1ih-u6sp0|MKLni3$bdjx%39Tq&BzQ8BTw_t zXG^T3QUYIu3pGDwR;SZzI(XY(VyfadtH~b4+T2SiJ_3s0XVxzL__l#-im-O2fpdLe zT)yH4`N`Ap42dVGd3~F+W%fySJM0~YTio&&u630WG(S%G91kOf9QV;aJ$ps(q`!b# zP4gL}2;HWK+BZWlh`;8@bn4#1YKiIQ{O-$?~JUMRNMp=&@@ta1MUth&U(H(VOp@QDdjt{0a9)Ftx|6SId=H|ipzQlw=%KW-^> z9qiTuBGl(}v30+LzYZ6kOqJGMF7cnOr|AcoCz{N^Wb1b>rGKgRRdU zKipb6$4DG>dpZ6w$t4)wYV8bn^tOesd6f85v9g2*SIOd+l3blGc&XETvQ|eOO;5pC zR+T9&6;FiLuFrE892)fC=KHd?OUDUnn3Qjon57iII_S2eT!QcfaL ze`p<^*{6CR!qUv9_hBI_Oz_9k^I$4YtpTfbQ=`7?Mmrki9{fLdQg|Vb@Na3CHK4?| z^q+S;w0u?sg~3|rRz0YPzg+)lX}$K#4iS~pS-D@3v3xh4&&q?*obvQtH#S2X*l1pi zjiKh|eDgdx)O=;_Lsk#<$?7G#?iaSvZ(HVrX6w=y9Wx+7f_Q;iuij5cpIVvop$iW$697nhB6<~@;|TnG zY7i(xP-P9?(;K&-zP<`fv=BONBSRQtvwJ_y#(^w)vTjSu5mG6Pbkum-B`aQNp3_vN zi9;GruEK^Q-ZA$7W_Tn6B}-|L4-9y_n9u=>6KFvs9R_jO(cm!Ezok~WV-x(7@!@P% zOc(CcIv+7kZODCs&Bm99ak1G_{TxirO^Fip5W1T5i{;5S4sFXHR2_)rWbKl{ zr9x(wP8YV@2PveMF+E&EIWT}^^tkkg@giKr&W_|1-w{sw>- zHT3fTDR1yZMDn!54eL%NWkLJp_5UE1n)2ewI~{i}*FsCnf1kRm8c@_)AFlczV&Z<+ z4(8T99wAzn(%-N)kLoY*)0_RSy-vVM=*gXHnu99ph8th&eo{M)6qWQZQmGp}SX3)2 z&l6RPEOK0grM*z)5Eg-qR!rFuWJa=*t&Tr_1i-a4zZKg zkzvAaJsU)+tY?^2Mh}CIf^4KImC(c>eg5fLRlD_}7!CC$o0Ly^pO$ng<(I&x5uHz> zD&h+UO{9@wEj1j|t)l!Nbq#;=FoSIwk3b0aI+|E)BMpYQ{JHxUO{*q1Yh%}o$E7+8 zaon#}OeS+p#Hw96%?*vJ;7nSUx(v{Sh*i9B!Xh#SpH3i)I9)1C6u4zYKmRZwI04a7 zQUqFYFxRe4S!Hn9o+CJIoQ+oTyNNq4#j4$SQ1(muu#+h zyFiG?rhPPHpGMD!cw<*`6-TVCDyyt-mMM<*j4c%5Pwr_#>boNVDShdS=FZk3xv(Ez zYCNfDZ`LU1)-StDqXs+59nmnXSiaNY?xS_8ayt^XuN6Xj+EO4Kv_~fSD#p{5&g~P< ztqxyRE#Ej|rtW2U_m{iZen`~d_;kp@pd%LSs?#w-MBGDE=$zCcOoVO1uPDvshUHEy zn0!;Yh!8$o?|}CVBZktzjY{N>Z^1z)?h){wp^KMXMSU99Vu;U)g=1uSO=gY?P3xw; z&Ya?1P)kTV0|4VgSIHDNRt0_;*8vP!xuY}_-@<3Ue=)&KNMj=W9%zPb)nxPT!2~+H zDc!P=YiW*-wLt2{yI;}IQeEW;nblYjogGWoh$#%br7GBhF5YqwOpJN`vqrBEr`vRpdY?Q-{Q)*ob>wg)6ydaFefgJ1zu$ao-1 zI{+voZjt0T9X0%{NM?lli9TnmbdnNL$}_c!8Vxpb%~p=ns|}~S3Q&JW<)Y;u7s}sb z>xFwGiLl*-szC?}=mcHF{oc|goN+|bgX59mtUaivUVrL`p&=mtK77ccfB!sgTStfx zcDa69yl--9glOH0n?0=XS#BKt%)}PiPAEM7?PGn}v-uC%rO$B0X3;{N<(E*<=5Ze# z6^4<7DH{zDzro&76_;~mqed6<|JgN$i12{&TDKiRJY^~(w39%$@2Oqchd}>nOJw^z zaa!=Sw)4+qhd%T~F0=eB9jj$|>i%d*fWQ3bHoeSN-+K(^UkqsLsB~xu&{D^vCfTT_ z*EvlL-Zu`fT>IF_9)MEN%Nhx3)0nN07k0^u5ELV&&!6HAV--u0-kz?)$kN`D4GUuqx>X64=(Tnf+I(sYm^Z(M!e)-rom| zyxFI+5uMf|kzZj$Z})oh(nRIEemp((m^e)&Cd?yqCR3roAjuc&OY@Hd(QZ>rfum8l&o#>WfqMU52G~?!!@W*gcA+|1roAz_TDBZ-l?%I}~}M7MbbUHz(?HrOb5BGCHnWy<_A8HY@e zKSY*mbJLQf{FE%jFXvvm+qhD9{slwZ?7V)L?*{x*0L>t{AJ#@Z`_10sU@Ny zOax&lW>d*|3N9ka6gXAYb&&U)>}Qh*$6)geT&o-A~;r!GVHdV0C&+=fCMN*QZT& z0VPUDGx|(dL-CjZA_kTB66+(7PEkHn}w2vcC^ou|DcShjcAvGx8gy~Tx)pFGr zL)D=_Hoe?ef8 zQ(ChNYx71~1D1g-Bmxz4baU(;MY{PJDtjPf9J)Fx)w$U}(z&MBfaJ{|d;AZWZ zZD(S>J2rfog_3sk@yxYBr!NSLD1F@UODEt4YCnDQ_BdJOtFCI*0}ztjE<}6h=?l>S zbtGF6JB8weN)wOUa5@tTl!V~WTh4e73a5FvJdt-1H4rYlyGl=4KLTdW$*QcZ!jUQ zV8+@A6A`$@J*G%DZtLCbjhe@9xeGwO<@uoECuWN!rgwtY)|_c>#0_>sGu1H=kDP#E z^dM*^{wSb^3>GHK%&I?n{m^;LAdi`K-$5f_$onWyUjCY2`>`t zts{@ji2s>3!-M%1E*EY~H|uNcsS^(dcpofJ9pP*?<@WEpz{}YZI}OHFRW~m)P@t_jq-s5JhS?x=b-~d#UiGyjL`WzY(#j>E48T3U;BZ z4)=##=D7mU6NCF{W5em8q+#pYz#qh2DICeeY@9<{XqD~OJzWR@9=qn2g5KN&Uvp0^uw-7hiy;%{LwPhZSYNHT zdfzpl4waai)gX0n?X(rZ6JF#Sw$y`zUz!@GsPLvDjl3YJfD~ZfinB@64X;iXz z_DT(D!tg+q5)vt}*Hvr2K_yPtnVleRbt;dSF^n@L;0i?RUai8!uGzyOtFQII9ND*^ zW3n<641Cs!MU5DAW4q@*t{nw+bIHkG>YaZ6$9;n&0*B~?nc*F8rGJ7Q5#At(K04RB z@+~ewoYADO6HiskY_V?fGVUol=jaKe|IsO-eiMbI`|YmHxZS8$T(Gd%AFXgL-uz*1 zI&JHs0|RuQP6n=djcF<}GZ|y5p0D%<0g1US_rC4=&aa1h!+d{`4X@_ zd>RwGBhHDVXv;*E`S2%DPd~%qyH=BO7qZ3FfLYvWEgp5PAAcSY-~sZ7gLXxdpJPk! z-J`Vufd=_sT;bOsW~Kjfg-QN@aD^gVV0FTX9Gve%O43mB3Su-)R7rXv0;&_L&r4hQ z*{bvM}4_|;saeU?>O$fFMIjxkP-{e&+@Ml3jtDC-? zYwa+6G1$}@xtSPifp|Pk0gKe-f(^$en8dy&}}e~k*}lu(7y9X?@`s+->@VVepXwO?cCE@bQ7}u z5yJ1e7gY6qr}f)i1Is^O2-r~!kN_2=JYVsL0ON%zD6b5QMSX2vr?Rv^9`<4+WW7KV zw5L^|c2nPI#KS8-BBDrj6<=O*jYC+H#NOVIcA5s18@xigf&!1}1#%&(6xJj_)0` zm?`AeY>xL~hJz71=jsaVL2xu5L#gPQTDB~J~ z-=laIt*~7AZH7)e8R`E^7ZQ3hQG;_y_>qv-H*k+uTJS(wl-d`>PG;|Uc;gT;|8Y+I zIY>R!Xa+A}?=eM$wZ0u31h?POt(U@U{tKpW&N+gc-#rtdPrlU{I?a9XTh8L zR?S0nU{qLpr_BFtl|SD6`=cEysD1fbvVAMVrhB9Pa18>8|4xLHif#sr?jr~X6Qwf! z;^v!f39z4s%AG(*$Zs=e6u%OW(%KwpaRcWPFB?q z{HUg4?w}=&2ykE_(NX)$8~W#*d7v3cB4tDb8*N24#zq5Fn8(9b6DlRHX8oGa+HMbi z*m=cW`-;{BBg~^&a_@YxJQoeaPmo81>2!;bNuT+A#=qBeAY!;Kg_~c#mc?tSi>w8FcvW z{`W`W{P9vP@Sz?uGxk?7r+zPUzqPuh(I zSPrCAB9!Vp;QIFr{JE&YQ*f=M5wG*Q4+(GFx-Al&LlO_OJL@S!9B6oc- ziN_B1W;1Wi_dmO49Sw;Md#Tzo)oi|MP`+s`1A~Z#$)DUtiukGrXmD#JTi_!O|4}ck z8)gv$kxk{+oGM;^UTaI{kKIc!XL1L;!}ciUy$t^kmx?&e($A>(+u_)krAm0=KxdeF z`+2*0d+BamNpf8!Iha@1?VnTf_o`kImVjeHF`X`|Ty*U9kHn@Ye}~jCFJ7z>*c~fJ zR?xMk4UN!h76Vn!}SN3Vyz@VLlvoUy}MQBzePUls=JnPevmkS8a;{7JqAEujCI}hz>R&T34ghDB4tjkIWJzH#BE+C zNHJlztqJ{4Afd{kNlOHUdqmR9sMDkw2&4O35M(|?LYOq`M6>1Z1f6j}^i(XX@1f~) z*q3(EFO}YvuKni$K2R0qPv0wdy2N!UA(V2e)+Zr66!AmwUU zIIsUa%Mtin=xOT{-xw>M<;emniqKc}4hMK9d>+{UNl6}P0a&^i?qPsYW6nc{iul)A z3!&F5dhjl~tSXt zs-%N!q5$$&%tt7E$ditIHEI}IGXekq7<5?>9&3mEY_Vz!3X$`uNeFOR^asJ~o@dEL zYSUs`V3_<{O3W8<%*5O^{sSEH)KnCHG~p1WTCstDiN+pRYZ;CwqAx_aRfh=Y72m_R zC^8+Z%P~e;&Yo^Js4ncu!2>OGBA2w-y<^M>$tXhCb4IVLS z8R+AxZ0pPeUJIsWRYnS`;Q993f3$sP>0*WUAyNC_8Tf1$OzVAP57_D)X9b__eLlnk zg#$ZsMlW5o<9Ta}B zTc)eH{W~?nS!f}17&fE>&kKl7zpemL?!~B%+rOinqkk+ytupjr^Ty#RYV4x34{n0opo5e*QCTaujqXJTvt2#O`%j<<_2> z+N~oR`AEm(31X%bK_OSAn+6Tb|K5>Sesp5D*|}wg@f}+FHnwYIxUDch zjHNRu*U`gzTKwJrYvFEj_icffJ zqRrdkJMK=x317xPkAWESXy56BuM-zDj1DcXP$Tv%+D1cc&?<2z_q z7L}UTEHrJrU2liK+w&i<0(UJ2MYB5AtPiIOnS@RM;e)^~cLMB13CZ?dy<^TTQ71Q) zdyg(fneHmbn^@Ej2?CDkBveNgTQafFS-Pj*^zm5o2Xarq0!FLQ=H3E%Mhy_L6xAI%`UiPCtnDd=gBKp@=n)Xsub4QIHxiV?X-4C6w!aT!fknQeeWTEC{&G0&^ zxjG^*)XE?Yo#t*v)YJD>^4LNR!Rs-#`A@Zoaw+9#Yk7n{0A1}j&uNo7|`UNDKt+ay(m?PN;mrP}* zVbOV<>j&&>X11Dqf>fPB1Tl|BrZtQqJ~2{FH{H6rlhlfGAot%;%vCy9-^oq$ofA7# zK12ZyPaFm08hh%GHQnJSA#Lua){bpm5R2j?I( zmMWK2Ej6tbHak98)c8?eXai}7=aNLN{M<25H9fh){TO>WgGFQnQvq|Qs2<%?DD}0( zqs>|4K9;N)JE4dEvo0PodyC8Q>XI(kXQ$bR^|sStOc|Lo5&t5@jbS0jcx2|Vh3}*k+Y242fHIdVBFwSxL zp~D2>1FF;nJ=Rdn>5w3SKRZ3aG;VnWF-a^jp1{tYF#<;jiFM5QfMru}3|5v-D?;K^ z`x`)--WQ#>tRY9v;U!yTG^Kjngie#!LNn`Jw|Lv+c59r+q*~Ks7S{{d%+~?4dM`au z3jR7?ncNS+Ufxe;*=%_;o+)F>_hRgqrh>Bz;Iix`h|>x;zb4J6)fjNZXwC=B`<;EH zyh4wbqA5N~pHMQ=j58sz8k;(D*07@)a3 z8GqZZm+Q2@R3?{%E?f!q1r;|?l#2VFNX|(6Nv*887jqZ6-b!ZUx)9gqv_q7Tx{kCr==^2U;8|vt37QG z3)+|^TCS+X+?k%mo)h6eE~@)m;x{Y$?R)+v1!)by!cf+H2q(Z z-J&`6ZV5)^LYROcH8l1)E|@Eu@GpeD82HIX^~5AHgYs8Zp+#I@Oke+B!k>+a>uwpq zU;MUF53>(d@H}}i>IoE{rowKP_2W#uCD0?7d!zs|ft|fghtd*XtAGk425vAy@lM@1 z2^x+=A^O1#tl=n?Wyti9;rZ_M`|m~19k_@;>26|X43Av_nxZ&u8@GYB$7Tgg+OYg& z*SD@WSG>eU`;;#>6^I=jxkcR6n;zusgx%ar!D{GBHmyE+bZ3F!K^7Q=ua&w9^W~urS zAi(W13N|&JGHdL-!9EhenMwDq>sp+q7SoPSb=Rb)1CxwUFbzvAfDkaqqX9iVQbQrj zsxU73S9+Moi$2BSu#!fyk(~a()<9DvXFqaJu$C5sro+k-Yyl-(B8hxvZTqz#tp_hR;ayKGx9i z5@<5v95knYtHtX;W*|4@0bla|gDpSiN0hT2oY64!IUyr>YBn|Roy6~v^{Vl8+2q8Z z@|}nb5BV;L&E#S;?&LpOQ_O7{RI^#Xd{4EI{KPPUI9GJ&^#R?Z!5=rtvvw}o2_t0O zMtWxsb|0SIW9nFX<6=O4$juno{hP#g(CkEYK6}Vz)*H_K z(KlP5-Z+&A(=jAw;9!fXUAlB>x#vr)@y0eM;>=_Nd7X=HjEKqfPlm9JwwEyPSF+>R zO~0=HrNdq3n=m+}Zy1+}J|MU`_|R)`CAqS)l(pKKT@={m;9Od;T+*AJVyCBBI}x9( zn?@?f#^&A5Uxfb4{WW#F9g_S~d~4WG*o-mF2UkF=>lrwr&0 z=~d`*!HVy)Y4Z=mK$$i%sTvY5+?lnEPigF6GUWF{Q!@=QMwb=R)7>fLA%U(I%7jg3 zA#`6XPPPp+s7xyA&j0Lpk4RU*sx~$U8@&LUXrQGmn-t~QUbLQH0y?|(=%_v4p<2E* z!5`04-C&iCM`0xRTo?EGgy>h9#!M)J=M7Hash$X>mwkY~c2k*h3{#YEy7}u(iS4)W z?|UP4WhVKpm>CJpt+);LH(FH~ahfhaKD(^G(On!>b1?b|sGN2mfBJ;!qqRb%P@O<{ zp#KsP4^Gc%*RbV1C@AY|9I8Hwt#Au+gBZIQHa_>Q;KTi%B_F)fL)KbBv(HUEaFJV) z%hv(O?EO|MH+mEzZ=eUSWaG`z8+MU5q?*?0uBj$YN8B+TnZUWJmnbSb(Nvwe)^;QI z9YMcZc{$YwJQ#%!ti``aM$jBWALUMh^#HZ!&pusY-4*@SX}{yxJL* zt6GYZ@7B@Im1A|omZkk{d3I-*L6(rq)%vuabHJjme!22OpW7=gyLFQ?-J=mf8y9n( z7X8&*pk+i~;%CUIjSB3IN1&Po{qgO_feIh= zxu4RHjf%~~WDO@Cp$Q~HgRooa%s#5$yo@~rTv%!18JO}!3iVYyPP|xK^dLd=GHA(I zf&V6P(xlGm?wnDDiPFBLa2kFPgn)c0y>))^7IQSza%o;)5YI)D7F|j*XfNqfp1d|& zP940Sp*;BO1n8PEZ`qu!ALQ66te>zlDcp6^ImU}}aS)$Z@MGMZW7u~JUU9y9z?pcN zr^l1nL!{Vu9+3#Z{XH&N7CY9~hMVwSi;6+%!SJlTJV}(W7A8(Z2I}}l&#A1cQf3vs zwL&z+1E;PxII9AsLIAa39t%h_o0!Le<~{fWm=W)|^mna8tp~bRD0Gct0xFu0l(lmd zrX48kTk^o_-?856d%5k%5N*-mh5;1%*vbQa+5W@p$uc^Oa%JM^Ray*q!jW$Vl{JVG z=KYpaTEkc7_G}4EFyWprK90$}=E^c;7i*EOz5sy|R5MHk~aHP~FlUk+xOeEW5NCvGi>b23}bmO$b zzQE%*CoC@sJDL_gJ6M`3fGLVA%oYkhP~E#aS77kvp#E`!`Q>U|ea%D>kga@ZPgl0Q zjHK04kB+#`+dUEeOX=mT4)$fE$w;_VqI3fpd#?{#04Z=MQp*hrgXB3CvJ%j?K(fet4lBoxmYB68+i3s})^-M61cW#|P!=rmFBD564M^?How39qE`CDg`x!i512-EU>*{SHL)>oq(fL`#ky?ZB zXTHk%XNurLe8kPEuHqJjiCfeUImb-jB;Gc*V!;)t9z zTcxSr_l~C$_F+JKn|Y%z>L3(#O*y)BqoBdsrZ;YL6!FAu4Je3FQbVnO&hPZTh5bk( zejuvh^#ez?(h^QpJQJiwhJf>8=kHzses4#HE97DAq%>47SYRWzGuWJ-R5)F;VUQJm z@{$kjW+8p~&vA57o+IPxQ9 zSAvMKa#hB|&{$t!Z8udol4ql3aT z4|WtcRer$<{1sbzAkZ;$-(HPa-f}t8!VkY`I*I~Gf2&xsb_e&?cJthnMX3XE7;Rt& zCqr$JiY?Reh=ND_6_M~$))@&&j>S>a_C&C`dgbrErfo^i$Rn?zO^GLb2fSK0gV%NU zFCzw`fwK_xd} zoE}&k-0bB(B%dnZO#P;sHwg4!PLo9CcU$#b?YOwF88)BJD11`HSr`$3O3uly@$;9} zQKeq&zAQf1_UBV5ir^03Kwo<=cxVGwl>{J~)8A(&fy9ZPz)bat^Dr=V<;TjBc%r7y zENH;pE<&Q2cOtms2xx%j7cu3_*=WDQQ;@Cf7Nl0^a2SC?lUIXn+5FK7Gs)(Xd$m?# zds3eM7+(PcIS za(NY5lPKNn*r1Nl!LeoYEUn?g$!9%}C2z}Dgyqsa&T!U_k1p;#GEG=d$viIK?C7OSe>SBX ze;qA@Oqf@bvmM0vCI;ZpL_`%s*?QvB;PQNoNBt=kN*J$%5|Y``lB)w{d1DI-^eeWZLe?ed5MK1M zjhi?TKKE!XqJRec4k>dmw4U+k8)_Ze#%z_Mkn;=GSqjF6o4~gtCuHyI&xG`DwP=t9 z-*XBGon)LzmQhHiE;!&dVqeT1GY!RaX`d%BBW1fBUej4D0o1ehyw&@r)2hA3&I9Y0CGQ8KYIBx`zMw)qkCy|)k>O!{z40zxr%S)J6btklitEnY z77W`>4ycZ`MoSt1c)d-p{nIdGUA7d^*mdy8PyL*8W85X8>Kh238hriZ)H!?Md?7&5 zEn@MNB}WHh=+a=unjL)3s6Huain=* zRerKsBC5SIBQ3Kt z@8p0k#Np;;)F%eH&dccz3YdzisOry4+@oaykc}~E7KI{g4I|#eh z$*sZ(ouu-L5I?Ac-D2;Kv%ezlIJ0LTx;aLC(_WxEGNHCIQpiX!y*hPqH{f(KmvrP8 zDa=60ZWvNZH+Codrg3=YA_?~`ufg_sF`5~y(T&T3%G=0I{Es5@)tbruUB35}(OkK^ zt>n`9bK{65+=zF2R+q~B?MM*)HtU?Y%7@xbDBlGjS0 z5T>Yfk3~@O!IrjiFCZYAyM4!R<&p6JarT!{buGabD2xURF2UV`1b26W6EwIbKycj~ z_aMQ8y99R$?iyT!ySux-#W^|mo^!|dy&rFk{R76@yH|I0Rd-eQtXTx&ZvpfkDuGL@ zG%{XL}V_KS4CVWJN^B za~=jI1hDq3QE> zVY&Kldu7&hQhZKiN6pL=?X<_H?Z@N$zc$RnZ!I8VFZ;T~XCBiuqc;s=&)K?uao5%W zNkxz|oC8;^+3-RV%`9U|4BvrQsiDzileySi8_`nIBpv4yOQ*S!GlY~v zo26%JY?}%eY8xS7q<0)Ys1r19J1LEu4m2lOJl3HkT)6vC@jTkueAqZuf`rKoPFDf= zre5OGplXyKi;Q}<+&${gHVX;pYPlbBPVn-)hx{wa-aTs{yBkF4LZS6Xt`QCL``WJX zsxCO|{;W>x?R8g5M{z#MGcPO{TQ}2goi%Sg+napTw>r+?L1IZ19t5r`9c1 zsqdN%rRE535TN-8WW^25BD~AoM6bcF`tp(Ss7-WUW}26{kZRPqB4CmG?gzl|9Z1qJ z0bPG#LF0%^gdtlIz$P*+<|WP3*Z-T7I8z)u>JN zLE6tnv*qDd^z^o(;XG^zzj2oBFmH{w`on7+Y^lMgD;A3{H^}fDLN!O;k`s1Bjn@YV z0`cHnl3j4?v0PPLJKMtyCR3p0h-^Haxg7+8KLp$g`k&J~Bq1YKQLpcwkFdnejkOij zOrG11<3RcekY-e~uVg!7h<0PdeM#g_$9=~c(XhpKeSy{o+g!DsK&GPZ0AUUIp4T0LHIQ_mLC5QZYw_F&jE*v+m3_pid+_XQ2m_fl z#8)+pHVx`&92UxEJId~n_l_0>oCd!W%~JgI13^lD5dnPJdo@vN_sl*wzzJ1Ai+AeI0JQ zA2`3M|1G)D>%Eerv5e42!>s(}TzH^ui(!;nv}gxWZVxS6XsV6m6W}195OgH5(T%-g zNs_A7)Q0=avS<2ZcSdw#?4g0a^Rvd{`H|qOq#$cp6(WuDnOQvQFWP7?#=oG#aB&5s zQi&hZdG>-ex{Z%wXishXOsZ+El=)KH-WUId^rHXW^#vQOA)FmMKR9Ykgo0hxmz^s{ zf7(G$A!b2DMs%YK`n@^zfF<}o=@na{7~*YmK6}k%Yh^Sg2IYxG{ue(sR933>+G>)B zc$Ex0= zN5b%SA|SsNsdH(5A(pBou5Mn7kA3y6#J&#iV7)Uq0^9^O!D2S6M7)~i_xfs))4LPV z7$@i#`wQp$k<|NZ#|#hdpT?PN4>jnJw2RZHC1YP&>h+5d!X%#c4%aympitV-Geu-^ z`R*wCiSg|Oe9bZpBC9QL%ckm^lkC32;)QBdb_#^mj*Okr0H?ds@ALVzGW^V}XdFJ&wgfImgci2~)!WSNN=I{r>*wwx%|Z9rx5aEJ(R9KH@=v7UcVHco?aO zjHzDk!hN7|Urvg+m=?RB_c2~LJWUj!0J%2{;P(L z*<(OuF7^~YDir?GBqJuhR&w$inEf&pHi|P z^eM2b39q&_7!JhApn^%g6Bo*I-A!@I`!$PEoKoD^Dn4{_Q>XyII<)<|rjxuJGFmk5 zb@FU;N#R$2pqZ2rKzJkk`k8(Wz1(f^Pqx=T*nvupmzdlJ75GL*LfGG#iT|MVZU8o) zRp=0XjNm{Lx<3g{FF=sLp0~fq;OqCW%ZTE4knLIGFWXt(7sz(+MWg>P?L(5=3Ipw+ zpK#XuLrcWi?f`83q>=yaMkEEm!440ef6osE)ouAt*Z%HC8yqB%GothmEzSR+WQhM? zWCHwGU}(%K9qxQe;_}6gvMNR1!mR({9TEE+g<;%*F`PhlGX-~b zqGIR%A4s9W%QSQb=c+^6{ofI-00AQ)5<&Ax@Qrr|optMvzTFxYaT?&HZ@d zFP$ms8UMf49{wIkWX_8O{I7+{h=J1cF~lB$vqcRxeV^>7@MvU#sJH(Z;AFR#B76t9 zl0+vV&qJ@s&*w?@P0qJUDyPwsj3mDO8v9xJlFR-y6cgYE1blG-qj3LfU~H65y?yuM z__EhCZM9~8ee0TYK_W5K! z1u*~}InB5DQute9H6V`xD8roIPi-_6u%9Au4F_CMpd@pZwO<0arh%(~53KaubSpGx z$^w&UWBay`5|+a96Gk%^PunZ291u=2b0h+$A3M7t+v(Yg?7He9E^ zcc;0xq`v3tW>fncSAq5%PApuITxmG3N|tltsXTb0 z3I`~iuNJ?7Ox0iLpD1HfsCPhz&CDrBJ*;s2V2=I(bx}Uz z=ktC)2kXx1wpC4`lzKGWapUjW7Ys!oaM1~$%C}vtvau%_?;oyGF##H#sJyBb5>->< zBAEs%9uV?6gT6-KQVnPnJAP+9T<@H&xjal9&!z&GVYDw;dIq)t9AeVki9o!Dn{!4lNg|MBGY>Ib}P(`J*wKNlp1BNu8@}AEF;8^<9KY1+H zS`|(8O%~~#ppy+-{zMP=bjs}vKnqI@P|M?UMy^K`5pgJ1(y-9poaW_J8my96=~DB7 z4q30y`0D}i#9FEAe9a;2)}!K}+pz|uk225WBxVk9i@RgkU;FWrPu@ieS`|L*o+jOk z5uh5vxNav zT+3J{4RziG!B4SGTt^Ox%)7}-m$ie$9qr~wnsufY5_ny7A>@c~teehSpkcN`OQ~T@w`->oP z6pUZQv{cI*-a`-0Q@7)#95sWgUnZV;6jC0v%W}zhd*6;S6iF*dXQE(8n%?U_%feG^ zS^(8DHqT^-BOG~m9S1Ki@orReU4b$h?6R(`sX@^YqM7ZEVwUIv6WmFIgTzM3}=XH7obZ}2rqK0PD7ce{?-i?`p}X;cquc$ z=#tfCe3`VoQ9+}RB7n3*>6uLWlkTOg1mVY=EMm!pwZ`+Ww?iW-&7?7T;-{|}-!8>Z zv$s%=`b*{867m%^g>xq%4>ccGfw&wMZZd1=mo-mrthzvUCJ5jOf6Wn!s_)6hy|-|b)|N|HGIv=GT>zj~YPYy} znSJo&9N3ca#WP+VO>NsHUqZ2Ay3clRBiu!!w8Ld-r!=LpHpVPdgl5F4DQUHhgeZzmY55hi`-`n&>M zZOVHhD8V~{F2NSa%Wwh7ms$-Y$=4AWSAvW4k{r7VSC1tg(vI%Yg922iZKXvlB2M05T_~r+Z=hKecz2CjrBGT#QxgQoZO|Oe5IOZQ| z<{MtBGJSR);;Wj%H<_zCwzXJ;&*c8$#iftFHudQ&WiJp;AgH-fpP<%J%9h&fqPtq;+GB{tF{kFPhtHwMb?esmT|Rn(j`e{u>bbOi zOg=(Jt1u;7Ojm|6hhTpYLRx0|hG4d`c4g<8jHyS>Fh#0y<2{zYMN(LU1gC!>Ckos? z%}$tbCmX)xYC4k8VtLH&z4o=D1~@}!S5E~oqPz%SQ$NAKcZE-?|A6OwW4OKfK$e6v zhbhccn-?!VLJVb&$@cRzog^kP*6&ABg~jo1nVA(%w(O% zsj+V?*~M}mtPhVZtn8*|M00)oTJA*f(cRaITLfAr%m4hg%krBWVQ#1yyNHb}kh0LH zT!JcJUrR}}ni+;pYdWg0%W zWWp?FdfUghz4-c`#Iq*+{-!j$A~)K+33A~3P$Non@9vL>rrgUgqpHa=2 zudfI9+nKJTu2Fm3inB0%$n;}vJAheCEd1o|l)XI|Z@}xV&hf(}S3R+O^o^k0 ztFdukL<{D29s=LV!y$O?8|(axvUL2;^)bgNWpV zz|Qw=CFq;u1*&A}jYnP`09Z@HX!NkwY|3uJl0Oek3hljgi|I%0l8MvJjz@ck5uci9 zm*1bZDJ_3^Kk_W`xwN^KGx2`Fs^pqT zcACuO7BiRTb$GHN!pPmTuAN@Tl-+WRa=OYv(e}{*+N?ShBPpyoiSe)_Oo zi;VUD^NEjum3V!5<=vFjr_2s9*y7`cl{q~F!mdttdH3FFr(=(s#I|@CgceV;pfjrJ z^rAqPc*#w|HTu|m%^gE2MK4WJy&KM0dX0CM-$yT%N1%NuPpoBPe5VkCYn;3WM*doT za+k@($9=uvqRY6fMo$9eJgizCAJYtLT?ptaPoLCr65YRBkqJCU>#884qOva+c2M%W zZ$?z2l%hH>Z>(fzLP*9PRn*=Qa#_bs4QB`>`AcV$XQ7+ZiJ&nqeUaO+IW)0C!krEysx>JmZ?@m054>&2{z*5 zaOxKmhUI~g#iP_~A(pLA=`(6Kn#YSqT=QRoro^f#8{Q_Kj9RID@_D=nD09gm4=f)B zVo%QI_iRS78t?^awGZjn0VVgZ@~pd}_e&dulQ?~MeF{BH^SeEcLZ1FU|a#3=brDoptss*?0wGYC&mE^;YN2uv3 z8U@`Lc^J;`>E$QptKwV?WtsHZ{Ekj50e>PP{5L1=qBCoW{0&2f^;%Sm=WYC1Gv=E( z$NULD*966jm|e?9_e1^NaIQbAq6c_fc*OmDQK-*!4U*h!^?g zLZ{_=@w3}3eA`)Vn^8xSV}^1kVK+y^(N*9K;2|D7 zv-Mh;AHU3{7X^uk7e|Dq!!Lmj=V~gExy^9JU6MG=Eh*f8=O4XcOe)|N%g(g4Ie(n# zcIP@h$an+eC4JHI~ZjYy=(w!)y>H1?yhZt(yFxSUxWQFg5u0@bmL~gE;@-L`J zVKInzik>CL)Xl%zJ|$Z=kt$)M=6uEB^HI&R3hT>#d$V;G+Fkd(?T#rs% z`E=L79ZYw?N2oZ~>Zqu`B5~hH)Y-3qQVtybkWO3hs|}hb!{&{4)TC2Eg4Qao+56_3 z2evh>2A%Ir3Gj;s2fK?KEx5imxDzW(uxI$s24wWz)Znf2i3iBn;n6$qN5xF z!c@otO5k8}33TG!a^a;TBogIlrT3~6*!<}?!s`?fj-vP32glB2eL@;PBn!|oK^seO z=^+SGTyCliW0)U)%6tMjjk{FebWS2oV_y@C7|58#_$E>p^2a0aDj&Q-<@1S8j~I+^Hb<+)$* znSVca)+<;KsfB~lu&^lvc{4zFta+biIBT%`bo0*h;n&5=uFe|t^7;flxpA`Itake6 zYd+7n1}t(Atw!b3>u6U+-mZA+8h=K(VK(ExV^#+%XKo^|5~*MlmnF;G1p=qvqLj;X zhg#jy7JG3_3{(8LMayC{ftvdEyXB*zyGYA4?QLaK0xRJ#K*Qp&BDNu%O_pCBQ@klyD*}Z1r)Cq62hgk47LMj zWcr+`84okTaNExS8lM__iyb$V6*Px|q~sIX#N7QYI!iFmT5q?-t;&UXS>bN%Yv|M~ zgj#nqxrVzl2Zzg(hWVQ<6~k3T)UYGm!3hs%_DUsN0ubJDd~dqvtR!969WB&{0LYr& zM#yCh{}G9NCx0EOka4kZ{R5*bx+ch~y7+djI6 zwa>r(kBeuoqP^fQOFq*;gd@Sl?D^A?a|6zBoad(R5ri*TZ|6j48ObMdxMA~|6 zi=brVIl_00R|{&MEH#g~49L`?(zTa$!=aA4Y|83aTtVT6xv#%WCD6u{F|pO2VO>R? z9l}YeUCfcTGcfF=6jCGXcm!kU%0~Ev^f@p!8@hZAknOHHq1yT4{^i4acuGjj5tFxo zv3qvewU|MSrm@$?a~|OBFWQL9u~X9%07?~&d&wiwk_hO46Y)`VfTS;H32H^GRZtXa zkB1?F48|?bUf4d=4%Cs6jQ$~ zrmP-4-qG%Y)nMS{n=W0F6h)KiLR8KN2sGuv_=Tt~7HeoN?WhIyneu-A8Uiax&8M5H zGL^m4HkZ|hNcN3N-IIq2oW^pQH_mo$rXBrB2uO@^Ehm@=3ezr583js>pAC~xbFCRX zgHSG5>!3**<{Qp&<6*abu^xVj##|im4JO5lpOT2$;P*f)joED#^v<8MFRW7~15sNY zHQWi0a0~~R$VumW+>!~i?uewXq2QSd@}Zx0yJI1QaSQjv4<6_(3m#);wsU>Gcu~^} zx`(NXYT&x7@s?8`_SW+LN>4N8gbZ&a9JDQo6XRgk3?sUcx8dJ+8@aT%eJae9P6KDj zTq_r@>AM77siGPZuR*Ms6pfj;@pMSo#KCknHLst)rYW-bV7G|uAa~TlAsD|~A=*fb ze{4TT4MWtbAaoDh9di~1KN}9JvIvt!C(XlD*)DVC$8_YC^bLo-p4Y0hoVCB5gn{>Y zmcUw#I&#T?J3R6t8X()aVnt>|i$MyTLS!rXIO|4a@@{+fUSeL+RUpI*{xK1r$pJ(>An>F_?{(IGL zvPR`>Nd$YOX9QhaUT=fZQX%)UgXd_4fS#}^w9h!F<-rDi<%!Axfo`7-!bFe_qkZdk z&D5@%9~RYR^xxbqxF8ijvYZ{cPQ3e`gGv}j@k zAh(<^^%hfDk{f1x`dyHunqf3LAG(xAYwlPsPQuB(mPIJt=P$*}Q0;!#p@>z8vxUTr z>6<@67EaA?7xN>wupBXrcl+z?-9F1GB5#*!+vr{ZmL>ARc%b@Xhf`1TL!J2Qw&Bi0gbsfAhgbq3ZN#Xv)PbTTxRO0@;bUTlKwiP6yO| z{z=R!i7bYr;t~O{$+s$`X_aJ-(q(jL*>|bP(AWQRgIg{L$IF+p5a{@{myd8`D5f` zj?u!umso@}`M&+K2zCEypAU-xI!;%JUi=K{TU}h(HHi8WQ-8MN-5#)x!&BgDMi5~3 zrLGzF0F$ec5)h~j**wNQb9CU356jn-afe#JTqz?3uJeO?m90zWC0|E9?X+w0#slh? z6E%v(sT93`jkrZif|2`ouHNt}l1jiGS3=7s!N$-Zha+euDTFuQ?mA9~~})aii( zv+dv!ZZo#E=$~zCdbmY#2jH)pn8LVn14jrZ#D1)}DfUix*cdLe5s~cH8Eeh66qJ`x zmlL{9cTSO$MxFe+;IC$(x=98U;o0=o&jXlhPiZ+elpCg3x!Q(>=N-VsYk$O#1fYuAhY(8QV?IQOr}J4Xg| zhV*SMNd9oI7B8id%f&n@ljN-#r8g#esxwCQCa`hk4d1`9k z%T$nWIT`fhaFucz#1Ur^tFA1Epm)hYz?_>qqj7szy@~6h@3>^18)dN1 zVJCmx5grj|v7k|ReWK7lgXVTnV3=a3Wz zvZ)z{9)XYylC%$?@A#F~tK^0n9d={I#{B#Nh{+8)pVx}CQ)??iiT$n)!y~mMFBmz8 zXKvDjt0@9FFzWnVIv@$7&=xOB5j=hQF%mu3T=tyz(cBgdYl5yRvQ+9@bnCbbzixih z3V@&i+pK;RXCfCpv1T7$Kof(1fXtOfBZhC@YaC${K-JJ(;S0D{1LzZA1$u1~ERe^F zcCWOD5~$yIKpW4$sD28s{LjB)7vlL;a^4MTHqso=RbU*levY=bRL5Bx5*8yz652fBSiypSJS#c4 zjmG3OI>)XBCx4O>UrhWw(HN$O6mwV^Q_CW*Ob2fpCTWmR{JI-Ukn98*fm+|vgZpbX z72>sc3>GIZI~^nZ`+`_ieZ3oCldFH)L$W#!w9zh}n37H?TnKH773XoWWcoNUclF|)H_>pk)F-i2BQSyJZF?DDl*fx$Y z8sBYstXmi~0*7F~;5Lcuj@K*l$*G^{c&T8 z=M}zj0qQ~b(RuXZ3*!gu4NNK#=4?12hWboJJAF%=hXUrfAVE{+L%-m3Cc_o=3-N%Q zmFr25Yom0a{fE^P0VLUW))hjygdKH}+@q)YwWPJ1#7V}=OCnL86~gd}yp=ovZBbe9sS+*3hF|3R^y5}QUHqoE`P@j9t$REd$WV#Fuev`3Oxcqsr@lq4CBp`JKu4Av{ zkLc$;7{>Hyv->4p@(3=M65yhqD$J3nX1t=-b9(QPd3?*2gyJbiKWW!Xn3+6VK#->9 z<<0X-i?1^aZ`b(<>ocXNjj!o-*pGkW{YYmvAUNMTq}DWmQyTz6FThRDkH4x-05E@?{@%^dT7JOQ3f z6~s>z+n_zO#)1k$xzbyS6D|;s9Q+<D_Y?OQI$M~6lZ$mR(tU|kqvj&ep<~^}4zSg;O)%m3CC8kJ4*fOSq zi$e=RauP`Fp$GE@^=67 zj8Wn!e*d+PZk|!G|3uVd2i0eA$2WeGF(qbta@i8o>2FFg(DIH~p7ckAkYjja`7CHA zU_Fze_b#v|-(|I%540qD&(i&^QhjJI*Qmim20J^yH>8qCjyx_Qf_0c4o7$C_Uakxo zoMn`xAZh`3(@{-Te95WYV)njk<_)(X_nqKe@D<2QHa;L3F69eLw3}`x+i%Fe1^4m9 zK=b~TdL+w$dVru${YIRHO?q3?r5Tk@vo$%6D*=+zywW&-`GY2pE#nv)oLywG5m6i* z-SGJ~Q{~pHljU}Ox)Ev3mV(k=fp8ft!CbI{;S=^0#?}BqtPd;_4$_hQP3TIh-&bGN z57Z;()W>?Yp|jkmp+Y{_OiMiQm?0p^QJz_WTpK}59Ba>@P^_hDlLQS zMBxrTO!#S-;$yOu{)?jR=_YBx?*3otn;MI({m!z{Uq2Y+hUyXA(B+)z)NNOll$vwy z;~d@oxFZr}!f=IHt@?Toah&M*F^e#KgJ>gGnep1nn8!K9Dd^48-n=%HlBeAG_KsR@!3KzM}Ua; zH!<3#nx%XR1O$b0XPOG;fv_Tb_;2rS@qe{03>6S1?1>b?np2|$#_Aym_(TnfLHa)* zA31nSq*b34wz-K+l`F7`J$5}4LL|ihez0tzfK{$PE>2UGJ_s2x0?N~`9Q?nX2L=*} z424CE{+2wKFPcw6$C|;o&?_-qhq!`!A@pB@@rFUfhD3}AiXXrxoRNSHRCvoz?z{2% z-z{}VLj*{54JfRlqhoPV{7)BO{y>EU?i;X{=@3y#uuK2*$j1zZmOslb_udzd7oSaGeG0FEtmB>p37bOa@^IE=*qml0$|NQo=_ACb8OV{=#K-=A4u z_32Rix2!19q5xruD*=-K|2HTZHE;~Q#&A6Hbkx7*Gg7#MvfO%+*KLWzVk!n8s_S`@ ziJ>*zW|2TtIPAxI8cJ=QvDU4rmIlnp$Ynj@m-aKetU%hk{c3-72yI756%hLQU9HRc zXTFHtT=`^^?!uqWwRcVyjg3-i)9ZCA*SHD2`U(o+L*F|nShcLB|0N!!*YJRJntqk8 zw7t_*pyc2CUG#><)LQaiUlE3qNN;O$IX`$`*-O#)GxtOqDoE)2f4UC^XdA*xoscrH z$8szF=eGqfwx^ss8Mn5&E}~L2X)SIo|F177RU-hpo~dwPOUhI^yop6Dao@f=`)}d= zkR)vlklKw-ZjP!7(NU#GjQIc2#^1(TQV@$6X0*Is@#Qz&$7-{vV!dXqsp5|m0PP&@ z9Eflv{4d=n)rXIHt0GCKnoo*NuO7qev?smUAA7!8#}EHvV*YihfB?QOR?yKxU4^te&5+Zd*^fkkbXVPdzrUTv;2j}&e9dGN3G>H}rua!2-; z%`-az;_mUuFF^NMO@~vkn6SBM{K7#>a)Ca%=2MmAQsjti}^U^$5u~|4WusQ zKkGK>JYd0<@-er-fW^s_Xajlyyv8OFaaL|?DEY&Qj{qh_Nkh{cM{h|OVLp-DH=ZM# ztwUff_D5}9L^CAA@W%m*;O|RLj0Oxr7#C6l3@}IbhtvNcvvvyca1s_u{kr+4#`EZ* z`zo*4e}a*=1KJ208gfl>JD%aAks>=lR2^eI!`N~8w+h`#c#}Due`AjTUb2Frw5nXB z&ZwN}Q!rdK3a_xppEdZ#d^Ix*8j3RUM6=Pk<19gn`Ny}_EWZTf3||NK;iYCFsfn= zK`)uMY`_GtG@v9tfZZQ%YtMSqy^<}GJhtr@Xm?geg{BATWFi8W%v5saqST7icggeq zF@bFuI<-O*H@>q6VgA3?1~9xhIJ-%)L+y7&sDAx3QL;n7?BzD(^LOn=N<3T!&n z$PjFLnN(hDOPbXoP}et0BlB!Ps?EHE=Q8x&i}a z+hp?{(7pcU@CrX`#qw|oZEw$jMKuoV`QJ-wWZO&QfZbxgHY#i;;#G@6Ps#0kx8Jee zTQKoyZKHsNB_p76tqtD435%E;Cmi!Z>^Lw<+p2caS&Q=j_*OHRnsv5@X~`cU?WY3Z zSOZQHcn`Ve&wVzdbKP=}u6~9QSxDS&P74ht9VBXzdC`AiHjWNKNd?K5j_yMyYf=Aa zgD3SVfmxY2*gtG5+u0pmLeX7n(AaxE7YAqHqCpg?m&73xaLHVLQ8V&w!-lfG(yKrm z-XaHtV#RGWM*{&YqJQ-6?>TspQ#t&H%*-|D)*aqW@zql%gdjwD-ZH2zu7Fu= z(Jj#j=Ksi5*pAG5v>tvF`J4{>P0L$wol$41VxU^o?rB?J(TeT1M^>k9;3>~kiMDC) zZU+4OZJag1KL+%d_X(Q{(e{{jUQHo9azZ zsH6_!q2+dO-M_8B-)(Tr0~QU4uk^GFpFqvS`;&_(=W_oZ9Hr6>Lfx9kwo{11giGq) z?W=evkA?|ydVYv5Y^?T8@z#1~zxn#s|2r;xALe#6o#S_n=iKQl_MF2N(nzQfX9$5S z4ZweGtf>DTj2VotFL_<)+1=Eqb^eg16Nn$;9pqy+vk-&)f0W_xupomJU7C^s<1ucR z2Mh2&BC|q5^XJW5{xSPM#xFvNrY0@E`0l#{gL+3Ntc2a__zM5O%v9KpB9g?Y^OKfk zKp>J2c~?%m%fGtglO+QrbbK9%>gfFM17IWf;Rk$!C>qVgxBqGmc&oQ8;K=^JeS3qt z95|r{_&lpr^OXdzBhaTT=c?ZW^u&~a6BAa>!A15zPP&h;1mG`kxISE*JGz`DY8;eN z$;Mn*a{vI$+kU;5G-kI8AOg=A#n-yK?i*{)a&aw8e}xm3HhH!u?0!^e5@sA@7D z=5cI%yHSN;|8n&q@;sl{mbP6|yZlx@nLQ3^m?x(#E(-Qfl;NWaIIaGpt_}y>E?x`U zA9_>|@Y(aX7x!{4m`+PkO9^jh9H7Yj9FI=~o%_AWd1T}JBGFN0i#nfZ4(EwJu0-n0 z*GC9b9?X~p`hVg(Sb1#5o&haAi}$o#2QStFKE-&sh{s#C!XJbB<9;6nYehDFZ`Nt%mO;xUiA3)&;`P101Hv3A9dgEjhl?4LZyiaY0xe$GsTQg# zlYYR+sZ!w6+nb&j9HW*vs*RV5h#hHpkW|i}?h#L8-gC$!4v@|446B$as*lo=@`2kYWrKuQ9V+lQj(ch1+> zXmDydYZaABxnId<+6b!^s?J)e{5D)EfOS;rur(a-M&demb#<`RRG{NDTYog-?73UH zIes6G{-Ie*t^T%W0H^}o@B9cP^=$eCrbp?UK9CV9a!by^xN56{2|YFp?Z;2895%HV zG~6$CHO~6B^#=-QhzJUL&9zUnPG;0MTy*}@f1f6D!1EQY>9rF3bRNgZx^ty1S|i=! zx|&5b?)B?&++>?5%<7q1do1_lCPG^on^@L9PA2^cG>;juV^(2${;V*Us14*pyvDur z7M9j=f7-1)UUK7Z4PhxuqGf72i{n7xT|4nx_w<{cib>C%_3%Bdd&|G3ggpm~7$NGm zt7-dpH_!k_mzX(!a&hu!I=e-~cOB4g*fhrIGT%|}9nA{+*o$2kKmM~WBs?TkRi)=N z0mY{j4(wV9q(Y+Sw64`9#QJsw{o&xnMNY+ptbAaZ!C3-vtVv4_$v+pjo$K zLUDD#pt>l`1R;OctWD5E=JL3`q;y%`LBeES)Wk)$f z3-`h&!MW&a)5vkZwYO#|&Iqw@?Kw2TF_7f6xYD_uU(j&cx29=iw>r4|WOv;u2!3a) zKV7QUDM;{J^x>=hVDs&Dip!N=;laXv9S(rP!%1kp9k1M^hY{qf)8Dt&rw3? zM&cT3hWnZs-P|Wuv2v8yV*$Bt+~K-Dx|SE%wBYlZwuLCP3Vs4sW>%ba1RUM+HUG(v zVs>mduFNcZ0Ou(UFrOO%nB?Hr#JxuR|cB3A}Jf0o8 zoT9*eq1=PDOsT`7k*lP>*FH2or{BGf?Qns8o2MJB#{8#)>k9{Cxiq03AgkB=1y>J{ z5ewddyP{U1{&sB*X@pl->wVYdW!dOPgR1=zO_$sTHP{cV0 z-yd>KOxV_n39reXOb@9+$jHud$P7ss$M?hmU1 z31|1v_GdyXJwCbX>`j)M59DDBUu0RbV_RK>X3*sSHiVl~_t*$js%jw8iVs|T3_6&s z%iIid_e{Ty=jYi|YxFuMp6(9DVpOcj-39PZ)MfkQ(})v|fmh+GF{>bx}Pd-t6yeI(x z#qDy{Jq_DTsiEUub5P$~YK?xt@A-U}-1njAGcr%sZ;{H0aO9y!0a-y#QG%!?QpsJN zG$aCzKT(6xi*0>_YjmBNrufN!0l{;y0{ug8k@sv{ziKn}THZ``ee#=3PuR3x%D}^~ zB=yTiSvrjZ%37z^cUNxI9byy&y5J-8%I6lho><&X5%6dRlh4)M4PiWq+aA^JQ*Zj_ zT@h3DDlbPTN!SR4KZH1(E7JlDW;EZi$KVFIDa-9G_uXS4`ja;cXDWRm|r62N)(Q{l7yn82gaI4^K;3*Cy^l5L^G zl-#Judrc2RaD=ThPatO@^pM5g9*UUxX*#iA$h~yIp}}KCV5+!mdq`t@FQ@G>HmcGM(jbdcknUcjlr+-a-M#1*q*1y8 z?)-+w=l%BUyN_f4*nj+kYu1{3?wPr+vo23dUgMF_Tfh;ZzB1ntv%pKa?%JJkXE-=p zg$1&ksQss~f3AJyAdq5`0V>^W@8y?tmU~SN2p$}V^+yPELg9?@rqL4tedDQDU}Nt+ z*Z!x@8DA4JaQ!)+uDWmk$EP{&y-a-t#lGVPS=x+GpF>hC+Wq_F;z3YWfpEss)}LNt z6z1-*=i+76kXiDlt9=Q9OF+zIo0aYj=>FcTFrZ3ZGAprtW8xBKSiQcPz5@<`qdvlO zAg4X3xH|OPmQNx<)in=H3(Z}Li;b35HE*u1AwgbxSY}!4W*jaSjl`Bp@oVOw29qS1 zCr_T2Itm44uO2Ry9ym53MjDQmkJag{C^!Z&(FxgrhNu#3iB%Z+-WIE6973JA9I8>m zxs;I>+Q|Z>^p4*mnY3OzR7*z;@)kbUDO3>edxtH$(%}rA%`oP=<9P+?Yys(KzjjI{@e9XERavzpAJOM5Gek>+fjKZ-4=uaCI^ib$Bx+Ms}+;yC~((q zIB^w7ZmG}0)k@df-uRKVmqAN}(!)N<6I}R46Mba>-bYXo11Rq7IB>D4^$g6HImHF} zv9W2jZ0gD4@uNTt+fY6pUlGuP8}CFTUMGAeB`u_VGc7-g?2uGLXuPAtoukYc)bO}D zSLA=6>hCT>jWDoi8&SGvvs-x{bbuUm5H$Dz#{x>PO99sA6)Ejg>4h6z2ldP}!@`}C z`2Ie1vti5PJREj#L>C)_-y%8J-I z)3pZcQq`CHrHw5!cISKpzgEo=Y>|452$+gI`Y9b84iGXdR-jL#MNd&(0Qsdz)aS#T zt*{(riLZb9Jl`wGsxrQc={qz$EKpnL%wV z1ic!G<)&?Wwt>w?U&DFfeuT#k@KmtxMqPf&-N8&5@|O=D`4k>vkhRu2s&+PJkavv7 zp3!iSIC_zg|3!kk{ll4HWhMeNb!bvZ*(na87pbx zI}NR7%`Kultp9qh}i<*d{=qWFF zSfHZQM#g7iR`Gd(%m`mWod6HheKm3~%F8d>oOu0#o;aZq2h{8Xqn_hqe|l~iJrpBao%N6k6(#l~GLUJ8<%i0LLV3;O-3-jP^WLI(pTm+03Vk^|}ai@#~xJpwvfJuDLUY2knLm4%zk2%qd<)D|W%7!TToL)XrPv ze~&I*COJe(CUg#y3WV#*ZB@l?3y3N-9Tc6Q=P;`*fV#9G#Z7Stxl>Ty8pj4XgfYB; z27TJvqensU4;6rZcyuEB+`;z>-?SZq<$vVS1Ir|^t*i6tjJGnWp-FM>6C@*LXTD_j z`vH=i4;bSC!Pt_qLLnUooDES{C`tj8z??&qwi6rcj+huoZFuNyNLlX_SYInsQ|R}6 z$c|05dUKD)Yuch)on@Sym!?r1R_pgKih_s^&{@NsavIJFLTxd9MC2c6=yJCg7WcY( zgal~52tL6NuQ(L>W%I!P@Q30e!>Ef+X})`;ym20jtcD}!luI{eHT>1V{)USBq-vn{ zb(3@@osQoim*p^%z^pWdrfnzUQ#guWAM5^%-F*f+@Q^aKXc^8_?TF7}!z=1NBndK) z!>nAmN>!lPd)BIL(v;x;)Mw!&lghAWhk}9~+(myd5BO3K{nIRiD4o#%(rgJgs5-n%uvnkh6rEB~RDBx0#Ww{v`I zfJ2En)G7`^dSB*tK_FN%K`N>WEmjhg+w~$_ToBFyg(ht2Jy^i^5A>Fi`^@5LepFN! z<$X#bnnuDF3)9u^4CsF7ye1$q$Dn4xlPWR$)|J-uP{511rMB=5$H9f4mD=s%X zqu>eQY7fi;=QipF*y*%GK-+@?-2GvJwyL_c&@RB3GrwT2R^c5g6EXxk=I%gmn6VwA zx$c>M1FiaYs3uO1q_#6Tudrj3Xy5X@Ivi@R+!w0^`&C=T)qbd$-+TG*!#YA30`eb7 zC7(#Zt$M^P!G>9tkzamcz4_VJ6jaIp>sC4SGe9*B&)^jTuViqO;%*}1VHw{EMtUs+ABKg40AiG^jBd3C@N7UN{0yhQL@G0%oayI5<# zxej2Ov>4mAP+hc1=lx+EZl2Ta_`}sWM=kw((*PbQKDi9+_c3*?475^b=dEi9VSPbj z$lOJrc?|z)jrrdKp8~*`mUs2!N*TJmEoknik+GYMr3vSl=*<;N;&g}S`HjfHQH0bE zrXpfTpSe{H9u5bSd-Eu(`q@6e^coM4Al#qeNTf>XTfi|`=t^xjyCPz-O^qP*UDAE! zzpdJgqaW}PpyiRz2kKFw@l6mzd579+~QtSfw$hSWK!LtrKqS;T7jmCQNH zByE!}dovt)0WsjV(5}Ctaq~;_vaSRg%<&}U8Iz%yqhMvYIe6`62VZfYrD0@DeB>+c z*Oxr|Q4bs6QLTzp9j@-~`)xLUjM{7w)Xguzo?Y>S`%u%qnA-J1zae;`>$jtAavoC6 zb8EZjy?Uu!*WKpyFcEMh62K8dM0VE-bs0Ay54>E->`7e-{ys_+Q2S!77j%^W4VGg75U9K`{aac8zm9^)3>?MJ!%3C>zpzx` zRYeB8szQ1K*UkO~=l_Gz0-Ibussy$FKgiji?-mIFt`A0C6d2|2qx1kr8TdU@ZX_w# zEJ_Qop??nZ&%cI&0$*OgEB`9XooFZx8Az;oUwl~{>*{X4sq>6;I_7=)l;cQ6rBWPL zv~L5TuF8e#7X4Z+)(4J#>6d)!&6O<65r3a~Fd!p=?{!%5weXdA^!83JYY&br|Fj4n z_1l7Dwm+7*ojiX!xL%92d05r)zka8$z5q#nE$|15o^lGXl+nW6ns0lii9yHb@N%yQ zShXhOqC$-pZFZYQ{VA1v#ojo6hCs0lQ@h634>&cXxPK$v@aW=inV*sFysgk80?+Nc1L%v3Gyd`T+cmh0|sfGgCuPxK%CyLEkz#Ukwf%=+M08E%TD`psm;d30NHE|rQQIyK%XuOl5a>Qr7FM{VKWcq-1v6%2~Ej!itjU0*nE zdG_xJZF>E+&{65oepzimUNk-2&-dBINJA#-k7Sf!%@g#LDI+P*GoQRYtjNc$c1RriOUjn2e2QmgDk0L(XT;*z8U=q_1-TwG$t?T#RogIy8j#6 z2exA_wC1P}^KLm$XQR!G)>c}2vCGsCZXLtGAVgRd-Rn&b%W0Cm$)a!JgdDRiiZAWm z|Lgh!AK!)s&~UnI8i48n)CgT6sMy5KR72g*BD)83#e*;7JP zGy0qVp;I*B1$=bHL(7f&DX>VER}fKM_=uE6lp(dNP?_#Zwz~Ch7v?nFFA4#|@_8&N z0B9?|nRe8*C;t1F1VhWgRbv>b6h;Az?hKibhhm{BlZ*!-2xV5L{5)dY`I#quhzo~n z1^5OP%iL>Q5wVBc3#)hq?&VsvzwRF_(O0F{i99aFboDfRijKL|A&$So=3lKnuaamcQRA4+>Ke z{CHqFnudl=)Vv4`hMXu=Q<$-n_%G>-z^l$U0YFuAaRa}1@z0q;6^>j%a;KlUzSc$> z?ouy+k|}pSP}j48+y0v<^ij1Sxpt3X(9zCU%+nuCuAG8W_-=XO20V78l9?R(i-EUv z`%1bjx^5~BeEG^6hVz@kskJ&|Wq_PUuEGt)PGk9N{{u3fjOP2RCGR;ONmncDShkgu z>D*C`e5E3??kX!PY?>Gb^!5&Hu25Wt>Kd7B(eRKqx?c)!|1VYa{7^TA1`-~OI105I zsxQt2(1I@AOl^Xa)b&2N@XcaWTgNJ`_|oo8L16d)gFN{cvm}98jmSeY#`gcIJll69`=!PHH_6H zzB~j)cIl!h%CAS9SfDb=HvGSKXfQdt2t*eS5Hf`Kzik)F;RQKt4aPeY4Po&_bh9ut zzXL+rq7HT^Vo+kO7)y;6%1V;P=mfPh7w3NjAAe4X>6PG$F9;<;tu9A-TGgG~k)WSs zRjQu%nY-viAR3O<`T1lVY3L4azFWb)@#^LE2o<|>TjsbbEQX09 z#N%cI*WTmK`D0*rzS2{VnTZY=CZ#8_3p5RQ(d|eS@3At$y<^>+Ik!)l*LZ(yonPwU+GUkNo`R=sNV z^N*1A6*!4C(F+4YYe{0XOJMn+{%84ceeZEV9fyr#w^s)sYOp=_@e+2!;g}-dqi$GC zYtM$Nic7=n*keM+ndb|^V8XXjGi!SC$HafF*4uY-ssV5^-+^goR@k76>JoA*b>jCM zeQ`gI#ofNtz5MGxTe`o3QG;Z}f9L>QsjnTj7-m1&+|AZYtzeM<&(3{c3yqk63<2hy z+DpxmZ)C)E_pNqH>c6m3ESUb9C_heFm>t=z%*@5rA9nU2ny2M%kz4+|V5&y~lcG=} zR^k&dKevc*W9S zZXLuf0vM&L4oJtWD+G{F0cKK?t|IIr?|b`wigB_C^?dCgrHO#!D;Rmmyk5$1N%Jb1 z`)iw)Gv5^N6Sgu;>bQ2O*e^f2GQEOs=Oon(wBz2>X@4aL5Gex=E`STLzt(&D=H-9% z4aWHU)$K)fJkS`P9-?M4-vp&g!?=b&G>KlAkLeF@E?Oz5-7H-3_hM#imo+R;zwfA) z8uw17I@@HZ6nRhj?t7>9;92A8bLxr){=7w`*7NYTI2CPov1g8qu0!jCbrsaMr6ffj z=q}w`xqr;4zbHzo%D$jm2qYPHoiE>%kMS$k$w^`ym>Y>e-G8xbjT?HEDgm2YxLWsK zqdIJ&P@cC4{E17uy5<4MfpIt$#2+0h+Kqpe zglD3}VmL2iM=SIzh1XR!hW3#L>B9iywD>h0G6cj2^>5;bm zkQ(KT>mY~a?OquF`o^e%!JP$2EV&PupCpDwKze<_@eLRTs8jQEre+GI+Ryu8ux4(< zAc9*{#?)I8&rfr&;wB}+b&dB1$hg<VT)Rk+~e+RxjZ<(t^WC&j<$i*UZ8NetrS_;#sYi_SBJ~C6E zIU>BNw2Qm>a5-&-TX#Ap)4V`C4>&7qXbij`c)P8?p{$$$hWF>x>(ZMC06qP9rj-nd zOxL05ZoVqJ=XFoJ2On?{#v;eED2|;nFEDLuvn+4CHv4@FHAHLjL1#L+K@U%dk{QEW1cgyTgZ|d4~QcE3DS~{G6@LO+xy3MC?8Trs44kot*v; zk$fhREFQYDa}H1|zU8TtC!A&rrx`s)J(~_dB9I3lkHGb#Dpv7=kF+cgMh++Zv+Uoc zG8o~}QYKi2o5-dBjNT)l`yM9LvJ;jP%^@#>vbq8rOiL-LezR@=U{r39O=LLXV6dM2 zk-z7e!P`o4{nWl7PeshE|9ydiupLThyJqR>EARr7@F&{sqUsBP>0Ki}YP@1fyxCf+ zR^luP>|Q_vo8jG4bra8t&Q@8yGrjQMof)kTyaf`bHck>BgKC23tJN(MDzqhk` zoa-uZk&f4bWS!RTy67i&M)&T0!-M>_?g@AqJ~PFCb}yLoArdi z5dRjIAOpf=%j0BF9D-NF&a9;2&n^_EJ?V}^H(`=6`Nts+O<;CK_LVryAPmJ4fJCk= z;9}b!U;s+mBu%Fsu1m13S9TgPIl8g}!oAVaWM%QhL{c)FN-g5H|{_@`S0y3#| zt_6CApW7HjfGP75{kHIOpJ)D3Tnk_~a$M{pdxC~Tx6X%KjQfw>L4&v}(b724nRXxk zsb_p+5U_Aoe2;E>f9l8qOJ1qt9e+m*GGf>UQZE$j5mm<1nt5$XWqz6i^9Ht+Khh-5 z;DD%>qHiiccp*koiZ;;#nV3pLd=JoE=gSXPN0@GzuM?X$U|_L9O5qFw081ps7od^1 zXS*M5Z#nnmCQh>0`g#Y@e;{5U3H^BNHL1S6h3Ldc&*u=wh9*>yo5Kw#ip(g9e}>vAOfR=Q9CnxMb$p(_JsejqL@ebscB$2TI?-rUYqX}AjKovw3D%|55hbh z;$eHu=^9ykbn=}SWFhr7AJFM^RR=I=7-zv0>DUaK?M@bv$4dQhN@CK18aI@=KDP5k zX-Z0>V~!5C<|x`QjTY^9q(;Cf-%L#VOtA?DZi(2w;z{Bc#-c!a#gy0MWbsswv+=PE z$AaO#F?t>nFUq#v@ekRS1d@_4*Y3ylhVF@?4PXKJ-+sY+)SZ@ zkM7Z>VcOqIP4$AW0cp`kn_rY{U*;B5bQm1c8UxeeEe?O?a=TewucF<_S`%YL~H;qU+C>)3vrVsS`siRrxlZ7*C@)^&0}ADK6DV`Xj212thuN<|{{{kXio=9Pjp zo;^~2exhU#J>yB$cVly|B10-F&u#s{Ndkm!@t$(m8H>8nUJJEaQkhGrKk zk$vDno%gok8a_{h8Lvvcn^uzdVD-DJk4`9NY5$>y*lwhO7`g2Fy*#DYA!IGLj%;(Z zBS0H9KqZa+;Yt&u!$ZEv)+1qh#r0QHSnDfvscp0S)q*dVsoBHk`I|ZK6}S;b$C{r` zwraKfbA0Xi?S21g5lP+w@F#}djzHic7O}{)TZ)T|i@h6=`HKw9v?MB*%YE!0?hz|K zZpFha9;bUVKUc~3OJ_N%%39J9YsJ@cWEWn;>3hZvs#Lh!y+!B|CW@)A7^hw^rlO$@ zYtbJ3O+G^PGBACw_PuyBxDF zh(XTKMlCVv^>X)%&*XRdd+ND=TS+`NKO9gV#3z7(Ppj%Hkzyk}^v= zbbbJgmi#(eVq;|szjxx3hx_aO>jeL%Da%iN7$%L{0 zXru);0U(u(*%1cLSsrLEEfLTvFT>e+p$Se|S{iP(R(uh8)GtrkWPcZmmF1{sws{pF zAJ60$&^4FTysX~5;ythAy${?Xsdz3woE9@ zqBXU8>m|_j^LT#vjU&8ma^{~Kp;5)^)M}%C|*2riJ zIAkXPpB2v1Hn!wAyH=g4EC=hZb?(9$(NRe+F>SU0cg5r8aC}d8s(xfW)y0*%=lmt7 zQyzlMOd9@Mvs5;6uPJL8DCyW%JwHDTPOZHp&4&V6n|O5DE-cUa+WvxcF$V775n${B z`nS<{J+n5)RDy5m=h4JXA={HTeYJgzn#{nj{w*F1`f3bo!@--vlBXB z3;vd_BD$v#`W#7}G25{fSI*$dq{jj7S}0Vv`>|+!QMXg|sTuC8r^@oZhQn#a4)ML# zL|;H^E(DLlw&H3Rep1-x{Vv2tm@#|xJvin;%eSz;3bHMmv&sFy^6 zb}eb&T8f*glzf2hj3#pmt0}e0Tsd-&Zm?wSjPsxOK2Y}nen#zpsy&XGJ=GR#58gQpfwMeEP|W9xaV^p zh4mhnn~a>Ebj*C5)jUmVNdxNvV{NB2q>y8Df!l>x_k_aDYh=z>J5qR6NvqXj5`OobGN zsy3`VuLU#pEY4PO90K7yBuCo$eg$la6fnN&AB9q=woL2^8nRhA0p_kxkJibzGN!-2 zrk$TCYT^A^8lo^XW>jq=m`&cs0gY`quaF>Cf;dfbGtjn=ruGPg?W{Ts>F4O*W4x zeCY|{?<4CGng>WX1#@~KX~_+PtwFQnFSqoND-*5zgdxk?Dc1{FGp0G>j2jN!lpkxP z@($y79r7Pp1&L{|Y6(clqmKnjgL0&uD@PZOJxIxL-QG+ldV>HQneMs_UtT4mw1E z=7*X7P3bW0bk*C{NCTc2K(MJ`-g*Z2F@+TwdJ%q*>y@5<#urv<5!=u&`X{DX&)36$Oq~B zYH91~a;RT3ADoPUnFx5OkHz)8a4*HqWN9+dQ97jXHkTi=y?AmR4QvH;?BSS^MG3|h z+Zpw;Z`v5(MiWT5<#58hn*GbxrUI5u27WMmeV}MxoBPP$H$EIb*`dMYTEJv6a1^ua zuq#?AB>SG=-FyHEdeeaT1@)mvQ)IAiP}J{QV?8f2H=Wic0CScBwQc5jLreEP+SsFACl9h_|)6zBY$QCP2ruDR|^{tfo0Zz*(vP z_D~lT>=77e_co!SZC|=Z&2(L@j^G&gM{KGhDN{paK7=&Jxtm`B;$DF4KRG_)&>9!~&@I>QT3?4rxJ>CO`FW_oUL=#F}~HY@xk`ld z<``pZ<+E8=lgGx7)YW_U`6~fc_zlZb0d0c8p}~0hB29vS2qxbFcr5%Cy>R*gevfsD z;A{X=lJtlxclG&WK3s`S zD+kyN?m=%IST_azBBE&NI%yTeFtUncdinsbrFhPkg?;Z++Md2@9X0&a1XQ=p>5b3YpJVLy1eT;M(Y3JymPF&*l-)9> zxWQ24b9?M8)kyd3!RR1~4`--$V(-wB*y;_&1#D|a$5_3=B_>I}Fc_V5{I5M4K#*(v zxmq8SdlHApt?n0@H+I(Ge+Yl9f2_YHe!E02At8|=gac~~8c^`{InrO++eK-;$`+7O z3v9alHAI%z`Z$W0TV&C`>M)5rgP< zth$4UwhmRneD2(;h#E1?=p?}*h&7bh(5lQzqfBe_VR|xGo9@SctKOzgg;k>SVqRt) zi0#uXe=^}u8gO&caVq#~jIjDWc3*tFpv(MM8#4Cft;oiaeopT;eT(|fWt>?+;G;1Ru>oG zjRvcaZ3oep2Nnj9bpaz=B6^Q75UVhs)eN+PP)+RcEMfl!uHAVmgmCkx{UHYgPM-bS zC+b@@#{!1M$?m9OiQif?8?2J!D%m0+O|@#)uc*Pge9nNpeIFJ@s*aj^*0T;*TKZ(aw1#hfLC*`G&(qn|ogkV`XQVYyJ9-Te9;tc9e+x@T zzYqNPti>~O0og||B(Ns%SYQ-=4EyrJRIL;88c#R;3*bh7L1~BFT4T31*|r>4w{q|Qi6xNwCzc@RI2bfS-Zlyz>j6IwTtnIoXjTou#?0xF^|Neshc=|G4&=W%B*VArd?@l*? zb~muDF`M~BKM?=0-n?e^7dOxHoOP0~OwRx~p_zG!-W5%^p7%4fMDsu0&wWM11Z}^= z=ehiV82SFnL}rM2rq(WdqF8I(PrJ!2yioHZQZet-M{4C<^mj=A*TDa0A=REKzit~q zQ+u-30?>TU7q|?)(alhYWyz^_5^!AirB5GQ+OB&20z-dzH68qLk1zOY6usvHpLm0W z+gol#W9W~;s#KsDx8Q6=z0n`vUu9+6S?{!G1en}DH9be))O|YM>gfmE>$vMmoo{#+ zVtQTg&xXy_>MiRg*hr@U{YR=YMpXCfj&fMl@2>yw$hQ}Sh7H_Rg?_RHB*s6D`cP4i(jtT=qA?9R3u(`}-@7_oJT(vuBqSlW)h5Po0Q>Nr>+2;kRAb+7`JSW+Mqn zD+g(Xx+RSIdj`xb^sA|m*n;ntGv#9$URr?l&1+2mdtZAzX~Kx>)mZ z-Rb@CI&n@P_1QdGEc?~7zlZRK?*qp};|-FuTE1kReeY6iG?MZF`@~(AitXJ^BpR;~yn3FxNdSGh)hMQb(z3<6OA z|7lcZH(6wwR`aZ1w7@cY@++6l8P1zTIhO9aqfZT}?{&k}Lva0mwm!@%`Qil&@<(Ao zMd=}BUYgW$xT`jI;tRG$|Bl0-?PTB_nFl2b>094+a!9m)e{R4xgoQT)3ZUom#Zl3~3_y$lg^c;2J&?mg!2!y*~84tezV!~(Aa29HWZcgnt z&AR&^?+)_{Udue)TU6hl_d6!uo*^glnxrjU0!jUWivxOzKiok*Xj`bTJs-wVbI6=} zVN8UJ1!V6J#auV4Twoa9OJ857PGlBUg3o=vZ$UBLwD;TehAll+8g!b1+z*>W9l6iG zi~FGxC+OrnQ1Cz87bHH?TTB+mUQ#$;*mYMj<2sk@D0M+xlb=w%$TFhn5*1 zPD%4)aov)M+Gxhy8@J;}`^z25ZTGAM zcicspeQ~MTKBoZ{1ZI)qp^ZVG@o#Qv1o_b`?5-kL%~CZl}LZr z@@L94y;+BK^{$%Ryrq;Ki1!Y)V$0v;Vn~p;Y1j-X{J&AkMpG$xQQfvf714DZdQDW% z?u7dwx=#(MNNm8Pu}BqK@6Qe&x^;G%%tao0l1pz`0(R?e>xQ1#c;_+8Z!$n?ooF+Y zxh&?yHGh{S61J&gb3-CC45l@>aeh=kA7MjGL}eV|AoA-o9gEvEP8s$AO+D3b=P?fX6+I5Lf4 zF*In`Ea7A7FUw_%vZ+}I;1@s0i@l+yOt+PyWhiuCiLD8Pq*x#MO7X9jg$)i2j~gfK zompD`28bpq_oFHeOD+cE5qFpF40lZ91wc$-KO6crUfDvIfI+7Rn?s_F@lC|g@fIoQ0Jf_1&B8H&_FxyfQ_tBan%?K!|zSbjy| z+z6!3l3y$?;~)KYf$V$QB>-btMX+q6kyHaXJOJ0;8g(`L1|XCVJFzqu-oMy|`d~u=TX6QLnU!#Xr#p`}Xh57d4O5c6$?j_E3b-IU;#+(Gv9g`s} ziW!hD%za6tUVT6^xXJaaChw?-L)08O)Tk82WXx4&w07?2(?Xd$ld4A}|J`{#sb0w} zS`PCaAfkbF38&+j&P=mKh~ zSuI6RTF&FyQb?HU`*LxH2(RFT;LNTz2iN@^WTHd5-a^OvV_fmlZ}0vCGPe_37*THV(H7bPthnaeN{j^kDF@ahsCAKeS&5``H0wR0|T7_v`v0B`T$ z3r_KE!TRI*agT;MCr(hG=3+`W{h;&L6CLStG7=&np-% z8~|fq-EP|f0;Lo$33pycOZ93gd_h^o4QS)QHA)Z4;bfc-Z;u7`aK`42ylBz$#lH-7 zHvMG52Jt_#N`qWiVceyH_0PpuK^+fq5^lRQDuWN;&ZIKOrky@_PuaOEGvv!}>G-ewU#5jOw0{!E(r$>aBr zt!WpAv>W;1NQ_{c@40m6(>T1L=qyRE5zrPyj|!v~)qp8M7Ou>xLc-p+H_*u_%^Z-U zw-%g8Ak2%@G|$g7N5rSK^Q_jQX6PuJ3UYBk^0f&;(E77)vw3YK^vl&dDV;XwefRWf z1s>a{rj14!q7Sl|lO)ffy*FO$Y)d}=Mk;4opEF#I1{#=utGbe80%@2M$wh9;rZ2~@ zUph6+!7XCenCRhx_>*DBzhJg7-135ok877x6b8dV#eR z>oMnutOj%=EHK}N*5W!*6CVWT{9Hp_Qy44Uk+EM;!u>^L@pY%#4T!Ed;I4dJF?jQC z$3Maf7zc3(M;Uu&+pytp{My=eq&ytQ8c6*>l;VXW2gKH#WCW14Spo_@c z9-_@;$Fo9kjNr3L9~y2#mbEzM&vV<}z9U-6WH3)CJ8vnf;P77Rv-J42;IVW!(pbB6 z)6;xzlAH!rSxcE;*l=geT*3>=O<2>GqFiu#!ki31bA@imIuY!6fbpGexN}uaN%F(Qk1DK6`?<+H5ut~v`Nh8$3qHoS?Tc=R?Y<6-K1K^~D zgO<*64=!d5YK*H#1KP>iPHWEJ7`g~_pb`|bwt2n5*7+{X>tD~C14xNkuG-|>iI=rP zMT_oVgIrG@ormdm8#Sn)YeI+lc{jRX-t@C=$S5*Js25w+X#wQpBHeZ%62$`rrA5py zuUZEGW}WLaa9a5+h6I2H)TJBU{L@S=}C0!(h&38TCpBM+C+lmO_vEM~albdlQkK+Hh6V z@MA1wUHLp45S*k0(WqJ+?g*f6ciAiob>Ig8`}#S}9zy`G#R$J4 zAWcK65BBWE22ob?&sOiYPU2y^a_(oF(3?y0Xb;s8@Kcof*8K{;BbNOLS@sxVzUUrk zDf&n*#i^?d4Y!Tj#s4n)%pDl*raX3ntmQPrWmn60b8q4L`x=T=a9VH~MnMkJT8QD? zzKp=+eFt=Nd2M|lrH-Ce)UjfANyIoYXG)uaR7j&QwTv(%(3m-ufH0Ty{ zyBxk!s{sw={Ql89#G~HQ;S%l%&Z2Ke9*RF6q5(orI7(ki5w*FvJIFK*G;pc;rNeum zuC(~LApa7`2V7+?%GHZYiH#MlV(Czdad78#Gn|6)A3xI_x_J1vy=gysP915<6dXbc zmhZZ}WJhu;9h!UqSn!U>mP)6T&Mqd;Pe&FINlk0Rv$?3=5uXc8Qy zgv8G*zmU<=2I8_AN=!j({7={*AO&>_`um>r)9_;5i#erO7mqE9_(p4Zp|Q{XAJ7%e z*)qx|rYg;U3tC}|lzqzhp`N)R{{|fj5mCPsELvJkreBtI{k{mz@}MV}+n_s>T2dL<=edb&_hY0!=zVX)1~@T)8*`vchS+^+9h6R$rlF5r~7WuUdB;!W;96bA=ml*kdLME zTvRo5x!h}Qv=g}ggJCm0-w!(qNh*3u4#S$YU)h?ljE2%Ghhmz1P zQRUvO)l%b6&Q?YzrhX3WwPk2AN|DUetIGGoD1wLWWoY&!&`%d7?nd%s?Q7c3AI-S1 zw6|pxV=M3`bT3QyHB>Lb2XQ^|17iXKc;fDp@?yqEcdcwUJJyt-$~vktA6-ggaG~Ht zcpZn(%*crC;Uf@0Ec)o73ynIAl9wl%K4f$D0^^nLq@(kc=0)=-e^YNOt<}*lZrAY~ zAlKGyqF8dFifF|%p
o3n=dB*TYz-LXtKn`1$W;-nd8uXE%IqZf*rWu7YuZhcB_ z6YvsCz}Ll!L;Y+5F+Bdd36u16+9_&_9peOj)LJ)=M(DByrSNC4|hsE@zL^_adIM%m6H~WPOD#{U;?--6ww74 zlxkulYi#M|=~sv>!o8mcnLfZcOx$TjzkP%w9-711V$7Ebr#>sIJ^mWG z9>2EzQqvXHgSG9Et;Fl5b_S{;zB9_f7}n)zHkG&8-pPyZEhMvIA!(9>&fTcgfa>)0 zH$Bcd&4j;wcXn8Al-6bDUSaLbZ^7e~^aR1%OPA)Qk-;3TlZda@8~Ifzk!Eop@lTG4 z?J)^<(IZRX#t^>zI=DGmS%AnSYzPqftD$=Z)H0OYV|++ErWV!x^;K=c1eQ50syBEY z2z=ndWrlPY*Ph?MwQDs0Op3iJU#K193tX~g0Wli{BA>jd;pOz z73@IuNle+u1Zj`tNrH2UFWzSKA-OUjO-?0p7vNt^CZ3euYaCSUyAi7#wD63Y+_-11 z-Z%NAb9wucjO&bg$H3f*_O;(#PM4@`eB7b*;FnInjax2UFCFnx$XvKYp$ck5H|;p5 zfh2UK9?2fwxpthr+v;EZ=DehETJr)lP0xqNDpKnGb_9<3{YF{Yd0ql|ThjaWI^x+# z&j85~rhZZM#Kj|?s}itTQ;d!M@a1nC*U}uM7Oyf6P9Jnj+F!79>bPIrNy70IKCvpP zoE~7WzN~gxbd5I#dyvn?&n-go4!cQ}=)q>o^8T%G7#CUjne->eH`VHB&@3$UVt9Jz z_-&{!rxe|5Wm#6+;1`y>chd>|su&1~ZBBV@7k&8W9g~?etXttyB1sRC_M!yt@M`qe z^vLs#Sa|agA**esdpc>Zy9vy5igZ(BJKB&#wYBn01*32RMg2x~X{FVbz}uJ?y>L5y zj3H=ctBFhKnlHPETBhuB6huYBoYV$Hm;z<;n}pNqL-&da2wrIFwCNVvh@4o-7y<$6+p9Og)dNXG*oNR z_AJ%VrI;)W`(L5@yUfN0#_T3_zg)Fn_~4#V|!5IyM3D|!emC!=0O%k%m~mKYw2+GR87(-zlC6Il~i zuJ7{fBwTX%x@uoCUfO)|!!;cWc+W#a?y3Ebz*jB!YzUP(yZoe<|tc{3A zIUZ6uYf`t$%D#8Ll)7Ef*k_ZCJ}Rn&0)4xTMBmKZlEjzPTrXo<<@q5-PVepUJ_OCc zopqmT@I(Orq|~K6^=e{w-w2b(xVox(iB>fEMbRsyiKCDoTT`I0_1k)T94P4Ah0Z0e zCtev({=&j@o&nBre&!CO=mWOZ6FHLDPgUiV&5>)$FqevDmg?UeM2IUVoSX+*=9MhL z``oL}yKUQ0d%~&$co*4DZy3(thFvYK_-=OQ9Q5KmiP6#J>`tgvA3e+owRA*TuOS$H z+<_ApZ<57VnW(XT{1&kk4r6}Q!ZS)_ac55s*Ck?gMk7X`C&ZXUPznyh9grL4Jea6- z;ouuH#xo%@%YLEfkH)a57Xe>Q8}*6?%8&jP<0W)}gC8XbIW)BWg2O9^$zGh`lxbzM zn5o3E+NO*WBvPCg)NaZ@zO4cW3@cA>?{8sLR;#qyc5$HF zb}?Y9jbR+JzaXXeu|6hhZ|)6?6|EdD978QO2HJcjbHm4DzaRuIr7uA{nwb1I>)SkD z%f3)`gsR3Fp()%D8;7Wp2}>fQ4uAXy0#AH)A3jK1cy)R^S>sET4_5QE*%Z6}__sfY z)au1LxCJ<1;E=#S^HB-pmV~6^F9(8|{SrC2YZ~ct=twGAf^9d=YzDn-dROliX?|s= z^7Z!_*rh%;D0t#rrm`!DaM`*H-9_}#m^-oiOQ$E5Q&s#Qww^ky>ZNH?y1Nc7Al-Fn z2?goyM(GeZba#VvDka_Bd5})&5Tv^szT|v6&l&?g;cxG86aIk%UZfc80tr* zI?%XMD@UP*iki3g;W~Ol{U_53-3wB0EY;v_RLhe0Ery%{LijcFaMm;7d)=Z?urMp% z>t;g{4&U}t+uGc}?;!JACioWfo})Xa?R9E&b;tL5x^R%aj{vOHsp4X#uLh=Y*2lT8 z3hdgSkRxBNHH9aqD@D$>5u224n`6K~?zSA?8ksb=q*@sbrN`ilr#Z_@7V{;w(`U)7 zD{X}ZPbkXZQL5)c^+d4hC7~o+bnMsaN)GN>^ui{0ch$3bh_TsARi63beSO|N&)su) z0?oVVkuV+$6{hBVL)d2wgNMT+EbCE-V;$TNL(unOyHJ4F(ZvezSrH_+SBSDwhN13W z8j@;zZ*ly*_SL~K)hl?cf^2;P9bf%LV6Beb{U9MnNb|%)4tlq^o+R~BFcvuoE=|?9 zSFc&xtRxgPr~QVofs@3d3n!-U^D5uRiEj26O-a#w_?VCUi!5nIeT~o3MlZ|cJLgtn zh!;Inxnok`C{;PA-@NDXA3dj1RgyM3*=im?o~z>f_+o9 z76#`3Oz!udpy^XxYOVS`Q%hl=^Zl{>rB-Q^QTZZ!IT*eiUIa=>GP?tUwETTAo62|d zt4PezOTV04fQ(L<1l`IMpTeRv_j%G{`zH)!9>zjF9B{2dyGrflD;_x)FGffFVy6oq z?qGn{l-<>i|vwt?|rR8X(U-7ip5g>bDxdK=@v6GjFO7b5X!2U4S7tAvCi8Q zR|#_8$k+O_O%6Si>CYY3-f* z?+bm-v!+m_yu3zD8tjlQ`Af-^)bK_~MRN25V&RB^!%H_Q1SE!rsP9t6-lB_?0QGY9%1SF{^9y_D6fY>*KudG4aWxiVKVG~74*$(V zqwvs>s0$tb@O3IY%vB9Vm)3Z)^HS;n=03{#sjiM^41bN6A1@<9Lxil3hBz5fYVF`4 zj#!j+{7ME|t zr7(21m0`eP_k$KbSAQ~*F`yp2Aee~cUb0nVZw2dM5D35r~N#+Cda*vVoNmc<7rX;kcLNMQH-*cxZ@?-G; z%&3QWh~Koa>GqA3!&gMufy389G|3;c8uLQmDCs-Lkkm`MyfV9WTTi5dbt$6*m;ok+ z^_&K`0_y``A$PR~Xg&4vyw#TS^}K_qRS?M!mT+!b3;P5NDxCc&Ow@{v8S_n_|DJ zh>>$86-&iWs1H$d-ia#0P(usVk7AAt-x5*crg zKBASnthWy9^OFQ8xRLio`x z1E0Gia9}IkdQhONSiJus^3DY1_5GKpq3*YflDVT{QJYbUtKCJ6Fl z6mcJRtK{R``BDhOX}}|RFt$;JK*C}!#Co&eF);g*@>!K_y{k$6zSQNf{iqL*4n~=S z(mK(Wmg4!Qw6#}h?L(bV843Ah9d0~dRIUzdvcprlW zHwCa6A=wFl_4KXUPv*$#f;;HybJ%pVeWyBVi_`?f6%`<3KP;a2ctI%W#I{-v*7+1V zaYF$vL;#Ldv@%j+Ng)&j>U~>}rc3VO*u&Fdn|->LJ9e@E4Cm;pPy6G}ELp&`fVPc7 z69!TVTxz5lwMLxI4*LFu)b^lM8WXdoN*10Gts!s-v)sT%3$uC>MRpVE>Y+{tBb#6m zsH1AQgNx`{T8?CEf9s1EWB^AwIT)og)sXpc*IF}QZ=-WmJ{p;FY8eP^Px@6vcxUAD z2c!Pgy7f1tG4h0i?>U2sK1*c?hsU>X6#0Ye&m1 z-O~42OJy&+mpsM0HzO-q(G4I9%Hf(}yb-wii9jl^viyB^V^Q%0X1d@q+9>@433DQu!+v^cq4BGi| zic}}q6J^o6(}X0*(DU(34n7oaC2%<3KCY`#Zyz2hT1;48XcMig?x!LB;?|N>uWt00 zkQg$Vw~c4yEHRlHr=2slaS^6RQHqgWr)b$X*0xYl3zWhK%qL=uI)Vd}TDk-%Eu&!2 zm%ERc%5ttv!_Wa5{1h0ihmS^>)?4raM~PiIM1rK$WEs4?P1d|9t#+lm&{x!mTJ-6m8tGq$_rl4(PcHA>_Ae?Es|i zmz4OHgk^maXnO>6j}LBauecGAzGH~s;=}bS5?Oz+OK!auQV#@P1-!nHMq~!VW2k-# z@J9X|Oa90JPRR`07Z)+iavZ=FZ`^6PF7Mzbm4SbJGa+}D0@FmccQTbN^vUS;SREfU zJ@!*$>9R1&(&ArEsuDr^d@gw-&D;Q6y455g7sbplNb1>#_Biz)^4Y8fWCZhp0S zfNNwojQ?p(Z7U>v^3#OV(fVBYhZ-6)@?da@`2f?=9n#3%IB+7XL*SUfMS%R_1Z^Jr zhfrT8Yearp8`jV4ODm91=WR0uZ~mPy396Z5(o?V>+Y6ts2%Lml*e!C8HG2F*I5Y=X z3dpd4PkzUQ5uB42T5Jk_^#=Io`gZ7+x?BAj`7p|kVWHAQ;YXxV{%aVU@1Bd|E`fgcHR#zAYyI@p5n+HxJC;a1X6?BiaDf!~ik{$vxDU^O^K3ZCuL8 zgX%bN`+zD=u$gaR0fy*$67&tc;&og~!-pG3(eXms6YaisUn!o~ zok#5j;%>FobCr_%9qxBs;)U8Khv74pw9AMpNX^Let>_P{Nz!pPX&U#{wd}#4qUs#k zmZAg5Pou_eALkmEvm+YXilar6)6fo7vuDDdT9$=}_6CjXhck2pxAe%7sHbAZ#FaeO zNMYl?zP-HypYol^?Q&Krg-g&a@b;!?$(c7W_a26CARcVD?q?=u%$*2*Js|osa2=qGq9^2qW_wD?w@_V!a(aI!t1EU2yqrt8XmyG{O=h7|X7aEH=LWAv*sa3#L3OC$GHD#H<_fL%0B3OIG9i z5nuUfSigaX;6~E*5!9=9weMl!ezYr=irUQ>8~v0tuZfnbJY=Ai`SZvyqsANR1jLB z@tC;?RwJU%1e#59uHTi}t#Te|pRMIyhF2#_=zpJyabp7BSBQIs@}W(vrh{iCdIt9K7NTFC%I=Fma7}lpQ1^#KUpC)sfpq5@ zE4Jp>Wj*TB+aSw6H(5J&E42p!RPCEiC!@oFFBZe7^x`cTwG60@L|?o1KOy-@=6=RJ z^LbqGiT*&HM1Bo!55$r$XGQ*M?Da#|fP8~;c=F71x=k-IBp zd`N0$Sa6lriz~lBjnmn8;?up!-Tb@=dRJICC6BVq)^d4?1RtFNep z4r=sVM+j51z}CDd>^T4FF#2x&ta1f0f^y*?S7fZ^*5VkXvfF7+_mgRX&P)Fx+Bh3@ zm)*|a;(GgNf^XeR6lB0Un4D^p{w*w~&^p9D7^J8rGq7SnsDyscb)e|AR{8Ra`w#J{#rL8i@akAbD+|Z1JpG=j2Tg3s zT)azV}^0LnUUMu2r32HrTDkk(5nLM9J$# zEg%hN3R=R^tykF*S32Ush>Id3LQ_(}1^QxQ!k8gm;GX&>%*9}l%M6Tfjm-DI>oLkJ zxDQ1LPTN81-cdOk9R!q)BK>#5ui1Xz0!0;YFk}$n;AY*a7hSd*6|RUdK7O>BFCky&P1x5;$9+jr4?RApW5t9kemWq%)SXh}t} zu5{Xz{vj+T^<9+~Uj1#Im9Bmj-`kh}!TKK(nvtQgV!~sFaL`%UyN#+sr6nm6<^F*5 z_Af|P5g=8#x8MGv_@B9fqA-xjaP&nIQ~(CmkAF-PMO2j#?ad{YZ?eRDBLp26B`taK z>5mbHgVYcdtB^q5U9<0Pru$Ea&0JK(f=D$BnTzg zIeF+|pghG1_CHZoM1zoF$@i^9O)}%(?8*DZp3m`o1w;_(2+;f~@mIg(iA4|Lfha@j zpUBHlP^`y6(K>%+IZfersz_f|^%nS-z7$}?==3-e1_odV^X>2NTRlKtIVaiS;H>kB zXl~eDE?m0p!6KNOO%*EG{Tvbcw&-$@StDv|E~Zp2Bxn$Dzc&{_JE!<>%kUp~ zY_ym=0_%Q)de5d0EQ?o*bygbf?^>O_R~Hhme{=HIPlAo|y?lM#FaOj!o~jFUbiiVkl$UND6qJrXT+HRp++XT|v09|ih1m8^~WH3tzg z2jKH?Y7Ke!iFds8_zhj~pz>gVI_BUh{OgN97|i@@`(riBW5v8n=P|<&zA;oN*1!`B zTbNnzi{Rc@f{Ts*Z2?1Mh;AyKQo4qNN;RvfAh~>-zLqQbYRL$EGih?KkH@Mq+*toB zT3^hsLBH^66p#c0Kx=-HS}{fVTVvVTLdR}n>6SC?!}+u$892!4AFbl=u0e)$`j z@8N$Lo3Gr|fDDVz-R3BW!jLX+^C}8LYNzFG2?s=DASst62k@nQkSfk^%tZ9lMg*<1 zd)-}lmNm4ux3jYot)~otZ{?#pW~^qni!ex25*@N{06*=n>08EXDb^Iy5{DSV%QS5l z6@aI&^(Ve04i%;`>RC}c7Fo&A*E#e9$BmjWXEQOWm`wBF#l9_KBv z-kRu}RQ=)b5D;Pykbm)-s`{n zI{X`_FkvpSc0R0EdEG}_zdzry-YEECeYDiXF8~QCa`?TU!>CqD2E~FOuUE6t(9o*p zr=XWo4;6pg&Ayl^3y7+e0Pmz8yIC>Yj$x4D659M+y^RMCsX2fBi({o0mndSdV~7dL z>si0tmyXg(i#n0eR4>;}9rL!gsemUQTw61Ax%m;YE#TRvE;1wi`#G2cfRO@1N@%n7 z_ro?#JTuKA(E&=nmy%HDdwkA3Z0pdIduPgN0f-$*o6kmzi7d~Y*d@YfA%E?^I;9|z zSur&c2_noHb}#*HPlryq2+lY=`1ttncw8M=k7n@CcL$-=`1$#jmjoa)!Tn|dEA23S zLBlER)Pg%X0gmfGYy_LbK|kdiy2zmO~tsvA+}mDHi7lV-0yI9kcI-PupY z{r4RTO*tNgxF(QXccECp;TRWQluk$D-IC~jje44MhKY(&pGigbM7Zx{z1+-AM?pmy zoMrs`bU%G@sOm1et>IK6tJeI`U=gWhp^1~lvUTHLllL3J*6y0-J?0t@UXNZ6^&Q)_ z6vM}fcRfTM`|w^W9#lu4G#D8}JLtgHtE(c;O!8K@w;N9>^?#VOz)n+13j8^nRj_s8 z)g!xsh~QDo%<>Tfgwau&dG&`GSXi``bjCd**s5Y&8C=?T6FzU)tJ+!aB^lCNu6hfx)$Bvjz@Hp8=T8E}*5XT~qxYmJJnf>?mJW^DSe%)&@ zOW=E$0MY5rkjur(Q>Z)+Vf{nI1!Ko21WR}zQWaa0Ch=?mhEPDKCE zP^$2+IsRI&FEqm9#T=#Joba&}#Y81>aWQGa;KJhLGGa2O3@ScZRz|+wI;K|D)H<>O3fd4>1`Hj1D^))?_Hh`yjqI5N?Yl4 z){R6$j~IWO`xhk9pID0PSZ;E4l9HlWig38l|NF>q>oh_HnYnRJu zF{YdaY}%<$XPgkKvw~}S<(wtp_>PX(Xb-~;gDRvF*Oz%zwvO6BkIjEqY*}Il4K9<*EwBOodk7Tus zORLA`|H$Uv-<>X+QmwyGgPRP9ME~{u6zbjPY-+*kjt@nbGxPJcb zFW`ec>&#adr+ClNOA_9xO4n4-bjdr{nbI_x`>&bG|LDM%AYbelC>adWJ1oW|!JV%A z;{t8hC38zM5pVxHRQDKka$#|1%?U>589eB6dA+_AwC{P-ycd@!R(sm+B+* z7SRV=q)c?jUKe;}S`Bf;CwwjElY9v%L7>*V$tl%>=|ttyMOj2hA-NduXA@ze;YI_E z(><`rgQL^-i*b*yrhz*X#1~HK*+3+w;PQ z(fscLpWZ^M+UiSDOGWXjhqD|Sd~S7fYH2qvLKu>`mS>KX&C+uiZ4J7(Y<$yCyA!?m z7>1;KlT@Mkj#t+;%3#G(x1zU4irwvq@l+=3_?<`De>P|=8${dfyYSj?HeNm)2%to1 z?V;--ING0RxjTsxB$sTk_&IoV8)?FZy5VfJhM+vjqon{l~%Vd0&jl8 z(yXy0avH}r70W))gKQbjky-P>l(@k}=3P%xf9!fMFw5I9vAeGt zzROA2+PyQcNFxvi=w#mSYh)KP%IX4YOK`kX#8do2TJV<2ty4LDu)Kt>q??bk(kS~7 zXmL+Pf$05kOY7B+x}#FwW6!qpwoL4mq^6@8-;UZHcms8a`mML*Qinm3p5acw8@*lx z>1aUiJI`#dd*k7oF23mfw4Nnir;#UE^HO~Ww+YS1xclB-(!8=oSLHX}(FgN2Z`jN9 zYy3tH_!KsW60Z{H1radF3Pv7U*Lf_md%WqrDl7WV%kM16GBeqI)A$nkVL=Tkrs(r$zyi*Y4vfGlJHq6I@bXO4$Qr(aFiOf!T zWC9-p^(+gfAbR}HmkGv9G6zxYwoh))cV#J=>FF(i2~DN&Q4Ec|Sazmlg(f+*jNYJO z=_9OKOC2(#Jb2GAT+EMDSD9nmG6rzICag-Qk0{VE%5S=5TfX_J`K(`=<8F~0^}|;e z9X$7oAMRVgCyFwrQ};{7SgfD--8C_(jRdiD={Y$uJB$N(>t>UM3g9ZNXZ!xj?63Bp zVWxL4lf7)D-05`JtFp@Ydo+JYtu+uN3$&KZE?luK`*_G)YsNrJlJbegX5?ID&O|aA zl!mK|iQ`}_A@?HVrwyHL=P!HATbjXtFj?|r^W&oue(^mPrBx(*87=Myih4{rnSPzS zr^9tfw)c4^*r{8)*8T7W4gwr4*)hrSa?u2%RS1QJE70p2hya6?4@>vU47732e5iM|)s^!1Ot` zG+54ds7(0cxXAj39{hL0@;SWi>=%g+zGQF*{|btV8Gd8qD2 zhUvQdR+#kHGc-KKpExu)ogN7DwX4~h;p5wYOdaBQW&)e}<^W~`^1kp)|9uU*mva;% zWDBjYi8#$;Wm6Ed*QXl`Jq{cmPl{>AL{mf6X`*C&V*<+WUkDfr z>^a@ms}M}oG^;F`y#~saWTqk@Ju8PXT@CYBcjakqHEn;w9Oekog~joBT>30(a=2H` z^x#thygXXv`I)larjcF)>{(dW*&T=Bv@7iyEIgYN_s*>AIfJ2WXg(pH`rd0iQP?_M zuWAepYs!j@8(au}YDDe&N?uVECnS2OgDHjCW8j^+=_J&n4Y0p=U{Pe~g+*?fTA+RG z#V-Oa>t-DYT(x7yG_LEj0XQ7wq_cS!=91IBH2dvW_@DA@@?Mq?Ch-(fsOQ;#9(oA< zqY6C$1Is&NGaPlq#!OwkD-oZMMJ-m>0PTnCw;SuK zg)YtvJc|mTDAeBITD#>XxTPEX&31V7710>Xag+l=z4@ks_mxSr)^6#K zS7J)i}dhdu)9IvcNW(N8-s6(^sxYa{Vlv_|)hANJ3^Ty;8NE~#mM zV8^7uBJ4)3*bxn3Fo`-Kg#r-Cah+K&^My=FBuM+h66oF~alsiz&~TmFN2JGkM65?| z7;fzBInqAjPvOQNm~$u8XX;=&YWiW?!Ccc98n%8R^}8Jyd5wNKcqE|oV$`i);((*9BxR73cz2D`?O)q& z3*GZYF<2IOunmJGhT6y5S`Yud3Xx7QWm&)S(LM}e;b6sr5d4!AF@@|~JF9;gmg*tu zd#O9aMl~`1K5a5vs`B^D^Nzk;rBq1ofc{O$gVw^zlT;pw8e-HQL`UE3u82sFcJHwP(KCfZO{=#-a#=7enwXuDQZUGE#^0FpTw- z*C|7H)c@nMQE*d3T(!+Z39SQ>pRfr=g*HP350(@_&D-hyD8iw2#&x2c>l$=ChVsyfndBC3o<8PK`TS#7m;YE<0%wV7d8K9b9x zMM|vR4wvTp;r3n$VJCoc>_VBvb6i%BD(>MuWjmJZBj&zb_Gzq6WM)X!LtEH7Ay=m- znu{CjkkX*c1hl#fR%f{-HijZ_ysg{sCMxBV&!@DA2$(@9YQ@w%`ec7k@rH6`=YqK6 zTf*!-le4)MemoNWX()UY{@>nlo;chm5FBWi0zg6GQmj1;L#+;N1;-bl4$HNn@i2mNAp*k~kVzpCdwI{@u@^!auEhCn5DCs~P6K(ph5UBo5FxI$^d#9iI? zBTPcWxi;*Hg)}~0oQ=U zpReqIM%Hy6%*e>=C})Ln9}7%g4sJA}r!WUHi9OARYXmDi{D9U%7c?AQyFz=t>W}$a zv+&SAmj&9lt{cPN0b|i!)?-xOLGkxTEFbszRIrsh4S?Vqgs?oNa;#hWOot(EV6QYK zGpqlu z9jq=(q``w#qul|jC>d?s(YX#wj}FE;mAT8`OjHr8QYY?4KkP}b2`BkE~Xk!}vg z1$?)8m}Tk?V$;M=9!E&k7rjCuxLz+*A}4fET< znU~{jR24raB4^Jk`%q3}`$!xz6HexAj6^bo*95}IpaGkMpYoQPoX*b6c};Ql<0-fs zurVm|zx?e{F8m7Bn8F$I+z(A`c)g{=MWH{9BKPW?>0^*lX;)DUl#0$0-PgoQ?&}-3 zozY=bdAzp-D-U=QoS~~r^`o|GtOpQnWxM?l(Bg%$`4w@X7rS~p=7>@16-zB$A8P^> zWf8u2EJYHQ)}g?0K~@LSnUDEo@+`tB<)UXbeJsMhAT7jj(Z;eDR;KFhk@cu(dx&&^ zb^H!*l)~-=c(?r=pDMf8iS2m2%>AH#pX79f-|GkjZyGXVU_o94a8elo`3a^a$UG** znqH27PyNiKDD=sL7Vs72%&+cMETJfV@@sx$5kR>C-FJ5`K7=ld?UD*QVk@j@G2b{! zRLyyOv1 zo~l;Rmq?7r0(=cAOLQsa$$*h`YyjiZSb1&9e}Y{QClT>jK8M< zAl$ZfZ8Fl%h#u1(Z zUQ89rg3E<>=T-#+92(xTl&d@ReC7T<-uD+23PKohU^GDZC&30K-0S*DDN&6Q(Oy`B zx1Qj>LpR(M!>M68(dcZT)q?yWJK*f(pX=U#QNZ;(!3-rlHB|m#c`DjqIM3&_Rr)Q_ zCnF$6Ayaq+I)y;a4U)8#8%qQQUc+2M9GO3epx~#V=%u!}8urGIiPbCf$BKzaijGJv zi#>&>`MFbN^6_TCLBB{VOxlrtj3;AP+sInx*0u7BC7Dk0>k5yZqKxnPOKLO9b;;h;Y zK%7rz2FPBSF~;lxlg{iLkfea$%U9)mhILHuW^(kI2NOA4V(djH5TM`CuVaPE$TYPj zdVQQ;aTVmj$o2V`>if||`zCPBf#;G>Q>2l8ES66!Q~`7&(sRN9(dx&0GP`Cl!Af#LZO`!r`Zm%Jf*-zdMwcbz|C zUk|}jD)KgKG)qXDHk=?otznfAZ~X@iqGM#)Be`f3nQRkUUae8`?%(d`e^Upss#uk8 zVDIR`SNQj~V3*WKPi5QWpyq6fUK0_pi`>J9=G`GZ*Cp{}0_LA87dVsaMhS594M@R@ zPem$)h|go0LbBU)kFx(Yq<`Zn^8qnWHa%%FUqK<2!;IrO2n4sVerr>0bQ}`#t~V4s zs^`Iq`wGM^>e=;Wv(|G)U~0aQWVVoNNl@tyCme)00fkx3di`-R3+NUfO)gkqO1%`9 zJInA#4uVD&PE@?wd`K#l(}L&Dy>>tv0+`&1K<}%I6)o&j<8k5S=N@SWNL2Nrv(5EJ z1_4pDHZ3cf5&< zsg--%+e{hwx-!<0AKjUReVyI%K!Jc*L^&CfOqQkYxSfcNB4Jd^3Ez~JP6W*bN`$_s z7Z)%Q@Pi23xqZA$%#{SswEhHA5l2n{4W6_=*XxzIo6}Q34 zWvLkAa@zA>S;-%nr&w$(%pnA0;j>CQOvJx%uTI=n;OM1R zILi3=bB8@as=>Ml`y-?wSh}#l8(+*=85~F|&ryWe3c*+a8J~%MZukEfjylAHmA1uR zPq=D##0h)b9%!a7_!up)*E2=(@MqiHlHzcXV~q#97uF_hz{}n`0sRxXz{gPeY~ix+ z=+Lqaf6`wBfUa^k9ZrdZ6v{KxE$Q9!W2RA7j|s)X&}Tb=!AA|ulTD7!azF5{i4hS; ztgJ&46UV~XezfK-p^^-bHLo~pBVPXdLi~?v_aRa&&OlzQ&=Vi2V^ISjeOR8mx5@;E ztr)c%p_aY2ZQ3<1W!cOFnM5#?gN2!S6ekkt{CvAw<9YpfP?GfpCZgbgp=w-fqYIO z&Sy%}D0$6^RRgN*hGa9yOql=A5yu2^tAXvrKLjD>q7pQxj^SK)hWJ(e?{LFE98yE% z3qxQcwy&wyD}xHv6fh-uCBpzQ9XRN*m~d4?)hEOoSbLZgcYk8fKm<(*&@?5P{}2S4 z(*bs1qR$71zX_)U7~eu}ynEy0{~BKe4V?}O&4)0p8Xo-@@~?Q_0>vfe_WzyUWI%+b z1po{R$QJ!%Y1$>~El*Dn^Zt!@SxCVNCq9x#W-s2(zeoO%?nge9#(Qa27o_%+{pFG_> zi;m-m&S|c_jn_?9+X>%h3kz+Iq%Q)|S1?vogoUNt9OLq?G81*}WxqYjz1a|??V$7G zk)%+CQ-(j~>w3HTZE72pM-q7x1CLroggp%5Qy44)y3zy{JcCJpq}Y9joe%2ej^NVt zhl_Eqj~+85Mc2Nr@2|7GRP*e`_U5i=XZOWalbH1Skk62ugcXi-KiUL2mOD!@=ssK{ z-+BJzb3!_b5~e9A)$0g@q>4?NV}mEh>+ptX8_!njRSa@b)msagxIK;>h}45fez<>nuWp4v+(Nr>sSRMAC}BS@5XRy&Bu#5 zb^!=MWGe&EjN|d+o6atY>9Scxl`Bv#!mm`g zQb*VERCH#`?wPUVSG^K*@5{~3mx#(&SFuOcBv)6nyEVIzd;#aI$o)@h)!jQ}qXxWH z6tQycy5qyyVc6?s$-3jxEe-tL0QBV-lT{{QB;>wx1>P@VBJ%kkI>xvgh=gyVOidVW zJb!Bbik1$>^K+sdO!<8;U6wiayvcV%kCcs6;QcV$B$CPJHkr}AF52_L*{Ni!=>XFQ zFdh;~#0hHe*K%OhL5^=pG=K7^<=RU>9?8AjnViJj`4y!CyUsRe9#!ZJ-Ojx^<6Al| z&AVZvQ^?}LA0eG*eOdwSZY+rqOr_ZQoT!zJ1)j3Jj4sks9=wr1JXXp!z_O=`{Spdp za@s~Tg|!v3x8d*Oe6u}fK=FxAdVQj8jBSD3X(ADxwcIvSa0e1Ruy2>>Fwtr9j6jrroyEyCcdU5T6t~S@OJCYjNydtbh2@axRDEoy8=(-#6(OE+qI0}F{>QQ+Da|LyK`H>}uXT3L;|V)Nlxzbv0ErB`ldkdH>hj{@&A z6Jx!Q8*C`&D-pXBCnJ1iVxGN`nJuiSme>+Oy04j)Hx`Ek#|0o(3i5g+p6qn4-RT&f z1mNH&PIUEr?*o9}8WM3TK>hgeQ_D%qu?lps(3X6M>N$Hsbfk<1_-cZyrh*A3R}x;R z2l
    wo$cbwI&q&eySR_Dch5i|ouO4kDmGj!%cdo%$+QdH0yV^wuiUoDhFw?(#g+ zAd>&?*_OMe8xj!>Zo7szIbofFz1&gN_1Ifd6OyOpob09UlD1Fb4SjivNstdFSy5MQ|YM8E$U83SHlKAsdXRI;D4;!J9tw8GEtk z7|%*TK;N7k$iM#zCC+5b}BIqs>Nz33Q;Z3&UQGRa^d08Og>XYj@ zHRP5mgZfJ`3?qW+A`m`NsrK>kW5>XwBu@^o;|!;S$`(1HXF%I|%PiI(bJ+q@=7URy z8a8~s^pl=DFoHedaCq0NAa7hY0C4+317-(%X9EF8wyzLZo_3Ro4z66JidD?7zWEe8 z1n|KY{diGheQVi%1Vh>R`1$VIUT5k9q`yNT>Rb8}j_`T&Gh<8k?I~;@kHTNa+UT7)(c!4p5 z1ij6nB}D5e?pGwX=6UR#WZ|8Il?i1=_5p9eaDupDtf!h_zuTTwa-&ijw4;v2C1Stx zfvo8cizG$QIo`6VbzSvNs6)e-!mMfR-wKXO-)$grx^ZfbFd2_l4o2PO z-=bj!8{xeizF2o!tlva|cIZU%tf;e|9b)~^D@}@1@3~35H=mEU`7MEQ=hBu=(jl7X zG<3`rzkQp4MPFWqw90B$e_<%w+0(^obI_<%8?id1Z|2>adz0Ic9K`8^Jc z(VzFalwr`uFSb1E;-kT4G3+L%u9nmvaCOGuF3`wR7%QAkc7c&{_L) zXNY(8@%7CiBF#>ZN))+cCR3GO`cL;*6w?xqdSLAD~VpvEM{ji8_ugRcY4PuQC z=J3ZZOUHLj%EHDQt$6KgaW0o!I>1ViA0Z3{;RNe`b4j%W;_jUl84 zi83U}sT8bDl6wOFhqJc~h^pJezNNcMYUpl|lI}(XrKLlpySuw31ZhzT>28KDr8|ah zhHl=?eeV0b&pGG$^nCII{yQJeH69i7L{_X ztU1Oz@-xAScesn*r&qn5@-ckTw=W>Vw~SPpT@kb@Myuv!tX;y%r-r2{7}O=h=~9i2V9km+I!3xouw2Yo>r}QtXqs<1qe*{Qx!_3!5(sy6rRXy-4)a?M>IrER z7l%z~npbH9@kef*ybLm;exa$L{X33A%u3yG=on=bDM|vS6A|S;gCR4ai#!=$AZ)eT zwcB+j{n*%t@OM4`>((uz`ZWB$t74iq^PvsqGxSrWW1Ji@0$}Km5Pjb0nSg8|T-Rms zDuk5xFJySm5>L+-KfV*s7yNig~o=*-cR)A(Kcp@pRhQssjRK&BA~SDvm}l5bE4W1J81Vh|Xi z{gWXvYIWX-G}nEKeFGZRCc|e zF%~}YrhP!@bLeG_SQuuOS6Y!c&N#EP&Ur~Ru$Gf~AS*8vvmNt|Rt^H=W3(2!*~jEy z1y77FJDw+Psw@~8UPH&!30E6<3|HC%W3})jXReDIP^$H~D~2>Gt^kjOs}XT!Swuxb zXA<`Jcn6xUD-!r=fyEW8rQSl!HZ6(I6%JMvU_vLcT`_t?yHcMrvdm$Rk1M+*8Tftt zxBwD3oNZ)I*Jos^=#cuk{ujtd1qiz|zyDB!(r?Jd2w?|AH@>xa95`uD*+5`I$$9Rs zsnDm&$P;VY)Geo=b{?RNoF_7-Wu-o=S<#;vHBqrPZk&CNXEQdsp_ZDpH84Att78VH_|sob7#V~ zc5$AVVJ$;l;KYLN*;$ zL!XQ6##B-&885rS-LP|udTv(wUHUpwR#qp^GktyNvd+w7If{(Jo2YeC!U?KwF{n-x zR|b4^eDW(nuHUB5tCyF5O*FhDV7RFA2D&^wwQDFGqO)fWm>%TxX1L0Aofi)hHI{ID z$=3$%9vM-#s8}3_qcOVjc54lQ*CWu!UjkZ-rPb6zchTU$vP;wgy~NR{k9^9Wt2$xy z48;}QodcWFIoN6hoa2si(hMJ$*<^0_$5;(NE39!s@~>NFs` z=uC)nJPJ|7!d0erKU^cpVDLgRyY?`?<9j=5Fx+k(U1EryNPShIK$|g2-@MAr>DFa+ zK=Xy+5KwEPGzO%?HJp`?*jR7B7b&TUp3vZrWDtMxSd~L3c3;hhm1&;X=V%^1QS@J` zLy-^;DpTTiyEjXYWKIZT@jVb(C9l>t;Y2{QgX_mUg%KEoRpsaGp&A-3RPD_O9LTC{;yl`ZbHC3zRd0^?@eo zSr^ovS&I=!K3B$}K^;LZu5;@58LXpFl}S3i#@rOFDF;LhTJ+~J3qpbcfuSQudtlRU z7*6ZuVwV{d@|kp*%7Xk<0!RT zCRg)^_|r{Ajk9mDrm;xa!pgE9RG>il$_6fkC}={P5zBS!AQ$23l5q}J9S0X^4IAsm zrW?UQ{%N$*A>nSGxOl$Siz}B`L=;TJ6lV|aXWP=20gq5-d(|wOBDgOB9{&!1pwxAZ z6`kw-hZ5w5gk2oq5o#os?)D&mxB!+~%t}apC{r2)SzO~ZL{M09;Mzi{c=mTlr)NCY z=K4%rHSkfgkfnu}pFC1@EW2!bNoLAcYjH(4c=0H!M8gH;JH)t4nCefe*rO+VG*gl{ zY@p(rmB1##2!uu)l%UhcR58BhjMuNuc;unI&}sXC<1>w88px}c1w8Q0(Ez;^s(#`D z3?r&;%MBGx*h5M~_-pD1W_(I`>}KCM+AtI9jhygsGpR*bCb^i~(ZY7=UKUoxorB?l9+a6ex{uiP8ckTDD zhd8=Xg1nD^e4x=J?Z<`-g@@IGYiJ$t&5fZ%!?f_A>I{0N5{i6ZS=}S=Jit^kb*uCl zHD)`{MxmO(E{32%7iMfPi;tKK6jUo*VpG|m)5njPA*Bru+DOSmE<`X63*y=ylaW;^}WbpAFl}b+MC2PNn!&CminsByYqY6uV`Nr+K(oW*&EY`;l!&9id3& z!YFM0=ZG>SP}OuZ#t&8Sdhw$f=xXxSEI*7SgvFT;92tD!1`b@Tl&L0k9=zO%i4+r< zgeOSqxFsFRr%J{e>!@rM{89Bkk2TCuRTHolRG4*U#zrQJgALp27b}oFgS;8xnf$Y% zAFfp;l}Yv_60o}s%m_NKfIPyer9xjy%o}wC$nue3bqL zsF~D>*K!N%mC?!!-yfy*YaEKn;$Xwux0RFf*+zQ9w_Pd&g!TJ$9XMh??O;|MJOlTm zk^Ri>Fnz`fX;Znqqy5%>BRfR$D1NorKBX^!;Vv97jso|8V>Nu9!i|1GS(QIBBt!V{VP;%H6BP_u0j z{>K}@Jle+(EbWoZ?YIafg@f2m!>n<9;#NN}1XdC7Oa_ZH$-3pim5N8_qodE)ej>aO zpLK}r+otJ*3N@y?k&fYGaL3&V;5p?E6Z(8JzQKm^{5X;SgY33Wb#wBDe66HksFOA8 zvg_9+@1^MY67@)ZKj8A->3-994cJxUjtd`K=ShbmlxyUDZR~$`fo~oCO=1PGwc!r8 zWwJo@{wEJq>UloIUeKFfr=0~8;Di=s$AR@0yFa%4T25u3f!9#qel5sa>B~%}dL&EK zoJ`X%pbYa?5-7^c<=S=yDm}|Z;?D^Q+KIyi*1j-o}MVeZI4hS+QB7d%kRN2NLC&!H-;J#)KiFQldfLHT!6eTy@jT+Ug4v7mtnq&xDXXJHAmJ- zumNs#5OobHO9n-35}T31clqPKoG@^XN|sJL{5JLsm9*4+kcoQ1{D|S8~6bF23B~daj7@#uh2)^Bg3rHNCF&o*Tn8 z%IUK_A~j&O?d&S@+rT|Wt>i$ychl1zw}WF3a7e`~`J5$%8#+jaZje1g;;6*S42G-J zsy`_eCB$FsnkK|XTx@sfgmsz8eh>Feux`c_X05}fS%XuSVlxzB-3xKsHBkUF%|pHv z;THQN!ma%ISXnGkSfeS7tVKA6#e=ONp-R_Hfr{@AKtb4PG-wwJddTIn^t7y_NS)h{ zn-*`>bPNhP69Rl@KXWvelW{z{YozXb;@)`J? zLBp;VWGpBE4$+(TQ^}xc6JN`6Rt>a=u-OU}zvCvFj14W1yR%XET?1x~vJRK(bK*cEcD)vWmcl3( z_q2#}xSwB1feEePq05W^;Q4k4_CS_UMZyMS5eG*vSRpyf*d)S@6U3PjYf4f{{kEST#mqn;#4y2uB{vBAZz`U8%Hggoeus3(<>Fxg~X|u&`bj;;_Gy@c@Bgg;Q%63RK0eYD zLQiHz%Klpjq_ukPnm!`HG8DFG>fd+%x8P3%{IMYbqFD$yvxWeM);j0_<&$MY3K;9eYcv1T%JcJi2<)3F z1Lh_*U6p?t>hE84kO2OO#%L#_D7>ilhx_kq{O6wzQeZ9JvbI44NT%Q(#k##un>h0S zbr}iF&)W-VZAs7n^Y<45QmNzke@UfL0nb0asOHF|5e;0SZsC8+t_AKZzbdt_ zdb?><|F=b+dk`rzyZI+T>y`QcJMQ0Y694?tAg2J2U)+lKpLY7&?$m(*sJraB4Fq%y z5F9+`1i*%)1c>@YHC7Yj&~=8L{y(NEG;(}{nRL+$>z?d)YsD)c0l{n%sP(4szp)#e zQIIJ;c?4{>&QGI%_7`O{Us-Lu3$lyP5s>h{>irD_T1l00&n@OXe#)!@(ZE+8*9`B9 z)MY+7JT1NLrYed(?hcRty++gb9ne?ac5_nMr)aNJQ{^ZuXg+&+DaoFDi!@s!cD(PM z>36x6wXGi{A}$n51{bn>z%FmT)sg}*f+oDK^Bq{n>njiA`%PFlVy*H6OwePZ6;)t% zxfpsr;+`CHD&``d_B|n>TP{w0`zTmtj6_&1{HWB?nyfYEY4>kQRYeNegyx}c4uRYM zVC&7+dUKS0sE=enX}8g-uHg2ujbQtDp@wsPefG<0E^5lf9C(#4O2)j~?q@64pR>GC z#t^4_u)b9aCONVZYEe{HfI( zNy7J?w2vTBu+?=zl|gRCe5Gto`v>n!mp}^=d;TSa3ah!=U>0)lA3U zD;u@?gz|Xl&9>m>g6!tY>r5|eBdzDNE049^siR-?4v@C4aL2Y?FRs5^%dB!-evuRT zXXVkTG-7m+c)YmSU`ZD^#9k-6_&#o(r|p3R^=x%xK*J@BtyHke60I8HY3T8O-~JX@ zLx1Dc#Y1qz;B&M;t81 zrr>a2N$<;}vkO+Gt>MWw73V=vIBXEws>#$(Uwh{=MlnDVrYqBFPAqS1LI;vcvom&# zLJqz=i>48c8*>a4YdZa?dHQyH>^e7*NVI86_-2n%&MWHqU#Ip>mCQl1E9rvJoCX6 zE)d&?7MD%2{hi=9vKes7xJFf!x>?|)J}VO9kEa_0GU3<>F# z#6*9*3|iy=8b|-gK94it0vX}Bsv(&^J2>CgE-XXYN3P@h+aa=oME*|%)c>#mmb5@N z#Xb8XDDdBGqltE+ATm}PJ18|qf7H+5K!Y~zzVVKDe%~^xpI#}dJ>4rcP)aNxh?KuHhf|betlC{EJKtK!p(lZg8{!u~? zp8zfwPw%{`TCsYARKRZ#fq-4EGcv0PF?Z@Lvs{a_udkD2^R88KcUD09O2(v1`^ZJy zfuKo-&FKRi1pSh&vWzXgkjb#zMSI0{e8r(RRKG;;uMVM3{a1&W0#kzC@O#d}|L{7< z|D}sW&wfID{HKu)u!nr1e-wBQi>B=@_5f#fhi%aZ$gU~=Y1@AxWkDkPF72mQ>wr7Q zFQNTu`~0=zc+RQj8vjsK!v5onap^J!FkAynyP9;Q9OFm2<0kp06Ck}0zi;+ra45_) zRHwHwp#oB@;}Vb*Hp{0GY#$htiz@=64ux4Zv4`E7bJvOj>(p&mlm9Z1$`2yb@<9ds zA7O15Ya%~83vWHg<}**tf9TJtr|_0E>p5p03SAjgzz|3pInh8VhU1DX#V*lzCo1Q} zf_1LP8raENckB%d)jUvtE%q&U{R}X*+4NUdj@dPULV6DEyq4=N`+;x*-12=wo$ZQ( zz0(Pw#nsy7+2M80cdkC4#X&BLyg`ok(ZU?R4C8r{*Yz#( z{zx_XH-!;>9m|KieFGC#Q+uxTM!XbwU0>{5z8;mkHt)ymxz+u?7v6M#?YxEVE`}kZ z-;PPpAUzFSsf-5$(O6>Vi>Q(XZ%19>1WF^e76i(@H&sbI8ERj(*2=RI~lxG~qO{FV! z?oJf{keUgkAB9_{ zw}uU+nyCfd74C+|f^+DZIcaET}`A`997Fd+&Kc{3Oph*i$tQO5WlC zb>b=KqQ5+K&RTu(px@|}e*6V#e+rX?Avnh9sdU+B@m=v*L%;>H>FRQ`bwAs1-N(cr zVNJBVR0JVpSN&YJb8~M0BYwNCmvenN(CWps#jWOJ(Kxoom_9GgNU%_kz_sly*;xj5 zS~U>R$czc-i_6Z<&Z^0`jsE7hPT(69P3C9Kt}k%BZ*plf_kF!X!-}? zC9TJoEQV^ORDd=v3k0;+gu=6dO|{GWC>zMzXo3MNo|C|6wyVi<<7Kw5OjPjjCmM0b zi5|&DSIDoN<8oKt$ocGF9c3TtYe7GCdGu!qCLgEJ%A61gxQUN0ExQ`JF`Yw}kAQnVFL@RHSwUaw+pJiaM_nE{;O@x-+{FC{on?r=(^tg%dSc@z>h&6URhU^o?Gj2 zlcBwNt-8Z=@YYkWVVo83Vw;q)!pyJJ4WA}L25gKppAaZ%W{L;|kz ztNHT`IUtR#N9&ySA?)ERSuwmi`N!e5<*E!S&C&gHZD8fCP7e#rZWdz?$(gN-pW`Il zUuDtoL9uJRuXf}|3_a%gnXArG|8cHe;LA6o|%@yYg8Q%`|kmqb$WSG6oU;up^ zWCHSrZi)GNJCJp2kVdiUpVL%pt8@MpQW85xnsGr+q?uRiDxaEa$5 zivhflF5e&&{8!pS;>^ZW-^Z%=9S3Hi$+5U$zqn~B0w^iTpJaabA=+#*4>DE2DKr2* zqucBSC(96%N#NXjx~MN>M51To9QE#jmUc5m?e>fE-gbJ7`)a~)bV(ho0;O8o*8RuP z*`#-u%{ei!WJJ((fn6=B?}_a9O;MZQ(c{T|{EQGf{gLJQSt;y-#&)rkx5iHGkxJ>V z_48MH1krNY%oPn4u4c;2i4YdCT=i!a1($t+4AvL-Bq~$HIzJn#n2g|X%rAE$SMQ{F zE|=^;M?$G}Aq__Pg}|2f&wDLG{$r!5y^Hgy^vJdWyn4}G|BgFvKMHK06@D8Bj?|Vt zRI9I=Cs)(;%I68#Fd-CbC+YDVKT(%FB0UFwSZh2SVoHrtXd3wcdeK;_7n~A)b5wJ(It0SXcsSZd@!00 zhBuYpm>fvYTuE9ZuCEK)-mZ+j^QsMR(b1?!P0HLtGVd zC0gN*Bv!9b6ZlfvXG?rsV*35_=FOD~+ZN)u@_;d7rkkn6sa5KM(RzD&=CZ&h43jBF z;cxh$WRLNbz|hRT$MhYMKGLIjc@85AL$qxm_qr1!ID9rqN(mniQ~`iXe} zz;A56%PdeiP7p!kdZF6sIjO`5F<#-om+3z8)tc0|~`ImkLwIwXLx4&DDIeDU&1Bn`IEN}CCB&mYn^}-Pd z*~~(ueEEs^s6cL)bQx4(bbFObVS%U?e)X z7SYRlG-w)3Xp^#mfkO$@8y+_=L63`&3fkA@#L_=$kn-zQ;)CyoB=!Wl{BO^5; zBO4nY!z#m|ulXoJ2EjcvGQyI?MCsTt&;X-KaBu8hb5~GlkVAEd3xqX16pg^4j3~#Q z+4?D9u>%r5%j9Ek%tmac-<>Ywqs{5AlSLtXU^>BH>|GAO(EW2FC$eb)jM0XM{j?#I zOV;op>(QvW|NOo|D1j&QcFl{GB)eBzxEzAAuYe~<8Xx`2sv+hn`keTL5QE%}i}i)M ztzN4#`9f`OMFf&XAZBs?suK)Xo1PAo%-Ss^`H`^NIejU}Lxt;gXmBsX1NV|W;`|L6 z431P5Q5P9bYtmuzxnfVE zS7l@JkN>?@N{7)y?aY@1bSFRlm~~3P(%ny7Di8Te_`O8?5EO|P6uFwI4Te*o#hxTn z#wMDs@7wSEneLoO3CfE@^A2Jd#WeW2`q_gP_ZYuiy@Cu8msL_PSd4+PuoJLOBo1K1 zBkC+;UzzC%flT3jONV#iLTYd^y`VYz>VS(~9oC#mn3;sg=L>nRZecj~Q935raNLc~j zpaV0k@RB&}4hE!z@_2oLh zs$HOE2*Rveea$hIrhGH&@3w_)VYLrz&*qTAKyecstkQM9r+CAdyI%>I3y{EvGy_|? zmAK|>U-TL`Tb&<3gLTW^yGSYcTVG+oJdz8L5?ZXa6uwNgUem*(@QzqOXHKd03tr)O zB>F=OGJp%;6s$;n881#4uND#hMXaV(u{G^w{1dM?w-IHrwq}LVyb{N&N(!23QGF>w zXGD-T0roY8^4qSS{0L7K_SKd=Tfy$1XAUZ8w5Mctq7R9*pgN&QJ*NQihw34`XpdP( ztw4*f<~CuH!dXzM%j&S|NB)6BoR1x6m%-4(M{;qdXXig0{nf7gLAvyGpEa!;+KLd>f8=_C$WjaDpY>V z39NwE&b9^LnecmDis9&w1}@pZ2GtwN1fVagzUS9$>^yewy7>a#HjI7<&=+w3iHjvB zjl1*0TK?Q}6ND?D7rQ@gl3Jm1==dS{>^g9N(X?U?(pM&E$pEXA>TKHkxQa#@hX{Cd z3&rgu9oD6cSZ?=H?qY7nj(#4Fs?z#t4rKlBQFS6J{9yFQay#aUzdB?yrl+$VPSw_yY$6i> z1iaDldm&~oE6AXJ29;s7Y2 zvh$#hCqm>Up8&A@>lfI`L-$aR#kQ{8}`ikei}mx3`n{e4(|>?|zUqk-wz(9ysj z8xA>0#NG@R)|{dcZr6B|SkFO|wqZyBL89Kn4JQGMH4e$p7W{5?P8^r2gP13oGCFYM zA-*a<0X*Z}QWX&- z)1sZ%Aup8RmsPKge|EwRs$8+N0nweOpc`Ad6+6RHu1nTZY`Rj7fD6NEXs}KE3s}5?ulvu=dDXeIDsN_BbkEZ=3D)sX9O* zGqyI0hIBM|`q^qk8D#-~=3T#h?94CfJtZ1;RiAgX1188ueq<)m9PQ(EfX29Whi2tQ zr@|8>G4oa;ukn^B*fzw`dSX(s)w;H zdM98K4t}D9a2;MXmiDXGa-cQEQ<~N6(^ovAZ=|lubh?+oA&`tkQdr|uzU$|zOIqtG zQ(=?_Fc~B)74vnXbGD6#G!G7>25+_D+m25Huc$r3K4(!+WMEEtmWix0ZMPJz%4GF6 zQ^cKj<9Gzd%tAi*YK+Ez>5y0{#g7UwG8_9kWltrv8o?@Ghx>&03mTZZY@6uv!;P{; zo1@qNDO!h|{338Dw~hS4;-m5VKv#q)H{f-iAL(txx)RW~&l)>y!5;h5xb&p2l@brW z{+!{t?YlX9W4FjEukH>iR+7DJG77q&H2Q!d15UzaElJhZgsa{6!Q8flpP@PupZZBAvUKV=TF$?}1N?YT9jO9t##CfKd6q@T>4KTI_P7HR1Tk zY;LEgA52S!eNGhZgh=ggH)EXvlrRg0;c=rqQrer)F^*Q2e2@mrGHn8@S~6Xd_%8ZJdS>uCuNt{AHe0c3jVKdrTMqr`}e**`* z5UN2mB!u>kU>1=Yl=yO`Leki$0|H>f1@ymRgJZZ@)$2#eTdE$&onBg_ox(&Xm(i{h z4?-a!KrQMkQ40%2QkRw9_r=A|159~bv}SZv9@t#_pFY_c@;Le1m)TsF%aXTVi?nx6 zGY>{g$?HNu86gHEVNl_o*!9bf_)5u=Zm5Qg;h|heQFWq6F=QOsX`N420<;=!Yul0q=0L)5RK3+c zapGlANqLzXqnsO~P4f|YfqxECD(9hExVu9iuqu9eu^W^%cbI$5>83ChTI9+@K8Oo4 zYg3Bh)d`nZ6HxK)<#DTH(i|b7zE{tc7Uqm$n{_vN4<_7 zof;wIwsY@xHl$51j%>YBZ8m|TAwE#JgY-3pe{V&v5~HcXH2AG`_!--7C3S+=b5Sku zxKaYHX+lGVB;%ONCv9%Ua#qZD3%zU`MO9l)I>iGS7p0~L3&XEtZ3R?LNx*@xZu!Ej z;c#xI6YB$Eb2X7~^*%sqOHe}&cww>>%JQp0IM>@ia!H7{77Y!a6(>Q$_jPX-BRwyx zi$2(ohLWp_le#p&-m4}FY^R{~ylbPQ0%kxsfw-qjw4a(678EzwHZ%6K(jx|TN<*K2 z6>`yt6*eC?b!REQ2g6xOu{bo1m$qC6!H=Vg|1d@)Dt`Y|%HwyBd;rgs$z}a@Ol%nw zR~5r!hld%K2?GXx?#*4c*hI?+Kq45xuHVbKI6wYuyY;qPWjlM^L6Ln7&U$D-$x$!4 zc$iaxbJZ!l!>_^qxk3P>FKi)yPAZFcC=Ak&39)EeG@c&4cP~HHzr-S>J<)Fb6uWXu z{+-|P09k{f2M?=(x#pOAm0Doh5WceOml&@?F+XDCEioKiy(^nK9^Y+gl(?d}5g^KE z;ob_($ieJ-Yz@c>_kbGtazo$Bbi~CvHCNKkI0zM+KUX`wup{`O+O(!~Xi}(wRd0Pf-DiF6b&zgcBqOlN z@Tk>X>y#zBqHvyAqX&Ge5mkUk4u@QP@ra&VI)3+!;CpV-b#ukkT*Vo!icfoX>T)ll z82}d+@@s$g%TL=@6GgmC-8i|wo@qKiNCSZkRMs4iv*IbnWQ`}w{BU%k!3J3%5JLGa z=Jzx*x&A4&DZD_m^*?oWMHx!22&5!uBMd;~@Ee8(`~O){(gFw7%dbiHc0siZ5dDZ{ zHCjsEv(nc5n}_jFHW~(*mJll5Ld>mY>>bBeP0DA-t#hB?`ioO<{%mXDFl|#YR}(@d z{}0sb-~V4;7MT_SLiNKXd)H;j=pAG&Eb8-r$CMSw0?p)vdt<)%O-zQ1fRMU7UtS;3sQ)Kj zTKuOB_D(@1}#R{yz2YGhg^2+RR0 z(eRtA>9!?oj81iVq&h`mc!KAJ!GC;zWW0D44d{%By}2Sut8OHn3Qh$2QG^Z@DHc|P z^q(J%63;@W6@pZnZhu7+d*WLVei7!?zia}uOn=21n|x4Z{XSNPh7$t^}WMNzr8uz z%zI@u4&TDZl>I_sxt=3z{4D5;=b3?zfiTfm4ho6_VSEYicGWK`Gn%Y&Kv{+}?XlH{ zAX~`&EAxsPRmwNXa?=01nd08B3hF(G>*VeAH@oz?nWT}PBleD(e_f@TEs!;z^zIP) zR%~lvtw>kSNLVpL;s40XrdOHCZ9XU;eCL)A)WHe>46XTI`zb`@UET0|m|rT20PgC8 z{E83%fXk2nTL?U%srlmo>Mf+i5y)Iy?*PG364(hKkv`G8Al2k;x4#3p7;J9DT*4yZ zY2C}STt4)az#06LhR?G9I}Jb53>IQjZ=iIwxl`}3z6cS6wVtuhe>MgX^oF*7Al`5u z7*7px|ELrR>3LR@5A)$ykcdTk;cGg~Z-y;-JMF*o|NXWhqdniYvBvXlD^2C5fXM{p zftJTO>|&e@>q74#R#bdW7PqbghRtzEyO#Rr;S4LI9LySvLs_rwZjKRNHUqyf#Z*?D z^V>ov-0AGMD?av369r021*`QQt;K?E&C`c2{!6-4uCCX2G#|-X$^oy#8vrF6TnWm1 z7%wU>oH6j4ch-BRL{C_bo=t@#n9kW*h+H0I3F^t9O^)S$YqdmzuD5o$e1LX9jL;TQ%b#DK92 zzR9>cSlVtT@3*?+8)5RUD{ZSPY~k5W+pV!(V1MoYNJcK?7F1`qVBEBy>d~QMzX;CR zJy|PodF=9>ueJW=sDvKw5g^cZ)|uvVJ4{Sr_Dqm_#z6~V*3cYF-o|_7#qEmQS~vb{ zFcCNVD;M$x=r(~(?`&6p$H!2gtv+dNDUfF(SpH&i_6~$R&!me6DJ8f-^X`qK|ZLE{Ly`aW;QVMA6=!G32WhZ^IifLt@wRMQXM5 zVp*q|EFVkfjqmjrqhlSyi`cGkZ|AHOg18Y8p}1aR*?D|~t5gC!UHO>Gu+Igc=V>*G z@GrXq*1wuTB|@&%`?&D6`+F>)34Zzl$Tl90c;fND!)8%us*rpafb+0>Q%p*X7TCZT zT96wV6ieC-d3%3K?RZIrO8}Np(C_{It%0%jdZqf^-cJ_c71?rcAQ$mWZl5)AOw8)^ zf@e_|plQh$NR3(XVML@++|y}0 zKYVYcTdd_jBh{^Um}jPBr9MBYMU_A_~~oOJ60}||J%ro1WIDSEl3py14VbQn)(K#XHSWo-&?!J$d_+ako^%C zD<&Es=-wb0`Jd0d)NOOZxHuS(0*pGL>^(^zny)e|X&C^}k5oT0A`EDEytsg=eUw|L zh`DM3FX(WhNJWlcUu&7s-znP$djIl^Uj3mN`oy19I(Ew;1uMUmJ`p`(#FiT>+x4rb ztpN7k_@{V5{|v5)bW>5g&GdLR__1(H)YKPYQo<+Xr%PZ%53*za4=vw(h<|oGwdb6Z zmaQ~os8*mYnBNPQIL{oye0YH~EaKm};`4yumNxV;0@P1p23=v<8EgNX=`0X7l&nSl zSv?|LdmW&a8WsM{Z~Qy|EJPJ4SHCQ^3%L2(zII?B?@DB=m)j`Z8dfu8_q45Jl(zT) zsNEUsB3y1n5g_!GBIr!dbh_Xt0v!2}QUCkbuxA2?J!lW`saL13p2GIX>(iOMZ+Q2j zXtigXq8P{s_5Czyh96K!Kx3={&QM6L6p$CJ`)F-+dEJKNPN( zKS-$}EJ0fB7utq6^hO`k;Zpci<^u-3DiDEUZSEUyfiT!(5eCbepn#Mv71X(0Sd^e} z9BHzj0Vx5ckuTh1*s$gJ6JNM;pwcXM8?`b!Fts592YbdX9T;dNj29_wPy3W|>%-0D zi+FP+y%Ld35X21X+d#90+aZ-MW6axX{b)IR{*jc%s|X_AXu{X&n;C z8ChpRMUyH(suGVLkmdQ}3F2hbPyWi;JZmsr&&QL{l%psJbMC)>`qgeVA0ybdoMJYU zMlxl`9rXtQ@}DP00&!xsq;-s}Aar$k9%e;lAk=YEdd6F7W>K6iboHCo?Lz@e9K7vpP3W@MHjjqE`sJ5h_PSS;t@J+MxL8;efh*@yI>I;emQ46XvaPXxG4=fG`hcCb@1k-}n z&Pn~wfTch5!)t&`Kl~ET5e_DMAPN-ZB@tDk@0GJVUbM-jIgPc>zw(&E_s~356U>Fc zf>bJ7GGoUnvFQ}7mSWyWpLO`mPkHG_s3%EP2zb30(Fkjp4l*tLRqdLKsyf$!BSEZ= z?t2goS2-ifoGL!e!U6}1Gn&{?%6kNi!NYGD)0np8lohtC=GYFlFt0F$dJLQIL(?n8 zGA$`O@Nk>TqXQ+M{@OMsm|@EkfZ>iL8Q$dZVXlutD3{pkP2%GuQ__3n&0mh0TE$8Pw_*TRqc;}Sb&>mZr;PReRr_kqSZoiO z{w)m@vwvdcn~cU?%3Pla@NU~)h6BSrQBb(0B8X|s%ff%|O(Wz^y^)0%- zeut1c2sQZ*(YS3_)Vu5feE>^S6#3mgnG{+9lf)Ipsu_Ii@~T0pMTWDUOOLp8P|>X* z{P@h7I3?F?kwq753gjqW0Z8;asALolN}9)Nm^?+ytF8nF3VU&&tTTGB9$y+C^dO$z zvLM^w@Q4l%ix57$3? z>?;uP`}kop0!f}_8V)B-7X09{eW8-DH5)A*sa@G@0~R z-`kL7T|L8Cv5zn#L4BnSwpQst@lT)gcx5%Nrv>`2wz0p2NE7EW+4LL%jBj3R5{Ea(C<4EIB?G>qD0?!&9V$o#UPg4ut=4D z0vMY9O7hdtLwB*8MO6v$ihSQ(c+^h4iR!;MUWwAro8NyK2?I_kgC3q9ojd3$q;y8J znBd68Jg46&VG?5TLvU=$f@%-=ANec|g21(zb817#Z!0YW7?-z+0 z-a&Bg%WRjcvX>u?LhOC=`KDK48sGiBkCoSlPr`%F_Hvb4!Q#Zf>PUPNcT^bjdm`3` z83c#GNy8Jycgt}wt1=~e%+5Le%i@hAL>h-)edHTPEE)Lf8vs`@h#DcZ13ft)(lqE$ z*}*c|#zRZ_7S$7u&f^>XGp73A3YJe6NeW}<8nheOw%>V(U~83JV`DYIcG7+So5bVU z>KZf!#9TWB3>rKHvp3mjN%hEAxrs1vqQAf!4Jq!(SE5T2DPzaKFrOoCHZ!Ez=a2>v z;%|VngUo?cUl;<-xSL^R&btV?yXlcyHjAke4UZY-#ajH#hHk-^YvtV)ij#3huw*>5h8Kx0~owu+PUz4`gl z)-^JNenkWX+@RcJudBsfEg7fP=0@kde31!MC%7a$`Q@7c9(|}6hBgiVO8F+9`T zwQZ0*09C1T?(ln3g1MvAq120HgHnO~*>q(M7xfLJ8Xl8qu+b>|CT_gzSDUI=~+yUwTzBgH`9>o%(?quiPsw&az zMoB=8amD&q?V)i~_~b1Aibt!VmYnaI$ghh^a7qy$#8}TiaSqFx`d`IAARr>}qXVwjjaNq(A(7kir5k3Y}UHgEoz z7|oNX_D-Cc{+@G+QP&}McezNW^j)$xvK=mmJ~E8)$Hnh$j_-L8?zgYRw!R?zc8Dp} z+fky#*+hz>g{Tguv6z=K$TKvV?J_5$5*1cx)lbu#|60Pt|8PzWv!=a@xlb(Y0HiDl zv`t$|XDA1`901NzjeK7YgX--c@+0%STAjss zKHoz3emm-*RtPLtC~?V0V0ngU#kPMYA_WVD?8S_&lCaR5{NW0QP?qde&7A+!;$1(UR{^LJXj5zwuvN-o<697wqMH8wORW zp`zVXd2V&wU{`p(0@eqXtbn zei4+ldwQyNCs@_Qx4kZC#!2ADIe^rwN#MW5M^FYI!Q&Uw6%Jk2@At7E^mZH(;z$%V zuO~g8Vfyt6db?j8e04tB?7dss{yLYQo$c%H?zVhmBF_0voRe9r{G)QoXNI`GKC(5p zhb>sg$neiFxEjkT)ee6kAtUFQu_W?iM`<4kSMcYzC~;TqOTEhJKbs*g&CW zPIci+Y{f*&C?YxYH!_h$-eT=sq(hM4rULz(>T;$0IeXG6lKi^N)76(GVRd+79<6Kb z=N7v2h)erkkbH4y!E1|`Sh&JzN7duywk)R96U>a>y$k-_A(tQ?=Vq2-7XejWa>s~f zCI>-s2#kLkjFg>X0xR2nlv2~|z$-Cc=V+s^_*y5J@g(ysL^x+Osz;7TRXIN(dKUQG zn=|x{bFgV&C@SiSKMK&zJTAl-5+mZ~BU2wrB$LPhmzXTZhleaWh5}!(IxH+5fQ%hz z8z^o}1v<`Xys#L_)OZCP_-Co-OS8J_yWYQ${Mvk{!W4ut^|1j9^EE8qS05@XdY2_E zHpH!p?_}7hSI#_!$%H>S7-Ob#nSi}i2hpqKl1#ditRxD%8-3b|U{NJ*EFlH>kn zS#JpHAk3ct`{bzqkG8iAsH%&)g=rA!lC6K_R6{D9AnJ6$ikg#lG9k}Q8~UhZv}K8n1qORH_WwH^V$hB znM;EBoEz|!%CVs-Md6TfVBP~oufz`tIca2Ke}UIKv7!A?2Ew8|ke8u!n=~R5a@MvZ zeqa)9KEq{5sOx@*XENPx>>D&&lX*{%-_+=!B%{}t^wPNfSUMHNb|DKw+@8l2qmUJv zIkn~1TV06?L5vLC>Xceu3_9L#nmTlfVuu8gbIc|f6g=OQe5q5bus{Be=j{49p8WSl zFiYJ~BS}*X6A9EicvW)EJ-obamoS+Gr?t%=O*IaqSVYpzzW0quJ)O)snH$5w;6ehT z!>xMEd*s=?Z^D1A1K>^pU>$hoyaM4o%g;i}6}QhQ8h z(X%?`wws^MzoUQ=6|H&g9C`HI+mU?Ay_Ji7>HPx6NzMbwi(V4byLTrN);Mo6-nI7A zkcJ)CCbNr`T2u%7Zbo;KmLfrAl60Cx5e=9`eeu4CJf{jIAcV1%#7rropspGcaw%kA z3+AVN|I`LxcJN@RNimN?<@p@Ku+S7`L6k6BC{+#d+YQM}d$awyD(wdgiUIxD2A<;r z=3nMpBCA1n%WdBCu_8!qaAlYNqYX+S$6ZLy3gMytL(kVpaT9@ipd0%54x(QZBe!Px zelMTjH1iHeb`1FYdss*@VCqaH19Avbcc>S@uAgS~@-(Jw7VDRNh@6Fcgppg3go@2G z94dG-s;~`y)0E>Zl{t2=5QGU8>vb@AXH;U?>=u%=v2H5Lm_L6&nF(`RqXVd1+G>&qc^3S*OzOpzD3{1UtH_CIax>%roR91q zQhzP`znTJk7RL>)79IjM1Kusdj~Ek0fzVSFd>RwRg1oh&g|K|>fK5XmP#AD%e1D&4 zcpv`M{(swg0t1~4PGC^)vmy~i$#fjS*-}Rh&Uf77aDRB`^=hJT!?fiY9H+-g0loU} zcq!-I8>r;38&o(k(!vAd-F#Co8zNb>6 zQ3f{(wW2(h1=p6|^?sO!l+5ogZy=R(3P(kJwpK`PccLUd4y=%Nmc?(T|AU%TPGEUU zY!&lz)X?|$p9@&^_fH1XuZ;YX=W`Ka;bDP*FJ_VtB$sd*H4;=`+kPP@v70&M7?N7W z#CP1J`=4I^J!MD%ceJGGJf-n^l9(BR+uW=2mE=G%;@MV|Z=iEKj7I~n&4!}n#tK#L zb5Es&hIz)p%P?Y0%|%v%T!X#6vFarnvJFlf3Z=`9JR*MoJBm+3D(Wb0_#+U$()Zr8 z=uO^-1Xcs#EFa~QtXWk1G&D0g5L-0joxmA!8Xg1CSW&L##}VK9O^sikxu=E4FMgks zfb3v@E5VcY0pxmIt<`{!sZw}#b(j= zBZ}XL1?mBM(R$^W=k~i+!oRj)H#MLL#Ro&*2Z;Q;IsR&SCld68%W|BNKKv?l;0m|L zNt))4XQMJM|0*&coCOHY;4g+e? zAMV3Knoy_Kuu$Fk7p$2pJ7E3kF(GlN3k7qo3yR-RMmcKBA<4h5R=}{>z%^5gO)cQ` z`|cg`Tr#*eH8CGL#Zr>igOlmO$*v?tOO=;kc-7Ng0oC6p2UwXHn8#E|hdfMso+BLP z@~7Zr&W24&84y&6JkDK`E72Rh3(~E+C|jKWyf%XA5DvS$TkiENbjkO-@Fm|ulASgX zrnWged*5_uH)X20;QclqFf6}q&w!s%{_>>i9toJ7hm!phsM)>5=UC+hd^nNQ#?M{|3Hus?vwM7 z5S`q#sdT_|S%r>M>%*Y?&lV(yfnfF!LfATfYOVz^WR15tuF=kXHOeW~OQzc6wTWTY zd8nOZR4+EM*24(zZoYoLv9o0m-};coOvGy&N61~=YlKKf-d$r!K(<5a+fl4ulIQ*Y zL^?;kG0fm4YxM66mz)Id5k3+8xcz!9f2kcs| z(Y+_f!KDZjG{0f1&_EdLAwN&8lmZ9+A!Tzt3^N0LCu8RAgpag1Y9tD}WDZ3RH_|MA^Bfl&#Iy?3r9mKlb${mgLT<oycNUd*AEqcG!_uGSQxY&Iz3;NI_v|;+&q9&h1vQb@CQO@Y!8qy)B>RzBhC9+}t zUeUz#>~y&GPKng#1m1Gi#Ju6=#5w)~cM2CPdew8wW8t@{4vT^c4@K7?^FC_;2|`?V zEUHP$9!K3Qcr2`L=Gmlq2);z815D`Px3Tj*-kvX<=KcHpr+IE=gq3S(sCjAZTPJ;$ zri>=}qm5iv_1}M$sw_0kmA}5X4OuTWV7=X+P`INF)~a{-HgM&fbY3x&V3ZvmHQX#Sd~k>F&asQr~$gXk*4Z=;T*0{05!ZMRPqEyQZza~gEEnNIn79!H_RNIRBkYuERUqyk|^VAIyp`DFQ9{1#ud$%o?NazZfVsucRiuo$e3bv zhJMl}-dJ?uyLq93%}{h1_%+dTC%q%1$t|fV?oNK`g=u-sgPN%C8^RLRn>4jXS>+U@ zLQQ&<8~w@hvqQMQbp#_II~16lVIlQ*?4B0(MQ^`}mlH<|oo9Prbk;d7aO3wX3G(#S zh*-1_tNO+_9r?}k{nAWOqN_>FZ#rON)F_S9TmozQUZ1-|U-Q+hLBiWto{#$-^J&$1 zMn;gD?Y^OCU>V_R=H8LuFH;rduj~{HU;E1T^D3L1VTuCrfHjnCRu|Yll;j+*L8q02 zyf(|OZ#rX8G(|y~kpZ8;y4ExHOG2gj>yQG2%G{OX_OyP2f=?-YCI^kKv|N=bH?4H> zA`jv$4a*99moS52^2*9Gzi_7z{ZhxwSdx!?Q{GXAd}o-ODxtbBZ{<*-#sBv({A+=K zpap^f;Y-&~1R0Oklf(_S^O@AB!Di}TLi$+`DZK~}MAaG`*KI3JcAR$X1!na*bJFen zL?75_Rj3dy6)53mEstDI9G!l}hEglRzZvstvmi{8z}fuzT@wpEso2m)j(uY{ zRfI>XRu-eq`f2p|Z)=N_l2)M=Zd- z@O@$)`dB%pXe6#p6DBC!+US}I;D{Ga-_?qmU43yE$RtU>ir_+0jyoi;f#4X`Q9y0B z##U;a0Y35f!{h_z(~$BC8d+@^F9x$eGn4$c7Qp^%q00~6XT6%=es&k*!Q^W-@h)&r zX>GB-rC;*Ctm1aGn%nHjy}wN7=U65hyKU?*bLMknXxN@RMJ{UfS;)N`DP_`b{^fEK zEjL@vNRAvc*Nt9V^xzLR%$BjBZO+~z;?1rYEvLRU$)zMcmV$PK4i6;Po?i4iqzxr; z%2cb+nDAowJ4F9?5#WgZwTp`dlG`t#gpu?Ez98Ij+im-}vc$i%*VjW-fi`-nRcR9U z7<4GpXnKmr54oCjT3_jXAhaUQn?;q3+x2O;kmnNxHD{+izlythHl$jvs|6VctMPF5 zHl^VTJp{;n=J6$HeI?KVYfA2Nl5FruZs2p9lNtsY4tD--u+An#_lL6*kR9~28^8Z@ zXw+{-9`tOF&Q}T3o!AZY^WmNc8TG@4F4&Nac1Q1<6F0Ob zgtLCPRID{@+`#2aV&x%>u3zyLdy6r786rFd{)jWtm@5yOhY=HRx!IKQ*qza|Q7d)H z4rQ3!GG{|EM>-njDU@bo2yHaQI3z!YQG^HY>|y96@rP?6Ix0nO4Nz&>G-lGF zWpDCbEZ4a1juhsR?u#F{O^gX%3Y;)%ZcPX6PBFf%dfQ&Hnj}b8c`k`aO0u?;e@`)@ zyFXo@b++yHP2X-EClHTGrlUZDg)W@WrXxdY7;}!TAk1CEg;<{Aj|mZY za@s&_E7!mk25To;1rLIR6}b}6Li6EM!OM8VpSU$2F0W22+b|H2h}%cQMfM`%y%j&% z+2iOgMJw!J;dg(4Zj#4e zfJ|waVY9hCouhTwqy7CRn!`Cv?Zd%Zz-{=<^olncbm|M?!qCrS`dhh|BC&OJKGb_o zwOER}&hdKg3C|U;3|nOhu@RmB!D9a2_L;B9W4Ko#BgU*i5?W%Pnc3mRV;Tys#%h*3 zIDS;w5bL{5s4x7pmzHMNeBdASfO-7@_lM1Ria$kB4PfNqN`c2*!~lQOOg)*KvEB3kj3s$=+my8h&0P`e%d%gBd2rlD+vH zq!LWh83+!>4FBqbd2EdLpAQuR(GtN^wDgLGv_!K!=1rcQY;PP5{MPBio=4#Bo1ZSr z@x(Oq>P&l&z!g>d9Aks&y#0L>{I&Zx=T>|Cm1&LVBZ1%Nn)lM8e?JwUq7*qKu;A&U zt8U3st&O2_Zg^<2a{b;RhyPhQW4+j%tH^)m^eJ$oL|Z&KY;20KhLoGH-6VjSw77i^8#OUpiKEG=pp{Lc4hRE81o^Mn6f01&AY+fA>q2^VRO4XN zC(C;P?lh=l5CbXaTM5s5zRzfCvjFLyEbC3W=KA*6i!MZ&;?U(j1c;l=^yYQ%0HK}P+B)4iFo^N&i72?WqDKSb^aUE z0|hB|&v|n(DUx1!a6wSygFVPtqOQup_Cy%XGGLR%N6iEG%TX z#YA1GHEKuDs`BLS4O!Is2hsj#iFLw2$Hd4bGRn_Xno2xFYI6{LJaiHeeF>pg-95Ua zBi)D5!0J4inq}JDS%=?6ldDnZBk6?OemAI^;IP_$fUlj%hKxM7San=9K@;6b#@q9%N_d{K;GM4LOEGQbn zMJ~MQ<|BvG>ZjS;}}|FB#Da&;DIKK$9XqF%ekYI0vLJT!lrK>ax;d}AqQH2*2y z{lVvvXcQY7c%3%12xECIpb%3;>EMhBdOr_D872^?ZPo9((sZ&QC=KmW=|2t&A7y45 zfO@G_s8IDDi38`*hiEGi7a^szt&SWxD`VfbPYx=ka>*RIIS~^IZw0G>?b0LTT2!R@L1eOPD{%of80eSPZzo+Z zLDRKX6AZn*y_i;lV;&0sfxT2DMQccbz$=+Sz4+}o19y!$a&OXP&MPc*8uC|SqQ@0x z8j*zDebZE}^ujL9w7(mqfYnf_oBk@Z!OA3A4_iBRz-W}51DAq)^NAzmwbQ-(Os~)W zr#(gzHQXFXb$fjJ!J>+ADx8d1=ssNk!Jz{TpKxg6vS5kvWvu&49D+#1 z@X$xpO^x3>08NPz0u?UvLSRTZ*}<@?1maLb%2neex<>hDv#$`LSt0(?ux1+NMYxs4 z`4Z#xPMG2qL-yZ&gCh?do|KDj0P7;kPV{?|pfHaCq^lhfr&W=f)VI*#KM%v6 z27~L9&6Tc+>oX+9GRnYin?JV+=@XR`?GLb1NRt3J_5XM-YD7sYpUjf1n9d`6Fw1=q z%w#=P9uMeGUnMdm=DvH6j9J0wHIu}m!}0{>d%D*3>t_L(Ex^R~&${xz`L3=0QnS3& zhU*gH5~+V$ngV8r+&>_?^JB6cps>p`8{Dl8+hEiHtSC`#l2-QxU*O5&=d;-TDtFGA z7JU-0ZFiBocbjyxl!%9|nxC@YZ82NeYV1E>hW@)R7|(!C04_xO+m)ERU*Js6Z#FZ? zmH;D|z^ubl-Ssh~DJ(caRUm|DyI1OB*} zzWL=;p}yk9Oi8N!A|Fxf^&y>y#m}k>j88@&0 zjk&{-PeyK)RHtj+kZxoqDWyY*SD^MeK65O<^2jCjC9aZwW_$#q zaMRv6Q^2^wj~kW8hAm_;=9o(;4S7NrNzw5y@GXJsm}D!|$5lOl7~F5iSF9Ip>3_o| znXW5QE76wnJR`B2iWV+@@51*@vGn8B&D@vu6`3!IuorWxEPPvBw*#v)@8^Ymzbc-t z(k<{XvhM!m_7HC{4^r z8j@Jzyl-^AH{pgJ-CVlmsCr5Kw#$!)4&xKQb@}}1GIpiY27}J9p8Jdn02BIJWF#{i zP{4*R+MK!w-&6DNFTowN(!8$sfgVZD)0NLPQ`-N>B9rnoW9MybxL!HX+ zTwdBgb7Pl1P&K?yj`(OU!o0`}@94c8Tfm$ujle}Yc)6t0_{pPE??R}j3Q}V4o3Lfz zP36d3AGJ1D8WHseF82ihs*`C|)>&jUf{_KQ;YK~b96gbXZK_r z<(0a=xV(NWui4b7QAl^KTce7Ws=|{b#GpFmx27Yyt zm>HZdV<&Gyq8b;hkfK0$|a~De3*dyh=NRR zJi(B-adVg~_a1ozHoAW^>Px{Lt^3krJ+sqY&x16PwzMcnxlUD(l$9A>gzsd>Fly#D zWR&L-&<>OmEMMsyC5xC3C7linbMt(Q@O~H14lMm4{*-@0BxD4@VF$@2&%e8cm*eB2 zfgFR-Pw|;5Nr-Gh8gK+8w+p2)54_Lz-NN@r>H`$O-r3%e^Gi1z?3`4iK&9)H^rLTD zm13ZgqAQ;pgRY4DY@m{8MO(z-lFKdZN%xnk{Xz$Q>}Z|G+pj;CU-LuiC&y|BV^1b{ zMS1|l)?TJC6s?(M-_698OuC!>1L~-Gk!wl&ddHeh=x4-S+;!Z*p?eQK0ol$ExNt3u zyi1TwCJtYO7_s|CxdR+p`SR2m02GZ=+H6>K3=O%sq8C}SYj`ahq4G$&z#8l6YNc~9 z+Fzkq8Jc4^h(1mCmHvuQZ^;GbYGbD1h;sUs)XrZQhcj_VZ&=5wq;fl{*IQHJ4V z6zQa3l4^Y#Q223aK_H{p^7Wi?l)_B!01pJIzS*{gUnIO+0{e5Ueao$uz?VsVG{JSz z5+89H;ej(|R;V|tDic>QC}h8=PF~^>GPf(Q(XE?1ou1c;%qj^Y3y$j=Ja_gHg9&uX z*(sH{SnzUhIG!JWV?{S#nRy?ChXE7Mol;&z-yr{fhfW&yvO|QB&k%}mbg&fDC)N05!$mgx%Lriw@^B8jl)`qPI-8_Zp+c}2dBny;)4wntxX z?yRpVXdU&vZoQ-Z7zxW!%PrzyZ)vVD)TZ5Ta({C^X+$~&hp53van!7891zbdy{l>o znoNDAc5Lk*K6bJ}t348eI{7JI|NB9190BBU!UD$Ml7Y_qs=jSXN^!6nwp^*%Xli)@ zk+~g|gF4r#EAx``4Vereq2fdIR?FNtZb=y-FO+cZr$R&Xrd96JyA(33K@QvGes_F6 z$%QnR)5loR%4pxhIkR|~9vPnI^{DWO3VnwG193bV!^LyI#!C`A|7q{lbc#F z9m5enjbcIyqSz$@GJ`nG4`GOK8P&}vqQU->&5#SkTBb`x+84emwJz1a20xm*2hTLU zoG&!DcgCAsVORFn09%ZVA)l- z{;gw${1hqlqt`yJ!&)d_*wk7F zPJ@R7qAt)y?iq+8x?lkf)$Hyo;`d;~>XRzg)_BoaO5auSh0ti z1{N|8*aVMS{vn%qIitz}szTK`NHZTi1JnxPFr%lIJeQUqTL#?@wK5_!a*AlQfbCfq z8w}J@Y=a>=Y{r`!cs0DiYgKW3H)aF4{f8=DqePhF$CS~{kQ>o>(J2=UTCF3WW6Pgf zB*VXUGG?{JS2XPx@*hYLN$M*;8CRR@H{^F4Hoc_hz}uax*}_Qg9>#|wWJ_5V3nAcS z3NDDGoQnfX7JcDGul5@^A5gH7K1OWDM&f|VKK>zN@U{%2M=1Nf7(max^g0;*6-T@r zc8LUwMVLnDk*T*();l!W@W8s3P~IW}=Hc4KJK0FAH*@ifa@FC~K7s9CK_y%>)sEdsGtGEPXBk%{v4%dWyY72i0?*?J3`q@m6(aQ1lzWkQ7 zCbr^kQ}~CF4BdmXM9hem#1?Hu=fsQchF!u)JZYC4x!Q0vJRTuGVspxx}DezDtc zLJG!#_q%+Ng{ok@@7bq$ZCa$hg!*FZwJkwivx8O_o14(zq~JJS5z|3_N`vODC*4tx z`leTW4(MZm?1K|cu~)_lY)C(r+w!EVR;-SN+0Ejg$i9W6g1kz>%B!`s0;_M1_pWDr z|KKVyyZ~q^*)c&w%qIzWWHSJr!w6oqK;pVl_Vxa%hork2fF>w?!Tye5s#KXv*=mmjyCFf$r8O%(GnCKRki`+RU7?RmmRtoM6gz>0X zZf$qZX|35ff96IxnupcC&xhpXOM7m2ZhbMzsCE@nPg7il0JLLo{BX;=*E7E&oD6)f z8?p*QqcOcB)dXHtkqm@+( zxCtU>#rTDP?$(*ngZ4l+LN68jQvt-)_d@)L67C2khZ&AN`dw5(2W${kJL2UTDpkZY zH1<&nxDEs}BM+LxOxU3SPgI`Mbn*fA|J|ccB1Q>c40IQl38rTg;xZ^y6_JE?WZ#lf z&7A?^a>(dNfKU0eeGDt%RxThoHa81Vu6Cg9qBdVVZaaE`U50PqF{eReqv1dzgbv)F z#|m??N}k{w=ui?$^cbblr3rnto@}T_s&wJN6798UgNZ(sYuYr+op&## zg@twsaP`~rB@eiLQXYmNC^KIFN6fBkmy!3Hh!{23D*iwz+c8u;A3#2mixa&1`lUYQ z-H9qn?t0!bDb)ZQj85AnoGtyozPx8`QQGZ+#g0Fub+I&x0k9s;@c`M!8(sH?NVmk@8w2*(Uba2{j*_AuuUw;B zsF-@6e>`&?hK-)vHcOFT2SnM_8Do*DSV3inA4rR#C2Up=-Gln7vgAk0#k- z3&z>vVn1J%B;{EG@jP3`9i*VBcJ~l22C27cOMd}feRz52CBB_2zZCQJj-vLXFVx&glAbw~`d;F1* z9qEBBTKGCpXmYq!e6aBD)qA0yJHtT1s}F`QzITNWvcdBiowo>Um)V#LXKxiJ6o!vL z+QMA2Dc=Q)0Zj3j$@hFPy0SMHBju#wG+weyLg3mZQ-b6xZhK*igdAvu#ZdX@>z2D4 z#OtNC;W<4YPuXD}9`tL#@+P8n{fUx$ZyelO@=TL(BAB8Txcwp(>D1a# zoU1~?`7 z)c-W%yVCGzJ4@zUqQ#zA&O( zHiQ(NZN=BfGguY_(}VG8Q0AlfhY&eDg4nGGtQ~tVBfBaPPS*<2RSM$g(j2-&^GgGP zyTT;b>mG?yK*k_(PpT1EF2=T7S_wSW_oqr8V=*Y!Q)Tfju-&t6Z>vyur_`;cii=AA z2^0*8o}4HM!g^>|ds!bqq+t&5eeN^q5uzpPx1*B_N9+SGdl=0MjRXl``kEPT|DxBo zj;!*2^vhN@qCGEGe{?-Vaq0^p5fPZdXuZZE_1NbZl#2+{Oi38gL5xHSS;NGtZV$J$ zG4}{hwO&RwK7@V5z~!SPo60vW=U6s;E~A4q0F;r<-x8A{5`LEQ3j?d0tc^6L3w@wv z*?Cp&SFEKFEuedkV**8!J8zJ*CcQLMLUP$|SFlq?(B~$50jAves0?|49&7YM1_fi zhUlXtgwC$+kf*{6Un4p1%J~ki1%yA|(S|zj1#VDsI=luJNi3Vk-0rro$C%F~@#w&KDrj_UZ#e<21@B&8nR+1w&jTSoj`%}&90 zAtW`xXfk_~VY)nLHjR!+s@vJ&(N0z?Q`X?W9#e3apu0b(2t6A+jeV(rP!YW9Dqocv#7n8YIGX06|Gb1xkLdz#Vf&T zd+eEgg=j_I&fK^ZF;Z7(%ckx5ansN)R7(8h@-7K(g(9V3BxAN5WbBxqI!E4o_^|=w zj^^XfSaf(?gV{i2+h>iJaI|u4kHr?=)Y(YY;Uf%^Nn5*&`+p}lHb)oLb90o7f1CBMVxDyMvnf5k)U~uNRL5bP9cY164cP%#K zc3sxQ!ELavY%;h*=yk#!xsSlDpg>p~R}@sJ$U~YfUEsV&f%N2z&=91jY0*L_pKuAM zd9I0Yi3VfG1xOQt>})L|nW2V?TC-VMRCrT-JAMzfGUHycfX&$^!nHz>da~ytXxtx#tCBQes||T7RVhi2jgzLiNA*+OMt%cx8WZ z*tQ$LaUkNSf0vjVi9`)tGX+caBU#TSX<=$)K*`_-AFS#s71XKZK(4U+A`HNRe6&heH$DBd_+8q@JtmPt{cKZ&7PbNbJFJlSiFhV+z?#Uvx@&(jz&-ITyt3)H zUkzaRSEhws1G&+oc5?_ok`#q96Jk4ZG_4SFlaIl07ff!)6zwL8C-uyms!5j337PZa zy)A$3y`y;j1V)&w(ZTs;{iHmG4|x45rY#oKx=H!07`EHx<5t&kbj z?<5ky)Dk}J=DN`TdqN7mONa4Lvy@-cR90{%98VhAK!x(`K%ri~%S&vfZxN`8;Uno! z8kzRpsgeUyQV*@+wfqzrsJ&O`B0AVe(&aBW|4fJo5ce02r66r1q+VX~&c!zb?d=WpmxFgWe*eF zKZv9c^e|FsVE?eT%XfbZa|y*02%{-)s81{ZWs-oO1jOH5Fn}Uqq@h_qTin4##O3iEHvV5GuVdjs|hWVpEN%bxL^jk zO!ZYX3XxAJ)7$#DyY>c}Hy6#6L#A`h` zd)sK!@Wh@2B}JHN7L1Y zvOE!M)Be(|sn0D0&P;Wa^(}Sl{ez4+cAfEBNTtLY!VE~NuhJo7$@j4ekd#kuGTS-` z0W?Sa@gM>o{bMLu!L)gWNqF3oqV7QGmDUd&0%hK2eAE7<*fj3qf^(ZPc2}Kui_wG= zC4}z`_&W*i-C4C72ZWbWh0{}83c&e5J}h-2qxxBe1;uQmccWNb7 zSoGpabQW-rID?kB|Kj_=eZA?ah}Y3~K_fgKz1dT)TSTbYl1y#_f3B+*wSDG}VX9T`%eP9u}=a|SHH`P;$YDkvp1sJgiy$e9Lz0rWb z#CEW#03D#hzaImecWQay3RG9o|6ZU~VG#_I<> zVn=|eg`jNPAp+WtIm_A#s*D@l1g{T`1;Em|a7VK3hea1*_8a<1(oL7p_S>!#if{4aT(`3iI(VU?Dvn_EfYh_h05Go5W4 zZh+mnNfFpcY(DOrR zE>fsA06GovUvi)Es5gEPP&%y0Ju@Cg8Ckh z(-Wac-Ebze=JQtc{v!nWL^RklEsOMeF^`*aFX*GVM3j$px+;;W2-i z)#Vq@XPTp46e#v-D<8gONVHp`Okbivu|pwrlYiqUdCOb4W=S&F3&@v)JC$V%o~#f- zV&D2_Jb_gs0sm(}j-R{cx6;S@@VC;){>UGTaHS7#(1?TNs{+vtw8r^&{q7TE75Sei z>FY|qQW&7? zF*8$(eesk&02>XmtzcH)QmP<$|H(^(?kO|qfc`9@sC7;S!5iuLM_VY>hs>%EN+ohH zAS0l{JwTX2=^+L>Bi@c_z3K7_=zt}=72fptiFm5;Wpoy}p214ybd0-w+*5bl_^aL- z7W%>$R3^`JGEfE&Zk2>h3&FY|o!L8X|;uDRDP z$YZWSPe6-Pz{U@f=+2ZhO)yEJf=VrLiJ#%#II;R8_!wIP>NA@pl+*HqS1RU&>Vebr zYuck7fIsVF&Nqe+NXj?9t?i;VizK+JAI5qa(Si!FiN|Mht5G(NG5eLLXbmSuTqsTx zd0XpRp(Goyw{r?Ib9%t*t8MjXyKoe_-RLwx&`}Ii5D&aIOLg5w~cs@;XZ=ARBo(8M(Q!bSU6ueSLI5g zGQ5>skvTtZbH>bZj|NS4Px_8v$^ZUhMq;w8Kh{g}HYeEUYWZ^(?Lunpl6I)eEnVuo zDi-?uHBw*~>}ozs!w-&!e=^{SL2m#e<*vSCt(m3Z)hX-+S`R@p0f{0AN8*O)yo{h| zJcMqjCueR{=^O@biu$|IVVF~NIeveXAeREp*^LfakF|Y^`PAq#Vrniug75n3J-SHz zRzxa_uy0*N14W+J0HBCOB_Otzp)+g=IK{_Xh0bib+Vz^_zaUC&+H2`9tzBKmo_njB z12@8sj|>ZGqgly;CYWEcz+uq%+JB{GDV=$PPHH~Ij`a~!OXNq`MtiidwYx_z{NkfN ztn>`#7#ru8TQc81EBof|oRJ5KE+W)126>!rl%qAx_qn#I%>_3r0SJzUOV(Hj>@bj&s1BFHmPL-ZDKA^)K{Z zYw%o_j+n|8Ma2Q0P~L)t!b1KS4Lje#-aV5Tw3W$1uZ730v7=LQdu1q$%( zAAAud3J5SqiTEjk@7pLAXL(!JT_6uqu5dYe87?!TcW&eU4AISqgpBbCOAHhRNiVrX z4}9i)ZAU27#&h%arO(Z^<_6Q+spIw!L~!~3lKQX57uaoehxO?9=l}i;g-*01>p6djxO^BJZ{JCb6+}o#gJs z!jM%?c0}PSL6F&Mw1_#u-17U2c|k%MCzlwJtL;kA z9ZMTirV*=pac)ICTeVHm0H^j8;qPrwYK9jX1b)DlI!aPoC}HqIq16iqtwv%W~)*G8|)mHR6|s%3I`2VV)u&*aJL zc&DHv8M!2O;JU+3Kby^7?4FxAkqD%$9H?d4fG&Z&x~~PYGT3;y&jBT(0sidkl>W9a zs0Z+~`WEkg!oddk{=geaTJm{ZyBJ|ZWm5QZi%MwD?QqQ845U4_D{VEQABa@HLZapH zd!W=ZX(?!fR@$Mj3L@a@+uIZEG@QI$xNLpf?c+Vg{#LaYWf7_$Ex#=2f{&zk*eflv zMJj)ZLetu}nEjiz$JGznuRFKc`HKD0w+C3!F0H+?xb7Nn768+MSo&3}`3{4(6A>E- zhg-=p&?8b-Vb!|%+Qg1yhEki_u1tTOAM{KsY;Mt=uC#9bpmX8oLcQhN3l%B!S93eN z5%>QzZ_^Vm|Hd!~wF((YKz^I+`q_Rp1R}Xr9|}Qqlp^{qKuf5A^M#l8O*g{ zYp(Ux&@nEjcoK269FSTJv`G`?9<+pht{e*UjL2vE^0S-d0k?>4!gwCX1UZ)>kss!> zBcHp3^Cle|Nn0Tybz+e^?OTf=^mws|>g9}6s~c%zpDC_kPx7**4hY*Xty z3|aclm}Ffqqj9UOk}oJaK*x~aN`jgk*C)fAc3g^;hnU@kO@jC{sn~bB^tD~yq(xrh ztRqoBTfJo2D|8iT(FN<5ABl{)aa7dj%5Rgy?+=e|X2z3J*B6Y4UdOVv8du+k=RlNE zcSvbr7I2e4*?uV-+`M*@*}EUgo5QHQqsVy{v}P8wtk=3*=?swn_fe5IpI6_0cWZU} z%B(IJ8@cDdcF2isP&JK8G*8v5*-LUyCQ{iNNsq6l*?OSzO?fp7Zt|#QdGWJ3aYvB1 z;@wci+@iO6Wm_^FjDZM>=>v))aQwT?mFh>Vq^zKnRO z-to3HKE8jg53-Rvo`zu9+e8No?U=AogZmtt_H8ucWsDn)EW^>*z|7M_WNGc6l=3?t zgAfTbLNeTKYy^j1Ji7yuA9Zk~ec80v=kyDWs^Bgd?FXu&|S^i2%>+IhTc+iZKq3DK^2LqVOMlPYrlsM>Yf{7 z>+^5z9}?u|$T8nL*k+RsQGeq~&-EqU%7m%4Yk2VTM(2p=wDR(R*1Pm_!Q5TYDr{6D zg1Ry81K47*9=OQD_P7ScWgTPEqkl;!g2z%j`xKdSqIF8W1+|uRPjMlPMz4bJb=rPo zJg@vaJx5r)5po#x6k-aF1UCjz!qpIc*PO_R>Tz%Z<{iUL>}P+|o>8M>~m7Fo_5P{;_Yi zVz;1&!X93OG|j?Z8%OrE3}wb_?_AdLMDq03a}Z(Mw&*2Px?!p+R@7sz|xql z323AQR8VZTh_6L#6->m2zB0yEfjD!%_1{*;@Fps6+1G6%-lAi`lLJ-TfIf~m7}}M< z)4qUiL1!QgmYPz{W9tsmBK?f+t>bCnuC+`N7It0^!4~tH0z_?YP>8TWg|FlF+^R8K ztkf>)n6(Q9B#bj{3{LN-2fcYAhoa8|{gCe1vaZ9Z9Lpt^EHN7HBSpkHogdlwPRd68 zm#-1t{ScDITH*PrlPF4HVW|?vmcr6uq8G_$}=e3u&G{>1D%=dc*mc= zwNKmq4CHKJK7Y%K*3tgmMe>I@7gN|5+3@tKrU>+FGh^-dQ7w$yuP#a1X6;Tmk4Bmg z3pu32%GpW8yxTGl>emh*XYlbnfO=HX6r>qvUv*y!1i3FQC_=}kA^1O> zy;WFU%eJgVUzd6^V zkLo3@s#mr8+S^>oB#{ox`C^+HBa7dS`o&BmjtK~u=M8Z@_=kRSF;qPJvBd29;&ra% zvpung5tF%zfoi7g*q&60&Np+Pt$SbT3)fr#yPqcl86<&)5#*W|06pkT;3+OGN~0wI z<=lG{G9rrqO)Glh-4eSAqAFJ66(5gW_MW4F-`vNJilkyE`&_E(%vGrUJ48sX%~tQC zwd|k!~)y(sAJulcAAjXMRLr<7Nr+1956pAcDl}+A-+i41b6A_ef^|>Gx z8}ACkXlMU$VVh;=L7tUWDT0z5BpQYQ&sr#Q%_I&U0Hss9a_|uPn0aWBQrouBiW1)6 zor5pFOmEgO#!2S170ncn4vU!Nnq9Np1BGr!fxDS$2t|^IbGA_FCqO8jkO+G z$KM5J;U1-F%^B+151VA|9h9+fhcI+11Am9^0Py*lC0ntnZqQYavR9Pme~!Ldkl5US zl%ZVunlev@4~V-2hn4DG{h ziT%30Y}T1lB@s$ToCrHN5LGSvL)aK4z)rM@UVtz+!GI;`u6`D%0U?NlA0-G!&#sE= zCgutPcElg2q8=c*L~%W-s%SvrfQ;jp4GgS2_G8c9-r%f6i^&#;h+EHuZ(6Nu3Flp zL>L$37z!&lgJuA?SvdM7SoJt+Dn(cl(_5?)Gp7Z;n@?)G6+QsL6=nkd3V}DIQ3x&Y zcMvv3LN68ZDHzz`cRj=q#?@amnch4i%mEd!T`=r&?}yEq@r_|UT<$lMHm;C%eq zUTCdxP!Ei7BvZ$0*Z1&QaQFsqT)F1U$r=Z9*A;&6A-hW3&|nFd>%@b0K75V-G?0$u z)8+b~%&HiKDggvP)vvzKW(4PqBKO*Xnv(raQdr20ybgf3s{CY{QKxx^q3YYr;4BRS zpa7Vvgmb(V|MQ&ZK*WvZ`~*A`!Lg)!IhNO+JgL7`Fv2==pCv4j>dTZI$X;R@=8yZH`Wkd=K7RYqMlWJz!?}27=^6KO>JaZCv$+wRKE{cGO7h8*bK_%ou$~o` zSM|JnaqYW)s40edgd@bzB+N*4UYE|Gy-aLwmK4EfTG(9pV1g5v{xJ~sbU|!PCAvm< zx|sawNpef?)@9gebp|HaA@*qDPbO#ec*^xa1)5%t3qQQ6{j_@PU}*@6%@^_9QlOI; z55!;*O~^zbkTHjgyPplv{Oity4mVVLDS)xJURgYLohAX?aChry@wZs86WREEO?MPWxi?LBnCYiR)$JfA5t}U) zOi45;27)_Ghu>f9cte%eRN~Xjm(t3QY_k}V zFlw#cicTy8!dnFnDEK~M?Dhm&T*Ps!(_Tp3Jb!b{VV;thhF3ev<{k;yQh$aXi(*s=@5$}L~qYv`&?2m7D^puZLyH6?g+$_u6~ z!&{x_NYE;Tzix^JObjLIWf=)gDiK((M~)IokPxIwNdWQs4&)M^Ynfl5oUv{w4sl{p zh&x8xbzPK+9p97>N#1x2~qz0MuNUf+plM;=yHe!-AyR8@x5BXd8xe8U2QoRI+*X&X$JqKsY_jrQI z@Q!lti1THA_h?rg0$d$)+hBsQA=SGGa6;*UEW8m)&qb`eyB-nP<`ogLQA*pSc3B?l zXE+-}0@wjCh0ffo(XA$@CTly5y*+hFw`n9&Lx_hAN5R+$7Z}_&&<46tLW#7P?|-`~ z+GWZuty=29?*0@3k(dOJ8#SHK_Y2m>Mhh0aC>Vb=VoS|x1V$O|sC9w&8Pi?RGLqgi zARD>60oI=fXB?(!&e-MtS^tv=Ut(@BendTHx5sxDl|HB-G>(P~?2US^{rK)etE3D9 z0!xd5%N_b{NK8_wR~)4f$>uq5}7cP=?FRJ?v zdyJL0Aleo{Fs3ECl?gjkZ0W$^gIhd~!zZVejgJ+-=M1*;or=NoT)sg_pU9vm#BcVq z3P-UpNIyHJO+b#FSA9MhIkK?`mh#<&6f9zS7U#V|&NqX0FgCJinLwFaOwV(XR@EuL z2PkLejnLc>=MsNj_QP}nqoZGYowWP7Q{X*CIK6!MB@fE^2d#y)n3U2zsgFU9)8pN? z@$JKAw?9K<^#qs=aa*$8om& znEq}UvRH)hMvOgy5s9~nJT8)z?F)u~$p51_R`eY#B4KVX(1eFvuZ8Cc{; z0zYZ089X9QdnB|6FPG>wdQBV4JBf?#GXHOON1KK0fC`?Qp6#plCFE2TGY1)6{6i7PXi^^YXHw=*L*CTatud%0cZ$^twG z!tuB;GKoWB-+Q9X4F%%;27&$f!qw}fB6yud{t$q}+|Mk&D&h0fZ?eD#h?(n~WE zG6FW-dT6;ML>NL7I0R2Yj^A45ph>IoDd7kAxK2WnrsNth{N7s?kb)2And!_zQ z&ApIcATNW^-`n(?H&77YUO3owReyi!eSv4IncQN(gy&^tK}c_Yw2W zLO~c+hFXkl zkx$k!lUH8&)4XGVH}84ZgEe%>vKcX|tp38Hyem=UOT=B%ep70)S z+`3=9s6X%LMwDoq8|XJtm;Ji8*2vMZ-|n9G)I!yEFX&G6%IGrl8(sxZR;oK#TAH;- zXKJu7TsYn=%??}sPI0JkGD+0#$3qNL@lw%1UXF)uKGd=tq8T17v_7PXL4T-Zur;ky z*Zx_OSAC+zhN>II8{PeWmce!)_-=%>Yt~~k^%OdTgksLM;`}&AzH1o`h%s~W|2%zw zI>nRmHB-@%{o?tj)iDslCz52)0P+HkY`1TBt0?;4%|c|g(Iv3)#b$`}QZJUU^}RR0 z`fcg={F!#p%4n!Ui4bY2FV9OP^9qY#<7}rPJ&Dd1fpB3}6{GYfk?&~tkjbLL{Alho zXFOxqyxL#=&af6sS&d~7*+EPx9>|lW_FKp%3UOE)eladuD=OuM1$Ix^zJ@Rd}Hx*U&a1Ss-aj<#_?kKG%@j^6hpY*w3wqx(77D+ zYUMKa5c0+-KSAU{ig2D{t(!PnB#|4qq1|lgAN@^&B?_U*=<4DQzhDcppSrz))@Ho# zcltPqA_9x?1)r6+fk4yx32pyNe<-tH61U};Dogzw%vk7*wHAT?hvgSv_b9tL6`nsO z4|tJXExw_=7Z)>6z6uD>=R_9Pa<|BHvhzp0xrdRE`m950B~Eu`#HAQEx*hZq@erFyu;Z~Lb(hY3E3f3R7+wL0&c5wWH8_Da;VS4xR`1+%ZVCI(2eHGEbDZCO3m@!aROl znNBwJ&$__f_&RX!X8LE1p0Sxw!%vAwz(IM{V2N`}ygtr7(j^TarDRBtvZ;`)I#J>-&dXF?Jx36ClfU$v|88*08cQ=WHFiD4kdwlW6htR!&AKV zH6|X+h2v3N^*uh@%Qd{392~Q4o2h!PcTGnk;-9Xv4TB~ma9mb`C#KjGc*w@%Veq+< z3-aAT-Thvit19J8=VFfZF4GuKKZhN1jY((jATwGoD4ssDhE8tzWL~DFG+y`Rjs83h zD8N8j8^?lyM(Bin22_AkVxB6Fk<5A#N6SYeAy4jEZohLv?VyQF#VZk6JEmH3Y2B_v zaWF=En~CTa)5TDEgf(%?sYAXc=RIYbWFi*HbT$-k+14Ger$vDSR`Rw2q|iojhj<1%v- zFUTkNuI@2Z`Xf6m0`YrgTvrq!|s+GE6p&12D8EJXn?Gw)W_fKbq zxSQ8{Y-=d&q-fJt`^a<9FyZrRcUVqC|2fPY=6EZpt97*j*b&*6-IHj2n>6(z_qvv;7cR20pX0-wVb&dS*C)$`EpxOQxNPDO3*}L$?CwJy&$fD z^|bAiHj0(fP`6hKpH0q7^3R;I&o#{l$+HnNEI-^UXdm=3s(L-+?R4yzCyvz3YdJeH ziKZN(a)~-|3K&Il8w_^7QldNPtv`28oaGWZx3)0pFf6mKtA?d41ML1S1*zS{xKUO) zmEB<-eZJv$^ob3Ac=ra649B}tttD3VVH$@%@IgH?LeD_nVWjdz2dEMqWwVak zWeWMkaB%tlL3!P3r4ZTqy%K3km_b{6;;Lxyx>LA<{2nL64;m30F;o6NJbR=|ScGt3 z8#wfxI2|QN9Cbcpn)yuZlFHF8BK>lx_E6~9k*l;F5;GEyE&((@K*UnQiq1oII49v8 zgdTeP|rX=`r4Jx4I(cra4^sM1xV${o(Y?+IHxz3r5>px?Li&_ zb{%5lkqo7uzeI+dXL8~q6qBFd1qu<4g%w#NXHw>;EHwT_KkBT1Q`M0lJ^+9Pwa|a5%Y<|O z%FD{h0Yw|uKNW9i;3U9XJcTco!~tgrLc>3p5NLj8Z&mG~Gk--Pgdq1vYfd$xPq*$p zWd2u^XjR{yYt@|K)xZZ z_Dh3;{!95ABT@rNir=3Y+WKF#X}4fu0F#@>WrH0ZflR#t22{~e0C-B&|kFb8#N-H>5If0TQyi|YvU)#_@BbQXdyT( zyiFwt*A$ZBQ=R{zxRMbWGobtZHUzYFVYH!=ul(x#i2qyV2!?Kp4v0c~%-G4z`IkR6 z06-hYJ=T9d(eLv%z+WpoLGn8GJ#K&mc;H{;42-{;(-k0Q4C)Bb9CjK0Lssbb^>2L4 z-#EMfKag}93(cUi58ye)pT*CU|EaK?{~JAlZVL~K(#0Dp`G5PJR<76ZU~;G0e2ThQ zr==ic&gf*(sruUuK7gK%RW18Ow)yVg)(^xj11+gyVCXfxh|Om;>b1Hp`M*FjeuR8U zPd{l``xEVUg|iqzH7pnLbi5*0@})F2oz4h(F~_Fkj|N~V77hlnATg9hJ((2tgfbQo z1B+3K#7)U}{?7^tZJ&-|QDhSt;s8sMdXwOZ!}CF#uk|z_vE?q{4%tC?QfCNVH?As*RIT&>K9zHtFzE{ zP*H!Z3Z3iK^P~eHA&QkKUflIZ^EymMW8O$3g8)F+5@4@ZdJDWsmP+1Jo`9}`I3<@> z0L))J;Bk-|#H^2n$2QoJSb-(n9nqt7I-2E-TS$y_Pqt}y1UxP)DvX6{BZnr+tM=_q zy%PL?gr2$k1U;x^h%6<`bwy7_*G=;f9h+Ti_ zeu{vPL(Da6`BHC*SFDliuDRCn2BYo%D4WOo2)(NnUtv@_()}=Tx-L+pR{jGZe^A*c z*b1HK+m%~ArGNCAqtH_qmcWPt({D|?f!r@}b^C9I15~T!#;S%8PYu0#&mbg1_ZopO zdsB+BJt%_05|J&ky8u-;0)IA17s#8^LhMRbaU#HQ&={w{EwNZD$ZxJSKln?fa46$W zL27Uk&F6#!Re zvAbn*gzlZ*9x?#sfqGVjFjD>$bu?p>DpUUw9oOAVtVNpqgIlDRsMyE7V!m84DyuwJC-lv}* zj>Bv)3%hGpns;(0D^8R`t(36UDzvFk6m!9SrTX=XZw;iE=DDeS%rD=2&2}b@OOR95^ z^*X%UmjCom`QIu)=N-f%jz*WT@RGY*@&X=fz`w|1I|50#r6GHePkK@Pe_%{}v?$gmS27pP0SkSaH!^35MW2fwNzT8d9$4pw*YGnC5WMmUwSB+PcA_35o*!MbjvK?Mg=jwCW@AF+<BaQPuo-#~@EmWICYCNc7W554)0T;H(G{{!az%8_sy%VUAZ8>>0=su}U=w5>(k z^A+#3V0`BdG|ANdDi{MhHjO{E0byXHUyJM|x3ob6pjk>@^dC=p>T~5yvw_$&e`gvi zz4~D!SEME0bw8qnaOyHZeg%u(3Bo-=S^ zwJc`R*{{f)9V$}v9M65mdzdf)-2R|njPBxGboNWE`59u=`KPv*9jxDWybku8NUT(J zOtcRJc>$Z@&R*kOoYtNTI zWR#T+%)I8k#^&y(!(;}0xzbIP;|>suCF@B)tlP=y+vKIw&* zoHdGxt+hfsZT(dfy6~Ho!dj_-Zmo>#4&njZ7F^;H0e!pACZ;RxD6i_2TA;USrT4(S z3Qd$GB$rP+rX0r*TkFS^NP`h6gc*a}p5a=> zM6-qiqLroI`+f5nKi9J4M1u~OlH@pPT38;#+ifRa*d(>Mov#!TXo;Mdpps2mU=2?3 z!0$6!j{#+}o$W-;))oNnZ_^QWXd;dE*b){0K@XY$G&)5pGoLa%1#xQOmp@ANY{?%kz$T6j+x_-cA7j$r zygROhIZZoyu%v0tohs;xnL`N%Db0o~ErDxvveeJmi-}vKQv%M@m zwH8lGbX6h#Z9a$h4So@KE z(Utc5HCKt?6}hlH$~#R?3HG0!&&o5b?=Cvwx_hFmiQvy;5!v#BXoS@)N%;1FtgWF z(D)9EK_6wS?lY+0(}%4ZQ956K=$hBM>59w(J7{mcK{olzGmuC`EgkX9cdc{sjq$=~N<&~pDChVLmAjSY^-z9XV_KsvD0|99S!OlI$wYu3 z1wdC4OPPe`ew9=;L~voF0}^_xVY{E^{Ofn{$m3+c({Tj9R1|SS|3{Nqdt{wy$runV z3Uha60w0iws8{(4peJUStHL zvG=EvDXJ3}*equKLX%`y>nBt^(_${8E&?le@x2t=CXFo!m>0fyARraM zcEJSX@jlHlYL36q5Rl#^QXnDQ@b&~y)J?r-*ThZn#Y2`bVXj8|xaEgFl@(rs|B6)E z5VQ-C%W)qKz`)<~4&eEDuc%EaCJ4ITmphAdTGk@mAyQP@4yW6s^W&r(`DQStx1Xc? z!ov@XbW;-aiV4Ls58<=iKWb;RR$d(mdeW|O;bVqh8w5h8=kdBw_^r+%f1wkifNL$q6q7`b+juMY^FX+J*B3Z%cvrQlcWrCM za^ZlR|7G1^`t%JH@cHgPa$P;l-WSrQlym-PR^wETLVr|@Ob0j#L>&<A9_dv2br8C^nYqPC0MwIvy z8PthMxq`ltHPYe$WL(pzX+RgNK;_T)j~;a>K*T<8lh20h~@*&?~IZs63@vq`-#29D84&G7bS4uZ($?KBCy4 zu~m)E0i`^vR*X#llZl?{}+9vu{cYg-o=DY!t_5E{>$ zU)vd_2Pc^aDH%G|X@$29Q))UoFOE)50>5S!lAyJ#NVzwX111$vpYCsScBE3fe~NHl zHnNFkDvMWPdtvV$gR(rm$9X?LX^*w-e_Itf-hO@l#vGqtz!d~N40JzO0Pplg0A?uSBbhoUj{qxA1 z1S(LQ`Noe6HA(wm7Q4?3^BDQHV$}gl`b$q&FKVRI+?uCL%u1ed7qN4z%a7gMbSfuE zR6?W?you2|s>$snT{kvMlN8MqqX4;JqFR^xPYVxKwN3Hga9j34nVzc(r8R+Y%$2e- z?OWlTXnlfS!^u_F^XKR}Q)#BBP2G|-3lDvJ)x>GxRy8{kT?XL_VWXsq!NPd=;Mz_v zCnz4%WwqOzh_C~WiOucp>cZq?9(lFCU9>c2+zSWaev-2h&ykK&j7>jtCJd$ahyn4e zx-?XoF4F2)BghAP$Z2I`U8fZ*5!&zYj4$?TteaK+-B&GHz?#b6VWeBj`t;}=Lv>#H zC|b*TWfCpq>PNa}GTgg+XVsEQ8tE~<9Jo=#p} z{g6Z`du9mPcBrP<~kndL=sOB02=yZjhXK zyQ+vY-Y@aHeRM6F(txgg9=Q1==BQ66>U!oaBscH9vFH9;P}?-NIr*eP99mMGCBa2@ ztI^l!wzXBhgm6uCNlB5Hr!pENsRL<8H9pH4Y1~g#L-kgN9@Ql06gy-&8ybB+!&Oa% z>9B1NzmrzKr^mCO!SNOTnZ^lo?er<&+LQKXI7!*!PNNbjW5Qnkk>FQv+LVvu67~oV zu1r?zfE4crD;txAi#hA&qU6@G#piC3hJ=RlvXtor6X{$r<9G5clWs4i_}vkX>(%%9 z=PsBc!lBqmiuBH6bXK{3MS|zt&*7Mh0x&Laf+1#9dY%vRcbBC$IL~|`$tv%=vF8o! zg{K?N+OAQa-G~J!o({1YwF39mhnQN7wCgHIITUeiMaVFa0=-`!c5g+a;6)(6o@5Sd zkW6Um`(+1)$WanrRXt>Zp7hBmv)4S%Hws0G$lfL6eYH-OyGPy-5?_+La;g>)O*Cr4 z_Ohu~nBi9$6xIwqKpd@+=q@EARwIGg3v|kSd{X_z0VF~ZH~2L9XTQU=-NM_wX_B;z9oE4zA>KuLvBOV#mb0|7v72P=^}m2Hso=_nKNBQ>pJA4vSp@_fDy%w zk58=%XY^kBddpPL))-CK7S%MvU3J&f_~xXhXzpdz@dfYKLymxD<7=wO_>amY3#Qu6 zR_nQpdImiFj7Q?hvv}Ju^Vh&y#^LwU`JTs(rciNch9S?-SGUNx<550$J)O4RbP*hQ zhffv3VR_H-9*Q6Nm4#)OJ{rC)eYKVZ2l_k|X8e`WH_!0kHh4rOVa@B}-c68^N}L>~ zkUR8a=P2F{A7YEcy}gL(l>;02fqac?lyNA;ebLDxD8z{ub_Y7j&tof)CiO`aV2jZr zHOe!LoL>X(S@34#gl@XX>$BwJI_E(Nkx5(T#qH|qDH?Yo+qj1!gHIbC8y`vRc3&mS z_w_d&CaYjgV>MW3HwEwSQyh2<;xAyq_=d|i`%R-^RCn{0k8M-#+NTED=qibN(49OK z!>_0j7e<0zYa(U`oHY3>Wxu)L^)GJ|F*1rOV_$?YsUl-n!C0hX*Xj}d#Fka5k)x0H zC5Pug7SU#!Mb-;BF<8ZUuTZz|v2|&=QenR2mQ@@R&W-T%q*Q#X%PBNg{90@Z<*H2_ zt-CWK{+0+HR@wWjLzRjmcWdOC#2}rMbBbd_Ivyg;?~^!vERVBxF{LHncwnI=+Q2s- zOMt9m0uyD2(%1J5&GUk7SoxN#3VZ*_c2E((`%S#Kb_|;1F_3(gzB1K64?BonQKWi7 z+nujf!GPQkxCOHFe7VGwJP|eX_5Gk&QZV*Yo2_o78OG~j;#G@33CF#F%D;LYRYIm_ zu`?cZiY*oz4uK$)gh8Xgb*dyUiWnl;P=T9fTY)ViGOX&ZdC^7S!_e$iYau!DceNB_ zIqv>%fjx<>j?Y}5H~o6=F6nJhX!WOBy6v4Z7DH7=hGb-(^plM;wlrAEw*0i{HvOUo zcfPDBN8hRxP{F{#o<1d!V>0kzGr585x}6Y#?B^@Z3uJVf9TB`SqJtR@@)Ei_$&I5$4d;(lDC4b7&I4y<-2RF|Y7ycs_fME@2AL<9TRF|4yinv2c@5sMJaeyRa%hcxb>kfvk(y;%CC_YW$-zj zV>HmMqP(ON86`0|Jz_41umPx=qmhwd7xc={W2 z+D-H{d9({A3t~u^5;WcQ4I+BQMkzDzrat7zw=`>&1X$Ag|X9Z=5q;MuNWpebTXJ z`995M^ZmI%PCIhHRCii z!KCw{WSUqR^Q%o^YIFQh*L7=r&?mFOs0aS9C<2p;pTXb_$QSQC**OEbG`#3P&TQ%^ z7RN^M^NwgYPJ6uHjQOrT*uJa4UrArs6Znr_9`F_}7__iiQa+&VZ zU{ODVqqXOd{1o%dr#pLXI6)?8L>2{2h1gtUue;X4GV5b9-OWaA7u?=@U}IL+mp)|% zMp-rj;Wn@E29I*e3p+8HOu3sr2&d*CsJ_;SDDiaLey{B+Q~$#UZIU_~#u->ddQ?7l z>J?d(@smbI`iRqBH>uZitDncp7@eBSuybOAUZ#Uk{z#rNv9XgdtQ*4DD)gHMA4TCZ zJs&^Xe0Z>&@6#vLda*B_jN&dx+S7J5rp2bCnH;S(N)7x@PR!jWW<)QYj7bd}dRx`E z3{$vg#Cp|i+!ng7cQ>E2Z~J$&F$og*Rno5Lc$lL?L6fToJ_}o8Da2JgU5xXguY76VWPZ`PF?p?LzF{08YiFVA}Z0 ztsk&m`L$QmL(f8!a--bDG*DrCZX1X%j84K@SyacNV_|cKBP?oY@iCH8UyW54O&8oi z9#%mkboD))Y0VsJPeOcHyOt~?9*J}$hSF?xixv$h&vym$NF1}3Ch)do?`k0z^@_#S zU5A?{l^IuWYVH3n5$65*#}=o(J#wE1r5QpTyE}z|F9v1yG$~o4qX|0d*TSiTxYz(G zsnDRbA?4EFdp*rnOuG87?SlMUmezqu>;h-<_LVlq=g~WH(UVX=ock~d3(Ud$EuGiO zXoMJ$_@nqwhll;F`5^_y0`aV6sVIqhQ)x;*rGNALczhfs?`)r_Gn_DvVw{rlDeFw#LykZ5T!pCA3>Pu>PDMvC>W;8o}4VXj!K?+%xg1l!~@?VZ6*99Plz%a5y)+So^} zsAe|I@OkAwHAH*jsWcQb^(;0GcG7&wem#iglUyXbn%+Q82Wfbv7`LlteRZmU3FCJ5 ziv6V3RBw4e;mE>GzUy6WmAs%k>rm6qGV-AV+w0d%)imoE8^?iju|2oipwMUtY)(%N zyHpkYq=s%XdfIk@4uM|1Y-`E~y4l`9A|9XQ=tS?dR|;8S3>;%1URVrf#hmW6Fm(UR z!SKR&u9_}G>^Pbke^+(Ye0FleIfLv5dv1^B1jxXY=Nox(19G{V7!(M9<_%pcx>-lk zXTI6s)?cbx%H~-YDwKq2&hD4su#4&H%0hLeoxi|Jqrk4ALir7v_OuQnm@_mIp18v!uOaGve zK8hdvq#qr+K`6a6966d)G~D(0S*6zy#$4?s{Ygz3l0}%Mo~_y+auP&pHh%BNbV~EQ z?!ihMlf{NL@^ORTPOmATCAuK02@XX;uf@D7jole>QVMZ5x=p1pm$pyE2lU_No9+N< zeyH|uX9pT$7P4%LpJFo9VY{8L?3*I@nrsvEc1t6KY}z1rq>=ih7mePY!HwK_&f=K1 zT8&BkG#X0A_oxB;S0CDW&8$kOh#gZ4Go3U-UIW;;-mlhTl@`a<{02epl%cGUi!skj z3`$DICsIGU9?lO<`q98D)OGtuK~IL~MYtcQr%fOBI+ZhFOK`@`HCXgU-sgwFS}{wD zPYw3Rvd`QJ9%~Lzk+^!McH*+iURT;OWn&TfBmbs_djCbmO?2`V)1G46f~Zbksp93Qc~8?(hH&I`H@zvL?^HwkUr$nkRaesS>7( zkRX%%;j*%JlbuchlaFUV^?C;gIvAd@Co!nS;V|~~?(0bo;Kh!8N9-Q`m1}&oNHGUN zQU0dpvtaR04>)UqJdTt8gOo?Az?9tsQR@yk8#oliaEFBKo5S1FMYsL%k^kF81!%5(8*pue#L!nM1d#U0;`1&soOBfP zCOOztA)rgLQZH=n5c66FW)bcOt@BF@Vvu~9?zsTLc0i?znEO&v>RLSPb7!=P-9>rp zhs%3d#wG7?-vp6(qQCqIG~}Wd*A52f#5~Ahr9npyVXhu9B9q1|63ezdH2iLor@{?+ zsT{YzZF{)2qewlSarRI|HN;rc_{DHkYaiEE$|PD=BQGz)w3=`VVqya00D_Hbad@O* zBm7aM-@AY9mcgFCmUUAE9ST-Up3UJW@p_GRmbvZw%p(FUaVbU98ZgPhVQ6wA!~^=gHwKqQW^QS zpC2{P3|qNwS-(i|&cG==X+Cq!c1R!y&e}XraCD3}fOz;u@QOq;tjqzJTpt%S133vg zvL?Fx4+zd4@JnCyk}0F2IFx#Wm|IKbh`BpuX$~;WZJ_$3WN%J9=%$9jj-KS=ZXos8 zv63aJplJtM^(DlK5I+fbG-O0Y*3Wk%Lh*-o2G=gOqr25Yxv|F#xKlPZaf8vfyS})mv}yO;RAR$*XT1wH81TqA{=I zK&j}4;tlyE`OEKD_x%2vhzfi*UV{e+duLpoQ*BdQ*SnQS;9{MDMH z`%ZNIJj?4KpN}>(PJ%y&G`Yjoml4yy}kIq(V)yO1xc* z4~10@V;g&s+{ld%^iLYVX9w-mR*gkaT~uMwxV2{(k`UF`P|kBUQlLVC(@_v*>tuCN zFi|_n6mWm=xx`(XcG28pJ2BHF8pfL*Ekr4Q7IxY0p9tcOC&;${KuyI>vM7*?Pkd%L zutW%*4?~e|^NLv($Ly8!dfSy&@1m(n35VpIX;%V`9S?hoqvPylU_0z3ynfs+lQN|4 zbr=Bc++|i$t$dj>$$7CB%J({NJ~jxhXtG}C+~-E)u2R9i`E_r4PmmUpgbrr51BHkf zrk(|FOpG@f8lT|6K9n=;mgXea5Tl_H3Fh7GhXq9`%UU<{J%{CVObw=l@FMD~^BA#1 zvo7*j(1OA(&u~?@hiNgkI^~l<#Q-6#p~N3Gvo+^7sS)3J`i%ygYvusnPKzG)b zH+Kx28Dui=0e0f_Yu}$Uj72l^?SqNj74OBev0jOeqBSXf@n$V|K@pobx{p5wB-8b8 zpIrB<>Ai-n5Cvqm1h=-Y8}H`Zs9{0(V9Z>;3pC2!i^n6!lA3|e5HrTC24Cy8>eCXD zQt)L_jy(^<7#WFF_{o&<{e&moarfI@a%C1pJV#XskjZmZSbYOKm}n zMvwD!p>^h3i6-51ThmL1=L5!D!T>w+_|;%8SB0wibD7Tiyuy+d_M!fR4C7G%bY3E= zx*UF2R5c0$IV;V9}?w$gSKuS zmtot%_@}rHFcICvs`Wl>oV!(!pd}LEk_q&RGevMS?}PF#-ZAynN9lO#kk?r@9k>&N zjz2Y589IAf+Y4Bbi(e{5J(0Mx4o6{R!NPavBt4*P3WAlxia;~WKp+l^YPy}hM703? z_^}@!7|ac&s93y0q!r1;YDHVP*Cf+IVH1($l3j|@A*}$fu_pi2zFKz)4;kpGD_}3$ zvb5?C=EH^QhCq+r7>v;|$n>j=5Oerm=vN=j&8KhFZqk_bwa?~H<49>RZOf!tSLh7s z8)67cPanla)3@Ov^z&jp(L6j?W0gX=O+w9lpxQ#t)*>fd&VUbMRZ|R6Sdy7!MeFUX z>z53tN4{jTj(<2oLzoB1R=*9qYgthtDa&6>}WqK2mr=cU6v^S+#HEx0Gw zP(A|&$Ss>0~@0aD@`z~gB`UAbW z3AGcN*KKUwY!O)`C{@E!YeN=()pBQ>&lkM-a8OFu8`47A+XSHc%q!Ye)IjP4 z!72VZa|E}2CbO(-9Q_}*IfM_gt2kXW%qhkU(vBrEkGg>pLJwyf4DD8i&Yz{zOG@KhKS1EnQ_@Ao$Prc;Pff}VN zma~LPj=rZ$`&V(Se~VKE+U2MG@22?shDajNnzxAaPkx#Z{8u|sfl@uW-|-|k{CIGl zuTB&s<|)my{7)zRw@0!ENJ%$iu9T#=VlZiqG5=XFI^fNDzOnVPz&iZyVFLkDU>o$rW81p zRZ@r~{`*CmfBtw$HohGK>dgB7OuUwg?vH(ZEySo*?^te<(pP8A5oWPe?{q$r%xe6D zfWyR-yWHg$@x?*Y+zIbRELyXr7OhTV&v#@*-Ss@16#UOq z)*yuuVskQZ9)1?LG1T zeh(|eNUE!__<0NNULDC6jRO3b2!0e^6HkftKk75`&M(E^wZEygiBoSS>3s+jBagiENm&!kE$S;NX&GzI;sR`4+nrPS8MmJ+CG*~Uw^T?|G<3Vt;@n`g8 zW&_d2fzy?iU^?bxn1DanjG9=9M*4iZ-y;ybVUS-rwofOEGt&ALYhqeqc9u9~bP9t= z_Dv<~Hltraiy=bY(=xre{*GGH5LP!!!bguO!zC zv%C?w=prOjOo=d2s;e0{m0;M3up$0Y+7voqmkU_p{Pqy}|1x$`XrQfFpC+9{UGs8& zdi~>XqNF4cn>0%X? z;^srTH>)hddwWk#8OMdN*5y`|P_sw?%)8+Rd$o`M(<9mN6rFjW+dS@^9mWJ)CZN>h z?-Ny>-sYI_2dGrSi^hXnSRXz2(2vX2vWytk<8a^vWlKJmFgKENr0U;@QELf+%Uri{ z+iiE5LCXKkgAo)zz+9W5akQDuL{e8q4!-~Gd^$LGo=v+I#=D@Dp(HJLmWJiYFl=*x zBVL&v6AHRp^Erb-AxysHu9baTSV^HwsG)XKEk4XO*sP@-Bs%>9dU&|^tqefuez{F& zov2}A=W*QnF^+;bS2D_(#Oqo~sm*lrwonV_Z4ig2;q;yBt|w(>k62V1AXZw@lHJhE z?0dIHTm+wA+E9g175AC=EO#{k$tw6~54+O+~2RNk;^4=fm#-SQHj|27@Y zPm>(F!%zGFumCodWZ6F_0yCM7^=+wHc3a!(_*L7jY`xmv23cXo!|)P=k6Ix=|NoHp zRbf?i-MN+DLAqlTo0bNNO^9>|0wUer-Q6WE&8B;wh4KBr_dVy_ zoZE8=&$HH^YtFgG8sisZF6g%g_-`5dkKP=QD$O4(0f!Z6Ji1#8zb5%`kxJ|Nx%3cb z{^*RfS>Si{j77+4Ns&HMHc9q=W(xWIqv;kxz)gQnz6GLCbTf+bl*?$D>;HT8@RnMYIi>NVwbT`$EsQ9or ztBUE5sDW6BREXV1ndh7q%UC!O_H72&=diu{vxUconQt&-bbnu(fQKM`jha1Mpk2G} zXi!6RH*S$f2r|q10KX;EqCfjWB4&6!6 zrtQXcTWeM_+)Y)e2f?CteyooA%-5cA{BH!etrl`(+!2AF<@apUq(UjH$TXS z9$@9tUj0;E3ktmdal+tV@xe)2?(X4%r=UeGv!0(Rw^>|p{5jNovNJvExHXm&KNoK; zemD3Cvim_&4EwX(xzP1MU8$W}ie;=Nd<&XTh%IlpX}hN}O{X^qz`vNksQkX+-@IqY z66*s5Q$7Q{F(5(VKtWDTMTXoYp9{NpkBSTybrR>!%J-uyl1c)U*KYbN5dFQ790`Pg z2?dsjpH`8}Dv&A6kUDn!-sGwWsLBjTa0Z;NG48X0b5lwOb>$*?(W=U#ktwY7-|? z5h{DS{;Drk#h@)a!u#16=0qmgJya@kGr6RGuOkZZ!{Xe3U1f}mgql1%9Ej0b*V832 zgAICLf>o&It5QlqItM~(jmpoC42O^%f#u^^n-xywA~D64{w(3|iSu6fyJwgYlUn-? z_?(9Gg^mPC)^YB+6n`JDzTv;|_2CYHv?}jqzh)5qN4%^F}z2 zdZpJX!G$L7tFahqx{ItGT~snj;1uI}llw zDSk6>uZIXWtUt+s70I^y`FK=V_1a(M5iMHa;IfbUS^r#pTwD4Ygb8sDH!TJ1e~DbGGdX4ARdZIIa$ z1U1wC*F>A58e#>k-a-U)Haw$d%d0x$AamfsR`kioVi(qx^Xm^ruylEJpoO}T9R?#` zyRHAEY_6IG;a`#h$Vs0jQRACkjU4*PZvK1wQz1q9UaWFgCR7ySVgkVtWS8W2*uCLv z(<#fqw2!Op@MQ)IBdLpm=vV$&|JlGNRoq}}Y|$6&B94P0LNCE6OOpGbiT>BS|0_WJ znvp(f)K8SSnc?GSq@fV^({8%G+`KuR`VLSzxu=8fvn{i&ZZtO!y6siFp&ZdaeLB{AyPK3(qq?d!Akz4S7PIW5`M-jg zUsI^>2P`Oa^2~!qbRcd$g~i#W#F$h5{+#?BVFDwNeJPv{=PdvI&+mPmw)v}2QeQ$< z`o=;-!Rj=}J6YpsLH7KMii+OQXIiBcY|2^{l@E&lRojW+ycB86XcNCOJ7C!Zj+t{@ z^f=2%t2d{()?0dA;pC2YZDDgQOqXPhETKTx2xay{!D4Wg2^onrLYxT2p<-tH#Wq4kj zOW=)1VP0#$6MSCh`9X_ZVeM|k!c>0wWe>-yhv&tK^IjAK2sUNuQMr(+mPoPvP4;iG zX3B^JoSzaQbe5hwk0Fe1uW8lbt?9h0B3=L_57it4SAj%a=4Aq77{|CtUMZoaCI$1- zDP%{Z3uK-{3ml9vy`jz@g(D7|!Zwfmz!L@9bBkw-OcCe|hzeb``(8T*z{%Z37Kuze z_Fg(iN={Wp#6s`C3T&2z5E~IYo_iL^Z743`N6z2coixsw=(_J#obFmCZ|?RfaxU8) zc)L~k<0TC`S@4l~o1}QP3!W{i%~z0~8GY8U3}};RGYD{J{Ql{8^t=|mtK;uMUE0() z;G-w;7K+Y&SXY3Wc{j{?zHtviE}etHuXmPiz_Bd}rXjUyxM`@}oVfD&yzFOyZa-f; zm~a`yM3xYEzmtqm{%|>zrT#Fhb|pp1M`mco;wcV}{5f!*xN_wjyPV(DILw8Tl#NgU ztlgGjCd4zY@q614BHvYBTE*>+8@HWrGKZvdpn@>1ePYnGHe}%83zOJIf0us1sQJ^A zn0M+VE?@J2;pbL=b(GopLFArWp<}aGnp@?uC=0E~3Z1;I980xnvNyxp&0%lh-nNYw z>gdSes57%tma7qex7YP1UO||1f{v}XORG!Vi?B1t-BGvjA{M^jUOZio?I8rg>z|{0 zCSJ+q6Yr*(RtK$Sv%)kTA|FImuHgHj5p(kP=_xf#*H6C@r{gI9F1d35!q1P??m&0m z{b)eD7bsj$VNGO#+}`S1DEqNT11+;GH8vMuB71tyoO)l)YzcWikuIjdcZBnjO#M6cuC*2i3%hv;2b zaK~6)w|6`^q+24|%bcFqNX~1HmDPpUdcun5kBE1;xXjMR_s=<6f8YdeZoscJ+%>wO z7*cM+ugV?T*s@Vl@n$P%CWDfbt0w_My8|abl~L{;JL|Ud&xUx!-t;~d>$h?seD_l_ z+Xjopf@FcSP=j6_l0X}6DZ7V;m z>3J6DvJEWJY1^?ld^P-)&j&o<3k9tK7S6SF@YIySq}BY#UKSOT#)qirb7w3mhK%oc z2f#mEl75!IHCsK+(%e7UKSN=5DI6d34q4vtl_90(Qp7xWoYZL72E^irupsZ@n%^&D zU)kNu2y&&u-AHnh-)h>L5Fm3XY`9fqmVszp14jz%0U&tAkDqn@xI{G)xG9Ta#C$V1 zS1^;g&QwnVVne%6GhI-Z_~^mvDBN+@rZiX+TpqJiR#etJnX0NW zkl)brvA|+-Kor}(HnuKWQFs$|(xs+QbZW_qoYd4nI?<{uT+=DO-8X9$I2QiVSN#(e zH3tFfT6Nw541J^d{eemN^pDlreL!E{h}Weo|LPl+qrcV?%joxU#s!{b95S|@Me6~b z(%Kd1rRJADjY44A8jfd@`9YML`m&w@Qy`~=^Zp|Sh+SyWKCF$Kbs$yih zJF-g(5GFuuUj#iPOh^%|sZ9-p;h@HAz5)>FOZqEX{YU>7aEeEL+VFA-MNcQ`5T?LZo7+$QLo@Ft@`DJGDnF8;9vq*=WD3l{gsyT9S4-*l^ptb{2l(5S!vHal_q zAHo{W2&&ct1g^EBC`#P0T`x}0C|gZ@DJT77lwlxTImAsGH8`Vk6^-d#5ZS@%2czd<(y$C zouyq|os8I%DPGe9`9*V4JM`2(4-e)j5@AOi3RsRpnQ(n?!&#X{IBS0!fe@phq&M|_1VFW(Xcj3@%K6~qJ-|X}hq6-|LPz>I z`_n6DyawFt3-1@kv|iI@x%>n|*XLm87@janc@}ItIq4wiiSO-KzLil8-6U zLIVI@Co6pGbqk~Qk-{VzwnZ+=N#;V#xe>mk$ps%5zmZ>~KdaaiGOsOvpG^X=i{5E; zQrbum3gY3{ir%g6s8@Anv_J<$$b66#UnAa(xaR(-T}QW6M|Pkirvb52g)l?nP+P8x zf+qVC1G`CKip0yFf$1ZbSyvzB$*+&R7^EemsDZgF2!27ZMjIS?v1_XoK_E9iala%u zXU5;;tnldiIT0FNf+App(D+k<#>M~Is+SLxbDtj3mLyX1%C)4vF~qk__ix%UES9)6 zfm*wuz=2ZiY98tnJQ}cFXja>Ls39zc+(6MuY$sw{Wt1HmvT{lC&SdW)C&QBf?&*U; ziM1)@m)@T^AHFB&GaE4sG^UK-aotFD(ZUby=eX*LP(&Y^=wqKM5al2-RYw2%vA(p?uz%?>dB*xWh))SDLg~ovpli9};7xGpnwCbmHTl+HP zYvieO3=~0hnCL-L?D6ZA79)HGzAxkxIx>_y!yV-{p2KSr_a0@5jbmaAm_(d*XzthY zEM7DXhQO?vPX(=RA01B8tH^-@(8!h)g>IJ9E<_REGK(IQyFVE_TCF^cOT!fYXt&ZC z_}q+FPt)9VIdYvxf3m_`U^a7R_l#K_vhi_w%Ra0#4K)yY zJw`<5diB@cU&YP}lI{{mWyh4*YSCy|Ap+s7G zr-(W#+j=AR4s|Ll6~AO z#p6Zad!@J8pl&g&v$F>JzDKD%({2f&=0+PCG+*bjpX=W^syW|;3vk3;WMZ|NZ`=NS zogL7G)-7$UiZaR^48f=T3yk)K-UXFWlOo9J1GNBDfgAMM%I7G<=6Ce-n1KWV4pH2w z$h$*H8QCP#o$+GLMIZr~6BiO2iyLmNKB}8m9%1=##JbzmmVph%8^~pWNuwvdh(_8> z@M@^8AGJ+16Uc%m6!uvQ*zBrm*u|$Cl+OSfIz81LH!=vwlnwu>iOg+3V+cPT%3$BP z{eb_bRrek&y|)kpY=-H>+t5KK1NuhPAi-;%%J<_NWuQ&2^UNVr;cyL1_pHXz9e+CC zW3|GNvSwN=C8CWGB}A+|Cbd5Kn~94u-?He-oD8J{th~C^o>L(WVhsUG$kMwM`SFQn zAF(9&YYI=rl)div+FphIlySf$keHVJ0TztK?us2!{x(De?7;65k3tI(z(~}|svI9* z%y?YHc-}%;8VWdA?jurvU5nGVD&BOJ*qB1*K6{dG409R6)(bDcnMj;kN~bw8dZo19 z&AS}Yh|5QdaSTS&8&rHs*Yc$!M`Kxkh7-kGKqds@_IB3 zs8W&P&sz?cEfPrXs_^!)LehOj}g}${) zp`wY>Vvci&hf_<a~N|x z*BX|3WWH^ZLCS9U?W!rTh(=T+s)2eO8-s(&;Gi6aY=N>_75{+^Vq(uF7J@Bd8lQ>l zs4d{^r0afT73UY}(f0xy!+e+2yqI&jxrtQj=Nq%ulZhu3+AAPG_4-vZo&eVBoz90z zB|t}XUz>)j;hP^OpXu0GX`_^hYq*FHgwMT_*7_GAdoSrUoi^KBz!zKF`-oU;Nv*dH zYN#N+jUvwF;vt`-i}>x@j=+x-&CCSc)z8J>xAu9-#%tI;qDCmK*LAO5N{Q8S$Ko;C zdg?VO>_0R(mZ&~&5NI<%CC?tc9vPR5d{nGdHxc6ek=y@Ysd?_@1jn|*E{ zRk*Vsh0KGHcs}+J4B6S(I1ExIUDl80vDb+@XfrC-Q6S+RbeC!}81~1rEghI?U)+!N zwq$2{_@!C`BqA&GyXG`@0(P`)*}bpRJc~}c`a|7KKBCvm0@jh{%Wu=awNN07Rn9pz zUbSGfS=qDoXj{cRoBNztplc$c$~#=h%E69(Ue|{5@W{Y(nLm-or^I!TPYNHYokMVz zEAA={yb=EF3L?UMSH%BtS5%J(=0##S3qHQi$<}?MIJUZ!f~R4tQ(1{YmNZ6bTc_F` zB$aZAeleTU{N#B&UdzGGQDK$Ib)&?33CL88dqFQheY#=yU7g>%g^e5gxZYN5{Nod> zNK>WmhbLV)O8ll9hD^~|Jtc?5!YnXymQ~+sdekR+(Q+kZi%_e|xuOAgPGTz9-t~4k zicdw56)G!MOB4Nsscj#28aP9@uwj4>Jlx!myw$&a}J>QOtv@;`;GSlSB!n;QO<@_FkINAwrMOL%?< z>K!-d%>4b&A5icA(+ds)v7uO0QnicPy&u%}bp&r&=RDyzXTm!(HAVl8xC3kyBa%j$ z>F~SQ@8D!%KZtw+XEz!V+e{dlaI@pi6x-YH#leAHlF1cmB>$LM4lIN)1u?>8hzNH; z82%=Jj&5mGST46Tb$wCw0GRLBbJD}k0VFyY zhYopUxLi(($EfEMG99T|8)Y?1wYKgn$Ac= zy^KuS&^_(>w}mIBKqf~06y{Wi9?@-u$Yaq+GWq6TRDv`>B?SJa5_ImUghojU(ztgw zAVUcLoO5bN3ffXda-GhM@!-_UI} ztGiqBI;hi@ta+=lcttDl)T&-rDv4zhpCnINsD| zL6z#2yQ@+BGYzY*9@~pQ+I*X@m3+M%m2XNmEK38VRd*}^cU*MfYK>K?ye5kLEE!^A z1&dI@FIB<+kT9%N7;2}E2_9W>&OI5IG$DCCsobR{=D$1$lAYe$B%GFfm{Ou zmWeCPO7yR-T~aeqSHax?=eApaH%xX1Ka4K|-Tmw3B-d@hkkF!QZ_#Z3O_gv;Alb6vbDF;T<|;1~>VUt*njWd8>Nbd`2&%e=cpE@X`pG8P zan{&u2K{rK8UQn~8}5!~L!m|EBZ{N{-qxI`tlYP-PO{b;r`;K@IBf!05e-V1A3m$3 zm}PC05y0$9iiEn~+Y7>?@=*%pB#Gg~T6>1@UopWn95rqoF%_zAVl)%-d10^Cv9ShH02&dlyHH6PsU&AqulYTTLqZHHqB+oZ z1xez&Vw>Zi!`6VfKyfDAJRx`h>)*dRk)d7dQ~v!992@rJ$q_$S_7-<0_~o?Ax|uw92Njp>YmHLJmKNK7<5G z(e#VE{4@LsAV`9Y6Rj#JQI4oDSc$jfKpmlk1nWa`pKYkK=NvU4T>bF(GnaD}4@>py zzqD-5I4;v{Q<9!`mHn2V{O7%zMqQ;KO|k++6w@?WWNcx9K~nreGl0_Jf8J$sqy#P? zNP_~!6x&?Hc>8-pEqJ_ur4?O^+pwje&a4_*Lr) z54x35mMYs)(~f!1rx)S)?bH{Lw=*w4{n2*(`NZ;3>9zS*?-|D%eHLL2b(o5};sLre z$g%+pp8niV1X$XWTI973qt0zux$$!{XdI+ypfO15y6P`n{dXH=QDEX=NPoEDIN*6B zqDX~Mk@r-Xid2~n%7U46PMFvE>kcnL?>YZ{VFK#iV`|iN11Z2)t8WQ^Z}?|?#sHxR zGaa`#|E?-Q2u%=t^X%U`01y&kBBU&3%^3?yP)P7i@?SU5$2zA9LQ&jV7k=OCY60>* z#6eZGT78JLrnOKMrkwd3$oezyoMgZ5Ww!R{bv`)}7Zs_m7r|ERw4x*Ucn7y`%;1ek z-0W+Ej==1RS~ckR6djNO--ECH8U^1}RYY^6|FL?;2uKNNzXDn!uU%APz9t^PN9JPA zOmsE(Ndm|M(Gu|0-ElqsNg6jlRlG8H$1@Bh3)G+k0!Y_VQf~K|(oHU@LCMC`P}}C= zjLxcJfH7CEb+QA{K)dMc(j|i80inzeiF@~(3megYQOf`oM93`ke)Tzze#=Xq#6@E- znqaW5#|=s4x;aBNI!RW&u9EOsiKgwX%N)pKUe`cJiel;MVLu|=LLSMja2eIo_` z?FTPv+HtK!(fzK-4DCv5?OeVa48e`|*hPmsOVGDgnNE`B8mG;jaL`_8QT<-38d%e+ z!c*d;_GADB5jJHM$TUaKz_M>@5PNe(%d=PquBAf1wU97UiK?DBd)-|g^H=L3!iCC7 zw9IBbhs0yq_I$F#LZHSi9|bWZs{nQm^vv1&zHQ^2AsL1~=+yjR-7)aiYA|ZhgQ4C$=kU2lDg?U7cUy(xb-j)h0>{&$+@<2@urK*VfOo)$7;3O+TXbS zO80JGe=v;mbs3yCKB1LlN&vy|Z98bJe-t}Zw!Np#nH-!>YP$xrS{jPQG_Lo-+i)XX_ zOf_8yIg>Vd$xtC!-qliP>Mx1~dEf~O3RT*gtZK3Ft*n41+Mq8We$GNNqO#2xvatyV9Qb_Obn5Nuq zzO`gR?;Thxw}u+>w|5i@5=uG@4hF?r?uA{oXqj&_aX&#+spzF4dU+z?u&8I?*=u$7 z%NKHEmbo@pAYiS2=zzSoq2r*^rTlpLKGx-7?!H!MIEhwjwQE1?$jxJx+5wNFT@2Bh z`JuLzC@&zooKIL)4D(yJo=iIYhe7^&Qx+Zm`~qa|G9>Tw9A`va!(>-w-k7KmXF~4A z{kR*?8`8(-hEWML7{V)i7lVy)ov+BZ{f5W**v9%J*-s7;I(1DZl|T&=@o30GyISCK zUf7xNnopYg9N>hnSG5kFi}h&|xffbgcX5hxJH4>IzB}7V;__3dx;KaRZe9|$w~7CL z%3>&o@`5_Q%0$l%iU**y40}urJfJ(u`l)rhX`)+w=a2>sf)$0cD6?%jcKHBuquFIb z-i=$!roY6uPXh-kOJr!UW+T6>pT#2pNVYXklo*h9aWuZY$+AK7_639`3)xGd(a^j} z8gwCh5#Gi(%UHU{v-_S7cv`MjQ~n(p`*Zaxt!Ne2>p{D-<=~AJJIku@cq-t(yRY+H+h0a)(S+Ed=5??ombq%4CCiwnTLY1WrYRb_>~-ydIy-SP!w zChOUe0o!*viJ_Mo>Du+D9krrvWq^VuuwlIcB^5Q0ZHdZUy|%(?UY3DbS!y&eYlDwW z?}No*!w*CxiXFj?9qajW)qbO>ce@_%ZdPbKHYRTcH3Rt(nY>)WwX={uQh%$+xl~TS+ouPoKp3#P*0PxVNt-`s?BzG}X}{ z6zXMIc1q#s0yFRS`Pg$!C7~PLvx5w!$!_SUZ*OW&xAy=3SK zR_I4YCnP40WO!&}+2$Q0T7y1kGO305Ha96*xYPpFw1P*rmakn~;eXoIMAjJn=JjOw zf%n6MrEi=hv-=`EYES#aOq7ODDaVa6?*v4^FzK>)S zpZ%K#9g+_*2BSosQlz-+iKAcqoXhcuP82yPrb~6^6^o{)A$1{jS54tuhP8R=*aD}I z%kw_SzfU0^dw||9X&Gh2_Mv&xDcuV_ZxKGk`NEcT+56>%3X6p2<#g<$cIF=&;_rF| zj5#25Pnf__5$FP@`{WlahDi-R0qgGzhl~7_1vNf?(J>IK?<@SUqTaRw{Or-WFy6;0 zk65cZRf9;85`JmuZ>-=&iwpZL4@4l(L*iCJE>GJ179wv)XCsdcsz8uNt+B`!g$%jh;dXG zpg1}25bFl?_6uPieVP&TZ2klH?>tQ};ANURaDF_g^mX9HP)RhM(#gmYuIJDcH|Rqa zJNN=VB7<)qyl!2W z;!tH~j;@Ra85TEWmJsN?f?i{Wupr)LQze9`LWH415n z2&8SB_X-v6KEKP_|Ecm{*&rn_!9>1?tsBHa9UeRcYG{Ld7Ls(N=g;OgxRBa@(s5Nx zi_3%Xi>RgxJM!q>F2KiPAz!EGG$AvbR)|jLvAQncs%wCNo&X5wH>xo$?6lnKZHP>0 zzH-=+-*DA!g(jP&)>|qOk67d<8m>I`Saow9vbMz}=(Va(I|Swd4a*ze$I3~7EGn-^ z+qxaOp1qtt@a@G4_lu2NulaU;Tz@BQrZrgx#ucZd26^>v1mU3oMbPPw18bV2^b-Mi zlts&)RmI%UjZ1$|muE?x{p`!mmhMGP?}%MMJCl}{`NFv&{BLsG6(UkfODdgp5f^^I z!3f{W;-ehwYHR)a?eqZu0LR#2PY8_xR<>On8XUMQ1-6YMqmDTmEV_o3G_+Cm_w`Yi znJsz4R}{*C=72e`{NI%NXr7NTE_+Y+#&6tYu;Pd82cO&}=(%q2@bbxP<)J)kD9;%8 zx-swciq-%)hdLPY)@K5KI1-rT)m<(DhE9D=@e2;{W5+5XW`;+n?07S$E$@tOo@Y|$bD-kOw z8pji3VeTv2*~JJz%X_>tEI3tSP&puSb)Ipn3Zu4x>E#kC=W;H;HrI)&-FM@BneJ1j zZNDHB|0=$XKLlb+IUE3V$5uJpb0f><&xuBXN4L78PGm*A1bugtJtm778ur}7ih979 z7PcgAJWEXVvM^K8lbK?HU^GbmTr(VOUHuRzek!8NZY@1)`s6=VFKY(Xor~?^7eSzj z8g){ZiheR&zcq_5_0H{O(hcwJAWsgy1-^_Pg)aC{(euhXdgAph;LgUo6TrKdHzPeY zc(UYD%|qNf+{8-WlL*v%bqCAa&E2t=Mpz`sQBuTil2zHjQuGTY`1{ufKMNM6Lb3#u z!1^TlkES9<`kGt33E>A%P?zMsts2GZ%=Pby6RJfe;J^U$s`{c~BegyP3T;?qxbQ{Y z4{<~Esk1qFoEsq5tdki_6+7R^;~!GP?1eu?-VXWu4(fhl44~|6^Fj+r?(@es;}GoA#P|VW$$Y}2$RXN-v%?L zNj)K%hO-OAhzuKriIl@ z;jhpUFYBFVnWqY}(G(*jiF6F=OWom{ufO4&I&O~SyozPap-10+QX&&4=PjCaXK5$j zrCoj&jZM3)htfUxAq_WBdf^%K~16rOdje9R%YOWBfdn3teHzpVW1y7ONw32-_P!}PM$o`y_yR|bIdYX1YAG<6n zH2ghiYQiEsWr-6(&V8xZ;EgCPW@hrVV^54`>WbY{CI+e3`A;7H(Zr{HzVo`g97P_1 zMS0)9>nfs32#wWso1OQZ6#wGHcE3w~{$nW()$A(~ckT2SSSl|RF@25(cq>e?MMuZl zE=nfYwx!W0Mg~j@eDir0$@{<&>j%l7I634l;x}%oz$H9e{YNE!;s@&4q}tRT;lU^u zyeMYe8%q%D4V$Wk1nbhU$>MZE%kDaimoGmm8w{*86F-Y9j**q`g8=nsOwSvKJfXJM zbn(~ZGl3k)$GLImPgQ6;kq7G*?Mwok90AU+inP?xdEMqEQ5w^#j0_{}vFMR^wQ`av zIPltPaID&V+5JRYX(I429Arqwvk&sv(kvVJi}$|r12|VK;%OqbCGuFHHvs$drAE~@ zU)!3vj)?aNm`A1K*P*pttNz7FJ}rs_wK^`NgFpC;R8@3AvVXc3+UA zciD~O8Hvve#f9y$&asc(hbgY>?NPDcKcNCLkoR;}^kt=~O?E26kp|+~P@#(!ZI|8r zFKD7pF6fdk6$LhfFh2mtSqfdQf}OWXFmP#GLkC+eEx7<>FGw{RXfHMN&@0PJ>!wiT z8->7~hC7V?g|YZzY|roc@+P>m0w)cAEe@8loOw&nXgRPoST=2o+DYK{eNz791p9(9 z@se63DbN>wEd=zjF4kX=54q1m?I$X%FI6hv9%VFcPsG73Z_n@Y!YeaJs4Zi}Vy#=3 z2?lAmK(t9LKzpfaduk@d^XQ^=KB-D6Zi?#!0@g`HAc*t< zRong*loDD0kH3c#=@(Qtc<5$}rpFj4Q^lkXRcKo|Id9N}Ah0sk zjUCs+Xtz(HoKcRSpI}Oc5s(eUMQ*@?Y{rt_O$TzEiH&A3w7UQRAiZc>H70c1x~8}O z>b7%f0_fgIRe4J2^&JWMzhLQG;FMU@<@?jDE&71V_a$N+0Hg_ghpRupAtSDt)HQLO z)~2%^G4@0Xg^<5C>9Bf3CM@7leL;PwOQEaScPV-G@GMR=4bp=%NCm zcLyyg)BLK~Q`N43AgOpKF=@4y3Q7uNpN-f&9XW$fn3CGCz~#zeoU6p*xfmpTpcR5*i3N>&&`Jl0O?0 zl0nN7C;ttYzr8cyUaa;73+i;B@8lin=GxZq0Vmn~XGVTup=mPYLsM-Tfag$x5F=iL zE7&+)_P1~GFGTHqdFM310os{2zrg)I`FR9zjlcP)DcD#Rp!n^DoPf=|XzM2;1dRA_>Fw%l^9%O!9zcfims$TqAN(>A z8B4|!0W&oJWC83c?`HY=|LYVce1dis=~K!+9QCRO)ZB z^jXLJHIKz4b9+3Y?c?j}Tg!P9fF!QS-;&LcgxUe}-eV&NFq1~vw{M|mrkn|~M$=fY@2oHtf^Yy$=<+hrs5~_ErZUCQ!ml_pl3L5Y8Y4Y-L7$A}s znG82*3ryx~PJS2z($-{}D_>%+TV;dkn1wQErI55T`YAE6uQPXifX?`3>8 z>AS%;hI3XdUSWU6M+5$ZVh#cG!O*`&UtfPQG_>J5gFU3A@n?@Qt0zBeIUvRoE0 zd7{kpFi51gFLEF^|NFLY2Pu8rnmm<1TaHk^ysb75g(2iF-PRF&v7&rMblr>D=`mDM zbM9$SEP?B=JEL+Y_}qCvGkmlo5S?U?-^o&U{LB!*`-m6c5~=mgRzeejv@4TYeFNVr zd7oeIa;Z*CqCr#`jdXcEE+f!F8)~DT{79ubW9F*JM&F~cTSZkM$=ER)%_*_`68Ohf zQ??G3k69$9y}Z3t6M+V-aZSh@UKM+lId4p*R4>Kxvi zHa3Ib^<1F&orRb8caX2&q1OI;b*;G8<1w+$CdqImo}byN^K%}qwHX+Th0BlA1^KSy zMneW>-;bWmU2f;;ltIG)W}+JC$HQi-zC|4B#8}yfZ4KCFLQg;GcmVm~JR*iL0lQVr zaOymu3sbrDYkRHJcblC=rt_*y1TSS?cv9pjx3CdBxo8gs3_A{A+NwdX&$meh-d>m7 zo@MgP0m%Mq{D^0djv0W=L#c8I;i#kb(YCuSncJ4j8GsEwXnBvap6F~{IXj>ko8Ku{ z*Z?>KPHA||M#{X?l5OOWDN)FZ+|)tOH^M3xoEP1%#7*~;Fh2jX3%P~GfYELN9h%hH z5&-Z*g>GAJcn`8)`2&q{`6jDXby0sh^2|RIs!*Xh8+Ka;KtZ01^G8i9;m}kX=~h6mw6Ch`*j{qhDsXbH%u5T!g>#IoPS43@?z29k~0klWM4jXLN48deFZ1+3jro z<)wf>?FHRB%bIFGzt z@S2XL6YkRAxV59S_ifd;SRF+)7%@g2bH6ziF6^1)gFt!&{`8+NO{CY9Y;6= z!wb2E$B55UFdoWa8R{>%Tt4k#EN|(AXEc%L-@7MrPv)iQ+pnY9SYn5;FQyw@JnnBd z+aS!KR6`$Wbl#Py7RTt$oX!t8=#NJlSJ`G8wrXbQ0?E9r6LWf_p~7t^aZH+9c9R}( zC(P`;vcD|V#8MGFKywd0>a!s&a;9D)9mSHsh7W^s_v~^A^D5BXbAYB-%trud_xK2r zzCa)Z&a(-cr6Y3=+TP=`P~Ys%hHsO49&fhjQ_I_RHqOv9)Fiui>e6c;LW$;Mbv-n@ z#N2{p`h?u}rc5<_#AwXReEe>@vvnO9U3BzjBHA)=2g@WYg<7AsI&b;`AQYwVr>)t`5mk_oVcvfBX78kOfk6v>x7TLD zJ?`uQ;N-uZof_H%>>qY#g6A)n*t2#snSpoDlUZM4$*}Pd-~t004&;=ws-U1YUz_G< zKqKszyb*6R*mUkFu2cX>aSu*+Ou6un)y6}LkU+Uc{)+gdSEeU=L#0+b_3GOiPxZ{@ zk##b7N#%=|90TGm^Nq7OZOVoVp04&7Zq&Zn1b!HJziI=E<@yR#H(5?gI_F#sO9y&^ zOo$p#waX!YxohgKt{a9zKewXDU-^nb2;T}6z2`NyXrE|L>^he7MezoGp68oQ{>tsB zY;U!;^IXX*CoTpD9qGDKLN1amG#&o-K(k%0Ehj(V9g0uG*6Q>+uQ-i51ij$X%l`z? zQv`3RkM<4jxUL1EV8`R!1Sa06VL4tx*(Z^AeHE#@g%Y+S#V?o!|DtNxy{1sPuuT(0 zhNPTe5YC&H_qpW}q6O;)qVH#u7fRG#XI_KwGcLHjFkVT1Sqr;$rFKPy@)lzlgnYR3 zC38Hh3O${^3F{#ch-$giG`okxFZ;$BEEnys5EnuXAkPnvqoEGka?%4oLxI-f$s!Yg zeG_4zjrNs#HHpYAWeTvj~ste})(d_0 zacszk3aK0QlT6*L`x&5w+Lv@Y0#4Tmb&<|Q`uGm54ybMlD1xM_s^Hy(EFU5GVn&~V zk~kMAi3x#zpRhFFcfiEaOcW#>+Ae~xOP%cW4a zo;uF8sayH1^M08B6t3rR{Llo&jL_Exxo|BCO(z1CrFcqAzewW+tm^zDkxv3?i6P>c zeVZ=^6ZV5QBW1l^_c~AKE$Awbqa0C=h(n?Uqs{pttO}(!`}^f0rt&>lfXztLHLT6` zc12rZc^W7{+OJ~DnE7w=orP?9ZY^fWYoZ3YJ6Ks@AAY3WQ0Q+3d>R~~8RbG<<1{-Z z9_eZa!#&35xBIiti*()hf^!hdD;F+?7WW00N@VP@Ds9GgiEJXQ(IMN(7|72AC;8xc zDM6_JYbUcx%A8}bECIQkN2-}}b7_=oLJ_jrDS-}o1W)~OPogMcg0bx5 zNbjKt%&MV%PKTCH{%8IU9UnYtxN6Z}$G$W5r*_+)uf(_!&o79Hg-ji-YV%*G)iY2E zg}x3KxTs^LeK)T8c!ya1vEJ6jP$L{?ZxaabR<@1Jmvd72josry;zUXZj8QEVL}V19 z{M{A66AIg9e3l7s;&x6=FvqpXjeLlp1W+blfbgg9+ZP;6q2B zR(n*)-SVletxI-WrBkrp?NI%ujlr>hHn8P2H?CYb#<_>1}3!Z%0QR6?+5ul zosTMw()R!e=x~Z-FBo2j3E*%S6$+g;58aM|zWgkfDNZ9;@sJs?92N3}>hrb*5{AXk zgN^42wSbGbW!(txNzuGNO&hAuTiJ}WK?~~>+7Ml&O|v(p2;Do**YRKK8uu#`@2tI# zjOf%3vcVs-kC*hFAz_sxlnydw%(+g$O>N+!&UVZPc}DnAIMjsH$1hYl%*P3c$3pG zIJTgIBy57t`#tF{QZI8^sm2A>q!_`c&E+!X>Q1 zWo#CADiW72A&Ia4&iU{UN3F&74fH22Sz2igXRkwS?5keGeeXT=l8}GgoEE~PCXV^h zYhgpzedP>J?Dx?OK^Vtj=oEd2!hxynm&MtZj!I3RuBK$5K2_8+6YqTy(f&L5q%oV2}6H>B(ROlr8z$_EGYERoh#K zMb&kG<4Pk^QYtW%G}4koDWRlvgLIeF(9+F_bazR2cMOeyG=hM14Gf*X5(K?XYT~ciixa{#U%=wmIVj{C~=sF;L|x z?2Q$iA|a+>Q7jn?En@mSNh#eTFvetoXG7>3vcIt^j3ld-ef#6*D}%~4TTTjb z_~G?od=X;@;Sm6)Dx|B;n&S0*pkw|@VG~xT${Obm${P)g6}x*^kZunlj|38mmd&oR zD021J1DV_=#)A(jFf6r}fOB@X7f)q?)TV*r6+m77yZfyBEp}s7%#m-hKeNa$rDJ*-++Gir>H27t(Xge zQ44qd7!$eIB5ddz%o*$YN+WZjybrt$bmOsBTLVq$hD(h>cY_OX{k>Pu8;n#V8?ps zY_F(afCUEruZfAdrFRse6f>)yA^b`o(_eaX=PGHja4}O-?Bl*fKaYrgJ`$LxgsdB0 z;b&~mZzmv?s6NmATpi=3mpniE>Xoo^4YK$u^$N={A_ImV`Qh`s_Vb_J3V~+5Ua3xt zokcyq3>=aI9Z$NX2pMvV7K2euf4*4)2%riceFDM#iL=MVJQI%EG_XAOscz}C@b2CX zv@z_Z-U08upK;yU=d9Yk#Z%g6jnod*+p3Keq*^=8d;D&nz zyUUL+3zPaQ#i1zY)N0ba*Lxm1=CLam!~JC6S)2vyCm3&z=j-G|+`2wtJ?eTGpn@3V zt*5Aw$9RsH4$V^n01YK-1F4~I-Uq8<%aPFeI&C{0<1!1A`D6S;^>@E=SgHjHL_bVN zy18m`vg{zzr_Y5gkK}l`7!RU7G$$2!Mc>C!+?-!x-$zl^)W%Mo_nPSZlrzB$wHtU# zwxGG3rFFXOG6ETR>g%26o$7jDq6}qvV%_T&37Hk1ClJmIFv(}*$Rb=%T}7UK0egD- z?6=FeV-i1-27yOQ_>H0mMUe?A317sAi2EkR1)7$`LK4sX#3ULkd~_z?N|J>Rovm}! z8vb-X-X;n5#hQO2Oc;j;osEusNH>8ctI=>DUUor&lNS)Pd(azGb48v#qh<9sR}s%+ihFOe7HdK7n3~{AYlAxFRTRKaY~y!DN3h}H zb42A_T@!Nz+b`@sE9OFfoO?@HZe#S}%|dHOaFqPlwMIG{&oJIn>8pMA4+0wj7IdNS z?&*qmhxEeSn-j9XKqy>iT_&j+?a5F>aMk1c{1I+!lf#LW?*qbLc_jz2iE(#)+d2%7A$8Z9E_$jRX5(X#CiLUFitycR2SKa9v~S>C?rWzL{NM`` z^#tnR!olyB4X&TXfo7>!S|kwKNiMB#Zv4tc{nDqZS99q1Ma*6rLk+zXQ4;H?g@+VM zrhX<1tBhy8Dj2JJ;tTSqE5Yd|^Ibh>4N4MLn_}q3QblW5ET8=_?F7BSubORy>y-03 zGffKE@utJuRO8IjaIGx0$L`KN@+Y_qFDgy4yQA#Rj!rRg116N)T=5*gDcpYgjL{6V zx41-%A-r`D1H01>a~MwhpFJ(+IOmSK6YptnS)#h>fl$D4I_~M^O<#8jXq@jZ&@Z*v zF9}|x^9!)|+Mz4AlmuAdL@y`Gr}EJnZ%-9Vg*ZtL`RElpyO(HT;%|e|?d> z%E^6}K41A2A5_~=kSc;rCI5o4PqKprwOU|TQQ$mct=p@TlPm9w=i}e13JfWbSY?5A9^<3V1H?qsmO)$-Zn6!V0b#FB+RNCwO zKBCVv#zy0z*4dcgZa`J~qvlaQ?sN7-f~Jx~uVLxwYug0~Ebs7`MY&X~y?y^iw$vfv zvIPyVPLp$`GP9F*Az;$oV9xBjTS2V5!s_*VIWNVo?t|AtlhdpK2V9SEbO5>e;uE}_ zO0~@(3@G0V!)YjourT7x@2!4*CH(0QIU@eZ^n+$j-~^{sZ%9I?+tT=~WM5Puy1|D1 zNjQ1y|XB0U*CR3(G8ZvP_eQoYkWEez-dnNeSq>x`a{%$6_Xd^q8u9l|uK z?>KN1+fjyPe2QmEaD8nMf<2obQ`lfIqyIv6a?K#_M@z*wV##^5(P1VjYyTk!p7T~x zmAVYioyIRuvtHk)y*VG77dm;5mlO$o9Cu)6-5lr>q~=)ew#-1?lgKEU#~#FotNm0) z>&sSW7B4o(@u$sq5-$$Z+u*CkS=5P|4XJS!R?KsFM2Q+2%r2v4jhzG$&PxzHva#%9 zl_#Lt3@$wNt8w`uWyWkpqXR}U3Opg~cL87W3MQYdAv6>!N{hKi2yiVVcz2&lcxYGw z%V-1t?3ss?(qc%ADvvf$&SnYwDhc_%n*PzdxPl8Bvybns!y@BgWv_<9zBHD@+DK;% zGk)UOS7O|X@79GpNzv9A9}-K*3({23$Xial6*ljugi9t5JB8>y$VN5I>sy-C(g}_$ zp0}&w4^($=cf{#|mCRLh$uX5a=0;jd=J-U3O_Hb{vl`a4uU>p!Pd=9K!1j0yJ^%CR zE2Lz2A@@PZR30Dhcs1OL>Q!AE!wNq8^u4|n31}KsZyObjHd|J)(J};{xgJOSQR_MD z&31*mfp%VgTZG%oElu859H><Ad z4uC`B_4Q_RYdB?#mn_Wm347k<+1kp+va7BlJM>jhBqWKAr@U4XP?{EsOdGQ(8br_- z+@A@5dZ4JVCG<{vMXo0XDm^x+_h5wq`jhJ70S&iu(&$&~(KCwmj8uUyy3B3p_Q`oO zG>2(V&Kr(wH5Rb=0%kuh1%IL>E{Evn2NOpzMpxm`>tE;_9avZg_1CIP!+Y+L(2r)F zMwqzww3j)|zZu*Fa+kQ>=&YDk^;t4|5D#6O<+i8njp$IE(wWW9u`#W5o=2sV-ORmJ zkv<{`D;KnWdsjRqRNJja1GaQf;BUW_WX}kCRIoZ=_n&<6&XPZHg5ugllloyQ47b2 zzuS_OPPCj%5(d}E)b|d#y%cpwFL5Ic_O&_1P6oKL1K}SkGFPzPP=Oi_ZK((|)5^DE zr)fN0-%7aWR7F`KHxLoUljS^LF~F~>3J@dP;bOkw*o^QZnQ#!D1*JUMh~zTL_9X#F zdrcV2_r*0em1d`&Kdjjl87iSA4s+w_w@8{;4_!*dyr+Lcgv~@|QT2XAv&+9_Lm{R< z4J>Y+Z5T@rekzmzrHgY;t#h!9ATS^wYyBBk!K45IcICcE!T|HK7r$1kdJ)rxsb+&u zHb+u;kNgTvJKAgfpygN;*Ai6VLRllNph@9SSC+V_8d=R5rErhu6!p(n6vI8FpBcuK zmM}P<=?+<9gyt--&s{m?9%Cm{Vtv=6)h~NC!)D&Uz9+pDCD)M_R{AZAOm`B_PJ_J?U-z-X1uo7 zxysZOx-O^K2F`j=nI_yJIV$k#mKN*|4iCdus~YTSnq|rQ5=zd3(11R5(=;b%+d1rV zTiYx(FIT>qsC#Qh7H({c@8=b4Fvcl)8XvV@n+f}b-LpKDWk(8iQN?e7GoxaW@tL4yAX?P<2n^Jv1067 zi!Ga>?%1l;Lg7rGWr0KT@cwur@+dREPT6e>Tgw%(XGNbAC%HC462HvbQ8=ph*-&w+ zUF|tW0!KC(OzBlu4)J*`V$IC4j^br%Y_e-#Hs7uwo=C!CHNH3dGIz)uol)toZl;h} znp5X0G^D!q)^-ba@PJfoPYdU%Pk5k=yLHsNuTw%cd(JEjazF0Fy<^t!w-9J|c~Kp+ zZ#}UvhSJx~)ay~OJl)~fIV?AGD*grm2Rb2HR~ z4;dHU#;;b77ui{fPC3dLaeB#o-h3@$lZM!%KYF3}A{R0^VvXJV_JNBve%G&WZdy z_+gQG9yPuu^KS3w1GAyMF`0SE@w`>HHW9Q9*0?8eX!qYQe7}2>lZkT-`K8fnX&`Pa zSjddbe43xv)%eUYEq&P}`DLRT~6fG%Oe> ztj+x%#9yLwkOm$g1REf3`2gd{0qHm=usNN+sVtQ$RYNZf2$96I-0Uq22+I>?Uh z_L^HDv9zgscy&RU$`SFFHEoD``MbJXjT&2`!Jzm#U+7Ylm1m;va5&TH;?F|6^`(j6 z)gN}{Y29`Y5IIty`-v<;8SVgr%lqMz&+D@R$b#nXDkXXRc24Hi%Vs`g>gPur-qW@6 z#iSIeW-VNdaXd;)(noUHr_nvLVDxJYEj~rVg^2PY{g#eRH~JOXaA=4sxLf*O-`e}( z(5hdMJ_LBx?HZusDHqPvy^JWczsfK({}M6@IkZ^6__eds+8JF#Ctcw**31t_OgCf zi|-yBiCl3i;h%Hh+$Vv$-H9~Enni4CTgRa5osMxN`HgDlgtm!Xtt%NO?)q;@E?pNB zLU*@RHXDsSULF*s!G;Ch`V`Jw5GM@wH_J;A-Dg8o3mk3Z!PjwgXlTa9AD>`TqhE{S zsi3%_&CYl-&B@#2P)nQqP)A|Ie)wY85K?bX;bwNUcdT8?)^k+qx=7k(?C6O$u`Xbq z__PwsTJhpK!5bq-I^ZU zI;C~NI{$U_DE{}a2AGJq+ax^RAHTLy;|yNW2_frS&g2|~#fPC{E_m*3gx>2iCdGK> zfvtxe2lF`v_ad-lHfh<0->DIAKu_eMAz>wixL3U{Op+=}Mg6lJ8oa9~M!Shkvqy%L zsM^8i;W+||omsWKrI}jZ`8;%pG}WE_~O#%M}mYE(KuRnGmx4B0_K369_9 zg-zyb?4kRqZlwlwKbUA(l<{*>Q>CkJc?v7Wu|zMco}3dsG>Vki+vevcy)H~i%C z?Qu$`k~L=VI)B@Q1%;fp!sQmVf<#@dp;nudG%Cc`T(5$b`LUDN=(p`_Y8#tKkBSLI zb!xn?83pX12DQBMoZIVA(Y7xnQFy<4!mej9L0wEHO_I?HS7hUL{G?m_y#n|kAdNXa zpQXw@)G&Aqvg{;m*Mi2Bz0n+h5W`C00vIbVi>^L!ghC(DEX^c9>b5b5+&BMnhh_6I zEDa8&hcy8|(!t|=T?lt?=rA_j7K^X5i94@7x+c2g7$!7%6Yp`oEZEhpLRna}Ls@Od9^=fZL7 zB(ctl6`Vd75FgrE75;?8DNQG;qX=iBzcPKl{ghkSz%nWSgg4$+A!EM*@Q9-)1~sEl z(KTi5XJb?P^<{`bIwYm8Gj6B0{za8hJu=%K!mFsIT|AitBC{n8=U8Xh9A#qq{{4vLl<7h>M|Q)8OoOI$Ds zEuEx-8WNug!98k@js zq|yeX!j8Pc!}hJ}P_TU_(L7pU^{FgJrGWji?r!2lk6U6v+@2(bJnwBpZirfZAoi|s`Jb(oWXi03`qp` zvNDma1@MNovg^gku~ze77CA;-Z=48qq?s1+@B_K}McwC~9HX%6+HJbs<`K_uXUnf9 zm#gXQ+OSt^A@Zn5%am)eCdmYXN%MD_lPw^lbQ*WtiDijtj^mrc{)JhOu+J^_1~T5$ zjW*1T53=@}j@@nOm#X3#7YBJ4^GK>r3)huZ0;bqqGrwEd%bSEy zIEu6tC&sdK?;W+3#1i=*7a8-Z~(Tb9LFFxSe+B;q>$} zoDl27{lyJ;Ph(;NYn%9qj??b+D{=5(7?X05jtUwBx?z4j$(IZA zJo)LkGc!`6-lH}8fJYklcV4fJQ&=jaoyh`z!P3Rh#~u)5T6%AiCG0*ugz-LYIQiu6 zfi(Hio~;pgaVYQBQI1Vb&xG>_uU=WN(E8IF(jja{T-? zog}+{E`9i;2OC_i?rNYA&bGS^ZvEefi`Ca&p*%9~2F+a_WG-sYFgg#Of~zG}Z!?vh zukSn)L@vy&;l95bpMxPuN^FqvwIk0X@=Oi~{&t^nv*!5o-@07q<=26h2Phmzine$p zXjSRAMw+p22uX|$=-e+o-}AU~Gvoc$9KBS~*U~;|^vdO#Vwi=Hb9j&^)^jcWSU3Zu zU_Ken5F#-rE{gKcCll`>CiHdUpqJn*D%ER%pf+ibosBcGsu!v zq6NEo%DDnL3rw{Qpj8R^IA7$&scIAACj+Oh@_(V~(9s?uvtC#M|p#-R@ z{&>V=q$i+f@2k|_L5vm01^&1rgCy|urv-SeVI`FhEW!%aP{VVq|2+}vZ`l}cA%rcu zl|Mg_#M6Qwbt(UQOujq{zlTplxuS>{TNU~VBjkTSqG-T?9y4ebzW`Siny3Bin@<>o zzb}YT20Cap13fe-`TiX6!@urnlnH|R0cpK|%#srrjIro|7VS#3gv9PY`T=y6`4o7b zVXCpE>gSmM8VND*4GYt=-S2DB4<(BKyo&O-*fIgJ`u&%%`za|`q94*)#RW(a6P5lc zQA0ovVGduQQeyIhbpL1_5S%9PO;w>WfJI255tcsrLl1txwdeN*&VV8Pr*%>K1J;5T zTcV0h1k!DC8W4z>{!^4GFW9Z7OYDE#UY$DbFVwT$)&l9g!(6m^lND7D?;}a?-}V0} zmQtU|dJ{ZR$xjcf6A{c!8;iG@AI18_X6fX* zLEz>-_=sB=9dRR<%Ev*b+?B(wWkUF`QJW+G9`w>L4f_hLp|}7Tkg%%^@Bgn!mu7Up zD169Rm4ra2i&mIW_Xif$f9P8Ukfq{7`IdKGH2GO>e^{XTZ?*Zg{9h@6Nn$JvH6(Qi z>;G(&cvv_t293mBMpq}>wp{_3wtW%L4iIA^u8teSj2hX~aiz)y^0uM0@%BHOoE>FY z8*_KZbEI~gM0F$o8GVfduzFA_K51d$iVr1n7y%4bYtpTZsNoYk)f^#1nPUEnABSG5 zKNroP(yw8C|Btn5@&BF}Z$o^S|57CHvM1MxJt5dDWq7*P!?pf+kU3cIGY_UH$;*Gt zr!?gErjep4vvRZ&OaTy8!id3+3!`;=RYOhd3Hog|Z@x{1|FgcBe+v~(H!Tg3P2m}7 zz1k_}ENAK`uPz3x;Ok5dCELGNmG6f1?{%716bFYKww^Cu9IauctIkof+y4};Ukzh^ z6!g!GLqxIYe&2axN*dAv3^Ym)H*Xci{rq4*=l;ZE ztpBMQhmDj5^jIXduJHZv&xY^`qvpeJS=#B92EYI^u1(XibX|DKAh1v13ZehA>3loJ z{JrA@1JFR-SPJjhUzX_rbi^3|AMcj8AJEAq$2Q6_S7V;+FU*v-UG2<~)~fv@ckxUK zypTXCAho*-V)J{kqWKEDq; zCrJkNV#w${%_Qmdh#ut)eg)4m1(92BGA;!OL#(aAue^vyMcS{kp8aFT=9MV2kdwpZ zcG<^??Ccz$R9{33-1We!qA10u06^AUh(Y>Rbj29lH6*0Zk%Hm%{=u2^J%saV>6U z_#A8uCmE&8f3NvJt-zEfZ{3oA?6JlL2?P3@a820j3S|ZV+J!q1esR4_;q+$a`RcTW z(NtBxrVHy@8ofQShYIr}b3gyfhI;?g2jw{C zGcjT8tQqI4S(P>yHABAhA7t7cD7&;}Z)#e1`D2M|IT5<3PpHAI-CTABPIa1O7aRHt$DvCXuxg{6# z=y%INbdrRrUEgxQFaON;_j>6-Lb~8~Jy>jvGUC?`PZl9Em}3e+Ckg9+TVPR+KExNs z{KxU|34?`Fl#&WX(prxQD@rR-(;;7t9^Ak{K*nR&1}c#nXZ-*D{FB6IOl$%Q>q_Uo z0hExJyiU)tpcJ0>?C1ObxGb3IcgR;w!b@W>gr&d=o1Mk?Zr!a{^Q5+w02ljs$RimZ zJERv@Vbzyr8D7M%_vXEm!~S8SIgmCd6@A7fCMT8yx_EBm)l!y)01i9V1pO_X zSy!l1(kS>E$@P@YwjV4}jR%TlA%3*o@{(&LS>e2%xwfUQr09>~aZ4d-B2nqVT3&9B zIO@jJr`Zj^f_3FgJn%bgz0bOypJ`Wg`PzCmJ4gQUo40Ka_KY1UUrnt^gTZ)YK_H)J ztnJ8ix{6$1`47u6A4M@-5#?W7SFty?skaJ0uXdi24}Sz*lL!C!;e^=Fo7}6ODLY7J zmTCrC;srR5+FjWM8?V|)>Mo<> z*dp6FD$)dbjt`(Q{|L7w)BW{M3WyEav7196hUceu|8*eEU z*mHN+)*GJ-+9K5XsHYhm!`<}I`6rU)kL7!sxK9VHKluxYX9YJ1KKS8 zBuZ;Jx}6ot5UHiRFzsL1g$z4`E0S@T)d1^Y{FNUUxs@gEzLD2k;#B{7Je z%p+ECJ0QoO#^d^Iznf5z+hm8k{`fg*T-xYXZ!OBx+O1lE+!3l7B&hd^W|K16SlOROky~M8JX+;X?+9lk|%G8 zzI)L_+n*CMO`6qa&Cov2J>hF>New9EqR&M;cAu1O(H+)$5b6UaO{ed9WO)Z<@w)(< zs!MU{v1;(vZ}umjwnGEgWn^g3N9DVg9&Z@=ZCcAnsmra6>s_zV*{@04_EuLHpgzQ* zx@8n7V(ZX#i6a3u@Bge@Hmx?*lq3R5O8*_%Dm}jv)#e2^)~%CZI<9w{~Q0U3ZriX$A<}bK=^6j#$XC4p7{mf ztpp1?$@0nI-ZZy^yp^Z)6pWZew}%+4GSnp#f6WEieC8YKI~9hprr{`cc~myN)zI ziz;6I!!0!}3yGO}g+og2;qPJ8eF&DZ#G^(JM5(J*1{4ObmTbOkGn^xq(`cx~epjjr z0bk$99PqX`bDb!qdJjT%+P%FvD>a1OL6VO}rcd`5npu`(6ohuYeXd(OUzqQ{91I*t zZFKxGRNitht!*|UAi|0X<&1dwQLHORVu^=H>o3t~hGHbbx2AH60e0Ls6=$M4Ju6N| zmH1;Y2}@NWkP4at-#WNH%+5r(ubyW{z(5ai7i`pmeh=XV@V1}o-~eOA{SeOQ1x??oRu#g(8+7C}}+1oU;s%{K4eC%$g?HJf*H( zG|E^Q5J?Wylbql_zl=XNm61yu{{A%?1Vyl2xxu$Pa&3Ewhy(0~n1MpJMGCE-9Q9p$ zO!5kM2>$cyg}YxaKP*V=CvmiUQE-L_Utbcl~VgQf?%m zz^A>f+rrx>qg&X zVE~E?d(xI|iRlpZR)%0R#3QU>dR*k%1S5`kGtbavwQ_l^RHM(WIIUa_^8ONR(<5OU zTBfTTO^L)80VVTt-rDEeJXsqG8xrL!$nbJtpSvE9ULJM&z_wtp@>&@a3QLE~|8SYn z??Uw5ps+n=@j8Sf4-Lon-MjiV-|Ue3g;aoL)it~;1b42{n{9u@ho}d;$$o>&T@Kws zV{N*h-HRSd#jInD3j4I2KRo|QbI-649N3MsG-K0nH}5>XR^oH5>vOu!*ApHQC$j)V z8lhaCY^w1Mw7}llHGQeE;#5zcyvj z6j~sfEwDG*zwb{Plhhg3_lJEH;*fq ztn7m5;O2^E35TPxhz4mj9@qbmDH>AV8Q#n z_-75Vq}~&_GO&_U+1jo(o8=V8q;mVUi(4AD?>jP!#Q@`qpmFo+D!y}-GQQN?&(r#@ za`oMHDIQeX{7=-Bv2X|dDzbx32Oi!o`p{qK75BeO*~IA#u*E*AQvK(@;=wLEq$dP?&{#ywWiB|>`=<^K*{1#ND$O$hF_j2XsF1MB>W=Sk0AW}DE~Ut#*_1ToPx@+<@> zY8DFQ2}N7!AFm4Wbho<@L2>*Y?Z3RxyxndOy=cvaTmi1=?a#X@ zh+J-QD${6Z@YaHG>!1QNSo0BjSaq5&%DQpq#%wBshkD`(C3&)v}t9)$BHK}^yDq+}%#|M3rP;zUORV6#yAi@HNL z0wN=&=D_=-BUoK~jNSghL|%-MAaaphnlRTdQtpcF{oC%)M>kS=G1G&QJY+jLgf?1r z=q7ZmB4-CR0h5E8FIKD^%E}WBO+WVYo`0>zS_``AN|E&1{C4{$yulm2tC`p(u49P!JoRFy(=>_=2A!pA9d7S1;8Tf7k^in_jY_F zSx!#7!n2Ram!<e00Xtq^%VPj-lw++z`;t*Jd7LC);-@F_X>VmhSgP4=j z4WxtTaOKq;I9J31!TbAR2>dW!1#r*h?}Q#NZ#FQlZi@m;VeBe&Un_ZntMBaOvf79s z8N#(Z8Bgaafp=8-xylPi#8{urekWPQKt8blt%OoK{AX(77l%car%B5=Gvd(vJjPU@=C+~TZM1o(b zNUrSzQ5sLh!q|mGk{U>P>&DlEU2oA>UEg_3I9J9$dq}t~olrTI!(Fbe$|}EJcb@ND z&E%SFTnZoja`d+tStm(THSLPos5N0)nYr4;P|ju%0TF;|aSF8cX;Y4qDnvioMkgL= zUN#=`6%t6!eL4N|_<8`B^EQMU|t*gI7_ItlfUu_n5vQ`cGZ) z`5ykOe(flw1G zU^Ml`aJ-RYhe{KSG4DDI(|7piNdv$riT+vfH!ceypJ_+Gt+zR4s>)~{lJL2#0#4>R zJM}J_@TkAhgql}K;o=a_xrHN%LVN1h`95b!xZ3>P>Xyj~@Q#d?pcGrzA$RoS)>dSQ zS{H0>(8_z4XZ{1Z>z0^@nMqOgsBBJ%PF&RbdwR#dFu;-L2KcQ!@9agi5L{94(nM<$ z35>4FRJ?o@W702pECHt@AD`AeGO6vNVMV7#ajesBWy4mi#1lyT@=5}b$@_SGk=Ehs zU$TRdQG^NSzQO7Ce5z}y2z#k_&at5r?^ zMRWDl9H6;crtszz7p3{C9BrHxqJU^)ig=_?PU8{&;KAdW-@O31r|7|3w7(i@-*@3G z*c`}%osHQMLr;Q$-EKB!6w{Y<;;pF*_H^@$6$5eZ|3ov)hfs*a;i4gU`|FO&*Bp*# zEgkLrr;t>KQQFQMRM>ZxU}Nh28^kur;%^qik@szCTbG@wL2Ja3Ut&Sunb?ELTcFJ_ zsgPvheJHT|GHe8?1XX8Y|Iisr+=9{qP|;P z`=D5OcAQgBa9U#iRRIEz;=gpF=p4K*+B?kY9k-G~VIv!wRIz!+!qB7H4LveCK9RxQ zl}EH{q5zI;p}!>ae_r_JDSdmHz~-tpQKRc>1N6V>^HnO>%2ZtnDJKS>N&PH3yv#}n zSo-3mgT(Z%3B_|^4$p7n#awp$2`iqM8N~2>9 zk?99#d*Tk%WR|I4i9ply_anEi=lC5wA-K=b-d`t`YfN5^e28$kP}-GvXLCM;^Q}Ly z4+9s4bF@DKvy+c5R>Yf_;dyj2K*_8w_Le|^XZLPgyZ6KA$Dj~Lui>A8B>LEEO+Q7w zH;Q1fy8EldAQX*;YXu)HoL^uzhsKQibLRi0z~YrN5gelL9>&HT3g>F29UcK1HfRk%~#8>YT&w0d$rD`+R^JKfmg3~9y9h9CDa_{yC z#p{}Wu3EiD4e@$b{NXH>-{8}0rhGmvu0Am}HY`|0I`IZVOJh#bFxOggIA5tD3rhIC z7b+=a&{c3?a`;r?bxkh7g!Kqu!pb?WMex?)7!J#J6t-|RJkOE{rLGyBFK%8E@@T4G z@>=HD5!ijI{G#l85YqIP2mwfC&mo{J)@9Lq2yf!m=$pi;p&JN@k1oa@X;TByvfSw* z+;S}CZS3}h$cP$9gU-dghay@pNs07j2dBxKBpcWcTdoc8viJNuh^rXKf*G3=R^>CaP(EtiNchK&o>_qLMGQ1Z69F+Vo; zF^yM=(4z$diuCB}APQ|dwSF@p+F<|%(pqt+zvi&j^FBTOxz$!j(Y=Nt5-*h+hJlNK z8Mdpydtiob$($7#mr)%?09ETpud9>enQIrklz<<1KXWRdfIcbx2c0!X00#UvRcp4 zN<0Dw47IYDX#_gRlbTO42BzUXBeVsP4_8 z8(DCLs04kCimS%kY_!1=8cW-^AD;r;SC8Y*@uP7B?4bh4JJIwYpn`ZHB_DtA__(sI z5KhUq>RYNbj1%-wdY=$S<8@rbbTA!^V~~>E1+$Ckr1TrT z5(*czZI^(DOZRTCEzN|AF)*J(>?43^4M*ZNzE`pE(cCvqd(U*AzJ<<~@iG!$36(}) zVJEnWy6)lGQOU%&#l7PH3HsTD0_c=)bL2BL#bEoEGLzQ;?F*1{P?Ou7SM?{zfd#x!j=#1` z4f_{>3tagB_~ySoaXZ_~HIg?oIwPgcXO=5h&lpCYAkJVvwT8J&>??~V&4R4`(QqpE z{)~15;43H6D*{k^+tFwy_cUo!kha~{j+o9AO1{5vk{|j?ynJm*2Oe(p1e$I-7ME7Nt|kOY z^h%C* zK!(N)U>(}RfBX7>4)O3>|?fCr$iQ>X+*N zJ~I9X>KF+XO}BqL0|S0B^M!S0^$Ms0JZQgP*`Nn2b$%G)K}{c7;MP;eY7qE0oDaZ* zwn&vB6>cd?JSp`>alE>9r&IDk<8<8Y^PDw|%5`R>EC0#JK-K!qD?ep`E6s;q_Mk34Hxe_Ea*m zuLie<+p6>M!p9}>wPw20Qk3RMO=XwSYR|iaB@YU7P!|mmM%^&?9kR-FRVh?#o@3Sd z59kHJmZT|(v17;o7oxke{tKduBmxo8d9H#y;h}&CWZ8R=Xsop`6U-y!P14MflvfRY9N!Vb}I4hY4AL!l*%GX&w0khXa%n-X{hg7wV4iH@7$^N1NH zwl=TFnf3XcS;jl-S@Q2H|GHJC9G>VWr^BTm&cK7RA3T&~;ak156s^@-!4JnJ73>j* z0Z_N!)&mVFNJyt#uT=*~NEqx;Lsq{2cSb~rsN)M!A;?mTo9)i`qTh&pR!9ic_D54( zC=_S}m$1`=5vgGfAe%ZyF9Xo0r2$ZnhM0_wJ2CkpL;?mRpS(^`e)Y2k`sYq2j@0lp zf|Qq)P>7g_f$NDoT=Slu zg46hw-Cb?wd2duw`tAUIhRb0K!W%&Vq7yBtM{WQ*y5k6w?`&5r6#W}471gHwAVhKD zd9po8kMZEIy~r{`iQ~g=xUA7ir<-l-sqM1G&l|UeMz8Z9t$HhBcId63@Tu>E?%>rT zOq>)gJ9J@kAT5fyOVaI+wVkO-0CXrdgkSdWp0Z~}%NP4T!Ga#G-EV?C_85HxPl4&?rT!(8%vVn;^q^(B z%}wb-9zlccr|#^uQ(tFjh(QX%ml33b#3C^+wlMN~2V`_s)eCTVDXcpH?Y%6dM;Ya< zwP`JoEEE_{-Tq&|rwP*c6p^c~96bA?qLEU=6^HA6pGVG4*_Hss+5zpjfe`az3`Dq1 b>K=FHhH-u~URLM<@b8_3ym;B`4}Sk2$+FlC literal 0 HcmV?d00001 diff --git a/ndk-svelte-components/package.json b/ndk-svelte-components/package.json new file mode 100644 index 00000000..10f8f7ca --- /dev/null +++ b/ndk-svelte-components/package.json @@ -0,0 +1,94 @@ +{ + "name": "@nostr-dev-kit/ndk-svelte-components", + "version": "0.8.22", + "description": "", + "license": "MIT", + "type": "module", + "svelte": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "svelte": "./dist/index.js" + } + }, + "files": [ + "dist", + "!dist/**/*.test.*", + "!dist/**/*.spec.*" + ], + "scripts": { + "dev": "vite dev", + "build": "vite build && npm run package", + "preview": "vite preview", + "package": "svelte-kit sync && svelte-package && publint", + "prepublishOnly": "npm run package", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "lint": "prettier --plugin-search-dir . --check . && eslint .", + "format": "prettier --write .", + "storybook": "storybook dev -p 6006", + "build-storybook": "storybook build", + "prettify": "prettier --write ." + }, + "peerDependencies": { + "svelte": "^4.1" + }, + "devDependencies": { + "@nostr-dev-kit/eslint-config-custom": "*", + "@nostr-dev-kit/tailwind-config": "*", + "@nostr-dev-kit/tsconfig": "*", + "@storybook/addon-essentials": "^7.3.1", + "@storybook/addon-interactions": "^7.3.1", + "@storybook/addon-links": "^7.3.1", + "@storybook/blocks": "^7.3.1", + "@storybook/manager-api": "^7.3.1", + "@storybook/svelte": "^7.3.1", + "@storybook/sveltekit": "^7.3.1", + "@storybook/testing-library": "^0.2.0", + "@storybook/theming": "^7.3.1", + "@sveltejs/adapter-auto": "^2.1.0", + "@sveltejs/kit": "^1.22.6", + "@sveltejs/package": "^2.2.1", + "@types/ramda": "^0.29.3", + "@typescript-eslint/eslint-plugin": "^6.4.0", + "@typescript-eslint/parser": "^6.4.0", + "autoprefixer": "^10.4.15", + "eslint": "^8.47.0", + "eslint-config-prettier": "^8.10.0", + "eslint-plugin-storybook": "^0.6.13", + "eslint-plugin-svelte": "^2.32.4", + "mdsvex": "^0.11.0", + "postcss": "^8.4.28", + "prettier": "^3.0.2", + "prettier-plugin-svelte": "^3.0.3", + "publint": "^0.2.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "storybook": "^7.3.1", + "svelte": "^4.2.0", + "svelte-check": "^3.5.0", + "tailwindcss": "^3.3.3", + "tslib": "^2.6.1", + "typescript": "^5.1.6", + "vite": "^4.4.9" + }, + "dependencies": { + "@nostr-dev-kit/ndk": "*", + "@trivago/prettier-plugin-sort-imports": "^4.2.0", + "classnames": "^2.3.2", + "isomorphic-dompurify": "^1.8.0", + "lucide-svelte": "^0.268.0", + "marked": "^7.0.3", + "marked-gfm-heading-id": "^3.0.6", + "marked-mangle": "^1.1.2", + "nostr-tools": "^1.14.0", + "ramda": "^0.29.0", + "rehype-autolink-headings": "^6.1.1", + "rehype-slug": "^5.1.0", + "svelte-preprocess": "^5.0.4" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/ndk-svelte-components/postcss.config.cjs b/ndk-svelte-components/postcss.config.cjs new file mode 100644 index 00000000..0ce3641f --- /dev/null +++ b/ndk-svelte-components/postcss.config.cjs @@ -0,0 +1,7 @@ +module.exports = { + plugins: { + "tailwindcss/nesting": {}, + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/ndk-svelte-components/src/app.html b/ndk-svelte-components/src/app.html new file mode 100644 index 00000000..b50d0a54 --- /dev/null +++ b/ndk-svelte-components/src/app.html @@ -0,0 +1,28 @@ + + + + + + + + + %sveltekit.head% + + + + +
    %sveltekit.body%
    + + diff --git a/ndk-svelte-components/src/lib/event/EventCard.svelte b/ndk-svelte-components/src/lib/event/EventCard.svelte new file mode 100644 index 00000000..8992ef81 --- /dev/null +++ b/ndk-svelte-components/src/lib/event/EventCard.svelte @@ -0,0 +1,64 @@ + + +{#await eventPromise then} +
    +
    + + +
    + +
    +{:catch error} +
    +

    {error}

    +
    +{/await} + + diff --git a/ndk-svelte-components/src/lib/event/EventCardDropdownMenu.svelte b/ndk-svelte-components/src/lib/event/EventCardDropdownMenu.svelte new file mode 100644 index 00000000..ec7f51e6 --- /dev/null +++ b/ndk-svelte-components/src/lib/event/EventCardDropdownMenu.svelte @@ -0,0 +1,65 @@ + + +
    + + + {#if open} +
      +
    • + +
    • + +
    • + +
    • + +
    • + +
    • +
    + {/if} +
    diff --git a/ndk-svelte-components/src/lib/event/content/EventContent.svelte b/ndk-svelte-components/src/lib/event/content/EventContent.svelte new file mode 100644 index 00000000..eac42216 --- /dev/null +++ b/ndk-svelte-components/src/lib/event/content/EventContent.svelte @@ -0,0 +1,40 @@ + + +{#if event.kind === 1} + +{:else if event.kind === 40} + +{:else if event.kind === 1063} + +{:else if event.kind === 1985} + +{:else if event.kind === 9802} + +{:else if event.kind === 30000} + +{:else if event.kind === 30001} + +{:else if event.kind === 30023} + +{:else} + +{/if} diff --git a/ndk-svelte-components/src/lib/event/content/Kind1.svelte b/ndk-svelte-components/src/lib/event/content/Kind1.svelte new file mode 100644 index 00000000..5ec37a4d --- /dev/null +++ b/ndk-svelte-components/src/lib/event/content/Kind1.svelte @@ -0,0 +1,66 @@ + + +
    +

    + {#each shortContent as { type, value }, i} + {#if type === NEWLINE} + + {:else if type === TOPIC} + + + {:else if type === LINK} + + {:else if type.match(/^nostr:np(rofile|ub)$/)} + + {:else if type.startsWith('nostr:') && showMedia && isStartOrEnd(i) && value.id !== anchorId} + + {:else if type.startsWith('nostr:')} + + {:else} + {value} + {/if} + {' '} + {/each} +

    + +
    diff --git a/ndk-svelte-components/src/lib/event/content/Kind1063.svelte b/ndk-svelte-components/src/lib/event/content/Kind1063.svelte new file mode 100644 index 00000000..1cfcabc1 --- /dev/null +++ b/ndk-svelte-components/src/lib/event/content/Kind1063.svelte @@ -0,0 +1,81 @@ + + +
    +

    File metadata

    +
    Description: {event.content}
    +
    +
    MIME type: {mimeType}
    +
    File size: {size}
    +
    Dimensions: {dim}
    + {#if showMedia && SUPPORTED_IMAGE_TYPES.includes(mimeType)} +
    File preview:
    +
    + {event.content} +
    + {/if} + {#if showMedia && SUPPORTED_VIDEO_TYPES.includes(mimeType)} +
    File preview:
    +
    + + +
    + {/if} +
    + + diff --git a/ndk-svelte-components/src/lib/event/content/Kind30000.svelte b/ndk-svelte-components/src/lib/event/content/Kind30000.svelte new file mode 100644 index 00000000..c71b3345 --- /dev/null +++ b/ndk-svelte-components/src/lib/event/content/Kind30000.svelte @@ -0,0 +1,29 @@ + + +{#each list.items as tag (tag[1])} +
    + + +
    +{/each} + + \ No newline at end of file diff --git a/ndk-svelte-components/src/lib/event/content/Kind30001.svelte b/ndk-svelte-components/src/lib/event/content/Kind30001.svelte new file mode 100644 index 00000000..d771e54e --- /dev/null +++ b/ndk-svelte-components/src/lib/event/content/Kind30001.svelte @@ -0,0 +1,27 @@ + + +{#each list.items as tag (tag[1])} +
    + +
    +{/each} + + \ No newline at end of file diff --git a/ndk-svelte-components/src/lib/event/content/Kind30023.svelte b/ndk-svelte-components/src/lib/event/content/Kind30023.svelte new file mode 100644 index 00000000..c748aeb9 --- /dev/null +++ b/ndk-svelte-components/src/lib/event/content/Kind30023.svelte @@ -0,0 +1,50 @@ + + +
    + {#each parsed as { type, value }, i} + {#if type === NEWLINE} + + {:else if type === HTML} + {@html value} + {:else if type === TOPIC} + + {:else if type === LINK} + + {:else if type.match(/^nostr:np(rofile|ub)$/)} + + {:else if type.startsWith("nostr:") && showMedia && value.id !== anchorId} + + {:else if type.startsWith("nostr:")} + + {:else} + {@html value} + {/if} + {/each} +
    + + diff --git a/ndk-svelte-components/src/lib/event/content/Kind9802.svelte b/ndk-svelte-components/src/lib/event/content/Kind9802.svelte new file mode 100644 index 00000000..98adf08a --- /dev/null +++ b/ndk-svelte-components/src/lib/event/content/Kind9802.svelte @@ -0,0 +1,47 @@ + + +
    +
    + {@html DOMPurify.sanitize(context || "")} +
    +
    + +{#if ref} +
    + +
    +{/if} + + diff --git a/ndk-svelte-components/src/lib/event/content/NoteContentLink.svelte b/ndk-svelte-components/src/lib/event/content/NoteContentLink.svelte new file mode 100644 index 00000000..f68ad308 --- /dev/null +++ b/ndk-svelte-components/src/lib/event/content/NoteContentLink.svelte @@ -0,0 +1,30 @@ + + +{#if showMedia && value.isMedia} + {#if isImage} + {value.url} + {:else if isVideo} +