diff --git a/backend/.idea/workspace.xml b/backend/.idea/workspace.xml
index 82b392b..4deff21 100644
--- a/backend/.idea/workspace.xml
+++ b/backend/.idea/workspace.xml
@@ -8,11 +8,12 @@
+
+
-
+
-
@@ -103,20 +104,4 @@
true
-
-
-
-
- file://$PROJECT_DIR$/internal/ws/message.go
- 69
-
-
-
- file://$PROJECT_DIR$/internal/ws/message.go
- 59
-
-
-
-
-
\ No newline at end of file
diff --git a/backend/internal/ws/handlers.go b/backend/internal/ws/handlers.go
index 73a4b3e..0204fd4 100644
--- a/backend/internal/ws/handlers.go
+++ b/backend/internal/ws/handlers.go
@@ -3,7 +3,7 @@ package ws
//todo better data deserialization
type IdentityData struct {
- ClientID string `json:"client_id"`
+ ClientID string `json:"clientId"`
User User `json:"user"`
}
@@ -13,6 +13,7 @@ func handleIdentifyEvent(message *Message) {
MessageData: MessageData{
Type: Identify,
Data: map[string]interface{}{
+ "admin": true,
"playlist": "",
"playHead": 0,
"user": d["user"],
diff --git a/backend/internal/ws/message.go b/backend/internal/ws/message.go
index 8365729..ee0b741 100644
--- a/backend/internal/ws/message.go
+++ b/backend/internal/ws/message.go
@@ -3,7 +3,6 @@ package ws
import (
"encoding/json"
tlog "github.com/ubergeek77/tinylog"
- "strconv"
)
var log = tlog.NewTaggedLogger("WS", tlog.NewColor("38;5;111"))
@@ -36,15 +35,14 @@ type RawMessage struct {
}
func (rm RawMessage) UnSerializeData() Message {
- s, _ := strconv.Unquote(string(rm.Data))
var md MessageData
- if err := json.Unmarshal([]byte(s), &md); err != nil {
+ if err := json.Unmarshal(rm.Data, &md); err != nil {
log.Errorf("error unmarshalling message, %s", err.Error())
}
if md.RawData != nil && len(md.RawData) > 0 {
if err := json.Unmarshal(md.RawData, &md.Data); err != nil {
// handle error
- log.Errorf("error unmarshalling message, %s", err.Error())
+ log.Errorf("error unmarshalling data, %s", err.Error())
}
}
diff --git a/backend/internal/ws/structs.go b/backend/internal/ws/structs.go
index f0d528f..cceca35 100644
--- a/backend/internal/ws/structs.go
+++ b/backend/internal/ws/structs.go
@@ -1,7 +1,6 @@
package ws
type User struct {
- Name string `json:"name"`
- UserID string `json:"user_id"`
- Admin bool `json:"admin"`
+ ID string `json:"id"`
+ Name string `json:"name"`
}
diff --git a/frontend/package.json b/frontend/package.json
index 44fa284..1915ba1 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -17,8 +17,8 @@
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-player": "^2.9.0",
- "uuid": "^8.3.2",
- "websocket": "^1.0.34"
+ "socket.io-client": "^4.4.1",
+ "uuid": "^8.3.2"
},
"devDependencies": {
"@types/node": "^14.6.0",
diff --git a/frontend/src/interfaces/IMessage.ts b/frontend/src/interfaces/IMessage.ts
index fe313e2..93c5b48 100644
--- a/frontend/src/interfaces/IMessage.ts
+++ b/frontend/src/interfaces/IMessage.ts
@@ -1,4 +1,4 @@
-enum MessageTypes {
+export enum MessageTypes {
Ping,
Pong,
Identify,
@@ -7,8 +7,8 @@ enum MessageTypes {
}
interface IMessage {
- Type: MessageTypes;
- Data?: Map;
+ type: MessageTypes;
+ data?: Record;
}
export default IMessage;
diff --git a/frontend/src/interfaces/IUser.ts b/frontend/src/interfaces/IUser.ts
index b876c99..0a768a1 100644
--- a/frontend/src/interfaces/IUser.ts
+++ b/frontend/src/interfaces/IUser.ts
@@ -1,7 +1,6 @@
interface IUser {
+ id: string;
name: string;
- userID: string;
- admin: boolean;
}
export default IUser;
diff --git a/frontend/src/pages/api/auth/[...nextauth].ts b/frontend/src/pages/api/auth/[...nextauth].ts
index 6ddd34f..61b324f 100644
--- a/frontend/src/pages/api/auth/[...nextauth].ts
+++ b/frontend/src/pages/api/auth/[...nextauth].ts
@@ -12,4 +12,10 @@ export default NextAuth({
jwt: {
secret: process.env.SECRET,
},
+ callbacks: {
+ async session({ session, token, user }) {
+ session.user.id = token.sub;
+ return session;
+ },
+ },
});
diff --git a/frontend/src/pages/player.tsx b/frontend/src/pages/player.tsx
index 16fa322..e955b56 100644
--- a/frontend/src/pages/player.tsx
+++ b/frontend/src/pages/player.tsx
@@ -1,25 +1,58 @@
import { GetServerSideProps, NextPage } from "next";
-import { getSession } from "next-auth/react";
+import { Session, User } from "next-auth";
+import { getSession, useSession } from "next-auth/react";
import dynamic from "next/dynamic";
-import React from "react";
+import React, { useEffect } from "react";
import { Container } from "../components/Container";
+import { MessageTypes } from "../interfaces/IMessage";
+import Message from "../util/Message";
+import MessageUtil from "../util/MessageUtil";
-const Player = dynamic(() => import("../components/Player"));
+const Player = dynamic(() => import("../components/Player"), { ssr: false });
-interface PlayerPage {
- id: string;
+interface PlayerPageProps {
+ URI: string;
+ user: User;
}
-
-const PlayerPage: NextPage = () => {
- return (
-
-
-
- );
+const PlayerPage: NextPage = ({ URI, user }) => {
+ useEffect(() => {
+ if (typeof window === "undefined") return;
+ const ws = new WebSocket(URI);
+ ws.onopen = () => {
+ ws.send(
+ MessageUtil.encode(
+ new Message(MessageTypes.Identify, {
+ clientID: process.env.CLIENT_ID,
+ user: {
+ ID: user.id,
+ Name: user.name,
+ },
+ })
+ )
+ );
+ };
+ ws.onmessage = (event) => {
+ console.log(event);
+ console.log(JSON.parse(event.data));
+ };
+ ws.onclose = () => {
+ ws.close();
+ };
+ ws.onerror = (err) => {
+ console.log(err);
+ return () => {
+ ws.close();
+ };
+ };
+ return () => {
+ ws.close();
+ };
+ }, []);
+ return {/* */};
};
export const getServerSideProps: GetServerSideProps = async (context) => {
- const session = getSession(context);
+ const session = await getSession(context);
if (!session) {
return {
redirect: {
@@ -30,7 +63,8 @@ export const getServerSideProps: GetServerSideProps = async (context) => {
}
return {
props: {
- id: "BELLE",
+ URI: process.env.WS_URI,
+ user: session.user,
},
};
};
diff --git a/frontend/src/util/Handler.ts b/frontend/src/util/Handler.ts
new file mode 100644
index 0000000..43d2e2e
--- /dev/null
+++ b/frontend/src/util/Handler.ts
@@ -0,0 +1 @@
+export default class Handler {}
diff --git a/frontend/src/util/Message.ts b/frontend/src/util/Message.ts
new file mode 100644
index 0000000..b34d7d9
--- /dev/null
+++ b/frontend/src/util/Message.ts
@@ -0,0 +1,15 @@
+import IMessage, { MessageTypes } from "../interfaces/IMessage";
+
+export default class Message implements IMessage {
+ constructor(
+ public type: MessageTypes,
+ public data: Record
+ ) {}
+
+ toJSON(): Record {
+ return {
+ type: this.type,
+ data: this.data,
+ };
+ }
+}
diff --git a/frontend/src/util/MessageUtil.ts b/frontend/src/util/MessageUtil.ts
new file mode 100644
index 0000000..40d93e3
--- /dev/null
+++ b/frontend/src/util/MessageUtil.ts
@@ -0,0 +1,16 @@
+// inspired by aether/aero
+
+import Message from "./Message";
+
+export default class MessageUtil {
+ static encode(message: Message): string {
+ return JSON.stringify(message);
+ }
+ static decode(message: string): Message | null {
+ const parsed = JSON.parse(message);
+ if (typeof parsed.t !== "number") {
+ return null;
+ }
+ return new Message(parsed.t, parsed.d);
+ }
+}
diff --git a/frontend/src/util/websocket.ts b/frontend/src/util/websocket.ts
deleted file mode 100644
index e69de29..0000000
diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json
index 93a83a4..cf80077 100644
--- a/frontend/tsconfig.json
+++ b/frontend/tsconfig.json
@@ -12,8 +12,9 @@
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
- "jsx": "preserve"
+ "jsx": "preserve",
+ "typeRoots": ["types/"]
},
- "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
+ "include": ["types/*.d.ts", "**/*.ts", "**/*.tsx"],
"exclude": ["node_modules"]
}
diff --git a/frontend/types/environment.d.ts b/frontend/types/environment.d.ts
index 16326d3..c44b4fa 100644
--- a/frontend/types/environment.d.ts
+++ b/frontend/types/environment.d.ts
@@ -4,5 +4,6 @@ declare namespace NodeJS {
DISCORD_SECRET: string;
SECRET: string;
CLIENT_ID: string;
+ WS_URI: string;
}
}
diff --git a/frontend/types/next-auth.d.ts b/frontend/types/next-auth.d.ts
new file mode 100644
index 0000000..6904b4a
--- /dev/null
+++ b/frontend/types/next-auth.d.ts
@@ -0,0 +1,10 @@
+import NextAuth, { Session as NextSession, User as NextUser } from "next-auth";
+
+declare module "next-auth" {
+ interface User extends NextUser {
+ id: string;
+ }
+ interface Session extends NextSession {
+ user: User;
+ }
+}
diff --git a/frontend/yarn.lock b/frontend/yarn.lock
index 3ebb75c..0452e14 100644
--- a/frontend/yarn.lock
+++ b/frontend/yarn.lock
@@ -942,6 +942,16 @@
prop-types "^15.7.2"
tslib "^2.1.0"
+"@socket.io/base64-arraybuffer@~1.0.2":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#568d9beae00b0d835f4f8c53fd55714986492e61"
+ integrity sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==
+
+"@socket.io/component-emitter@~3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.0.0.tgz#8863915676f837d9dad7b76f50cb500c1e9422e9"
+ integrity sha512-2pTGuibAXJswAPJjaKisthqS/NOK5ypG4LYT6tEAV0S/mxW0zOIvYvGK0V8w8+SHxAm6vRMSjqSalFXeBAqs+Q==
+
"@types/lodash.mergewith@4.6.6":
version "4.6.6"
resolved "https://registry.yarnpkg.com/@types/lodash.mergewith/-/lodash.mergewith-4.6.6.tgz#c4698f5b214a433ff35cb2c75ee6ec7f99d79f10"
@@ -1095,6 +1105,11 @@ babel-plugin-macros@^2.6.1:
cosmiconfig "^6.0.0"
resolve "^1.12.0"
+backo2@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"
+ integrity sha1-MasayLEpNjRj41s+u2n038+6eUc=
+
base64-js@^1.0.2:
version "1.5.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
@@ -1217,13 +1232,6 @@ buffer@5.6.0:
base64-js "^1.0.2"
ieee754 "^1.1.4"
-bufferutil@^4.0.1:
- version "4.0.6"
- resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.6.tgz#ebd6c67c7922a0e902f053e5d8be5ec850e48433"
- integrity sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==
- dependencies:
- node-gyp-build "^4.3.0"
-
builtin-status-codes@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
@@ -1457,26 +1465,25 @@ csstype@^3.0.2, csstype@^3.0.9:
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.10.tgz#2ad3a7bed70f35b965707c092e5f30b327c290e5"
integrity sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==
-d@1, d@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a"
- integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==
- dependencies:
- es5-ext "^0.10.50"
- type "^1.0.1"
-
data-uri-to-buffer@3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636"
integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==
-debug@2, debug@^2.2.0:
+debug@2:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
dependencies:
ms "2.0.0"
+debug@~4.3.1, debug@~4.3.2:
+ version "4.3.3"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664"
+ integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==
+ dependencies:
+ ms "2.1.2"
+
deepmerge@^4.0.0:
version "4.2.2"
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
@@ -1551,6 +1558,28 @@ encoding@0.1.13:
dependencies:
iconv-lite "^0.6.2"
+engine.io-client@~6.1.1:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-6.1.1.tgz#800d4b9db5487d169686729e5bd887afa78d36b0"
+ integrity sha512-V05mmDo4gjimYW+FGujoGmmmxRaDsrVr7AXA3ZIfa04MWM1jOfZfUwou0oNqhNwy/votUDvGDt4JA4QF4e0b4g==
+ dependencies:
+ "@socket.io/component-emitter" "~3.0.0"
+ debug "~4.3.1"
+ engine.io-parser "~5.0.0"
+ has-cors "1.1.0"
+ parseqs "0.0.6"
+ parseuri "0.0.6"
+ ws "~8.2.3"
+ xmlhttprequest-ssl "~2.0.0"
+ yeast "0.1.2"
+
+engine.io-parser@~5.0.0:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.3.tgz#ca1f0d7b11e290b4bfda251803baea765ed89c09"
+ integrity sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==
+ dependencies:
+ "@socket.io/base64-arraybuffer" "~1.0.2"
+
error-ex@^1.3.1:
version "1.3.2"
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
@@ -1593,37 +1622,11 @@ es-to-primitive@^1.2.1:
is-date-object "^1.0.1"
is-symbol "^1.0.2"
-es5-ext@^0.10.35, es5-ext@^0.10.50:
- version "0.10.53"
- resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1"
- integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==
- dependencies:
- es6-iterator "~2.0.3"
- es6-symbol "~3.1.3"
- next-tick "~1.0.0"
-
-es6-iterator@~2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
- integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c=
- dependencies:
- d "1"
- es5-ext "^0.10.35"
- es6-symbol "^3.1.1"
-
es6-object-assign@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c"
integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=
-es6-symbol@^3.1.1, es6-symbol@~3.1.3:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18"
- integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==
- dependencies:
- d "^1.0.1"
- ext "^1.1.2"
-
escalade@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
@@ -1657,13 +1660,6 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
md5.js "^1.3.4"
safe-buffer "^5.1.1"
-ext@^1.1.2:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52"
- integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==
- dependencies:
- type "^2.5.0"
-
fill-range@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
@@ -1786,6 +1782,11 @@ has-bigints@^1.0.1:
resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113"
integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==
+has-cors@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39"
+ integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=
+
has-flag@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
@@ -2065,11 +2066,6 @@ is-typed-array@^1.1.3, is-typed-array@^1.1.7:
foreach "^2.0.5"
has-tostringtag "^1.0.0"
-is-typedarray@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
- integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
-
is-weakref@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2"
@@ -2212,6 +2208,11 @@ ms@2.0.0:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
+ms@2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
nanoid@^3.1.23:
version "3.1.30"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362"
@@ -2232,11 +2233,6 @@ next-auth@^4.1.2:
preact-render-to-string "^5.1.19"
uuid "^8.3.2"
-next-tick@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
- integrity sha1-yobR/ogoFpsBICCOPchCS524NCw=
-
next@latest:
version "12.0.7"
resolved "https://registry.yarnpkg.com/next/-/next-12.0.7.tgz#33ebf229b81b06e583ab5ae7613cffe1ca2103fc"
@@ -2309,11 +2305,6 @@ node-fetch@2.6.1:
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
-node-gyp-build@^4.3.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3"
- integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==
-
node-html-parser@1.4.9:
version "1.4.9"
resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-1.4.9.tgz#3c8f6cac46479fae5800725edb532e9ae8fd816c"
@@ -2453,6 +2444,16 @@ parse-json@^5.0.0:
json-parse-even-better-errors "^2.3.0"
lines-and-columns "^1.1.6"
+parseqs@0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.6.tgz#8e4bb5a19d1cdc844a08ac974d34e273afa670d5"
+ integrity sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==
+
+parseuri@0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.6.tgz#e1496e829e3ac2ff47f39a4dd044b32823c4a25a"
+ integrity sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==
+
path-browserify@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd"
@@ -2807,6 +2808,26 @@ side-channel@^1.0.4:
get-intrinsic "^1.0.2"
object-inspect "^1.9.0"
+socket.io-client@^4.4.1:
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.4.1.tgz#b6aa9448149d09b8d0b2bbf3d2fac310631fdec9"
+ integrity sha512-N5C/L5fLNha5Ojd7Yeb/puKcPWWcoB/A09fEjjNsg91EDVr5twk/OEyO6VT9dlLSUNY85NpW6KBhVMvaLKQ3vQ==
+ dependencies:
+ "@socket.io/component-emitter" "~3.0.0"
+ backo2 "~1.0.2"
+ debug "~4.3.2"
+ engine.io-client "~6.1.1"
+ parseuri "0.0.6"
+ socket.io-parser "~4.1.1"
+
+socket.io-parser@~4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.1.1.tgz#0ad53d980781cab1eabe320417d8480c0133e62d"
+ integrity sha512-USQVLSkDWE5nbcY760ExdKaJxCE65kcsG/8k5FDGZVVxpD1pA7hABYXYkCUvxUuYYh/+uQw0N/fvBzfT8o07KA==
+ dependencies:
+ "@socket.io/component-emitter" "~3.0.0"
+ debug "~4.3.1"
+
source-map@0.7.3:
version "0.7.3"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
@@ -3025,23 +3046,6 @@ type-fest@^0.7.1:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48"
integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==
-type@^1.0.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0"
- integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==
-
-type@^2.5.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/type/-/type-2.5.0.tgz#0a2e78c2e77907b252abe5f298c1b01c63f0db3d"
- integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==
-
-typedarray-to-buffer@^3.1.5:
- version "3.1.5"
- resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
- integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==
- dependencies:
- is-typedarray "^1.0.0"
-
typescript@4.3.2:
version "4.3.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.2.tgz#399ab18aac45802d6f2498de5054fcbbe716a805"
@@ -3082,13 +3086,6 @@ use-subscription@1.5.1:
dependencies:
object-assign "^4.1.1"
-utf-8-validate@^5.0.2:
- version "5.0.8"
- resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.8.tgz#4a735a61661dbb1c59a0868c397d2fe263f14e58"
- integrity sha512-k4dW/Qja1BYDl2qD4tOMB9PFVha/UJtxTc1cXYOe3WwA/2m0Yn4qB7wLMpJyLJ/7DR0XnTut3HsCSzDT4ZvKgA==
- dependencies:
- node-gyp-build "^4.3.0"
-
util-deprecate@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
@@ -3136,18 +3133,6 @@ webidl-conversions@^4.0.2:
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
-websocket@^1.0.34:
- version "1.0.34"
- resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111"
- integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==
- dependencies:
- bufferutil "^4.0.1"
- debug "^2.2.0"
- es5-ext "^0.10.50"
- typedarray-to-buffer "^3.1.5"
- utf-8-validate "^5.0.2"
- yaeti "^0.0.6"
-
whatwg-url@^7.0.0:
version "7.1.0"
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06"
@@ -3180,16 +3165,21 @@ which-typed-array@^1.1.2:
has-tostringtag "^1.0.0"
is-typed-array "^1.1.7"
+ws@~8.2.3:
+ version "8.2.3"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba"
+ integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==
+
+xmlhttprequest-ssl@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz#91360c86b914e67f44dce769180027c0da618c67"
+ integrity sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==
+
xtend@^4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
-yaeti@^0.0.6:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577"
- integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=
-
yallist@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
@@ -3200,6 +3190,11 @@ yaml@^1.7.2:
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
+yeast@0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"
+ integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk=
+
yocto-queue@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"