commit
51240a5969
22 changed files with 504 additions and 40 deletions
5
.idea/.gitignore
vendored
Normal file
5
.idea/.gitignore
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
12
.idea/Ellie-v4.iml
Normal file
12
.idea/Ellie-v4.iml
Normal file
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="WEB_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<excludeFolder url="file://$MODULE_DIR$/temp" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/tmp" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
7
.idea/discord.xml
Normal file
7
.idea/discord.xml
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DiscordProjectSettings">
|
||||
<option name="show" value="PROJECT_FILES" />
|
||||
<option name="description" value="" />
|
||||
</component>
|
||||
</project>
|
8
.idea/modules.xml
Normal file
8
.idea/modules.xml
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/Ellie-v4.iml" filepath="$PROJECT_DIR$/.idea/Ellie-v4.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
6
.idea/vcs.xml
Normal file
6
.idea/vcs.xml
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
15
CHANGELOG.md
15
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
|
|
@ -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",
|
||||
|
|
|
@ -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<string, BaseCommand>();
|
||||
private _events = new Collection<string, BaseEvent>();
|
||||
private _prefix: string = '!';
|
||||
private _configs = new Collection<string, GuildConfiguration>();
|
||||
|
||||
constructor(options: ClientOptions) {
|
||||
super(options);
|
||||
}
|
||||
|
||||
get commands(): Collection<string, BaseCommand> { return this._commands; }
|
||||
get events(): Collection<string, BaseEvent> { return this._events; }
|
||||
get prefix(): string { return this._prefix; }
|
||||
|
||||
set prefix(prefix: string) { this._prefix = prefix; }
|
||||
|
||||
get commands(): Collection<string, BaseCommand> {
|
||||
return this._commands;
|
||||
}
|
||||
get events(): Collection<string, BaseEvent> {
|
||||
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<string, GuildConfiguration>) {
|
||||
this._configs = guildConfigs;
|
||||
}
|
||||
}
|
||||
|
|
37
src/commands/mod/BanCommand.ts
Normal file
37
src/commands/mod/BanCommand.ts
Normal file
|
@ -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<ModerationLog> = getRepository(
|
||||
ModerationLog
|
||||
)
|
||||
) {
|
||||
super('ban', 'mod', []);
|
||||
}
|
||||
|
||||
async run(client: DiscordClient, message: Message, args: Array<string>) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
35
src/commands/mod/ChprefixCommand.ts
Normal file
35
src/commands/mod/ChprefixCommand.ts
Normal file
|
@ -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<string>) {
|
||||
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.');
|
||||
}
|
||||
}
|
||||
}
|
35
src/commands/mod/ChwelcomechannelCommand.ts
Normal file
35
src/commands/mod/ChwelcomechannelCommand.ts
Normal file
|
@ -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<string>) {
|
||||
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.');
|
||||
}
|
||||
}
|
||||
}
|
38
src/commands/mod/KickCommand.ts
Normal file
38
src/commands/mod/KickCommand.ts
Normal file
|
@ -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<ModerationLog> = getRepository(
|
||||
ModerationLog
|
||||
)
|
||||
) {
|
||||
super('kick', 'mod', []);
|
||||
}
|
||||
|
||||
async run(client: DiscordClient, message: Message, args: Array<string>) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
41
src/commands/mod/TimeoutCommand.ts
Normal file
41
src/commands/mod/TimeoutCommand.ts
Normal file
|
@ -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<ModerationLog> = getRepository(
|
||||
ModerationLog
|
||||
)
|
||||
) {
|
||||
super('timeout', 'mod', []);
|
||||
}
|
||||
|
||||
async run(client: DiscordClient, message: Message, args: Array<string>) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -13,20 +13,23 @@ export default class GuildCreateEvent extends BaseEvent {
|
|||
}
|
||||
|
||||
async run(client: DiscordClient, guild: Guild) {
|
||||
console.log('Hellp World!');
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
27
src/events/GuildMemberAddEvent.ts
Normal file
27
src/events/GuildMemberAddEvent.ts
Normal file
|
@ -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.');
|
||||
}
|
||||
}
|
||||
}
|
|
@ -9,9 +9,14 @@ 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)
|
||||
.slice(config.prefix.length)
|
||||
.trim()
|
||||
.split(/\s+/);
|
||||
const command = client.commands.get(cmdName);
|
||||
|
|
38
src/index.ts
38
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<string, GuildConfiguration>();
|
||||
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);
|
||||
})();
|
||||
|
||||
|
|
22
src/typeorm/entities/GuildBanLog.ts
Normal file
22
src/typeorm/entities/GuildBanLog.ts
Normal file
|
@ -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;
|
||||
}
|
26
src/typeorm/entities/ModerationLog.ts
Normal file
26
src/typeorm/entities/ModerationLog.ts
Normal file
|
@ -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;
|
||||
}
|
5
src/typeorm/entities/index.ts
Normal file
5
src/typeorm/entities/index.ts
Normal file
|
@ -0,0 +1,5 @@
|
|||
import { GuildBanLog } from "./GuildBanLog";
|
||||
import { GuildConfiguration } from "./GuildConfiguration";
|
||||
import { ModerationLog } from "./ModerationLog";
|
||||
|
||||
export const entities = [GuildBanLog, GuildConfiguration, ModerationLog];
|
1
src/utils/types.ts
Normal file
1
src/utils/types.ts
Normal file
|
@ -0,0 +1 @@
|
|||
export type ModerationActionType = 'ban' | 'kick' | 'timeout';
|
119
yarn.lock
119
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"
|
||||
|
|
Reference in a new issue