file cleanup and some changes

pull/5/head
pineafan 4 years ago
parent 2771b228c9
commit ea06304117
No known key found for this signature in database
GPG Key ID: 0BC8D3DCC20E96FE

6
.gitignore vendored

@ -4,3 +4,9 @@ node_modules/
src/config/ src/config/
.vscode/ .vscode/
yarn-error.log yarn-error.log
yarn.lock
tsconfig.json
src/utils/temp/*.png
src/utils/temp/*.webp
src/utils/temp/*.jpeg
src/utils/temp/*.jpg

2381
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -1,35 +0,0 @@
m!info - Info has moved to /help
m!stats - Stats has moved to /nucleus help
m!settings - Settings has changed, type /settings to see the full list
m!user - User is now /user info
m!avatar - Avatar is now /user avatar
m!roleall - Roleall has moved to /roll all
m!suggest - Suggest has been moved to /nucleus suggest
m!ping - Ping has moved to /nucleus ping
m!server - Server has been moved to /server info
m!tag - Tag has changed to /tag
m!role - Role is now /role
m!viewas - Viewas has moved to /viewas
m!verify - Verify has moved to /verify, please contact the server owners if the information message has not been updated
m!setverify - Setverify has moved to /settings verify role
m!mail - Mail has moved to /ticket create, please contact the server owners if the information message has not been updated
m!prefix - Nucleus' prefix has changed to /
m!setprefix - The prefix is now required to be / due to Discord's new rules on bots
m!warn - Warn has moved to /mod warn
m!clear - Clear has moved to /mod clear
m!kick - Kick has moved to /mod kick
m!softban - Softban has moved to /mod softban
m!ban - Ban has moved to /mod ban
m!unban - Unban has moved to /mod unban
m!purge - Purge has moved to /mod purge
m!punish - Punish options can now be viewed by typing /mod
m!setlog - Setlog has moved to /settings log channel
m!ignore - Ignore has moved to /settings log ignore
m!ignored - Ignored has moved to /settings log ignored
m!stafflog - stafflog has moved to /settings mod channel
m!auto - Auto has been moved to /settings automation
m!modmail - Modmail has been moved to /settings tickets
m!slowmode - Slowmode has moved to /mod slowmode
m!lock - Lock has moved to /mod lock action:add
m!unlock - Unlock has moved to /mod lock action:remove
m!reset - Reset can be found under /settings all

@ -1,13 +1,26 @@
import { SelectMenuOption } from '@discordjs/builders';
import Discord, { MessageActionRow, MessageButton } from "discord.js"; import Discord, { MessageActionRow, MessageButton } from "discord.js";
import generateEmojiEmbed from "../utils/generateEmojiEmbed.js"; import generateEmojiEmbed from "../utils/generateEmojiEmbed.js";
import getEmojiByName from "../utils/getEmojiByName.js"; import getEmojiByName from "../utils/getEmojiByName.js";
import createPageIndicator from "../utils/createPageIndicator.js"; import createPageIndicator from "../utils/createPageIndicator.js";
class Embed {
embed: Discord.MessageEmbed;
title: string;
description: string = "";
pageId: number = 0;
setEmbed(embed: Discord.MessageEmbed) { this.embed = embed; return this; }
setTitle(title: string) { this.title = title; return this; }
setDescription(description: string) { this.description = description; return this; }
setPageId(pageId: number) { this.pageId = pageId; return this; }
}
export default async (guild, interaction?) => { export default async (guild, interaction?) => {
let c = guild.publicUpdatesChannel ? guild.publicUpdatesChannel : guild.systemChannel; let c = guild.publicUpdatesChannel ? guild.publicUpdatesChannel : guild.systemChannel;
c = c ? c : guild.channels.cache.find(ch => ch.type === "GUILD_TEXT" && ch.permissionsFor(guild.roles.everyone).has("SEND_MESSAGES") && ch.permissionsFor(guild.me).has("EMBED_LINKS")); c = c ? c : guild.channels.cache.find(ch => ch.type === "GUILD_TEXT" && ch.permissionsFor(guild.roles.everyone).has("SEND_MESSAGES") && ch.permissionsFor(guild.me).has("EMBED_LINKS"));
let pages = [ let pages = [
new generateEmojiEmbed() new Embed()
.setEmbed(new generateEmojiEmbed()
.setTitle("Welcome to Nucleus") .setTitle("Welcome to Nucleus")
.setDescription( .setDescription(
"Thanks for adding Nucleus to your server\n\n" + "Thanks for adding Nucleus to your server\n\n" +
@ -15,8 +28,10 @@ export default async (guild, interaction?) => {
"If you need support, have questions or want features, you can let us know in [Clicks](https://discord.gg/bPaNnxe)" "If you need support, have questions or want features, you can let us know in [Clicks](https://discord.gg/bPaNnxe)"
) )
.setEmoji("NUCLEUS.LOGO") .setEmoji("NUCLEUS.LOGO")
.setStatus("Danger"), .setStatus("Danger")
new generateEmojiEmbed() ).setTitle("Welcome").setDescription("About Nucleus").setPageId(0),
new Embed()
.setEmbed(new generateEmojiEmbed()
.setTitle("Logging") .setTitle("Logging")
.setDescription( .setDescription(
"Nucleus can log server events and keep you informed with what content is being posted to your server.\n" + "Nucleus can log server events and keep you informed with what content is being posted to your server.\n" +
@ -27,8 +42,10 @@ export default async (guild, interaction?) => {
"A warning log channel can be set with `/settings warnings channel`" "A warning log channel can be set with `/settings warnings channel`"
) )
.setEmoji("NUCLEUS.LOGO") .setEmoji("NUCLEUS.LOGO")
.setStatus("Danger"), .setStatus("Danger")
new generateEmojiEmbed() ).setTitle("Logging").setDescription("Logging, staff warning logs etc.").setPageId(1),
new Embed()
.setEmbed(new generateEmojiEmbed()
.setTitle("Moderation") .setTitle("Moderation")
.setDescription( .setDescription(
"Nucleus has a number of commands that can be used to moderate your server.\n" + "Nucleus has a number of commands that can be used to moderate your server.\n" +
@ -43,8 +60,10 @@ export default async (guild, interaction?) => {
`**${getEmojiByName("PUNISH.BAN.GREEN")} Unban:** The user is able to rejoin the server.` `**${getEmojiByName("PUNISH.BAN.GREEN")} Unban:** The user is able to rejoin the server.`
) )
.setEmoji("NUCLEUS.LOGO") .setEmoji("NUCLEUS.LOGO")
.setStatus("Danger"), .setStatus("Danger")
new generateEmojiEmbed() ).setTitle("Moderation").setDescription("Basic moderation commands").setPageId(2),
new Embed()
.setEmbed(new generateEmojiEmbed()
.setTitle("Verify") .setTitle("Verify")
.setDescription( .setDescription(
"Nucleus has a verification system that allows users to prove they aren't bots.\n" + "Nucleus has a verification system that allows users to prove they aren't bots.\n" +
@ -53,8 +72,10 @@ export default async (guild, interaction?) => {
"You can set the role given with `/settings verify role`" "You can set the role given with `/settings verify role`"
) )
.setEmoji("NUCLEUS.LOGO") .setEmoji("NUCLEUS.LOGO")
.setStatus("Danger"), .setStatus("Danger")
new generateEmojiEmbed() ).setTitle("Verify").setDescription("Captcha verification system").setPageId(3),
new Embed()
.setEmbed(new generateEmojiEmbed()
.setTitle("Content Scanning") .setTitle("Content Scanning")
.setDescription( .setDescription(
"Nucleus has a content scanning system that automatically scans links and images sent by users.\n" + "Nucleus has a content scanning system that automatically scans links and images sent by users.\n" +
@ -62,8 +83,10 @@ export default async (guild, interaction?) => {
"You can set the threshold for this in `/settings automation`" "You can set the threshold for this in `/settings automation`"
) )
.setEmoji("NUCLEUS.LOGO") .setEmoji("NUCLEUS.LOGO")
.setStatus("Danger"), .setStatus("Danger")
new generateEmojiEmbed() ).setTitle("Content Scanning").setDescription("Content (NSFW, malware, scams) scanning").setPageId(4),
new Embed()
.setEmbed(new generateEmojiEmbed()
.setTitle("Tickets") .setTitle("Tickets")
.setDescription( .setDescription(
"Nucleus has a ticket system that allows users to create tickets and have a support team respond to them.\n" + "Nucleus has a ticket system that allows users to create tickets and have a support team respond to them.\n" +
@ -73,6 +96,7 @@ export default async (guild, interaction?) => {
) )
.setEmoji("NUCLEUS.LOGO") .setEmoji("NUCLEUS.LOGO")
.setStatus("Danger") .setStatus("Danger")
).setTitle("Tickets").setDescription("Ticket system").setPageId(5)
] ]
let m; let m;
if (interaction) { if (interaction) {
@ -98,45 +122,78 @@ export default async (guild, interaction?) => {
return (component.member as Discord.GuildMember).permissions.has("MANAGE_GUILD"); return (component.member as Discord.GuildMember).permissions.has("MANAGE_GUILD");
} }
let selectPaneOpen = false;
while (true) { while (true) {
let selectPane = []
if (selectPaneOpen) {
let options = [];
pages.forEach(embed => {
options.push(new SelectMenuOption({
label: embed.title,
value: embed.pageId.toString(),
description: embed.description || "",
}))
})
selectPane = [new MessageActionRow().addComponents([
new Discord.MessageSelectMenu()
.addOptions(options)
.setCustomId("page")
.setMaxValues(1)
.setPlaceholder("Choose a page...")
])]
}
if (interaction) { if (interaction) {
let em = new Discord.MessageEmbed(pages[page]) let em = new Discord.MessageEmbed(pages[page].embed)
em.setDescription(em.description + "\n\n" + createPageIndicator(pages.length, page)); em.setDescription(em.description + "\n\n" + createPageIndicator(pages.length, page));
await interaction.editReply({ await interaction.editReply({
embeds: [em], embeds: [em],
components: [new MessageActionRow().addComponents([ components: selectPane.concat([new MessageActionRow().addComponents([
new MessageButton().setCustomId("left").setEmoji(getEmojiByName("CONTROL.LEFT", "id")).setStyle("SECONDARY").setDisabled(page === 0), new MessageButton().setCustomId("left").setEmoji(getEmojiByName("CONTROL.LEFT", "id")).setStyle("SECONDARY").setDisabled(page === 0),
new MessageButton().setCustomId("select").setEmoji(getEmojiByName("CONTROL.MENU", "id")).setStyle(selectPaneOpen ? "PRIMARY" : "SECONDARY").setDisabled(false),
new MessageButton().setCustomId("right").setEmoji(getEmojiByName("CONTROL.RIGHT", "id")).setStyle("SECONDARY").setDisabled(page === pages.length - 1), new MessageButton().setCustomId("right").setEmoji(getEmojiByName("CONTROL.RIGHT", "id")).setStyle("SECONDARY").setDisabled(page === pages.length - 1),
new MessageButton().setCustomId("close").setEmoji(getEmojiByName("CONTROL.CROSS", "id")).setStyle("DANGER") new MessageButton().setCustomId("close").setEmoji(getEmojiByName("CONTROL.CROSS", "id")).setStyle("DANGER")
])], ])]),
fetchReply: true fetchReply: true
}); });
} else { } else {
let em = new Discord.MessageEmbed(pages[page].embed)
em.setDescription(em.description + "\n\n" + createPageIndicator(pages.length, page));
await m.edit({ await m.edit({
embeds: [pages[page].setFooter({text: `Page ${page + 1}/${pages.length}`})], embeds: [em],
components: [new MessageActionRow().addComponents([ components: selectPane.concat([new MessageActionRow().addComponents([
new MessageButton().setCustomId("left").setEmoji(getEmojiByName("CONTROL.LEFT", "id")).setStyle("SECONDARY").setDisabled(page === 0), new MessageButton().setCustomId("left").setEmoji(getEmojiByName("CONTROL.LEFT", "id")).setStyle("SECONDARY").setDisabled(page === 0),
new MessageButton().setCustomId("select").setEmoji(getEmojiByName("CONTROL.MENU", "id")).setStyle(selectPaneOpen ? "PRIMARY" : "SECONDARY").setDisabled(false),
new MessageButton().setCustomId("right").setEmoji(getEmojiByName("CONTROL.RIGHT", "id")).setStyle("SECONDARY").setDisabled(page === pages.length - 1), new MessageButton().setCustomId("right").setEmoji(getEmojiByName("CONTROL.RIGHT", "id")).setStyle("SECONDARY").setDisabled(page === pages.length - 1),
new MessageButton().setCustomId("close").setEmoji(getEmojiByName("CONTROL.CROSS", "id")).setStyle("DANGER") new MessageButton().setCustomId("close").setEmoji(getEmojiByName("CONTROL.CROSS", "id")).setStyle("DANGER")
])], ])]),
fetchReply: true fetchReply: true
}); });
} }
let i let i
try { try {
i = await m.awaitMessageComponent({filter: interaction ? () => { return true } : f, componentType: "BUTTON", time: 600000}); i = await m.awaitMessageComponent({filter: interaction ? () => { return true } : f, time: 600000});
} catch(e) { break } } catch(e) { break }
i.deferUpdate() i.deferUpdate()
if (i.component.customId == "left") { if (i.component.customId == "left") {
if (page > 0) page--; if (page > 0) page--;
selectPaneOpen = false;
} else if (i.component.customId == "right") { } else if (i.component.customId == "right") {
if (page < pages.length - 1) page++; if (page < pages.length - 1) page++;
} else if (i.component.customId == "close") { selectPaneOpen = false;
} else if (i.component.customId == "select") {
selectPaneOpen = !selectPaneOpen;
} else if (i.component.customId == "page") {
page = parseInt(i.values[0]);
selectPaneOpen = false;
} else {
if (interaction) { if (interaction) {
let em = new Discord.MessageEmbed(pages[page]) let em = new Discord.MessageEmbed(pages[page].embed)
em.setDescription(em.description + "\n\n" + createPageIndicator(pages.length, page) + " | Message closed"); em.setDescription(em.description + "\n\n" + createPageIndicator(pages.length, page) + " | Message closed");
interaction.editReply({embeds: [em], components: [new MessageActionRow().addComponents([ interaction.editReply({embeds: [em], components: [new MessageActionRow().addComponents([
new MessageButton().setCustomId("left").setEmoji(getEmojiByName("CONTROL.LEFT", "id")).setStyle("SECONDARY").setDisabled(true), new MessageButton().setCustomId("left").setEmoji(getEmojiByName("CONTROL.LEFT", "id")).setStyle("SECONDARY").setDisabled(true),
new MessageButton().setCustomId("select").setEmoji(getEmojiByName("CONTROL.MENU", "id")).setStyle(selectPaneOpen ? "PRIMARY" : "SECONDARY").setDisabled(true),
new MessageButton().setCustomId("right").setEmoji(getEmojiByName("CONTROL.RIGHT", "id")).setStyle("SECONDARY").setDisabled(true), new MessageButton().setCustomId("right").setEmoji(getEmojiByName("CONTROL.RIGHT", "id")).setStyle("SECONDARY").setDisabled(true),
new MessageButton().setCustomId("close").setEmoji(getEmojiByName("CONTROL.CROSS", "id")).setStyle("DANGER").setDisabled(true) new MessageButton().setCustomId("close").setEmoji(getEmojiByName("CONTROL.CROSS", "id")).setStyle("DANGER").setDisabled(true)
])], fetchReply: true}); ])], fetchReply: true});
@ -144,9 +201,6 @@ export default async (guild, interaction?) => {
m.delete(); m.delete();
} }
return; return;
} else {
await m.delete()
break;
} }
} }
if (interaction) { if (interaction) {
@ -156,6 +210,7 @@ export default async (guild, interaction?) => {
embeds: [em], embeds: [em],
components: [new MessageActionRow().addComponents([ components: [new MessageActionRow().addComponents([
new MessageButton().setCustomId("left").setEmoji(getEmojiByName("CONTROL.LEFT", "id")).setStyle("SECONDARY").setDisabled(true), new MessageButton().setCustomId("left").setEmoji(getEmojiByName("CONTROL.LEFT", "id")).setStyle("SECONDARY").setDisabled(true),
new MessageButton().setCustomId("select").setEmoji(getEmojiByName("CONTROL.MENU", "id")).setStyle("SECONDARY").setDisabled(true),
new MessageButton().setCustomId("right").setEmoji(getEmojiByName("CONTROL.RIGHT", "id")).setStyle("SECONDARY").setDisabled(true), new MessageButton().setCustomId("right").setEmoji(getEmojiByName("CONTROL.RIGHT", "id")).setStyle("SECONDARY").setDisabled(true),
new MessageButton().setCustomId("close").setEmoji(getEmojiByName("CONTROL.CROSS", "id")).setStyle("DANGER").setDisabled(true) new MessageButton().setCustomId("close").setEmoji(getEmojiByName("CONTROL.CROSS", "id")).setStyle("DANGER").setDisabled(true)
])] ])]
@ -167,6 +222,7 @@ export default async (guild, interaction?) => {
embeds: [em], embeds: [em],
components: [new MessageActionRow().addComponents([ components: [new MessageActionRow().addComponents([
new MessageButton().setCustomId("left").setEmoji(getEmojiByName("CONTROL.LEFT", "id")).setStyle("SECONDARY").setDisabled(true), new MessageButton().setCustomId("left").setEmoji(getEmojiByName("CONTROL.LEFT", "id")).setStyle("SECONDARY").setDisabled(true),
new MessageButton().setCustomId("select").setEmoji(getEmojiByName("CONTROL.MENU", "id")).setStyle("SECONDARY").setDisabled(true),
new MessageButton().setCustomId("right").setEmoji(getEmojiByName("CONTROL.RIGHT", "id")).setStyle("SECONDARY").setDisabled(true), new MessageButton().setCustomId("right").setEmoji(getEmojiByName("CONTROL.RIGHT", "id")).setStyle("SECONDARY").setDisabled(true),
new MessageButton().setCustomId("close").setEmoji(getEmojiByName("CONTROL.CROSS", "id")).setStyle("DANGER").setDisabled(true) new MessageButton().setCustomId("close").setEmoji(getEmojiByName("CONTROL.CROSS", "id")).setStyle("DANGER").setDisabled(true)
])] ])]

@ -1,5 +1,5 @@
import Discord, { CommandInteraction, MessageActionRow, MessageButton } from "discord.js"; import Discord, { CommandInteraction, MessageActionRow, MessageButton } from "discord.js";
import { SlashCommandSubcommandBuilder } from "@discordjs/builders"; import { SelectMenuOption, SlashCommandSubcommandBuilder } from "@discordjs/builders";
import { WrappedCheck } from "jshaiku"; import { WrappedCheck } from "jshaiku";
import generateEmojiEmbed from "../../utils/generateEmojiEmbed.js"; import generateEmojiEmbed from "../../utils/generateEmojiEmbed.js";
import getEmojiByName from "../../utils/getEmojiByName.js"; import getEmojiByName from "../../utils/getEmojiByName.js";
@ -12,6 +12,19 @@ const command = (builder: SlashCommandSubcommandBuilder) =>
.setDescription("Shows info about a user") .setDescription("Shows info about a user")
.addUserOption(option => option.setName("user").setDescription("The user to get info about | Default: Yourself")) .addUserOption(option => option.setName("user").setDescription("The user to get info about | Default: Yourself"))
class Embed {
embed: Discord.MessageEmbed;
title: string;
description: string = "";
pageId: number = 0;
setEmbed(embed: Discord.MessageEmbed) { this.embed = embed; return this; }
setTitle(title: string) { this.title = title; return this; }
setDescription(description: string) { this.description = description; return this; }
setPageId(pageId: number) { this.pageId = pageId; return this; }
}
const callback = async (interaction: CommandInteraction) => { const callback = async (interaction: CommandInteraction) => {
// @ts-ignore // @ts-ignore
const { renderUser, renderDelta } = interaction.client.logger const { renderUser, renderDelta } = interaction.client.logger
@ -88,8 +101,11 @@ const callback = async (interaction: CommandInteraction) => {
perms += `${getEmojiByName("CONTROL." + (hasPerm ? "TICK" : "CROSS"))} ${permsArray[perm]}\n` perms += `${getEmojiByName("CONTROL." + (hasPerm ? "TICK" : "CROSS"))} ${permsArray[perm]}\n`
}) })
let selectPaneOpen = false;
let embeds = [ let embeds = [
new generateEmojiEmbed() new Embed()
.setEmbed(new generateEmojiEmbed()
.setTitle("User Info: General") .setTitle("User Info: General")
.setStatus("Success") .setStatus("Success")
.setEmoji("MEMBER.JOIN") .setEmoji("MEMBER.JOIN")
@ -110,8 +126,10 @@ const callback = async (interaction: CommandInteraction) => {
}) })
) )
.setThumbnail(await member.user.displayAvatarURL({dynamic: true})) .setThumbnail(await member.user.displayAvatarURL({dynamic: true}))
.setImage((await member.user.fetch()).bannerURL({format: "gif"})), .setImage((await member.user.fetch()).bannerURL({format: "gif"}))
new generateEmojiEmbed() ).setTitle("General").setDescription("General information about the user").setPageId(0),
new Embed()
.setEmbed(new generateEmojiEmbed()
.setTitle("User Info: Roles") .setTitle("User Info: Roles")
.setStatus("Success") .setStatus("Success")
.setEmoji("GUILD.ROLES.CREATE") .setEmoji("GUILD.ROLES.CREATE")
@ -123,8 +141,10 @@ const callback = async (interaction: CommandInteraction) => {
}) + "\n" + }) + "\n" +
(s.length > 0 ? s : "*None*") + "\n" (s.length > 0 ? s : "*None*") + "\n"
) )
.setThumbnail(await member.user.displayAvatarURL({dynamic: true})), .setThumbnail(await member.user.displayAvatarURL({dynamic: true}))
new generateEmojiEmbed() ).setTitle("Roles").setDescription("Roles the user has").setPageId(1),
new Embed()
.setEmbed(new generateEmojiEmbed()
.setTitle("User Info: Key Permissions") .setTitle("User Info: Key Permissions")
.setStatus("Success") .setStatus("Success")
.setEmoji("GUILD.ROLES.CREATE") .setEmoji("GUILD.ROLES.CREATE")
@ -135,21 +155,46 @@ const callback = async (interaction: CommandInteraction) => {
}) + "\n" + perms }) + "\n" + perms
) )
.setThumbnail(await member.user.displayAvatarURL({dynamic: true})) .setThumbnail(await member.user.displayAvatarURL({dynamic: true}))
).setTitle("Key Permissions").setDescription("Key permissions the user has").setPageId(2),
] ]
let m let m
m = await interaction.reply({embeds: [new generateEmojiEmbed().setTitle("Loading").setEmoji("NUCLEUS.LOADING").setStatus("Danger")], fetchReply: true, ephemeral: true}); m = await interaction.reply({embeds: [new generateEmojiEmbed().setTitle("Loading").setEmoji("NUCLEUS.LOADING").setStatus("Danger")], fetchReply: true, ephemeral: true});
let page = 0 let page = 0
while (true) { while (true) {
let em = new Discord.MessageEmbed(embeds[page]) let em = new Discord.MessageEmbed(embeds[page].embed)
em.setDescription(em.description + "\n" + createPageIndicator(embeds.length, page)); em.setDescription(em.description + "\n" + createPageIndicator(embeds.length, page));
let selectPane = []
if (selectPaneOpen) {
let options = [];
embeds.forEach(embed => {
options.push(new SelectMenuOption({
label: embed.title,
value: embed.pageId.toString(),
description: embed.description || "",
}))
})
selectPane = [new MessageActionRow().addComponents([
new Discord.MessageSelectMenu()
.addOptions(options)
.setCustomId("page")
.setMaxValues(1)
.setPlaceholder("Choose a page...")
])]
}
await interaction.editReply({ await interaction.editReply({
embeds: [em], embeds: [em],
components: [new MessageActionRow().addComponents([ components: selectPane.concat([new MessageActionRow().addComponents([
new MessageButton() new MessageButton()
.setEmoji(getEmojiByName("CONTROL.LEFT", "id")) .setEmoji(getEmojiByName("CONTROL.LEFT", "id"))
.setStyle("SECONDARY") .setStyle("SECONDARY")
.setCustomId("left") .setCustomId("left")
.setDisabled(page === 0), .setDisabled(page === 0),
new MessageButton()
.setEmoji(getEmojiByName("CONTROL.MENU", "id"))
.setStyle(selectPaneOpen ? "PRIMARY" : "SECONDARY")
.setCustomId("select")
.setDisabled(false),
new MessageButton() new MessageButton()
.setEmoji(getEmojiByName("CONTROL.RIGHT", "id")) .setEmoji(getEmojiByName("CONTROL.RIGHT", "id"))
.setCustomId("right") .setCustomId("right")
@ -159,19 +204,26 @@ const callback = async (interaction: CommandInteraction) => {
.setEmoji(getEmojiByName("CONTROL.CROSS", "id")) .setEmoji(getEmojiByName("CONTROL.CROSS", "id"))
.setCustomId("close") .setCustomId("close")
.setStyle("DANGER") .setStyle("DANGER")
])] ])])
}) })
let i let i
try { try {
i = await m.awaitMessageComponent({componentType: "BUTTON", time: 600000}); i = await m.awaitMessageComponent({time: 600000});
} catch { break } } catch { break }
i.deferUpdate() i.deferUpdate()
if (i.component.customId == "left") { if (i.component.customId == "left") {
if (page > 0) page--; if (page > 0) page--;
selectPaneOpen = false;
} else if (i.component.customId == "right") { } else if (i.component.customId == "right") {
if (page < embeds.length - 1) page++; if (page < embeds.length - 1) page++;
selectPaneOpen = false;
} else if (i.component.customId == "select") {
selectPaneOpen = !selectPaneOpen;
} else if (i.component.customId == "close") { } else if (i.component.customId == "close") {
break; break;
} else if (i.component.customId == "page") {
page = parseInt(i.values[0]);
selectPaneOpen = false;
} else { } else {
break; break;
} }
@ -182,6 +234,11 @@ const callback = async (interaction: CommandInteraction) => {
.setStyle("SECONDARY") .setStyle("SECONDARY")
.setCustomId("left") .setCustomId("left")
.setDisabled(true), .setDisabled(true),
new MessageButton()
.setEmoji(getEmojiByName("CONTROL.MENU", "id"))
.setStyle("SECONDARY")
.setCustomId("select")
.setDisabled(true),
new MessageButton() new MessageButton()
.setEmoji(getEmojiByName("CONTROL.RIGHT", "id")) .setEmoji(getEmojiByName("CONTROL.RIGHT", "id"))
.setCustomId("right") .setCustomId("right")

@ -1,15 +0,0 @@
{
"compilerOptions": {
"module": "esnext",
"target": "es2020",
"sourceMap": true,
"esModuleInterop": true,
"outDir": "./dist",
"declaration": true,
"declarationMap": true,
"resolveJsonModule": true,
"moduleResolution": "node",
},
"include": ["src/**/*"],
"exclude": ["src/events:TODO/*"]
}

