diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..b58b603
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,5 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/Ellie-v4.iml b/.idea/Ellie-v4.iml
new file mode 100644
index 0000000..0c8867d
--- /dev/null
+++ b/.idea/Ellie-v4.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/discord.xml b/.idea/discord.xml
new file mode 100644
index 0000000..d8e9561
--- /dev/null
+++ b/.idea/discord.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..d7dbcb8
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 426b83d..99bbe64 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,7 +2,20 @@
Experimental changelog. Mostly based on [keepachangelog](https://keepachangelog.com/en/1.0.0/) except date format. a-c-f-r-o
-## [4.0.5-alpha] - 6.01.2022
+##[4.0.6-beta1] - 27-01-2022
### Added
+
+- Most of the main base system
+
+## [4.0.6-alpha] - 16-01-2022
+
+### Added
+
+- Added the groundwork for the database system
+
+## [4.0.5-alpha] - 6-01-2022
+
+### Added
+
- Initial bot system stuff
\ No newline at end of file
diff --git a/package.json b/package.json
index ee89d0e..5e0cb0f 100644
--- a/package.json
+++ b/package.json
@@ -5,15 +5,17 @@
"license": "GPL-3.0",
"dependencies": {
"discord.js": "^13.6.0",
- "dotenv": "^11.0.0",
+ "dotenv": "^14.3.2",
"mysql2": "^2.3.3",
"reflect-metadata": "^0.1.13",
+ "socket.io-client": "^4.4.1",
"typeorm": "^0.2.41"
},
"devDependencies": {
- "@types/node": "^17.0.8",
+ "@types/node": "^17.0.10",
+ "@types/socket.io-client": "^3.0.0",
"nodemon": "^2.0.15",
- "typescript": "^4.5.4"
+ "typescript": "^4.5.5"
},
"scripts": {
"dev": "nodemon ./src/index.ts",
diff --git a/src/client/client.ts b/src/client/client.ts
index 8f1a69d..5b389ce 100644
--- a/src/client/client.ts
+++ b/src/client/client.ts
@@ -1,21 +1,34 @@
import { Client, ClientOptions, Collection } from 'discord.js';
import BaseEvent from '../utils/structures/BaseEvent';
import BaseCommand from '../utils/structures/BaseCommand';
+import { GuildConfiguration } from '../typeorm/entities/GuildConfiguration';
export default class DiscordClient extends Client {
-
private _commands = new Collection();
private _events = new Collection();
private _prefix: string = '!';
+ private _configs = new Collection();
constructor(options: ClientOptions) {
super(options);
}
- get commands(): Collection { return this._commands; }
- get events(): Collection { return this._events; }
- get prefix(): string { return this._prefix; }
-
- set prefix(prefix: string) { this._prefix = prefix; }
-
+ get commands(): Collection {
+ return this._commands;
+ }
+ get events(): Collection {
+ return this._events;
+ }
+ get prefix(): string {
+ return this._prefix;
+ }
+ set prefix(prefix: string) {
+ this._prefix = prefix;
+ }
+ get configs() {
+ return this._configs;
+ }
+ set configs(guildConfigs: Collection) {
+ this._configs = guildConfigs;
+ }
}
diff --git a/src/commands/mod/BanCommand.ts b/src/commands/mod/BanCommand.ts
new file mode 100644
index 0000000..b64058b
--- /dev/null
+++ b/src/commands/mod/BanCommand.ts
@@ -0,0 +1,37 @@
+import { Message } from "discord.js";
+import BaseCommand from "../../utils/structures/BaseCommand";
+import DiscordClient from "../../client/client";
+import { getRepository, Repository } from "typeorm";
+import { GuildBanLog } from '../../typeorm/entities/GuildBanLog';
+import { ModerationLog } from "../../typeorm/entities/ModerationLog";
+
+export default class BanCommand extends BaseCommand {
+ constructor(
+ private readonly modLogRepository: Repository = getRepository(
+ ModerationLog
+ )
+ ) {
+ super('ban', 'mod', []);
+ }
+
+ async run(client: DiscordClient, message: Message, args: Array) {
+ console.log(args);
+ const [memberId, ...rest] = args;
+ const reason = rest.join(' ');
+ try {
+ // const member = await message.guild?.members.fetch(memberId)!;
+ // await member.ban({ reason });
+ const guildBan = this.modLogRepository.create({
+ guildId: message.guildId!,
+ issuedBy: message.author.id,
+ issuedOn: new Date(),
+ type: 'ban',
+ reason,
+ memberId,
+ });
+ await this.modLogRepository.save(guildBan);
+ } catch (err) {
+ console.log(err);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/commands/mod/ChprefixCommand.ts b/src/commands/mod/ChprefixCommand.ts
new file mode 100644
index 0000000..04743a0
--- /dev/null
+++ b/src/commands/mod/ChprefixCommand.ts
@@ -0,0 +1,35 @@
+import { Message } from "discord.js";
+import BaseCommand from "../../utils/structures/BaseCommand";
+import DiscordClient from "../../client/client";
+import { getRepository } from "typeorm";
+import { GuildConfiguration } from "../../typeorm/entities/GuildConfiguration";
+
+export default class ChprefixCommand extends BaseCommand {
+ constructor(
+ private readonly guildConfigRepository = getRepository(GuildConfiguration)
+ ) {
+ super('chprefix', 'mod', []);
+ }
+
+ async run(client: DiscordClient, message: Message, args: Array) {
+ if (!args.length) {
+ message.channel.send('Please provide an argument!');
+ return;
+ }
+ const [newPrefix] = args;
+ try {
+ const config = client.configs.get(message.guildId!);
+ const updatedConfig = await this.guildConfigRepository.save({
+ ...config,
+ prefix: newPrefix,
+ });
+ console.log(updatedConfig);
+ message.channel.send('Updated prefix successfully!');
+ client.configs.set(message.guildId!, updatedConfig);
+ console.log(client.configs);
+ } catch (err) {
+ console.log(err);
+ message.channel.send('Something went wrong.');
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/commands/mod/ChwelcomechannelCommand.ts b/src/commands/mod/ChwelcomechannelCommand.ts
new file mode 100644
index 0000000..bf201ef
--- /dev/null
+++ b/src/commands/mod/ChwelcomechannelCommand.ts
@@ -0,0 +1,35 @@
+import { Message } from "discord.js";
+import BaseCommand from "../../utils/structures/BaseCommand";
+import DiscordClient from "../../client/client";
+import { GuildConfiguration } from "../../typeorm/entities/GuildConfiguration";
+import { getRepository } from "typeorm";
+
+export default class ChwelcomechannelCommand extends BaseCommand {
+ constructor(
+ private readonly guildConfigRepository = getRepository(GuildConfiguration)
+ ) {
+ super('chwemcomechannel', 'mod', []);
+ }
+
+ async run(client: DiscordClient, message: Message, args: Array) {
+ if (!args.length) {
+ message.channel.send('Please provide an argument!');
+ return;
+ }
+ const [newChannelId] = args;
+ try {
+ const config = client.configs.get(message.guildId!);
+ const updatedConfig = await this.guildConfigRepository.save({
+ ...config,
+ welcomeChannelId: newChannelId,
+ });
+ console.log(updatedConfig);
+ message.channel.send('Updated Welcome Channel successfully!');
+ client.configs.set(message.guildId!, updatedConfig);
+ console.log(client.configs);
+ } catch (err) {
+ console.log(err);
+ message.channel.send('Something went wrong.');
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/commands/mod/KickCommand.ts b/src/commands/mod/KickCommand.ts
new file mode 100644
index 0000000..92b9a54
--- /dev/null
+++ b/src/commands/mod/KickCommand.ts
@@ -0,0 +1,38 @@
+import { Message } from "discord.js";
+import BaseCommand from "../../utils/structures/BaseCommand";
+import DiscordClient from "../../client/client";
+import { getRepository, Repository } from "typeorm";
+import { ModerationLog } from "../../typeorm/entities/ModerationLog";
+
+export default class KickCommand extends BaseCommand {
+ constructor(
+ private readonly modLogRepository: Repository = getRepository(
+ ModerationLog
+ )
+ ) {
+ super('kick', 'mod', []);
+ }
+
+ async run(client: DiscordClient, message: Message, args: Array) {
+ console.log(args);
+ const [memberId, ...rest] = args;
+ const reason = rest.join(' ');
+ try {
+ // const member = await message.guild?.members.fetch(memberId)!;
+ // await member.kick(reason);
+ const date = new Date();
+ date.setDate(date.getDate() - 6);
+ const modLog = this.modLogRepository.create({
+ guildId: message.guildId!,
+ memberId,
+ issuedBy: message.author.id,
+ issuedOn: date,
+ reason,
+ type: 'kick'
+ });
+ await this.modLogRepository.save(modLog);
+ } catch (err) {
+ console.log(err);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/commands/mod/TimeoutCommand.ts b/src/commands/mod/TimeoutCommand.ts
new file mode 100644
index 0000000..2f00425
--- /dev/null
+++ b/src/commands/mod/TimeoutCommand.ts
@@ -0,0 +1,41 @@
+import { Message } from 'discord.js';
+import BaseCommand from "../../utils/structures/BaseCommand";
+import DiscordClient from "../../client/client";
+import { getRepository, Repository } from "typeorm";
+import { ModerationLog } from "../../typeorm/entities/ModerationLog";
+
+export default class TimeoutCommand extends BaseCommand {
+ constructor(
+ private readonly modLogRepository: Repository = getRepository(
+ ModerationLog
+ )
+ ) {
+ super('timeout', 'mod', []);
+ }
+
+ async run(client: DiscordClient, message: Message, args: Array) {
+ console.log(args);
+ const [memberId, timeoutStr, ...rest] = args;
+ const reason = rest.join(' ');
+ const time = parseInt(timeoutStr);
+ if (isNaN(time)) {
+ message.channel.send('Invalid Time');
+ return;
+ }
+ try {
+ const member = await message.guild?.members.fetch(memberId)!;
+ await member.timeout(time * 1000, reason);
+ const modLog = this.modLogRepository.create({
+ guildId: message.guildId!,
+ memberId,
+ issuedBy: message.author.id,
+ issuedOn: new Date(),
+ reason,
+ type: 'timeout',
+ });
+ await this.modLogRepository.save(modLog);
+ } catch (err) {
+ console.log(err);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/events/GuildCreateEvent.ts b/src/events/GuildCreateEvent.ts
index b3d4b90..325abdd 100644
--- a/src/events/GuildCreateEvent.ts
+++ b/src/events/GuildCreateEvent.ts
@@ -7,26 +7,29 @@ import { GuildConfiguration } from '../typeorm/entities/GuildConfiguration';
export default class GuildCreateEvent extends BaseEvent {
constructor(
- private readonly guildConfigRepository = getRepository (GuildConfiguration)
+ private readonly guildConfigRepository = getRepository(GuildConfiguration)
) {
super('guildCreate');
}
-
- async run(client: DiscordClient, guild: Guild) {
- console.log('Hellp World!');
- console.log(`Joined ${guild.name}`);
+ async run(client: DiscordClient, guild: Guild) {
+ console.log('Hello, World!')
+ console.log(`Joined ${guild.name}`);
const config = await this.guildConfigRepository.findOne({
guildId: guild.id,
});
if (config) {
- console.log('A configuration was found!');
+ console.log('A configuration was found!')
+ client.configs.set(guild.id, config);
+ console.log(client.configs);
} else {
console.log('A configuration was not found. Creating One.');
const newConfig = this.guildConfigRepository.create({
guildId: guild.id,
- })
- return this.guildConfigRepository.save(newConfig);
+ });
+ const savedConfig = await this.guildConfigRepository.save(newConfig);
+ client.configs.set(guild.id, savedConfig);
+ console.log(client.configs);
}
}
}
\ No newline at end of file
diff --git a/src/events/GuildMemberAddEvent.ts b/src/events/GuildMemberAddEvent.ts
new file mode 100644
index 0000000..1effe4b
--- /dev/null
+++ b/src/events/GuildMemberAddEvent.ts
@@ -0,0 +1,27 @@
+// https://discord.js.org/#/docs/main/stable/class/Client?scrollTo=e-guildMemberAdd
+import { GuildMember, TextChannel} from "discord.js";
+import BaseEvent from "../utils/structures/BaseEvent";
+import DiscordClient from "../client/client";
+
+export default class GuildMemberAddEvent extends BaseEvent {
+ constructor() {
+ super('guildMemberAdd');
+ }
+
+ async run(client: DiscordClient, member: GuildMember) {
+ console.log(`Guild Member Joined`);
+ console.log(`Joined ${member.guild.id} ${member.guild.name}`);
+ const config = client.configs.get(member.guild.id);
+ console.log(config);
+ if (!config) return;
+ if (config.welcomeChannelId) {
+ const channel = member.guild.channels.cache.get(
+ config.welcomeChannelId
+ ) as TextChannel;
+ if (!channel) console.log(`No welcome channel found`);
+ else channel.send(`Welcome ${member}`);
+ } else {
+ console.log('No welcome channel set.');
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/events/message/MessageEvent.ts b/src/events/message/MessageEvent.ts
index 9f8ac4c..7267fd4 100644
--- a/src/events/message/MessageEvent.ts
+++ b/src/events/message/MessageEvent.ts
@@ -9,11 +9,16 @@ export default class MessageEvent extends BaseEvent {
async run(client: DiscordClient, message: Message) {
if (message.author.bot) return;
- if (message.content.startsWith(client.prefix)) {
+ const config = client.configs.get(message.guildId!);
+ if (!config) {
+ message.channel.send('No configuration set.');
+ return;
+ }
+ if (message.content.startsWith(config.prefix)) {
const [cmdName, ...cmdArgs] = message.content
- .slice(client.prefix.length)
- .trim()
- .split(/\s+/);
+ .slice(config.prefix.length)
+ .trim()
+ .split(/\s+/);
const command = client.commands.get(cmdName);
if (command) {
command.run(client, message, cmdArgs);
diff --git a/src/index.ts b/src/index.ts
index 18e67a1..9d73247 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,14 +1,32 @@
require('dotenv').config();
import 'reflect-metadata';
import { registerCommands, registerEvents } from './utils/registry';
-import config from '../slappey.json';
import DiscordClient from './client/client';
-import { Intents } from 'discord.js';
-import { createConnection } from 'typeorm';
+import { Collection, Intents } from 'discord.js';
+import { createConnection, getRepository } from 'typeorm';
import { GuildConfiguration } from './typeorm/entities/GuildConfiguration';
-const client = new DiscordClient({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES ] });
+import { io } from 'socket.io-client';
+import { entities } from './typeorm/entities';
+
+const client = new DiscordClient({
+ intents: [
+ Intents.FLAGS.GUILDS,
+ Intents.FLAGS.GUILD_MESSAGES,
+ Intents.FLAGS.GUILD_MEMBERS,
+ ],
+});
(async () => {
+ const socket = io('http://localhost:3001');
+
+ socket.on('guildPrefixUpdate', (config: GuildConfiguration) => {
+ console.log('guildPrefixUpdate');
+ console.log(config);
+ console.log(client.configs)
+ client.configs.set(config.guildId, config);
+ console.log(client.configs);
+ });
+
await createConnection({
type: 'mysql',
host: process.env.MYSQL_DB_HOST,
@@ -17,11 +35,17 @@ const client = new DiscordClient({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS
password: process.env.MYSQL_DB_PASSWORD,
database: process.env.MYSQL_DB_DATABASE,
synchronize: true,
- entities: [GuildConfiguration]
+ entities: entities,
});
- client.prefix = config.prefix || client.prefix;
+
+ const configRepo = getRepository(GuildConfiguration);
+ const guildConfigs = await configRepo.find();
+ const configs = new Collection();
+ guildConfigs.forEach((config) => configs.set(config.guildId, config));
+
+ console.log(guildConfigs);
+
await registerCommands(client, '../commands');
await registerEvents(client, '../events');
await client.login(process.env.DJS_BOT_TOKEN);
})();
-
diff --git a/src/typeorm/entities/GuildBanLog.ts b/src/typeorm/entities/GuildBanLog.ts
new file mode 100644
index 0000000..c350d44
--- /dev/null
+++ b/src/typeorm/entities/GuildBanLog.ts
@@ -0,0 +1,22 @@
+import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
+
+@Entity({ name: 'guild_bans' })
+export class GuildBanLog {
+ @PrimaryGeneratedColumn()
+ id: number;
+
+ @Column({ name: 'guild_id' })
+ guildId: string;
+
+ @Column({ name: 'banned_member_id' })
+ bannedMemberId: string;
+
+ @Column({ name: 'issued_by' })
+ issuedBy: string;
+
+ @Column()
+ reason?: string;
+
+ @Column({ name: 'issued_on' })
+ issuedOn: Date;
+}
\ No newline at end of file
diff --git a/src/typeorm/entities/ModerationLog.ts b/src/typeorm/entities/ModerationLog.ts
new file mode 100644
index 0000000..cfe01f9
--- /dev/null
+++ b/src/typeorm/entities/ModerationLog.ts
@@ -0,0 +1,26 @@
+import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
+import { ModerationActionType } from "../../utils/types";
+
+@Entity({ name: 'moderation_logs' })
+export class ModerationLog {
+ @PrimaryGeneratedColumn()
+ id: number;
+
+ @Column({ name: 'guild_id' })
+ guildId: string;
+
+ @Column({ name: 'member_id' })
+ memberId: string;
+
+ @Column({ name: 'issued_by' })
+ issuedBy: string;
+
+ @Column()
+ reason?: string;
+
+ @Column({ name: 'issued_on' })
+ issuedOn: Date;
+
+ @Column()
+ type: ModerationActionType;
+}
\ No newline at end of file
diff --git a/src/typeorm/entities/index.ts b/src/typeorm/entities/index.ts
new file mode 100644
index 0000000..b776041
--- /dev/null
+++ b/src/typeorm/entities/index.ts
@@ -0,0 +1,5 @@
+import { GuildBanLog } from "./GuildBanLog";
+import { GuildConfiguration } from "./GuildConfiguration";
+import { ModerationLog } from "./ModerationLog";
+
+export const entities = [GuildBanLog, GuildConfiguration, ModerationLog];
\ No newline at end of file
diff --git a/src/utils/types.ts b/src/utils/types.ts
new file mode 100644
index 0000000..a451744
--- /dev/null
+++ b/src/utils/types.ts
@@ -0,0 +1 @@
+export type ModerationActionType = 'ban' | 'kick' | 'timeout';
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index f32affa..6c7415c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -33,6 +33,16 @@
resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.2.1.tgz#b88b5724283db80b507cd612caee9a1947412a20"
integrity sha512-BrzrgtaqEre0qfvI8sMTaEvx+bayuhPmfe2rfeUGPPHYr/PLxCOqkOe4TQTDPb+qcqgNcsAtXV/Ew74mcDIE8w==
+"@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==
+
"@sqltools/formatter@^1.2.2":
version "1.2.3"
resolved "https://registry.yarnpkg.com/@sqltools/formatter/-/formatter-1.2.3.tgz#1185726610acc37317ddab11c3c7f9066966bd20"
@@ -53,11 +63,23 @@
"@types/node" "*"
form-data "^3.0.0"
-"@types/node@*", "@types/node@^17.0.8":
+"@types/node@*":
version "17.0.8"
resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.8.tgz#50d680c8a8a78fe30abe6906453b21ad8ab0ad7b"
integrity sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg==
+"@types/node@^17.0.10":
+ version "17.0.10"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.10.tgz#616f16e9d3a2a3d618136b1be244315d95bd7cab"
+ integrity sha512-S/3xB4KzyFxYGCppyDt68yzBU9ysL88lSdIah4D6cptdcltc4NCPCAMc0+PCpg/lLIyC7IPvj2Z52OJWeIUkog==
+
+"@types/socket.io-client@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@types/socket.io-client/-/socket.io-client-3.0.0.tgz#d0b8ea22121b7c1df68b6a923002f9c8e3cefb42"
+ integrity sha512-s+IPvFoEIjKA3RdJz/Z2dGR4gLgysKi8owcnrVwNjgvc01Lk68LJDDsG2GRqegFITcxmvCMYM7bhMpwEMlHmDg==
+ dependencies:
+ socket.io-client "*"
+
"@types/ws@^8.2.2":
version "8.2.2"
resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.2.2.tgz#7c5be4decb19500ae6b3d563043cd407bf366c21"
@@ -122,6 +144,11 @@ asynckit@^0.4.0:
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
+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=
+
balanced-match@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
@@ -301,7 +328,7 @@ debug@^3.2.7:
dependencies:
ms "^2.1.1"
-debug@^4.3.1:
+debug@^4.3.1, 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==
@@ -362,10 +389,10 @@ dot-prop@^5.2.0:
dependencies:
is-obj "^2.0.0"
-dotenv@^11.0.0:
- version "11.0.0"
- resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-11.0.0.tgz#ee37feddf8ada6d348a79e198312d4a8abfd1c1e"
- integrity sha512-Fp/b504Y5W+e+FpCxTFMUZ7ZEQkQYF0rx+KZtmwixJxGQbLHrhCwo3FjZgNC8vIfrSi29PABNbMoCGD9YoiXbQ==
+dotenv@^14.3.2:
+ version "14.3.2"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-14.3.2.tgz#7c30b3a5f777c79a3429cb2db358eef6751e8369"
+ integrity sha512-vwEppIphpFdvaMCaHfCEv9IgwcxMljMw2TnAQBB4VWPvzXQLTb82jwmdOKzlEVUL3gNFT4l4TPKO+Bn+sqcrVQ==
dotenv@^8.2.0:
version "8.6.0"
@@ -389,6 +416,28 @@ end-of-stream@^1.1.0:
dependencies:
once "^1.4.0"
+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"
+
escalade@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
@@ -508,6 +557,11 @@ graceful-fs@^4.1.2:
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96"
integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==
+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"
@@ -878,6 +932,16 @@ parse5@^6.0.1:
resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
+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-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
@@ -1023,6 +1087,26 @@ signal-exit@^3.0.2:
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af"
integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==
+socket.io-client@*, 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"
+
sqlstring@^2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.2.tgz#cdae7169389a1375b18e885f2e60b3e460809514"
@@ -1145,10 +1229,10 @@ typeorm@^0.2.41:
yargs "^17.0.1"
zen-observable-ts "^1.0.0"
-typescript@^4.5.4:
- version "4.5.4"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.4.tgz#a17d3a0263bf5c8723b9c52f43c5084edf13c2e8"
- integrity sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==
+typescript@^4.5.5:
+ version "4.5.5"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3"
+ integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==
undefsafe@^2.0.5:
version "2.0.5"
@@ -1238,6 +1322,11 @@ ws@^8.4.0:
resolved "https://registry.yarnpkg.com/ws/-/ws-8.4.0.tgz#f05e982a0a88c604080e8581576e2a063802bed6"
integrity sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==
+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==
+
xdg-basedir@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13"
@@ -1256,6 +1345,11 @@ xmlbuilder@~11.0.0:
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3"
integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==
+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==
+
y18n@^5.0.5:
version "5.0.8"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
@@ -1307,6 +1401,11 @@ yargs@^17.0.1:
y18n "^5.0.5"
yargs-parser "^21.0.0"
+yeast@0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"
+ integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk=
+
zen-observable-ts@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.1.0.tgz#2d1aa9d79b87058e9b75698b92791c1838551f83"