1
0
mirror of https://github.com/toast-ts/Daggerbot-TS.git synced 2024-11-16 20:00:59 -05:00

Migration from Sequelize v6 to v7 (#89)

* Sync Sequelize v7 changes from Canary repository

* Clean up some of the stuff

* Update @types/pg

* Log transaction failed const to console instead of nowhere

* Optimize functions in punishment model

* Remove autoresponses for Monster

* Delete Yarn PnP files as per #99

* Update dependencies

---------

Co-authored-by: pomni32 <163978719+pomni32@users.noreply.github.com>
This commit is contained in:
toast-ts 2024-03-21 11:31:50 +11:00 committed by GitHub
parent cec7dd49d1
commit 7b94932539
13 changed files with 449 additions and 305 deletions

View File

@ -29,7 +29,8 @@
"dependencies": {
"@napi-rs/canvas": "0.1.51",
"@octokit/rest": "20.0.2",
"@toast/tokenservice-client": "1.0.16",
"@sequelize/core": "7.0.0-alpha.38",
"@toast/tokenservice-client": "1.1.2",
"ansi-colors": "4.1.3",
"dayjs": "1.11.10",
"discord.js": "14.14.1",
@ -39,18 +40,17 @@
"node-cron": "3.0.3",
"pg": "8.11.3",
"pg-hstore": "2.3.4",
"postgres-array": "3.0.2",
"redis": "4.6.13",
"sequelize": "6.37.1",
"simple-git": "3.23.0",
"systeminformation": "5.22.5",
"systeminformation": "5.22.6",
"undici": "6.9.0"
},
"devDependencies": {
"@types/ms": "0.7.34",
"@types/node": "20.11.30",
"@types/node-cron": "3.0.11",
"@types/pg": "8.11.3",
"@types/sequelize": "4.28.20",
"typescript": "5.4.2"
"@types/pg": "8.11.4",
"typescript": "5.4.3"
}
}

View File

