1
0
mirror of https://github.com/toast-ts/Daggerbot-TS.git synced 2024-11-17 12:21:00 -05:00

Restructured some of the files

This commit is contained in:
AnxietyisReal 2023-10-08 08:01:16 +11:00
parent 01b1f0e650
commit a0aa3518d7
16 changed files with 199 additions and 1570 deletions

761
.pnp.cjs generated

File diff suppressed because it is too large Load Diff

View File

@ -29,30 +29,23 @@
"engineStrict": true, "engineStrict": true,
"packageManager": "yarn@3.6.3", "packageManager": "yarn@3.6.3",
"dependencies": { "dependencies": {
"@discord-player/extractor": "4.4.4",
"@discordjs/opus": "0.9.0",
"@octokit/auth-token": "4.0.0", "@octokit/auth-token": "4.0.0",
"@octokit/rest": "20.0.2", "@octokit/rest": "20.0.2",
"ansi-colors": "4.1.3", "ansi-colors": "4.1.3",
"canvas": "2.11.2", "canvas": "2.11.2",
"discord-player": "6.6.4", "dayjs": "1.11.10",
"discord.js": "14.13.0", "discord.js": "14.13.0",
"libsodium-wrappers": "0.7.13", "fast-xml-parser": "4.3.2",
"moment": "2.29.4", "mongoose": "7.6.0",
"mongoose": "7.5.4",
"ms": "2.1.3", "ms": "2.1.3",
"node-cron": "3.0.2", "node-cron": "3.0.2",
"prism-media": "1.3.5",
"redis": "4.6.10", "redis": "4.6.10",
"systeminformation": "5.21.10", "systeminformation": "5.21.11",
"typescript": "5.2.2", "typescript": "5.2.2"
"xml-js": "1.6.11",
"youtube-sr": "4.3.4",
"ytdl-core": "4.11.5"
}, },
"devDependencies": { "devDependencies": {
"@types/ms": "0.7.32", "@types/ms": "0.7.32",
"@types/node": "20.8.2", "@types/node": "20.8.3",
"@types/node-cron": "3.0.9" "@types/node-cron": "3.0.9"
} }
} }

View File

