diff --git a/packages/access-client/package.json b/packages/access-client/package.json index 0d4f3684b..9f90fb87c 100644 --- a/packages/access-client/package.json +++ b/packages/access-client/package.json @@ -19,7 +19,7 @@ "scripts": { "lint": "tsc --build && eslint '**/*.{js,ts}' && prettier --check '**/*.{js,ts,yml,json}' --ignore-path ../../.gitignore", "build": "tsc --build", - "test": "pnpm -r --filter @web3-storage/access-ws run build && npm run test:node && npm run test:browser", + "test": "pnpm -r run build && npm run test:node && npm run test:browser", "test:node": "mocha 'test/**/!(*.browser).test.js' -n experimental-vm-modules -n no-warnings", "test:browser": "playwright-test 'test/**/!(*.node).test.js'", "testw": "watch 'pnpm test' src test --interval 1", @@ -93,11 +93,8 @@ "@types/ws": "^8.5.4", "@ucanto/server": "^6.1.0", "assert": "^2.0.0", - "delay": "^5.0.0", "hd-scripts": "^4.0.0", - "miniflare": "^2.11.0", "mocha": "^10.2.0", - "p-queue": "^7.3.0", "playwright-test": "^8.1.2", "sade": "^1.8.1", "typescript": "4.9.5", diff --git a/packages/access-client/test/awake-channel.node.test.js b/packages/access-client/test/awake-channel.node.test.js deleted file mode 100644 index e424d9ff2..000000000 --- a/packages/access-client/test/awake-channel.node.test.js +++ /dev/null @@ -1,174 +0,0 @@ -import assert from 'assert' -import { Channel } from '../src/awake/channel.js' -import { EcdhKeypair } from '../src/crypto/p256-ecdh.js' -import { getWebsocketServer } from './helpers/miniflare.js' -import pWaitFor from 'p-wait-for' -import * as UCAN from '@ipld/dag-ucan' -import * as DID from '@ipld/dag-ucan/did' -import { Signer } from '@ucanto/principal/ed25519' - -describe('awake channel', function () { - const host = new URL('ws://127.0.0.1:8788/connect') - /** @type {import('http').Server} */ - let server - - /** @type {Channel} */ - let ws1 - /** @type {Channel} */ - let ws2 - - this.beforeAll(async () => { - server = await getWebsocketServer() - }) - - this.afterAll(() => { - server.close() - }) - - this.beforeEach(async () => { - ws1 = await new Channel(host, 'test', await EcdhKeypair.create()).open() - ws2 = await new Channel(host, 'test', await EcdhKeypair.create()).open() - }) - this.afterEach(async () => { - await ws1.close() - await ws2.close() - }) - - it('should fail send with ws not open', async function () { - await ws1.close() - - try { - ws1.send({ - type: 'awake/init', - }) - assert.fail('should not send msg ws is closed') - } catch (error) { - // @ts-ignore - assert.deepEqual(error.message, 'Websocket is not active.') - } - }) - - describe('pubsub', function () { - it('should send msg receive with sub', async function () { - let done = false - ws2.subscribe('awake/init', (data) => { - assert.deepEqual(data, { type: 'awake/init' }) - done = true - }) - ws1.send({ - type: 'awake/init', - }) - - await pWaitFor(() => done) - }) - - it('should send two msgs receive with sub', async function () { - let done = 0 - ws2.subscribe('awake/init', (data) => { - done++ - }) - ws1.send({ - type: 'awake/init', - }) - ws1.send({ - type: 'awake/init', - }) - - await pWaitFor(() => done === 2) - }) - - it('should send two msgs receive once with sub', async function () { - let done = 0 - let once = 0 - ws2.subscribe( - 'awake/init', - () => { - once++ - }, - true - ) - ws2.subscribe('awake/init', () => { - done++ - }) - ws1.send({ - type: 'awake/init', - }) - ws1.send({ - type: 'awake/init', - }) - - await pWaitFor(() => done === 2) - assert.equal(once, 1) - }) - }) - - describe('awake/res', function () { - it('should send awake/res', async function () { - const ucan = await UCAN.issue({ - issuer: await Signer.generate(), - audience: DID.parse(ws2.keypair.did), - capabilities: [{ with: 'awake:', can: '*' }], - }) - const did1 = DID.parse(ws1.keypair.did) - const did2 = DID.parse(ws2.keypair.did) - await ws1.sendRes(did2, ucan) - const msg = await ws2.awaitRes() - - assert.deepEqual(msg.aud, did2) - assert.deepEqual(msg.iss, did1) - }) - - it('should fail with wrong aud awake/res', async function () { - const ucan = await UCAN.issue({ - issuer: await Signer.generate(), - audience: DID.parse(ws2.keypair.did), - capabilities: [{ with: 'awake:', can: '*' }], - }) - const did1 = DID.parse(ws1.keypair.did) - // const did2 = DID.parse(ws2.keypair.did) - await ws1.sendRes(did1, ucan) - - return assert.rejects(ws2.awaitRes()) - }) - }) - - describe('awake/init', function () { - it('should send init', async function () { - await ws1.sendInit([{ can: '*', with: 'did:' }]) - - const msg = await ws2.awaitInit() - assert.deepEqual(msg.type, 'awake/init') - }) - - it('should send awake/init', async function () { - ws1.sendInit([{ with: 'did:key:zdd', can: '*' }]) - - const msg = await ws2.awaitInit() - assert.deepEqual(msg, { - awv: '0.1.0', - type: 'awake/init', - did: DID.parse(ws1.keypair.did), - caps: [{ with: 'did:key:zdd', can: '*' }], - }) - }) - - it('should fail to parse awake/init', async function () { - // @ts-expect-error - ws1.sendInit([{ with: 'did:key:zdd', WRONG: '*' }]) - - return assert.rejects(ws2.awaitInit(), (err) => { - const msg = JSON.parse(/** @type {Error} */ (err).message) - assert.deepEqual(msg, [ - { - code: 'invalid_type', - expected: 'string', - message: 'Required', - path: ['caps', 0, 'can'], - received: 'undefined', - }, - ]) - return true - }) - }) - }) -}) diff --git a/packages/access-client/test/awake.node.test.js b/packages/access-client/test/awake.node.test.js deleted file mode 100644 index f31348366..000000000 --- a/packages/access-client/test/awake.node.test.js +++ /dev/null @@ -1,112 +0,0 @@ -/* eslint-disable no-console */ -import assert from 'assert' -import { Channel } from '../src/awake/channel.js' -import { EcdhKeypair } from '../src/crypto/p256-ecdh.js' -import { getWebsocketServer } from './helpers/miniflare.js' -import PQueue from 'p-queue' -import delay from 'delay' -import pWaitFor from 'p-wait-for' -import { Agent } from '../src/agent.js' - -describe('awake', function () { - const host = new URL('ws://127.0.0.1:8788/connect') - /** @type {import('http').Server} */ - let server - - /** @type {Channel} */ - let ws1 - /** @type {Channel} */ - let ws2 - - this.beforeAll(async () => { - server = await getWebsocketServer() - }) - - this.afterAll(() => { - server.close() - }) - - this.beforeEach(async () => { - ws1 = await new Channel(host, 'test', await EcdhKeypair.create()).open() - ws2 = await new Channel(host, 'test', await EcdhKeypair.create()).open() - }) - - this.afterEach(async () => { - await ws1.close() - await ws2.close() - }) - - it('should send msgs', async function () { - const agent1 = await Agent.create(undefined, { - url: new URL('http://127.0.0.1:8787'), - }) - const space = await agent1.createSpace('responder') - await agent1.setCurrentSpace(space.did) - const agent2 = await Agent.create(undefined, { - url: new URL('http://127.0.0.1:8787'), - }) - const responder = agent1.peer(ws1) - const requestor = agent2.peer(ws2) - - const queue = new PQueue({ concurrency: 2 }) - queue.on('error', (error) => { - console.error(error) - }) - - /** - * @type {string | undefined} - */ - let pin - /** - * @type {{delegation: import('@ucanto/interface').Delegation, meta: import('../src/awake/types.js').PeerMeta}} - */ - let link - queue.add(async () => responder.awaitBootstrap(), { priority: 0 }) - queue.add(() => delay(300), { priority: 1 }) - await queue.add( - async () => { - pin = await requestor.bootstrap([ - { with: responder.did, can: 'identity/*' }, - ]) - console.log(pin) - }, - { priority: 2 } - ) - assert.ok(pin) - queue.add(async () => { - await requestor.awaitAck() - }) - - // wait ack - await queue.add(async () => { - // @ts-ignore - await responder.ack(pin) - }) - - queue.add(async () => { - await responder.awaitLink() - }) - - queue.add(async () => { - link = await requestor.link({ - caps: [{ can: 'identity/*' }], - meta: { - name: requestor.did, - type: 'device', - }, - }) - }) - - await queue.onIdle() - // @ts-ignore - if (link) { - assert.deepEqual(requestor.did, link.delegation.audience.did()) - assert.deepEqual(space.did, link.delegation.capabilities[0].with) - assert.deepEqual('*', link.delegation.capabilities[0].can) - } - - // they should close channel after link - await pWaitFor(() => responder.channel.ws?.readyState === 3) - await pWaitFor(() => responder.channel.ws?.readyState === 3) - }) -}) diff --git a/packages/access-client/test/helpers/miniflare.js b/packages/access-client/test/helpers/miniflare.js deleted file mode 100644 index 840a80580..000000000 --- a/packages/access-client/test/helpers/miniflare.js +++ /dev/null @@ -1,24 +0,0 @@ -import { Miniflare } from 'miniflare' -import path from 'path' -import { fileURLToPath } from 'url' -const __dirname = path.dirname(fileURLToPath(import.meta.url)) - -export function getWebsocketServer() { - const mf = new Miniflare({ - packagePath: path.join(__dirname, '../../../access-ws/package.json'), - wranglerConfigPath: path.join( - __dirname, - '../../../access-ws/wrangler.toml' - ), - sourceMap: true, - modules: true, - // log: new Log(LogLevel.DEBUG), - buildCommand: undefined, - port: 8788, - bindings: { - ENV: 'test', - }, - }) - - return mf.startServer() -} diff --git a/packages/access-ws/CHANGELOG.md b/packages/access-ws/CHANGELOG.md deleted file mode 100644 index 3cb6586ea..000000000 --- a/packages/access-ws/CHANGELOG.md +++ /dev/null @@ -1,81 +0,0 @@ -# Changelog - -## [0.3.0](https://github.com/web3-storage/ucan-protocol/compare/access-api-v0.2.0...access-api-v0.3.0) (2022-08-30) - - -### Features - -* fail validate for register email and add metrics ([0916ba6](https://github.com/web3-storage/ucan-protocol/commit/0916ba6bda8ad46ccc4f6bb0c6f4a48dd99db0c8)) -* update deps ([d276375](https://github.com/web3-storage/ucan-protocol/commit/d2763750159ad56132f0b002ff5f50cc36fce20c)) - - -### Bug Fixes - -* add analytics to staging and prod ([14941d9](https://github.com/web3-storage/ucan-protocol/commit/14941d901e48e92896cc962b3e93488731afa381)) -* revert fail email validation ([389784b](https://github.com/web3-storage/ucan-protocol/commit/389784bb995b18683ca71af63816db123880d3eb)) - -## [0.2.0](https://github.com/web3-storage/ucan-protocol/compare/access-api-v0.1.4...access-api-v0.2.0) (2022-08-26) - - -### Features - -* **access-api:** add logtail ([1246ab0](https://github.com/web3-storage/ucan-protocol/commit/1246ab0846f49f9adce734cf4f651d22f7ac7536)) -* **access-api:** new email template ([cc19320](https://github.com/web3-storage/ucan-protocol/commit/cc193202e385d8079144aa90e989af07cf743b0b)) - - -### Bug Fixes - -* **access-api:** add logtail to tests ([546152a](https://github.com/web3-storage/ucan-protocol/commit/546152aea75aff393935d866cbd9c1a818e81725)) -* **access-api:** use different email for tests ([1a01504](https://github.com/web3-storage/ucan-protocol/commit/1a0150429253afc572c9689f0a09a4c26499bd03)) - -## [0.1.4](https://github.com/web3-storage/ucan-protocol/compare/access-api-v0.1.3...access-api-v0.1.4) (2022-08-25) - - -### Bug Fixes - -* api ([4e70483](https://github.com/web3-storage/ucan-protocol/commit/4e7048316d3ed95f5b7606830d75420c5020bf53)) -* route for staging ([8d5866f](https://github.com/web3-storage/ucan-protocol/commit/8d5866f2bf870eaf2bb26bddef02ee8a0b6d1386)) -* staging ([29db547](https://github.com/web3-storage/ucan-protocol/commit/29db547848e8a5cab4d5c91a72010ed4aec5d09c)) -* staging ([53f62b0](https://github.com/web3-storage/ucan-protocol/commit/53f62b0269a7c3def5c22afb2b888d5886683f05)) - -## [0.1.3](https://github.com/web3-storage/ucan-protocol/compare/access-api-v0.1.2...access-api-v0.1.3) (2022-08-25) - - -### Bug Fixes - -* test api ([9597c44](https://github.com/web3-storage/ucan-protocol/commit/9597c4486abb1c21a0d8a504d4bb8632581e4800)) - -## [0.1.2](https://github.com/web3-storage/ucan-protocol/compare/access-api-v0.1.1...access-api-v0.1.2) (2022-08-25) - - -### Bug Fixes - -* **access-api:** add kvs ([e241d62](https://github.com/web3-storage/ucan-protocol/commit/e241d6290d93bfc20986591398ab20af6173ef78)) -* **access-api:** test error in staging ([1a97a57](https://github.com/web3-storage/ucan-protocol/commit/1a97a5797678d242db5849d9f10b8bc1907873d6)) -* change sentry name ([ad69e47](https://github.com/web3-storage/ucan-protocol/commit/ad69e47cb01ad1acedccf95798eacd9a649659bd)) -* proper envs and update deps ([d5dccb6](https://github.com/web3-storage/ucan-protocol/commit/d5dccb6e9c23b5ddbdffa4c67c04d195524b38f2)) -* remove error ([1ba180b](https://github.com/web3-storage/ucan-protocol/commit/1ba180b2c8a2da5dd9d3a69f23bcd93022500d6e)) - -## [0.1.1](https://github.com/web3-storage/ucan-protocol/compare/access-api-v0.1.0...access-api-v0.1.1) (2022-08-24) - - -### Bug Fixes - -* add readme ([25a01f5](https://github.com/web3-storage/ucan-protocol/commit/25a01f54c4db8f5af75e23c924d86a7a67823beb)) -* add readme text ([088273e](https://github.com/web3-storage/ucan-protocol/commit/088273e97a72f7ec85c60a5cb5dd6a8754603064)) - -## [0.1.0](https://github.com/web3-storage/ucan-protocol/compare/access-api-v0.0.1...access-api-v0.1.0) (2022-08-24) - - -### Features - -* **access-api:** add prod config ([60707ec](https://github.com/web3-storage/ucan-protocol/commit/60707ecef6ed1af8d8fe38f9ee0deb9761cb80a6)) -* resync ([5cae9cd](https://github.com/web3-storage/ucan-protocol/commit/5cae9cd55cfcc06046eb23a2f33931299dd07ff5)) -* sdk ([305b2d3](https://github.com/web3-storage/ucan-protocol/commit/305b2d317ba4b8743a1594e9dbe0d22bac90c229)) -* sdk and cli ([2373447](https://github.com/web3-storage/ucan-protocol/commit/2373447db93ee16276f45fbfe40e4b98c28b6ab7)) - - -### Bug Fixes - -* **access-api:** changes names, update deps ([3f9e1f8](https://github.com/web3-storage/ucan-protocol/commit/3f9e1f800728f57a9b194154c1b2e0133aa5bca4)) -* **access-api:** ci tests ([314cf63](https://github.com/web3-storage/ucan-protocol/commit/314cf635aa632e05a79822c5f7ec012559ff4427)) diff --git a/packages/access-ws/package.json b/packages/access-ws/package.json deleted file mode 100644 index f5449d57f..000000000 --- a/packages/access-ws/package.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "name": "@web3-storage/access-ws", - "version": "0.3.0", - "description": "Access Websocket API", - "type": "module", - "main": "dist/worker.js", - "module": "dist/worker.js", - "private": true, - "scripts": { - "lint": "tsc --build && eslint '**/*.{js,ts}' && prettier --check '**/*.{js,ts,yml,json}' --ignore-path ../../.gitignore", - "deploy": "wrangler publish", - "dev": "miniflare --watch --debug --env ../../.env --wrangler-env dev -m --port 8788", - "build": "scripts/cli.js build", - "test": "tsc --build && ava --serial" - }, - "author": "Hugo Dias (hugodias.me)", - "license": "(Apache-2.0 OR MIT)", - "dependencies": { - "@web3-storage/worker-utils": "0.4.3-dev", - "nanoid": "^4.0.0" - }, - "devDependencies": { - "@cloudflare/workers-types": "^3.18.0", - "@sentry/cli": "2.7.0", - "@types/git-rev-sync": "^2.0.0", - "@types/node": "^18.11.18", - "ava": "^5.1.1", - "buffer": "^6.0.3", - "dotenv": "^16.0.3", - "esbuild": "^0.17.2", - "git-rev-sync": "^3.0.2", - "hd-scripts": "^4.0.0", - "miniflare": "^2.11.0", - "p-wait-for": "^5.0.0", - "process": "^0.11.10", - "readable-stream": "^4.2.0", - "sade": "^1.8.1", - "typescript": "4.9.5", - "wrangler": "^2.8.0" - }, - "eslintConfig": { - "extends": [ - "./node_modules/hd-scripts/eslint/index.js" - ], - "parserOptions": { - "project": "./tsconfig.json" - }, - "globals": { - "VERSION": "readonly", - "COMMITHASH": "readonly", - "BRANCH": "readonly", - "DEBUG": "readonly", - "ACCOUNTS": "writable", - "VALIDATIONS": "writable", - "BUCKET": "writable", - "W3ACCESS_METRICS": "writable", - "WebSocketPair": "readonly" - } - }, - "eslintIgnore": [ - "node_modules", - "coverage", - "dist", - "docs" - ], - "ava": { - "concurrency": 1, - "failFast": true, - "workerThreads": false, - "nodeArguments": [ - "--experimental-vm-modules" - ], - "files": [ - "test/**/*.test.js" - ], - "ignoredByWatcher": [ - "./dist/*" - ] - }, - "depcheck": { - "specials": [ - "bin" - ], - "ignores": [ - "@types/*", - "wrangler", - "@cloudflare/workers-types", - "process", - "buffer", - "hd-scripts", - "better-sqlite3" - ] - } -} diff --git a/packages/access-ws/readme.md b/packages/access-ws/readme.md deleted file mode 100644 index 75db81dff..000000000 --- a/packages/access-ws/readme.md +++ /dev/null @@ -1,14 +0,0 @@ -# w3access API - -## Contributing - -We use `pnpm` in this project and commit the `pnpm-lock.yaml` file. - -### Install dependencies. - -```bash -# install all dependencies in the mono-repo -pnpm install -# setup git hooks -npx simple-git-hooks -``` diff --git a/packages/access-ws/scripts/cli.js b/packages/access-ws/scripts/cli.js deleted file mode 100755 index 80ac643b7..000000000 --- a/packages/access-ws/scripts/cli.js +++ /dev/null @@ -1,101 +0,0 @@ -#!/usr/bin/env node -/* eslint-disable no-console */ -import path from 'path' -import dotenv from 'dotenv' -import fs from 'fs' -import sade from 'sade' -import { fileURLToPath } from 'url' -import { build } from 'esbuild' -import Sentry from '@sentry/cli' -import { createRequire } from 'module' -// @ts-ignore -import git from 'git-rev-sync' - -const __dirname = path.dirname(fileURLToPath(import.meta.url)) -const require = createRequire(__dirname) -const prog = sade('api') - -dotenv.config({ - path: path.join(__dirname, '..', '..', '..', '.env'), -}) - -const pkg = JSON.parse( - // eslint-disable-next-line unicorn/prefer-json-parse-buffer - fs.readFileSync(path.join(__dirname, '..', 'package.json'), 'utf8') -) - -/** @type {import('esbuild').Plugin} */ -const PluginAlias = { - name: 'alias', - setup(build) { - build.onResolve({ filter: /^stream$/ }, () => { - return { path: require.resolve('readable-stream') } - }) - - build.onResolve({ filter: /^node-fetch$/ }, () => { - return { path: path.resolve(__dirname, 'fetch.js') } - }) - build.onResolve({ filter: /^cross-fetch$/ }, () => { - return { path: path.resolve(__dirname, 'fetch.js') } - }) - }, -} -prog - .command('build') - .describe('Build the worker.') - .option('--env', 'Environment', 'dev') - .action(async (opts) => { - try { - const version = `${pkg.name}@${pkg.version}-${opts.env}+${git.short( - __dirname - )}`.replace('/', '__') - await build({ - entryPoints: [path.join(__dirname, '../src/index.js')], - bundle: true, - format: 'esm', - outfile: 'dist/worker.js', - legalComments: 'external', - inject: [path.join(__dirname, 'node-globals.js')], - plugins: [PluginAlias], - define: { - ACCOUNT_VERSION: JSON.stringify(version), - ACCOUNT_COMMITHASH: JSON.stringify(git.long(__dirname)), - ACCOUNT_BRANCH: JSON.stringify(git.branch(__dirname)), - global: 'globalThis', - }, - minify: opts.env !== 'dev', - sourcemap: true, - }) - - // Sentry release and sourcemap upload - if (process.env.SENTRY_UPLOAD === 'true') { - const cli = new Sentry(undefined, { - authToken: process.env.SENTRY_TOKEN, - org: 'protocol-labs-it', - project: 'w3access-api', - // @ts-ignore - dist: git.short(__dirname), - }) - - await cli.releases.new(version) - await cli.releases.setCommits(version, { - auto: true, - ignoreEmpty: true, - ignoreMissing: true, - }) - await cli.releases.uploadSourceMaps(version, { - include: ['./dist'], - urlPrefix: '/', - }) - await cli.releases.finalize(version) - await cli.releases.newDeploy(version, { - env: opts.env, - }) - } - } catch (error) { - console.error(error) - process.exit(1) - } - }) - -prog.parse(process.argv) diff --git a/packages/access-ws/scripts/fetch.js b/packages/access-ws/scripts/fetch.js deleted file mode 100644 index c3ee50e22..000000000 --- a/packages/access-ws/scripts/fetch.js +++ /dev/null @@ -1 +0,0 @@ -export default globalThis.fetch.bind(globalThis) diff --git a/packages/access-ws/scripts/node-globals.js b/packages/access-ws/scripts/node-globals.js deleted file mode 100644 index f9c6a6960..000000000 --- a/packages/access-ws/scripts/node-globals.js +++ /dev/null @@ -1,4 +0,0 @@ -/* eslint-disable unicorn/prefer-module */ -// @ts-nocheck -export const { Buffer } = require('buffer') -export const process = require('process/browser') diff --git a/packages/access-ws/src/bindings.d.ts b/packages/access-ws/src/bindings.d.ts deleted file mode 100644 index 3bccd751c..000000000 --- a/packages/access-ws/src/bindings.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -import type { Logging } from '@web3-storage/worker-utils/logging' -import type { config } from './config' - -export {} - -declare global {} - -export interface RouteContext { - rooms: DurableObjectNamespace - log: Logging - config: typeof config -} - -declare namespace ModuleWorker { - type Bindings = Record< - string, - KVNamespace | DurableObjectNamespace | CryptoKey | string - > - - type FetchHandler = ( - request: Request, - env: Environment, - ctx: Pick - ) => Promise | Response - - type CronHandler = ( - event: Omit, - env: Environment, - ctx: Pick - ) => Promise | void -} - -export interface ModuleWorker< - Environment extends ModuleWorker.Bindings = ModuleWorker.Bindings -> { - fetch?: ModuleWorker.FetchHandler - scheduled?: ModuleWorker.CronHandler -} diff --git a/packages/access-ws/src/config.js b/packages/access-ws/src/config.js deleted file mode 100644 index f4fba36e5..000000000 --- a/packages/access-ws/src/config.js +++ /dev/null @@ -1,71 +0,0 @@ -/** - * Loads configuration variables from the global environment and returns a JS object - * keyed by variable names. - * - * @param {any} env - */ -export function loadConfig(env) { - /** @type Record */ - const vars = {} - - /** @type Record */ - const globals = env - - const required = ['ENV', 'DEBUG'] - - for (const name of required) { - const val = globals[name] - if (typeof val === 'string' && val.length > 0) { - vars[name] = val - } else { - throw new Error( - `Missing required config variables: ${name}. Check your .env, testing globals or cloudflare vars.` - ) - } - } - - return { - DEBUG: boolValue(vars.DEBUG), - ENV: parseRuntimeEnv(vars.ENV), - - // These are injected in esbuild - // @ts-ignore - // eslint-disable-next-line no-undef - BRANCH: ACCOUNT_BRANCH, - // @ts-ignore - // eslint-disable-next-line no-undef - VERSION: ACCOUNT_VERSION, - // @ts-ignore - // eslint-disable-next-line no-undef - COMMITHASH: ACCOUNT_COMMITHASH, - } -} - -/** - * Returns `true` if the string `s` is equal to `"true"` (case-insensitive) or `"1", and false for `"false"`, `"0"` or an empty value. - * - * @param {string} s - * @returns {boolean} - */ -function boolValue(s) { - return Boolean(s && JSON.parse(String(s).toLowerCase())) -} - -/** - * Validates that `s` is a defined runtime environment name and returns it. - * - * @param {unknown} s - */ -function parseRuntimeEnv(s) { - switch (s) { - case 'test': - case 'dev': - case 'staging': - case 'production': { - return s - } - default: { - throw new Error('invalid runtime environment name: ' + s) - } - } -} diff --git a/packages/access-ws/src/index.js b/packages/access-ws/src/index.js deleted file mode 100644 index 075cc4898..000000000 --- a/packages/access-ws/src/index.js +++ /dev/null @@ -1,148 +0,0 @@ -import { corsHeaders, preflight } from '@web3-storage/worker-utils/cors' -import { errorHandler } from '@web3-storage/worker-utils/error' -import { notFound } from '@web3-storage/worker-utils/response' -import { Router } from '@web3-storage/worker-utils/router' -import { nanoid } from 'nanoid' -import { loadConfig } from './config.js' - -/** - * @typedef {{webSocket: WebSocket; quit?: boolean; id: string}} Session - */ - -/** @type Router */ -const r = new Router({ onNotFound: notFound }) - -r.add('options', '*', preflight) - -r.add('get', '/connect/:id', (request, env, ctx) => { - const id = env.rooms.idFromName(request.params.id) - - const room = env.rooms.get(id) - const url = new URL(request.url) - return room.fetch(url.origin + '/connect', request) -}) - -/** @type {import('./bindings.js').ModuleWorker} */ -const worker = { - fetch: async (request, env, ctx) => { - try { - env.config = loadConfig(env) - const rsp = await r.fetch(request, env, ctx) - return env.config.ENV ? rsp : corsHeaders(request, rsp) - } catch (error) { - return errorHandler(/** @type {Error} */ (error)) - } - }, -} - -export default worker - -/** - * @param {Request} request - * @param {Error} error - */ -function sendError(request, error) { - if (request.headers.get('Upgrade') === 'websocket') { - const [client, server] = Object.values(new WebSocketPair()) - server.accept() - setTimeout(() => { - server.send(JSON.stringify({ error: error.toString() })) - server.close(1011, error.message) - }, 100) - return new Response(undefined, { status: 101, webSocket: client }) - } else { - return new Response(error.stack, { status: 500 }) - } -} - -/** - * @implements {DurableObject} - */ -export class ChatRoom { - /** - * @param {DurableObjectState} state - * @param {import('./bindings.js').RouteContext} env - */ - constructor(state, env) { - this.state = state - this.env = env - /** - * @type {Session[]} - */ - this.sessions = [] - } - - /** - * @param {Request} request - */ - async fetch(request) { - const url = new URL(request.url) - switch (url.pathname) { - case '/connect': { - if ( - request.headers.get('Upgrade') !== 'websocket' && - this.env.config.ENV !== 'test' - ) { - return new Response('expected websocket', { status: 400 }) - } - - if (this.sessions.length > 1) { - return sendError(request, new Error('too many connections')) - } - - const [client, server] = Object.values(new WebSocketPair()) - await this.handleSession(server) - return new Response(undefined, { status: 101, webSocket: client }) - } - - default: { - return new Response('Not found', { status: 404 }) - } - } - } - - /** - * @param {WebSocket} webSocket - */ - async handleSession(webSocket) { - webSocket.accept() - /** @type {Session} */ - const session = { - webSocket, - id: nanoid(), - } - this.sessions.push(session) - - webSocket.addEventListener('message', async (msg) => { - this.broadcast(msg.data, session) - }) - - webSocket.addEventListener('close', () => this.remove(session)) - webSocket.addEventListener('error', () => this.remove(session)) - } - - /** - * @param {any} message - * @param {Session} sender - */ - broadcast(message, sender) { - for (const session of this.sessions) { - if (session.id !== sender.id) { - try { - session.webSocket.send(message) - } catch (error) { - this.remove(session) - // eslint-disable-next-line no-console - console.error(error) - } - } - } - } - - /** - * @param {Session} session - */ - remove(session) { - this.sessions = this.sessions.filter((member) => member !== session) - } -} diff --git a/packages/access-ws/test/api.test.js b/packages/access-ws/test/api.test.js deleted file mode 100644 index 704ebedc3..000000000 --- a/packages/access-ws/test/api.test.js +++ /dev/null @@ -1,116 +0,0 @@ -import { mf, test } from './helpers/setup.js' -import pWaitFor from 'p-wait-for' - -test.before((t) => { - t.context = { mf } -}) - -test('should create room', async (t) => { - const { mf } = t.context - const res = await mf.dispatchFetch('http://localhost:8787/room', { - method: 'POST', - }) - const rsp = await res.text() - t.truthy(rsp) -}) - -test('should create named room', async (t) => { - const { mf } = t.context - const res = await mf.dispatchFetch('http://localhost:8787/room?name=hugo', { - method: 'POST', - }) - const rsp = await res.json() - - const room = await mf.dispatchFetch(`http://localhost:8787/room/${rsp.id}`, { - method: 'POST', - }) - const roomRsp = await room.json() - - t.deepEqual(rsp.id, roomRsp.id) -}) - -test('should connect named room', async (t) => { - const { mf } = t.context - let done = 0 - const res = await mf.dispatchFetch('http://localhost:8787/room?name=hugo', { - method: 'POST', - }) - const rsp = await res.json() - - const connect = await mf.dispatchFetch( - 'http://127.0.0.1:8787/connect/' + rsp.id - ) - const ws = connect.webSocket - if (!ws) { - throw new Error('no ws') - } - ws.accept() - const msg1 = { type: 'message', message: 'one' } - const msg2 = { type: 'message', message: 'two' } - ws.addEventListener('message', (event) => { - // @ts-ignore - const data = JSON.parse(event.data) - t.like(data, msg2) - ws.close() - done++ - }) - - const connect2 = await mf.dispatchFetch( - 'http://127.0.0.1:8787/connect/' + rsp.id - ) - const ws2 = connect2.webSocket - if (!ws2) { - throw new Error('no ws') - } - ws2.accept() - ws2.addEventListener('message', (event) => { - // @ts-ignore - const data = JSON.parse(event.data) - t.like(data, msg1) - ws2.close() - done++ - }) - - ws2.send(JSON.stringify(msg2)) - ws.send(JSON.stringify(msg1)) - - await pWaitFor(() => done === 2) -}) - -test('should connect without preflight', async (t) => { - const { mf } = t.context - let done = 0 - // const res = await mf.dispatchFetch('http://localhost:8787/room?name=hugo', { - // method: 'POST', - // }) - // const rsp = await res.json() - - const msg1 = { type: 'message', message: 'one' } - const msg2 = { type: 'message', message: 'two' } - const connect = await mf.dispatchFetch('http://127.0.0.1:8787/connect/hugo2') - const ws = connect.webSocket - ws?.accept() - ws?.addEventListener('message', (event) => { - // @ts-ignore - const data = JSON.parse(event.data) - t.like(data, msg2) - ws.close() - done++ - }) - - const connect2 = await mf.dispatchFetch('http://127.0.0.1:8787/connect/hugo2') - const ws2 = connect2.webSocket - ws2?.accept() - ws2?.addEventListener('message', (event) => { - // @ts-ignore - const data = JSON.parse(event.data) - t.like(data, msg1) - ws2.close() - done++ - }) - - ws2?.send(JSON.stringify(msg2)) - ws?.send(JSON.stringify(msg1)) - - await pWaitFor(() => done === 2) -}) diff --git a/packages/access-ws/test/helpers/setup.js b/packages/access-ws/test/helpers/setup.js deleted file mode 100644 index 636acb04a..000000000 --- a/packages/access-ws/test/helpers/setup.js +++ /dev/null @@ -1,29 +0,0 @@ -import anyTest from 'ava' -import dotenv from 'dotenv' -import { Miniflare } from 'miniflare' -import path from 'path' -import { fileURLToPath } from 'url' -const __dirname = path.dirname(fileURLToPath(import.meta.url)) - -dotenv.config({ - path: path.join(__dirname, '..', '..', '..', '..', '.env.tpl'), -}) -/** - * @typedef {import("ava").TestFn<{mf: mf}>} TestFn - */ - -// eslint-disable-next-line unicorn/prefer-export-from -export const test = /** @type {TestFn} */ (anyTest) - -export const bindings = { - ENV: 'test', - DEBUG: 'false', -} - -export const mf = new Miniflare({ - packagePath: true, - wranglerConfigPath: true, - sourceMap: true, - bindings, - modules: true, -}) diff --git a/packages/access-ws/tsconfig.json b/packages/access-ws/tsconfig.json deleted file mode 100644 index 3fbd527eb..000000000 --- a/packages/access-ws/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "dist", - "lib": ["ESNext"], - "types": ["@cloudflare/workers-types"] - }, - "include": ["src", "scripts", "test", "package.json"], - "exclude": ["**/node_modules/**"], - "references": [{ "path": "../access-client" }] -} diff --git a/packages/access-ws/wrangler.toml b/packages/access-ws/wrangler.toml deleted file mode 100644 index 6162f4992..000000000 --- a/packages/access-ws/wrangler.toml +++ /dev/null @@ -1,25 +0,0 @@ -# Development - -name = "w3access-ws" -account_id = "fffa4b4363a7e5250af8357087263b3a" -main = "./dist/worker.js" - -# Compatibility flags https://github.com/cloudflare/wrangler/pull/2009 -compatibility_date = "2022-06-26" -compatibility_flags = ["url_standard"] -no_bundle = true - - -[vars] -ENV = "dev" -DEBUG = "true" - -[build] -command = "scripts/cli.js build" -watch_dir = "src" - -[durable_objects] -bindings = [ - { name = "rooms", class_name = "ChatRoom" }, - # { name = "limiters", class_name = "RateLimiter" }, -] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1a1393cbf..ebbcf1aec 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: 5.3 +lockfileVersion: 5.4 importers: @@ -20,7 +20,7 @@ importers: typedoc-plugin-missing-exports: 1.0.0_typedoc@0.23.26 devDependencies: '@docusaurus/core': 2.3.1_typescript@4.9.5 - docusaurus-plugin-typedoc: 0.18.0_2d14ec792652ded3833c4dfe2319b595 + docusaurus-plugin-typedoc: 0.18.0_fukoy6jgklpnhaz4jx7cggnvsu lint-staged: 13.2.0 prettier: 2.8.3 typedoc-plugin-markdown: 3.14.0_typedoc@0.23.26 @@ -142,18 +142,15 @@ importers: assert: ^2.0.0 bigint-mod-arith: ^3.1.2 conf: 10.2.0 - delay: ^5.0.0 hd-scripts: ^4.0.0 inquirer: ^9.1.4 isomorphic-ws: ^5.0.0 kysely: ^0.23.4 - miniflare: ^2.11.0 mocha: ^10.2.0 multiformats: ^11.0.2 one-webcrypto: ^1.0.3 ora: ^6.1.2 p-defer: ^4.0.0 - p-queue: ^7.3.0 p-wait-for: ^5.0.0 playwright-test: ^8.1.2 sade: ^1.8.1 @@ -199,59 +196,13 @@ importers: '@types/ws': 8.5.4 '@ucanto/server': 6.1.0 assert: 2.0.0 - delay: 5.0.0 hd-scripts: 4.0.0 - miniflare: 2.11.0 mocha: 10.2.0 - p-queue: 7.3.0 playwright-test: 8.2.0 sade: 1.8.1 typescript: 4.9.5 watch: 1.0.2 - packages/access-ws: - specifiers: - '@cloudflare/workers-types': ^3.18.0 - '@sentry/cli': 2.7.0 - '@types/git-rev-sync': ^2.0.0 - '@types/node': ^18.11.18 - '@web3-storage/worker-utils': 0.4.3-dev - ava: ^5.1.1 - buffer: ^6.0.3 - dotenv: ^16.0.3 - esbuild: ^0.17.2 - git-rev-sync: ^3.0.2 - hd-scripts: ^4.0.0 - miniflare: ^2.11.0 - nanoid: ^4.0.0 - p-wait-for: ^5.0.0 - process: ^0.11.10 - readable-stream: ^4.2.0 - sade: ^1.8.1 - typescript: 4.9.5 - wrangler: ^2.8.0 - dependencies: - '@web3-storage/worker-utils': 0.4.3-dev - nanoid: 4.0.0 - devDependencies: - '@cloudflare/workers-types': 3.19.0 - '@sentry/cli': 2.7.0 - '@types/git-rev-sync': 2.0.0 - '@types/node': 18.11.18 - ava: 5.1.1 - buffer: 6.0.3 - dotenv: 16.0.3 - esbuild: 0.17.5 - git-rev-sync: 3.0.2 - hd-scripts: 4.0.0 - miniflare: 2.11.0 - p-wait-for: 5.0.0 - process: 0.11.10 - readable-stream: 4.3.0 - sade: 1.8.1 - typescript: 4.9.5 - wrangler: 2.9.0 - packages/capabilities: specifiers: '@types/assert': ^1.5.6 @@ -1787,6 +1738,11 @@ packages: peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true dependencies: '@babel/core': 7.21.3 '@babel/generator': 7.21.3 @@ -1808,7 +1764,7 @@ packages: '@slorber/static-site-generator-webpack-plugin': 4.0.7 '@svgr/webpack': 6.5.1 autoprefixer: 10.4.14_postcss@8.4.21 - babel-loader: 8.3.0_3f6ff19fd90870e7c7e9add153e17078 + babel-loader: 8.3.0_h5x7dh6zbbyopr7jvxivhylqpa babel-plugin-dynamic-import-node: 2.3.3 boxen: 6.2.1 chalk: 4.1.2 @@ -1820,7 +1776,7 @@ packages: copy-webpack-plugin: 11.0.0_webpack@5.76.2 core-js: 3.29.1 css-loader: 6.7.3_webpack@5.76.2 - css-minimizer-webpack-plugin: 4.2.2_clean-css@5.3.2+webpack@5.76.2 + css-minimizer-webpack-plugin: 4.2.2_7uczfu7hmoatiedqewdadkdxue cssnano: 5.1.15_postcss@8.4.21 del: 6.1.1 detect-port: 1.5.1 @@ -1836,12 +1792,12 @@ packages: lodash: 4.17.21 mini-css-extract-plugin: 2.7.3_webpack@5.76.2 postcss: 8.4.21 - postcss-loader: 7.0.2_postcss@8.4.21+webpack@5.76.2 + postcss-loader: 7.0.2_6puvukfnwbwq425eep7g4z27be prompts: 2.4.2 - react-dev-utils: 12.0.1_typescript@4.9.5+webpack@5.76.2 + react-dev-utils: 12.0.1_a37q6j7dwawz22saey2vgkpwqm react-helmet-async: 1.3.0 react-loadable: /@docusaurus/react-loadable/5.5.2 - react-loadable-ssr-addon-v5-slorber: 1.0.1_ae04c30fda2e21f7f97904e752cda116 + react-loadable-ssr-addon-v5-slorber: 1.0.1_vycmgd62fyq7p6lzattvftnbcy react-router: 5.3.4 react-router-config: 5.1.1_react-router@5.3.4 react-router-dom: 5.3.4 @@ -1852,7 +1808,7 @@ packages: terser-webpack-plugin: 5.3.7_webpack@5.76.2 tslib: 2.5.0 update-notifier: 5.1.0 - url-loader: 4.1.1_file-loader@6.2.0+webpack@5.76.2 + url-loader: 4.1.1_35ful32yo3wjb53le3l6xb5doy wait-on: 6.0.1 webpack: 5.76.2 webpack-bundle-analyzer: 4.8.0 @@ -1902,6 +1858,11 @@ packages: peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true dependencies: '@babel/parser': 7.21.3 '@babel/traverse': 7.21.3 @@ -1918,7 +1879,7 @@ packages: tslib: 2.5.0 unified: 9.2.2 unist-util-visit: 2.0.3 - url-loader: 4.1.1_file-loader@6.2.0+webpack@5.76.2 + url-loader: 4.1.1_35ful32yo3wjb53le3l6xb5doy webpack: 5.76.2 transitivePeerDependencies: - '@docusaurus/types' @@ -1933,6 +1894,9 @@ packages: resolution: {integrity: sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==} peerDependencies: react: '*' + peerDependenciesMeta: + react: + optional: true dependencies: '@types/react': 18.0.28 prop-types: 15.8.1 @@ -1991,7 +1955,7 @@ packages: resolve-pathname: 3.0.0 shelljs: 0.8.5 tslib: 2.5.0 - url-loader: 4.1.1_file-loader@6.2.0+webpack@5.76.2 + url-loader: 4.1.1_35ful32yo3wjb53le3l6xb5doy webpack: 5.76.2 transitivePeerDependencies: - '@swc/core' @@ -3827,7 +3791,7 @@ packages: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/eslint-plugin/5.50.0_33b838c6f29e0454280dad39d7a39534: + /@typescript-eslint/eslint-plugin/5.50.0_go4drrxstycfikanvu45pi4vgq: resolution: {integrity: sha512-vwksQWSFZiUhgq3Kv7o1Jcj0DUNylwnIlGvKvLLYsq8pAWha6/WCnXUeaSoNNha/K7QSf2+jvmkxggC1u3pIwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3838,10 +3802,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.50.0_eslint@8.33.0+typescript@4.9.5 + '@typescript-eslint/parser': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 '@typescript-eslint/scope-manager': 5.50.0 - '@typescript-eslint/type-utils': 5.50.0_eslint@8.33.0+typescript@4.9.5 - '@typescript-eslint/utils': 5.50.0_eslint@8.33.0+typescript@4.9.5 + '@typescript-eslint/type-utils': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 + '@typescript-eslint/utils': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 debug: 4.3.4 eslint: 8.33.0 grapheme-splitter: 1.0.4 @@ -3855,20 +3819,20 @@ packages: - supports-color dev: true - /@typescript-eslint/experimental-utils/5.50.0_eslint@8.33.0+typescript@4.9.5: + /@typescript-eslint/experimental-utils/5.50.0_4vsywjlpuriuw3tl5oq6zy5a64: resolution: {integrity: sha512-gZIhzNRivy0RVqcxjKnQ+ipGc0qolilhBeNmvH+Dvu7Vymug+IfiYxTj2zM7mIlHsw6Q5aH7L7WmuTE3tZyzag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.50.0_eslint@8.33.0+typescript@4.9.5 + '@typescript-eslint/utils': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 eslint: 8.33.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser/5.50.0_eslint@8.33.0+typescript@4.9.5: + /@typescript-eslint/parser/5.50.0_4vsywjlpuriuw3tl5oq6zy5a64: resolution: {integrity: sha512-KCcSyNaogUDftK2G9RXfQyOCt51uB5yqC6pkUYqhYh8Kgt+DwR5M0EwEAxGPy/+DH6hnmKeGsNhiZRQxjH71uQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3896,7 +3860,7 @@ packages: '@typescript-eslint/visitor-keys': 5.50.0 dev: true - /@typescript-eslint/type-utils/5.50.0_eslint@8.33.0+typescript@4.9.5: + /@typescript-eslint/type-utils/5.50.0_4vsywjlpuriuw3tl5oq6zy5a64: resolution: {integrity: sha512-dcnXfZ6OGrNCO7E5UY/i0ktHb7Yx1fV6fnQGGrlnfDhilcs6n19eIRcvLBqx6OQkrPaFlDPk3OJ0WlzQfrV0bQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3907,7 +3871,7 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 5.50.0_typescript@4.9.5 - '@typescript-eslint/utils': 5.50.0_eslint@8.33.0+typescript@4.9.5 + '@typescript-eslint/utils': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 debug: 4.3.4 eslint: 8.33.0 tsutils: 3.21.0_typescript@4.9.5 @@ -3942,7 +3906,7 @@ packages: - supports-color dev: true - /@typescript-eslint/utils/5.50.0_eslint@8.33.0+typescript@4.9.5: + /@typescript-eslint/utils/5.50.0_4vsywjlpuriuw3tl5oq6zy5a64: resolution: {integrity: sha512-v/AnUFImmh8G4PH0NDkf6wA8hujNNcrwtecqW4vtQ1UOSNBaZl49zP1SHoZ/06e+UiwzHpgb5zP5+hwlYYWYAw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4419,7 +4383,6 @@ packages: /ansi-sequence-parser/1.1.0: resolution: {integrity: sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==} - dev: false /ansi-styles/3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} @@ -4470,11 +4433,6 @@ packages: engines: {node: '>=8'} dev: false - /array-find-index/1.0.2: - resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} - engines: {node: '>=0.10.0'} - dev: true - /array-flatten/1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} dev: true @@ -4538,11 +4496,6 @@ packages: get-intrinsic: 1.2.0 dev: true - /arrgv/1.0.2: - resolution: {integrity: sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw==} - engines: {node: '>=8.0.0'} - dev: true - /arrify/2.0.1: resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} engines: {node: '>=8'} @@ -4593,65 +4546,6 @@ packages: postcss-value-parser: 4.2.0 dev: true - /ava/5.1.1: - resolution: {integrity: sha512-od1CWgWVIKZSdEc1dhQWhbsd6KBs0EYjek7eqZNGPvy+NyC9Q1bXixcadlgOXwDG9aM0zLMQZwRXfe9gMb1LQQ==} - engines: {node: '>=14.19 <15 || >=16.15 <17 || >=18'} - hasBin: true - peerDependencies: - '@ava/typescript': '*' - peerDependenciesMeta: - '@ava/typescript': - optional: true - dependencies: - acorn: 8.8.2 - acorn-walk: 8.2.0 - ansi-styles: 6.2.1 - arrgv: 1.0.2 - arrify: 3.0.0 - callsites: 4.0.0 - cbor: 8.1.0 - chalk: 5.2.0 - chokidar: 3.5.3 - chunkd: 2.0.1 - ci-info: 3.7.1 - ci-parallel-vars: 1.0.1 - clean-yaml-object: 0.1.0 - cli-truncate: 3.1.0 - code-excerpt: 4.0.0 - common-path-prefix: 3.0.0 - concordance: 5.0.4 - currently-unhandled: 0.4.1 - debug: 4.3.4 - del: 7.0.0 - emittery: 1.0.1 - figures: 5.0.0 - globby: 13.1.3 - ignore-by-default: 2.1.0 - indent-string: 5.0.0 - is-error: 2.2.2 - is-plain-object: 5.0.0 - is-promise: 4.0.0 - matcher: 5.0.0 - mem: 9.0.2 - ms: 2.1.3 - p-event: 5.0.1 - p-map: 5.5.0 - picomatch: 2.3.1 - pkg-conf: 4.0.0 - plur: 5.1.0 - pretty-ms: 8.0.0 - resolve-cwd: 3.0.0 - slash: 3.0.0 - stack-utils: 2.0.6 - strip-ansi: 7.0.1 - supertap: 3.0.1 - temp-dir: 3.0.0 - write-file-atomic: 5.0.0 - yargs: 17.6.2 - transitivePeerDependencies: - - supports-color - dev: true - /available-typed-arrays/1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} @@ -4664,7 +4558,7 @@ packages: - debug dev: true - /babel-loader/8.3.0_3f6ff19fd90870e7c7e9add153e17078: + /babel-loader/8.3.0_h5x7dh6zbbyopr7jvxivhylqpa: resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==} engines: {node: '>= 8.9'} peerDependencies: @@ -4811,10 +4705,6 @@ packages: multiformats: 11.0.2 dev: true - /blueimp-md5/2.19.0: - resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} - 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} @@ -4831,6 +4721,8 @@ packages: raw-body: 2.5.1 type-is: 1.6.18 unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color dev: true /bonjour-service/1.1.0: @@ -4993,11 +4885,6 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - /callsites/4.0.0: - resolution: {integrity: sha512-y3jRROutgpKdz5vzEhWM34TidDU8vkJppF8dszITeb1PQmSqV3DTxyV8G/lyO/DNvtE1YTedehmw9MPZsCBHxQ==} - engines: {node: '>=12.20'} - dev: true - /camel-case/4.1.2: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} dependencies: @@ -5037,13 +4924,6 @@ packages: resolution: {integrity: sha512-ewtFBSfWjEmxUgNBSZItFSmVtvk9zkwkl1OfRZlKA8slltRN+/C/tuGVrF9styXkN36Yu3+SeJ1qkXxDEyNZ5w==} dev: true - /cbor/8.1.0: - resolution: {integrity: sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==} - engines: {node: '>=12.19'} - dependencies: - nofilter: 3.1.0 - dev: true - /cborg/1.10.0: resolution: {integrity: sha512-/eM0JCaL99HDHxjySNQJLaolZFVdl6VA0/hEKIoiQPcQzE5LrG5QHdml0HaBt31brgB9dNe1zMr3f8IVrpotRQ==} hasBin: true @@ -5111,10 +4991,6 @@ packages: engines: {node: '>=6.0'} dev: true - /chunkd/2.0.1: - resolution: {integrity: sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==} - dev: true - /ci-info/2.0.0: resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} dev: true @@ -5129,10 +5005,6 @@ packages: engines: {node: '>=8'} dev: true - /ci-parallel-vars/1.0.1: - resolution: {integrity: sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg==} - dev: true - /clean-css/5.3.2: resolution: {integrity: sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==} engines: {node: '>= 10.0'} @@ -5159,11 +5031,6 @@ packages: escape-string-regexp: 5.0.0 dev: true - /clean-yaml-object/0.1.0: - resolution: {integrity: sha512-3yONmlN9CSAkzNwnRCiJQ7Q2xK5mWuEfL3PuTZcAUzhObbXsfsnMptJzXwz93nc5zn9V9TwCVMmV7w4xsm43dw==} - engines: {node: '>=0.10.0'} - dev: true - /cli-boxes/2.2.1: resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} engines: {node: '>=6'} @@ -5264,13 +5131,6 @@ packages: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} - /code-excerpt/4.0.0: - resolution: {integrity: sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - convert-to-spaces: 2.0.1 - dev: true - /collapse-white-space/1.0.6: resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==} dev: true @@ -5348,10 +5208,6 @@ packages: engines: {node: '>= 12.0.0'} dev: true - /common-path-prefix/3.0.0: - resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} - dev: true - /commondir/1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} dev: true @@ -5374,25 +5230,13 @@ packages: on-headers: 1.0.2 safe-buffer: 5.1.2 vary: 1.1.2 + transitivePeerDependencies: + - supports-color dev: true /concat-map/0.0.1: resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} - /concordance/5.0.4: - resolution: {integrity: sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==} - engines: {node: '>=10.18.0 <11 || >=12.14.0 <13 || >=14'} - dependencies: - date-time: 3.1.0 - esutils: 2.0.3 - fast-diff: 1.2.0 - js-string-escape: 1.0.1 - lodash: 4.17.21 - md5-hex: 3.0.1 - semver: 7.3.8 - well-known-symbols: 2.0.0 - dev: true - /conf/10.2.0: resolution: {integrity: sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==} engines: {node: '>=12'} @@ -5455,11 +5299,6 @@ packages: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} dev: true - /convert-to-spaces/2.0.1: - resolution: {integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /cookie-signature/1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} dev: true @@ -5615,7 +5454,7 @@ packages: webpack: 5.76.2 dev: true - /css-minimizer-webpack-plugin/4.2.2_clean-css@5.3.2+webpack@5.76.2: + /css-minimizer-webpack-plugin/4.2.2_7uczfu7hmoatiedqewdadkdxue: resolution: {integrity: sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==} engines: {node: '>= 14.15.0'} peerDependencies: @@ -5764,25 +5603,11 @@ packages: resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} dev: true - /currently-unhandled/0.4.1: - resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==} - engines: {node: '>=0.10.0'} - dependencies: - array-find-index: 1.0.2 - dev: true - /data-uri-to-buffer/3.0.1: resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==} engines: {node: '>= 6'} dev: false - /date-time/3.1.0: - resolution: {integrity: sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==} - engines: {node: '>=6'} - dependencies: - time-zone: 1.0.0 - dev: true - /debounce-fn/4.0.0: resolution: {integrity: sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==} engines: {node: '>=10'} @@ -5792,12 +5617,22 @@ packages: /debug/2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.0.0 dev: true /debug/3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.1.3 dev: true @@ -5941,25 +5776,6 @@ packages: slash: 3.0.0 dev: true - /del/7.0.0: - resolution: {integrity: sha512-tQbV/4u5WVB8HMJr08pgw0b6nG4RGt/tj+7Numvq+zqcvUFeMaIWWOUFltiU+6go8BSO2/ogsB4EasDaj0y68Q==} - engines: {node: '>=14.16'} - dependencies: - globby: 13.1.3 - graceful-fs: 4.2.10 - is-glob: 4.0.3 - is-path-cwd: 3.0.0 - is-path-inside: 4.0.0 - p-map: 5.5.0 - rimraf: 3.0.2 - slash: 4.0.0 - dev: true - - /delay/5.0.0: - resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} - engines: {node: '>=10'} - dev: true - /delegates/1.0.0: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} dev: true @@ -6037,6 +5853,8 @@ packages: dependencies: address: 1.2.2 debug: 2.6.9 + transitivePeerDependencies: + - supports-color dev: true /detect-port/1.5.1: @@ -6090,7 +5908,7 @@ packages: esutils: 2.0.3 dev: true - /docusaurus-plugin-typedoc/0.18.0_2d14ec792652ded3833c4dfe2319b595: + /docusaurus-plugin-typedoc/0.18.0_fukoy6jgklpnhaz4jx7cggnvsu: resolution: {integrity: sha512-kurIUu8LhVIOPT88HoeBcu0/D2GMDdg0pUYaFlqeuXT9an6Wlgvuy0C22ZMYcJUcp/gA/Mw2XdUHubsLK2M4uA==} peerDependencies: typedoc: '>=0.23.0' @@ -6190,11 +6008,6 @@ packages: resolution: {integrity: sha512-PqyefhybrVdjAJ45HaPLtuVaehiSw7C3ya0aad+rvmV53IVyXmYRk3pwIOb2TxTDTnmgQdn46NjMMaysx79/6Q==} dev: true - /emittery/1.0.1: - resolution: {integrity: sha512-2ID6FdrMD9KDLldGesP6317G78K7km/kMcwItRtVFva7I/cSEOIaLpewaUb+YLXVwdAp3Ctfxh/V5zIl1sj7dQ==} - engines: {node: '>=14.16'} - dev: true - /emoji-regex/8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -6662,11 +6475,6 @@ packages: 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'} @@ -6685,7 +6493,7 @@ packages: eslint: 8.33.0 dev: true - /eslint-config-standard-with-typescript/30.0.0_2c4a6b03e582732cac71a6e57a31f544: + /eslint-config-standard-with-typescript/30.0.0_frfgwa7fqjzszldru3sxumpviq: resolution: {integrity: sha512-/Ltst1BCZCWrGmqprLHBkTwuAbcoQrR8uMeSzZAv1vHKIVg+2nFje+DULA30SW01yCNhnx0a8yhZBkR0ZZPp+w==} peerDependencies: '@typescript-eslint/eslint-plugin': ^5.0.0 @@ -6695,11 +6503,11 @@ packages: eslint-plugin-promise: ^6.0.0 typescript: '*' dependencies: - '@typescript-eslint/eslint-plugin': 5.50.0_33b838c6f29e0454280dad39d7a39534 - '@typescript-eslint/parser': 5.50.0_eslint@8.33.0+typescript@4.9.5 + '@typescript-eslint/eslint-plugin': 5.50.0_go4drrxstycfikanvu45pi4vgq + '@typescript-eslint/parser': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 eslint: 8.33.0 - eslint-config-standard: 17.0.0_b9f768b46296433d2fe71aa434c1a914 - eslint-plugin-import: 2.27.5_eslint@8.33.0 + eslint-config-standard: 17.0.0_xh3wrndcszbt2l7hdksdjqnjcq + eslint-plugin-import: 2.27.5_ufewo3pl5nnmz6lltvjrdi2hii eslint-plugin-n: 15.6.1_eslint@8.33.0 eslint-plugin-promise: 6.1.1_eslint@8.33.0 typescript: 4.9.5 @@ -6707,7 +6515,7 @@ packages: - supports-color dev: true - /eslint-config-standard/17.0.0_b9f768b46296433d2fe71aa434c1a914: + /eslint-config-standard/17.0.0_xh3wrndcszbt2l7hdksdjqnjcq: resolution: {integrity: sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==} peerDependencies: eslint: ^8.0.1 @@ -6716,21 +6524,21 @@ packages: eslint-plugin-promise: ^6.0.0 dependencies: eslint: 8.33.0 - eslint-plugin-import: 2.27.5_eslint@8.33.0 + eslint-plugin-import: 2.27.5_ufewo3pl5nnmz6lltvjrdi2hii eslint-plugin-n: 15.6.1_eslint@8.33.0 eslint-plugin-promise: 6.1.1_eslint@8.33.0 dev: true - /eslint-etc/5.2.0_eslint@8.33.0+typescript@4.9.5: + /eslint-etc/5.2.0_4vsywjlpuriuw3tl5oq6zy5a64: resolution: {integrity: sha512-Gcm/NMa349FOXb1PEEfNMMyIANuorIc2/mI5Vfu1zENNsz+FBVhF62uY6gPUCigm/xDOc8JOnl+71WGnlzlDag==} peerDependencies: eslint: ^8.0.0 typescript: ^4.0.0 dependencies: - '@typescript-eslint/experimental-utils': 5.50.0_eslint@8.33.0+typescript@4.9.5 + '@typescript-eslint/experimental-utils': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 eslint: 8.33.0 tsutils: 3.21.0_typescript@4.9.5 - tsutils-etc: 1.4.1_tsutils@3.21.0+typescript@4.9.5 + tsutils-etc: 1.4.1_dw2ve3pa3py4wrhanasku2jsqi typescript: 4.9.5 transitivePeerDependencies: - supports-color @@ -6742,19 +6550,37 @@ packages: debug: 3.2.7 is-core-module: 2.11.0 resolve: 1.22.1 + transitivePeerDependencies: + - supports-color dev: true - /eslint-module-utils/2.7.4_eslint@8.33.0: + /eslint-module-utils/2.7.4_ypqpzq5szckeh62pb722iz7nn4: resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} 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.50.0_4vsywjlpuriuw3tl5oq6zy5a64 debug: 3.2.7 eslint: 8.33.0 + eslint-import-resolver-node: 0.3.7 + transitivePeerDependencies: + - supports-color dev: true /eslint-plugin-es/4.1.0_eslint@8.33.0: @@ -6768,16 +6594,16 @@ packages: regexpp: 3.2.0 dev: true - /eslint-plugin-etc/2.0.2_eslint@8.33.0+typescript@4.9.5: + /eslint-plugin-etc/2.0.2_4vsywjlpuriuw3tl5oq6zy5a64: resolution: {integrity: sha512-g3b95LCdTCwZA8On9EICYL8m1NMWaiGfmNUd/ftZTeGZDXrwujKXUr+unYzqKjKFo1EbqJ31vt+Dqzrdm/sUcw==} peerDependencies: eslint: ^8.0.0 typescript: ^4.0.0 dependencies: '@phenomnomnominal/tsquery': 4.2.0_typescript@4.9.5 - '@typescript-eslint/experimental-utils': 5.50.0_eslint@8.33.0+typescript@4.9.5 + '@typescript-eslint/experimental-utils': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 eslint: 8.33.0 - eslint-etc: 5.2.0_eslint@8.33.0+typescript@4.9.5 + eslint-etc: 5.2.0_4vsywjlpuriuw3tl5oq6zy5a64 requireindex: 1.2.0 tslib: 2.5.0 tsutils: 3.21.0_typescript@4.9.5 @@ -6786,12 +6612,17 @@ packages: - supports-color dev: true - /eslint-plugin-import/2.27.5_eslint@8.33.0: + /eslint-plugin-import/2.27.5_ufewo3pl5nnmz6lltvjrdi2hii: 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.50.0_4vsywjlpuriuw3tl5oq6zy5a64 array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -6799,7 +6630,7 @@ packages: doctrine: 2.1.0 eslint: 8.33.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4_eslint@8.33.0 + eslint-module-utils: 2.7.4_ypqpzq5szckeh62pb722iz7nn4 has: 1.0.3 is-core-module: 2.11.0 is-glob: 4.0.3 @@ -6808,6 +6639,10 @@ packages: resolve: 1.22.1 semver: 6.3.0 tsconfig-paths: 3.14.1 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color dev: true /eslint-plugin-jsdoc/39.7.5_eslint@8.33.0: @@ -7186,6 +7021,8 @@ packages: type-is: 1.6.18 utils-merge: 1.0.1 vary: 1.1.2 + transitivePeerDependencies: + - supports-color dev: true /extend-shallow/2.0.1: @@ -7211,10 +7048,6 @@ packages: /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'} @@ -7259,6 +7092,7 @@ packages: dependencies: escape-string-regexp: 5.0.0 is-unicode-supported: 1.3.0 + dev: false /file-entry-cache/6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} @@ -7304,6 +7138,8 @@ packages: parseurl: 1.3.3 statuses: 2.0.1 unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color dev: true /find-cache-dir/3.3.2: @@ -7336,14 +7172,6 @@ packages: path-exists: 4.0.0 dev: true - /find-up/6.3.0: - resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - locate-path: 7.1.1 - path-exists: 5.0.0 - dev: true - /flat-cache/3.0.4: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -7384,7 +7212,7 @@ packages: signal-exit: 3.0.7 dev: true - /fork-ts-checker-webpack-plugin/6.5.2_typescript@4.9.5+webpack@5.76.2: + /fork-ts-checker-webpack-plugin/6.5.2_a37q6j7dwawz22saey2vgkpwqm: resolution: {integrity: sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -7869,14 +7697,14 @@ packages: resolution: {integrity: sha512-eIkbX+8aAva5t6wvTMCxl90uKm5sXcjY20d+aEokHqu5I/MJECFbbkbnjUhYZVsKg1q2wuF9pnV9RrErHt5jyQ==} engines: {node: '>=14'} dependencies: - '@typescript-eslint/eslint-plugin': 5.50.0_33b838c6f29e0454280dad39d7a39534 - '@typescript-eslint/parser': 5.50.0_eslint@8.33.0+typescript@4.9.5 + '@typescript-eslint/eslint-plugin': 5.50.0_go4drrxstycfikanvu45pi4vgq + '@typescript-eslint/parser': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 eslint: 8.33.0 eslint-config-prettier: 8.6.0_eslint@8.33.0 - eslint-config-standard: 17.0.0_b9f768b46296433d2fe71aa434c1a914 - eslint-config-standard-with-typescript: 30.0.0_2c4a6b03e582732cac71a6e57a31f544 - eslint-plugin-etc: 2.0.2_eslint@8.33.0+typescript@4.9.5 - eslint-plugin-import: 2.27.5_eslint@8.33.0 + eslint-config-standard: 17.0.0_xh3wrndcszbt2l7hdksdjqnjcq + eslint-config-standard-with-typescript: 30.0.0_frfgwa7fqjzszldru3sxumpviq + eslint-plugin-etc: 2.0.2_4vsywjlpuriuw3tl5oq6zy5a64 + eslint-plugin-import: 2.27.5_ufewo3pl5nnmz6lltvjrdi2hii eslint-plugin-jsdoc: 39.7.5_eslint@8.33.0 eslint-plugin-n: 15.6.1_eslint@8.33.0 eslint-plugin-no-only-tests: 3.1.0 @@ -7890,6 +7718,8 @@ packages: typescript: 4.9.5 transitivePeerDependencies: - enquirer + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack - supports-color dev: true @@ -7897,14 +7727,14 @@ packages: resolution: {integrity: sha512-nDWeib3SxaHZRz0YhRkOnBDT5LAyMx6BXITO5xsocUJh4bSaqn7ha/h9Zlhw0WLtfxSVEXv96kjp/LQts12B9A==} engines: {node: '>=14'} dependencies: - '@typescript-eslint/eslint-plugin': 5.50.0_33b838c6f29e0454280dad39d7a39534 - '@typescript-eslint/parser': 5.50.0_eslint@8.33.0+typescript@4.9.5 + '@typescript-eslint/eslint-plugin': 5.50.0_go4drrxstycfikanvu45pi4vgq + '@typescript-eslint/parser': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 eslint: 8.33.0 eslint-config-prettier: 8.6.0_eslint@8.33.0 - eslint-config-standard: 17.0.0_b9f768b46296433d2fe71aa434c1a914 - eslint-config-standard-with-typescript: 30.0.0_2c4a6b03e582732cac71a6e57a31f544 - eslint-plugin-etc: 2.0.2_eslint@8.33.0+typescript@4.9.5 - eslint-plugin-import: 2.27.5_eslint@8.33.0 + eslint-config-standard: 17.0.0_xh3wrndcszbt2l7hdksdjqnjcq + eslint-config-standard-with-typescript: 30.0.0_frfgwa7fqjzszldru3sxumpviq + eslint-plugin-etc: 2.0.2_4vsywjlpuriuw3tl5oq6zy5a64 + eslint-plugin-import: 2.27.5_ufewo3pl5nnmz6lltvjrdi2hii eslint-plugin-jsdoc: 39.7.5_eslint@8.33.0 eslint-plugin-n: 15.6.1_eslint@8.33.0 eslint-plugin-no-only-tests: 3.1.0 @@ -7918,6 +7748,8 @@ packages: typescript: 4.9.5 transitivePeerDependencies: - enquirer + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack - supports-color dev: true @@ -8127,11 +7959,6 @@ packages: /ieee754/1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - /ignore-by-default/2.1.0: - resolution: {integrity: sha512-yiWd4GVmJp0Q6ghmM2B/V3oZGRmjrKLXvHR3TE1nfoXsmoggllfZUQe74EN0fJdPFZu2NIvNdrMMLm3OsV7Ohw==} - engines: {node: '>=10 <11 || >=12 <13 || >=14'} - dev: true - /ignore/5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} @@ -8298,11 +8125,6 @@ packages: protobufjs: 7.2.0 dev: true - /irregular-plurals/3.4.0: - resolution: {integrity: sha512-YXxECO/W6N9aMBVKMKKZ8TXESgq7EFrp3emCGGUcrYY1cgJIeZjoB75MTu8qi+NAKntS9NwPU8VdcQ3r6E6aWQ==} - engines: {node: '>=8'} - dev: true - /is-alphabetical/1.0.4: resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} dev: true @@ -8397,10 +8219,6 @@ packages: hasBin: true dev: true - /is-error/2.2.2: - resolution: {integrity: sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg==} - dev: true - /is-extendable/0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} engines: {node: '>=0.10.0'} @@ -8494,21 +8312,11 @@ packages: engines: {node: '>=6'} dev: true - /is-path-cwd/3.0.0: - resolution: {integrity: sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /is-path-inside/3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} dev: true - /is-path-inside/4.0.0: - resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} - engines: {node: '>=12'} - dev: true - /is-plain-obj/2.1.0: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} @@ -8526,15 +8334,6 @@ packages: isobject: 3.0.1 dev: true - /is-plain-object/5.0.0: - resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} - engines: {node: '>=0.10.0'} - dev: true - - /is-promise/4.0.0: - resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} - dev: true - /is-regex/1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} @@ -8809,11 +8608,6 @@ packages: resolution: {integrity: sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==} dev: true - /js-string-escape/1.0.1: - resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==} - engines: {node: '>= 0.8'} - dev: true - /js-tokens/4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -8892,7 +8686,6 @@ packages: /jsonc-parser/3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - dev: false /jsonfile/6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} @@ -9088,11 +8881,6 @@ packages: strip-bom: 3.0.0 dev: true - /load-json-file/7.0.1: - resolution: {integrity: sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /loader-runner/4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} @@ -9132,13 +8920,6 @@ packages: p-locate: 5.0.0 dev: true - /locate-path/7.1.1: - resolution: {integrity: sha512-vJXaRMJgRVD3+cUZs3Mncj2mxpt5mP0EmNOsxRSZRMlbqjvxzDEOIUWXGmavo0ZC9+tNZCBLQ66reA11nbpHZg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - p-locate: 6.0.0 - dev: true - /lodash.debounce/4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} dev: true @@ -9222,7 +9003,6 @@ packages: /lunr/2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} - dev: false /magic-string/0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} @@ -9236,13 +9016,6 @@ packages: semver: 6.3.0 dev: true - /map-age-cleaner/0.1.3: - resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} - engines: {node: '>=6'} - dependencies: - p-defer: 1.0.0 - dev: true - /markdown-escapes/1.0.4: resolution: {integrity: sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==} dev: true @@ -9251,14 +9024,6 @@ packages: resolution: {integrity: sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==} engines: {node: '>= 12'} hasBin: true - dev: false - - /matcher/5.0.0: - resolution: {integrity: sha512-s2EMBOWtXFc8dgqvoAzKJXxNHibcdJMV0gwqKUaw9E2JBJuGUK7DrNKrA6g/i+v72TT16+6sVm5mS3thaMLQUw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - escape-string-regexp: 5.0.0 - dev: true /matchit/1.1.0: resolution: {integrity: sha512-+nGYoOlfHmxe5BW5tE0EMJppXEwdSf8uBA1GTZC7Q77kbT35+VKLYJMzVNWCHSsga1ps1tPYFtFyvxvKzWVmMA==} @@ -9267,13 +9032,6 @@ packages: '@arr/every': 1.0.1 dev: true - /md5-hex/3.0.1: - resolution: {integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==} - engines: {node: '>=8'} - dependencies: - blueimp-md5: 2.19.0 - dev: true - /mdast-squeeze-paragraphs/4.0.0: resolution: {integrity: sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==} dependencies: @@ -9316,14 +9074,6 @@ packages: engines: {node: '>= 0.6'} dev: true - /mem/9.0.2: - resolution: {integrity: sha512-F2t4YIv9XQUBHt6AOJ0y7lSmP1+cY7Fm1DRh9GClTGzKST7UWLMx6ly9WZdLH/G/ppM5RL4MlQfRT71ri9t19A==} - engines: {node: '>=12.20'} - dependencies: - map-age-cleaner: 0.1.3 - mimic-fn: 4.0.0 - dev: true - /memfs/3.4.13: resolution: {integrity: sha512-omTM41g3Skpvx5dSYeZIbXKcXoAVc/AoMNwn9TKx++L/gaen/+4TTttmu8ZSch5vfVJ8uJvGbroTsIlslRg6lg==} engines: {node: '>= 4.0.0'} @@ -9553,7 +9303,6 @@ packages: engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 - dev: false /minimist/1.2.7: resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} @@ -9737,11 +9486,6 @@ packages: resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} dev: true - /nofilter/3.1.0: - resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} - engines: {node: '>=12.19'} - dev: true - /normalize-package-data/2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -9979,11 +9723,6 @@ packages: engines: {node: '>=6'} dev: true - /p-defer/1.0.0: - resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} - engines: {node: '>=4'} - dev: true - /p-defer/4.0.0: resolution: {integrity: sha512-Vb3QRvQ0Y5XnF40ZUWW7JfLogicVh/EnA5gBIvKDJoYpeI82+1E3AlB9yOcKFS0AhHrWVnAQO39fbR0G99IVEQ==} engines: {node: '>=12'} @@ -9995,13 +9734,6 @@ packages: p-timeout: 3.2.0 dev: true - /p-event/5.0.1: - resolution: {integrity: sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - p-timeout: 5.1.0 - dev: true - /p-filter/3.0.0: resolution: {integrity: sha512-QtoWLjXAW++uTX67HZQz1dbTpqBfiidsB6VtQUC9iR85S120+s0T5sO6s+B5MLzFcZkrEd/DGMmCjR+f2Qpxwg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -10027,13 +9759,6 @@ packages: yocto-queue: 0.1.0 dev: true - /p-limit/4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - yocto-queue: 1.0.0 - dev: true - /p-locate/3.0.0: resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} engines: {node: '>=6'} @@ -10053,13 +9778,6 @@ packages: p-limit: 3.1.0 dev: true - /p-locate/6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - p-limit: 4.0.0 - dev: true - /p-map/4.0.0: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} @@ -10173,11 +9891,6 @@ packages: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - /parse-ms/3.0.0: - resolution: {integrity: sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==} - engines: {node: '>=12'} - dev: true - /parse-package-name/1.0.0: resolution: {integrity: sha512-kBeTUtcj+SkyfaW4+KBe0HtsloBJ/mKTPoxpVdA57GZiPerREsUWJOhVj9anXweFiJkm5y8FG1sxFZkZ0SN6wg==} dev: true @@ -10210,11 +9923,6 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - /path-exists/5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /path-is-absolute/1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -10295,14 +10003,6 @@ packages: engines: {node: '>=4'} dev: true - /pkg-conf/4.0.0: - resolution: {integrity: sha512-7dmgi4UY4qk+4mj5Cd8v/GExPo0K+SlY+hulOSdfZ/T6jVH6//y7NtzZo5WrfhDBxuQ0jCa7fLZmNaNh7EWL/w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - find-up: 6.3.0 - load-json-file: 7.0.1 - dev: true - /pkg-dir/4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} @@ -10363,13 +10063,6 @@ packages: semver-compare: 1.0.0 dev: false - /plur/5.1.0: - resolution: {integrity: sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - irregular-plurals: 3.4.0 - dev: true - /pluralize/8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} @@ -10467,7 +10160,7 @@ packages: postcss-selector-parser: 6.0.11 dev: true - /postcss-loader/7.0.2_postcss@8.4.21+webpack@5.76.2: + /postcss-loader/7.0.2_6puvukfnwbwq425eep7g4z27be: resolution: {integrity: sha512-fUJzV/QH7NXUAqV8dWJ9Lg4aTkDCezpTS5HgJ2DvqznexTbSTxgi/dTECvTZ15BwKTtk8G/bqI/QTu2HPd3ZCg==} engines: {node: '>= 14.15.0'} peerDependencies: @@ -10859,13 +10552,6 @@ packages: resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} dev: false - /pretty-ms/8.0.0: - resolution: {integrity: sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==} - engines: {node: '>=14.16'} - dependencies: - parse-ms: 3.0.0 - dev: true - /pretty-time/1.1.0: resolution: {integrity: sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==} engines: {node: '>=4'} @@ -11034,9 +10720,15 @@ packages: strip-json-comments: 2.0.1 dev: true - /react-dev-utils/12.0.1_typescript@4.9.5+webpack@5.76.2: + /react-dev-utils/12.0.1_a37q6j7dwawz22saey2vgkpwqm: resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} + peerDependencies: + typescript: '>=2.7' + webpack: '>=4' + peerDependenciesMeta: + typescript: + optional: true dependencies: '@babel/code-frame': 7.18.6 address: 1.2.2 @@ -11047,7 +10739,7 @@ packages: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.2_typescript@4.9.5+webpack@5.76.2 + fork-ts-checker-webpack-plugin: 6.5.2_a37q6j7dwawz22saey2vgkpwqm global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -11062,11 +10754,12 @@ packages: shell-quote: 1.8.0 strip-ansi: 6.0.1 text-table: 0.2.0 + typescript: 4.9.5 + webpack: 5.76.2 transitivePeerDependencies: - eslint - - typescript + - supports-color - vue-template-compiler - - webpack dev: true /react-error-overlay/6.0.11: @@ -11082,6 +10775,11 @@ packages: peerDependencies: react: ^16.6.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true dependencies: '@babel/runtime': 7.21.0 invariant: 2.2.4 @@ -11094,12 +10792,15 @@ packages: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: true - /react-loadable-ssr-addon-v5-slorber/1.0.1_ae04c30fda2e21f7f97904e752cda116: + /react-loadable-ssr-addon-v5-slorber/1.0.1_vycmgd62fyq7p6lzattvftnbcy: resolution: {integrity: sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==} engines: {node: '>=10.13.0'} peerDependencies: react-loadable: '*' webpack: '>=4.41.1 || 5.x' + peerDependenciesMeta: + react-loadable: + optional: true dependencies: '@babel/runtime': 7.21.0 react-loadable: /@docusaurus/react-loadable/5.5.2 @@ -11111,6 +10812,11 @@ packages: peerDependencies: react: '>=15' react-router: '>=5' + peerDependenciesMeta: + react: + optional: true + react-router: + optional: true dependencies: '@babel/runtime': 7.21.0 react-router: 5.3.4 @@ -11120,6 +10826,9 @@ packages: resolution: {integrity: sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==} peerDependencies: react: '>=15' + peerDependenciesMeta: + react: + optional: true dependencies: '@babel/runtime': 7.21.0 history: 4.10.1 @@ -11134,6 +10843,9 @@ packages: resolution: {integrity: sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==} peerDependencies: react: '>=15' + peerDependenciesMeta: + react: + optional: true dependencies: '@babel/runtime': 7.21.0 history: 4.10.1 @@ -11409,22 +11121,10 @@ packages: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} 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-pathname/3.0.0: resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} dev: true @@ -11689,13 +11389,8 @@ packages: on-finished: 2.4.1 range-parser: 1.2.1 statuses: 2.0.1 - dev: true - - /serialize-error/7.0.1: - resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} - engines: {node: '>=10'} - dependencies: - type-fest: 0.13.1 + transitivePeerDependencies: + - supports-color dev: true /serialize-javascript/6.0.0: @@ -11734,6 +11429,8 @@ packages: http-errors: 1.6.3 mime-types: 2.1.35 parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color dev: true /serve-static/1.15.0: @@ -11744,6 +11441,8 @@ packages: escape-html: 1.0.3 parseurl: 1.3.3 send: 0.18.0 + transitivePeerDependencies: + - supports-color dev: true /set-blocking/2.0.0: @@ -11817,7 +11516,6 @@ packages: jsonc-parser: 3.2.0 vscode-oniguruma: 1.7.0 vscode-textmate: 8.0.0 - dev: false /side-channel/1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} @@ -12027,13 +11725,6 @@ packages: resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} dev: true - /stack-utils/2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - dependencies: - escape-string-regexp: 2.0.0 - dev: true - /stackframe/1.3.4: resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} dev: false @@ -12249,16 +11940,6 @@ packages: postcss-selector-parser: 6.0.11 dev: true - /supertap/3.0.1: - resolution: {integrity: sha512-u1ZpIBCawJnO+0QePsEiOknOfCRq0yERxiAchT0i4li0WHNUJbf0evXXSXOcCAR4M8iMDoajXYmstm/qO81Isw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - indent-string: 5.0.0 - js-yaml: 3.14.1 - serialize-error: 7.0.1 - strip-ansi: 7.0.1 - dev: true - /supports-color/5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -12363,11 +12044,6 @@ packages: engines: {node: '>=8'} dev: true - /temp-dir/3.0.0: - resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} - engines: {node: '>=14.16'} - dev: true - /tempy/3.0.0: resolution: {integrity: sha512-B2I9X7+o2wOaW4r/CWMkpOO9mdiTRCxXNgob6iGvPmfPWgH/KyUD6Uy5crtWBxIBe3YrNZKR2lSzv1JJKWD4vA==} engines: {node: '>=14.16'} @@ -12433,11 +12109,6 @@ packages: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} dev: true - /time-zone/1.0.0: - resolution: {integrity: sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==} - engines: {node: '>=4'} - dev: true - /tiny-invariant/1.3.1: resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} dev: true @@ -12534,7 +12205,7 @@ packages: /tslib/2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} - /tsutils-etc/1.4.1_tsutils@3.21.0+typescript@4.9.5: + /tsutils-etc/1.4.1_dw2ve3pa3py4wrhanasku2jsqi: resolution: {integrity: sha512-6UPYgc7OXcIW5tFxlsZF3OVSBvDInl/BkS3Xsu64YITXk7WrnWTVByKWPCThFDBp5gl5IGHOzGMdQuDCE7OL4g==} hasBin: true peerDependencies: @@ -12570,11 +12241,6 @@ packages: prelude-ls: 1.2.1 dev: true - /type-fest/0.13.1: - resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} - engines: {node: '>=10'} - dev: true - /type-fest/0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} @@ -12660,13 +12326,11 @@ packages: minimatch: 7.4.2 shiki: 0.14.1 typescript: 4.9.5 - dev: false /typescript/4.9.5: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true - dev: true /uglify-js/3.17.4: resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} @@ -12866,7 +12530,7 @@ packages: dependencies: punycode: 2.3.0 - /url-loader/4.1.1_file-loader@6.2.0+webpack@5.76.2: + /url-loader/4.1.1_35ful32yo3wjb53le3l6xb5doy: resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -12977,11 +12641,9 @@ packages: /vscode-oniguruma/1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} - dev: false /vscode-textmate/8.0.0: resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} - dev: false /wait-on/6.0.1: resolution: {integrity: sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==} @@ -13207,11 +12869,6 @@ packages: engines: {node: '>=0.8.0'} dev: true - /well-known-symbols/2.0.0: - resolution: {integrity: sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==} - engines: {node: '>=6'} - dev: true - /whatwg-url/5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: @@ -13402,14 +13059,6 @@ packages: typedarray-to-buffer: 3.1.5 dev: true - /write-file-atomic/5.0.0: - resolution: {integrity: sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - dev: true - /ws/7.5.9: resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} engines: {node: '>=8.3.0'} @@ -13565,11 +13214,6 @@ packages: engines: {node: '>=10'} dev: true - /yocto-queue/1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - dev: true - /youch/2.2.2: resolution: {integrity: sha512-/FaCeG3GkuJwaMR34GHVg0l8jCbafZLHiFowSjqLlqhC6OMyf2tPJBu8UirF7/NI9X/R5ai4QfEKUCOxMAGxZQ==} dependencies: