Did some cleaning, worked on notifications

This commit is contained in:
Dennis Postma 2024-06-01 19:36:53 +02:00
parent 267e61cc7f
commit 6a995a83ab
16 changed files with 66 additions and 68 deletions

14
src/app/CommandManager.ts Normal file
View File

@ -0,0 +1,14 @@
import * as readline from 'readline';
class CommandManager
{
private commands: Map<string, Function> = new Map();
public async boot() {
console.log('[✅] Command manager loaded');
}
// Scan for files
}
export default new CommandManager();

View File

@ -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";

View File

@ -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) => {

View File

@ -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) => {

View File

@ -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";

View File

@ -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', () => {

17
src/app/index.d.ts vendored
View File

@ -1,17 +0,0 @@
import "socket.io";
declare module "socket.io" {
interface Socket {
data: {
user: {
id: string;
username: string;
};
};
handshake: {
headers: {
cookie: string;
};
};
}
}

View File

@ -1,6 +0,0 @@
███╗░░██╗███████╗░██╗░░░░░░░██╗  ░██████╗░██╗░░░██╗███████╗░██████╗████████╗
████╗░██║██╔════╝░██║░░██╗░░██║  ██╔═══██╗██║░░░██║██╔════╝██╔════╝╚══██╔══╝
██╔██╗██║█████╗░░░╚██╗████╗██╔╝  ██║██╗██║██║░░░██║█████╗░░╚█████╗░░░░██║░░░
██║╚████║██╔══╝░░░░████╔═████║░  ╚██████╔╝██║░░░██║██╔══╝░░░╚═══██╗░░░██║░░░
██║░╚███║███████╗░░╚██╔╝░╚██╔╝░  ░╚═██╔═╝░╚██████╔╝███████╗██████╔╝░░░██║░░░
╚═╝░░╚══╝╚══════╝░░░╚═╝░░░╚═╝░░  ░░░╚═╝░░░░╚═════╝░╚══════╝╚═════╝░░░░╚═╝░░░

View File

@ -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'));

View File

@ -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
}

View File

@ -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
}
}
}

View File

@ -1,5 +0,0 @@
import {Character} from "@prisma/client";
export type TZoneCharacter = Character & {
}

View File

@ -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 & {
}

View File

@ -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()
});

6
src/logo.txt Normal file
View File

@ -0,0 +1,6 @@
███╗░░██╗███████╗░██╗░░░░░░░██╗ ░██████╗░██╗░░░██╗███████╗░██████╗████████╗
████╗░██║██╔════╝░██║░░██╗░░██║ ██╔═══██╗██║░░░██║██╔════╝██╔════╝╚══██╔══╝
██╔██╗██║█████╗░░░╚██╗████╗██╔╝ ██║██╗██║██║░░░██║█████╗░░╚█████╗░░░░██║░░░
██║╚████║██╔══╝░░░░████╔═████║░ ╚██████╔╝██║░░░██║██╔══╝░░░╚═══██╗░░░██║░░░
██║░╚███║███████╗░░╚██╔╝░╚██╔╝░ ░╚═██╔═╝░╚██████╔╝███████╗██████╔╝░░░██║░░░
╚═╝░░╚══╝╚══════╝░░░╚═╝░░░╚═╝░░ ░░░╚═╝░░░░╚═════╝░╚══════╝╚═════╝░░░░╚═╝░░░

View File

@ -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));
}