@ -8,7 +8,8 @@ type MPServerCache = Record<string,{
}> }>
import Discord from 'discord.js'; import Discord from 'discord.js';
import {readFileSync, readdirSync} from 'node:fs'; import ConfigHelper from './helpers/ConfigHelper.js';
import {readdirSync} from 'node:fs';
import {Config, FSPlayer} from './typings/interfaces'; import {Config, FSPlayer} from './typings/interfaces';
import bannedWords from './models/bannedWords.js'; import bannedWords from './models/bannedWords.js';
import userLevels from './models/userLevels.js'; import userLevels from './models/userLevels.js';
@ -19,18 +20,10 @@ import bonkCount from './models/bonkCount.js';
import MPServer from './models/MPServer.js'; import MPServer from './models/MPServer.js';
import DatabaseServer from './funcs/DatabaseServer.js'; import DatabaseServer from './funcs/DatabaseServer.js';
import CacheServer from './funcs/CacheServer.js'; import CacheServer from './funcs/CacheServer.js';
import xjs from 'xml-js'; import fxp from 'fast-xml-parser';
import moment from 'moment'; import dayjs from 'dayjs';
import TSClient from './helpers/TSClient.js'; import TSClient from './helpers/TSClient.js';
const importconfig = ConfigHelper.loadConfig(process.argv[2] ?? 'src/config.json');
let importconfig:Config
try{
importconfig = JSON.parse(readFileSync('src/DB-Beta.config.json', 'utf8'));
console.log('Using development config :: Daggerbot Beta')
} catch(e){
importconfig = JSON.parse(readFileSync('src/config.json', 'utf8'))
console.log('Using production config')
}
export default class TClient extends Discord.Client { export default class TClient extends Discord.Client {
invites: Map<any, any>; invites: Map<any, any>;
@ -40,8 +33,8 @@ export default class TClient extends Discord.Client {
embed: typeof Discord.EmbedBuilder; embed: typeof Discord.EmbedBuilder;
collection: typeof Discord.Collection; collection: typeof Discord.Collection;
attachmentBuilder: typeof Discord.AttachmentBuilder; attachmentBuilder: typeof Discord.AttachmentBuilder;
moment: typeof moment; dayjs: typeof dayjs;
xjs: typeof xjs; fxp: typeof fxp;
userLevels: userLevels; userLevels: userLevels;
punishments: punishments; punishments: punishments;
bonkCount: bonkCount; bonkCount: bonkCount;
@ -72,8 +65,8 @@ export default class TClient extends Discord.Client {
this.embed = Discord.EmbedBuilder; this.embed = Discord.EmbedBuilder;
this.collection = Discord.Collection; this.collection = Discord.Collection;
this.attachmentBuilder = Discord.AttachmentBuilder; this.attachmentBuilder = Discord.AttachmentBuilder;
this.moment = moment; this.dayjs = dayjs;
this.xjs = xjs; this.fxp = fxp;
this.userLevels = new userLevels(this); this.userLevels = new userLevels(this);
this.bonkCount = new bonkCount(this); this.bonkCount = new bonkCount(this);
this.punishments = new punishments(this); this.punishments = new punishments(this);

View File

@ -1,152 +0,0 @@
import Discord from 'discord.js';
import TClient from '../client.js';
import TSClient from '../helpers/TSClient.js';
import {Player,useTimeline,useQueue} from 'discord-player';
import {SpotifyExtractor} from '@discord-player/extractor';
import MessageTool from '../helpers/MessageTool.js';
export default {
async run(client: TClient, interaction: Discord.ChatInputCommandInteraction<'cached'>){
if (!client.config.botSwitches.music && !client.config.whitelist.includes(interaction.user.id)) return interaction.reply({content:'Music module is currently disabled.',ephemeral:true});
if (!MessageTool.isStaff(interaction.member) && !client.config.whitelist.includes(interaction.member.id)) return interaction.reply('Music module is close to being completed, some parts may be incomplete or broken, so it has been restricted to staff for time-being.');
const player = Player.singleton(client);
await player.extractors.register(SpotifyExtractor,{clientId: (await TSClient.Token()).spotify.client, clientSecret: (await TSClient.Token()).spotify.secret});
if (!interaction.member.voice.channel) return interaction.reply('Please join a voice channel first to use the command.');
player.nodes.create(interaction.guildId, {
metadata: {
channel: interaction.channel,
client: interaction.guild.members.me,
requestedBy: interaction.member
},
selfDeaf: true,
volume: 75,
skipOnNoStream: true,
leaveOnEnd: false,
leaveOnEmpty: false,
bufferingTimeout: 30000,
connectionTimeout: 25000,
strategy: 'FIFO'
});
const queue = useQueue(interaction.guildId);
({
play: async()=>{
const url = interaction.options.getString('url');
if (!url.includes('https://open.spotify.com/')) return interaction.reply('Sorry, I can\'t play that. I can only accept Spotify links that contains `https://open.spotify.com/`'); // Yes, I made it clear that it's intended typo.
if (!(await player.search(url,{requestedBy:interaction.user})).hasTracks()) return interaction.reply(`No results found for \`${url}\`\nIt is either private, unavailable or you made a *tpyo* in your query.`)
player.play(interaction.member.voice.channel, url);
await interaction.reply(`Added the ${url.includes('playlist/') ? 'playlist' : url.includes('album/') ? 'album' : 'song'} to the queue.`);
},
stop: async()=>{
player.destroy();
await interaction.reply('Player destroyed.')
},
pause: ()=>{
queue.node.setPaused(!queue.node.isPaused());
if (queue.node.isPaused()) interaction.reply('Music has been paused.');
else interaction.reply('Music has been resumed.')
},
now_playing: ()=>{
const {volume,timestamp,track} = useTimeline(interaction.guildId);
if (!track) return interaction.reply('There\'s nothing playing, why are you checking?');
else {
function convertNumberToText(input:number){
switch(input){
case 0: return 'Off';
case 1: return 'Track';
case 2: return 'Queue';
case 3: return 'Autoplay DJ';
}
}
interaction.reply({embeds:[
new client.embed().setColor(client.config.embedColor).setTitle(`${track.title} - ${track.author}`).setThumbnail(track.thumbnail).addFields(
{name: 'Timestamp', value: `**${timestamp.current.label}**/**${timestamp.total.label}**`, inline: true},
{name: 'Volume', value: `${volume}%`, inline: true},
{name: 'Loop mode', value: `${convertNumberToText(queue.repeatMode)}`, inline: true}
)
]})
}
},
queue: async()=>interaction.reply({embeds:[new client.embed().setColor(client.config.embedColor).setTitle(`Songs currently in the queue: ${queue.tracks.size}`).setDescription(queue.tracks.size > 0 ? `\`\`\`${queue.tracks.map(i=>`${i.title} - ${i.author}\`\`\``).join('```\n')}`.slice(0,1017) : '*No songs currently queued.*')]}),
volume: ()=>{
const vol = interaction.options.getNumber('percentage');
queue.node.setVolume(vol);
interaction.reply(`Successfully adjusted the player's volume to ${vol}%`)
},
shuffle: ()=>{
queue.tracks.shuffle();
interaction.reply('Songs in the queue has been shuffled.')
},
remove: ()=>{
queue.removeTrack(interaction.options.getNumber('id',true));
interaction.reply('Song has been removed from the queue.')
},
skip: ()=>{
queue.node.skip();
interaction.reply('Skipped the current song, now playing the next one in queue.')
},
loop: ()=>{
const loopMode = interaction.options.getNumber('mode',true);
queue.setRepeatMode(loopMode);
interaction.reply(`Loop mode is now ${loopMode === 0 ? 'disabled.' : loopMode === 1 ? 'set to loop current track.': loopMode === 2 ? 'looping through current queue.' : 'activating Autoplay DJ.'}`)
}
} as any)[interaction.options.getSubcommand()]();
},
data: new Discord.SlashCommandBuilder()
.setName('music')
.setDescription('Music module')
.addSubcommand(x=>x
.setName('play')
.setDescription('Play a Spotify song')
.addStringOption(x=>x
.setName('url')
.setDescription('Spotify URL')
.setRequired(true)))
.addSubcommand(x=>x
.setName('stop')
.setDescription('Stop playing music and disconnect the bot from voice channel'))
.addSubcommand(x=>x
.setName('skip')
.setDescription('Skip the current song and play the next one'))
.addSubcommand(x=>x
.setName('pause')
.setDescription('Pause/unpause the music'))
.addSubcommand(x=>x
.setName('now_playing')
.setDescription('Check what song is currently playing'))
.addSubcommand(x=>x
.setName('queue')
.setDescription('View the list of songs currently in queue'))
.addSubcommand(x=>x
.setName('volume')
.setDescription('Adjust the player\'s volume')
.addNumberOption(x=>x
.setName('percentage')
.setDescription('Adjust the volume level, ranges from 5 to 100, default is 75')
.setMaxValue(100)
.setMinValue(5)
.setRequired(true)))
.addSubcommand(x=>x
.setName('shuffle')
.setDescription('Shuffle the songs in a queue'))
.addSubcommand(x=>x
.setName('loop')
.setDescription('Loop through queue or current track or enable Autoplay DJ')
.addNumberOption(x=>x
.setName('mode')
.setDescription('Select the available modes to use')
.addChoices(
{name: 'Off', value: 0},
{name: 'Current track', value: 1},
{name: 'Queue', value: 2},
{name: 'Autoplay DJ (Play related songs based on queue)', value: 3}
)
.setRequired(true)))
.addSubcommand(x=>x
.setName('remove')
.setDescription('Remove a specific song from the queue')
.addNumberOption(x=>x
.setName('id')
.setDescription('Song # in the queue to be removed')
.setMinValue(0)
.setMaxValue(9999)
.setRequired(true)))
}

View File

@ -9,7 +9,7 @@ export default {
const suggestionID = (Math.random() + 1).toString(36).substring(5); const suggestionID = (Math.random() + 1).toString(36).substring(5);
const userid = (await client.suggestion._content.findById(suggestionIDReply))?.user._id; const userid = (await client.suggestion._content.findById(suggestionIDReply))?.user._id;
const theirIdea = (await client.suggestion._content.findById(suggestionIDReply))?.idea; const theirIdea = (await client.suggestion._content.findById(suggestionIDReply))?.idea;
const timeFormatting = client.moment().format('DD/MM/YY h:mm A'); const timeFormatting = client.dayjs().format('DD/MM/YY h:mm A');
const stateChanged = 'Suggestion state has been successfully updated and DM is sent.'; const stateChanged = 'Suggestion state has been successfully updated and DM is sent.';
const dmFail = `Failed to send a DM to ${MessageTool.formatMention(userid, 'user')}, they possibly have it turned off or blocked me.\nSuggestion ID: **${suggestionIDReply}**`; const dmFail = `Failed to send a DM to ${MessageTool.formatMention(userid, 'user')}, they possibly have it turned off or blocked me.\nSuggestion ID: **${suggestionIDReply}**`;
({ ({

View File

@ -1,4 +1,5 @@
{ {
"configName": "Daggerbot",
"embedColor": "#ff69b4", "embedColor": "#ff69b4",
"embedColorBackup": "#0052cf", "embedColorBackup": "#0052cf",
"embedColorGreen": "#57f287", "embedColorGreen": "#57f287",
@ -26,7 +27,6 @@
"registerCommands": true, "registerCommands": true,
"commands": true, "commands": true,
"logs": true, "logs": true,
"music": true,
"buttonRoles": true, "buttonRoles": true,
"automod": true, "automod": true,
"mpstats": true, "mpstats": true,
@ -34,7 +34,7 @@
}, },
"botPresence": { "botPresence": {
"activities": [ "activities": [
{"name": "Today is October!", "url": "https://www.youtube.com/watch?v=kpGdeUE26Dk", "type": 1} {"name": "Today is October!", "url": "https://www.youtube.com/watch?v=8wx8lmN5d-I", "type": 1}
], ],
"status": "online" "status": "online"
}, },

View File

@ -12,6 +12,7 @@ import {FSPlayer, FSData, FSCareerSavegame} from '../typings/interfaces';
export default async(client:TClient, Channel:string, Message:string, Server:TServer, ServerName:string)=>{ export default async(client:TClient, Channel:string, Message:string, Server:TServer, ServerName:string)=>{
let playerData:Array<string> = []; let playerData:Array<string> = [];
let dataUnavailable = 'Unavailable'
const msg = await (client.channels.resolve(Channel) as Discord.TextChannel).messages.fetch(Message); const msg = await (client.channels.resolve(Channel) as Discord.TextChannel).messages.fetch(Message);
const serverErrorEmbed = new client.embed().setColor(client.config.embedColorRed).setTitle('Host did not respond back in time'); const serverErrorEmbed = new client.embed().setColor(client.config.embedColorRed).setTitle('Host did not respond back in time');
const genericEmbed = new client.embed(); const genericEmbed = new client.embed();
@ -20,7 +21,8 @@ export default async(client:TClient, Channel:string, Message:string, Server:TSer
try { try {
const hitDSS = await fetch(Server.ip+'/feed/dedicated-server-stats.json?code='+Server.code, sessionInit).then(r=>r.json() as Promise<FSData>); const hitDSS = await fetch(Server.ip+'/feed/dedicated-server-stats.json?code='+Server.code, sessionInit).then(r=>r.json() as Promise<FSData>);
const hitCSG = await fetch(Server.ip+'/feed/dedicated-server-savegame.html?code='+Server.code+'&file=careerSavegame', sessionInit).then(async r=>(client.xjs.xml2js(await r.text(), {compact: true}) as any).careerSavegame as FSCareerSavegame); const hitCSG = await fetch(Server.ip+'/feed/dedicated-server-savegame.html?code='+Server.code+'&file=careerSavegame', sessionInit).then(async r=>(new client.fxp.XMLParser({ignoreAttributes: false, transformAttributeName(attributeName){return attributeName.replaceAll('@_','')}}).parse(await r.text()) as any).careerSavegame as FSCareerSavegame);
console.log(hitCSG.settings)
if (!hitDSS ?? !hitCSG){ if (!hitDSS ?? !hitCSG){
if (hitDSS && !hitDSS.slots) return Logger.forwardToConsole('log', 'MPModule', `DSS failed with unknown slots table for ${client.MPServerCache[ServerName].name}`); if (hitDSS && !hitDSS.slots) return Logger.forwardToConsole('log', 'MPModule', `DSS failed with unknown slots table for ${client.MPServerCache[ServerName].name}`);
@ -78,22 +80,21 @@ export default async(client:TClient, Channel:string, Message:string, Server:TSer
{name: 'Current map', value: hitDSS.server.mapName, inline: true}, {name: 'Current map', value: hitDSS.server.mapName, inline: true},
{name: 'Server version', value: hitDSS.server.version, inline: true}, {name: 'Server version', value: hitDSS.server.version, inline: true},
{name: 'In-game Time', value: `${('0'+Math.floor((hitDSS.server.dayTime/3600/1000))).slice(-2)}:${('0'+Math.floor((hitDSS.server.dayTime/60/1000)%60)).slice(-2)}`, inline: true}, {name: 'In-game Time', value: `${('0'+Math.floor((hitDSS.server.dayTime/3600/1000))).slice(-2)}:${('0'+Math.floor((hitDSS.server.dayTime/60/1000)%60)).slice(-2)}`, inline: true},
{name: 'Slot Usage', value: isNaN(Number(hitCSG?.slotSystem?._attributes.slotUsage)) === true ? 'Unavailable' : Number(hitCSG.slotSystem?._attributes.slotUsage).toLocaleString('en-us'), inline: true}, {name: 'Slot Usage', value: isNaN(Number(hitCSG?.slotSystem?.slotUsage)) === true ? dataUnavailable : Number(hitCSG.slotSystem?.slotUsage).toLocaleString('en-us'), inline: true},
{name: 'Autosave Interval', value: isNaN(Number(hitCSG?.settings?.autoSaveInterval._text)) === true ? 'Unavailable' : Number(hitCSG.settings?.autoSaveInterval._text).toFixed(0)+' mins', inline:true}, {name: 'Autosave Interval', value: isNaN(Number(hitCSG?.settings?.autoSaveInterval)) === true ? dataUnavailable : Number(hitCSG.settings?.autoSaveInterval).toFixed(0)+' mins', inline:true},
{name: 'Timescale', value: isNaN(Number(hitCSG?.settings?.timeScale._text)) === true ? 'Unavailable' : formatTimescale(Number(hitCSG.settings?.timeScale._text), 0, 'x'), inline: true} {name: 'Timescale', value: isNaN(Number(hitCSG?.settings?.timeScale)) === true ? dataUnavailable : formatTimescale(Number(hitCSG.settings?.timeScale), 0, 'x'), inline: true}
); );
const playersEmbed = new client.embed().setColor(client.config.embedColor).setTitle(hitDSS.server.name).setDescription(hitDSS.slots.used < 1 ? '*No players online*' : playerData.join('\n\n')).setAuthor({name:`${hitDSS.slots.used}/${hitDSS.slots.capacity}`}); const playersEmbed = new client.embed().setColor(client.config.embedColor).setTitle(hitDSS.server.name).setDescription(hitDSS.slots.used < 1 ? '*No players online*' : playerData.join('\n\n')).setAuthor({name:`${hitDSS.slots.used}/${hitDSS.slots.capacity}`});
msg.edit({content:refreshIntervalText,embeds:[serverDetails, playersEmbed]}); msg.edit({content:refreshIntervalText,embeds:[serverDetails, playersEmbed]});
} }
// #multifarm_chat webhook // #multifarm_chat webhook
let dataUnavailable = 'Unavailable';
const growthModeTextMap = { const growthModeTextMap = {
'1': 'Yes', '1': 'Yes',
'2': 'No', '2': 'No',
'3': 'Growth paused' '3': 'Growth paused'
} }
const growthModeText = growthModeTextMap[hitCSG?.settings.growthMode._text] ?? dataUnavailable; const growthModeText = growthModeTextMap[hitCSG?.settings.growthMode] ?? dataUnavailable;
function genericMapping<T>(map: Record<string, T>, key: string, defaultValue: T): T { function genericMapping<T>(map: Record<string, T>, key: string, defaultValue: T): T {
return map[key] ?? defaultValue; return map[key] ?? defaultValue;
@ -108,7 +109,7 @@ export default async(client:TClient, Channel:string, Message:string, Server:TSer
'2': 'Normal', '2': 'Normal',
'3': 'High' '3': 'High'
} }
const fuelUsageText = fuelUsageTextMap[hitCSG?.settings.fuelUsage._text] ?? dataUnavailable; const fuelUsageText = fuelUsageTextMap[hitCSG?.settings.fuelUsage] ?? dataUnavailable;
const dirtIntervalTextMap = { const dirtIntervalTextMap = {
'1': 'Off', '1': 'Off',
@ -116,17 +117,17 @@ export default async(client:TClient, Channel:string, Message:string, Server:TSer
'3': 'Normal', '3': 'Normal',
'4': 'Fast' '4': 'Fast'
} }
const dirtIntervalText = dirtIntervalTextMap[hitCSG?.settings.dirtInterval._text] ?? dataUnavailable; const dirtIntervalText = dirtIntervalTextMap[hitCSG?.settings.dirtInterval] ?? dataUnavailable;
// Edit the embed in #multifarm_chat // Edit the embed in #multifarm_chat
HookMgr.edit(client, 'mf_chat', '1159998634604109897', '1160098458997370941', { HookMgr.edit(client, 'mf_chat', '1159998634604109897', '1160098458997370941', {
content: refreshIntervalText, content: refreshIntervalText,
embeds: [new client.embed().setColor(client.config.embedColor).setTitle('Savegame Settings').addFields( embeds: [new client.embed().setColor(client.config.embedColor).setTitle('Savegame Settings').addFields(
{name: 'Seasonal Growth', value: growthModeText, inline: true}, {name: 'Seasonal Growth', value: growthModeText, inline: true},
{name: 'Crop Destruction', value: genericMapping(genericTextMap, hitCSG?.settings.fruitDestruction._text, dataUnavailable), inline: true}, {name: 'Crop Destruction', value: genericMapping(genericTextMap, hitCSG?.settings.fruitDestruction, dataUnavailable), inline: true},
{name: 'Periodic Plowing', value: genericMapping(genericTextMap, hitCSG?.settings.plowingRequiredEnabled._text, dataUnavailable), inline: true}, {name: 'Periodic Plowing', value: genericMapping(genericTextMap, hitCSG?.settings.plowingRequiredEnabled, dataUnavailable), inline: true},
{name: 'Stones', value: genericMapping(genericTextMap, hitCSG?.settings.stonesEnabled._text, dataUnavailable), inline: true}, {name: 'Stones', value: genericMapping(genericTextMap, hitCSG?.settings.stonesEnabled, dataUnavailable), inline: true},
{name: 'Lime', value: genericMapping(genericTextMap, hitCSG?.settings.limeRequired._text, dataUnavailable), inline: true}, {name: 'Lime', value: genericMapping(genericTextMap, hitCSG?.settings.limeRequired, dataUnavailable), inline: true},
{name: 'Weeds', value: genericMapping(genericTextMap, hitCSG?.settings.weedsEnabled._text, dataUnavailable), inline: true}, {name: 'Weeds', value: genericMapping(genericTextMap, hitCSG?.settings.weedsEnabled, dataUnavailable), inline: true},
{name: 'Fuel Usage', value: fuelUsageText, inline: true}, {name: 'Fuel Usage', value: fuelUsageText, inline: true},
{name: 'Dirt Interval', value: dirtIntervalText, inline: true}, {name: 'Dirt Interval', value: dirtIntervalText, inline: true},
).setFooter({text: 'Last updated'}).setTimestamp()] ).setFooter({text: 'Last updated'}).setTimestamp()]

View File

@ -32,7 +32,7 @@ export default class Response {
`Good grief, is it Monday already? Anyways, morning ${PersonnyMcPerson}..`, `This time I can shout! So here we go! 1..2..3\n*inhales*\nMORNING ${PersonnyMcPerson.toUpperCase()}!`, `Good grief, is it Monday already? Anyways, morning ${PersonnyMcPerson}..`, `This time I can shout! So here we go! 1..2..3\n*inhales*\nMORNING ${PersonnyMcPerson.toUpperCase()}!`,
'Gooooood morning to you!', `Good morning to you! You know what else is good? A segue to our sponsor, breakfast!\nGet started with getting out of the bed and have some breakfast!`, 'Gooooood morning to you!', `Good morning to you! You know what else is good? A segue to our sponsor, breakfast!\nGet started with getting out of the bed and have some breakfast!`,
`## Morning ${PersonnyMcPerson}!`, '### Have a wonderful day ahead of you!', `Here, have some pancakes for breakfast, ${PersonnyMcPerson}`, 'Is it Friday yet? This week is getting boring already!', `## Morning ${PersonnyMcPerson}!`, '### Have a wonderful day ahead of you!', `Here, have some pancakes for breakfast, ${PersonnyMcPerson}`, 'Is it Friday yet? This week is getting boring already!',
`You have reached ${FormatDOTY(client.moment.utc().dayOfYear())} day of the year, also good morning to you as well!`, 'Good morning! Have a cookie to start your day with. :cookie:', `You have reached ${FormatDOTY(Math.floor(client.dayjs().diff(client.dayjs().startOf('year'), 'day', true))+1)} day of the year, also good morning to you as well!`, 'Good morning! Have a cookie to start your day with. :cookie:',
'https://tenor.com/view/rambo-family-rambo-rise-and-shine-wake-up-gif-22012440' 'https://tenor.com/view/rambo-family-rambo-rise-and-shine-wake-up-gif-22012440'
], ],
afternoon: [ afternoon: [

View File

@ -11,7 +11,7 @@ export default async(client:TClient, YTChannelID:string, YTChannelName:string, D
await fetch(`https://www.youtube.com/feeds/videos.xml?channel_id=${YTChannelID}`, { await fetch(`https://www.youtube.com/feeds/videos.xml?channel_id=${YTChannelID}`, {
signal: AbortSignal.timeout(10000), signal: AbortSignal.timeout(10000),
headers: {'User-Agent':'Daggerbot - Notification/undici'}, headers: {'User-Agent':'Daggerbot - Notification/undici'},
}).then(async xml=>(Data = client.xjs.xml2js(await xml.text(), {compact: true}))); }).then(async xml=>(Data = new client.fxp.XMLParser({ignoreAttributes: false, transformAttributeName(attributeName){return attributeName.replaceAll('@_','')}}).parse(await xml.text()) as any));
} catch (err) { } catch (err) {
Logger.forwardToConsole('log', 'YTModule', `Failed to fetch "${YTChannelName}" from YouTube`); Logger.forwardToConsole('log', 'YTModule', `Failed to fetch "${YTChannelName}" from YouTube`);
} }

View File

@ -0,0 +1,15 @@
import {readFileSync} from 'node:fs';
import {Config} from '../typings/interfaces';
export default class ConfigHelper {
static loadConfig(configFile:string) {
let importconfig:Config;
try {
importconfig = JSON.parse(readFileSync(configFile, 'utf8'));
console.log(`Using development config :: ${importconfig.configName}`);
} catch (e) {
console.error(`Error loading config file "${configFile}": ${e}`);
process.exit(1);
}
return importconfig;
}
}

View File

@ -1,8 +1,8 @@
import moment from 'moment'; import dayjs from 'dayjs';
export default class Logger { export default class Logger {
static logTime() { static logTime() {
return `[${moment().format('DD/MM/YY HH:mm:ss')}]`; return `[${dayjs().format('DD/MM/YY HH:mm:ss')}]`;
} }
static logPrefix(prefix:string) { static logPrefix(prefix:string) {
return `[${prefix}]`; return `[${prefix}]`;

View File

@ -5,12 +5,6 @@ const config:Config = JSON.parse(readFileSync('src/config.json', 'utf8'));
type RoleKeys = keyof typeof config.mainServer.roles; type RoleKeys = keyof typeof config.mainServer.roles;
export default class MessageTool { export default class MessageTool {
static embedMusic(color:Discord.ColorResolvable, title:string, thumbnail?:string, footer?:string){
const embed = new Discord.EmbedBuilder().setColor(color).setTitle(title);
if (thumbnail) embed.setThumbnail(thumbnail);
if (footer) embed.setFooter({text: footer});
return embed
}
static embedStruct(color:Discord.ColorResolvable, title:string, description?:string|null, image?:string|null){ static embedStruct(color:Discord.ColorResolvable, title:string, description?:string|null, image?:string|null){
const embed = new Discord.EmbedBuilder().setColor(color).setTitle(title); const embed = new Discord.EmbedBuilder().setColor(color).setTitle(title);
if (description) embed.setDescription(description); if (description) embed.setDescription(description);

View File

@ -2,11 +2,7 @@ interface TokenService_API {
main: string, main: string,
mongodb_uri: string, mongodb_uri: string,
redis_uri: string, redis_uri: string,
octokit: string, octokit: string
spotify: {
client: string,
secret: string
}
} }
export default class TSClient { export default class TSClient {

View File

@ -5,10 +5,7 @@ client.init();
import Logger from './helpers/Logger.js'; import Logger from './helpers/Logger.js';
import YTModule from './funcs/YTModule.js'; import YTModule from './funcs/YTModule.js';
import MPModule from './funcs/MPModule.js'; import MPModule from './funcs/MPModule.js';
import {Player} from 'discord-player';
const player = Player.singleton(client);
import {Punishment} from './typings/interfaces'; import {Punishment} from './typings/interfaces';
import MessageTool from './helpers/MessageTool.js';
import {writeFileSync, readFileSync} from 'node:fs'; import {writeFileSync, readFileSync} from 'node:fs';
// Error handler // Error handler
@ -22,19 +19,6 @@ process.on('uncaughtException', (error: Error)=>DZ(error, 'uncaughtException'));
process.on('error', (error: Error)=>DZ(error, 'nodeError')); process.on('error', (error: Error)=>DZ(error, 'nodeError'));
client.on('error', (error: Error)=>DZ(error, 'clientError')); client.on('error', (error: Error)=>DZ(error, 'clientError'));
// Audio Player event handling
if (client.config.botSwitches.music){
player.events.on('playerStart', (queue,track)=>queue.channel.send({embeds:[MessageTool.embedMusic(client.config.embedColor, `Next up: ${track.raw.title} - ${track.raw.author}`,track.raw.thumbnail)]}));
player.events.on('audioTrackAdd', (queue,track)=>queue.channel.send({embeds:[MessageTool.embedMusic(client.config.embedColorGreen, `Added: ${track.raw.title} - ${track.raw.author}`,track.raw.thumbnail)]}));
player.events.on('audioTrackRemove', (queue, track)=>queue.channel.send({embeds:[MessageTool.embedMusic(client.config.embedColor, `Removed: ${track.raw.title} - ${track.raw.author}`,track.raw.thumbnail)]}));
player.events.on('emptyQueue', queue=>{
if (queue.tracks.size < 1) return queue.channel.send('There\'s no songs left in the queue, leaving voice channel in 15 seconds.').then(()=>setTimeout(()=>queue.connection.disconnect(), 15000))
});
player.events.on('playerPause', queue=>queue.channel.send({embeds:[MessageTool.embedMusic(client.config.embedColor, 'Player has been paused.\nRun the command to unpause it')]}));
player.events.on('playerError', (_, error)=>DZ(error, 'playerError')); // I don't know if both of these actually works, because most
player.events.on('error', (_, error)=>DZ(error, 'playerInternalError')); // errors from the player is coming from unhandledRejection
}
// YouTube Upload notification and MP loop // YouTube Upload notification and MP loop
if (client.config.botSwitches.mpstats) setInterval(async()=>{ if (client.config.botSwitches.mpstats) setInterval(async()=>{
const serverlake = (await client.MPServer.findInCache(client.config.mainServer.id)); const serverlake = (await client.MPServer.findInCache(client.config.mainServer.id));

View File

@ -53,65 +53,61 @@ export interface FSPlayer {
} }
export interface FSCareerSavegame { export interface FSCareerSavegame {
settings: { settings: {
savegameName: XMLText, savegameName: string,
creationDate: XMLText, creationDate: string,
mapId: XMLText, mapId: string,
mapTitle: XMLText, mapTitle: string,
saveDataFormatted: XMLText, saveDataFormatted: string,
saveDate: XMLText, saveDate: string,
resetVehicles: XMLText, resetVehicles: string,
trafficeEnabled: XMLText, trafficeEnabled: string,
stopAndGoBraking: XMLText, stopAndGoBraking: string,
trailerFillLimit: XMLText, trailerFillLimit: string,
automaticMotorStartEnabled: XMLText, automaticMotorStartEnabled: string,
growthMode: XMLText, growthMode: string,
fixedSeasonalVisuals: XMLText, fixedSeasonalVisuals: string,
plannedDaysPerPeriod: XMLText, plannedDaysPerPeriod: string,
fruitDestruction: XMLText, fruitDestruction: string,
plowingRequiredEnabled: XMLText, plowingRequiredEnabled: string,
stonesEnabled: XMLText, stonesEnabled: string,
weedsEnabled: XMLText, weedsEnabled: string,
limeRequired: XMLText, limeRequired: string,
isSnowEnabled: XMLText, isSnowEnabled: string,
fuelUsage: XMLText, fuelUsage: string,
helperBuyFuel: XMLText, helperBuyFuel: string,
helperBuySeeds: XMLText, helperBuySeeds: string,
helperSlurrySource: XMLText, helperSlurrySource: string,
helperManureSource: XMLText, helperManureSource: string,
densityMapRevision: XMLText, densityMapRevision: string,
terrainTextureRevision: XMLText, terrainTextureRevision: string,
terrainLodTextureRevision: XMLText, terrainLodTextureRevision: string,
splitShapesRevision: XMLText, splitShapesRevision: string,
tipCollisionRevision: XMLText, tipCollisionRevision: string,
placementCollisionRevision: XMLText, placementCollisionRevision: string,
navigationCollisionRevision: XMLText, navigationCollisionRevision: string,
mapDensityMapRevision: XMLText, mapDensityMapRevision: string,
mapTerrainTextureRevision: XMLText, mapTerrainTextureRevision: string,
mapTerrainLodTextureRevision: XMLText, mapTerrainLodTextureRevision: string,
mapSplitShapesRevision: XMLText, mapSplitShapesRevision: string,
mapTipCollisionRevision: XMLText, mapTipCollisionRevision: string,
mapPlacementCollisionRevision: XMLText, mapPlacementCollisionRevision: string,
mapNavigationCollisionRevision: XMLText, mapNavigationCollisionRevision: string,
difficulty: XMLText, difficulty: string,
economicDifficulty: XMLText, economicDifficulty: string,
dirtInterval: XMLText, dirtInterval: string,
timeScale: XMLText, timeScale: string,
autoSaveInterval: XMLText autoSaveInterval: string
}, },
statistics: { statistics: {
money: XMLText, money: string,
playTime: XMLText playTime: string
}, },
slotSystem: { slotSystem: {
_attributes: {
slotUsage: string slotUsage: string
} }
}
}
interface XMLText {
_text: string
} }
export interface Config { export interface Config {
configName: string,
embedColor: Discord.ColorResolvable, embedColor: Discord.ColorResolvable,
embedColorGreen: Discord.ColorResolvable, embedColorGreen: Discord.ColorResolvable,
embedColorOrange: Discord.ColorResolvable, embedColorOrange: Discord.ColorResolvable,
@ -136,7 +132,6 @@ export interface Config {
registerCommands: boolean, registerCommands: boolean,
commands: boolean, commands: boolean,
logs: boolean, logs: boolean,
music: boolean,
buttonRoles: boolean, buttonRoles: boolean,
automod: boolean, automod: boolean,
mpstats: boolean, mpstats: boolean,

627
yarn.lock
View File

@ -5,52 +5,6 @@ __metadata:
version: 6 version: 6
cacheKey: 8 cacheKey: 8
"@discord-player/equalizer@npm:^0.2.3":
version: 0.2.3
resolution: "@discord-player/equalizer@npm:0.2.3"
checksum: 6f60c41b483253c647d79d18a4b94ed413281aa38af190b62fc8cd4c11feb1ea84a6662dbb08922cdb9000e32dee78ac5cb13c4f9a47711890e5a9ebb24e9f08
languageName: node
linkType: hard
"@discord-player/extractor@npm:4.4.4":
version: 4.4.4
resolution: "@discord-player/extractor@npm:4.4.4"
dependencies:
file-type: ^16.5.4
genius-lyrics: ^4.4.6
isomorphic-unfetch: ^4.0.2
node-html-parser: ^6.1.4
reverbnation-scraper: ^2.0.0
soundcloud.ts: ^0.5.2
spotify-url-info: ^3.2.6
youtube-sr: ^4.3.4
checksum: 1a12c735766404baa42b6a06f1eda0d5d264dd66b021e10ee97d688dbaa39165c3b73d02b7f2c8ca02ce4a198fa639a30df2197cf6143acec69ff57213babd0f
languageName: node
linkType: hard
"@discord-player/ffmpeg@npm:^0.1.0":
version: 0.1.0
resolution: "@discord-player/ffmpeg@npm:0.1.0"
checksum: 95653c0f7888799657ab0268f3e5f53ed910d12b56dbd7b280f8f7a27a492d4a9324c60ae76a450e37f61daca5581ef185216fed828b0317c92bfa4b236561a3
languageName: node
linkType: hard
"@discord-player/opus@npm:^0.1.2":
version: 0.1.2
resolution: "@discord-player/opus@npm:0.1.2"
checksum: 41ceb8f64e5ee071789ca0042445664a02a62b5184b0e652f86c3851f4785c324cd2b3223791d690f6dcf33c6d0e7e5b20a88fb75781a3d96645558ec1cbcc19
languageName: node
linkType: hard
"@discord-player/utils@npm:^0.2.2":
version: 0.2.2
resolution: "@discord-player/utils@npm:0.2.2"
dependencies:
"@discordjs/collection": ^1.1.0
checksum: 1e82767fa6e0f21e26ee5747b74841589a0dffd6f761233effa0f6380683c975ca40a7089e3dd232854a5c958bb30d8a3ed2e47b1a2cbb42d3fb3717a28b7ac1
languageName: node
linkType: hard
"@discordjs/builders@npm:^1.6.5": "@discordjs/builders@npm:^1.6.5":
version: 1.6.5 version: 1.6.5
resolution: "@discordjs/builders@npm:1.6.5" resolution: "@discordjs/builders@npm:1.6.5"
@ -66,13 +20,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@discordjs/collection@npm:^1.1.0":
version: 1.5.2
resolution: "@discordjs/collection@npm:1.5.2"
checksum: bf51b951c75c1622f78db4ab48382dc36ef62d264ebf3add07b4a29bef74e84ee1ca65b74e8cf3c9c16eef435dcf05c35465b32642bc7c0bac6872e226d100a7
languageName: node
linkType: hard
"@discordjs/collection@npm:^1.5.3": "@discordjs/collection@npm:^1.5.3":
version: 1.5.3 version: 1.5.3
resolution: "@discordjs/collection@npm:1.5.3" resolution: "@discordjs/collection@npm:1.5.3"
@ -89,35 +36,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@discordjs/node-pre-gyp@npm:^0.4.5":
version: 0.4.5
resolution: "@discordjs/node-pre-gyp@npm:0.4.5"
dependencies:
detect-libc: ^2.0.0
https-proxy-agent: ^5.0.0
make-dir: ^3.1.0
node-fetch: ^2.6.7
nopt: ^5.0.0
npmlog: ^5.0.1
rimraf: ^3.0.2
semver: ^7.3.5
tar: ^6.1.11
bin:
node-pre-gyp: bin/node-pre-gyp
checksum: 60ba7bfdb9e002ff6ff47086312ca446e97b2dfa695a581a1b49eb94d2c716ad509166d97b66b76096d8fd33b9aaa4bb88dad083980821b7691aa55ebccdb5e4
languageName: node
linkType: hard
"@discordjs/opus@npm:0.9.0":
version: 0.9.0
resolution: "@discordjs/opus@npm:0.9.0"
dependencies:
"@discordjs/node-pre-gyp": ^0.4.5
node-addon-api: ^5.0.0
checksum: 1bb17efcece86b5d0f025dcb301e87a01c50db3267776b608cc103e3f6fbbb0b0ea4e61dcb5700fbeb27039b50c771db9efc1b7af628b9c2329120f497e1c20e
languageName: node
linkType: hard
"@discordjs/rest@npm:^2.0.1": "@discordjs/rest@npm:^2.0.1":
version: 2.0.1 version: 2.0.1
resolution: "@discordjs/rest@npm:2.0.1" resolution: "@discordjs/rest@npm:2.0.1"
@ -440,13 +358,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@tokenizer/token@npm:^0.3.0":
version: 0.3.0
resolution: "@tokenizer/token@npm:0.3.0"
checksum: 1d575d02d2a9f0c5a4ca5180635ebd2ad59e0f18b42a65f3d04844148b49b3db35cf00b6012a1af2d59c2ab3caca59451c5689f747ba8667ee586ad717ee58e1
languageName: node
linkType: hard
"@tootallnate/once@npm:2": "@tootallnate/once@npm:2":
version: 2.0.0 version: 2.0.0
resolution: "@tootallnate/once@npm:2.0.0" resolution: "@tootallnate/once@npm:2.0.0"
@ -475,10 +386,10 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@types/node@npm:20.8.2": "@types/node@npm:20.8.3":
version: 20.8.2 version: 20.8.3
resolution: "@types/node@npm:20.8.2" resolution: "@types/node@npm:20.8.3"
checksum: 3da73e25d821bfcdb7de98589027e08bb4848e55408671c4a83ec0341e124b5313a0b20e1e4b4eff1168ea17a86f622ad73fcb04b761abd77496b9a27cbd5de5 checksum: bfb88b341faeb19f8fd37306a3bf433721b876c6491d10fcb0b13fd26601fa36ee45113dd82b1e1c23e3c957dff5b99f81a16493cefa03abe797e41a2487a4f7
languageName: node languageName: node
linkType: hard linkType: hard
@ -630,13 +541,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"boolbase@npm:^1.0.0":
version: 1.0.0
resolution: "boolbase@npm:1.0.0"
checksum: 3e25c80ef626c3a3487c73dbfc70ac322ec830666c9ad915d11b701142fab25ec1e63eff2c450c74347acfd2de854ccde865cd79ef4db1683f7c7b046ea43bb0
languageName: node
linkType: hard
"brace-expansion@npm:^1.1.7": "brace-expansion@npm:^1.1.7":
version: 1.1.11 version: 1.1.11
resolution: "brace-expansion@npm:1.1.11" resolution: "brace-expansion@npm:1.1.11"
@ -663,6 +567,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"bson@npm:^5.5.0":
version: 5.5.0
resolution: "bson@npm:5.5.0"
checksum: 61afd240dfcaaa07346c3278d42586606b4c09bd8dcf865f6d79e26ee9cf3d6b140b8347257c598f65340e26ba640f96f6a3b9b6ff2baef963a1d321fc4c281e
languageName: node
linkType: hard
"busboy@npm:^1.6.0": "busboy@npm:^1.6.0":
version: 1.6.0 version: 1.6.0
resolution: "busboy@npm:1.6.0" resolution: "busboy@npm:1.6.0"
@ -775,60 +686,33 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"css-select@npm:^5.1.0":
version: 5.1.0
resolution: "css-select@npm:5.1.0"
dependencies:
boolbase: ^1.0.0
css-what: ^6.1.0
domhandler: ^5.0.2
domutils: ^3.0.1
nth-check: ^2.0.1
checksum: 2772c049b188d3b8a8159907192e926e11824aea525b8282981f72ba3f349cf9ecd523fdf7734875ee2cb772246c22117fc062da105b6d59afe8dcd5c99c9bda
languageName: node
linkType: hard
"css-what@npm:^6.1.0":
version: 6.1.0
resolution: "css-what@npm:6.1.0"
checksum: b975e547e1e90b79625918f84e67db5d33d896e6de846c9b584094e529f0c63e2ab85ee33b9daffd05bff3a146a1916bec664e18bb76dd5f66cbff9fc13b2bbe
languageName: node
linkType: hard
"daggerbot-ts@workspace:.": "daggerbot-ts@workspace:.":
version: 0.0.0-use.local version: 0.0.0-use.local
resolution: "daggerbot-ts@workspace:." resolution: "daggerbot-ts@workspace:."
dependencies: dependencies:
"@discord-player/extractor": 4.4.4
"@discordjs/opus": 0.9.0
"@octokit/auth-token": 4.0.0 "@octokit/auth-token": 4.0.0
"@octokit/rest": 20.0.2 "@octokit/rest": 20.0.2
"@types/ms": 0.7.32 "@types/ms": 0.7.32
"@types/node": 20.8.2 "@types/node": 20.8.3
"@types/node-cron": 3.0.9 "@types/node-cron": 3.0.9
ansi-colors: 4.1.3 ansi-colors: 4.1.3
canvas: 2.11.2 canvas: 2.11.2
discord-player: 6.6.4 dayjs: 1.11.10
discord.js: 14.13.0 discord.js: 14.13.0
libsodium-wrappers: 0.7.13 fast-xml-parser: 4.3.2
moment: 2.29.4 mongoose: 7.6.0
mongoose: 7.5.4
ms: 2.1.3 ms: 2.1.3
node-cron: 3.0.2 node-cron: 3.0.2
prism-media: 1.3.5
redis: 4.6.10 redis: 4.6.10
systeminformation: 5.21.10 systeminformation: 5.21.11
typescript: 5.2.2 typescript: 5.2.2
xml-js: 1.6.11
youtube-sr: 4.3.4
ytdl-core: 4.11.5
languageName: unknown languageName: unknown
linkType: soft linkType: soft
"data-uri-to-buffer@npm:^4.0.0": "dayjs@npm:1.11.10":
version: 4.0.1 version: 1.11.10
resolution: "data-uri-to-buffer@npm:4.0.1" resolution: "dayjs@npm:1.11.10"
checksum: 0d0790b67ffec5302f204c2ccca4494f70b4e2d940fea3d36b09f0bb2b8539c2e86690429eb1f1dc4bcc9e4df0644193073e63d9ee48ac9fce79ec1506e4aa4c checksum: a6b5a3813b8884f5cd557e2e6b7fa569f4c5d0c97aca9558e38534af4f2d60daafd3ff8c2000fed3435cfcec9e805bcebd99f90130c6d1c5ef524084ced588c4
languageName: node languageName: node
linkType: hard linkType: hard
@ -888,46 +772,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"discord-api-types@npm:^0.37.50":
version: 0.37.56
resolution: "discord-api-types@npm:0.37.56"
checksum: 797be690af70a846422f955d918a5713a2c8c37bea646e2120996522afbb47fc5893122c1ddcb8f57a285ace6e1fb0237d1e63105444ae52534f0570a2f87f34
languageName: node
linkType: hard
"discord-player@npm:6.6.4":
version: 6.6.4
resolution: "discord-player@npm:6.6.4"
dependencies:
"@discord-player/equalizer": ^0.2.3
"@discord-player/ffmpeg": ^0.1.0
"@discord-player/utils": ^0.2.2
discord-voip: ^0.1.3
ip: ^1.1.8
libsodium-wrappers: ^0.7.10
peerDependencies:
"@discord-player/extractor": ^4.4.4
discord.js: 14.x
youtube-sr: 4.x
checksum: 91e613faef9145e833f181799337169dd84abdf425a82c19735274721d821d23aec749cb88453fb45cf4ec24fe7257087f43148d843e69327bfb58de5401dc7f
languageName: node
linkType: hard
"discord-voip@npm:^0.1.3":
version: 0.1.3
resolution: "discord-voip@npm:0.1.3"
dependencies:
"@discord-player/ffmpeg": ^0.1.0
"@discord-player/opus": ^0.1.2
"@types/ws": ^8.5.5
discord-api-types: ^0.37.50
prism-media: ^1.3.5
tslib: ^2.6.1
ws: ^8.13.0
checksum: 9dd87e18713a90bec80050ab3c1e61c4e14fe99653040cdfae3841da976efc7ed4a569d4690b35a63a96a6cc30aa756a650a9e6048d1678f2854bf116aef0ca8
languageName: node
linkType: hard
"discord.js@npm:14.13.0": "discord.js@npm:14.13.0":
version: 14.13.0 version: 14.13.0
resolution: "discord.js@npm:14.13.0" resolution: "discord.js@npm:14.13.0"
@ -950,44 +794,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"dom-serializer@npm:^2.0.0":
version: 2.0.0
resolution: "dom-serializer@npm:2.0.0"
dependencies:
domelementtype: ^2.3.0
domhandler: ^5.0.2
entities: ^4.2.0
checksum: cd1810544fd8cdfbd51fa2c0c1128ec3a13ba92f14e61b7650b5de421b88205fd2e3f0cc6ace82f13334114addb90ed1c2f23074a51770a8e9c1273acbc7f3e6
languageName: node
linkType: hard
"domelementtype@npm:^2.3.0":
version: 2.3.0
resolution: "domelementtype@npm:2.3.0"
checksum: ee837a318ff702622f383409d1f5b25dd1024b692ef64d3096ff702e26339f8e345820f29a68bcdcea8cfee3531776b3382651232fbeae95612d6f0a75efb4f6
languageName: node
linkType: hard
"domhandler@npm:^5.0.2, domhandler@npm:^5.0.3":
version: 5.0.3
resolution: "domhandler@npm:5.0.3"
dependencies:
domelementtype: ^2.3.0
checksum: 0f58f4a6af63e6f3a4320aa446d28b5790a009018707bce2859dcb1d21144c7876482b5188395a188dfa974238c019e0a1e610d2fc269a12b2c192ea2b0b131c
languageName: node
linkType: hard
"domutils@npm:^3.0.1":
version: 3.1.0
resolution: "domutils@npm:3.1.0"
dependencies:
dom-serializer: ^2.0.0
domelementtype: ^2.3.0
domhandler: ^5.0.3
checksum: e5757456ddd173caa411cfc02c2bb64133c65546d2c4081381a3bafc8a57411a41eed70494551aa58030be9e58574fcc489828bebd673863d39924fb4878f416
languageName: node
linkType: hard
"eastasianwidth@npm:^0.2.0": "eastasianwidth@npm:^0.2.0":
version: 0.2.0 version: 0.2.0
resolution: "eastasianwidth@npm:0.2.0" resolution: "eastasianwidth@npm:0.2.0"
@ -1018,13 +824,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"entities@npm:^4.2.0":
version: 4.5.0
resolution: "entities@npm:4.5.0"
checksum: 853f8ebd5b425d350bffa97dd6958143179a5938352ccae092c62d1267c4e392a039be1bae7d51b6e4ffad25f51f9617531fedf5237f15df302ccfb452cbf2d7
languageName: node
linkType: hard
"env-paths@npm:^2.2.0": "env-paths@npm:^2.2.0":
version: 2.2.1 version: 2.2.1
resolution: "env-paths@npm:2.2.1" resolution: "env-paths@npm:2.2.1"
@ -1053,24 +852,14 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"fetch-blob@npm:^3.1.2, fetch-blob@npm:^3.1.4": "fast-xml-parser@npm:4.3.2":
version: 3.2.0 version: 4.3.2
resolution: "fetch-blob@npm:3.2.0" resolution: "fast-xml-parser@npm:4.3.2"
dependencies: dependencies:
node-domexception: ^1.0.0 strnum: ^1.0.5
web-streams-polyfill: ^3.0.3 bin:
checksum: f19bc28a2a0b9626e69fd7cf3a05798706db7f6c7548da657cbf5026a570945f5eeaedff52007ea35c8bcd3d237c58a20bf1543bc568ab2422411d762dd3d5bf fxparser: src/cli/cli.js
languageName: node checksum: d507ce2efa5fd13d0a5ba28bd76dd68f2fc30ad8748357c37b70f360d19417866d79e35a688af067d5bceaaa796033fa985206aef9692f7a421e1326b6e73309
linkType: hard
"file-type@npm:^16.5.4":
version: 16.5.4
resolution: "file-type@npm:16.5.4"
dependencies:
readable-web-to-node-stream: ^3.0.0
strtok3: ^6.2.4
token-types: ^4.1.1
checksum: d983c0f36491c57fcb6cc70fcb02c36d6b53f312a15053263e1924e28ca8314adf0db32170801ad777f09432c32155f31715ceaee66310947731588120d7ec27
languageName: node languageName: node
linkType: hard linkType: hard
@ -1084,15 +873,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"formdata-polyfill@npm:^4.0.10":
version: 4.0.10
resolution: "formdata-polyfill@npm:4.0.10"
dependencies:
fetch-blob: ^3.1.2
checksum: 82a34df292afadd82b43d4a740ce387bc08541e0a534358425193017bf9fb3567875dc5f69564984b1da979979b70703aa73dee715a17b6c229752ae736dd9db
languageName: node
linkType: hard
"fs-minipass@npm:^2.0.0": "fs-minipass@npm:^2.0.0":
version: 2.1.0 version: 2.1.0
resolution: "fs-minipass@npm:2.1.0" resolution: "fs-minipass@npm:2.1.0"
@ -1158,16 +938,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"genius-lyrics@npm:^4.4.6":
version: 4.4.6
resolution: "genius-lyrics@npm:4.4.6"
dependencies:
node-html-parser: ^6.1.9
undici: ^5.24.0
checksum: 05a7420c7548badce414cd3cb45f4ba9822d951f8b7ed0d9b1b546cf5117847f9e17d8453db883d56e6cba745401da3d7de81cc6a625d54b313cef95e5f0c259
languageName: node
linkType: hard
"glob@npm:^10.2.2": "glob@npm:^10.2.2":
version: 10.3.3 version: 10.3.3
resolution: "glob@npm:10.3.3" resolution: "glob@npm:10.3.3"
@ -1211,22 +981,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"he@npm:1.2.0":
version: 1.2.0
resolution: "he@npm:1.2.0"
bin:
he: bin/he
checksum: 3d4d6babccccd79c5c5a3f929a68af33360d6445587d628087f39a965079d84f18ce9c3d3f917ee1e3978916fc833bb8b29377c3b403f919426f91bc6965e7a7
languageName: node
linkType: hard
"himalaya@npm:~1.1.0":
version: 1.1.0
resolution: "himalaya@npm:1.1.0"
checksum: b07c165e78b22f031515de61d82c97702e8552ba1c4748fde60a97973178d2e380b9eb75dea602bbcc9c2eb1ca2948e125aac6c1f3bfc9f56b92b09df8124af3
languageName: node
linkType: hard
"http-cache-semantics@npm:^4.1.1": "http-cache-semantics@npm:^4.1.1":
version: 4.1.1 version: 4.1.1
resolution: "http-cache-semantics@npm:4.1.1" resolution: "http-cache-semantics@npm:4.1.1"
@ -1273,13 +1027,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"ieee754@npm:^1.2.1":
version: 1.2.1
resolution: "ieee754@npm:1.2.1"
checksum: 5144c0c9815e54ada181d80a0b810221a253562422e7c6c3a60b1901154184f49326ec239d618c416c1c5945a2e197107aee8d986a3dd836b53dffefd99b5e7e
languageName: node
linkType: hard
"imurmurhash@npm:^0.1.4": "imurmurhash@npm:^0.1.4":
version: 0.1.4 version: 0.1.4
resolution: "imurmurhash@npm:0.1.4" resolution: "imurmurhash@npm:0.1.4"
@ -1311,13 +1058,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"ip@npm:^1.1.8":
version: 1.1.8
resolution: "ip@npm:1.1.8"
checksum: a2ade53eb339fb0cbe9e69a44caab10d6e3784662285eb5d2677117ee4facc33a64679051c35e0dfdb1a3983a51ce2f5d2cb36446d52e10d01881789b76e28fb
languageName: node
linkType: hard
"ip@npm:^2.0.0": "ip@npm:^2.0.0":
version: 2.0.0 version: 2.0.0
resolution: "ip@npm:2.0.0" resolution: "ip@npm:2.0.0"
@ -1353,16 +1093,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"isomorphic-unfetch@npm:^4.0.2":
version: 4.0.2
resolution: "isomorphic-unfetch@npm:4.0.2"
dependencies:
node-fetch: ^3.2.0
unfetch: ^5.0.0
checksum: a5c22569f18a897c333aa2d7c0042214e1d26fc502b7b7dd451aca81f34a56557cb48faf63a3ad5c6534d610c043ef36b9e999211a2c0665eabdca9e9c86e398
languageName: node
linkType: hard
"jackspeak@npm:^2.0.3": "jackspeak@npm:^2.0.3":
version: 2.2.2 version: 2.2.2
resolution: "jackspeak@npm:2.2.2" resolution: "jackspeak@npm:2.2.2"
@ -1383,38 +1113,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"libsodium-wrappers@npm:0.7.13":
version: 0.7.13
resolution: "libsodium-wrappers@npm:0.7.13"
dependencies:
libsodium: ^0.7.13
checksum: d184395f7c33023414b191ef9ea2171eb1a5cb061503e886ea877590cb7adc3a4feaf794b9b08731a20515518fa23dbf1c1bfcd376e5ab01728e95cf1cb7525a
languageName: node
linkType: hard
"libsodium-wrappers@npm:^0.7.10":
version: 0.7.11
resolution: "libsodium-wrappers@npm:0.7.11"
dependencies:
libsodium: ^0.7.11
checksum: 6a6ef47b2213e3fb4687196c28fee4c9885f70d89547d845e62d96014d3d5ad9f59cb05fadc601debc0031a3cfd0b9b416d7efbeb5bf66db6aa0ed69f55a6293
languageName: node
linkType: hard
"libsodium@npm:^0.7.11":
version: 0.7.11
resolution: "libsodium@npm:0.7.11"
checksum: 0a3493ac1829d1e346178b6984c4eb449dc77157c906876441386c0c653142e3fa56f623ce980bb50e580196578689298c9cd406ce6d514904090e370c6bc0f7
languageName: node
linkType: hard
"libsodium@npm:^0.7.13":
version: 0.7.13
resolution: "libsodium@npm:0.7.13"
checksum: 75a5f70e84c197d54d9b67dcbd852abbd41cca8facd510767c7c8400a52a23da293e83eebf1693831b2c0c0498f266bd9350a8c27ec66f46a055890dff758d38
languageName: node
linkType: hard
"lodash.snakecase@npm:^4.1.1": "lodash.snakecase@npm:^4.1.1":
version: 4.1.1 version: 4.1.1
resolution: "lodash.snakecase@npm:4.1.1" resolution: "lodash.snakecase@npm:4.1.1"
@ -1452,16 +1150,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"m3u8stream@npm:^0.8.6":
version: 0.8.6
resolution: "m3u8stream@npm:0.8.6"
dependencies:
miniget: ^4.2.2
sax: ^1.2.4
checksum: b8f61c1101dd3ad873ff2f3d0e9e6a5139ad17e20990b89ae67f2585043bc2b727151ed85f3e58aabc8a1a95af28e1ee26f69af6ac9e8841ff68129eae2f5ac5
languageName: node
linkType: hard
"magic-bytes.js@npm:^1.0.15": "magic-bytes.js@npm:^1.0.15":
version: 1.0.15 version: 1.0.15
resolution: "magic-bytes.js@npm:1.0.15" resolution: "magic-bytes.js@npm:1.0.15"
@ -1515,13 +1203,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"miniget@npm:^4.2.2":
version: 4.2.3
resolution: "miniget@npm:4.2.3"
checksum: c2db18570b4dc6771a6824993f9a33360b02ef92173bf38a5d772f27640f4f493153f73da1b28700c2b55cb7526321446ce2f326c667ad671fb78c8998c1402f
languageName: node
linkType: hard
"minimatch@npm:^3.1.1": "minimatch@npm:^3.1.1":
version: 3.1.2 version: 3.1.2
resolution: "minimatch@npm:3.1.2" resolution: "minimatch@npm:3.1.2"
@ -1633,13 +1314,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"moment@npm:2.29.4":
version: 2.29.4
resolution: "moment@npm:2.29.4"
checksum: 0ec3f9c2bcba38dc2451b1daed5daded747f17610b92427bebe1d08d48d8b7bdd8d9197500b072d14e326dd0ccf3e326b9e3d07c5895d3d49e39b6803b76e80e
languageName: node
linkType: hard
"mongodb-connection-string-url@npm:^2.6.0": "mongodb-connection-string-url@npm:^2.6.0":
version: 2.6.0 version: 2.6.0
resolution: "mongodb-connection-string-url@npm:2.6.0" resolution: "mongodb-connection-string-url@npm:2.6.0"
@ -1650,12 +1324,12 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"mongodb@npm:5.8.1": "mongodb@npm:5.9.0":
version: 5.8.1 version: 5.9.0
resolution: "mongodb@npm:5.8.1" resolution: "mongodb@npm:5.9.0"
dependencies: dependencies:
"@mongodb-js/saslprep": ^1.1.0 "@mongodb-js/saslprep": ^1.1.0
bson: ^5.4.0 bson: ^5.5.0
mongodb-connection-string-url: ^2.6.0 mongodb-connection-string-url: ^2.6.0
socks: ^2.7.1 socks: ^2.7.1
peerDependencies: peerDependencies:
@ -1678,22 +1352,22 @@ __metadata:
optional: true optional: true
snappy: snappy:
optional: true optional: true
checksum: da8fc05952266f9b636000d74e6c8889306fc287922651526029a61ede3c75f793edb504a02c1f64fec9fea9aa17323bf95eb4902776778a1def5eba07b32b72 checksum: 5fb828d6503b7291c0bcc984ed35bdd0e2f166cd9d637a5ff9e8c2e497ef6260eea5a3f700f2850200cd8108057c858f96e37394ed2953aff3b85fe760bbd777
languageName: node languageName: node
linkType: hard linkType: hard
"mongoose@npm:7.5.4": "mongoose@npm:7.6.0":
version: 7.5.4 version: 7.6.0
resolution: "mongoose@npm:7.5.4" resolution: "mongoose@npm:7.6.0"
dependencies: dependencies:
bson: ^5.4.0 bson: ^5.4.0
kareem: 2.5.1 kareem: 2.5.1
mongodb: 5.8.1 mongodb: 5.9.0
mpath: 0.9.0 mpath: 0.9.0
mquery: 5.0.0 mquery: 5.0.0
ms: 2.1.3 ms: 2.1.3
sift: 16.0.1 sift: 16.0.1
checksum: e888bc5e47c7c3f0158dd93c18efedc15a7dbaa7c7c599e38aa4fccf00514280af02ae8cb40e91190d5cff8822a78c3cfd15adfd309094a3a7b3ca5ba3c6fb03 checksum: 5178fdc1c8ec5158bdeb16a100c8a47a1866276b7ac4406ca5d3c0bf4fbf3e27fd5e69b86e0bf5cb8bbeca40a119fff4d4bb1852f0bf18292949493e43cbb8d5
languageName: node languageName: node
linkType: hard linkType: hard
@ -1743,15 +1417,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"node-addon-api@npm:^5.0.0":
version: 5.1.0
resolution: "node-addon-api@npm:5.1.0"
dependencies:
node-gyp: latest
checksum: 2508bd2d2981945406243a7bd31362fc7af8b70b8b4d65f869c61731800058fb818cc2fd36c8eac714ddd0e568cc85becf5e165cebbdf7b5024d5151bbc75ea1
languageName: node
linkType: hard
"node-cron@npm:3.0.2": "node-cron@npm:3.0.2":
version: 3.0.2 version: 3.0.2
resolution: "node-cron@npm:3.0.2" resolution: "node-cron@npm:3.0.2"
@ -1761,14 +1426,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"node-domexception@npm:^1.0.0": "node-fetch@npm:^2.6.7":
version: 1.0.0
resolution: "node-domexception@npm:1.0.0"
checksum: ee1d37dd2a4eb26a8a92cd6b64dfc29caec72bff5e1ed9aba80c294f57a31ba4895a60fd48347cf17dd6e766da0ae87d75657dfd1f384ebfa60462c2283f5c7f
languageName: node
linkType: hard
"node-fetch@npm:^2.6.0, node-fetch@npm:^2.6.7":
version: 2.6.12 version: 2.6.12
resolution: "node-fetch@npm:2.6.12" resolution: "node-fetch@npm:2.6.12"
dependencies: dependencies:
@ -1782,17 +1440,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"node-fetch@npm:^3.2.0":
version: 3.3.2
resolution: "node-fetch@npm:3.3.2"
dependencies:
data-uri-to-buffer: ^4.0.0
fetch-blob: ^3.1.4
formdata-polyfill: ^4.0.10
checksum: 06a04095a2ddf05b0830a0d5302699704d59bda3102894ea64c7b9d4c865ecdff2d90fd042df7f5bc40337266961cb6183dcc808ea4f3000d024f422b462da92
languageName: node
linkType: hard
"node-gyp@npm:latest": "node-gyp@npm:latest":
version: 9.4.0 version: 9.4.0
resolution: "node-gyp@npm:9.4.0" resolution: "node-gyp@npm:9.4.0"
@ -1814,26 +1461,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"node-html-parser@npm:^6.1.4":
version: 6.1.5
resolution: "node-html-parser@npm:6.1.5"
dependencies:
css-select: ^5.1.0
he: 1.2.0
checksum: b54257b31954be17d473c86a2fede53d5e238708f3d88577c98881c28ab66013fd37044903f6f3cd662b56d882681fb511bca75a80a80b62f7111b32b39eebae
languageName: node
linkType: hard
"node-html-parser@npm:^6.1.9":
version: 6.1.10
resolution: "node-html-parser@npm:6.1.10"
dependencies:
css-select: ^5.1.0
he: 1.2.0
checksum: 927f6a38b3b1cbc042bce609e24fb594d3b1e0f1067ffb416a925fa5a699e907be31980f349e094d55bab706dc16a71958b08f8dcdab62faf7b12013f29442bc
languageName: node
linkType: hard
"nopt@npm:^5.0.0": "nopt@npm:^5.0.0":
version: 5.0.0 version: 5.0.0
resolution: "nopt@npm:5.0.0" resolution: "nopt@npm:5.0.0"
@ -1880,15 +1507,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"nth-check@npm:^2.0.1":
version: 2.1.1
resolution: "nth-check@npm:2.1.1"
dependencies:
boolbase: ^1.0.0
checksum: 5afc3dafcd1573b08877ca8e6148c52abd565f1d06b1eb08caf982e3fa289a82f2cae697ffb55b5021e146d60443f1590a5d6b944844e944714a5b549675bcd3
languageName: node
linkType: hard
"object-assign@npm:^4.1.1": "object-assign@npm:^4.1.1":
version: 4.1.1 version: 4.1.1
resolution: "object-assign@npm:4.1.1" resolution: "object-assign@npm:4.1.1"
@ -1938,34 +1556,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"peek-readable@npm:^4.1.0":
version: 4.1.0
resolution: "peek-readable@npm:4.1.0"
checksum: 02c673f9bc816f8e4e74a054c097225ad38d457d745b775e2b96faf404a54473b2f62f5bcd496f5ebc28696708bcc5e95bed409856f4bef5ed62eae9b4ac0dab
languageName: node
linkType: hard
"prism-media@npm:1.3.5, prism-media@npm:^1.3.5":
version: 1.3.5
resolution: "prism-media@npm:1.3.5"
peerDependencies:
"@discordjs/opus": ">=0.8.0 <1.0.0"
ffmpeg-static: ^5.0.2 || ^4.2.7 || ^3.0.0 || ^2.4.0
node-opus: ^0.3.3
opusscript: ^0.0.8
peerDependenciesMeta:
"@discordjs/opus":
optional: true
ffmpeg-static:
optional: true
node-opus:
optional: true
opusscript:
optional: true
checksum: a4fbe5c91f2aa5aca6e0d7fb72c37627db814f59b2ffd702aced11d4cc6f6f15022a5830df48fc008e805f2d1fe79305e5d1b091307981a0083edf7223418679
languageName: node
linkType: hard
"promise-retry@npm:^2.0.1": "promise-retry@npm:^2.0.1":
version: 2.0.1 version: 2.0.1
resolution: "promise-retry@npm:2.0.1" resolution: "promise-retry@npm:2.0.1"
@ -1994,15 +1584,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"readable-web-to-node-stream@npm:^3.0.0":
version: 3.0.2
resolution: "readable-web-to-node-stream@npm:3.0.2"
dependencies:
readable-stream: ^3.6.0
checksum: 8c56cc62c68513425ddfa721954875b382768f83fa20e6b31e365ee00cbe7a3d6296f66f7f1107b16cd3416d33aa9f1680475376400d62a081a88f81f0ea7f9c
languageName: node
linkType: hard
"redis@npm:4.6.10": "redis@npm:4.6.10":
version: 4.6.10 version: 4.6.10
resolution: "redis@npm:4.6.10" resolution: "redis@npm:4.6.10"
@ -2024,15 +1605,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"reverbnation-scraper@npm:^2.0.0":
version: 2.0.0
resolution: "reverbnation-scraper@npm:2.0.0"
dependencies:
node-fetch: ^2.6.0
checksum: 4d8f609a0b32de55d725def6f96c049bef8fab273db5853689a76a994399c5b5df8a38f4a85c2b07bda3d47976762a7b407bc7b58bbccb4d86eace1215fcdf68
languageName: node
linkType: hard
"rimraf@npm:^3.0.2": "rimraf@npm:^3.0.2":
version: 3.0.2 version: 3.0.2
resolution: "rimraf@npm:3.0.2" resolution: "rimraf@npm:3.0.2"
@ -2058,13 +1630,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"sax@npm:^1.1.3, sax@npm:^1.2.4":
version: 1.2.4
resolution: "sax@npm:1.2.4"
checksum: d3df7d32b897a2c2f28e941f732c71ba90e27c24f62ee918bd4d9a8cfb3553f2f81e5493c7f0be94a11c1911b643a9108f231dd6f60df3fa9586b5d2e3e9e1fe
languageName: node
linkType: hard
"semver@npm:^6.0.0": "semver@npm:^6.0.0":
version: 6.3.1 version: 6.3.1
resolution: "semver@npm:6.3.1" resolution: "semver@npm:6.3.1"
@ -2175,15 +1740,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"soundcloud.ts@npm:^0.5.2":
version: 0.5.2
resolution: "soundcloud.ts@npm:0.5.2"
dependencies:
undici: ^5.22.1
checksum: 6abd85b629625b9d80adbf628b8c302ddb4fdfdef97ee5de951bc565cc0bbeb10133b645eb38ffdd55f320d6b8fa347e26c3e2457485c5d4816c072dbde61c66
languageName: node
linkType: hard
"sparse-bitfield@npm:^3.0.3": "sparse-bitfield@npm:^3.0.3":
version: 3.0.3 version: 3.0.3
resolution: "sparse-bitfield@npm:3.0.3" resolution: "sparse-bitfield@npm:3.0.3"
@ -2193,23 +1749,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"spotify-uri@npm:~4.0.0":
version: 4.0.0
resolution: "spotify-uri@npm:4.0.0"
checksum: 272e1692a750a8509625bc3caeebc14b2424b6f63ab664cb018edcc0dacd181bd234d38daa9b7fd0f449c7a650a13b7904cc9a783e048bb94da0ad63f264731a
languageName: node
linkType: hard
"spotify-url-info@npm:^3.2.6":
version: 3.2.6
resolution: "spotify-url-info@npm:3.2.6"
dependencies:
himalaya: ~1.1.0
spotify-uri: ~4.0.0
checksum: 4101df615b63307478a41375696ea188402116ce6e49193e1b930ca4f8046fd1246c6ef3db9b9138580c31850636e290cbf9bb7dc6099148702820bb23215d2c
languageName: node
linkType: hard
"ssri@npm:^10.0.0": "ssri@npm:^10.0.0":
version: 10.0.4 version: 10.0.4
resolution: "ssri@npm:10.0.4" resolution: "ssri@npm:10.0.4"
@ -2275,22 +1814,19 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"strtok3@npm:^6.2.4": "strnum@npm:^1.0.5":
version: 6.3.0 version: 1.0.5
resolution: "strtok3@npm:6.3.0" resolution: "strnum@npm:1.0.5"
dependencies: checksum: 651b2031db5da1bf4a77fdd2f116a8ac8055157c5420f5569f64879133825915ad461513e7202a16d7fec63c54fd822410d0962f8ca12385c4334891b9ae6dd2
"@tokenizer/token": ^0.3.0
peek-readable: ^4.1.0
checksum: 90732cff3f325aef7c47c511f609b593e0873ec77b5081810071cde941344e6a0ee3ccb0cae1a9f5b4e12c81a2546fd6b322fabcdfbd1dd08362c2ce5291334a
languageName: node languageName: node
linkType: hard linkType: hard
"systeminformation@npm:5.21.10": "systeminformation@npm:5.21.11":
version: 5.21.10 version: 5.21.11
resolution: "systeminformation@npm:5.21.10" resolution: "systeminformation@npm:5.21.11"
bin: bin:
systeminformation: lib/cli.js systeminformation: lib/cli.js
checksum: a63dce32d3d05a383f1639a22a936dc91a700dae6821c49a2f1d072814e0bdc4f6d12a63f64200dfbc0f2a3b1edbe5945a30b345cd99a38e41084f166fa26513 checksum: d0df9cae22ce494fb63d8eda88c7463f792813269acf67082222c18a534867809cfebe45a59b798df62b069259b8119b6cb6a951f194f324a071f4762d459547
conditions: (os=darwin | os=linux | os=win32 | os=freebsd | os=openbsd | os=netbsd | os=sunos | os=android) conditions: (os=darwin | os=linux | os=win32 | os=freebsd | os=openbsd | os=netbsd | os=sunos | os=android)
languageName: node languageName: node
linkType: hard linkType: hard
@ -2309,16 +1845,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"token-types@npm:^4.1.1":
version: 4.2.1
resolution: "token-types@npm:4.2.1"
dependencies:
"@tokenizer/token": ^0.3.0
ieee754: ^1.2.1
checksum: cce256766b33e0f08ceffefa2198fb4961a417866d00780e58625999ab5c0699821407053e64eadc41b00bbb6c0d0c4d02fbd2199940d8a3ccb71e1b148ab9a2
languageName: node
linkType: hard
"tr46@npm:^3.0.0": "tr46@npm:^3.0.0":
version: 3.0.0 version: 3.0.0
resolution: "tr46@npm:3.0.0" resolution: "tr46@npm:3.0.0"
@ -2378,31 +1904,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"undici@npm:^5.22.1":
version: 5.23.0
resolution: "undici@npm:5.23.0"
dependencies:
busboy: ^1.6.0
checksum: 906ca4fb1d47163d2cee2ecbbc664a1d92508a2cdf1558146621109f525c983a83597910b36e6ba468240e95259be5939cea6babc99fc0c36360b16630f66784
languageName: node
linkType: hard
"undici@npm:^5.24.0":
version: 5.24.0
resolution: "undici@npm:5.24.0"
dependencies:
busboy: ^1.6.0
checksum: 0795b69e0f7e1b2b162bce0d1670e6b44c968960e519f5b450df5196fd9c5102e0838ed854e68e61588f3c2436a3dc3d4390f9bf4a24b04eeb03926fe0eaa599
languageName: node
linkType: hard
"unfetch@npm:^5.0.0":
version: 5.0.0
resolution: "unfetch@npm:5.0.0"
checksum: 005133bcdc85cefea60890af4ac265799356b69c6a7719c1330484165af7109c06b9eedd3e03d620c14dcc8b43bcf329148f4c1f06016390162f845e0d0a62c5
languageName: node
linkType: hard
"unique-filename@npm:^3.0.0": "unique-filename@npm:^3.0.0":
version: 3.0.0 version: 3.0.0
resolution: "unique-filename@npm:3.0.0" resolution: "unique-filename@npm:3.0.0"
@ -2444,13 +1945,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"web-streams-polyfill@npm:^3.0.3":
version: 3.2.1
resolution: "web-streams-polyfill@npm:3.2.1"
checksum: b119c78574b6d65935e35098c2afdcd752b84268e18746606af149e3c424e15621b6f1ff0b42b2676dc012fc4f0d313f964b41a4b5031e525faa03997457da02
languageName: node
linkType: hard
"webidl-conversions@npm:^3.0.0": "webidl-conversions@npm:^3.0.0":
version: 3.0.1 version: 3.0.1
resolution: "webidl-conversions@npm:3.0.1" resolution: "webidl-conversions@npm:3.0.1"
@ -2549,38 +2043,9 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"xml-js@npm:1.6.11":
version: 1.6.11
resolution: "xml-js@npm:1.6.11"
dependencies:
sax: ^1.2.4
bin:
xml-js: ./bin/cli.js
checksum: 24a55479919413687105fc2d8ab05e613ebedb1c1bc12258a108e07cff5ef793779297db854800a4edf0281303ebd1f177bc4a588442f5344e62b3dddda26c2b
languageName: node
linkType: hard
"yallist@npm:4.0.0, yallist@npm:^4.0.0": "yallist@npm:4.0.0, yallist@npm:^4.0.0":
version: 4.0.0 version: 4.0.0
resolution: "yallist@npm:4.0.0" resolution: "yallist@npm:4.0.0"
checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5
languageName: node languageName: node
linkType: hard linkType: hard
"youtube-sr@npm:4.3.4, youtube-sr@npm:^4.3.4":
version: 4.3.4
resolution: "youtube-sr@npm:4.3.4"
checksum: e097f2a82ddc51a580e7b8556aba83968ee580ad29a8d035cbfdc497c4a6f227b3e3ef0bf4648c6edaf25aed18b872a0fad8fda0554d270129f7c5e60e4a01ef
languageName: node
linkType: hard
"ytdl-core@npm:4.11.5":
version: 4.11.5
resolution: "ytdl-core@npm:4.11.5"
dependencies:
m3u8stream: ^0.8.6
miniget: ^4.2.2
sax: ^1.1.3
checksum: f81ae907780747c4522198003967da1730af33fb6c8632ed2ba7a3dfb67a3fd1bf73807a68506a5926d209ee2f3305bfb6a633f6829b39ed60694c033c300fa9
languageName: node
linkType: hard