@ -25,16 +25,16 @@ export default class Case {
update: async()=>{
const reason = interaction.options.getString('reason');
await client.punishments.updateReason(caseId, reason);
if (client.punishments.findCase(caseId)) {
if (client.punishments.findCaseOrCancels('case_id', caseId)) {
await this.updateEntry(client, caseId, reason);
await interaction.reply({embeds: [new client.embed().setColor(client.config.embedColorGreen).setTitle('Case updated').setDescription(`Case #${caseId} has been successfully updated with new reason:\n\`${reason}\``)]});
} else interaction.reply({embeds: [new client.embed().setColor(client.config.embedColorRed).setTitle('Case not updated').setDescription(`Case #${caseId} is not found in database, not updating the reason.`)]});
},
view: async()=>{
const punishment = await client.punishments.findCase(caseId);
const punishment = await client.punishments.findCaseOrCancels('case_id', caseId);
if (!punishment) return interaction.reply('Case ID is not found in database.');
const cancelledBy = punishment.dataValues.expired ? await client.punishments.findByCancels(punishment.dataValues.case_id) : null;
const cancels = punishment.dataValues.cancels ? await client.punishments.findCase(punishment.dataValues.cancels) : null;
const cancelledBy = punishment.dataValues.expired ? await client.punishments.findCaseOrCancels('cancels', punishment.dataValues.case_id) : null;
const cancels = punishment.dataValues.cancels ? await client.punishments.findCaseOrCancels('case_id', punishment.dataValues.cancels) : null;
const embed = new client.embed().setColor(client.config.embedColor).setTimestamp(Number(punishment.dataValues.time)).setTitle(`${punishment.dataValues.type[0].toUpperCase()+punishment.dataValues.type.slice(1)} | Case #${punishment.dataValues.case_id}`).addFields(
{name: 'User', value: `${punishment.member_name}\n${MessageTool.formatMention(punishment.dataValues.member, 'user')}\n\`${punishment.dataValues.member}\``, inline: true},
{name: 'Moderator', value: `${client.users.resolve(punishment.moderator).tag}\n${MessageTool.formatMention(punishment.dataValues.moderator, 'user')}\n\`${punishment.dataValues.moderator}\``, inline: true},

View File

@ -5,7 +5,7 @@ import MessageTool from '../helpers/MessageTool.js';
export default class Unpunish {
static async run(client: TClient, interaction: Discord.ChatInputCommandInteraction<'cached'>){
if (!MessageTool.isModerator(interaction.member as Discord.GuildMember)) return MessageTool.youNeedRole(interaction, 'dcmod');
const punishment = await client.punishments.findCase(interaction.options.getInteger('case_id', true));
const punishment = await client.punishments.findCaseOrCancels('case_id', interaction.options.getInteger('case_id', true));
if (!punishment) return interaction.reply({content: 'Case ID is not found in database.', ephemeral: true});
if (['unban', 'unmute', 'punishmentOverride'].includes(punishment.dataValues.type)) return interaction.reply({content: 'This case ID is immutable. (Informative case)', ephemeral: true});
if (punishment.dataValues.expired) return interaction.reply({content: 'This case ID is already expired.', ephemeral: true});

View File

@ -1,4 +1,4 @@
import {Sequelize} from 'sequelize';
import {Sequelize} from '@sequelize/core';
import Logger from '../helpers/Logger.js';
import TSClient from '../helpers/TSClient.js';

View File

@ -1,5 +1,5 @@
import DatabaseServer from '../components/DatabaseServer.js';
import {Model, DataTypes} from 'sequelize';
import {Model, DataTypes} from '@sequelize/core';
import CacheServer from '../components/CacheServer.js';
class MPServer extends Model {
@ -57,58 +57,45 @@ export class MPServerSvc {
}
query = async(pattern:string)=>await this.model.sequelize.query(pattern);
async fetchPlayerData(serverName:string) {
const findServerByName = await this.model.findOne({where: {serverName: serverName}});
if (findServerByName) return findServerByName.dataValues.playerData;
else return [];
const server = await this.model.findOne({where: {serverName: serverName}});
return server ? server.dataValues.playerData : [];
}
async addServer(serverName:string, ip:string, code:string) {
const findServerByName = await this.model.findOne({where: {serverName: serverName}});
if (findServerByName) {
(await findServerByName.update({serverName: serverName, ip: ip, code: code})).save();
await CacheServer.delete(cacheKey).then(async()=>await this.findInCache());
} else {
await this.model.create({
serverName: serverName,
isActive: true,
ip: ip,
code: code,
playerData: []
});
await CacheServer.delete(cacheKey).then(async()=>await this.findInCache());
}
await this.model.upsert({
serverName,
isActive: true,
ip,
code,
playerData: []
});
await CacheServer.delete(cacheKey).then(async()=>await this.findInCache());
}
async removeServer(serverName:string) {
const findServerByName = await this.model.findOne({where: {serverName: serverName}});
if (findServerByName) {
await this.model.destroy({where: {serverName: serverName}});
await CacheServer.delete(cacheKey).then(async()=>await this.findInCache());
}
await this.model.destroy({where: {serverName}});
await CacheServer.delete(cacheKey).then(async()=>await this.findInCache());
}
async toggleServerUsability(serverName:string, isActive:boolean) {
const findServerByName = await this.model.findOne({where: {serverName: serverName}});
if (findServerByName) {
this.model.update({isActive: isActive}, {where: {serverName: serverName}}).then(async flagUpdated=>{
if (flagUpdated) {
await CacheServer.delete(cacheKey).then(async()=>await this.findInCache());
return true;
}
});
} else return false;
const [updated] = await this.model.update({isActive}, {where: {serverName}});
if (updated) {
await CacheServer.delete(cacheKey).then(async()=>await this.findInCache());
return true;
}
return false;
}
async incrementPlayerCount(serverName:string, playerCount:number) {
const findServerByName = await this.model.findOne({where: {serverName: serverName}});
if (findServerByName) {
let PD = findServerByName.dataValues.playerData;
const server = await this.model.findOne({where: {serverName}});
if (server) {
let PD = server.dataValues.playerData;
if (PD.length > 1920) PD = []; //Selfnote: 86400/45 = 1920, where 86400 is seconds in a day and 45 is the MPModule's refresh interval.
PD.push(playerCount);
const updatePD = await this.model.update({playerData: PD}, {where: {serverName: serverName}});
if (updatePD) true;
else return false;
} else return false;
await this.model.update({playerData: PD}, {where: {serverName}});
return true;
}
return false;
}
async findInCache(): Promise<IServer[]> {
const cachedResult = await CacheServer.get(cacheKey, true);
let result;
let result:IServer[];
if (cachedResult) result = cachedResult;
else {
result = await this.model.findAll();

View File

@ -1,5 +1,6 @@
import DatabaseServer from '../components/DatabaseServer.js';
import {Model, DataTypes} from 'sequelize';
import {Model, DataTypes} from '@sequelize/core';
import Logger from '../helpers/Logger.js';
class dailyMsgs extends Model {
declare public day: number;
@ -26,18 +27,20 @@ export class DailyMsgsSvc {
tableName: 'dailymsgs',
createdAt: false,
updatedAt: false,
indexes: [
{name: 'day_index', fields: ['day'], unique: true}
],
sequelize: DatabaseServer.seq
})
this.model.sync();
}
query = async(pattern:string)=>await this.model.sequelize.query(pattern);
nukeDays = async()=>await this.model.destroy({truncate: true});
nukeDays = async()=>await this.model.destroy();
fetchDays = async()=>await this.model.findAll();
async newDay(formattedDate:number, total:number) {
if (await this.model.findOne({where: {day: formattedDate}})) return console.log('This day already exists!')
return await this.model.create({day: formattedDate, total: total});
const [instance, created] = await this.model.findOrCreate({where: {day: formattedDate}, defaults: {total}});
if (!created) return Logger.console('log', 'DailyMsgs', 'This day already exists!');
return instance
// Save previous day's total messages into database when a new day starts.
}
updateDay = async(formattedDate:number, total:number)=>await this.model.update({total: total}, {where: {day: formattedDate}});
// THIS IS FOR DEVELOPMENT PURPOSES ONLY, NOT TO BE USED IN LIVE ENVIRONMENT!
}

View File

@ -1,5 +1,5 @@
import DatabaseServer from '../components/DatabaseServer.js';
import {Model, DataTypes} from 'sequelize';
import {Model, DataTypes} from '@sequelize/core';
class prohibitedWords extends Model {
declare public word: string;

View File

@ -1,12 +1,24 @@
import Discord from 'discord.js';
import TClient from '../client.js';
import ms from 'ms';
import Logger from '../helpers/Logger.js';
import {Punishment} from 'src/interfaces';
import DatabaseServer from '../components/DatabaseServer.js';
import {Model, DataTypes} from 'sequelize';
import {Model, DataTypes} from '@sequelize/core';
import CacheServer from '../components/CacheServer.js';
import Formatters from '../helpers/Formatters.js';
const PAST_TENSE_MAPPING = {
ban: 'banned',
softban: 'softbanned',
kick: 'kicked',
mute: 'muted',
warn: 'warned',
remind: 'reminded'
};
const TRANSACTION_FAILED = 'An error occurred while updating the database. See console for more details.';
class punishments extends Model {
declare public case_id: number;
declare public type: string;
@ -84,20 +96,20 @@ export class PunishmentsSvc {
}
query = async(pattern:string)=>await this.model.sequelize.query(pattern);
async updateReason(caseId:number, reason:string) {
const findCase = this.findCase(caseId);
if (findCase) return this.model.update({reason: reason}, {where: {case_id: caseId}});
const findCase = this.findCaseOrCancels('case_id', caseId);
if (findCase) return this.model.update({reason}, {where: {case_id: caseId}});
}
findCase =(caseId:number)=>this.model.findOne({where: {case_id: caseId}});
findByCancels =(caseId:number)=>this.model.findOne({where: {cancels: caseId}})
findCaseOrCancels = (column:'case_id'|'cancels', id:number)=>this.model.findOne({where: {[column]: id}});
getAllCases =()=>this.model.findAll();
async generateCaseId() {
const result = await this.model.findAll();
return Math.max(...result.map((x:Punishment)=>x.case_id), 0) + 1;
const result = await this.model.max('case_id');
if (typeof result === 'number') return result + 1;
else return 0;
}
async findInCache():Promise<any> {
async findInCache():Promise<Punishment[]> {
const cacheKey = 'punishments';
const cachedResult = await CacheServer.get(cacheKey, true);
let result:any;
let result:Punishment[];
if (cachedResult) result = cachedResult;
else {
result = await this.model.findAll();
@ -132,16 +144,7 @@ export class PunishmentsSvc {
}
(this.client.channels.cache.get(channel) as Discord.TextChannel).send({embeds: [embed]});
}
getPastTense(type:string) {
return {
ban: 'banned',
softban: 'softbanned',
kick: 'kicked',
mute: 'muted',
warn: 'warned',
remind: 'reminded'
}[type];
}
getPastTense =(type:string)=>PAST_TENSE_MAPPING[type];
async punishmentAdd(type:string, options:{time?:string, interaction?:Discord.ChatInputCommandInteraction}, moderator:string, reason: string, user:Discord.User, guildUser?:Discord.GuildMember) {
const {time, interaction} = options;
const now = Date.now();
@ -165,14 +168,22 @@ export class PunishmentsSvc {
if (guildUser) await guildUser.send(`You've been ${this.getPastTense(type)} ${inOrFromBoolean} **${guild.name}**${durText}\n\`${reason}\` (Case #${punishment.case_id})`).catch(()=>embed.setFooter({text: 'Unable to DM a member'}));
if (['ban', 'softban'].includes(type)) {
const alreadyBanned = await guild.bans.fetch(user.id).catch(()=>null); // 172800 seconds is 48 hours, just for future reference
if (!alreadyBanned) punishmentResult = await guild.bans.create(user.id, {reason: auditLogReason, deleteMessageSeconds: 172800}).catch((err:Error)=>err.message);
else punishmentResult = `This user already exists in the guild\'s ban list.\nReason: \`${alreadyBanned?.reason}\``;
} else if (type === 'kick') punishmentResult = await guildUser?.kick(auditLogReason).catch((err:Error)=>err.message);
else if (type === 'mute') punishmentResult = await guildUser?.timeout(millisecondTime, auditLogReason).catch((err:Error)=>err.message);
if (type === 'softban' && typeof punishmentResult !== 'string') punishmentResult = await guild.bans.remove(user.id, auditLogReason).catch((err:Error)=>err.message);
switch (type) {
case 'ban':
case 'softban': {
const alreadyBanned = await guild.bans.fetch(user.id).catch(()=>null); // 172800 seconds is 48 hours, just for future reference
if (alreadyBanned) punishmentResult = `This user already exists in the guild\'s ban list.\nReason: \`${alreadyBanned?.reason}\``;
else punishmentResult = await guild.bans.create(user.id, {reason: auditLogReason, deleteMessageSeconds: 172800}).catch((err:Error)=>err.message);
if (type === 'softban' && typeof punishmentResult !== 'string') punishmentResult = await guild.bans.remove(user.id, auditLogReason).catch((err:Error)=>err.message);
break;
}
case 'kick':
punishmentResult = await guildUser?.kick(auditLogReason).catch((err:Error)=>err.message);
break;
case 'mute':
punishmentResult = await guildUser?.timeout(millisecondTime, auditLogReason).catch((err:Error)=>err.message);
break;
}
if (millisecondTime && ['ban', 'mute'].includes(type)) {
punishment.endTime = now + millisecondTime;
@ -183,22 +194,28 @@ export class PunishmentsSvc {
if (interaction) return interaction.editReply(punishmentResult);
else return punishmentResult;
} else {
const checkIfExists = await this.model.findOne({where: {case_id: punishment.case_id}});
if (checkIfExists) this.model.update({expired: punishment.expired, time: punishment.time, endTime: punishment.endTime}, {where: {case_id: punishment.case_id}})
else await this.model.create({
case_id: punishment.case_id,
type: punishment.type,
member_name: punishment.member_name,
member: punishment.member,
moderator: punishment.moderator,
expired: punishment.expired,
time: punishment.time,
reason: punishment.reason,
endTime: punishment.endTime,
cancels: punishment.cancels,
duration: punishment.duration
});
await this.createModlog(punishment);
try { // https://sequelize.org/docs/v7/querying/transactions/
await this.model.sequelize.transaction(async transaction=>{
await this.model.upsert({
case_id: punishment.case_id,
type: punishment.type,
member_name: punishment.member_name,
member: punishment.member,
moderator: punishment.moderator,
expired: punishment.expired,
time: punishment.time,
reason: punishment.reason,
endTime: punishment.endTime,
cancels: punishment.cancels,
duration: punishment.duration
}, {transaction});
await this.createModlog(punishment);
});
} catch (err) {
Logger.console('error', 'Punishment', err);
Logger.console('log', 'Punishment:Transaction', TRANSACTION_FAILED);
return;
}
if (interaction) return interaction.editReply({embeds: [embed]});
else return punishmentResult;
@ -217,34 +234,48 @@ export class PunishmentsSvc {
let removePunishmentData:Punishment = {type: `un${punishment.type}`, case_id: ID, cancels: punishment.case_id, member_name: punishment.member_name, member: punishment.member, reason, moderator, time: now};
let removePunishmentResult:any;
if (punishment.type === 'ban') removePunishmentResult = await guild.bans.remove(punishment.member, auditLogReason).catch((err:Error)=>err.message);
else if (punishment.type === 'mute') {
if (guildUser) {
removePunishmentResult = await guildUser.timeout(null, auditLogReason).catch((err:Error)=>err.message);
guildUser.send(`You've been unmuted in **${guild.name}**.`).catch(()=>null);
} else this.model.update({expired: true}, {where: {case_id: caseId}});
} else removePunishmentData.type = 'punishmentOverride';
switch (punishment.type) {
case 'ban':
removePunishmentResult = await guild.bans.remove(punishment.member, auditLogReason).catch((err:Error)=>err.message);
break;
case 'mute':
if (guildUser) {
removePunishmentResult = await guildUser.timeout(null, auditLogReason).catch((err:Error)=>err.message);
guildUser.send(`You've been unmuted in **${guild.name}**.`).catch(()=>null);
} else this.model.update({expired: true}, {where: {case_id: caseId}});
break;
default:
removePunishmentData.type = 'punishmentOverride';
break;
}
if (typeof removePunishmentResult === 'string') {// Punishment was unsuccessful
if (interaction) return interaction.editReply(removePunishmentResult);
else return removePunishmentResult;
} else {
this.model.update({expired: true}, {where: {case_id: caseId}}).then(()=>
this.model.create({
case_id: removePunishmentData.case_id,
type: removePunishmentData.type,
member_name: removePunishmentData.member_name,
member: removePunishmentData.member,
moderator: removePunishmentData.moderator,
expired: removePunishmentData.expired,
time: removePunishmentData.time,
reason: removePunishmentData.reason,
endTime: removePunishmentData.endTime,
cancels: removePunishmentData.cancels,
duration: removePunishmentData.duration
})
);
await this.createModlog(removePunishmentData);
try { // https://sequelize.org/docs/v7/querying/transactions/
await this.model.sequelize.transaction(async transaction=>{
await this.model.update({expired: true}, {where: {case_id: caseId}, transaction})
await this.model.upsert({
case_id: removePunishmentData.case_id,
type: removePunishmentData.type,
member_name: removePunishmentData.member_name,
member: removePunishmentData.member,
moderator: removePunishmentData.moderator,
expired: removePunishmentData.expired,
time: removePunishmentData.time,
reason: removePunishmentData.reason,
endTime: removePunishmentData.endTime,
cancels: removePunishmentData.cancels,
duration: removePunishmentData.duration
}, {transaction});
await this.createModlog(removePunishmentData);
});
} catch (err) {
Logger.console('error', 'Punishment', err);
Logger.console('log', 'Punishment:Transaction', TRANSACTION_FAILED);
return;
}
if (interaction) return interaction.reply({embeds: [new this.client.embed()
.setColor(this.client.config.embedColor)

View File

@ -1,5 +1,5 @@
import DatabaseServer from '../components/DatabaseServer.js';
import {Model, DataTypes} from 'sequelize';
import {Model, DataTypes} from '@sequelize/core';
class suggestions extends Model {
declare public id: number;

View File

@ -2,7 +2,7 @@ import TClient from '../client.js';
import MessageTool from '../helpers/MessageTool.js';
import CacheServer from '../components/CacheServer.js';
import DatabaseServer from '../components/DatabaseServer.js';
import {Model, DataTypes} from 'sequelize';
import {Model, DataTypes} from '@sequelize/core';
import {ChatInputCommandInteraction, Snowflake} from 'discord.js';
class tagsystem extends Model {
@ -79,7 +79,7 @@ export class TagSystemSvc {
async findInCache(): Promise<Tags[]> {
const cacheKey = 'tags';
const cachedResult = await CacheServer.get(cacheKey, true);
let result;
let result:Tags[];
if (cachedResult) result = cachedResult;
else {
result = await this.model.findAll();

View File

@ -2,7 +2,7 @@ import Discord from 'discord.js';
import TClient from '../client.js';
import MessageTool from '../helpers/MessageTool.js';
import DatabaseServer from '../components/DatabaseServer.js';
import {Model, DataTypes} from 'sequelize';
import {Model, DataTypes} from '@sequelize/core';
import {writeFileSync} from 'node:fs';
import cron from 'node-cron';
import Logger from '../helpers/Logger.js';
@ -61,9 +61,9 @@ export class UserLevelsSvc {
fetchEveryone = async()=>await this.model.findAll();
fetchUser = async(userId:string)=>await this.model.findByPk(userId);
deleteUser = async(userId:string)=>await this.model.destroy({where: {id: userId}});
async modifyUser(userId:string, updatedMessages:number) {
await this.model.update({messages: updatedMessages}, {where: {id: userId}});
return (await this.model.findByPk(userId)).dataValues;
async modifyUser(userId:string, messages:number) {
const [_, [updatedUser]] = await this.model.update({messages}, {where: {id: userId}, returning: true});
return updatedUser.dataValues;
}
async blockUser(userId:string, duration:number):Promise<boolean> {
const data = await this.model.findByPk(userId);
@ -74,8 +74,8 @@ export class UserLevelsSvc {
}
}
async getActiveUsers() {
const members = (await this.model.findAll()).sort((a,b)=>b.dataValues.messages-a.dataValues.messages);
return members.slice(0, 5);
const members = await this.model.findAll({order: [['messages', 'DESC']], limit: 5});
return members;
}
async messageIncremental(userId:string) {
const data = await this.model.findByPk(userId);
@ -119,7 +119,7 @@ export class UserLevelsSvc {
Logger.console('log', 'Cron:resetAllData', `Counted ${performCountBeforeReset.toLocaleString()} members before reset`);
await this.client.dailyMsgs.nukeDays();
await this.model.drop().then(async()=>await this.model.sync());
await this.model.truncate();
try {
// Send notification to dcServer's logs channel after cronjob is complete.
@ -139,16 +139,12 @@ export class UserLevelsSvc {
// Reset LRSstart to current Epoch and save it to config file
const newEpoch = new Date().getTime();
this.client.config.LRSstart = newEpoch;
const logText = `Resetting LRSstart to \`${newEpoch}\`, saved to config file`;
Logger.console('log', 'DailyMsgs', logText);
(this.client.channels.resolve(this.client.config.dcServer.channels.bot_log) as Discord.TextChannel).send({embeds: [new this.client.embed()
.setColor(this.client.config.embedColorXmas)
.setTitle('Happy New Years! Level System is clean!')
.setDescription(logText)
]}).catch(err=>console.log(err));
writeFileSync('src/config.json', JSON.stringify(this.client.config, null, 2));
Logger.console('log', 'Cron:resetAllData', 'Job completed');
if (this.client.config.LRSstart !== newEpoch) {
this.client.config.LRSstart = newEpoch;
Logger.console('log', 'Cron:resetAllData', `Resetting LRSstart to \`${newEpoch}\`, saved to config file`);
writeFileSync('src/config.json', JSON.stringify(this.client.config, null, 2));
Logger.console('log', 'Cron:resetAllData', 'Job completed');
}
})
}
algorithm = (level:number)=>level*level*15;

View File

@ -1,5 +1,5 @@
import DatabaseServer from '../components/DatabaseServer.js';
import {Model, DataTypes} from 'sequelize';
import {Model, DataTypes} from '@sequelize/core';
class youtubeChannels extends Model {
declare public ytchannel: string;
@ -36,9 +36,8 @@ export class YouTubeChannelsSvc {
}
query = async(pattern:string)=>await this.model.sequelize.query(pattern);
async addChannel(YTChannelID:string, DCChannelID:string, DCRole:string) {
if (await this.model.findOne({where: {ytchannel: YTChannelID}})) return false;
await this.model.create({ytchannel: YTChannelID, dcchannel: DCChannelID, dcrole: DCRole});
return true;
const [_, created] = await this.model.findOrCreate({where: {ytchannel: YTChannelID}, defaults: {dcchannel: DCChannelID, dcrole: DCRole}});
return created;
}
delChannel = async(YTChannelID:string)=>await this.model.destroy({where: {ytchannel: YTChannelID}});
getChannels = async()=>await this.model.findAll();

440
yarn.lock
View File

@ -6,11 +6,11 @@ __metadata:
cacheKey: 10
"@babel/runtime@npm:^7.24.0":
version: 7.24.0
resolution: "@babel/runtime@npm:7.24.0"
version: 7.24.1
resolution: "@babel/runtime@npm:7.24.1"
dependencies:
regenerator-runtime: "npm:^0.14.0"
checksum: 10/8d32c7e116606ea322b89f9fde8ffae6be9503b549dc0d0abb38bd9dc26e87469b9fb7a66964cc089ee558fd0a97d304fb0a3cfec140694764fb0d71b6a6f5e4
checksum: 10/3a8d61400c636d1ce3a42895a106cd4dfb4e9b88832a8a754a724c68652f821d7a46dce394305d7623f9f0d3597bf0a98aeb5f9c150ef60e14bbbf66caab4654
languageName: node
linkType: hard
@ -215,6 +215,33 @@ __metadata:
languageName: node
linkType: hard
"@nodelib/fs.scandir@npm:2.1.5":
version: 2.1.5
resolution: "@nodelib/fs.scandir@npm:2.1.5"
dependencies:
"@nodelib/fs.stat": "npm:2.0.5"
run-parallel: "npm:^1.1.9"
checksum: 10/6ab2a9b8a1d67b067922c36f259e3b3dfd6b97b219c540877a4944549a4d49ea5ceba5663905ab5289682f1f3c15ff441d02f0447f620a42e1cb5e1937174d4b
languageName: node
linkType: hard
"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2":
version: 2.0.5
resolution: "@nodelib/fs.stat@npm:2.0.5"
checksum: 10/012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0
languageName: node
linkType: hard
"@nodelib/fs.walk@npm:^1.2.3":
version: 1.2.8
resolution: "@nodelib/fs.walk@npm:1.2.8"
dependencies:
"@nodelib/fs.scandir": "npm:2.1.5"
fastq: "npm:^1.6.0"
checksum: 10/40033e33e96e97d77fba5a238e4bba4487b8284678906a9f616b5579ddaf868a18874c0054a75402c9fbaaa033a25ceae093af58c9c30278e35c23c9479e79b0
languageName: node
linkType: hard
"@octokit/auth-token@npm:^4.0.0":
version: 4.0.0
resolution: "@octokit/auth-token@npm:4.0.0"
@ -427,32 +454,71 @@ __metadata:
languageName: node
linkType: hard
"@toast/tokenservice-client@npm:1.0.16":
version: 1.0.16
resolution: "@toast/tokenservice-client@npm:1.0.16::__archiveUrl=https%3A%2F%2Fgit.toast-server.net%2Fapi%2Fpackages%2Ftoast%2Fnpm%2F%2540toast%252Ftokenservice-client%2F-%2F1.0.16%2Ftokenservice-client-1.0.16.tgz"
"@sequelize/core@npm:7.0.0-alpha.38":
version: 7.0.0-alpha.38
resolution: "@sequelize/core@npm:7.0.0-alpha.38"
dependencies:
undici: "npm:6.7.0"
checksum: 10/a946df28f2ba6e36f881f7160bafe0dfe06227520b2a1a8ace729651064103bce92dcfc0d23deb6df845839f380fbdc17af86b1f1ea11ab3cc513c751ec23fb8
"@sequelize/utils": "npm:7.0.0-alpha.38"
"@types/debug": "npm:^4.1.7"
"@types/validator": "npm:^13.7.5"
bnf-parser: "npm:3.1.6"
dayjs: "npm:^1.11.5"
debug: "npm:^4.3.4"
dottie: "npm:^2.0.2"
fast-glob: "npm:^3.2.12"
inflection: "npm:^3.0.0"
lodash: "npm:^4.17.21"
pg-connection-string: "npm:^2.5.0"
pg-hstore: "npm:^2.3.4"
retry-as-promised: "npm:^7.0.3"
semver: "npm:^7.3.7"
sequelize-pool: "npm:^8.0.0"
toposort-class: "npm:^1.0.1"
type-fest: "npm:^3.0.0"
uuid: "npm:^9.0.0"
validator: "npm:^13.7.0"
wkx: "npm:^0.5.0"
peerDependenciesMeta:
ibm_db:
optional: true
mariadb:
optional: true
mysql2:
optional: true
odbc:
optional: true
pg:
optional: true
snowflake-sdk:
optional: true
sqlite3:
optional: true
tedious:
optional: true
checksum: 10/e0469c08aa27060e01470bae42e6a3cf8e31d4bec324d763676a839a30a3e58adcb31462a0df49f49a74678746f178068d923fe4981d7cda275b4626999820a4
languageName: node
linkType: hard
"@types/bluebird@npm:*":
version: 3.5.42
resolution: "@types/bluebird@npm:3.5.42"
checksum: 10/09ad60b083f916c7611936d3c70986df8f2eae11e46768ab7901d86bee5b1ca6b00cd9ef8cc0d3761256e2bc4ada3388e5529f71745a6b3d7602e868e3530310
languageName: node
linkType: hard
"@types/continuation-local-storage@npm:*":
version: 3.2.7
resolution: "@types/continuation-local-storage@npm:3.2.7"
"@sequelize/utils@npm:7.0.0-alpha.38":
version: 7.0.0-alpha.38
resolution: "@sequelize/utils@npm:7.0.0-alpha.38"
dependencies:
"@types/node": "npm:*"
checksum: 10/1f272b53bc56774773b7cbd6019ae26843599fb9073cb70c3dda13f8bfac5eabb6c8bf33f548a37be9c6d772eb9a4ab4399bc7d25bc82588655f51f572df79f3
"@types/lodash": "npm:4.17.0"
lodash: "npm:4.17.21"
checksum: 10/93eb5eb72c0559bbf658bee613cf3d595cd17548fcedec1564ae3a6442e2a1ad6c4bf7d399e316ab03f7388d9deb6c865648832b3e4e1924150f70ccd5f765a6
languageName: node
linkType: hard
"@types/debug@npm:^4.1.8":
"@toast/tokenservice-client@npm:1.1.2":
version: 1.1.2
resolution: "@toast/tokenservice-client@npm:1.1.2::__archiveUrl=https%3A%2F%2Fgit.toast-server.net%2Fapi%2Fpackages%2Ftoast%2Fnpm%2F%2540toast%252Ftokenservice-client%2F-%2F1.1.2%2Ftokenservice-client-1.1.2.tgz"
dependencies:
undici: "npm:6.9.0"
checksum: 10/5eecc94447defe366e72b94e3dd9ba0220ad2a53d4c7dfb030de568e1b2a6666348b4e8087ab99d9d25f6da288ce5851ec0ef567fd295728fa6fc8f41cfc34c9
languageName: node
linkType: hard
"@types/debug@npm:^4.1.7":
version: 4.1.12
resolution: "@types/debug@npm:4.1.12"
dependencies:
@ -461,10 +527,10 @@ __metadata:
languageName: node
linkType: hard
"@types/lodash@npm:*":
version: 4.14.202
resolution: "@types/lodash@npm:4.14.202"
checksum: 10/1bb9760a5b1dda120132c4b987330d67979c95dbc22612678682cd61b00302e190f4207228f3728580059cdab5582362262e3819aea59960c1017bd2b9fb26f6
"@types/lodash@npm:4.17.0":
version: 4.17.0
resolution: "@types/lodash@npm:4.17.0"
checksum: 10/2053203292b5af99352d108656ceb15d39da5922fc3fb8186e1552d65c82d6e545372cc97f36c95873aa7186404d59d9305e9d49254d4ae55e77df1e27ab7b5d
languageName: node
linkType: hard
@ -482,16 +548,7 @@ __metadata:
languageName: node
linkType: hard
"@types/node@npm:*":
version: 20.11.28
resolution: "@types/node@npm:20.11.28"
dependencies:
undici-types: "npm:~5.26.4"
checksum: 10/b03f69213ac6e7cd5f7efa86139f24e23ff70a12fed04adeac5413b62d6982343ce94906f74c401c5afefda48d36ae0efd6a575240996b15a5cf80b456ab4221
languageName: node
linkType: hard
"@types/node@npm:20.11.30":
"@types/node@npm:*, @types/node@npm:20.11.30":
version: 20.11.30
resolution: "@types/node@npm:20.11.30"
dependencies:
@ -500,30 +557,18 @@ __metadata:
languageName: node
linkType: hard
"@types/pg@npm:8.11.3":
version: 8.11.3
resolution: "@types/pg@npm:8.11.3"
"@types/pg@npm:8.11.4":
version: 8.11.4
resolution: "@types/pg@npm:8.11.4"
dependencies:
"@types/node": "npm:*"
pg-protocol: "npm:*"
pg-types: "npm:^4.0.1"
checksum: 10/7042872d971bbb6bd0e23dc566d1a415921855e4e4fa616189872f86ea0a3edda1bf33a87452daa299fc214b2eff312e394de5f52833a0e62e79126590f1f7b4
checksum: 10/b2713bc4ec8e7245958d8ced5833e5fbf3b7bdc090c19b1967f49626abf79cfe62a14e36b194c48c9fc9edeeeb3d4308cfa716534e6ca318b0785daaeb32e359
languageName: node
linkType: hard
"@types/sequelize@npm:4.28.20":
version: 4.28.20
resolution: "@types/sequelize@npm:4.28.20"
dependencies:
"@types/bluebird": "npm:*"
"@types/continuation-local-storage": "npm:*"
"@types/lodash": "npm:*"
"@types/validator": "npm:*"
checksum: 10/8b3faec2e650ee299ae8a8a06bab7bd928131938ba34c7faa1d5c099682d6649e7aa68b0540a3e4883db7e3bc10d043ae3f23624d11b42a60f6bcbd40800ffac
languageName: node
linkType: hard
"@types/validator@npm:*, @types/validator@npm:^13.7.17":
"@types/validator@npm:^13.7.5":
version: 13.11.9
resolution: "@types/validator@npm:13.11.9"
checksum: 10/2d397c69293cc726e0cf1b4c74c563ca4e459b00f216f3ff0ac184c9648103be27169e8c67f85be9c6e7a3fcbb149c6add66a2547b185a1b25aa79e4b61261bd
@ -569,6 +614,22 @@ __metadata:
languageName: node
linkType: hard
"bnf-parser@npm:3.1.6":
version: 3.1.6
resolution: "bnf-parser@npm:3.1.6"
checksum: 10/caaf7078e2a5a9ab97f7f0b65eb1d034b5f5b9f80b189fee9ff3b9aa36dad79820b12f978eb079a7c8b3da37a7bd65b763313deee5058fc76c5d6900d2e3b981
languageName: node
linkType: hard
"braces@npm:^3.0.2":
version: 3.0.2
resolution: "braces@npm:3.0.2"
dependencies:
fill-range: "npm:^7.0.1"
checksum: 10/966b1fb48d193b9d155f810e5efd1790962f2c4e0829f8440b8ad236ba009222c501f70185ef732fef17a4c490bb33a03b90dab0631feafbdf447da91e8165b1
languageName: node
linkType: hard
"buffer-writer@npm:2.0.0":
version: 2.0.0
resolution: "buffer-writer@npm:2.0.0"
@ -596,12 +657,12 @@ __metadata:
dependencies:
"@napi-rs/canvas": "npm:0.1.51"
"@octokit/rest": "npm:20.0.2"
"@toast/tokenservice-client": "npm:1.0.16"
"@sequelize/core": "npm:7.0.0-alpha.38"
"@toast/tokenservice-client": "npm:1.1.2"
"@types/ms": "npm:0.7.34"
"@types/node": "npm:20.11.30"
"@types/node-cron": "npm:3.0.11"
"@types/pg": "npm:8.11.3"
"@types/sequelize": "npm:4.28.20"
"@types/pg": "npm:8.11.4"
ansi-colors: "npm:4.1.3"
dayjs: "npm:1.11.10"
discord.js: "npm:14.14.1"
@ -611,16 +672,16 @@ __metadata:
node-cron: "npm:3.0.3"
pg: "npm:8.11.3"
pg-hstore: "npm:2.3.4"
postgres-array: "npm:3.0.2"
redis: "npm:4.6.13"
sequelize: "npm:6.37.1"
simple-git: "npm:3.23.0"
systeminformation: "npm:5.22.5"
typescript: "npm:5.4.2"
systeminformation: "npm:5.22.6"
typescript: "npm:5.4.3"
undici: "npm:6.9.0"
languageName: unknown
linkType: soft
"dayjs@npm:1.11.10":
"dayjs@npm:1.11.10, dayjs@npm:^1.11.5":
version: 1.11.10
resolution: "dayjs@npm:1.11.10"
checksum: 10/27e8f5bc01c0a76f36c656e62ab7f08c2e7b040b09e613cd4844abf03fb258e0350f0a83b02c887b84d771c1f11e092deda0beef8c6df2a1afbc3f6c1fade279
@ -682,7 +743,7 @@ __metadata:
languageName: node
linkType: hard
"dottie@npm:^2.0.6":
"dottie@npm:^2.0.2":
version: 2.0.6
resolution: "dottie@npm:2.0.6"
checksum: 10/698731cfa2c1b530ba3491fa864dc572678a2a6de801f25912e2e4d7d4669ae013b696711786016bf41c7b6f98057c678503f14550bb171b3f70cdadffb9218f
@ -703,6 +764,19 @@ __metadata:
languageName: node
linkType: hard
"fast-glob@npm:^3.2.12":
version: 3.3.2
resolution: "fast-glob@npm:3.3.2"
dependencies:
"@nodelib/fs.stat": "npm:^2.0.2"
"@nodelib/fs.walk": "npm:^1.2.3"
glob-parent: "npm:^5.1.2"
merge2: "npm:^1.3.0"
micromatch: "npm:^4.0.4"
checksum: 10/222512e9315a0efca1276af9adb2127f02105d7288fa746145bf45e2716383fb79eb983c89601a72a399a56b7c18d38ce70457c5466218c5f13fad957cee16df
languageName: node
linkType: hard
"fast-xml-parser@npm:4.3.6":
version: 4.3.6
resolution: "fast-xml-parser@npm:4.3.6"
@ -714,6 +788,24 @@ __metadata:
languageName: node
linkType: hard
"fastq@npm:^1.6.0":
version: 1.17.1
resolution: "fastq@npm:1.17.1"
dependencies:
reusify: "npm:^1.0.4"
checksum: 10/a443180068b527dd7b3a63dc7f2a47ceca2f3e97b9c00a1efe5538757e6cc4056a3526df94308075d7727561baf09ebaa5b67da8dcbddb913a021c5ae69d1f69
languageName: node
linkType: hard
"fill-range@npm:^7.0.1":
version: 7.0.1
resolution: "fill-range@npm:7.0.1"
dependencies:
to-regex-range: "npm:^5.0.1"
checksum: 10/e260f7592fd196b4421504d3597cc76f4a1ca7a9488260d533b611fc3cefd61e9a9be1417cb82d3b01ad9f9c0ff2dbf258e1026d2445e26b0cf5148ff4250429
languageName: node
linkType: hard
"fraction.js@npm:4.3.4":
version: 4.3.4
resolution: "fraction.js@npm:4.3.4"
@ -728,10 +820,42 @@ __metadata:
languageName: node
linkType: hard
"inflection@npm:^1.13.4":
version: 1.13.4
resolution: "inflection@npm:1.13.4"
checksum: 10/a0cc1b105ccbda9607b5d1610b5c7aa35456ca06b7f3573a47c677e1f829052859cacc36601c3c07de89cb756616a440814ef2d190a6ae70398e6aa6efc2a547
"glob-parent@npm:^5.1.2":
version: 5.1.2
resolution: "glob-parent@npm:5.1.2"
dependencies:
is-glob: "npm:^4.0.1"
checksum: 10/32cd106ce8c0d83731966d31517adb766d02c3812de49c30cfe0675c7c0ae6630c11214c54a5ae67aca882cf738d27fd7768f21aa19118b9245950554be07247
languageName: node
linkType: hard
"inflection@npm:^3.0.0":
version: 3.0.0
resolution: "inflection@npm:3.0.0"
checksum: 10/e8aae6abb872a8aa19184a1b84470fff7120806329c78011befcf50bce04a7b0d65012ac373f2cc5caeaaf241874c7ae20a26038ff7dbe0cdae0b863f25b5e02
languageName: node
linkType: hard
"is-extglob@npm:^2.1.1":
version: 2.1.1
resolution: "is-extglob@npm:2.1.1"
checksum: 10/df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85
languageName: node
linkType: hard
"is-glob@npm:^4.0.1":
version: 4.0.3
resolution: "is-glob@npm:4.0.3"
dependencies:
is-extglob: "npm:^2.1.1"
checksum: 10/3ed74f2b0cdf4f401f38edb0442ddfde3092d79d7d35c9919c86641efdbcbb32e45aa3c0f70ce5eecc946896cd5a0f26e4188b9f2b881876f7cb6c505b82da11
languageName: node
linkType: hard
"is-number@npm:^7.0.0":
version: 7.0.0
resolution: "is-number@npm:7.0.0"
checksum: 10/6a6c3383f68afa1e05b286af866017c78f1226d43ac8cb064e115ff9ed85eb33f5c4f7216c96a71e4dfea289ef52c5da3aef5bbfade8ffe47a0465d70c0c8e86
languageName: node
linkType: hard
@ -749,7 +873,7 @@ __metadata:
languageName: node
linkType: hard
"lodash@npm:^4.17.21":
"lodash@npm:4.17.21, lodash@npm:^4.17.21":
version: 4.17.21
resolution: "lodash@npm:4.17.21"
checksum: 10/c08619c038846ea6ac754abd6dd29d2568aa705feb69339e836dfa8d8b09abbb2f859371e86863eda41848221f9af43714491467b5b0299122431e202bb0c532
@ -791,19 +915,20 @@ __metadata:
languageName: node
linkType: hard
"moment-timezone@npm:^0.5.43":
version: 0.5.45
resolution: "moment-timezone@npm:0.5.45"
dependencies:
moment: "npm:^2.29.4"
checksum: 10/45e3793d44bea8e826c934a335ebf0b92c6d6dae562fdb59d8c45a16d5c11de4d6692b5fa7eebca969881f06b81b55f8535883bfbc727b597d601709fa5a2bb2
"merge2@npm:^1.3.0":
version: 1.4.1
resolution: "merge2@npm:1.4.1"
checksum: 10/7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2
languageName: node
linkType: hard
"moment@npm:^2.29.4":
version: 2.30.1
resolution: "moment@npm:2.30.1"
checksum: 10/ae42d876d4ec831ef66110bdc302c0657c664991e45cf2afffc4b0f6cd6d251dde11375c982a5c0564ccc0fa593fc564576ddceb8c8845e87c15f58aa6baca69
"micromatch@npm:^4.0.4":
version: 4.0.5
resolution: "micromatch@npm:4.0.5"
dependencies:
braces: "npm:^3.0.2"
picomatch: "npm:^2.3.1"
checksum: 10/a749888789fc15cac0e03273844dbd749f9f8e8d64e70c564bcf06a033129554c789bb9e30d7566d7ff6596611a08e58ac12cf2a05f6e3c9c47c50c4c7e12fa2
languageName: node
linkType: hard
@ -860,14 +985,14 @@ __metadata:
languageName: node
linkType: hard
"pg-connection-string@npm:^2.6.1, pg-connection-string@npm:^2.6.2":
"pg-connection-string@npm:^2.5.0, pg-connection-string@npm:^2.6.2":
version: 2.6.2
resolution: "pg-connection-string@npm:2.6.2"
checksum: 10/22265882c3b6f2320785378d0760b051294a684989163d5a1cde4009e64e84448d7bf67d9a7b9e7f69440c3ee9e2212f9aa10dd17ad6773f6143c6020cebbcb5
languageName: node
linkType: hard
"pg-hstore@npm:2.3.4":
"pg-hstore@npm:2.3.4, pg-hstore@npm:^2.3.4":
version: 2.3.4
resolution: "pg-hstore@npm:2.3.4"
dependencies:
@ -967,6 +1092,20 @@ __metadata:
languageName: node
linkType: hard
"picomatch@npm:^2.3.1":
version: 2.3.1
resolution: "picomatch@npm:2.3.1"
checksum: 10/60c2595003b05e4535394d1da94850f5372c9427ca4413b71210f437f7b2ca091dbd611c45e8b37d10036fa8eade25c1b8951654f9d3973bfa66a2ff4d3b08bc
languageName: node
linkType: hard
"postgres-array@npm:3.0.2, postgres-array@npm:~3.0.1":
version: 3.0.2
resolution: "postgres-array@npm:3.0.2"
checksum: 10/0159517e4e5f263bf9e324f0c4d3c10244a294021f2b5980abc8c23afdb965370a7fc0c82012fce4d28e83186ad089b6476b05fcef6c88f8e43e37a3a2fa0ad5
languageName: node
linkType: hard
"postgres-array@npm:~2.0.0":
version: 2.0.0
resolution: "postgres-array@npm:2.0.0"
@ -974,13 +1113,6 @@ __metadata:
languageName: node
linkType: hard
"postgres-array@npm:~3.0.1":
version: 3.0.2
resolution: "postgres-array@npm:3.0.2"
checksum: 10/0159517e4e5f263bf9e324f0c4d3c10244a294021f2b5980abc8c23afdb965370a7fc0c82012fce4d28e83186ad089b6476b05fcef6c88f8e43e37a3a2fa0ad5
languageName: node
linkType: hard
"postgres-bytea@npm:~1.0.0":
version: 1.0.0
resolution: "postgres-bytea@npm:1.0.0"
@ -1034,6 +1166,13 @@ __metadata:
languageName: node
linkType: hard
"queue-microtask@npm:^1.2.2":
version: 1.2.3
resolution: "queue-microtask@npm:1.2.3"
checksum: 10/72900df0616e473e824202113c3df6abae59150dfb73ed13273503127235320e9c8ca4aaaaccfd58cf417c6ca92a6e68ee9a5c3182886ae949a768639b388a7b
languageName: node
linkType: hard
"redis@npm:4.6.13":
version: 4.6.13
resolution: "redis@npm:4.6.13"
@ -1055,13 +1194,29 @@ __metadata:
languageName: node
linkType: hard
"retry-as-promised@npm:^7.0.4":
"retry-as-promised@npm:^7.0.3":
version: 7.0.4
resolution: "retry-as-promised@npm:7.0.4"
checksum: 10/cd9fd20e990c6980a2979348fbc198aa4a065f03242c1cd7782372da7054253927e0803291c843db07255a38d255936cc0f9da55bf826c9f75443a9dedb8bf4b
languageName: node
linkType: hard
"reusify@npm:^1.0.4":
version: 1.0.4
resolution: "reusify@npm:1.0.4"
checksum: 10/14222c9e1d3f9ae01480c50d96057228a8524706db79cdeb5a2ce5bb7070dd9f409a6f84a02cbef8cdc80d39aef86f2dd03d155188a1300c599b05437dcd2ffb
languageName: node
linkType: hard
"run-parallel@npm:^1.1.9":
version: 1.2.0
resolution: "run-parallel@npm:1.2.0"
dependencies:
queue-microtask: "npm:^1.2.2"
checksum: 10/cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d
languageName: node
linkType: hard
"seedrandom@npm:^3.0.5":
version: 3.0.5
resolution: "seedrandom@npm:3.0.5"
@ -1069,7 +1224,7 @@ __metadata:
languageName: node
linkType: hard
"semver@npm:^7.5.4":
"semver@npm:^7.3.7":
version: 7.6.0
resolution: "semver@npm:7.6.0"
dependencies:
@ -1080,53 +1235,10 @@ __metadata:
languageName: node
linkType: hard
"sequelize-pool@npm:^7.1.0":
version: 7.1.0
resolution: "sequelize-pool@npm:7.1.0"
checksum: 10/eeb0837451afb245cf3aece5d93c50ef051bd7f4397c4e578f8cbf41ebf485e0acd887c1aa3f4394b80dc874229a32ce5aafeaa2f00ec3ecc5dfcc518bd7bf7e
languageName: node
linkType: hard
"sequelize@npm:6.37.1":
version: 6.37.1
resolution: "sequelize@npm:6.37.1"
dependencies:
"@types/debug": "npm:^4.1.8"
"@types/validator": "npm:^13.7.17"
debug: "npm:^4.3.4"
dottie: "npm:^2.0.6"
inflection: "npm:^1.13.4"
lodash: "npm:^4.17.21"
moment: "npm:^2.29.4"
moment-timezone: "npm:^0.5.43"
pg-connection-string: "npm:^2.6.1"
retry-as-promised: "npm:^7.0.4"
semver: "npm:^7.5.4"
sequelize-pool: "npm:^7.1.0"
toposort-class: "npm:^1.0.1"
uuid: "npm:^8.3.2"
validator: "npm:^13.9.0"
wkx: "npm:^0.5.0"
peerDependenciesMeta:
ibm_db:
optional: true
mariadb:
optional: true
mysql2:
optional: true
oracledb:
optional: true
pg:
optional: true
pg-hstore:
optional: true
snowflake-sdk:
optional: true
sqlite3:
optional: true
tedious:
optional: true
checksum: 10/05be9a1e67c444a0a9c2951cd9b0fd7ac08ed2b81671307ca631b4c7597f357b53a26cdff3a3e39a3cd0a927abfce18afc7a472957fcb17b4e26aa5caca97e3c
"sequelize-pool@npm:^8.0.0":
version: 8.0.0
resolution: "sequelize-pool@npm:8.0.0"
checksum: 10/c449ec2f3444f75372fde505bf26a22724ee7336192fd7937e546759bca19256fefd39970230b4eb11f1dcb106607dae7085e14e3dc8e3c1a90d30f7874de204
languageName: node
linkType: hard
@ -1155,12 +1267,12 @@ __metadata:
languageName: node
linkType: hard
"systeminformation@npm:5.22.5":
version: 5.22.5
resolution: "systeminformation@npm:5.22.5"
"systeminformation@npm:5.22.6":
version: 5.22.6
resolution: "systeminformation@npm:5.22.6"
bin:
systeminformation: lib/cli.js
checksum: 10/65a5e0b90de67f7566a963f971737ecc6fcdac263590438a906dbca26b6e40c147ac1b59ede8b618dd86c492407740719bb9664c11eaf9fe8505332e8b78c3f5
checksum: 10/f5c9e6f674c8a857514ce21709111d05e0e7b5d5a82265a64626bfb16f0ea82dce1f88455ca481ebb0ef1f83ec9072c07af1a0318de7ec01e80947d9d8a9d0d4
conditions: (os=darwin | os=linux | os=win32 | os=freebsd | os=openbsd | os=netbsd | os=sunos | os=android)
languageName: node
linkType: hard
@ -1172,6 +1284,15 @@ __metadata:
languageName: node
linkType: hard
"to-regex-range@npm:^5.0.1":
version: 5.0.1
resolution: "to-regex-range@npm:5.0.1"
dependencies:
is-number: "npm:^7.0.0"
checksum: 10/10dda13571e1f5ad37546827e9b6d4252d2e0bc176c24a101252153ef435d83696e2557fe128c4678e4e78f5f01e83711c703eef9814eb12dab028580d45980a
languageName: node
linkType: hard
"toposort-class@npm:^1.0.1":
version: 1.0.1
resolution: "toposort-class@npm:1.0.1"
@ -1193,6 +1314,13 @@ __metadata:
languageName: node
linkType: hard
"type-fest@npm:^3.0.0":
version: 3.13.1
resolution: "type-fest@npm:3.13.1"
checksum: 10/9a8a2359ada34c9b3affcaf3a8f73ee14c52779e89950db337ce66fb74c3399776c697c99f2532e9b16e10e61cfdba3b1c19daffb93b338b742f0acd0117ce12
languageName: node
linkType: hard
"typed-function@npm:^4.1.1":
version: 4.1.1
resolution: "typed-function@npm:4.1.1"
@ -1200,23 +1328,23 @@ __metadata:
languageName: node
linkType: hard
"typescript@npm:5.4.2":
version: 5.4.2
resolution: "typescript@npm:5.4.2"
"typescript@npm:5.4.3":
version: 5.4.3
resolution: "typescript@npm:5.4.3"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
checksum: 10/f8cfdc630ab1672f004e9561eb2916935b2d267792d07ce93e97fc601c7a65191af32033d5e9c0169b7dc37da7db9bf320f7432bc84527cb7697effaa4e4559d
checksum: 10/de4c69f49a7ad4b1ea66a6dcc8b055ac34eb56af059a069d8988dd811c5e649be07e042e5bf573e8d0ac3ec2f30e6c999aa651cd09f6e9cbc6113749e8b6be20
languageName: node
linkType: hard
"typescript@patch:typescript@npm%3A5.4.2#optional!builtin<compat/typescript>":
version: 5.4.2
resolution: "typescript@patch:typescript@npm%3A5.4.2#optional!builtin<compat/typescript>::version=5.4.2&hash=5adc0c"
"typescript@patch:typescript@npm%3A5.4.3#optional!builtin<compat/typescript>":
version: 5.4.3
resolution: "typescript@patch:typescript@npm%3A5.4.3#optional!builtin<compat/typescript>::version=5.4.3&hash=5adc0c"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
checksum: 10/f5f9a4133c2670761f0166eae5b3bafbc4a3fc24f0f42a93c9c893d9e9d6e66ea066969c5e7483fa66b4ae0e99125592553f3b92fd3599484de8be13b0615176
checksum: 10/5aedd97595582b08aadb8a70e8e3ddebaf5a9c1e5ad4d6503c2fcfc15329b5cf8d01145b09913e9555683ac16c5123a96be32b6d72614098ebd42df520eed9b1
languageName: node
linkType: hard
@ -1243,15 +1371,6 @@ __metadata:
languageName: node
linkType: hard
"undici@npm:6.7.0":
version: 6.7.0
resolution: "undici@npm:6.7.0"
dependencies:
"@fastify/busboy": "npm:^2.0.0"
checksum: 10/e133a27f89075329a337ab4220839ba6a48bdb62ee7dd824ed72415aabe705522fdbb1b0016fb5a4d74ee2ca3ca2854ae9d085aae970e4519678bdc8c96fdf0b
languageName: node
linkType: hard
"undici@npm:6.9.0":
version: 6.9.0
resolution: "undici@npm:6.9.0"
@ -1266,7 +1385,7 @@ __metadata:
languageName: node
linkType: hard
"uuid@npm:8.3.2, uuid@npm:^8.3.2":
"uuid@npm:8.3.2":
version: 8.3.2
resolution: "uuid@npm:8.3.2"
bin:
@ -1275,7 +1394,16 @@ __metadata:
languageName: node
linkType: hard
"validator@npm:^13.9.0":
"uuid@npm:^9.0.0":
version: 9.0.1
resolution: "uuid@npm:9.0.1"
bin:
uuid: dist/bin/uuid
checksum: 10/9d0b6adb72b736e36f2b1b53da0d559125ba3e39d913b6072f6f033e0c87835b414f0836b45bcfaf2bdf698f92297fea1c3cc19b0b258bc182c9c43cc0fab9f2
languageName: node
linkType: hard
"validator@npm:^13.7.0":
version: 13.11.0
resolution: "validator@npm:13.11.0"
checksum: 10/4bf094641eb71729c06a42d669840e7189597ba655a8264adabac9bf03f95cd6fde5fbc894b0a13ee861bd4a852f56d2afdc9391aeaeb3fc0f9633a974140e12