@ -1,957 +0,0 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
"@discordjs/builders@^0.11.0":
"integrity" "sha512-ZTB8yJdJKrKlq44dpWkNUrAtEJEq0gqpb7ASdv4vmq6/mZal5kOv312hQ56I/vxwMre+VIkoHquNUAfnTbiYtg=="
"resolved" "https://registry.npmjs.org/@discordjs/builders/-/builders-0.11.0.tgz"
"version" "0.11.0"
dependencies:
"@sindresorhus/is" "^4.2.0"
"discord-api-types" "^0.26.0"
"ts-mixer" "^6.0.0"
"tslib" "^2.3.1"
"zod" "^3.11.6"
"@discordjs/builders@^0.12.0":
"integrity" "sha512-Vx2MjUZd6QVo1uS2uWt708Fd6cHWGFblAvbpL5EBO+kLl0BADmPwwvts+YJ/VfSywed6Vsk6K2cEooR/Ytjhjw=="
"resolved" "https://registry.npmjs.org/@discordjs/builders/-/builders-0.12.0.tgz"
"version" "0.12.0"
dependencies:
"@sindresorhus/is" "^4.3.0"
"discord-api-types" "^0.26.1"
"ts-mixer" "^6.0.0"
"tslib" "^2.3.1"
"zod" "^3.11.6"
"@discordjs/collection@^0.4.0":
"integrity" "sha512-zmjq+l/rV35kE6zRrwe8BHqV78JvIh2ybJeZavBi5NySjWXqN3hmmAKg7kYMMXSeiWtSsMoZ/+MQi0DiQWy2lw=="
"resolved" "https://registry.npmjs.org/@discordjs/collection/-/collection-0.4.0.tgz"
"version" "0.4.0"
"@sapphire/async-queue@^1.1.9":
"integrity" "sha512-z+CDw5X4UgIEpZL8KM+ThVx1i8V60HBg0l/oFewTNbQQeRDJHdVxHyJykv+SF1H+Rc8EkMS81VTWo95jVYgO/g=="
"resolved" "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.3.0.tgz"
"version" "1.3.0"
"@sindresorhus/is@^4.2.0", "@sindresorhus/is@^4.3.0":
"integrity" "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw=="
"resolved" "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz"
"version" "4.6.0"
"@types/node-fetch@^2.5.12":
"integrity" "sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA=="
"resolved" "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz"
"version" "2.6.1"
dependencies:
"@types/node" "*"
"form-data" "^3.0.0"
"@types/node@*":
"integrity" "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ=="
"resolved" "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz"
"version" "17.0.21"
"@types/ws@^8.2.2":
"integrity" "sha512-VXI82ykONr5tacHEojnErTQk+KQSoYbW1NB6iz6wUwrNd+BqfkfggQNoNdCqhJSzbNumShPERbM+Pc5zpfhlbw=="
"resolved" "https://registry.npmjs.org/@types/ws/-/ws-8.5.2.tgz"
"version" "8.5.2"
dependencies:
"@types/node" "*"
"accepts@~1.3.8":
"integrity" "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw=="
"resolved" "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz"
"version" "1.3.8"
dependencies:
"mime-types" "~2.1.34"
"negotiator" "0.6.3"
"array-flatten@1.1.1":
"integrity" "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
"resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz"
"version" "1.1.1"
"asynckit@^0.4.0":
"integrity" "sha1-x57Zf380y48robyXkLzDZkdLS3k="
"resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz"
"version" "0.4.0"
"balanced-match@^1.0.0":
"integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
"resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
"version" "1.0.2"
"blueimp-load-image@^3.0.0":
"integrity" "sha512-Q9rFbd4ZUNvzSFmRXx9MoG0RwWwJeMjjEUbG7WIOJgUg22Jgkow0wL5b35B6qwiBscxACW9OHdrP5s2vQ3x8DQ=="
"resolved" "https://registry.npmjs.org/blueimp-load-image/-/blueimp-load-image-3.0.0.tgz"
"version" "3.0.0"
"bmp-js@^0.1.0":
"integrity" "sha1-4Fpj95amwf8l9Hcex62twUjAcjM="
"resolved" "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz"
"version" "0.1.0"
"body-parser@^1.20.0", "body-parser@1.20.0":
"integrity" "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg=="
"resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz"
"version" "1.20.0"
dependencies:
"bytes" "3.1.2"
"content-type" "~1.0.4"
"debug" "2.6.9"
"depd" "2.0.0"
"destroy" "1.2.0"
"http-errors" "2.0.0"
"iconv-lite" "0.4.24"
"on-finished" "2.4.1"
"qs" "6.10.3"
"raw-body" "2.5.1"
"type-is" "~1.6.18"
"unpipe" "1.0.0"
"brace-expansion@^1.1.7":
"integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="
"resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"
"version" "1.1.11"
dependencies:
"balanced-match" "^1.0.0"
"concat-map" "0.0.1"
"bytes@3.1.2":
"integrity" "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
"resolved" "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz"
"version" "3.1.2"
"call-bind@^1.0.0":
"integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA=="
"resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz"
"version" "1.0.2"
dependencies:
"function-bind" "^1.1.1"
"get-intrinsic" "^1.0.2"
"cli-color@^2.0.0":
"integrity" "sha512-eBbxZF6fqPUNnf7CLAFOersUnyYzv83tHFLSlts+OAHsNendaqv2tHCq+/MO+b3Y+9JeoUlIvobyxG/Z8GNeOg=="
"resolved" "https://registry.npmjs.org/cli-color/-/cli-color-2.0.1.tgz"
"version" "2.0.1"
dependencies:
"d" "^1.0.1"
"es5-ext" "^0.10.53"
"es6-iterator" "^2.0.3"
"memoizee" "^0.4.15"
"timers-ext" "^0.1.7"
"colors@^1.4.0":
"integrity" "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA=="
"resolved" "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz"
"version" "1.4.0"
"combined-stream@^1.0.8":
"integrity" "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="
"resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz"
"version" "1.0.8"
dependencies:
"delayed-stream" "~1.0.0"
"commander@^8.3.0":
"integrity" "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="
"resolved" "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz"
"version" "8.3.0"
"concat-map@0.0.1":
"integrity" "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
"resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
"version" "0.0.1"
"content-disposition@0.5.4":
"integrity" "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ=="
"resolved" "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz"
"version" "0.5.4"
dependencies:
"safe-buffer" "5.2.1"
"content-type@~1.0.4":
"integrity" "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
"resolved" "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz"
"version" "1.0.4"
"cookie-signature@1.0.6":
"integrity" "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
"resolved" "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz"
"version" "1.0.6"
"cookie@0.5.0":
"integrity" "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
"resolved" "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz"
"version" "0.5.0"
"d@^1.0.1", "d@1":
"integrity" "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA=="
"resolved" "https://registry.npmjs.org/d/-/d-1.0.1.tgz"
"version" "1.0.1"
dependencies:
"es5-ext" "^0.10.50"
"type" "^1.0.1"
"debug@2.6.9":
"integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="
"resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
"version" "2.6.9"
dependencies:
"ms" "2.0.0"
"delayed-stream@~1.0.0":
"integrity" "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
"resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
"version" "1.0.0"
"depd@2.0.0":
"integrity" "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
"resolved" "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz"
"version" "2.0.0"
"destroy@1.2.0":
"integrity" "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
"resolved" "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz"
"version" "1.2.0"
"difflib@~0.2.1":
"integrity" "sha1-teMDYabbAjF21WKJLbhZQKcY9H4="
"resolved" "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz"
"version" "0.2.4"
dependencies:
"heap" ">= 0.2.0"
"discord-api-types@^0.26.0", "discord-api-types@^0.26.1":
"integrity" "sha512-T5PdMQ+Y1MEECYMV5wmyi9VEYPagEDEi4S0amgsszpWY0VB9JJ/hEvM6BgLhbdnKky4gfmZEXtEEtojN8ZKJQQ=="
"resolved" "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.26.1.tgz"
"version" "0.26.1"
"discord.js@^13.6.0":
"integrity" "sha512-tXNR8zgsEPxPBvGk3AQjJ9ljIIC6/LOPjzKwpwz8Y1Q2X66Vi3ZqFgRHYwnHKC0jC0F+l4LzxlhmOJsBZDNg9g=="
"resolved" "https://registry.npmjs.org/discord.js/-/discord.js-13.6.0.tgz"
"version" "13.6.0"
dependencies:
"@discordjs/builders" "^0.11.0"
"@discordjs/collection" "^0.4.0"
"@sapphire/async-queue" "^1.1.9"
"@types/node-fetch" "^2.5.12"
"@types/ws" "^8.2.2"
"discord-api-types" "^0.26.0"
"form-data" "^4.0.0"
"node-fetch" "^2.6.1"
"ws" "^8.4.0"
"dreamopt@~0.8.0":
"integrity" "sha1-W8yAvnCX5F/EicNCQFq2gUCowdk="
"resolved" "https://registry.npmjs.org/dreamopt/-/dreamopt-0.8.0.tgz"
"version" "0.8.0"
dependencies:
"wordwrap" ">=0.0.2"
"ee-first@1.1.1":
"integrity" "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
"resolved" "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz"
"version" "1.1.1"
"encodeurl@~1.0.2":
"integrity" "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
"resolved" "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz"
"version" "1.0.2"
"es5-ext@^0.10.35", "es5-ext@^0.10.46", "es5-ext@^0.10.50", "es5-ext@^0.10.53", "es5-ext@~0.10.14", "es5-ext@~0.10.2", "es5-ext@~0.10.46":
"integrity" "sha512-L7cCNoPwTkAp7IBHxrKLsh7NKiVFkcdxlP9vbVw9QUvb7gF0Mz9bEBN0WY9xqdTjGF907EMT/iG013vnbqwu1Q=="
"resolved" "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.57.tgz"
"version" "0.10.57"
dependencies:
"es6-iterator" "^2.0.3"
"es6-symbol" "^3.1.3"
"next-tick" "^1.1.0"
"es6-iterator@^2.0.3":
"integrity" "sha1-p96IkUGgWpSwhUQDstCg+/qY87c="
"resolved" "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz"
"version" "2.0.3"
dependencies:
"d" "1"
"es5-ext" "^0.10.35"
"es6-symbol" "^3.1.1"
"es6-symbol@^3.1.1", "es6-symbol@^3.1.3":
"integrity" "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA=="
"resolved" "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz"
"version" "3.1.3"
dependencies:
"d" "^1.0.1"
"ext" "^1.1.2"
"es6-weak-map@^2.0.3":
"integrity" "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA=="
"resolved" "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz"
"version" "2.0.3"
dependencies:
"d" "1"
"es5-ext" "^0.10.46"
"es6-iterator" "^2.0.3"
"es6-symbol" "^3.1.1"
"escape-html@~1.0.3":
"integrity" "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
"resolved" "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz"
"version" "1.0.3"
"etag@~1.8.1":
"integrity" "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
"resolved" "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz"
"version" "1.8.1"
"event-emitter@^0.3.5":
"integrity" "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk="
"resolved" "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz"
"version" "0.3.5"
dependencies:
"d" "1"
"es5-ext" "~0.10.14"
"express@^4.18.1":
"integrity" "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q=="
"resolved" "https://registry.npmjs.org/express/-/express-4.18.1.tgz"
"version" "4.18.1"
dependencies:
"accepts" "~1.3.8"
"array-flatten" "1.1.1"
"body-parser" "1.20.0"
"content-disposition" "0.5.4"
"content-type" "~1.0.4"
"cookie" "0.5.0"
"cookie-signature" "1.0.6"
"debug" "2.6.9"
"depd" "2.0.0"
"encodeurl" "~1.0.2"
"escape-html" "~1.0.3"
"etag" "~1.8.1"
"finalhandler" "1.2.0"
"fresh" "0.5.2"
"http-errors" "2.0.0"
"merge-descriptors" "1.0.1"
"methods" "~1.1.2"
"on-finished" "2.4.1"
"parseurl" "~1.3.3"
"path-to-regexp" "0.1.7"
"proxy-addr" "~2.0.7"
"qs" "6.10.3"
"range-parser" "~1.2.1"
"safe-buffer" "5.2.1"
"send" "0.18.0"
"serve-static" "1.15.0"
"setprototypeof" "1.2.0"
"statuses" "2.0.1"
"type-is" "~1.6.18"
"utils-merge" "1.0.1"
"vary" "~1.1.2"
"ext@^1.1.2":
"integrity" "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg=="
"resolved" "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz"
"version" "1.6.0"
dependencies:
"type" "^2.5.0"
"file-type@^12.4.1":
"integrity" "sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg=="
"resolved" "https://registry.npmjs.org/file-type/-/file-type-12.4.2.tgz"
"version" "12.4.2"
"finalhandler@1.2.0":
"integrity" "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg=="
"resolved" "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz"
"version" "1.2.0"
dependencies:
"debug" "2.6.9"
"encodeurl" "~1.0.2"
"escape-html" "~1.0.3"
"on-finished" "2.4.1"
"parseurl" "~1.3.3"
"statuses" "2.0.1"
"unpipe" "~1.0.0"
"form-data@^3.0.0":
"integrity" "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg=="
"resolved" "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz"
"version" "3.0.1"
dependencies:
"asynckit" "^0.4.0"
"combined-stream" "^1.0.8"
"mime-types" "^2.1.12"
"form-data@^4.0.0":
"integrity" "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww=="
"resolved" "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz"
"version" "4.0.0"
dependencies:
"asynckit" "^0.4.0"
"combined-stream" "^1.0.8"
"mime-types" "^2.1.12"
"forwarded@0.2.0":
"integrity" "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
"resolved" "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz"
"version" "0.2.0"
"fresh@0.5.2":
"integrity" "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
"resolved" "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz"
"version" "0.5.2"
"fs.realpath@^1.0.0":
"integrity" "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
"resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
"version" "1.0.0"
"function-bind@^1.1.1":
"integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
"resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"
"version" "1.1.1"
"get-intrinsic@^1.0.2":
"integrity" "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q=="
"resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz"
"version" "1.1.1"
dependencies:
"function-bind" "^1.1.1"
"has" "^1.0.3"
"has-symbols" "^1.0.1"
"glob@^5.0.10":
"integrity" "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E="
"resolved" "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz"
"version" "5.0.15"
dependencies:
"inflight" "^1.0.4"
"inherits" "2"
"minimatch" "2 || 3"
"once" "^1.3.0"
"path-is-absolute" "^1.0.0"
"glob@^7.1.6":
"integrity" "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q=="
"resolved" "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz"
"version" "7.2.0"
dependencies:
"fs.realpath" "^1.0.0"
"inflight" "^1.0.4"
"inherits" "2"
"minimatch" "^3.0.4"
"once" "^1.3.0"
"path-is-absolute" "^1.0.0"
"has-symbols@^1.0.1":
"integrity" "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
"resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz"
"version" "1.0.3"
"has@^1.0.3":
"integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw=="
"resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz"
"version" "1.0.3"
dependencies:
"function-bind" "^1.1.1"
"heap@>= 0.2.0":
"integrity" "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg=="
"resolved" "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz"
"version" "0.2.7"
"http-errors@2.0.0":
"integrity" "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ=="
"resolved" "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz"
"version" "2.0.0"
dependencies:
"depd" "2.0.0"
"inherits" "2.0.4"
"setprototypeof" "1.2.0"
"statuses" "2.0.1"
"toidentifier" "1.0.1"
"humanize-duration@^3.27.1":
"integrity" "sha512-jCVkMl+EaM80rrMrAPl96SGG4NRac53UyI1o/yAzebDntEY6K6/Fj2HOjdPg8omTqIe5Y0wPBai2q5xXrIbarA=="
"resolved" "https://registry.npmjs.org/humanize-duration/-/humanize-duration-3.27.1.tgz"
"version" "3.27.1"
"humanize@^0.0.9":
"integrity" "sha1-GZT/rs3+nEQe0r2sdFK3u0yeQaQ="
"resolved" "https://registry.npmjs.org/humanize/-/humanize-0.0.9.tgz"
"version" "0.0.9"
"iconv-lite@0.4.24":
"integrity" "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="
"resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz"
"version" "0.4.24"
dependencies:
"safer-buffer" ">= 2.1.2 < 3"
"idb-keyval@^3.2.0":
"integrity" "sha512-slx8Q6oywCCSfKgPgL0sEsXtPVnSbTLWpyiDcu6msHOyKOLari1TD1qocXVCft80umnkk3/Qqh3lwoFt8T/BPQ=="
"resolved" "https://registry.npmjs.org/idb-keyval/-/idb-keyval-3.2.0.tgz"
"version" "3.2.0"
"inflight@^1.0.4":
"integrity" "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk="
"resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
"version" "1.0.6"
dependencies:
"once" "^1.3.0"
"wrappy" "1"
"inherits@2", "inherits@2.0.4":
"integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
"resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
"version" "2.0.4"
"ipaddr.js@1.9.1":
"integrity" "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
"resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz"
"version" "1.9.1"
"is-electron@^2.2.0":
"integrity" "sha512-r8EEQQsqT+Gn0aXFx7lTFygYQhILLCB+wn0WCDL5LZRINeLH/Rvw1j2oKodELLXYNImQ3CRlVsY8wW4cGOsyuw=="
"resolved" "https://registry.npmjs.org/is-electron/-/is-electron-2.2.1.tgz"
"version" "2.2.1"
"is-promise@^2.2.2":
"integrity" "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ=="
"resolved" "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz"
"version" "2.2.2"
"is-url@^1.2.4":
"integrity" "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww=="
"resolved" "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz"
"version" "1.2.4"
"jpeg-autorotate@^7.1.1":
"integrity" "sha512-ewTZTG/QWOM0D5h/yKcQ3QgyrnQYsr3qmcS+bqoAwgQAY1KBa31aJ+q+FlElaxo/rSYqfF1ixf+8EIgluBkgTg=="
"resolved" "https://registry.npmjs.org/jpeg-autorotate/-/jpeg-autorotate-7.1.1.tgz"
"version" "7.1.1"
dependencies:
"colors" "^1.4.0"
"glob" "^7.1.6"
"jpeg-js" "^0.4.2"
"piexifjs" "^1.0.6"
"yargs-parser" "^20.2.1"
"jpeg-js@^0.4.2":
"integrity" "sha512-ru1HWKek8octvUHFHvE5ZzQ1yAsJmIvRdGWvSoKV52XKyuyYA437QWDttXT8eZXDSbuMpHlLzPDZUPd6idIz+Q=="
"resolved" "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.3.tgz"
"version" "0.4.3"
"jshaiku@file:../haiku":
"resolved" "file:../haiku"
"version" "1.0.0"
dependencies:
"@discordjs/builders" "^0.11.0"
"@discordjs/rest" "^0.2.0-canary.0"
"@types/node-cron" "^3.0.1"
"ansi-styles" "^6.1.0"
"chalk" "^5.0.0"
"discord-api-types" "^0.26.1"
"discord.js" "^13.5.1"
"node-cron" "^3.0.0"
"json-diff@^0.7.1":
"integrity" "sha512-VBvNBt3cIrCBHa3gYbVsCFUEReqWZPf+Biq1ZtFdIiQ6rytRLDp3qvtrGv7z/iZDd1D4vXWpW7Nx1nP8muLzkg=="
"resolved" "https://registry.npmjs.org/json-diff/-/json-diff-0.7.3.tgz"
"version" "0.7.3"
dependencies:
"cli-color" "^2.0.0"
"difflib" "~0.2.1"
"dreamopt" "~0.8.0"
"lru-queue@^0.1.0":
"integrity" "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM="
"resolved" "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz"
"version" "0.1.0"
dependencies:
"es5-ext" "~0.10.2"
"media-typer@0.3.0":
"integrity" "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
"resolved" "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz"
"version" "0.3.0"
"memoizee@^0.4.15":
"integrity" "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ=="
"resolved" "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz"
"version" "0.4.15"
dependencies:
"d" "^1.0.1"
"es5-ext" "^0.10.53"
"es6-weak-map" "^2.0.3"
"event-emitter" "^0.3.5"
"is-promise" "^2.2.2"
"lru-queue" "^0.1.0"
"next-tick" "^1.1.0"
"timers-ext" "^0.1.7"
"merge-descriptors@1.0.1":
"integrity" "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
"resolved" "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz"
"version" "1.0.1"
"methods@~1.1.2":
"integrity" "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
"resolved" "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz"
"version" "1.1.2"
"mime-db@1.51.0":
"integrity" "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g=="
"resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz"
"version" "1.51.0"
"mime-types@^2.1.12", "mime-types@~2.1.24", "mime-types@~2.1.34":
"integrity" "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A=="
"resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz"
"version" "2.1.34"
dependencies:
"mime-db" "1.51.0"
"mime@1.6.0":
"integrity" "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
"resolved" "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz"
"version" "1.6.0"
"minimatch@^3.0.4", "minimatch@2 || 3":
"integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="
"resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
"version" "3.1.2"
dependencies:
"brace-expansion" "^1.1.7"
"ms@2.0.0":
"integrity" "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
"resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"
"version" "2.0.0"
"ms@2.1.3":
"integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
"resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
"version" "2.1.3"
"negotiator@0.6.3":
"integrity" "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
"resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz"
"version" "0.6.3"
"next-tick@^1.1.0", "next-tick@1":
"integrity" "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="
"resolved" "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz"
"version" "1.1.0"
"node-fetch@^2.6.0", "node-fetch@^2.6.1", "node-fetch@^2.6.5":
"integrity" "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ=="
"resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz"
"version" "2.6.7"
dependencies:
"whatwg-url" "^5.0.0"
"node-tesseract@^0.2.7":
"integrity" "sha1-yPAvuDUaQnByc1d4wFGYI/JgG4Q="
"resolved" "https://registry.npmjs.org/node-tesseract/-/node-tesseract-0.2.7.tgz"
"version" "0.2.7"
dependencies:
"glob" "^5.0.10"
"node-uuid" "^1.4.1"
"node-uuid@^1.4.1":
"integrity" "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc="
"resolved" "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz"
"version" "1.4.8"
"object-inspect@^1.9.0":
"integrity" "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g=="
"resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz"
"version" "1.12.0"
"on-finished@2.4.1":
"integrity" "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="
"resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz"
"version" "2.4.1"
dependencies:
"ee-first" "1.1.1"
"once@^1.3.0":
"integrity" "sha1-WDsap3WWHUsROsF9nFC6753Xa9E="
"resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
"version" "1.4.0"
dependencies:
"wrappy" "1"
"opencollective-postinstall@^2.0.2":
"integrity" "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q=="
"resolved" "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz"
"version" "2.0.3"
"parseurl@~1.3.3":
"integrity" "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
"resolved" "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz"
"version" "1.3.3"
"path-is-absolute@^1.0.0":
"integrity" "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
"resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
"version" "1.0.1"
"path-to-regexp@0.1.7":
"integrity" "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
"resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz"
"version" "0.1.7"
"piexifjs@^1.0.6":
"integrity" "sha512-0wVyH0cKohzBQ5Gi2V1BuxYpxWfxF3cSqfFXfPIpl5tl9XLS5z4ogqhUCD20AbHi0h9aJkqXNJnkVev6gwh2ag=="
"resolved" "https://registry.npmjs.org/piexifjs/-/piexifjs-1.0.6.tgz"
"version" "1.0.6"
"proxy-addr@~2.0.7":
"integrity" "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="
"resolved" "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz"
"version" "2.0.7"
dependencies:
"forwarded" "0.2.0"
"ipaddr.js" "1.9.1"
"qs@6.10.3":
"integrity" "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ=="
"resolved" "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz"
"version" "6.10.3"
dependencies:
"side-channel" "^1.0.4"
"range-parser@~1.2.1":
"integrity" "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
"resolved" "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz"
"version" "1.2.1"
"raw-body@2.5.1":
"integrity" "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig=="
"resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz"
"version" "2.5.1"
dependencies:
"bytes" "3.1.2"
"http-errors" "2.0.0"
"iconv-lite" "0.4.24"
"unpipe" "1.0.0"
"regenerator-runtime@^0.13.3":
"integrity" "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
"resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz"
"version" "0.13.9"
"resolve-url@^0.2.1":
"integrity" "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo="
"resolved" "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz"
"version" "0.2.1"
"safe-buffer@5.2.1":
"integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
"resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
"version" "5.2.1"
"safer-buffer@>= 2.1.2 < 3":
"integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
"resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"
"version" "2.1.2"
"send@0.18.0":
"integrity" "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg=="
"resolved" "https://registry.npmjs.org/send/-/send-0.18.0.tgz"
"version" "0.18.0"
dependencies:
"debug" "2.6.9"
"depd" "2.0.0"
"destroy" "1.2.0"
"encodeurl" "~1.0.2"
"escape-html" "~1.0.3"
"etag" "~1.8.1"
"fresh" "0.5.2"
"http-errors" "2.0.0"
"mime" "1.6.0"
"ms" "2.1.3"
"on-finished" "2.4.1"
"range-parser" "~1.2.1"
"statuses" "2.0.1"
"serve-static@1.15.0":
"integrity" "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g=="
"resolved" "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz"
"version" "1.15.0"
dependencies:
"encodeurl" "~1.0.2"
"escape-html" "~1.0.3"
"parseurl" "~1.3.3"
"send" "0.18.0"
"setprototypeof@1.2.0":
"integrity" "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
"resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz"
"version" "1.2.0"
"side-channel@^1.0.4":
"integrity" "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw=="
"resolved" "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz"
"version" "1.0.4"
dependencies:
"call-bind" "^1.0.0"
"get-intrinsic" "^1.0.2"
"object-inspect" "^1.9.0"
"statuses@2.0.1":
"integrity" "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
"resolved" "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz"
"version" "2.0.1"
"structured-clone@^0.2.2":
"integrity" "sha1-rJK2vjGVimQ9sw8TNavGobAt/cI="
"resolved" "https://registry.npmjs.org/structured-clone/-/structured-clone-0.2.2.tgz"
"version" "0.2.2"
"tesseract.js-core@^2.2.0":
"integrity" "sha512-a8L+OJTbUipBsEDsJhDPlnLB0TY1MkTZqw5dqUwmiDSjUzwvU7HWLg/2+WDRulKUi4LE+7PnHlaBlW0k+V0U0w=="
"resolved" "https://registry.npmjs.org/tesseract.js-core/-/tesseract.js-core-2.2.0.tgz"
"version" "2.2.0"
"tesseract.js@^2.1.5":
"integrity" "sha512-7CIS3SWr7TXpeaH9+HS7iUtVbCfPFYOO3p6rkRAkdtsOtrbz6496x59na6SCbFAIaZulQxy8BjwSu3qL3AoDRg=="
"resolved" "https://registry.npmjs.org/tesseract.js/-/tesseract.js-2.1.5.tgz"
"version" "2.1.5"
dependencies:
"blueimp-load-image" "^3.0.0"
"bmp-js" "^0.1.0"
"file-type" "^12.4.1"
"idb-keyval" "^3.2.0"
"is-electron" "^2.2.0"
"is-url" "^1.2.4"
"jpeg-autorotate" "^7.1.1"
"node-fetch" "^2.6.0"
"opencollective-postinstall" "^2.0.2"
"regenerator-runtime" "^0.13.3"
"resolve-url" "^0.2.1"
"tesseract.js-core" "^2.2.0"
"zlibjs" "^0.3.1"
"timers-ext@^0.1.7":
"integrity" "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ=="
"resolved" "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz"
"version" "0.1.7"
dependencies:
"es5-ext" "~0.10.46"
"next-tick" "1"
"toidentifier@1.0.1":
"integrity" "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
"resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz"
"version" "1.0.1"
"tr46@~0.0.3":
"integrity" "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o="
"resolved" "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz"
"version" "0.0.3"
"ts-mixer@^6.0.0":
"integrity" "sha512-nXIb1fvdY5CBSrDIblLn73NW0qRDk5yJ0Sk1qPBF560OdJfQp9jhl+0tzcY09OZ9U+6GpeoI9RjwoIKFIoB9MQ=="
"resolved" "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.0.tgz"
"version" "6.0.0"
"tslib@^2.3.1":
"integrity" "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
"resolved" "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz"
"version" "2.3.1"
"type-is@~1.6.18":
"integrity" "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g=="
"resolved" "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz"
"version" "1.6.18"
dependencies:
"media-typer" "0.3.0"
"mime-types" "~2.1.24"
"type@^1.0.1":
"integrity" "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="
"resolved" "https://registry.npmjs.org/type/-/type-1.2.0.tgz"
"version" "1.2.0"
"type@^2.5.0":
"integrity" "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ=="
"resolved" "https://registry.npmjs.org/type/-/type-2.6.0.tgz"
"version" "2.6.0"
"typescript@^4.5.5":
"integrity" "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg=="
"resolved" "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz"
"version" "4.6.2"
"unpipe@~1.0.0", "unpipe@1.0.0":
"integrity" "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
"resolved" "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
"version" "1.0.0"
"unscan@^1.1.2":
"integrity" "sha512-a5RcGaBFMO9l78QWKffeWUo2cvfqUv05JCXuphE8MFOA92qyqp1Da7isnR+zjJspi45+yS8tTSuhd0vV3asWdA=="
"resolved" "https://registry.npmjs.org/unscan/-/unscan-1.1.2.tgz"
"version" "1.1.2"
dependencies:
"commander" "^8.3.0"
"form-data" "^4.0.0"
"node-fetch" "^2.6.5"
"utils-merge@1.0.1":
"integrity" "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
"resolved" "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz"
"version" "1.0.1"
"vary@~1.1.2":
"integrity" "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
"resolved" "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz"
"version" "1.1.2"
"webidl-conversions@^3.0.0":
"integrity" "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE="
"resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz"
"version" "3.0.1"
"whatwg-url@^5.0.0":
"integrity" "sha1-lmRU6HZUYuN2RNNib2dCzotwll0="
"resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz"
"version" "5.0.0"
dependencies:
"tr46" "~0.0.3"
"webidl-conversions" "^3.0.0"
"wordwrap@>=0.0.2":
"integrity" "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus="
"resolved" "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz"
"version" "1.0.0"
"wrappy@1":
"integrity" "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
"resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
"version" "1.0.2"
"ws@^8.4.0":
"integrity" "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg=="
"resolved" "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz"
"version" "8.5.0"
"yargs-parser@^20.2.1":
"integrity" "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w=="
"resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz"
"version" "20.2.9"
"zlibjs@^0.3.1":
"integrity" "sha1-UBl+2yihxCymWcyLTmqd3W1ERVQ="
"resolved" "https://registry.npmjs.org/zlibjs/-/zlibjs-0.3.1.tgz"
"version" "0.3.1"
"zod@^3.11.6":
"integrity" "sha512-LZRucWt4j/ru5azOkJxCfpR87IyFDn8h2UODdqvXzZLb3K7bb9chUrUIGTy3BPsr8XnbQYfQ5Md5Hu2OYIo1mg=="
"resolved" "https://registry.npmjs.org/zod/-/zod-3.13.4.tgz"
"version" "3.13.4"
Loading…
Cancel
Save