diff --git a/src/app/CommandManager.ts b/src/app/CommandManager.ts new file mode 100644 index 0000000..099c7c0 --- /dev/null +++ b/src/app/CommandManager.ts @@ -0,0 +1,14 @@ +import * as readline from 'readline'; + +class CommandManager +{ + private commands: Map = new Map(); + + public async boot() { + console.log('[✅] Command manager loaded'); + } + + // Scan for files +} + +export default new CommandManager(); \ No newline at end of file diff --git a/src/app/events/CharacterConnect.ts b/src/app/events/CharacterConnect.ts index b89b735..a9077f3 100644 --- a/src/app/events/CharacterConnect.ts +++ b/src/app/events/CharacterConnect.ts @@ -1,5 +1,5 @@ import { Socket, Server } from "socket.io"; -import {TSocket} from "../types/TSocket"; +import {TSocket} from "../utilities/Types"; import CharacterRepository from "../repositories/CharacterRepository"; import {Character} from "@prisma/client"; diff --git a/src/app/events/CharacterCreate.ts b/src/app/events/CharacterCreate.ts index 802cff6..f699d4c 100644 --- a/src/app/events/CharacterCreate.ts +++ b/src/app/events/CharacterCreate.ts @@ -1,8 +1,8 @@ import { Socket, Server } from "socket.io"; -import {TSocket} from "../types/TSocket"; +import {TSocket} from "../utilities/Types"; import {Character} from "@prisma/client"; import CharacterRepository from "../repositories/CharacterRepository"; -import {ZCharacterCreate} from "../types/zod/Character"; +import {ZCharacterCreate} from "../utilities/ZodTypes"; export default function CharacterCreate(socket: TSocket, io: Server) { socket.on('character:create', async (data: any) => { diff --git a/src/app/events/CharacterDelete.ts b/src/app/events/CharacterDelete.ts index 16fc595..ec93fb3 100644 --- a/src/app/events/CharacterDelete.ts +++ b/src/app/events/CharacterDelete.ts @@ -1,8 +1,8 @@ -import { Socket, Server } from "socket.io"; -import {TSocket} from "../types/TSocket"; +import {Server} from "socket.io"; +import {TSocket} from "../utilities/Types"; import {Character} from "@prisma/client"; import CharacterRepository from "../repositories/CharacterRepository"; -import {ZCharacterDelete} from "../types/zod/Character"; +import {ZCharacterDelete} from "../utilities/ZodTypes"; export default function CharacterCreate(socket: TSocket, io: Server) { socket.on('character:delete', async (data: any) => { diff --git a/src/app/events/CharacterList.ts b/src/app/events/CharacterList.ts index 10f346b..c9e5163 100644 --- a/src/app/events/CharacterList.ts +++ b/src/app/events/CharacterList.ts @@ -1,5 +1,5 @@ import { Socket, Server } from "socket.io"; -import {TSocket} from "../types/TSocket"; +import {TSocket} from "../utilities/Types"; import {Character} from "@prisma/client"; import CharacterRepository from "../repositories/CharacterRepository"; diff --git a/src/app/events/Login.ts b/src/app/events/Login.ts index 9e7f4dc..7240de5 100644 --- a/src/app/events/Login.ts +++ b/src/app/events/Login.ts @@ -1,5 +1,5 @@ -import { Socket, Server } from "socket.io"; -import {TSocket} from "../types/TSocket"; +import { Server } from "socket.io"; +import {TSocket} from "../utilities/Types"; export default function Login(socket: TSocket, io: Server) { socket.on('login', () => { diff --git a/src/app/index.d.ts b/src/app/index.d.ts deleted file mode 100644 index 096ee31..0000000 --- a/src/app/index.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import "socket.io"; - -declare module "socket.io" { - interface Socket { - data: { - user: { - id: string; - username: string; - }; - }; - handshake: { - headers: { - cookie: string; - }; - }; - } -} \ No newline at end of file diff --git a/src/app/logo.txt b/src/app/logo.txt deleted file mode 100644 index 666f554..0000000 --- a/src/app/logo.txt +++ /dev/null @@ -1,6 +0,0 @@ -███╗░░██╗███████╗░██╗░░░░░░░██╗  ░██████╗░██╗░░░██╗███████╗░██████╗████████╗ -████╗░██║██╔════╝░██║░░██╗░░██║  ██╔═══██╗██║░░░██║██╔════╝██╔════╝╚══██╔══╝ -██╔██╗██║█████╗░░░╚██╗████╗██╔╝  ██║██╗██║██║░░░██║█████╗░░╚█████╗░░░░██║░░░ -██║╚████║██╔══╝░░░░████╔═████║░  ╚██████╔╝██║░░░██║██╔══╝░░░╚═══██╗░░░██║░░░ -██║░╚███║███████╗░░╚██╔╝░╚██╔╝░  ░╚═██╔═╝░╚██████╔╝███████╗██████╔╝░░░██║░░░ -╚═╝░░╚══╝╚══════╝░░░╚═╝░░░╚═╝░░  ░░░╚═╝░░░░╚═════╝░╚══════╝╚═════╝░░░░╚═╝░░░ \ No newline at end of file diff --git a/src/app/middleware/Authentication.ts b/src/app/middleware/Authentication.ts index d012f38..1c8f7b5 100644 --- a/src/app/middleware/Authentication.ts +++ b/src/app/middleware/Authentication.ts @@ -1,12 +1,12 @@ // socket io jwt auth middleware import { verify } from 'jsonwebtoken'; -import { TSocket } from '../types/TSocket'; +import { TSocket } from '../utilities/Types'; import config from "../utilities/Config"; import UserRepository from "../repositories/UserRepository"; import {User} from "@prisma/client"; -export async function Authentication (socket: TSocket, next: any) { - +export async function Authentication (socket: TSocket, next: any) +{ if (!socket.request.headers.cookie) { console.log('No cookie provided'); return next(new Error('Authentication error')); diff --git a/src/app/types/TCharacter.ts b/src/app/types/TCharacter.ts deleted file mode 100644 index c67b3b9..0000000 --- a/src/app/types/TCharacter.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Socket } from 'socket.io'; -import {Character as ICharacter, User} from "@prisma/client"; - -export type TCharacter = Socket & { - user?: User, - character?: ICharacter -} \ No newline at end of file diff --git a/src/app/types/TSocket.ts b/src/app/types/TSocket.ts deleted file mode 100644 index 8d85275..0000000 --- a/src/app/types/TSocket.ts +++ /dev/null @@ -1,17 +0,0 @@ -import {Socket} from "socket.io"; -import {Character, User} from '@prisma/client'; - -export type TSocket = Socket & { - user?: User - character?: Character - handshake?: { - query?: { - token?: any - } - } - request?: { - headers?: { - cookie?: any - } - } -} \ No newline at end of file diff --git a/src/app/types/TZoneCharacter.ts b/src/app/types/TZoneCharacter.ts deleted file mode 100644 index ffbd108..0000000 --- a/src/app/types/TZoneCharacter.ts +++ /dev/null @@ -1,5 +0,0 @@ -import {Character} from "@prisma/client"; - -export type TZoneCharacter = Character & { - -} \ No newline at end of file diff --git a/src/app/utilities/Types.ts b/src/app/utilities/Types.ts new file mode 100644 index 0000000..a44d8f9 --- /dev/null +++ b/src/app/utilities/Types.ts @@ -0,0 +1,26 @@ +import { Socket } from 'socket.io'; +import {Character, Character as ICharacter, User} from "@prisma/client"; + +export type TSocket = Socket & { + user?: User + character?: Character + handshake?: { + query?: { + token?: any + } + } + request?: { + headers?: { + cookie?: any + } + } +} + +export type TCharacter = Socket & { + user?: User, + character?: ICharacter +} + +export type TZoneCharacter = Character & { + +} \ No newline at end of file diff --git a/src/app/types/zod/Character.ts b/src/app/utilities/ZodTypes.ts similarity index 62% rename from src/app/types/zod/Character.ts rename to src/app/utilities/ZodTypes.ts index bab3000..646fb8a 100644 --- a/src/app/types/zod/Character.ts +++ b/src/app/utilities/ZodTypes.ts @@ -1,9 +1,9 @@ import { z } from 'zod'; export const ZCharacterCreate = z.object({ - name: z.string().min(3).max(255) + name: z.string().min(3).max(255) }); export const ZCharacterDelete = z.object({ - character_id: z.number() + character_id: z.number() }); \ No newline at end of file diff --git a/src/logo.txt b/src/logo.txt new file mode 100644 index 0000000..e10423c --- /dev/null +++ b/src/logo.txt @@ -0,0 +1,6 @@ +███╗░░██╗███████╗░██╗░░░░░░░██╗ ░██████╗░██╗░░░██╗███████╗░██████╗████████╗ +████╗░██║██╔════╝░██║░░██╗░░██║ ██╔═══██╗██║░░░██║██╔════╝██╔════╝╚══██╔══╝ +██╔██╗██║█████╗░░░╚██╗████╗██╔╝ ██║██╗██║██║░░░██║█████╗░░╚█████╗░░░░██║░░░ +██║╚████║██╔══╝░░░░████╔═████║░ ╚██████╔╝██║░░░██║██╔══╝░░░╚═══██╗░░░██║░░░ +██║░╚███║███████╗░░╚██╔╝░╚██╔╝░ ░╚═██╔═╝░╚██████╔╝███████╗██████╔╝░░░██║░░░ +╚═╝░░╚══╝╚══════╝░░░╚═╝░░░╚═╝░░ ░░░╚═╝░░░░╚═════╝░╚══════╝╚═════╝░░░░╚═╝░░░ \ No newline at end of file diff --git a/src/server.ts b/src/server.ts index 680750a..70ed7fd 100644 --- a/src/server.ts +++ b/src/server.ts @@ -5,12 +5,13 @@ import {createServer as httpServer} from 'http'; import {addAuthRoutes} from './app/utilities/Http'; import cors from 'cors'; import {Server as SocketServer} from 'socket.io'; -import {TSocket} from "./app/types/TSocket"; +import {TSocket} from "./app/utilities/Types"; import config from './app/utilities/Config'; import prisma from './app/utilities/Prisma'; import ZoneManager from "./app/ZoneManager"; import UserManager from "./app/UserManager"; import {Authentication} from "./app/middleware/Authentication"; +import CommandManager from "./app/CommandManager"; export class Server { @@ -36,7 +37,7 @@ export class Server */ public async start() { // Print logo - const art = fs.readFileSync(path.join(__dirname, 'app', 'logo.txt'), 'utf8'); + const art = fs.readFileSync(path.join(__dirname, 'logo.txt'), 'utf8'); console.log('\x1b[31m%s\x1b[0m', art + '\n'); // Check prisma connection @@ -64,6 +65,9 @@ export class Server // Load zone manager await ZoneManager.boot(); + // Load command manager + await CommandManager.boot(); + // Listen for socket connections this.io.on('connection', this.handleConnection.bind(this)); }