From 6c9ae2713f0f2637494bcc50e23016b1374512b7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 Jun 2022 11:35:11 +0000 Subject: [PATCH] chore(deps): update socketcluster to v16 (major) (#1167) * chore(deps): update socketcluster to v16 * Use the right packages * stash * stash * stash * Fixes * Fixes Co-authored-by: Renovate Bot Co-authored-by: Nathan Bierema --- packages/redux-devtools-app/package.json | 4 +- .../redux-devtools-app/src/actions/index.ts | 2 +- .../src/constants/socketActionTypes.ts | 2 +- .../redux-devtools-app/src/middlewares/api.ts | 169 +++-- .../redux-devtools-app/src/reducers/socket.ts | 2 +- packages/redux-devtools-cli/package.json | 9 +- .../src/bin/redux-devtools.ts | 7 +- .../redux-devtools-cli/src/db/connector.ts | 4 +- packages/redux-devtools-cli/src/index.ts | 113 ++- packages/redux-devtools-cli/src/routes.ts | 11 +- packages/redux-devtools-cli/src/store.ts | 4 +- packages/redux-devtools-cli/src/worker.ts | 86 --- .../test/integration.spec.ts | 257 +++---- packages/redux-devtools-remote/package.json | 4 +- .../redux-devtools-remote/src/devTools.ts | 107 +-- pnpm-lock.yaml | 673 +++++++----------- 16 files changed, 644 insertions(+), 810 deletions(-) delete mode 100644 packages/redux-devtools-cli/src/worker.ts diff --git a/packages/redux-devtools-app/package.json b/packages/redux-devtools-app/package.json index 3d00267b..d1f0e866 100644 --- a/packages/redux-devtools-app/package.json +++ b/packages/redux-devtools-app/package.json @@ -64,7 +64,7 @@ "react-redux": "^8.0.2", "redux": "^4.2.0", "redux-persist": "^6.0.0", - "socketcluster-client": "^14.3.2" + "socketcluster-client": "^16.1.1" }, "devDependencies": { "@babel/cli": "^7.17.10", @@ -84,7 +84,7 @@ "@types/node": "^16.11.38", "@types/react": "^18.0.12", "@types/react-dom": "^18.0.5", - "@types/socketcluster-client": "^13.0.5", + "@types/socketcluster-client": "^16.0.0", "@types/styled-components": "^5.1.25", "@types/testing-library__jest-dom": "^5.14.3", "@types/webpack-env": "^1.17.0", diff --git a/packages/redux-devtools-app/src/actions/index.ts b/packages/redux-devtools-app/src/actions/index.ts index 45d53105..5f5fe4a0 100644 --- a/packages/redux-devtools-app/src/actions/index.ts +++ b/packages/redux-devtools-app/src/actions/index.ts @@ -1,5 +1,5 @@ import { SchemeName, ThemeName } from '@redux-devtools/ui'; -import { AuthStates, States } from 'socketcluster-client/lib/scclientsocket'; +import { AuthStates, States } from 'socketcluster-client/lib/clientsocket'; import { REHYDRATE } from 'redux-persist'; import { CHANGE_SECTION, diff --git a/packages/redux-devtools-app/src/constants/socketActionTypes.ts b/packages/redux-devtools-app/src/constants/socketActionTypes.ts index afe2ca33..df6a28d9 100644 --- a/packages/redux-devtools-app/src/constants/socketActionTypes.ts +++ b/packages/redux-devtools-app/src/constants/socketActionTypes.ts @@ -16,7 +16,7 @@ export const { AUTHENTICATED, PENDING, UNAUTHENTICATED, -} = socketCluster.SCClientSocket as unknown as States; +} = socketCluster.AGClientSocket as unknown as States; export const CONNECT_REQUEST = 'socket/CONNECT_REQUEST'; export const CONNECT_SUCCESS = 'socket/CONNECT_SUCCESS'; export const CONNECT_ERROR = 'socket/CONNECT_ERROR'; diff --git a/packages/redux-devtools-app/src/middlewares/api.ts b/packages/redux-devtools-app/src/middlewares/api.ts index 5c136dec..ce64bdc0 100644 --- a/packages/redux-devtools-app/src/middlewares/api.ts +++ b/packages/redux-devtools-app/src/middlewares/api.ts @@ -1,4 +1,4 @@ -import socketCluster, { SCClientSocket } from 'socketcluster-client'; +import socketClusterClient, { AGClientSocket } from 'socketcluster-client'; import { stringify } from 'jsan'; import { Dispatch, MiddlewareAPI } from 'redux'; import * as actions from '../constants/socketActionTypes'; @@ -25,11 +25,16 @@ import { import { nonReduxDispatch } from '../utils/monitorActions'; import { StoreState } from '../reducers'; -let socket: SCClientSocket; +let socket: AGClientSocket; let store: MiddlewareAPI, StoreState>; function emit({ message: type, id, instanceId, action, state }: EmitAction) { - socket.emit(id ? `sc-${id}` : 'respond', { type, action, state, instanceId }); + void socket.transmit(id ? `sc-${id}` : 'respond', { + type, + action, + state, + instanceId, + }); } function startMonitoring(channel: string) { @@ -120,7 +125,7 @@ function monitoring(request: MonitoringRequest) { instanceId === instances.selected && (request.type === 'ACTION' || request.type === 'STATE') ) { - socket.emit('respond', { + void socket.transmit('respond', { type: 'SYNC', state: stringify(instances.states[instanceId]), id: request.id, @@ -134,65 +139,84 @@ function subscribe( subscription: typeof UPDATE_STATE | typeof UPDATE_REPORTS ) { const channel = socket.subscribe(channelName); - if (subscription === UPDATE_STATE) channel.watch(monitoring); - else { + if (subscription === UPDATE_STATE) { + void (async () => { + for await (const data of channel) { + monitoring(data as MonitoringRequest); + } + })(); + } else { const watcher = (request: UpdateReportsRequest) => { store.dispatch({ type: subscription, request }); }; - channel.watch(watcher); - socket.on(channelName, watcher); + void (async () => { + for await (const data of channel) { + watcher(data as UpdateReportsRequest); + } + })(); } } function handleConnection() { - socket.on('connect', (status) => { - store.dispatch({ - type: actions.CONNECT_SUCCESS, - payload: { - id: status.id, - authState: socket.authState, - socketState: socket.state, - }, - error: status.authError, - }); - if (socket.authState !== actions.AUTHENTICATED) { - store.dispatch({ type: actions.AUTH_REQUEST }); + void (async () => { + for await (const data of socket.listener('connect')) { + store.dispatch({ + type: actions.CONNECT_SUCCESS, + payload: { + id: data.id, + authState: socket.authState, + socketState: socket.state, + }, + // @ts-expect-error Is this legitimate? + error: data.authError, + }); + if (socket.authState !== actions.AUTHENTICATED) { + store.dispatch({ type: actions.AUTH_REQUEST }); + } } - }); - socket.on('disconnect', (code) => { - store.dispatch({ type: actions.DISCONNECTED, code }); - }); + })(); + void (async () => { + for await (const data of socket.listener('disconnect')) { + store.dispatch({ type: actions.DISCONNECTED, code: data.code }); + } + })(); - socket.on('subscribe', (channel) => { - store.dispatch({ type: actions.SUBSCRIBE_SUCCESS, channel }); - }); - socket.on('unsubscribe', (channel) => { - socket.unsubscribe(channel); - socket.unwatch(channel); - socket.off(channel); - store.dispatch({ type: actions.UNSUBSCRIBE, channel }); - }); - socket.on('subscribeFail', (error) => { - store.dispatch({ - type: actions.SUBSCRIBE_ERROR, - error, - status: 'subscribeFail', - }); - }); - socket.on('dropOut', (error) => { - store.dispatch({ type: actions.SUBSCRIBE_ERROR, error, status: 'dropOut' }); - }); + void (async () => { + for await (const data of socket.listener('subscribe')) { + store.dispatch({ + type: actions.SUBSCRIBE_SUCCESS, + channel: data.channel, + }); + } + })(); + void (async () => { + for await (const data of socket.listener('unsubscribe')) { + void socket.unsubscribe(data.channel); + store.dispatch({ type: actions.UNSUBSCRIBE, channel: data.channel }); + } + })(); + void (async () => { + for await (const data of socket.listener('subscribeFail')) { + store.dispatch({ + type: actions.SUBSCRIBE_ERROR, + error: data.error, + status: 'subscribeFail', + }); + } + })(); - socket.on('error', (error) => { - store.dispatch({ type: actions.CONNECT_ERROR, error }); - }); + void (async () => { + for await (const data of socket.listener('error')) { + store.dispatch({ type: actions.CONNECT_ERROR, error: data.error }); + } + })(); } function connect() { if (process.env.NODE_ENV === 'test') return; const connection = store.getState().connection; try { - socket = socketCluster.create(connection.options); + socket = socketClusterClient.create(connection.options); handleConnection(); } catch (error) { store.dispatch({ type: actions.CONNECT_ERROR, error: error as Error }); @@ -205,43 +229,42 @@ function connect() { function disconnect() { if (socket) { socket.disconnect(); - socket.off(); } } function login() { - socket.emit('login', {}, (error: Error, baseChannel: string) => { - if (error) { - store.dispatch({ type: actions.AUTH_ERROR, error }); - return; + void (async () => { + try { + const baseChannel = (await socket.invoke('login', {})) as string; + store.dispatch({ type: actions.AUTH_SUCCESS, baseChannel }); + store.dispatch({ + type: actions.SUBSCRIBE_REQUEST, + channel: baseChannel, + subscription: UPDATE_STATE, + }); + store.dispatch({ + type: actions.SUBSCRIBE_REQUEST, + channel: 'report', + subscription: UPDATE_REPORTS, + }); + } catch (error) { + store.dispatch({ type: actions.AUTH_ERROR, error: error as Error }); } - store.dispatch({ type: actions.AUTH_SUCCESS, baseChannel }); - store.dispatch({ - type: actions.SUBSCRIBE_REQUEST, - channel: baseChannel, - subscription: UPDATE_STATE, - }); - store.dispatch({ - type: actions.SUBSCRIBE_REQUEST, - channel: 'report', - subscription: UPDATE_REPORTS, - }); - }); + })(); } function getReport(reportId: unknown) { - socket.emit( - 'getReport', - reportId, - (error: Error, data: { payload: string }) => { - if (error) { - store.dispatch({ type: GET_REPORT_ERROR, error }); - return; - } + void (async () => { + try { + const data = (await socket.invoke('getReport', reportId)) as { + payload: string; + }; store.dispatch({ type: GET_REPORT_SUCCESS, data }); store.dispatch(importState(data.payload)); + } catch (error) { + store.dispatch({ type: GET_REPORT_ERROR, error: error as Error }); } - ); + })(); } export function api(inStore: MiddlewareAPI, StoreState>) { diff --git a/packages/redux-devtools-app/src/reducers/socket.ts b/packages/redux-devtools-app/src/reducers/socket.ts index cc7e4386..a4390453 100644 --- a/packages/redux-devtools-app/src/reducers/socket.ts +++ b/packages/redux-devtools-app/src/reducers/socket.ts @@ -1,4 +1,4 @@ -import { AuthStates, States } from 'socketcluster-client/lib/scclientsocket'; +import { AuthStates, States } from 'socketcluster-client/lib/clientsocket'; import * as actions from '../constants/socketActionTypes'; import { StoreAction } from '../actions'; diff --git a/packages/redux-devtools-cli/package.json b/packages/redux-devtools-cli/package.json index f20d9081..58ab88a2 100644 --- a/packages/redux-devtools-cli/package.json +++ b/packages/redux-devtools-cli/package.json @@ -60,7 +60,7 @@ "react-dom": "^18.1.0", "react-is": "^18.1.0", "semver": "^7.3.7", - "socketcluster": "^14.4.2", + "socketcluster-server": "^16.2.1", "sqlite3": "^5.0.8", "styled-components": "^5.3.5", "uuid": "^8.3.2" @@ -76,9 +76,8 @@ "@types/morgan": "^1.9.3", "@types/node": "^16.11.38", "@types/semver": "^7.3.9", - "@types/socketcluster": "^14.0.4", - "@types/socketcluster-client": "^13.0.5", - "@types/socketcluster-server": "^14.2.6", + "@types/socketcluster-client": "^16.0.0", + "@types/socketcluster-server": "^16.1.0", "@types/styled-components": "^5.1.25", "@types/supertest": "^2.0.12", "@types/uuid": "^8.3.4", @@ -90,7 +89,7 @@ "jest": "^27.5.1", "ncp": "^2.0.0", "rimraf": "^3.0.2", - "socketcluster-client": "^14.3.2", + "socketcluster-client": "^16.1.1", "supertest": "^6.2.3", "ts-jest": "^27.1.5", "typescript": "~4.7.3" diff --git a/packages/redux-devtools-cli/src/bin/redux-devtools.ts b/packages/redux-devtools-cli/src/bin/redux-devtools.ts index 049d245b..74ce0166 100644 --- a/packages/redux-devtools-cli/src/bin/redux-devtools.ts +++ b/packages/redux-devtools-cli/src/bin/redux-devtools.ts @@ -88,10 +88,9 @@ if (argv.injectserver) { } // eslint-disable-next-line @typescript-eslint/no-floating-promises -server(argv).then(function (r) { +server(argv).then(async function (r) { if (argv.open && argv.open !== 'false') { - r.on('ready', async function () { - await openApp(argv.open as string, options); - }); + await r.listener('ready').once(); + await openApp(argv.open as string, options); } }); diff --git a/packages/redux-devtools-cli/src/db/connector.ts b/packages/redux-devtools-cli/src/db/connector.ts index 64d78cbb..c07a4d92 100644 --- a/packages/redux-devtools-cli/src/db/connector.ts +++ b/packages/redux-devtools-cli/src/db/connector.ts @@ -1,8 +1,8 @@ import path from 'path'; import knexModule, { Knex } from 'knex'; -import { SCServer } from 'socketcluster-server'; +import { AGServer } from 'socketcluster-server'; -export default function connector(options: SCServer.SCServerOptions) { +export default function connector(options: AGServer.AGServerOptions) { const dbOptions = options.dbOptions as Knex.Config; dbOptions.useNullAsDefault = true; if (!(dbOptions as any).migrate) { diff --git a/packages/redux-devtools-cli/src/index.ts b/packages/redux-devtools-cli/src/index.ts index 0ec675ce..24b8104e 100644 --- a/packages/redux-devtools-cli/src/index.ts +++ b/packages/redux-devtools-cli/src/index.ts @@ -1,6 +1,10 @@ +import express from 'express'; +import http from 'http'; import getPort from 'getport'; -import SocketCluster from 'socketcluster'; +import socketClusterServer from 'socketcluster-server'; import getOptions, { Options } from './options'; +import routes from './routes'; +import createStore from './store'; // var LOG_LEVEL_NONE = 0; const LOG_LEVEL_ERROR = 1; @@ -8,16 +12,14 @@ const LOG_LEVEL_WARN = 2; const LOG_LEVEL_INFO = 3; export interface ExtendedOptions extends Options { - workerController: string; allowClientPublish: boolean; } export default function (argv: { [arg: string]: any }): Promise<{ portAlreadyUsed?: boolean; - on: (status: 'ready', cb: (() => void) | (() => Promise)) => void; + listener: (eventName: 'ready') => { once(): Promise }; }> { const options = Object.assign(getOptions(argv), { - workerController: __dirname + '/worker.js', allowClientPublish: false, }); const port = options.port; @@ -39,8 +41,12 @@ export default function (argv: { [arg: string]: any }): Promise<{ } resolve({ portAlreadyUsed: true, - on: function (status: string, cb: () => void) { - cb(); + listener: function (eventName: 'ready') { + return { + once() { + return Promise.resolve(); + }, + }; }, }); } else { @@ -48,7 +54,100 @@ export default function (argv: { [arg: string]: any }): Promise<{ console.log('[ReduxDevTools] Start server...'); console.log('-'.repeat(80) + '\n'); } - resolve(new SocketCluster(options)); + const httpServer = http.createServer(); + const agServer = socketClusterServer.attach(httpServer, options); + + const app = express(); + httpServer.on('request', app); + const store = createStore(options); + app.use(routes(options, store, agServer)); + + agServer.setMiddleware( + agServer.MIDDLEWARE_INBOUND, + // eslint-disable-next-line @typescript-eslint/no-misused-promises + async (middlewareStream) => { + for await (const action of middlewareStream) { + if (action.type === action.TRANSMIT) { + const channel = action.receiver; + const data = action.data; + if ( + channel.substring(0, 3) === 'sc-' || + channel === 'respond' || + channel === 'log' + ) { + void agServer.exchange.transmitPublish(channel, data); + } else if (channel === 'log-noid') { + void agServer.exchange.transmitPublish('log', { + id: action.socket.id, + data: data, + }); + } + } else if (action.type === action.SUBSCRIBE) { + if (action.channel === 'report') { + store + .list() + .then(function (data) { + void agServer.exchange.transmitPublish('report', { + type: 'list', + data: data, + }); + }) + .catch(function (error) { + console.error(error); // eslint-disable-line no-console + }); + } + } + action.allow(); + } + } + ); + + void (async () => { + for await (const { socket } of agServer.listener('connection')) { + let channelToWatch: string, channelToEmit: string; + void (async () => { + for await (const request of socket.procedure('login')) { + const credentials = request.data; + if (credentials === 'master') { + channelToWatch = 'respond'; + channelToEmit = 'log'; + } else { + channelToWatch = 'log'; + channelToEmit = 'respond'; + } + request.end(channelToWatch); + } + })(); + void (async () => { + for await (const request of socket.procedure('getReport')) { + const id = request.data as string; + store + .get(id) + .then(function (data) { + request.end(data); + }) + .catch(function (error) { + console.error(error); // eslint-disable-line no-console + }); + } + })(); + void (async () => { + for await (const data of socket.listener('disconnect')) { + const channel = agServer.exchange.channel('sc-' + socket.id); + channel.unsubscribe(); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + void agServer.exchange.transmitPublish(channelToEmit!, { + id: socket.id, + type: 'DISCONNECTED', + }); + } + })(); + } + })(); + + httpServer.listen(options.port); + // @ts-expect-error Shouldn't there be a 'ready' event? + resolve(agServer); } /* eslint-enable no-console */ }); diff --git a/packages/redux-devtools-cli/src/routes.ts b/packages/redux-devtools-cli/src/routes.ts index e0b7b0a6..9ea4766a 100644 --- a/packages/redux-devtools-cli/src/routes.ts +++ b/packages/redux-devtools-cli/src/routes.ts @@ -5,7 +5,7 @@ import morgan from 'morgan'; import * as http from 'http'; import bodyParser from 'body-parser'; import cors from 'cors'; -import { SCServer } from 'socketcluster-server'; +import { AGServer } from 'socketcluster-server'; import { ApolloServer } from 'apollo-server-express'; import { AddData, ReportBaseFields, Store } from './store'; import { resolvers, schema } from './api/schema'; @@ -21,9 +21,9 @@ function serveUmdModule(name: string) { } function routes( - options: SCServer.SCServerOptions, + options: AGServer.AGServerOptions, store: Store, - scServer: SCServer + scServer: AGServer ): Router { const limit = options.maxRequestBody; const logHTTPRequests = options.logHTTPRequests; @@ -65,7 +65,8 @@ function routes( serveUmdModule('@redux-devtools/app'); app.get('/port.js', function (req, res) { - res.send(`reduxDevToolsPort = ${options.port!}`); + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions + res.send(`reduxDevToolsPort = ${options.port}`); }); app.get('*', function (req, res) { res.sendFile(path.join(__dirname, '../app/index.html')); @@ -108,7 +109,7 @@ function routes( id: (r as ReportBaseFields).id, error: (r as { error: string }).error, }); - scServer.exchange.publish('report', { + void scServer.exchange.transmitPublish('report', { type: 'add', data: r, }); diff --git a/packages/redux-devtools-cli/src/store.ts b/packages/redux-devtools-cli/src/store.ts index 08da6b76..0d6edd99 100644 --- a/packages/redux-devtools-cli/src/store.ts +++ b/packages/redux-devtools-cli/src/store.ts @@ -1,6 +1,6 @@ import { v4 as uuidV4 } from 'uuid'; import pick from 'lodash/pick'; -import { SCServer } from 'socketcluster-server'; +import { AGServer } from 'socketcluster-server'; import { Knex } from 'knex'; import connector from './db/connector'; @@ -139,7 +139,7 @@ export interface Store { add: (data: AddData) => Promise; } -function createStore(options: SCServer.SCServerOptions): Store { +function createStore(options: AGServer.AGServerOptions): Store { knex = connector(options); return { diff --git a/packages/redux-devtools-cli/src/worker.ts b/packages/redux-devtools-cli/src/worker.ts deleted file mode 100644 index b6597e09..00000000 --- a/packages/redux-devtools-cli/src/worker.ts +++ /dev/null @@ -1,86 +0,0 @@ -import SCWorker from 'socketcluster/scworker'; -import express from 'express'; -import routes from './routes'; -import createStore from './store'; - -const app = express(); - -class Worker extends SCWorker { - run() { - const httpServer = this.httpServer; - const scServer = this.scServer; - const options = this.options; - const store = createStore(options); - - httpServer.on('request', app); - - app.use(routes(options, store, scServer)); - - scServer.addMiddleware(scServer.MIDDLEWARE_EMIT, function (req, next) { - const channel = req.event; - const data = req.data; - if ( - channel.substr(0, 3) === 'sc-' || - channel === 'respond' || - channel === 'log' - ) { - scServer.exchange.publish(channel, data); - } else if (channel === 'log-noid') { - scServer.exchange.publish('log', { id: req.socket.id, data: data }); - } - next(); - }); - - scServer.addMiddleware(scServer.MIDDLEWARE_SUBSCRIBE, function (req, next) { - next(); - if (req.channel === 'report') { - store - .list() - .then(function (data) { - req.socket.emit(req.channel!, { type: 'list', data: data }); - }) - .catch(function (error) { - console.error(error); // eslint-disable-line no-console - }); - } - }); - - scServer.on('connection', function (socket) { - let channelToWatch: string, channelToEmit: string; - socket.on('login', function (this: Worker, credentials, respond) { - if (credentials === 'master') { - channelToWatch = 'respond'; - channelToEmit = 'log'; - } else { - channelToWatch = 'log'; - channelToEmit = 'respond'; - } - this.exchange.subscribe('sc-' + socket.id).watch(function (msg) { - socket.emit(channelToWatch, msg); - }); - respond(null, channelToWatch); - }); - socket.on('getReport', function (id: string, respond) { - store - .get(id) - .then(function (data) { - respond(null, data); - }) - .catch(function (error) { - console.error(error); // eslint-disable-line no-console - }); - }); - socket.on('disconnect', function (this: Worker) { - const channel = this.exchange.channel('sc-' + socket.id); - channel.unsubscribe(); - channel.destroy(); - scServer.exchange.publish(channelToEmit, { - id: socket.id, - type: 'DISCONNECTED', - }); - }); - }); - } -} - -new Worker(); diff --git a/packages/redux-devtools-cli/test/integration.spec.ts b/packages/redux-devtools-cli/test/integration.spec.ts index ec1482f7..0f81d11f 100644 --- a/packages/redux-devtools-cli/test/integration.spec.ts +++ b/packages/redux-devtools-cli/test/integration.spec.ts @@ -1,6 +1,6 @@ import childProcess from 'child_process'; import request from 'supertest'; -import scClient from 'socketcluster-client'; +import socketClusterClient from 'socketcluster-client'; jest.setTimeout(10000); @@ -44,20 +44,30 @@ describe('Server', function () { }); describe('Realtime monitoring', function () { - let socket: scClient.SCClientSocket, - socket2: scClient.SCClientSocket, + let socket: socketClusterClient.AGClientSocket, + socket2: socketClusterClient.AGClientSocket, channel; beforeAll(function () { - socket = scClient.connect({ hostname: 'localhost', port: 8000 }); + socket = socketClusterClient.create({ + hostname: 'localhost', + port: 8000, + }); socket.connect(); - socket.on('error', function (error) { - console.error('Socket1 error', error); // eslint-disable-line no-console + void (async () => { + for await (const data of socket.listener('error')) { + console.error('Socket1 error', data.error); // eslint-disable-line no-console + } + })(); + socket2 = socketClusterClient.create({ + hostname: 'localhost', + port: 8000, }); - socket2 = scClient.connect({ hostname: 'localhost', port: 8000 }); socket2.connect(); - socket.on('error', function (error) { - console.error('Socket2 error', error); // eslint-disable-line no-console - }); + void (async () => { + for await (const data of socket2.listener('error')) { + console.error('Socket2 error', data.error); // eslint-disable-line no-console + } + })(); }); afterAll(function () { @@ -65,73 +75,50 @@ describe('Server', function () { socket2.disconnect(); }); - it('should connect', function () { - return new Promise((done) => { - socket.on('connect', function (status) { - expect(status.id).toBeTruthy(); - done(); - }); - }); + it('should connect', async function () { + const data = await socket.listener('connect').once(); + expect(data.id).toBeTruthy(); }); - it('should login', function () { - socket.emit( - 'login', - 'master', - function (error: Error | undefined, channelName: string) { - if (error) { - /* eslint-disable-next-line no-console */ - console.log(error); - return; - } - expect(channelName).toBe('respond'); - channel = socket.subscribe(channelName); - expect(channel.SUBSCRIBED).toBe('subscribed'); - } - ); + it('should login', async function () { + try { + const channelName = (await socket.invoke('login', 'master')) as string; + expect(channelName).toBe('respond'); + channel = socket.subscribe(channelName); + expect(channel.SUBSCRIBED).toBe('subscribed'); + } catch (error) { + console.log(error); + } }); - it('should send message', function () { - return new Promise((done) => { - const data = { - type: 'ACTION', - payload: { - todos: 'do some', - }, + it('should send message', async function () { + const data = { + type: 'ACTION', + payload: { + todos: 'do some', + }, + action: { + timestamp: 1483349708506, action: { - timestamp: 1483349708506, - action: { - type: 'ADD_TODO', - text: 'hggg', - }, + type: 'ADD_TODO', + text: 'hggg', }, - instanceId: 'tAmA7H5fclyWhvizAAAi', - name: 'LoggerInstance', - id: 'tAmA7H5fclyWhvizAAAi', - }; + }, + instanceId: 'tAmA7H5fclyWhvizAAAi', + name: 'LoggerInstance', + id: 'tAmA7H5fclyWhvizAAAi', + }; - socket2.emit( - 'login', - '', - function (error: Error | undefined, channelName: string) { - if (error) { - /* eslint-disable-next-line no-console */ - console.log(error); - return; - } - expect(channelName).toBe('log'); - const channel2 = socket2.subscribe(channelName); - expect(channel2.SUBSCRIBED).toBe('subscribed'); - channel2.on('subscribe', function () { - channel2.watch(function (message) { - expect(message).toEqual(data); - done(); - }); - socket.emit(channelName, data); - }); - } - ); - }); + try { + const channelName = (await socket.invoke('login', '')) as string; + expect(channelName).toBe('log'); + const channel2 = socket2.subscribe(channelName); + expect(channel2.SUBSCRIBED).toBe('subscribed'); + const message = await channel2.listener('subscribe').once(); + expect(message).toEqual(data); + } catch (error) { + console.log(error); + } }); }); @@ -149,97 +136,61 @@ describe('Server', function () { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) ' + 'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36', }; - it('should add a report', function () { - return new Promise((done) => { - // eslint-disable-next-line @typescript-eslint/no-floating-promises - request('http://localhost:8000') - .post('/') - .send(report) - .set('Accept', 'application/json') - .expect('Content-Type', /application\/json/) - .expect(200) - .then(function (res: { body: { id: string } }) { - id = res.body.id; - expect(id).toBeTruthy(); - done(); - }); - }); + it('should add a report', async function () { + const res = await request('http://localhost:8000') + .post('/') + .send(report) + .set('Accept', 'application/json') + .expect('Content-Type', /application\/json/) + .expect(200); + id = res.body.id; + expect(id).toBeTruthy(); }); - it('should get the report', function () { - return new Promise((done) => { - // eslint-disable-next-line @typescript-eslint/no-floating-promises - request('http://localhost:8000') - .post('/') - .send({ - op: 'get', - id: id, - }) - .set('Accept', 'application/json') - .expect('Content-Type', /application\/json/) - .expect(200) - .then(function (res: { body: unknown }) { - expect(res.body).toMatchObject(report); - done(); - }); - }); + it('should get the report', async function () { + const res = await request('http://localhost:8000') + .post('/') + .send({ + op: 'get', + id: id, + }) + .set('Accept', 'application/json') + .expect('Content-Type', /application\/json/) + .expect(200); + expect(res.body).toMatchObject(report); }); - it('should list reports', function () { - return new Promise((done) => { - // eslint-disable-next-line @typescript-eslint/no-floating-promises - request('http://localhost:8000') - .post('/') - .send({ - op: 'list', - }) - .set('Accept', 'application/json') - .expect('Content-Type', /application\/json/) - .expect(200) - .then(function (res: { - body: { id: string; title: string | null; added: string | null }[]; - }) { - expect(res.body).toHaveLength(1); - expect(res.body[0].id).toBe(id); - expect(res.body[0].title).toBe('Test report'); - expect(res.body[0].added).toBeTruthy(); - done(); - }); - }); + it('should list reports', async function () { + const res = await request('http://localhost:8000') + .post('/') + .send({ + op: 'list', + }) + .set('Accept', 'application/json') + .expect('Content-Type', /application\/json/) + .expect(200); + expect(res.body).toHaveLength(1); + expect(res.body[0].id).toBe(id); + expect(res.body[0].title).toBe('Test report'); + expect(res.body[0].added).toBeTruthy(); }); }); describe('GraphQL backend', function () { - it('should get the report', function () { - return new Promise((done) => { - // eslint-disable-next-line @typescript-eslint/no-floating-promises - request('http://localhost:8000') - .post('/graphql') - .send({ - query: '{ reports { id, type, title } }', - }) - .set('Accept', 'application/json') - .expect('Content-Type', /application\/json/) - .expect(200) - .then(function (res: { - body: { - data: { - reports: { - id: string; - title: string | null; - type: string | null; - }[]; - }; - }; - }) { - const reports = res.body.data.reports; - expect(reports).toHaveLength(1); - expect(reports[0].id).toBeTruthy(); - expect(reports[0].title).toBe('Test report'); - expect(reports[0].type).toBe('ACTIONS'); - done(); - }); - }); + it('should get the report', async function () { + const res = await request('http://localhost:8000') + .post('/graphql') + .send({ + query: '{ reports { id, type, title } }', + }) + .set('Accept', 'application/json') + .expect('Content-Type', /application\/json/) + .expect(200); + const reports = res.body.data.reports; + expect(reports).toHaveLength(1); + expect(reports[0].id).toBeTruthy(); + expect(reports[0].title).toBe('Test report'); + expect(reports[0].type).toBe('ACTIONS'); }); }); }); diff --git a/packages/redux-devtools-remote/package.json b/packages/redux-devtools-remote/package.json index ba2ee353..f5802e7f 100644 --- a/packages/redux-devtools-remote/package.json +++ b/packages/redux-devtools-remote/package.json @@ -47,7 +47,7 @@ "jsan": "^3.1.14", "querystring": "^0.2.1", "rn-host-detect": "^1.2.0", - "socketcluster-client": "^14.3.2" + "socketcluster-client": "^16.1.1" }, "devDependencies": { "@babel/cli": "^7.17.10", @@ -59,7 +59,7 @@ "@types/jsan": "^3.1.2", "@types/node": "^16.11.38", "@types/rn-host-detect": "^1.2.0", - "@types/socketcluster-client": "^13.0.5", + "@types/socketcluster-client": "^16.0.0", "@typescript-eslint/eslint-plugin": "^5.27.0", "@typescript-eslint/parser": "^5.27.0", "eslint": "^8.17.0", diff --git a/packages/redux-devtools-remote/src/devTools.ts b/packages/redux-devtools-remote/src/devTools.ts index 08dc7e85..224e0aca 100644 --- a/packages/redux-devtools-remote/src/devTools.ts +++ b/packages/redux-devtools-remote/src/devTools.ts @@ -1,5 +1,5 @@ import { stringify, parse } from 'jsan'; -import socketCluster, { SCClientSocket } from 'socketcluster-client'; +import socketClusterClient, { AGClientSocket } from 'socketcluster-client'; import configureStore from './configureStore'; import { defaultSocketOptions } from './constants'; import getHostForRN from 'rn-host-detect'; @@ -179,7 +179,7 @@ class DevToolsEnhancer> { store!: EnhancedStore; filters: LocalFilter | undefined; instanceId?: string; - socket?: SCClientSocket; + socket?: AGClientSocket; sendTo?: string; instanceName: string | undefined; appInstanceId!: string; @@ -241,7 +241,8 @@ class DevToolsEnhancer> { ) { const message: MessageToRelay = { type, - id: this.socket!.id, + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion + id: this.socket!.id!, name: this.instanceName, instanceId: this.appInstanceId, }; @@ -279,7 +280,8 @@ class DevToolsEnhancer> { } else if (action) { message.action = action as ActionCreatorObject[]; } - this.socket!.emit(this.socket!.id ? 'log' : 'log-noid', message); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion + void this.socket!.transmit(this.socket!.id ? 'log' : 'log-noid', message); } dispatchRemotely( @@ -300,7 +302,9 @@ class DevToolsEnhancer> { if ( message.type === 'IMPORT' || (message.type === 'SYNC' && + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion this.socket!.id && + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion message.id !== this.socket!.id) ) { this.store.liftedStore.dispatch({ @@ -387,15 +391,22 @@ class DevToolsEnhancer> { } login() { - this.socket!.emit('login', 'master', (err: Error, channelName: string) => { - if (err) { - console.log(err); - return; + void (async () => { + try { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion + const channelName = (await this.socket!.invoke( + 'login', + 'master' + )) as string; + this.channel = channelName; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion + for await (const data of this.socket!.subscribe(channelName)) { + this.handleMessages(data as Message); + } + } catch (error) { + console.log(error); } - this.channel = channelName; - this.socket!.subscribe(channelName).watch(this.handleMessages); - this.socket!.on(channelName, this.handleMessages); - }); + })(); this.started = true; this.relay('START'); } @@ -404,11 +415,9 @@ class DevToolsEnhancer> { this.started = false; this.isMonitored = false; if (!this.socket) return; - this.socket.destroyChannel(this.channel!); - if (keepConnected) { - this.socket.off(this.channel, this.handleMessages); - } else { - this.socket.off(); + void this.socket.unsubscribe(this.channel!); + this.socket.closeChannel(this.channel!); + if (!keepConnected) { this.socket.disconnect(); } }; @@ -420,36 +429,48 @@ class DevToolsEnhancer> { ) return; - this.socket = socketCluster.create(this.socketOptions); + this.socket = socketClusterClient.create(this.socketOptions); - this.socket.on('error', (err) => { - // if we've already had this error before, increment it's counter, otherwise assign it '1' since we've had the error once. - // eslint-disable-next-line no-prototype-builtins - this.errorCounts[err.name] = this.errorCounts.hasOwnProperty(err.name) - ? this.errorCounts[err.name] + 1 - : 1; + void (async () => { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion + for await (const data of this.socket!.listener('error')) { + // if we've already had this error before, increment it's counter, otherwise assign it '1' since we've had the error once. + // eslint-disable-next-line no-prototype-builtins,@typescript-eslint/no-unsafe-argument + this.errorCounts[data.error.name] = this.errorCounts.hasOwnProperty( + data.error.name + ) + ? this.errorCounts[data.error.name] + 1 + : 1; - if (this.suppressConnectErrors) { - if (this.errorCounts[err.name] === 1) { - console.log( - 'remote-redux-devtools: Socket connection errors are being suppressed. ' + - '\n' + - "This can be disabled by setting suppressConnectErrors to 'false'." - ); - console.log(err); + if (this.suppressConnectErrors) { + if (this.errorCounts[data.error.name] === 1) { + console.log( + 'remote-redux-devtools: Socket connection errors are being suppressed. ' + + '\n' + + "This can be disabled by setting suppressConnectErrors to 'false'." + ); + console.log(data.error); + } + } else { + console.log(data.error); } - } else { - console.log(err); } - }); - this.socket.on('connect', () => { - console.log('connected to remotedev-server'); - this.errorCounts = {}; // clear the errorCounts object, so that we'll log any new errors in the event of a disconnect - this.login(); - }); - this.socket.on('disconnect', () => { - this.stop(true); - }); + })(); + + void (async () => { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion + for await (const data of this.socket!.listener('connect')) { + console.log('connected to remotedev-server'); + this.errorCounts = {}; // clear the errorCounts object, so that we'll log any new errors in the event of a disconnect + this.login(); + } + })(); + void (async () => { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion + for await (const data of this.socket!.listener('disconnect')) { + this.stop(true); + } + })(); }; checkForReducerErrors = (liftedState = this.getLiftedStateRaw()) => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 13445554..1f722bc5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -807,7 +807,7 @@ importers: '@types/prop-types': ^15.7.5 '@types/react': ^18.0.12 '@types/react-dom': ^18.0.5 - '@types/socketcluster-client': ^13.0.5 + '@types/socketcluster-client': ^16.0.0 '@types/styled-components': ^5.1.25 '@types/testing-library__jest-dom': ^5.14.3 '@types/webpack-env': ^1.17.0 @@ -841,7 +841,7 @@ importers: redux: ^4.2.0 redux-persist: ^6.0.0 rimraf: ^3.0.2 - socketcluster-client: ^14.3.2 + socketcluster-client: ^16.1.1 style-loader: ^3.3.1 styled-components: ^5.3.5 ts-jest: ^27.1.5 @@ -875,7 +875,7 @@ importers: react-redux: 8.0.2_nqhh35lwqrquwueloqsaumzkua redux: 4.2.0 redux-persist: 6.0.0_react@18.1.0+redux@4.2.0 - socketcluster-client: 14.3.2 + socketcluster-client: 16.1.1 devDependencies: '@babel/cli': 7.17.10_@babel+core@7.18.2 '@babel/core': 7.18.2 @@ -894,7 +894,7 @@ importers: '@types/node': 16.11.38 '@types/react': 18.0.12 '@types/react-dom': 18.0.5 - '@types/socketcluster-client': 13.0.5 + '@types/socketcluster-client': 16.0.0 '@types/styled-components': 5.1.25 '@types/testing-library__jest-dom': 5.14.3 '@types/webpack-env': 1.17.0 @@ -996,9 +996,8 @@ importers: '@types/node': ^16.11.38 '@types/react': ^18.0.12 '@types/semver': ^7.3.9 - '@types/socketcluster': ^14.0.4 - '@types/socketcluster-client': ^13.0.5 - '@types/socketcluster-server': ^14.2.6 + '@types/socketcluster-client': ^16.0.0 + '@types/socketcluster-server': ^16.1.0 '@types/styled-components': ^5.1.25 '@types/supertest': ^2.0.12 '@types/uuid': ^8.3.4 @@ -1028,8 +1027,8 @@ importers: react-is: ^18.1.0 rimraf: ^3.0.2 semver: ^7.3.7 - socketcluster: ^14.4.2 - socketcluster-client: ^14.3.2 + socketcluster-client: ^16.1.1 + socketcluster-server: ^16.2.1 sqlite3: ^5.0.8 styled-components: ^5.3.5 supertest: ^6.2.3 @@ -1057,7 +1056,7 @@ importers: react-dom: 18.1.0_react@18.1.0 react-is: 18.1.0 semver: 7.3.7 - socketcluster: 14.4.2 + socketcluster-server: 16.2.1 sqlite3: 5.0.8 styled-components: 5.3.5_4klixn56hmiqf6hh5nx3jyckvq uuid: 8.3.2 @@ -1072,9 +1071,8 @@ importers: '@types/morgan': 1.9.3 '@types/node': 16.11.38 '@types/semver': 7.3.9 - '@types/socketcluster': 14.0.4 - '@types/socketcluster-client': 13.0.5 - '@types/socketcluster-server': 14.2.6 + '@types/socketcluster-client': 16.0.0 + '@types/socketcluster-server': 16.1.0 '@types/styled-components': 5.1.25 '@types/supertest': 2.0.12 '@types/uuid': 8.3.4 @@ -1086,7 +1084,7 @@ importers: jest: 27.5.1 ncp: 2.0.0 rimraf: 3.0.2 - socketcluster-client: 14.3.2 + socketcluster-client: 16.1.1 supertest: 6.2.3 ts-jest: 27.1.5_zydwki6ztrgm452or5cw6tjo5q typescript: 4.7.3 @@ -1736,7 +1734,7 @@ importers: '@types/jsan': ^3.1.2 '@types/node': ^16.11.38 '@types/rn-host-detect': ^1.2.0 - '@types/socketcluster-client': ^13.0.5 + '@types/socketcluster-client': ^16.0.0 '@typescript-eslint/eslint-plugin': ^5.27.0 '@typescript-eslint/parser': ^5.27.0 eslint: ^8.17.0 @@ -1746,7 +1744,7 @@ importers: redux: ^4.2.0 rimraf: ^3.0.2 rn-host-detect: ^1.2.0 - socketcluster-client: ^14.3.2 + socketcluster-client: ^16.1.1 typescript: ~4.7.3 dependencies: '@babel/runtime': 7.18.3 @@ -1755,7 +1753,7 @@ importers: jsan: 3.1.14 querystring: 0.2.1 rn-host-detect: 1.2.0 - socketcluster-client: 14.3.2 + socketcluster-client: 16.1.1 devDependencies: '@babel/cli': 7.17.10_@babel+core@7.18.2 '@babel/core': 7.18.2 @@ -1766,7 +1764,7 @@ importers: '@types/jsan': 3.1.2 '@types/node': 16.11.38 '@types/rn-host-detect': 1.2.0 - '@types/socketcluster-client': 13.0.5 + '@types/socketcluster-client': 16.0.0 '@typescript-eslint/eslint-plugin': 5.27.0_kor2e3kwnnzugzo3aovmfcq2la '@typescript-eslint/parser': 5.27.0_ud6rd4xtew5bv4yhvkvu24pzm4 eslint: 8.17.0 @@ -4400,7 +4398,7 @@ packages: '@chakra-ui/system': '>=2.0.0-next.0' framer-motion: '>=4.0.0' react: '>=18 || 18' - react-dom: '>=18' + react-dom: '>=18 || 18' dependencies: '@chakra-ui/close-button': 2.0.1_gvhyduxkh7lachkwscygibi2bq '@chakra-ui/focus-lock': 2.0.2_cbpnieqasrszcwkqeh5i7z7nse @@ -4480,7 +4478,7 @@ packages: resolution: {integrity: sha512-Yfe4ASpPLlpiPAzHq+yKsjhz6gfM9gUhCDBG97WQJc8WVoY/fg/aQHNtx69arS5p2a3ka9hXqdGtZwx8rxCD7Q==} peerDependencies: react: '>=18 || 18' - react-dom: '>=18' + react-dom: '>=18 || 18' dependencies: '@chakra-ui/hooks': 2.0.1_react@18.1.0 '@chakra-ui/react-utils': 2.0.0_react@18.1.0 @@ -4507,7 +4505,7 @@ packages: '@emotion/react': ^11.0.0 '@emotion/styled': ^11.0.0 react: '>=18 || 18' - react-dom: '>=18' + react-dom: '>=18 || 18' dependencies: '@chakra-ui/css-reset': 2.0.0_btguaf77hpuxici4esujjeifki '@chakra-ui/portal': 2.0.1_ef5jwxihqo6n7gxfmzogljlgcm @@ -4560,7 +4558,7 @@ packages: '@emotion/styled': ^11.0.0 framer-motion: '>=4.0.0' react: '>=18 || 18' - react-dom: '>=18' + react-dom: '>=18 || 18' dependencies: '@chakra-ui/accordion': 2.0.2_eyugdzcckvrfjzqf6jbbg6u4am '@chakra-ui/alert': 2.0.1_gvhyduxkh7lachkwscygibi2bq @@ -4800,7 +4798,7 @@ packages: peerDependencies: framer-motion: '>=4.0.0' react: '>=18 || 18' - react-dom: '>=18' + react-dom: '>=18 || 18' dependencies: '@chakra-ui/alert': 2.0.1_gvhyduxkh7lachkwscygibi2bq '@chakra-ui/close-button': 2.0.1_gvhyduxkh7lachkwscygibi2bq @@ -4825,7 +4823,7 @@ packages: '@chakra-ui/system': '>=2.0.0-next.0' framer-motion: '>=4.0.0' react: '>=18 || 18' - react-dom: '>=18' + react-dom: '>=18 || 18' dependencies: '@chakra-ui/hooks': 2.0.1_react@18.1.0 '@chakra-ui/popper': 3.0.1_react@18.1.0 @@ -5760,7 +5758,7 @@ packages: strict-event-emitter: 0.2.4 uuid: 8.3.2 optionalDependencies: - msw: 0.42.0_typescript@4.7.3 + msw: 0.42.1_typescript@4.7.3 transitivePeerDependencies: - encoding - supports-color @@ -6016,7 +6014,7 @@ packages: resolution: {integrity: sha512-oIh2t3tG8drZtZ9SlaV5CY6wGsUViHk8ZajjhcI+74IQHyWy+AnxDv8rJR5wVgsgcgrPBUvGNkC1AEdcGNPaLQ==} peerDependencies: react: '>=16.14.0 || 18' - react-dom: '>=16.14.0' + react-dom: '>=16.14.0 || 18' dependencies: '@babel/runtime': 7.18.3 '@popperjs/core': 2.11.5 @@ -6155,7 +6153,7 @@ packages: resolution: {integrity: sha512-gTkPr2FYX+vySZKEg5Wq7uHPkVUq3hJ7ZKvGls+/xjgaTwfu3iIly53FEFUl8A6kMQ+4gtTC+YRr3cSJgXMbAg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: react: optional: true @@ -6189,7 +6187,7 @@ packages: resolution: {integrity: sha512-ryisDpxbIEZbYJkQWU5xvsj940jhWrWizedFsY9g/qBIBi33UrW/H1hKZQtmg0bzuNTgYcBjRy50ikJgH/eKAQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: react: optional: true @@ -6217,7 +6215,7 @@ packages: resolution: {integrity: sha512-1JGphHk1gcLLpkft/D5BkygXwelSdWQqvXnfFc62BVqvzxv8hCF4zuUosKLWMlB/nzVbd6W4oEDV/Mqmt6h/7w==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: react: optional: true @@ -6252,7 +6250,7 @@ packages: peerDependencies: '@storybook/mdx2-csf': ^0.0.3 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: '@storybook/mdx2-csf': optional: true @@ -6392,7 +6390,7 @@ packages: resolution: {integrity: sha512-NMth6CErySKQ9WnfzMZ4nelHa2bBzZ60ZgsDq5s5dKHhJzZPm2nclmGAGE+VhqI/USe8b1fnjKFeHH485T8J2g==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: react: optional: true @@ -6415,7 +6413,7 @@ packages: resolution: {integrity: sha512-qTu19FnZz+rjY7SxPOgiQkuAxHRNRhUYgvUwI+ep0ZQcBddsRgniQjzXtErlUMeVoMZ63mDuOaJp67ltkriAOQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: react: optional: true @@ -6440,7 +6438,7 @@ packages: resolution: {integrity: sha512-+MUG5t4isQNf+q7BpEsGwuYAvYgs9XTdzzdvL/9jedQ7udJsWmG1q9a6m9+iQGPr/WK+88F2kgSOknpib3J21w==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: react: optional: true @@ -6462,7 +6460,7 @@ packages: resolution: {integrity: sha512-8VmSTGKY3+9kZ09THC7546OaFbjLu5kEAGU5ZFSZaNlsJwRg7bC3bScKbnyX5EhihgZ3W8oJt/eMAIqXKHxA8g==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: react: optional: true @@ -6488,7 +6486,7 @@ packages: resolution: {integrity: sha512-tUZ2c1uegUcwY31ztNQZGU/HUwAEEGIR8fEOvvO8S0TNQGoo6cwFtZmWBh3mTSRGcmzK2SNBjFHZua5Ee9TefA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 dependencies: '@storybook/api': 6.5.7_ef5jwxihqo6n7gxfmzogljlgcm '@storybook/channels': 6.5.7 @@ -6509,7 +6507,7 @@ packages: resolution: {integrity: sha512-QCNypz4X+lYuFW7EzvRPXMf8uS3gfSIV8sqXtEe5XoMb0HQXhy6AGU7/4iAeuUimtETqLTxq+kOxaSg4uPowxg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 dependencies: '@storybook/channels': 6.5.7 '@storybook/client-logger': 6.5.7 @@ -6536,7 +6534,7 @@ packages: resolution: {integrity: sha512-8OB3mZ2L6kQBiAXlkhna/MHREXIPtqXi2AJLT3+bTzBlqkusH+PwMZxWHbcPl1vZrlNQBC40Elx9tdynGkVQ6g==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 typescript: '*' peerDependenciesMeta: typescript: @@ -6635,7 +6633,7 @@ packages: resolution: {integrity: sha512-na8NZhB6GnAGp3jRTV9wwue3WGwSZoi5jfxrKSYMPL/s/2n07/soixHggqueBDXuNBrPoJaXbY/nRHmSjLwxtQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 dependencies: '@storybook/addons': 6.5.7_ef5jwxihqo6n7gxfmzogljlgcm '@storybook/channel-postmessage': 6.5.7 @@ -6672,7 +6670,7 @@ packages: resolution: {integrity: sha512-xSOaOK8q6bXYkmN4LZKucvXU2HRHqKwwTafFDh5yzsCSEB2VQIJlyo4ePVyv/GJgBUX6+WdSA7c5r5ePXK6IYQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 dependencies: '@storybook/client-logger': 6.5.7 '@storybook/csf': 0.0.2--canary.4566f4d.1 @@ -6691,7 +6689,7 @@ packages: resolution: {integrity: sha512-GL7m33tpEyornhfnTddbvDuLkA9EMe1zKv9oZGsUYo78cWRTiEibYyHegIi9/ThplRXvpFR/5uHY4Zx5Z5rxJg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 typescript: '*' webpack: '*' peerDependenciesMeta: @@ -6728,7 +6726,7 @@ packages: resolution: {integrity: sha512-GL7m33tpEyornhfnTddbvDuLkA9EMe1zKv9oZGsUYo78cWRTiEibYyHegIi9/ThplRXvpFR/5uHY4Zx5Z5rxJg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 typescript: '*' webpack: '*' peerDependenciesMeta: @@ -6765,7 +6763,7 @@ packages: resolution: {integrity: sha512-/b1oQlmhek8tKDu9ky2O1oEk9g2giAPpl192yRz4lIxap5CFJ7RCfgbkq+F3JBXnH2P84BufC0x3dj4jvBhxCw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 typescript: '*' peerDependenciesMeta: typescript: @@ -6844,7 +6842,7 @@ packages: '@storybook/builder-webpack5': '*' '@storybook/manager-webpack5': '*' react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 typescript: '*' peerDependenciesMeta: '@storybook/builder-webpack5': @@ -6921,7 +6919,7 @@ packages: '@storybook/builder-webpack5': '*' '@storybook/manager-webpack5': '*' react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 typescript: '*' webpack: '*' peerDependenciesMeta: @@ -7003,7 +7001,7 @@ packages: resolution: {integrity: sha512-RmGsr/6PNsafaSm8aTD7e2VXSKT8BQ6Hkg6TAArLoS2TpIUvrNuM2hEqOHzm2POcApC+OE/HN1H0GiXBkH533Q==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 typescript: '*' peerDependenciesMeta: typescript: @@ -7096,7 +7094,7 @@ packages: resolution: {integrity: sha512-EH8gdl334D8EDVL1VJjRURcUou5Sv6BwgismL4E6wjSFmWxL9egxYDnGJJEh3mjIkAtGb0zpksYn/VNWPA8c8A==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 dependencies: '@storybook/addons': 6.5.7_ef5jwxihqo6n7gxfmzogljlgcm '@storybook/channel-postmessage': 6.5.7 @@ -7148,7 +7146,7 @@ packages: '@storybook/manager-webpack4': '*' '@storybook/manager-webpack5': '*' react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 require-from-string: ^2.0.2 typescript: '*' peerDependenciesMeta: @@ -7231,7 +7229,7 @@ packages: resolution: {integrity: sha512-edWEdAb8O0rSgdXoBZDDuNlQg2cOmC/nJ6gXj9zBotzmXqsbxWyjKGooG1dU6dnKshUqE1RmWF7/N1WMluLf0A==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 dependencies: '@storybook/client-logger': 6.5.7 core-js: 3.22.8 @@ -7253,7 +7251,7 @@ packages: resolution: {integrity: sha512-nj24TSGdF9J1gD5Fj9Z2hPRAQwqBJoBKD/fmTSFZop0qaJOOyeuxZR5022dQh8UWWoBa3WOQADMTNi5RqQZkiA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 dependencies: '@storybook/addons': 6.5.7_ef5jwxihqo6n7gxfmzogljlgcm '@storybook/client-logger': 6.5.7 @@ -7273,7 +7271,7 @@ packages: resolution: {integrity: sha512-d64towcdylC6TXNL2oJklCpwN3XcUGgZzQ9zgoV8BUlOlsj9tNq8eo95uzTURnLg1Q5uHoDDKWuXrrKj03HHxw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 dependencies: '@storybook/addons': 6.5.7_ef5jwxihqo6n7gxfmzogljlgcm '@storybook/client-logger': 6.5.7 @@ -7325,7 +7323,7 @@ packages: resolution: {integrity: sha512-6zp1V84DSBcS8BtFOCJlF2/nIonjQmr+dILPxaM3lCm/X003i2jAQrBKTfPlmzCeDn07PBhzHaRJ3wJskfmeNw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 dependencies: '@storybook/client-logger': 6.5.7 core-js: 3.22.8 @@ -7338,7 +7336,7 @@ packages: resolution: {integrity: sha512-NOg44bc/w7FweuM2fa99PxsgI9qoG2p5vhTQ4MOI/7QnOUDn+EenlapsRos+/Sk2XTaB2QmM43boUkravMSouA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 dependencies: '@storybook/addons': 6.5.7_ef5jwxihqo6n7gxfmzogljlgcm '@storybook/api': 6.5.7_ef5jwxihqo6n7gxfmzogljlgcm @@ -7566,7 +7564,7 @@ packages: engines: {node: '>=12'} peerDependencies: react: ^18.0.0 || 18 - react-dom: ^18.0.0 + react-dom: ^18.0.0 || 18 dependencies: '@babel/runtime': 7.18.3 '@testing-library/dom': 8.13.0 @@ -7607,15 +7605,42 @@ packages: /@types/accepts/1.3.5: resolution: {integrity: sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==} dependencies: - '@types/node': 16.11.38 + '@types/node': 17.0.40 dev: false + /@types/ag-auth/1.0.0: + resolution: {integrity: sha512-9Zri8Apx8al2ZfqcsJ5X39GoirGiVcP7sp1I4mOgsRwXeAwPGadE//44jMHTpCpVDwQ4geGzmD2KMlZspAAcdA==} + dependencies: + '@types/jsonwebtoken': 8.5.8 + dev: true + + /@types/ag-channel/5.0.0: + resolution: {integrity: sha512-ab4P2BWe61MFOGmeXX1yKmBh8UrOSUZv+SsauJreGc1WdHQKaCGtH6VVUkiYfYv73a7e9+LGG5LiF/lIGVqOxw==} + dependencies: + '@types/consumable-stream': 2.0.0 + '@types/stream-demux': 8.0.0 + '@types/writable-consumable-stream': 2.0.0 + dev: true + + /@types/ag-simple-broker/5.0.0: + resolution: {integrity: sha512-JE3GL2L4PPdbJl29N6K/bAR+peJgz/EUjsB+S/l3VwB7rzLsik2XPgrtRTor/b7ZjKP542jGjEPdRhbK2w9ePw==} + dependencies: + '@types/ag-channel': 5.0.0 + '@types/async-stream-emitter': 4.0.0 + '@types/consumable-stream': 2.0.0 + '@types/socketcluster-server': 16.1.0 + '@types/writable-consumable-stream': 2.0.0 + dev: true + /@types/aria-query/4.2.2: resolution: {integrity: sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==} dev: true - /@types/async/3.2.13: - resolution: {integrity: sha512-7Q3awrhnvm89OzfsmqeqRQh8mh+8Pxfgq1UvSAn2nWQ5y/F3+NrbIF0RbkWq8+5dY99ozgap2b3DNBNwjLVOxw==} + /@types/async-stream-emitter/4.0.0: + resolution: {integrity: sha512-13vdKrWE2navt87EPbk6VcUjQgAu/p/rRGdbcE+bYhbKg/fA7nsEgRkxIdlEpZTnGyixUO5+5yHKaIXgMmKL0A==} + dependencies: + '@types/consumable-stream': 2.0.0 + '@types/writable-consumable-stream': 2.0.0 dev: true /@types/babel-types/7.0.11: @@ -7711,10 +7736,6 @@ packages: '@types/color-convert': 2.0.0 dev: true - /@types/component-emitter/1.2.11: - resolution: {integrity: sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==} - dev: true - /@types/connect-history-api-fallback/1.3.5: resolution: {integrity: sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==} dependencies: @@ -7725,7 +7746,13 @@ packages: /@types/connect/3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 16.11.38 + '@types/node': 17.0.40 + + /@types/consumable-stream/2.0.0: + resolution: {integrity: sha512-RuXAZX3pQ2jGgETa1p4fTZb4Y1IxanZ8hafWewNoWW+Nqc4OcDw2VbAPzB1Wq7l5rtvmmCmHnpDX0CNRthqsAA==} + dependencies: + '@types/node': 17.0.40 + dev: true /@types/cookie/0.4.1: resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} @@ -7792,14 +7819,10 @@ packages: /@types/estree/0.0.51: resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} - /@types/expirymanager/0.9.0: - resolution: {integrity: sha512-xulG8b5SiBhpRE1Arfx3ji428mfhwQdas6/i+1IJhTLkyFifJ4rF+vve522ds2ZTiBKCUv9WHNuVF/V9PJCa2Q==} - dev: true - /@types/express-serve-static-core/4.17.28: resolution: {integrity: sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==} dependencies: - '@types/node': 16.11.38 + '@types/node': 17.0.40 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 @@ -7819,10 +7842,6 @@ packages: /@types/filewriter/0.0.29: resolution: {integrity: sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ==} - /@types/fleximap/0.9.0: - resolution: {integrity: sha512-7VsHgMM7l3jY+MXptDgzvROcEoikVgIxu+8d/qT0WijDl6RXdwAbAQYxu5sBCwUvlf0cEQwiDC4rOvkcm3h+hw==} - dev: true - /@types/get-params/0.1.0: resolution: {integrity: sha512-dlrC7vGuNvUCD4UXLTPqNSdSFHDa+n6wHmyKWP2OJXwtgY1A3Lttn5Dx7gmo00fg/xuuLILTuzI/1isDV/1V2Q==} dev: false @@ -7934,7 +7953,7 @@ packages: /@types/jsonwebtoken/8.5.8: resolution: {integrity: sha512-zm6xBQpFDIDM6o9r6HSgDeIcLy82TKWctCXEPbJJcXb5AKmi5BNNdLXneixK4lplX3PqIVcwLBCGE/kAGnlD4A==} dependencies: - '@types/node': 16.11.38 + '@types/node': 17.0.40 dev: true /@types/keyv/3.1.4: @@ -7999,12 +8018,6 @@ packages: '@types/node': 16.11.38 dev: true - /@types/ncom/1.0.1: - resolution: {integrity: sha512-IH7sL3ojrxt451VWUF0iMdDyOwZp/VA3M5CC7NGYiSJCf524ePB25d4rM64E5giWgkFM8FWGthhu6QDf61UOXA==} - dependencies: - '@types/node': 16.11.38 - dev: true - /@types/node-fetch/2.6.1: resolution: {integrity: sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==} dependencies: @@ -8146,38 +8159,6 @@ packages: resolution: {integrity: sha512-i+RVNagU1zd7wynKXI4c6h5hYHP1jwau4ME9rHA60xJxhczRrqPpJoAiIZyTHfk0iDja/1PPZxtuMpfBhlYHVA==} dev: true - /@types/sc-auth/5.0.0: - resolution: {integrity: sha512-V+wuOweEJDrVCMduXmS7zc60O6HGyd5Xm3ClzEXKJfQdrSuhoqvhDjOwbtRZAXCjHll12lBXECb2sht5Glp/6A==} - dependencies: - '@types/jsonwebtoken': 8.5.8 - dev: true - - /@types/sc-broker-cluster/6.1.4: - resolution: {integrity: sha512-TnhkhVLse6lD07XmDDfHZGEM+BndSwxBK6sAzhxJCDvWvzN/10iR237D3UhYDKekMUsXKww25WOBlAtbs/1qQA==} - dependencies: - '@types/async': 3.2.13 - '@types/expirymanager': 0.9.0 - '@types/fleximap': 0.9.0 - '@types/sc-broker': 8.0.2 - '@types/sc-channel': 1.2.2 - '@types/socketcluster': 14.0.4 - '@types/socketcluster-server': 14.2.6 - dev: true - - /@types/sc-broker/8.0.2: - resolution: {integrity: sha512-Tpl9rTbIHGuRPtwcat7zHWG4Rj45tu9JHDglKeZPYUxtSd+jtT8NYCeJFsRCoUpBcMIXOlQwc5g5jlQ6yeqMVA==} - dependencies: - '@types/expirymanager': 0.9.0 - '@types/fleximap': 0.9.0 - '@types/ncom': 1.0.1 - dev: true - - /@types/sc-channel/1.2.2: - resolution: {integrity: sha512-TgTw0+SPnDbvhYXz1Ii70KYf/Uu1DkNQZ0sFv+RCMjNFkjdxP1imtQN46NA0Z6QqNbiOer1s+MNCSxaQ6Ug5ZQ==} - dependencies: - '@types/component-emitter': 1.2.11 - dev: true - /@types/sc-errors/1.4.1: resolution: {integrity: sha512-sulhioQgURtx4d1/t+nJYnLR98JapJVVayOy7e5IMDRpRt7Fu9aqMcA8NKx2L6ExQFMDQOtYpApNWFVTrjWxtQ==} dev: true @@ -8203,7 +8184,7 @@ packages: resolution: {integrity: sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==} dependencies: '@types/mime': 1.3.2 - '@types/node': 16.11.38 + '@types/node': 17.0.40 /@types/set-cookie-parser/2.4.2: resolution: {integrity: sha512-fBZgytwhYAUkj/jC/FAV4RQ5EerRup1YQsXQCh8rZfiHkc4UahC192oH0smGwsXol3cL3A5oETuAHeQHmhXM4w==} @@ -8219,35 +8200,33 @@ packages: resolution: {integrity: sha512-z89ForrCNg+4uwTHjwBCM9LjcsXYC/4O8u3tSi+82v2LCbfiYFpkjH/qQVkDewFBK6FUG7RRV7jw78EGs2maoQ==} dev: false - /@types/socketcluster-client/13.0.5: - resolution: {integrity: sha512-HL0cpZdSx/RczgPRnHY2mCg4K8bSHmpv8Tra1qspb/BtZZQ73R9iAwIf3mX07+/npfBMlPGF6eMHsZP8WyMMAw==} + /@types/socketcluster-client/16.0.0: + resolution: {integrity: sha512-Re5rkp09jcvW95WRBN5q/FIVx9MJZJQPVBpxShLcUnUiMeqXGOO8Ag2RI7dmw4YqKkulpOrk5nl2iUiUC2hUEg==} dependencies: - '@types/component-emitter': 1.2.11 - '@types/sc-auth': 5.0.0 - '@types/sc-channel': 1.2.2 + '@types/ag-channel': 5.0.0 + '@types/async-stream-emitter': 4.0.0 + '@types/consumable-stream': 2.0.0 '@types/sc-errors': 1.4.1 - '@types/socketcluster-server': 14.2.6 + '@types/socketcluster-server': 16.1.0 + '@types/stream-demux': 8.0.0 + '@types/writable-consumable-stream': 2.0.0 '@types/ws': 8.5.3 dev: true - /@types/socketcluster-server/14.2.6: - resolution: {integrity: sha512-JPf/uI3vZcGIGWE0I280iMl+RAz8rT8QScx+ZApVvhOFd9aEAEWRnix/WJ7w84b0YJcLFzeVakGAFEDqjfezBA==} + /@types/socketcluster-server/16.1.0: + resolution: {integrity: sha512-GnCRP0mtS+BmOj7ccdUGNcDaWYg3x6RT0EUigG/rHeijtyE1aY+2PFFVRACF9BVUC8sUrQvHzxiCAJYDcUqOgw==} dependencies: - '@types/component-emitter': 1.2.11 + '@types/ag-auth': 1.0.0 + '@types/ag-simple-broker': 5.0.0 + '@types/async-stream-emitter': 4.0.0 + '@types/consumable-stream': 2.0.0 '@types/jsonwebtoken': 8.5.8 - '@types/sc-auth': 5.0.0 - '@types/sc-broker-cluster': 6.1.4 + '@types/sc-errors': 1.4.1 + '@types/stream-demux': 8.0.0 + '@types/writable-consumable-stream': 2.0.0 '@types/ws': 8.5.3 dev: true - /@types/socketcluster/14.0.4: - resolution: {integrity: sha512-/hggijnHOsaMbpqvB4kmavsC2jmYiuc19zNrY79b6y6TPvCgvLC2ObOj/GH7zacGj9b5qlXlhHA89z8/ET+56w==} - dependencies: - '@types/sc-auth': 5.0.0 - '@types/sc-broker-cluster': 6.1.4 - '@types/socketcluster-server': 14.2.6 - dev: true - /@types/sockjs/0.3.33: resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==} dependencies: @@ -8266,6 +8245,13 @@ packages: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true + /@types/stream-demux/8.0.0: + resolution: {integrity: sha512-4yiERxITSwLnSNrfWdSIKoW4nZe+AzwgwgtViVnySNTyPwiaW8a8o1sAjGCWL2PjUdyRaolidxoLH3s7dnvBMg==} + dependencies: + '@types/consumable-stream': 2.0.0 + '@types/writable-consumable-stream': 2.0.0 + dev: true + /@types/styled-components/5.1.25: resolution: {integrity: sha512-fgwl+0Pa8pdkwXRoVPP9JbqF0Ivo9llnmsm+7TCI330kbPIFd9qv1Lrhr37shf4tnxCOSu+/IgqM7uJXLWZZNQ==} dependencies: @@ -8278,7 +8264,7 @@ packages: resolution: {integrity: sha512-mu/N4uvfDN2zVQQ5AYJI/g4qxn2bHB6521t1UuH09ShNWjebTqN0ZFuYK9uYjcgmI0dTQEs+Owi1EO6U0OkOZQ==} dependencies: '@types/cookiejar': 2.1.2 - '@types/node': 16.11.38 + '@types/node': 17.0.40 dev: true /@types/supertest/2.0.12: @@ -8346,10 +8332,16 @@ packages: source-map: 0.6.1 dev: true + /@types/writable-consumable-stream/2.0.0: + resolution: {integrity: sha512-9pnn3oI+VrFhyp5l8frOvAaK+CS3K34kSJT4+8upBeTWeaMSxkSSyIGM6hVcRx0M1VuStKH3xjMKVLBGCzPgfw==} + dependencies: + '@types/consumable-stream': 2.0.0 + dev: true + /@types/ws/8.5.3: resolution: {integrity: sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==} dependencies: - '@types/node': 16.11.38 + '@types/node': 17.0.40 dev: true /@types/yargs-parser/21.0.0: @@ -8889,6 +8881,31 @@ packages: engines: {node: '>= 10.0.0'} dev: true + /ag-auth/1.0.1: + resolution: {integrity: sha512-zlDUFLNWOrWuQstP785+UXL+WMhRvpw/66BThpKMpqSZ15dcl8dbic5VYC7an0bgoBgCLNNiCxtz0+bJxT1BeQ==} + dependencies: + jsonwebtoken: 8.5.1 + sc-errors: 2.0.1 + dev: false + + /ag-channel/5.0.0: + resolution: {integrity: sha512-bArHkdqQxynim981t8FLZM5TfA0v7p081OlFdOxs6clB79GSGcGlOQMDa31DT9F5VMjzqNiJmhfGwinvfU/3Zg==} + dependencies: + consumable-stream: 2.0.0 + + /ag-request/1.0.0: + resolution: {integrity: sha512-2f7I0cQLMVyGAqjSewVMEFuAsJsIY6egdE16UHS636r+8c6Oevrv0j6SrOIXyRN6yuNT4PBuhiKmrhHbh9OvEg==} + dependencies: + sc-errors: 2.0.1 + + /ag-simple-broker/5.0.0: + resolution: {integrity: sha512-LMwfBdoNm+8ac/RkgW6z1mjIvy2cgEqWa9cJUD5sc5uiJkIn/kXhVRlPdfa/MJtxPivo9DRhKb9DlSp2gCv+Cg==} + dependencies: + ag-channel: 5.0.0 + async-stream-emitter: 4.0.0 + stream-demux: 8.0.0 + dev: false + /agent-base/6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -9018,11 +9035,6 @@ packages: engines: {node: '>=6'} dev: true - /ansi-escapes/3.2.0: - resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==} - engines: {node: '>=4'} - dev: false - /ansi-escapes/4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} @@ -9040,11 +9052,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /ansi-regex/3.0.1: - resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} - engines: {node: '>=4'} - dev: false - /ansi-regex/5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -9475,26 +9482,14 @@ packages: retry: 0.13.1 dev: false - /async/2.0.0: - resolution: {integrity: sha512-x4YEotAaoO+dq8o23H0Clqm+b0KQ7hYHFfqxIz4ORzLzAdwH0K7S5/Q+mDo/wVyGdFYA0l7XE70Y9915PuEyqg==} + /async-stream-emitter/4.0.0: + resolution: {integrity: sha512-zPVflmOEN4EFEAk2/p+BbLRRM/i4Iol2nvO2RSFNuYUiYZdBmBJi5O/PMQeO9Unj1EONQqUN0W5PadVS/bA6/g==} dependencies: - lodash: 4.17.21 - dev: false - - /async/2.3.0: - resolution: {integrity: sha512-uDDBwBVKsWWe4uMmvVmFiW07K5BmdyZvSFzxlujNBtSJ/qzAlGM6UHOFZsQd5jsdmWatrCMWwYyVAc8cuJrepQ==} - dependencies: - lodash: 4.17.21 - dev: false - - /async/2.6.4: - resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} - dependencies: - lodash: 4.17.21 - dev: false + stream-demux: 8.0.0 /async/3.2.3: resolution: {integrity: sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==} + dev: true /asynckit/0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -9899,6 +9894,12 @@ packages: dev: true optional: true + /bl/1.2.3: + resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==} + dependencies: + readable-stream: 2.3.7 + safe-buffer: 5.2.1 + /bl/4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: @@ -10102,7 +10103,7 @@ packages: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} /buffer-equal-constant-time/1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + resolution: {integrity: sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=} dev: false /buffer-from/1.1.2: @@ -10397,10 +10398,6 @@ packages: engines: {node: '>=6'} dev: true - /chardet/0.4.2: - resolution: {integrity: sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg==} - dev: false - /chardet/0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} @@ -10530,13 +10527,6 @@ packages: engines: {node: '>=6'} dev: true - /cli-cursor/2.1.0: - resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} - engines: {node: '>=4'} - dependencies: - restore-cursor: 2.0.0 - dev: false - /cli-cursor/3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} @@ -10556,10 +10546,6 @@ packages: '@colors/colors': 1.5.0 dev: true - /cli-width/2.2.1: - resolution: {integrity: sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==} - dev: false - /cli-width/3.0.0: resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} engines: {node: '>= 10'} @@ -10595,7 +10581,6 @@ packages: is-plain-object: 2.0.4 kind-of: 6.0.3 shallow-clone: 3.0.1 - dev: true /clone-regexp/2.2.0: resolution: {integrity: sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==} @@ -10613,10 +10598,6 @@ packages: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} - /clone/2.1.1: - resolution: {integrity: sha512-h5FLmEMFHeuzqmpVRcDayNlVZ+k4uK1niyKQN6oUMe7ieJihv44Vc3dY/kDnnWX4PDQSwes48s965PG/D4GntQ==} - engines: {node: '>=0.8'} - /co/4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} @@ -10737,9 +10718,6 @@ packages: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} dev: true - /component-emitter/1.2.1: - resolution: {integrity: sha512-jPatnhd33viNplKjqXKRkGU345p263OIWzDL2wH3LGIGp5Kojo+uXizHmOADRvhGFFTnJqX3jBAKP6vvmSDKcA==} - /component-emitter/1.3.0: resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} dev: true @@ -10843,6 +10821,9 @@ packages: resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} dev: true + /consumable-stream/2.0.0: + resolution: {integrity: sha512-I6WA2JVYXs/68rEvi1ie3rZjP6qusTVFEQkbzR+WC+fY56TpwiGTIDJETsrnlxv5CsnmK69ps6CkYvIbpEEqBA==} + /content-disposition/0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} @@ -12416,11 +12397,6 @@ packages: jest-message-util: 27.5.1 dev: true - /expirymanager/0.9.4: - resolution: {integrity: sha512-bKcLuZPTs9mFxQ2VJPYJCMuGVAM9Ah6KfezbDA3IegbGeqR39WdPi+T7GgDGVuBPjYDFsSP/va5csiNVCGT1Mw==} - engines: {node: '>= 0.8.0'} - dev: false - /express/4.18.1: resolution: {integrity: sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==} engines: {node: '>= 0.10.0'} @@ -12481,15 +12457,6 @@ packages: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} dev: true - /external-editor/2.2.0: - resolution: {integrity: sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==} - engines: {node: '>=0.12'} - dependencies: - chardet: 0.4.2 - iconv-lite: 0.4.24 - tmp: 0.0.33 - dev: false - /external-editor/3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} @@ -12635,13 +12602,6 @@ packages: resolution: {integrity: sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==} dev: true - /figures/2.0.0: - resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==} - engines: {node: '>=4'} - dependencies: - escape-string-regexp: 1.0.5 - dev: false - /figures/3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} @@ -12805,11 +12765,6 @@ packages: resolution: {integrity: sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==} dev: true - /fleximap/1.0.0: - resolution: {integrity: sha512-zg/PthjBzESYKomTw/wivo8Id6B+obVkWriIzDuRfuw4wxEIV2/0D/NIGf+LKcGTTifHRfw73+oAAQozZ9MAhA==} - engines: {node: '>= 0.8.0'} - dev: false - /flush-write-stream/1.1.1: resolution: {integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==} dependencies: @@ -12980,7 +12935,7 @@ packages: resolution: {integrity: sha512-modFplFb1Fznsm0MrmRAJUC32UDA5jbGU9rDvkGzhAHksru2tnoKbU/Pa3orzdsJI0CJviG4NGBrmwGveU98Cg==} peerDependencies: react: '>=16.8 || ^17.0.0 || ^18.0.0 || 18' - react-dom: '>=16.8 || ^17.0.0 || ^18.0.0' + react-dom: '>=16.8 || ^17.0.0 || ^18.0.0 || 18' dependencies: framesync: 6.0.1 hey-listen: 1.0.8 @@ -13029,14 +12984,6 @@ packages: universalify: 2.0.0 dev: true - /fs-extra/6.0.1: - resolution: {integrity: sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==} - dependencies: - graceful-fs: 4.2.10 - jsonfile: 4.0.0 - universalify: 0.1.2 - dev: false - /fs-extra/7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -14017,25 +13964,6 @@ packages: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} dev: true - /inquirer/5.2.0: - resolution: {integrity: sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==} - engines: {node: '>=6.0.0'} - dependencies: - ansi-escapes: 3.2.0 - chalk: 2.4.2 - cli-cursor: 2.1.0 - cli-width: 2.2.1 - external-editor: 2.2.0 - figures: 2.0.0 - lodash: 4.17.21 - mute-stream: 0.0.7 - run-async: 2.4.1 - rxjs: 5.5.12 - string-width: 2.1.1 - strip-ansi: 4.0.0 - through: 2.3.8 - dev: false - /inquirer/8.2.4: resolution: {integrity: sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==} engines: {node: '>=12.0.0'} @@ -14294,11 +14222,6 @@ packages: dev: true optional: true - /is-fullwidth-code-point/2.0.0: - resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} - engines: {node: '>=4'} - dev: false - /is-fullwidth-code-point/3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -14412,7 +14335,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 - dev: true /is-plain-object/5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} @@ -14572,7 +14494,6 @@ packages: /isobject/3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} - dev: true /isobject/4.0.0: resolution: {integrity: sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==} @@ -15648,7 +15569,6 @@ packages: /kind-of/6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - dev: true /kleur/3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} @@ -15878,10 +15798,6 @@ packages: p-locate: 5.0.0 dev: true - /lodash.clonedeep/4.5.0: - resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} - dev: false - /lodash.curry/4.1.1: resolution: {integrity: sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==} dev: false @@ -15971,7 +15887,7 @@ packages: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} dependencies: - chalk: 4.1.1 + chalk: 4.1.2 is-unicode-supported: 0.1.0 dev: false @@ -16371,11 +16287,6 @@ packages: hasBin: true dev: true - /mimic-fn/1.2.0: - resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} - engines: {node: '>=4'} - dev: false - /mimic-fn/2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} @@ -16423,10 +16334,6 @@ packages: kind-of: 6.0.3 dev: true - /minimist/1.2.0: - resolution: {integrity: sha512-7Wl+Jz+IGWuSdgsQEJ4JunV0si/iMhg42MnQQG6h1R6TNeVenp4U9x5CC5v/gYqz/fENLQITAWXidNtVL0NNbw==} - dev: false - /minimist/1.2.6: resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} @@ -16595,6 +16502,44 @@ packages: - supports-color dev: false + /msw/0.42.1_typescript@4.7.3: + resolution: {integrity: sha512-LZZuz7VddL45gCBgfBWHyXj6a4W7OTJY0mZPoipJ3P/xwbuJwrtwB3IJrWlqBM8aink/eTKlRxwzmtIAwCj5yQ==} + engines: {node: '>=14'} + hasBin: true + requiresBuild: true + peerDependencies: + typescript: '>= 4.2.x <= 4.7.x' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@mswjs/cookies': 0.2.1 + '@mswjs/interceptors': 0.16.4 + '@open-draft/until': 1.0.3 + '@types/cookie': 0.4.1 + '@types/js-levenshtein': 1.1.1 + chalk: 4.1.1 + chokidar: 3.5.3 + cookie: 0.4.2 + graphql: 16.5.0 + headers-polyfill: 3.0.7 + inquirer: 8.2.4 + is-node-process: 1.0.1 + js-levenshtein: 1.1.6 + node-fetch: 2.6.7 + outvariant: 1.3.0 + path-to-regexp: 6.2.1 + statuses: 2.0.1 + strict-event-emitter: 0.2.4 + type-fest: 1.4.0 + typescript: 4.7.3 + yargs: 17.5.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + optional: true + /multicast-dns/7.2.5: resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} hasBin: true @@ -16603,10 +16548,6 @@ packages: thunky: 1.1.0 dev: true - /mute-stream/0.0.7: - resolution: {integrity: sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==} - dev: false - /mute-stream/0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} dev: false @@ -16645,13 +16586,6 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true - /ncom/1.0.3: - resolution: {integrity: sha512-PfA7rjxxMAItsGo2qXrGn2GvKJIwN0bUTa3GehsblrKRVdCCEwB0QG2ymM6/DppQGUt7YqbfxQB7LaMWMiHHWQ==} - engines: {node: '>= 0.8.0'} - dependencies: - sc-formatter: 3.0.3 - dev: false - /ncp/2.0.0: resolution: {integrity: sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==} hasBin: true @@ -17053,13 +16987,6 @@ packages: dependencies: wrappy: 1.0.2 - /onetime/2.0.1: - resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} - engines: {node: '>=4'} - dependencies: - mimic-fn: 1.2.0 - dev: false - /onetime/5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} @@ -17111,7 +17038,7 @@ packages: engines: {node: '>=10'} dependencies: bl: 4.1.0 - chalk: 4.1.1 + chalk: 4.1.2 cli-cursor: 3.1.0 cli-spinners: 2.6.1 is-interactive: 1.0.0 @@ -18059,6 +17986,7 @@ packages: resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==} engines: {node: '>=0.4.x'} deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + dev: true /querystring/0.2.1: resolution: {integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==} @@ -18130,7 +18058,7 @@ packages: peerDependencies: '@types/react': '>=16.14.8' react: '>=16.14.0 || 18' - react-dom: '>=16.14.0' + react-dom: '>=16.14.0 || 18' peerDependenciesMeta: '@types/react': optional: true @@ -18212,7 +18140,7 @@ packages: resolution: {integrity: sha512-t4ZwvV6vwNxzujDQ+37bspnLwA4JlgUPWhLjBJWsNIDceAf6ZKUTCjdm08cN6WeZ5pTMKiCJkmAYnpmR4Bm+dg==} peerDependencies: react: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || 18 - react-dom: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 + react-dom: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || 18 dependencies: '@base2/pretty-print-object': 1.0.1 is-plain-object: 5.0.0 @@ -18290,7 +18218,7 @@ packages: '@types/react': ^16.8 || ^17.0 || ^18.0 '@types/react-dom': ^16.8 || ^17.0 || ^18.0 react: ^16.8 || ^17.0 || ^18.0 || 18 - react-dom: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 || 18 react-native: '>=0.59' redux: ^4 peerDependenciesMeta: @@ -18323,7 +18251,7 @@ packages: '@types/react': ^16.8 || ^17.0 || ^18.0 '@types/react-dom': ^16.8 || ^17.0 || ^18.0 react: ^16.8 || ^17.0 || ^18.0 || 18 - react-dom: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 || 18 react-native: '>=0.59' redux: ^4 peerDependenciesMeta: @@ -18357,7 +18285,7 @@ packages: '@types/react': ^16.8 || ^17.0 || ^18.0 '@types/react-dom': ^16.8 || ^17.0 || ^18.0 react: ^16.8 || ^17.0 || ^18.0 || 18 - react-dom: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 || 18 react-native: '>=0.59' redux: ^4 peerDependenciesMeta: @@ -18428,7 +18356,7 @@ packages: resolution: {integrity: sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==} peerDependencies: react: '>=16.8 || 18' - react-dom: '>=16.8' + react-dom: '>=16.8 || 18' dependencies: history: 5.3.0 react: 18.1.0 @@ -18449,7 +18377,7 @@ packages: resolution: {integrity: sha512-W6Irh7U6Ha7p5uQQ2ZnemoCQ8mcfgOtHfw3wuMzG6FAu0P+CYicgofSLOq97BhjMx8jS+h+wwWdCBeVVZ9VqlQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 dependencies: '@babel/runtime': 7.18.3 '@emotion/cache': 11.7.1 @@ -18531,7 +18459,7 @@ packages: resolution: {integrity: sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==} peerDependencies: react: '>=16.6.0 || 18' - react-dom: '>=16.6.0' + react-dom: '>=16.6.0 || 18' dependencies: '@babel/runtime': 7.18.3 dom-helpers: 5.2.1 @@ -18959,14 +18887,6 @@ packages: dependencies: lowercase-keys: 1.0.1 - /restore-cursor/2.0.0: - resolution: {integrity: sha1-n37ih/gv0ybU/RYpI9YhKe7g368=} - engines: {node: '>=4'} - dependencies: - onetime: 2.0.1 - signal-exit: 3.0.7 - dev: false - /restore-cursor/3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} @@ -19094,13 +19014,6 @@ packages: aproba: 1.2.0 dev: true - /rxjs/5.5.12: - resolution: {integrity: sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==} - engines: {npm: '>=2.0.0'} - dependencies: - symbol-observable: 1.0.1 - dev: false - /rxjs/7.5.5: resolution: {integrity: sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==} dependencies: @@ -19151,61 +19064,12 @@ packages: xmlchars: 2.2.0 dev: true - /sc-auth/5.0.2: - resolution: {integrity: sha512-Le3YBsFjzv5g6wIH6Y+vD+KFkK0HDXiaWy1Gm4nXtYebMQUyNYSf1cS83MtHrYzVEMlhYElRva1b0bvZ0hBqQw==} - dependencies: - jsonwebtoken: 8.5.1 - sc-errors: 1.4.1 - dev: false - - /sc-broker-cluster/7.0.0: - resolution: {integrity: sha512-DNG8sxiFwmRSMS0sUXA25UvDV8QTwEfYnzrutqbp4HlMU9JP65FBcs6GuNFPhjQN4s9VtwAE8BBaCNK5BjNV0g==} - engines: {node: '>= 0.8.0'} - dependencies: - async: 2.0.0 - sc-broker: 6.0.0 - sc-channel: 1.2.0 - sc-errors: 1.4.1 - sc-hasher: 1.0.1 - dev: false - - /sc-broker/6.0.0: - resolution: {integrity: sha512-c1mFIllUdPnEXDDFxTiX3obYW+cT0hb56fdNM5k+Xo5DI3+3Q9MYxTc8jD23qBIXOHokt4+d/CHocmZQPlAjAQ==} - engines: {node: '>= 0.8.0'} - dependencies: - async: 2.6.4 - expirymanager: 0.9.4 - fleximap: 1.0.0 - ncom: 1.0.3 - sc-errors: 1.4.1 - uuid: 3.1.0 - dev: false - - /sc-channel/1.2.0: - resolution: {integrity: sha512-M3gdq8PlKg0zWJSisWqAsMmTVxYRTpVRqw4CWAdKBgAfVKumFcTjoCV0hYu7lgUXccCtCD8Wk9VkkE+IXCxmZA==} - dependencies: - component-emitter: 1.2.1 - - /sc-errors/1.4.1: - resolution: {integrity: sha512-dBn92iIonpChTxYLgKkIT/PCApvmYT6EPIbRvbQKTgY6tbEbIy8XVUv4pGyKwEK4nCmvX4TKXcN0iXC6tNW6rQ==} - dev: false - /sc-errors/2.0.1: resolution: {integrity: sha512-JoVhq3Ud+3Ujv2SIG7W0XtjRHsrNgl6iXuHHsh0s+Kdt5NwI6N2EGAZD4iteitdDv68ENBkpjtSvN597/wxPSQ==} /sc-formatter/3.0.3: resolution: {integrity: sha512-lYI/lTs1u1c0geKElcj+bmEUfcP/HuKg2iDeTijPSjiTNFzN3Cf8Qh6tVd65oi7Qn+2/oD7LP4s6GC13v/9NiQ==} - /sc-hasher/1.0.1: - resolution: {integrity: sha512-whZWw70Gp5ibXXMcz6+Tulmk8xkwWMs42gG70p12hGscdUg8BICBvihS3pX2T3dWTw+yeZuGKiULr3MwL37SOQ==} - dev: false - - /sc-simple-broker/2.1.3: - resolution: {integrity: sha512-ldt0ybOS5fVZSMea5Z8qVu7lmDBTy0qO9BD6TseJjRuPx+g+stfSqmPAb0RsCsQUXRH8A1koCbwsuUnI9BOxvw==} - dependencies: - sc-channel: 1.2.0 - dev: false - /scheduler/0.22.0: resolution: {integrity: sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==} dependencies: @@ -19434,7 +19298,6 @@ packages: engines: {node: '>=8'} dependencies: kind-of: 6.0.3 - dev: true /shallowequal/1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} @@ -19587,60 +19450,44 @@ packages: - supports-color dev: true - /socketcluster-client/14.3.2: - resolution: {integrity: sha512-xDtgW7Ss0ARlfhx53bJ5GY5THDdEOeJnT+/C9Rmrj/vnZr54xeiQfrCZJbcglwe732nK3V+uZq87IvrRl7Hn4g==} + /socketcluster-client/16.1.1: + resolution: {integrity: sha512-Fv/O8Dnb62fDLHRfh0Vr0FLrK/IzcFCukAqZlTE3L2LkI8ZY+24GzUNvYn3NnppSfqjEjEl1bLm26guqPAqlpQ==} dependencies: + ag-channel: 5.0.0 + ag-request: 1.0.0 + async-stream-emitter: 4.0.0 buffer: 5.7.1 - clone: 2.1.1 - component-emitter: 1.2.1 + clone-deep: 4.0.1 linked-list: 0.1.0 - querystring: 0.2.0 - sc-channel: 1.2.0 sc-errors: 2.0.1 sc-formatter: 3.0.3 - uuid: 3.2.1 + stream-demux: 8.0.0 + uuid: 8.3.2 + vinyl-buffer: 1.0.1 ws: 7.5.8 transitivePeerDependencies: - bufferutil - utf-8-validate - /socketcluster-server/14.7.2: - resolution: {integrity: sha512-PHFez3OXpxZ0jMm+JleYzshwCT7EXdldlVQnZpLCHM8BARSgbr6C+vuD5lHCvUDJc+T6kVFNEHQ1Hnhzw21CSw==} + /socketcluster-server/16.2.1: + resolution: {integrity: sha512-ARB3VmM5JIfehQR8Dk3he11v+DA7dEtSOX/97Dce7WTK4ELdbdyHpgPhOhFPhW6TWCd+43X6/LwMmcwJkx7vUQ==} dependencies: - async: 3.2.3 + ag-auth: 1.0.1 + ag-request: 1.0.0 + ag-simple-broker: 5.0.0 + async-stream-emitter: 4.0.0 base64id: 1.0.0 - component-emitter: 1.2.1 - lodash.clonedeep: 4.5.0 - sc-auth: 5.0.2 + clone-deep: 4.0.1 sc-errors: 2.0.1 sc-formatter: 3.0.3 - sc-simple-broker: 2.1.3 - uuid: 3.2.1 + stream-demux: 8.0.0 + writable-consumable-stream: 2.0.0 ws: 7.5.8 transitivePeerDependencies: - bufferutil - utf-8-validate dev: false - /socketcluster/14.4.2: - resolution: {integrity: sha512-Z45tSQ6K/XUEyftrID1hyBXSdaK/gDeq6BMqhNR3XvjnUQ6HkkeTrxZUoXIn/In/J8KLl1WRVtvZAB0Zf9pEjA==} - hasBin: true - dependencies: - async: 2.3.0 - fs-extra: 6.0.1 - inquirer: 5.2.0 - minimist: 1.2.0 - sc-auth: 5.0.2 - sc-broker-cluster: 7.0.0 - sc-errors: 1.4.1 - socketcluster-server: 14.7.2 - uid-number: 0.0.6 - uuid: 3.2.1 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - /sockjs/0.3.24: resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} dependencies: @@ -19884,6 +19731,12 @@ packages: readable-stream: 2.3.7 dev: true + /stream-demux/8.0.0: + resolution: {integrity: sha512-vt6P85yEUxiapK9F+ET5BLyto1DnCD4Sl7MlDklDgcb4K5SGXPtOPz9DiP7vTooJ1wW1F/VRPlcSV22Coeim1A==} + dependencies: + consumable-stream: 2.0.0 + writable-consumable-stream: 2.0.0 + /stream-each/1.2.3: resolution: {integrity: sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==} dependencies: @@ -19925,14 +19778,6 @@ packages: strip-ansi: 6.0.1 dev: true - /string-width/2.1.1: - resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} - engines: {node: '>=4'} - dependencies: - is-fullwidth-code-point: 2.0.0 - strip-ansi: 4.0.0 - dev: false - /string-width/4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -20005,13 +19850,6 @@ packages: ansi-regex: 2.1.1 dev: true - /strip-ansi/4.0.0: - resolution: {integrity: sha1-qEeQIusaw2iocTibY1JixQXuNo8=} - engines: {node: '>=4'} - dependencies: - ansi-regex: 3.0.1 - dev: false - /strip-ansi/6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -20110,7 +19948,7 @@ packages: requiresBuild: true peerDependencies: react: '>= 16.8.0 || 18' - react-dom: '>= 16.8.0' + react-dom: '>= 16.8.0 || 18' react-is: '>= 16.8.0' dependencies: '@babel/helper-module-imports': 7.16.7 @@ -20294,11 +20132,6 @@ packages: resolution: {integrity: sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=} dev: true - /symbol-observable/1.0.1: - resolution: {integrity: sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=} - engines: {node: '>=0.10.0'} - dev: false - /symbol-observable/1.2.0: resolution: {integrity: sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==} engines: {node: '>=0.10.0'} @@ -20515,7 +20348,6 @@ packages: dependencies: readable-stream: 2.3.7 xtend: 4.0.2 - dev: true /thunky/1.1.0: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} @@ -20963,15 +20795,11 @@ packages: optional: true /uglify-to-browserify/1.0.2: - resolution: {integrity: sha1-bgkk1r2mta/jSeOabWMoUKD4grc=} + resolution: {integrity: sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q==} requiresBuild: true dev: true optional: true - /uid-number/0.0.6: - resolution: {integrity: sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=} - dev: false - /unbox-primitive/1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: @@ -21230,7 +21058,7 @@ packages: dev: true /util-deprecate/1.0.2: - resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} /util.promisify/1.0.0: resolution: {integrity: sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==} @@ -21263,17 +21091,6 @@ packages: resolution: {integrity: sha1-DwWkCu90+eWVHiDvv0SxGHHlZBA=} dev: true - /uuid/3.1.0: - resolution: {integrity: sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - hasBin: true - dev: false - - /uuid/3.2.1: - resolution: {integrity: sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - hasBin: true - /uuid/3.4.0: resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. @@ -21366,6 +21183,12 @@ packages: vfile-message: 2.0.4 dev: true + /vinyl-buffer/1.0.1: + resolution: {integrity: sha512-LRBE2/g3C1hSHL2k/FynSZcVTRhEw8sb08oKGt/0hukZXwrh2m8nfy+r5yLhGEk7eFFuclhyIuPct/Bxlxk6rg==} + dependencies: + bl: 1.2.3 + through2: 2.0.5 + /vm-browserify/1.1.2: resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} dev: true @@ -21934,6 +21757,11 @@ packages: /wrappy/1.0.2: resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} + /writable-consumable-stream/2.0.0: + resolution: {integrity: sha512-SITambzxtPTFU/wR82h+zOKGBiEv5V8gC1mt8xvoE1/168ApEa8H+6s2UToYJo3VLL7sNYTaApKuPD+pZHMGJQ==} + dependencies: + consumable-stream: 2.0.0 + /write-file-atomic/3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} dependencies: @@ -22003,7 +21831,6 @@ packages: /xtend/4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} - dev: true /y18n/4.0.3: resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}