diff options
75 files changed, 960 insertions, 2204 deletions
diff --git a/.eslintrc.cjs b/.eslintrc.cjs index d246897..e65a7c8 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -1,5 +1,3 @@ -/* eslint-disable import/no-commonjs */ - // prettier-ignore const globals = [ 'NodeFilter', 'AbortController', 'AbortSignal', 'AbstractRange', 'AnalyserNode', 'Animation', 'AnimationEffect', @@ -20,7 +18,7 @@ const globals = [ 'DocumentFragment', 'DocumentTimeline', 'DocumentType', 'DragEvent', 'DynamicsCompressorNode', 'Element', 'ElementInternals', 'ErrorEvent', 'Event', 'EventSource', 'EventTarget', 'External', 'File', 'FileList', 'FileReader', 'FileSystem', 'FileSystemDirectoryEntry', 'FileSystemDirectoryReader', 'FileSystemEntry', 'FileSystemFileEntry', 'FocusEvent', 'FontFace', - 'FontFaceSet', 'FontFaceSetLoadEvent', 'FormData', 'FormDataEvent', 'GainNode', 'Gamepad', 'GamepadButton', 'GamepadEvent', + 'FontFaceSet', 'FontFaceSetLoadEvent', 'FormDataEvent', 'GainNode', 'Gamepad', 'GamepadButton', 'GamepadEvent', 'GamepadHapticActuator', 'Geolocation', 'GeolocationCoordinates', 'GeolocationPosition', 'GeolocationPositionError', 'HTMLAllCollection', 'HTMLAnchorElement', 'HTMLAreaElement', 'HTMLAudioElement', 'HTMLBRElement', 'HTMLBaseElement', 'HTMLBodyElement', 'HTMLButtonElement', 'HTMLCanvasElement', 'HTMLCollection', 'HTMLDListElement', 'HTMLDataElement', @@ -112,7 +110,7 @@ const globals = [ 'ongamepadconnected', 'ongamepaddisconnected', 'onhashchange', 'onlanguagechange', 'onmessage', 'onmessageerror', 'onoffline', 'ononline', 'onpagehide', 'onpageshow', 'onpopstate', 'onrejectionhandled', 'onstorage', 'onunhandledrejection', 'onunload', 'localStorage', 'caches', 'crossOriginIsolated', 'crypto', 'indexedDB', 'isSecureContext', 'origin', 'performance', 'atob', - 'btoa', 'createImageBitmap', 'fetch', 'queueMicrotask', 'sessionStorage', 'addEventListener', 'removeEventListener' + 'btoa', 'createImageBitmap', 'queueMicrotask', 'sessionStorage', 'addEventListener', 'removeEventListener' ] /** @@ -130,8 +128,7 @@ module.exports = { sourceType: 'module', project: './tsconfig.eslint.json' }, - plugins: ['@typescript-eslint', 'deprecation', 'import'], - ignorePatterns: ['dist', 'node_modules'], + plugins: ['@typescript-eslint', 'deprecation'], rules: { 'no-return-await': 'off', '@typescript-eslint/no-empty-interface': 'warn', @@ -170,14 +167,13 @@ module.exports = { 'deprecation/deprecation': 'warn', '@typescript-eslint/explicit-member-accessibility': ['warn', { accessibility: 'explicit' }], '@typescript-eslint/switch-exhaustiveness-check': 'warn', - 'import/no-commonjs': 'error', - 'import/extensions': ['error', 'ignorePackages'], '@typescript-eslint/no-restricted-imports': [ 'error', { paths: [{ name: 'console', importNames: ['assert'], message: 'Import from the `assert` module instead.' }] } ], 'no-restricted-globals': ['error', ...globals.map((v) => ({ name: v, message: "Don't use DOM globals." }))], '@typescript-eslint/no-namespace': 'off', - 'no-debugger': 'warn' + 'no-debugger': 'warn', + '@typescript-eslint/prefer-as-const': 'warn' } }; diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index de5e141..8af3039 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -24,7 +24,7 @@ jobs: - name: ESLint run: yarn lint - name: Build - run: yarn build:tsc + run: yarn build - name: Dry Run run: yarn start:dry diff --git a/.vscode/settings.json b/.vscode/settings.json index d86374b..4eed974 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -9,8 +9,6 @@ ".pnp.js": false, "**/node_modules": true }, - "javascript.preferences.importModuleSpecifier": "project-relative", - "typescript.preferences.importModuleSpecifier": "project-relative", "search.exclude": { "**/.yarn": true, "**/.pnp.*": true, @@ -20,7 +18,6 @@ }, "editor.codeActionsOnSave": { "source.organizeImports": true, - // "source.fixAll.eslint": true, "source.format": true }, "diffEditor.wordWrap": "on", @@ -31,11 +28,14 @@ "prettier.prettierPath": "node_modules/prettier", "prettier.withNodeModules": true, "prettier.useEditorConfig": false, - // "typescript.tsdk": ".yarn/sdks/typescript/lib", - "typescript.tsdk": "node_modules/typescript/lib", - "typescript.enablePromptUseWorkspaceTsdk": true, + "javascript.format.enable": false, + "javascript.preferences.importModuleSpecifier": "relative", "javascript.preferences.importModuleSpecifierEnding": "js", + "javascript.preferences.useAliasesForRenames": false, + "typescript.format.enable": false, + "typescript.preferences.importModuleSpecifier": "relative", "typescript.preferences.importModuleSpecifierEnding": "js", + "typescript.preferences.useAliasesForRenames": false, "discord.removeDetails": false, "discord.removeLowerDetails": false, "discord.removeRemoteRepository": false, diff --git a/.yarnrc.yml b/.yarnrc.yml index caaf948..39b22a0 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -5,10 +5,10 @@ enableTelemetry: false nodeLinker: pnpm plugins: - - path: .yarn/plugins/@yarnpkg/plugin-typescript.cjs - spec: '@yarnpkg/plugin-typescript' - path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs - spec: '@yarnpkg/plugin-interactive-tools' + spec: "@yarnpkg/plugin-interactive-tools" + - path: .yarn/plugins/@yarnpkg/plugin-typescript.cjs + spec: "@yarnpkg/plugin-typescript" pnpEnableEsmLoader: true diff --git a/config/index.ts b/config/index.ts new file mode 100644 index 0000000..7514faa --- /dev/null +++ b/config/index.ts @@ -0,0 +1,2 @@ +export * from './Config.js'; +export { default as config, default } from './options.js'; diff --git a/config/tsconfig.json b/config/tsconfig.json index 46b2d15..583c81a 100644 --- a/config/tsconfig.json +++ b/config/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../tsconfig.base.json", "compilerOptions": { - "outDir": "../../dist/config" - }, - "files": ["./Config.ts", "example-options.ts", "options.ts"] + "outDir": "../dist/config" + } } diff --git a/ecosystem.config.cjs b/ecosystem.config.cjs index b064f76..3bd532f 100644 --- a/ecosystem.config.cjs +++ b/ecosystem.config.cjs @@ -1,4 +1,3 @@ -/* eslint-disable import/no-commonjs */ module.exports = { apps: [ ...['', '-beta'].map((e) => ({ @@ -25,7 +24,7 @@ module.exports = { 'ref': `origin/${e === 'production' ? 'master' : 'beta'}`, 'repo': 'https://github.com/NotEnoughUpdates/bush-bot.git', 'path': `/code/bush-bot${e === 'beta' ? '-beta' : ''}`, - 'post-deploy': `yarn install && yarn build:tsc && pm2 start ecosystem.config.cjs --only bush-bot${ + 'post-deploy': `yarn install && yarn build && pm2 start ecosystem.config.cjs --only bush-bot${ e === 'beta' ? '-beta' : '' }` } diff --git a/lib/automod/AutomodShared.ts b/lib/automod/AutomodShared.ts index 5d031d0..08cde25 100644 --- a/lib/automod/AutomodShared.ts +++ b/lib/automod/AutomodShared.ts @@ -8,11 +8,11 @@ import { PermissionFlagsBits, Snowflake } from 'discord.js'; -import UnmuteCommand from '../../src/commands/moderation/unmute.js'; import * as Moderation from '../common/Moderation.js'; import { unmuteResponse } from '../extensions/discord.js/ExtendedGuildMember.js'; import { colors, emojis } from '../utils/BushConstants.js'; import * as Format from '../utils/Format.js'; +import { formatUnmuteResponse } from '../utils/FormatResponse.js'; /** * Handles shared auto moderation functionality. @@ -207,7 +207,7 @@ export async function handleAutomodInteraction(interaction: ButtonInteraction) { if (check !== true) return interaction.reply({ content: check, ephemeral: true }); const check2 = await Moderation.checkMutePermissions(interaction.guild); - if (check2 !== true) return interaction.reply({ content: UnmuteCommand.formatCode('/', victim!, check2), ephemeral: true }); + if (check2 !== true) return interaction.reply({ content: formatUnmuteResponse('/', victim!, check2), ephemeral: true }); const result = await victim.bushUnmute({ reason, diff --git a/lib/common/Sentry.ts b/lib/common/Sentry.ts index 446ec27..1b0e19a 100644 --- a/lib/common/Sentry.ts +++ b/lib/common/Sentry.ts @@ -1,7 +1,7 @@ +import type { Config } from '#config'; import { RewriteFrames } from '@sentry/integrations'; import * as SentryNode from '@sentry/node'; import { Integrations } from '@sentry/node'; -import type { Config } from '../../config/Config.js'; export class Sentry { public constructor(rootdir: string, config: Config) { diff --git a/lib/common/tags.ts b/lib/common/tags.ts index 098cf29..4af8783 100644 --- a/lib/common/tags.ts +++ b/lib/common/tags.ts @@ -1,5 +1,5 @@ /* these functions are adapted from the common-tags npm package which is licensed under the MIT license */ -/* the js docs are adapted from the @types/common-tags npm package which is licensed under the MIT license */ +/* the JSDOCs are adapted from the @types/common-tags npm package which is licensed under the MIT license */ /** * Strips the **initial** indentation from the beginning of each line in a multiline string. diff --git a/lib/extensions/discord-akairo/BushClient.ts b/lib/extensions/discord-akairo/BushClient.ts index 1a6bb8c..92968d6 100644 --- a/lib/extensions/discord-akairo/BushClient.ts +++ b/lib/extensions/discord-akairo/BushClient.ts @@ -10,7 +10,8 @@ import { roleWithDuration, snowflake } from '#args'; -import { BushClientEvents, emojis, formatError, inspect } from '#lib'; +import type { Config } from '#config'; +import { BushClientEvents, emojis, formatError, inspect, updateEveryCache } from '#lib'; import { patch, type PatchedElements } from '@notenoughupdates/events-intercept'; import * as Sentry from '@sentry/node'; import { @@ -44,26 +45,25 @@ import type EventEmitter from 'events'; import { google } from 'googleapis'; import path from 'path'; import readline from 'readline'; -import type { Options as SequelizeOptions, Sequelize as SequelizeType } from 'sequelize'; +import { Options as SequelizeOptions, Sequelize, Sequelize as SequelizeType } from 'sequelize'; import { fileURLToPath } from 'url'; -import type { Config } from '../../../config/Config.js'; -import UpdateCacheTask from '../../../src/tasks/cache/updateCache.js'; -import UpdateStatsTask from '../../../src/tasks/feature/updateStats.js'; import { tinyColor } from '../../arguments/tinyColor.js'; import { BushCache } from '../../common/BushCache.js'; import { HighlightManager } from '../../common/HighlightManager.js'; -import { ActivePunishment } from '../../models/instance/ActivePunishment.js'; -import { Guild as GuildDB } from '../../models/instance/Guild.js'; -import { Highlight } from '../../models/instance/Highlight.js'; -import { Level } from '../../models/instance/Level.js'; -import { ModLog } from '../../models/instance/ModLog.js'; -import { Reminder } from '../../models/instance/Reminder.js'; -import { StickyRole } from '../../models/instance/StickyRole.js'; -import { Global } from '../../models/shared/Global.js'; -import { GuildCount } from '../../models/shared/GuildCount.js'; -import { MemberCount } from '../../models/shared/MemberCount.js'; -import { Shared } from '../../models/shared/Shared.js'; -import { Stat } from '../../models/shared/Stat.js'; +import { + ActivePunishment, + Global, + Guild as GuildModel, + GuildCount, + Highlight, + Level, + MemberCount, + ModLog, + Reminder, + Shared, + Stat, + StickyRole +} from '../../models/index.js'; import { AllowedMentions } from '../../utils/AllowedMentions.js'; import { BushClientUtils } from '../../utils/BushClientUtils.js'; import { BushLogger } from '../../utils/BushLogger.js'; @@ -75,7 +75,6 @@ import { BushCommandHandler } from './BushCommandHandler.js'; import { BushInhibitorHandler } from './BushInhibitorHandler.js'; import { BushListenerHandler } from './BushListenerHandler.js'; import { BushTaskHandler } from './BushTaskHandler.js'; -const { Sequelize } = (await import('sequelize')).default; declare module 'discord.js' { export interface Client extends EventEmitter { @@ -467,7 +466,7 @@ export class BushClient<Ready extends boolean = boolean> extends AkairoClient<Re public async dbPreInit() { try { await this.instanceDB.authenticate(); - GuildDB.initModel(this.instanceDB, this); + GuildModel.initModel(this.instanceDB, this); ModLog.initModel(this.instanceDB); ActivePunishment.initModel(this.instanceDB); Level.initModel(this.instanceDB); @@ -525,9 +524,11 @@ export class BushClient<Ready extends boolean = boolean> extends AkairoClient<Re try { await this.highlightManager.syncCache(); - await UpdateCacheTask.init(this); + await updateEveryCache(this); void this.console.success('startup', `Successfully created <<cache>>.`, false); - const stats = await UpdateStatsTask.init(this); + + const stats = + (await Stat.findByPk(this.config.environment)) ?? (await Stat.create({ environment: this.config.environment })); this.stats.commandsUsed = stats.commandsUsed; this.stats.slashCommandsUsed = stats.slashCommandsUsed; await this.login(this.token!); diff --git a/lib/extensions/global.ts b/lib/global.ts index a9020d7..0a0bcca 100644 --- a/lib/extensions/global.ts +++ b/lib/global.ts @@ -1,6 +1,6 @@ -/* eslint-disable no-var */ +/* eslint-disable */ + declare global { - // eslint-disable-next-line @typescript-eslint/no-unused-vars interface ReadonlyArray<T> { includes<S, R extends `${Extract<S, string>}`>( this: ReadonlyArray<R>, diff --git a/lib/index.ts b/lib/index.ts index 5a8ecde..ca23177 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -1,3 +1,5 @@ +import './global.js'; + export * from './automod/AutomodShared.js'; export * from './automod/MemberAutomod.js'; export * from './automod/MessageAutomod.js'; @@ -53,4 +55,7 @@ export * as Arg from './utils/Arg.js'; export * from './utils/BushConstants.js'; export * from './utils/BushLogger.js'; export * from './utils/BushUtils.js'; +export * from './utils/ErrorHandler.js'; export * as Format from './utils/Format.js'; +export * from './utils/FormatResponse.js'; +export * from './utils/UpdateCache.js'; diff --git a/lib/models/index.ts b/lib/models/index.ts new file mode 100644 index 0000000..ae82fb7 --- /dev/null +++ b/lib/models/index.ts @@ -0,0 +1,13 @@ +export * from './BaseModel.js'; +export * from './instance/ActivePunishment.js'; +export * from './instance/Guild.js'; +export * from './instance/Highlight.js'; +export * from './instance/Level.js'; +export * from './instance/ModLog.js'; +export * from './instance/Reminder.js'; +export * from './instance/StickyRole.js'; +export * from './shared/Global.js'; +export * from './shared/GuildCount.js'; +export * from './shared/MemberCount.js'; +export * from './shared/Shared.js'; +export * from './shared/Stat.js'; diff --git a/lib/models/instance/ActivePunishment.ts b/lib/models/instance/ActivePunishment.ts index 38012ca..9bd9d01 100644 --- a/lib/models/instance/ActivePunishment.ts +++ b/lib/models/instance/ActivePunishment.ts @@ -1,8 +1,7 @@ import { type Snowflake } from 'discord.js'; import { nanoid } from 'nanoid'; -import { type Sequelize } from 'sequelize'; +import { DataTypes, type Sequelize } from 'sequelize'; import { BaseModel } from '../BaseModel.js'; -const { DataTypes } = (await import('sequelize')).default; export enum ActivePunishmentType { BAN = 'BAN', diff --git a/lib/models/instance/Guild.ts b/lib/models/instance/Guild.ts index f258d48..1d645e9 100644 --- a/lib/models/instance/Guild.ts +++ b/lib/models/instance/Guild.ts @@ -1,9 +1,9 @@ +import config from '#config'; import { ChannelType, Constants, type Snowflake } from 'discord.js'; -import { type Sequelize } from 'sequelize'; +import { DataTypes, type Sequelize } from 'sequelize'; import { BadWordDetails } from '../../automod/AutomodShared.js'; import { type BushClient } from '../../extensions/discord-akairo/BushClient.js'; import { BaseModel } from '../BaseModel.js'; -const { DataTypes } = (await import('sequelize')).default; export interface GuildModel { id: Snowflake; @@ -199,8 +199,6 @@ const asGuildSetting = <T>(et: { [K in keyof T]: PartialBy<GuildSetting, 'config return et as { [K in keyof T]: GuildSetting }; }; -const { default: config } = await import('../../../config/options.js'); - export const guildSettingsObj = asGuildSetting({ prefix: { name: 'Prefix', diff --git a/lib/models/instance/Highlight.ts b/lib/models/instance/Highlight.ts index 5889fad..38c7990 100644 --- a/lib/models/instance/Highlight.ts +++ b/lib/models/instance/Highlight.ts @@ -1,8 +1,7 @@ import { type Snowflake } from 'discord.js'; import { nanoid } from 'nanoid'; -import { type Sequelize } from 'sequelize'; +import { DataTypes, type Sequelize } from 'sequelize'; import { BaseModel } from '../BaseModel.js'; -const { DataTypes } = (await import('sequelize')).default; export interface HighlightModel { pk: string; diff --git a/lib/models/instance/Level.ts b/lib/models/instance/Level.ts index d8d16f0..e22d63b 100644 --- a/lib/models/instance/Level.ts +++ b/lib/models/instance/Level.ts @@ -1,7 +1,6 @@ import { type Snowflake } from 'discord.js'; -import { type Sequelize } from 'sequelize'; +import { DataTypes, type Sequelize } from 'sequelize'; import { BaseModel } from '../BaseModel.js'; -const { DataTypes } = (await import('sequelize')).default; export interface LevelModel { user: Snowflake; diff --git a/lib/models/instance/ModLog.ts b/lib/models/instance/ModLog.ts index c25f043..324ad83 100644 --- a/lib/models/instance/ModLog.ts +++ b/lib/models/instance/ModLog.ts @@ -1,8 +1,7 @@ import { type Snowflake } from 'discord.js'; import { nanoid } from 'nanoid'; -import { type Sequelize } from 'sequelize'; +import { DataTypes, type Sequelize } from 'sequelize'; import { BaseModel } from '../BaseModel.js'; -const { DataTypes } = (await import('sequelize')).default; export enum ModLogType { PERM_BAN = 'PERM_BAN', diff --git a/lib/models/instance/Reminder.ts b/lib/models/instance/Reminder.ts index 964ea63..8d46edb 100644 --- a/lib/models/instance/Reminder.ts +++ b/lib/models/instance/Reminder.ts @@ -1,8 +1,7 @@ import { Snowflake } from 'discord.js'; import { nanoid } from 'nanoid'; -import { type Sequelize } from 'sequelize'; +import { DataTypes, type Sequelize } from 'sequelize'; import { BaseModel } from '../BaseModel.js'; -const { DataTypes } = (await import('sequelize')).default; export interface ReminderModel { id: string; diff --git a/lib/models/instance/StickyRole.ts b/lib/models/instance/StickyRole.ts index 00e98ce..90ded0e 100644 --- a/lib/models/instance/StickyRole.ts +++ b/lib/models/instance/StickyRole.ts @@ -1,7 +1,6 @@ import { type Snowflake } from 'discord.js'; -import { type Sequelize } from 'sequelize'; +import { DataTypes, type Sequelize } from 'sequelize'; import { BaseModel } from '../BaseModel.js'; -const { DataTypes } = (await import('sequelize')).default; export interface StickyRoleModel { user: Snowflake; diff --git a/lib/models/shared/Global.ts b/lib/models/shared/Global.ts index b1aa0cc..eb6c5dd 100644 --- a/lib/models/shared/Global.ts +++ b/lib/models/shared/Global.ts @@ -1,7 +1,6 @@ import { type Snowflake } from 'discord.js'; -import { type Sequelize } from 'sequelize'; +import { DataTypes, type Sequelize } from 'sequelize'; import { BaseModel } from '../BaseModel.js'; -const { DataTypes } = (await import('sequelize')).default; export interface GlobalModel { environment: 'production' | 'development' | 'beta'; diff --git a/lib/models/shared/Shared.ts b/lib/models/shared/Shared.ts index dec77d1..bf8d461 100644 --- a/lib/models/shared/Shared.ts +++ b/lib/models/shared/Shared.ts @@ -1,8 +1,7 @@ import { Snowflake } from 'discord.js'; -import type { Sequelize } from 'sequelize'; +import { DataTypes, Sequelize } from 'sequelize'; import { BadWords } from '../../automod/AutomodShared.js'; import { BaseModel } from '../BaseModel.js'; -const { DataTypes } = (await import('sequelize')).default; export interface SharedModel { primaryKey: 0; diff --git a/lib/models/shared/Stat.ts b/lib/models/shared/Stat.ts index 8e2e0b3..bce1620 100644 --- a/lib/models/shared/Stat.ts +++ b/lib/models/shared/Stat.ts @@ -1,6 +1,5 @@ -import { type Sequelize } from 'sequelize'; +import { DataTypes, type Sequelize } from 'sequelize'; import { BaseModel } from '../BaseModel.js'; -const { DataTypes } = (await import('sequelize')).default; type Environment = 'production' | 'development' | 'beta'; diff --git a/lib/tsconfig.json b/lib/tsconfig.json index e6d554e..0b2117d 100644 --- a/lib/tsconfig.json +++ b/lib/tsconfig.json @@ -1,9 +1,7 @@ { "extends": "../tsconfig.base.json", "compilerOptions": { - "outDir": "../../dist/lib", - "composite": true + "outDir": "../dist/lib" }, - "include": ["lib/**/*.ts"], - "references": [{ "path": "../config" }] + "references": [{ "path": "../config" }, { "path": "../tsconfig.pkg.json" }] } diff --git a/lib/utils/BushClientUtils.ts b/lib/utils/BushClientUtils.ts index 68a1dc3..2cf546e 100644 --- a/lib/utils/BushClientUtils.ts +++ b/lib/utils/BushClientUtils.ts @@ -15,10 +15,8 @@ import { type Snowflake, type UserResolvable } from 'discord.js'; -import got from 'got'; import _ from 'lodash'; import { ConfigChannelKey } from '../../config/Config.js'; -import CommandErrorListener from '../../src/listeners/commands/commandError.js'; import { GlobalCache, SharedCache } from '../common/BushCache.js'; import { CommandMessage } from '../extensions/discord-akairo/BushCommand.js'; import { SlashMessage } from '../extensions/discord-akairo/SlashMessage.js'; @@ -28,6 +26,7 @@ import { BushInspectOptions } from '../types/BushInspectOptions.js'; import { CodeBlockLang } from '../types/CodeBlockLang.js'; import { emojis, Pronoun, PronounCode, pronounMapping, regex } from './BushConstants.js'; import { addOrRemoveFromArray, formatError, inspect } from './BushUtils.js'; +import { generateErrorEmbed } from './ErrorHandler.js'; /** * Utilities that require access to the client. @@ -74,7 +73,7 @@ export class BushClientUtils { } for (const url of this.#hasteURLs) { try { - const res: HastebinRes = await got.post(`${url}/documents`, { body: content }).json(); + const res: HastebinRes = await (await fetch(`${url}/documents`, { method: 'POST', body: content })).json(); return { url: `${url}/${res.key}`, error: isSubstr ? 'substr' : undefined }; } catch { void this.client.console.error('haste', `Unable to upload haste to ${url}`); @@ -334,7 +333,7 @@ export class BushClientUtils { public async handleError(context: string, error: Error) { await this.client.console.error(_.camelCase(context), `An error occurred:\n${formatError(error, false)}`, false); await this.client.console.channelError({ - embeds: await CommandErrorListener.generateErrorEmbed(this.client, { type: 'unhandledRejection', error: error, context }) + embeds: await generateErrorEmbed(this.client, { type: 'unhandledRejection', error: error, context }) }); } @@ -367,9 +366,8 @@ export class BushClientUtils { public async getPronounsOf(user: User | Snowflake): Promise<Pronoun | undefined> { const _user = await this.resolveNonCachedUser(user); if (!_user) throw new Error(`Cannot find user ${user}`); - const apiRes = (await got - .get(`https://pronoundb.org/api/v1/lookup?platform=discord&id=${_user.id}`) - .json() + const apiRes = (await fetch(`https://pronoundb.org/api/v1/lookup?platform=discord&id=${_user.id}`) + .then((p) => (p.ok ? p.json() : undefined)) .catch(() => undefined)) as { pronouns: PronounCode } | undefined; if (!apiRes) return undefined; @@ -386,22 +384,23 @@ export class BushClientUtils { public async uploadImageToImgur(image: string) { const clientId = this.client.config.credentials.imgurClientId; - const resp = (await got - .post('https://api.imgur.com/3/upload', { - headers: { - Authorization: `Client-ID ${clientId}`, - Accept: 'application/json' - }, - form: { - image: image, - type: 'base64' - }, - followRedirect: true - }) - .json() - .catch(() => null)) as { data: { link: string } | undefined }; - - return resp.data?.link ?? null; + const formData = new FormData(); + formData.append('type', 'base64'); + formData.append('image', image); + + const resp = (await fetch('https://api.imgur.com/3/upload', { + method: 'POST', + headers: { + Accept: 'application/json', + Authorization: `Client-ID ${clientId}` + }, + body: formData, + redirect: 'follow' + }) + .then((p) => (p.ok ? p.json() : null)) + .catch(() => null)) as { data: { link: string } } | null; + + return resp?.data?.link ?? null; } /** diff --git a/lib/utils/BushConstants.ts b/lib/utils/BushConstants.ts index d3089ec..c65b5e8 100644 --- a/lib/utils/BushConstants.ts +++ b/lib/utils/BushConstants.ts @@ -1,4 +1,4 @@ -import deepLock from 'deep-lock'; +import { default as deepLock } from 'deep-lock'; import { ArgumentMatches as AkairoArgumentMatches, ArgumentTypes as AkairoArgumentTypes, diff --git a/lib/utils/BushUtils.ts b/lib/utils/BushUtils.ts index 34ea461..1922204 100644 --- a/lib/utils/BushUtils.ts +++ b/lib/utils/BushUtils.ts @@ -27,7 +27,6 @@ import { type InteractionReplyOptions, type PermissionsString } from 'discord.js'; -import got from 'got'; import { DeepWritable } from 'ts-essentials'; import { inspect as inspectUtil, promisify } from 'util'; import * as Format from './Format.js'; @@ -86,8 +85,11 @@ export function chunk<T>(arr: T[], perChunk: number): T[][] { * @returns The the uuid of the user. */ export async function mcUUID(username: string, dashed = false): Promise<string> { - const apiRes = (await got.get(`https://api.ashcon.app/mojang/v2/user/${username}`).json()) as UuidRes; + const apiRes = (await fetch(`https://api.ashcon.app/mojang/v2/user/${username}`).then((p) => + p.ok ? p.json() : undefined + )) as UuidRes; + // this will throw an error if response is not ok return dashed ? apiRes.uuid : apiRes.uuid.replace(/-/g, ''); } diff --git a/lib/utils/ErrorHandler.ts b/lib/utils/ErrorHandler.ts new file mode 100644 index 0000000..923da75 --- /dev/null +++ b/lib/utils/ErrorHandler.ts @@ -0,0 +1,236 @@ +import { AkairoMessage, Command } from 'discord-akairo'; +import { ChannelType, Client, EmbedBuilder, escapeInlineCode, GuildTextBasedChannel, Message } from 'discord.js'; +import { BushCommandHandlerEvents } from '../extensions/discord-akairo/BushCommandHandler.js'; +import { SlashMessage } from '../extensions/discord-akairo/SlashMessage.js'; +import { colors } from './BushConstants.js'; +import { capitalize, formatError } from './BushUtils.js'; +import { bold, input } from './Format.js'; + +export async function handleCommandError( + client: Client, + ...[error, message, _command]: BushCommandHandlerEvents['error'] | BushCommandHandlerEvents['slashError'] +) { + try { + const isSlash = message.util?.isSlash; + const errorNum = Math.floor(Math.random() * 6969696969) + 69; // hehe funny number + const channel = + message.channel?.type === ChannelType.DM ? message.channel.recipient?.tag : (<GuildTextBasedChannel>message.channel)?.name; + const command = _command ?? message.util?.parsed?.command; + + client.sentry.captureException(error, { + level: 'error', + user: { id: message.author.id, username: message.author.tag }, + extra: { + 'command.name': command?.id, + 'message.id': message.id, + 'message.type': message.util ? (message.util.isSlash ? 'slash' : 'normal') : 'unknown', + 'message.parsed.content': message.util?.parsed?.content, + 'channel.id': + (message.channel?.type === ChannelType.DM ? message.channel.recipient?.id : message.channel?.id) ?? '¯\\_(ツ)_/¯', + 'channel.name': channel, + 'guild.id': message.guild?.id ?? '¯\\_(ツ)_/¯', + 'guild.name': message.guild?.name ?? '¯\\_(ツ)_/¯', + 'environment': client.config.environment + } + }); + + void client.console.error( + `${isSlash ? 'slashC' : 'c'}ommandError`, + `an error occurred with the <<${command}>> ${isSlash ? 'slash ' : ''}command in <<${channel}>> triggered by <<${ + message?.author?.tag + }>>:\n${formatError(error, true)})}`, + false + ); + + const _haste = getErrorHaste(client, error); + const _stack = getErrorStack(client, error); + const [haste, stack] = await Promise.all([_haste, _stack]); + const options = { message, error, isSlash, errorNum, command, channel, haste, stack }; + + const errorEmbed = _generateErrorEmbed({ + ...options, + type: 'command-log' + }); + + void client.logger.channelError({ embeds: errorEmbed }); + + if (message) { + if (!client.config.owners.includes(message.author.id)) { + const errorUserEmbed = _generateErrorEmbed({ + ...options, + type: 'command-user' + }); + void message.util?.send({ embeds: errorUserEmbed }).catch(() => null); + } else { + const errorDevEmbed = _generateErrorEmbed({ + ...options, + type: 'command-dev' + }); + + void message.util?.send({ embeds: errorDevEmbed }).catch(() => null); + } + } + } catch (e) { + throw new IFuckedUpError('An error occurred while handling a command error.', error, e); + } +} + +export async function generateErrorEmbed( + client: Client, + options: + | { + message: Message | AkairoMessage; + error: Error | any; + isSlash?: boolean; + type: 'command-log' | 'command-dev' | 'command-user'; + errorNum: number; + command?: Command; + channel?: string; + } + | { error: Error | any; type: 'uncaughtException' | 'unhandledRejection'; context?: string } +): Promise<EmbedBuilder[]> { + const _haste = getErrorHaste(client, options.error); + const _stack = getErrorStack(client, options.error); + const [haste, stack] = await Promise.all([_haste, _stack]); + + return _generateErrorEmbed({ ...options, haste, stack }); +} + +function _generateErrorEmbed( + options: + | { + message: Message | SlashMessage; + error: Error | any; + isSlash?: boolean; + type: 'command-log' | 'command-dev' | 'command-user'; + errorNum: number; + command?: Command; + channel?: string; + haste: string[]; + stack: string; + } + | { + error: Error | any; + type: 'uncaughtException' | 'unhandledRejection'; + context?: string; + haste: string[]; + stack: string; + } +): EmbedBuilder[] { + const embeds = [new EmbedBuilder().setColor(colors.error)]; + if (options.type === 'command-user') { + embeds[0] + .setTitle('An Error Occurred') + .setDescription( + `Oh no! ${ + options.command ? `While running the ${options.isSlash ? 'slash ' : ''}command ${input(options.command.id)}, a` : 'A' + }n error occurred. Please give the developers code ${input(`${options.errorNum}`)}.` + ) + .setTimestamp(); + return embeds; + } + const description: string[] = []; + + if (options.type === 'command-log') { + description.push( + `**User:** ${options.message.author} (${options.message.author.tag})`, + `**Command:** ${options.command ?? 'N/A'}`, + `**Channel:** <#${options.message.channel?.id}> (${options.channel})`, + `**Message:** [link](${options.message.url})` + ); + if (options.message?.util?.parsed?.content) description.push(`**Command Content:** ${options.message.util.parsed.content}`); + } + + description.push(...options.haste); + + embeds.push(new EmbedBuilder().setColor(colors.error).setTimestamp().setDescription(options.stack.substring(0, 4000))); + if (description.length) embeds[0].setDescription(description.join('\n').substring(0, 4000)); + + if (options.type === 'command-dev' || options.type === 'command-log') + embeds[0].setTitle(`${options.isSlash ? 'Slash ' : ''}CommandError #${input(`${options.errorNum}`)}`); + else if (options.type === 'uncaughtException') + embeds[0].setTitle(`${options.context ? `[${bold(options.context)}] An Error Occurred` : 'Uncaught Exception'}`); + else if (options.type === 'unhandledRejection') + embeds[0].setTitle(`${options.context ? `[${bold(options.context)}] An Error Occurred` : 'Unhandled Promise Rejection'}`); + return embeds; +} + +export async function getErrorHaste(client: Client, error: Error | any): Promise<string[]> { + const inspectOptions = { + showHidden: false, + depth: 9, + colors: false, + customInspect: true, + showProxy: false, + maxArrayLength: Infinity, + maxStringLength: Infinity, + breakLength: 80, + compact: 3, + sorted: false, + getters: true + }; + + const ret: string[] = []; + const promises: Promise<{ + url?: string | undefined; + error?: 'content too long' | 'substr' | 'unable to post' | undefined; + }>[] = []; + const pair: { + [key: string]: { + url?: string | undefined; + error?: 'content too long' | 'substr' | 'unable to post' | undefined; + }; + } = {}; + + for (const element in error) { + if (['stack', 'name', 'message'].includes(element)) continue; + else if (typeof (error as any)[element] === 'object') { + promises.push(client.utils.inspectCleanRedactHaste((error as any)[element], inspectOptions)); + } + } + + const links = await Promise.all(promises); + + let index = 0; + for (const element in error) { + if (['stack', 'name', 'message'].includes(element)) continue; + else if (typeof (error as any)[element] === 'object') { + pair[element] = links[index]; + index++; + } + } + + for (const element in error) { + if (['stack', 'name', 'message'].includes(element)) continue; + else { + ret.push( + `**Error ${capitalize(element)}:** ${ + typeof error[element] === 'object' + ? `${ + pair[element].url + ? `[haste](${pair[element].url})${pair[element].error ? ` - ${pair[element].error}` : ''}` + : pair[element].error + }` + : `\`${escapeInlineCode(client.utils.inspectAndRedact((error as any)[element], inspectOptions))}\`` + }` + ); + } + } + return ret; +} + +export async function getErrorStack(client: Client, error: Error | any): Promise<string> { + return await client.utils.inspectCleanRedactCodeblock(error, 'js', { colors: false }, 4000); +} + +export class IFuckedUpError extends Error { + public declare original: Error | any; + public declare newError: Error | any; + + public constructor(message: string, original?: Error | any, newError?: Error | any) { + super(message); + this.name = 'IFuckedUpError'; + this.original = original; + this.newError = newError; + } +} diff --git a/lib/utils/FormatResponse.ts b/lib/utils/FormatResponse.ts new file mode 100644 index 0000000..f094601 --- /dev/null +++ b/lib/utils/FormatResponse.ts @@ -0,0 +1,32 @@ +import type { GuildMember } from 'discord.js'; +import { unmuteResponse, UnmuteResponse } from '../extensions/discord.js/ExtendedGuildMember.js'; +import { emojis } from './BushConstants.js'; +import { format } from './BushUtils.js'; +import { input } from './Format.js'; + +export function formatUnmuteResponse(prefix: string, member: GuildMember, code: UnmuteResponse): string { + const error = emojis.error; + const victim = input(member.user.tag); + switch (code) { + case unmuteResponse.MISSING_PERMISSIONS: + return `${error} Could not unmute ${victim} because I am missing the **Manage Roles** permission.`; + case unmuteResponse.NO_MUTE_ROLE: + return `${error} Could not unmute ${victim}, you must set a mute role with \`${prefix}config muteRole\`.`; + case unmuteResponse.MUTE_ROLE_INVALID: + return `${error} Could not unmute ${victim} because the current mute role no longer exists. Please set a new mute role with \`${prefix}config muteRole\`.`; + case unmuteResponse.MUTE_ROLE_NOT_MANAGEABLE: + return `${error} Could not unmute ${victim} because I cannot assign the current mute role, either change the role's position or set a new mute role with \`${prefix}config muteRole\`.`; + case unmuteResponse.ACTION_ERROR: + return `${error} Could not unmute ${victim}, there was an error removing their mute role.`; + case unmuteResponse.MODLOG_ERROR: + return `${error} While muting ${victim}, there was an error creating a modlog entry, please report this to my developers.`; + case unmuteResponse.PUNISHMENT_ENTRY_REMOVE_ERROR: + return `${error} While muting ${victim}, there was an error removing their mute entry, please report this to my developers.`; + case unmuteResponse.DM_ERROR: + return `${emojis.warn} unmuted ${victim} however I could not send them a dm.`; + case unmuteResponse.SUCCESS: + return `${emojis.success} Successfully unmuted ${victim}.`; + default: + return `${emojis.error} An error occurred: ${format.input(code)}}`; + } +} diff --git a/lib/utils/UpdateCache.ts b/lib/utils/UpdateCache.ts new file mode 100644 index 0000000..2f96d9d --- /dev/null +++ b/lib/utils/UpdateCache.ts @@ -0,0 +1,36 @@ +import config from '#config'; +import { Client } from 'discord.js'; +import { Global, Guild, Shared } from '../models/index.js'; + +export async function updateGlobalCache(client: Client) { + const environment = config.environment; + const row: { [x: string]: any } = ((await Global.findByPk(environment)) ?? (await Global.create({ environment }))).toJSON(); + + for (const option in row) { + if (Object.keys(client.cache.global).includes(option)) { + client.cache.global[option as keyof typeof client.cache.global] = row[option]; + } + } +} + +export async function updateSharedCache(client: Client) { + const row: { [x: string]: any } = ((await Shared.findByPk(0)) ?? (await Shared.create())).toJSON(); + + for (const option in row) { + if (Object.keys(client.cache.shared).includes(option)) { + client.cache.shared[option as keyof typeof client.cache.shared] = row[option]; + if (option === 'superUsers') client.superUserID = row[option]; + } + } +} + +export async function updateGuildCache(client: Client) { + const rows = await Guild.findAll(); + for (const row of rows) { + client.cache.guilds.set(row.id, row.toJSON() as Guild); + } +} + +export async function updateEveryCache(client: Client) { + await Promise.all([updateGlobalCache(client), updateSharedCache(client), updateGuildCache(client)]); +} diff --git a/neu-item-repo b/neu-item-repo -Subproject 27f73b42b3aaa20d361e8b29ace2ed387836782 +Subproject 3a694f67fcbacf37b9f2b2d62ac30840601c039 diff --git a/neu-item-repo-dangerous b/neu-item-repo-dangerous -Subproject 27f73b42b3aaa20d361e8b29ace2ed387836782 +Subproject 3a694f67fcbacf37b9f2b2d62ac30840601c039 diff --git a/package.json b/package.json index 0358079..2c2db00 100644 --- a/package.json +++ b/package.json @@ -21,21 +21,18 @@ ], "license": "CC-BY-NC-SA-4.0", "scripts": { - "build:esbuild": "yarn rimraf dist && yarn esbuild --sourcemap=inline --outdir=dist --platform=node --target=es2020 --format=esm --log-level=warning src/**/*.ts", - "build:tsc": "yarn rimraf dist && yarn tsc", - "build:tsc:no-emit": "yarn tsc --noEmit", - "build:keep": "yarn tsc", - "start:raw": "node --enable-source-maps --experimental-json-modules --no-warnings dist/src/bot.js", - "start:esbuild": "yarn build:esbuild && yarn start:raw", - "start": "yarn build:tsc && yarn start:raw", + "build": "yarn rimraf dist && yarn tsc -b", + "build:no-emit": "yarn tsc --noEmit", + "build:keep": "yarn tsc -b", + "start": "yarn build && yarn start:raw", "start:keep": "yarn build:keep && yarn start:raw", "start:dry": "yarn start dry", - "dev": "yarn build:tsc && yarn start:raw", - "test": "yarn lint && yarn tsc --noEmit", + "start:raw": "node --enable-source-maps --experimental-json-modules --no-warnings dist/src/bot.js", + "test": "yarn lint && yarn build:no-emit", "format": "yarn prettier . --write", - "lint": "yarn eslint src lib config tests", "format:check": "yarn prettier . --check", - "upgrade": "yarn rimraf yarn.lock && yarn cache clean && yarn install && yarn up && yarn up -R && yarn set version latest && git submodule update --recursive --remote", + "lint": "yarn eslint src lib config tests", + "upgrade": "yarn rimraf yarn.lock && yarn cache clean && yarn install && yarn set version latest && git submodule update --recursive --remote && yarn upgrade-interactive", "upgrade:sdk": "yarn dlx @yarnpkg/sdks vscode", "beta": "git push && git checkout beta && git merge master && git push && git checkout master", "deploy:beta": "pm2 deploy ecosystem.config.cjs beta", @@ -46,8 +43,11 @@ "#lib": { "default": "./lib/index.js" }, - "#constants": { - "default": "./lib/utils/BushConstants.js" + "#lib/*": { + "default": "./lib/*" + }, + "#src/*": { + "default": "./src/*" }, "#args": { "default": "./lib/arguments/index.js" @@ -57,6 +57,9 @@ }, "#tags": { "default": "./lib/common/tags.js" + }, + "#config": { + "default": "./config/index.js" } }, "dependencies": { @@ -68,9 +71,9 @@ "@notenoughupdates/humanize-duration": "^4.0.1", "@notenoughupdates/simplify-number": "^1.0.1", "@notenoughupdates/wolfram-alpha-api": "^1.0.2", - "@sentry/integrations": "^7.9.0", - "@sentry/node": "^7.9.0", - "@sentry/tracing": "^7.9.0", + "@sentry/integrations": "^7.11.1", + "@sentry/node": "^7.11.1", + "@sentry/tracing": "^7.11.1", "canvas": "^2.9.3", "chalk": "^5.0.1", "deep-lock": "^1.0.0", @@ -79,8 +82,7 @@ "discord.js": "npm:@notenoughupdates/discord.js@forum", "fuse.js": "^6.6.2", "gif-to-apng": "^0.1.2", - "googleapis": "^105.0.0", - "got": "^12.3.1", + "googleapis": "^107.0.0", "lodash": "^4.17.21", "mathjs": "^11.0.1", "nanoid": "^4.0.0", @@ -90,34 +92,32 @@ "prettier": "^2.7.1", "pretty-bytes": "^6.0.0", "rimraf": "^3.0.2", - "sequelize": "6.21.3", + "sequelize": "6.21.4", "tinycolor2": "^1.4.2", "typescript": "^4.7.4", "vm2": "^3.9.10" }, "devDependencies": { "@sapphire/snowflake": "^3.2.2", - "@sentry/types": "^7.9.0", - "@types/eslint": "^8.4.5", + "@sentry/types": "^7.11.1", + "@types/eslint": "^8.4.6", "@types/express": "^4.17.13", - "@types/lodash": "^4.14.182", - "@types/node": "^18.6.5", + "@types/lodash": "^4.14.184", + "@types/node": "^18.7.8", "@types/numeral": "^2.0.2", "@types/pg": "^8.6.5", "@types/prettier": "^2.7.0", "@types/rimraf": "^3.0.2", "@types/tinycolor2": "^1.4.3", "@types/validator": "^13.7.5", - "@typescript-eslint/eslint-plugin": "^5.33.0", - "@typescript-eslint/parser": "^5.33.0", - "electron": "^20.0.1", - "eslint": "^8.21.0", + "@typescript-eslint/eslint-plugin": "^5.33.1", + "@typescript-eslint/parser": "^5.33.1", + "eslint": "^8.22.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-deprecation": "^1.3.2", - "eslint-plugin-import": "^2.26.0", "node-fetch": "^3.2.10", "ts-essentials": "^9.2.0", - "vitest": "^0.21.1" + "vitest": "^0.22.1" }, "packageManager": "yarn@3.2.2", "resolutions": { @@ -1,11 +1,13 @@ +console.log('Tanzanite is Starting'); + import { init } from '../lib/utils/BushLogger.js'; // creates proxies on console.log and console.warn // also starts a REPL session init(); +import { config } from '#config'; import { dirname } from 'path'; import { fileURLToPath } from 'url'; -import { default as config } from '../config/options.js'; import { Sentry } from '../lib/common/Sentry.js'; import { BushClient } from '../lib/extensions/discord-akairo/BushClient.js'; @@ -16,7 +18,6 @@ const client = new BushClient(config); if (!isDry) await client.dbPreInit(); await client.init(); if (isDry) { - await client.destroy(); process.exit(0); } else { await client.start(); diff --git a/src/commands/admin/channelPermissions.ts b/src/commands/admin/channelPermissions.ts index 21abd04..0b09e54 100644 --- a/src/commands/admin/channelPermissions.ts +++ b/src/commands/admin/channelPermissions.ts @@ -1,5 +1,6 @@ import { Arg, + BushCommand, ButtonPaginator, clientSendAndPermCheck, emojis, @@ -10,7 +11,6 @@ import { } from '#lib'; import assert from 'assert/strict'; import { ApplicationCommandOptionType, EmbedBuilder, PermissionFlagsBits } from 'discord.js'; -import { BushCommand } from '../../../lib/extensions/discord-akairo/BushCommand.js'; export default class ChannelPermissionsCommand extends BushCommand { public constructor() { diff --git a/src/commands/admin/roleAll.ts b/src/commands/admin/roleAll.ts index a48bd6b..54afc2a 100644 --- a/src/commands/admin/roleAll.ts +++ b/src/commands/admin/roleAll.ts @@ -7,7 +7,6 @@ import { type CommandMessage, type SlashMessage } from '#lib'; - import assert from 'assert/strict'; import { ApplicationCommandOptionType, PermissionFlagsBits, type GuildMember } from 'discord.js'; diff --git a/src/commands/config/config.ts b/src/commands/config/config.ts index f6b8bfa..39a44d1 100644 --- a/src/commands/config/config.ts +++ b/src/commands/config/config.ts @@ -15,7 +15,6 @@ import { type SlashMessage } from '#lib'; import assert from 'assert/strict'; - import { type ArgumentGeneratorReturn, type SlashOption } from 'discord-akairo'; import { ActionRowBuilder, diff --git a/src/commands/config/disable.ts b/src/commands/config/disable.ts index 00dea76..f9abb4a 100644 --- a/src/commands/config/disable.ts +++ b/src/commands/config/disable.ts @@ -11,7 +11,7 @@ import { } from '#lib'; import assert from 'assert/strict'; import { ApplicationCommandOptionType, AutocompleteInteraction, PermissionFlagsBits } from 'discord.js'; -import Fuse from 'fuse.js'; +import { default as Fuse } from 'fuse.js'; assert(Fuse); diff --git a/src/commands/dev/eval.ts b/src/commands/dev/eval.ts index 04db2eb..fdef3ac 100644 --- a/src/commands/dev/eval.ts +++ b/src/commands/dev/eval.ts @@ -45,7 +45,6 @@ import { ReactionCollector, SelectMenuComponent } from 'discord.js'; -import got from 'got'; import path from 'path'; import ts from 'typescript'; import { fileURLToPath } from 'url'; @@ -57,7 +56,7 @@ const { transpile } = ts, /* eslint-enable @typescript-eslint/no-unused-vars */ // prettier-ignore -assertAll(ActivePunishment, BushCommand, Global, Guild, Level, ModLog, Shared, StickyRole, Snowflake_, Canvas, exec, ActionRow, ButtonComponent, ButtonInteraction, Collection, Collector, CommandInteraction, ContextMenuCommandInteraction, DMChannel, Embed, Emoji, InteractionCollector, Message, Attachment, MessageCollector, OAuth2Scopes, PermissionFlagsBits, PermissionsBitField, ReactionCollector, SelectMenuComponent, path, ts, fileURLToPath, promisify, assert, got, transpile, sh, SnowflakeUtil, __dirname); +assertAll(ActivePunishment, BushCommand, Global, Guild, Level, ModLog, Shared, StickyRole, Snowflake_, Canvas, exec, ActionRow, ButtonComponent, ButtonInteraction, Collection, Collector, CommandInteraction, ContextMenuCommandInteraction, DMChannel, Embed, Emoji, InteractionCollector, Message, Attachment, MessageCollector, OAuth2Scopes, PermissionFlagsBits, PermissionsBitField, ReactionCollector, SelectMenuComponent, path, ts, fileURLToPath, promisify, assert, transpile, sh, SnowflakeUtil, __dirname); export default class EvalCommand extends BushCommand { public constructor() { diff --git a/src/commands/dev/reload.ts b/src/commands/dev/reload.ts index 40d53eb..8125015 100644 --- a/src/commands/dev/reload.ts +++ b/src/commands/dev/reload.ts @@ -8,17 +8,6 @@ export default class ReloadCommand extends BushCommand { description: 'Reloads the bot', usage: ['reload'], examples: ['reload'], - // args: [ - // { - // id: 'fast', - // description: 'Whether or not to use esbuild for fast compiling.', - // match: 'flag', - // flag: ['--fast'], - // prompt: 'Would you like to use esbuild for fast compiling?', - // optional: true, - // slashType: ApplicationCommandOptionType.Boolean - // } - // ], ownerOnly: true, typing: true, slash: true, @@ -27,13 +16,13 @@ export default class ReloadCommand extends BushCommand { }); } - public override async exec(message: CommandMessage | SlashMessage /* args: { fast: ArgType<'flag'> } */) { + public override async exec(message: CommandMessage | SlashMessage) { if (!message.author.isOwner()) return await message.util.reply(`${emojis.error} Only my developers can run this command.`); let output: { stdout: string; stderr: string }; try { const s = new Date(); - output = await shell(`yarn build:${/* args.fast ? 'esbuild' : */ 'tsc'}`); + output = await shell(`yarn build`); await Promise.all([ this.client.commandHandler.reloadAll(), this.client.listenerHandler.reloadAll(), diff --git a/src/commands/dev/syncAutomod.ts b/src/commands/dev/syncAutomod.ts index c78e6c0..3dbd0be 100644 --- a/src/commands/dev/syncAutomod.ts +++ b/src/commands/dev/syncAutomod.ts @@ -1,5 +1,4 @@ import { BushCommand, clientSendAndPermCheck, emojis, Shared, type CommandMessage, type SlashMessage } from '#lib'; -import got from 'got'; import typescript from 'typescript'; import { NodeVM } from 'vm2'; @@ -22,10 +21,12 @@ export default class SyncAutomodCommand extends BushCommand { if (!message.author.isOwner() && message.author.id !== '497789163555389441') return await message.util.reply(`${emojis.error} Only a very select few may use this command.`); - const badLinks = (await got.get('https://raw.githubusercontent.com/NotEnoughUpdates/bush-bot/master/src/lib/badlinks.ts')) - .body; - const badWords = (await got.get('https://raw.githubusercontent.com/NotEnoughUpdates/bush-bot/master/src/lib/badwords.ts')) - .body; + const badLinks = await fetch('https://raw.githubusercontent.com/NotEnoughUpdates/bush-bot/master/src/lib/badlinks.ts').then( + (p) => p.text() + ); + const badWords = await fetch('https://raw.githubusercontent.com/NotEnoughUpdates/bush-bot/master/src/lib/badwords.ts').then( + (p) => p.text() + ); const transpiledBadLinks = typescript.transpileModule(badLinks, {}).outputText; const transpiledBadWords = typescript.transpileModule(badWords, {}).outputText; diff --git a/src/commands/index.ts b/src/commands/index.ts index a9db0de..59801c7 100644 --- a/src/commands/index.ts +++ b/src/commands/index.ts @@ -62,7 +62,7 @@ export { default as ServerStatusCommand } from './moulberry-bush/serverStatus.js export { default as ActivityCommand } from './utilities/activity.js'; export { default as CalculatorCommand } from './utilities/calculator.js'; export { default as DecodeCommand } from './utilities/decode.js'; -export { default as HashCommand } from './utilities/hash.js'; +// export { default as HashCommand } from './utilities/hash.js'; export { default as PriceCommand } from './utilities/price.js'; export { default as RemindCommand } from './utilities/remind.js'; export { default as RemindersCommand } from './utilities/reminders.js'; diff --git a/src/commands/info/help.ts b/src/commands/info/help.ts index 62f177e..df18403 100644 --- a/src/commands/info/help.ts +++ b/src/commands/info/help.ts @@ -20,7 +20,7 @@ import { EmbedBuilder, PermissionFlagsBits } from 'discord.js'; -import Fuse from 'fuse.js'; +import { default as Fuse } from 'fuse.js'; import packageDotJSON from '../../../package.json' assert { type: 'json' }; assert(Fuse); diff --git a/src/commands/leveling/level.ts b/src/commands/leveling/level.ts index eda43f2..219ae19 100644 --- a/src/commands/leveling/level.ts +++ b/src/commands/leveling/level.ts @@ -13,11 +13,7 @@ import { SimplifyNumber } from '@notenoughupdates/simplify-number'; import assert from 'assert/strict'; import canvas from 'canvas'; import { ApplicationCommandOptionType, AttachmentBuilder, Guild, PermissionFlagsBits, User } from 'discord.js'; -import got from 'got'; -import { dirname, join } from 'path'; -import { fileURLToPath } from 'url'; assert(canvas); -assert(got); assert(SimplifyNumber); export default class LevelCommand extends BushCommand { @@ -85,10 +81,12 @@ export default class LevelCommand extends BushCommand { const white = '#FFFFFF', gray = '#23272A', highlight = user.hexAccentColor ?? '#5865F2'; - // Load roboto font + + // ! Broken on node v18 - install the font instead + /* // Load roboto font canvas.registerFont(join(dirname(fileURLToPath(import.meta.url)), '..', '..', '..', '..', 'assets', 'Roboto-Regular.ttf'), { family: 'Roboto' - }); + }); */ // Create image canvas const levelCard = canvas.createCanvas(800, 200), ctx = levelCard.getContext('2d'); @@ -97,9 +95,14 @@ export default class LevelCommand extends BushCommand { ctx.fillRect(0, 0, levelCard.width, levelCard.height); // Draw avatar const AVATAR_SIZE = 128; - const avatarBuffer = await got.get(user.displayAvatarURL({ extension: 'png', size: AVATAR_SIZE })).buffer(); const avatarImage = new canvas.Image(); - avatarImage.src = avatarBuffer; + avatarImage.src = user.displayAvatarURL({ extension: 'png', size: AVATAR_SIZE }); + + await new Promise((resolve, reject) => { + avatarImage.onload = () => resolve(undefined); + avatarImage.onerror = (e) => reject(e); + }); + const imageTopCoord = levelCard.height / 2 - AVATAR_SIZE / 2; ctx.drawImage(avatarImage, imageTopCoord, imageTopCoord, AVATAR_SIZE, AVATAR_SIZE); // Write tag of user @@ -123,13 +126,12 @@ export default class LevelCommand extends BushCommand { progressBar.draw(); // Draw level data text ctx.fillStyle = white; - ctx.fillText( - `Level: ${userLevel} XP: ${SimplifyNumber(currentLevelXpProgress)}/${SimplifyNumber( - xpForNextLevel - )} Rank: ${SimplifyNumber(rank.indexOf(rank.find((x) => x.user === user.id)!) + 1)}`, - AVATAR_SIZE + 70, - AVATAR_SIZE - 20 - ); + + const xpTxt = `${SimplifyNumber(currentLevelXpProgress)}/${SimplifyNumber(xpForNextLevel)}`; + + const rankTxt = SimplifyNumber(rank.indexOf(rank.find((x) => x.user === user.id)!) + 1); + + ctx.fillText(`Level: ${userLevel} XP: ${xpTxt} Rank: ${rankTxt}`, AVATAR_SIZE + 70, AVATAR_SIZE - 20); // Return image in buffer form return levelCard.toBuffer(); } diff --git a/src/commands/moderation/unmute.ts b/src/commands/moderation/unmute.ts index 620f499..f1e74ab 100644 --- a/src/commands/moderation/unmute.ts +++ b/src/commands/moderation/unmute.ts @@ -1,19 +1,16 @@ import { AllowedMentions, clientSendAndPermCheck, - emojis, - format, + formatUnmuteResponse, Moderation, - unmuteResponse, userGuildPermCheck, type ArgType, type CommandMessage, type OptArgType, - type SlashMessage, - type UnmuteResponse + type SlashMessage } from '#lib'; import assert from 'assert/strict'; -import { ApplicationCommandOptionType, PermissionFlagsBits, type GuildMember } from 'discord.js'; +import { ApplicationCommandOptionType, PermissionFlagsBits } from 'discord.js'; import { BushCommand } from '../../../lib/extensions/discord-akairo/BushCommand.js'; export default class UnmuteCommand extends BushCommand { @@ -83,35 +80,8 @@ export default class UnmuteCommand extends BushCommand { }); return await message.util.reply({ - content: UnmuteCommand.formatCode(member.client.utils.prefix(message), member, responseCode), + content: formatUnmuteResponse(member.client.utils.prefix(message), member, responseCode), allowedMentions: AllowedMentions.none() }); } - - public static formatCode(prefix: string, member: GuildMember, code: UnmuteResponse): string { - const error = emojis.error; - const victim = format.input(member.user.tag); - switch (code) { - case unmuteResponse.MISSING_PERMISSIONS: - return `${error} Could not unmute ${victim} because I am missing the **Manage Roles** permission.`; - case unmuteResponse.NO_MUTE_ROLE: - return `${error} Could not unmute ${victim}, you must set a mute role with \`${prefix}config muteRole\`.`; - case unmuteResponse.MUTE_ROLE_INVALID: - return `${error} Could not unmute ${victim} because the current mute role no longer exists. Please set a new mute role with \`${prefix}config muteRole\`.`; - case unmuteResponse.MUTE_ROLE_NOT_MANAGEABLE: - return `${error} Could not unmute ${victim} because I cannot assign the current mute role, either change the role's position or set a new mute role with \`${prefix}config muteRole\`.`; - case unmuteResponse.ACTION_ERROR: - return `${error} Could not unmute ${victim}, there was an error removing their mute role.`; - case unmuteResponse.MODLOG_ERROR: - return `${error} While muting ${victim}, there was an error creating a modlog entry, please report this to my developers.`; - case unmuteResponse.PUNISHMENT_ENTRY_REMOVE_ERROR: - return `${error} While muting ${victim}, there was an error removing their mute entry, please report this to my developers.`; - case unmuteResponse.DM_ERROR: - return `${emojis.warn} unmuted ${victim} however I could not send them a dm.`; - case unmuteResponse.SUCCESS: - return `${emojis.success} Successfully unmuted ${victim}.`; - default: - return `${emojis.error} An error occurred: ${format.input(code)}}`; - } - } } diff --git a/src/commands/moulberry-bush/capePermissions.ts b/src/commands/moulberry-bush/capePermissions.ts index 3ad9602..793ac59 100644 --- a/src/commands/moulberry-bush/capePermissions.ts +++ b/src/commands/moulberry-bush/capePermissions.ts @@ -11,7 +11,6 @@ import { type SlashMessage } from '#lib'; import { ApplicationCommandOptionType, EmbedBuilder, PermissionFlagsBits } from 'discord.js'; -import got from 'got'; export default class CapePermissionsCommand extends BushCommand { public constructor() { @@ -50,7 +49,7 @@ export default class CapePermissionsCommand extends BushCommand { } try { - capePerms = await got.get('http://moulberry.codes/permscapes.json').json(); + capePerms = await fetch('http://moulberry.codes/permscapes.json').then((p) => (p.ok ? p.json() : null)); } catch (error) { capePerms = null; } diff --git a/src/commands/moulberry-bush/capes.ts b/src/commands/moulberry-bush/capes.ts index 8693dba..6ffc540 100644 --- a/src/commands/moulberry-bush/capes.ts +++ b/src/commands/moulberry-bush/capes.ts @@ -14,11 +14,9 @@ import { } from '#lib'; import assert from 'assert/strict'; import { ApplicationCommandOptionType, PermissionFlagsBits, type APIEmbed, type AutocompleteInteraction } from 'discord.js'; -import Fuse from 'fuse.js'; -import got from 'got'; +import { default as Fuse } from 'fuse.js'; assert(Fuse); -assert(got); export default class CapesCommand extends BushCommand { public constructor() { @@ -47,9 +45,9 @@ export default class CapesCommand extends BushCommand { } public override async exec(message: CommandMessage | SlashMessage, args: { cape: OptArgType<'string'> }) { - const { tree: neuFileTree }: GithubTreeApi = await got - .get('https://api.github.com/repos/NotEnoughUpdates/NotEnoughUpdates/git/trees/master?recursive=1') - .json(); + const { tree: neuFileTree }: GithubTreeApi = await fetch( + 'https://api.github.com/repos/NotEnoughUpdates/NotEnoughUpdates/git/trees/master?recursive=1' + ).then((p) => (p.ok ? p.json() : { tree: [] })); const rawCapes = neuFileTree .map((f) => ({ match: f.path.match(/src\/main\/resources\/assets\/notenoughupdates\/capes\/(?<name>\w+)_preview\.png/), diff --git a/src/commands/moulberry-bush/serverStatus.ts b/src/commands/moulberry-bush/serverStatus.ts index 1237b3f..cde3f04 100644 --- a/src/commands/moulberry-bush/serverStatus.ts +++ b/src/commands/moulberry-bush/serverStatus.ts @@ -1,9 +1,5 @@ import { BushCommand, clientSendAndPermCheck, colors, emojis, type CommandMessage } from '#lib'; -import assert from 'assert/strict'; import { EmbedBuilder, PermissionFlagsBits } from 'discord.js'; -import got from 'got'; - -assert(got); export default class ServerStatusCommand extends BushCommand { public constructor() { @@ -28,8 +24,8 @@ export default class ServerStatusCommand extends BushCommand { await message.util.reply({ embeds: [msgEmbed] }); let main; try { - await got.get('https://moulberry.codes/lowestbin.json').json(); - main = emojis.success; + const res = await fetch('https://moulberry.codes/lowestbin.json').then((p) => (p.ok ? p.json() : null)); + main = res ? emojis.success : emojis.error; } catch (e) { main = emojis.error; } diff --git a/src/commands/utilities/hash.ts b/src/commands/utilities/hash.ts index 6817f04..251d5e6 100644 --- a/src/commands/utilities/hash.ts +++ b/src/commands/utilities/hash.ts @@ -1,44 +1,44 @@ -import { BushCommand, clientSendAndPermCheck, type CommandMessage } from '#lib'; -import assert from 'assert/strict'; -import crypto from 'crypto'; -import { ApplicationCommandOptionType } from 'discord.js'; -import got from 'got'; +// import { BushCommand, clientSendAndPermCheck, type CommandMessage } from '#lib'; +// import assert from 'assert/strict'; +// import crypto from 'crypto'; +// import { ApplicationCommandOptionType } from 'discord.js'; +// import got from 'got'; -assert(crypto); -assert(got); +// assert(crypto); +// assert(got); -export default class HashCommand extends BushCommand { - public constructor() { - super('hash', { - aliases: ['hash'], - category: 'utilities', - description: 'Gets the file hash of the given discord link', - usage: ['hash <fileUrl>'], - examples: ['hash https://cdn.discordapp.com/emojis/782630946435366942.png?v=1'], //nice - args: [ - { - id: 'url', - description: 'The url of the discord link to find the hash of.', - type: 'url', - prompt: 'What url would you like to find the hash of?', - retry: '{error} Enter a valid url.', - slashType: ApplicationCommandOptionType.String - } - ], - clientPermissions: (m) => clientSendAndPermCheck(m), - userPermissions: [] - }); - } +// export default class HashCommand extends BushCommand { +// public constructor() { +// super('hash', { +// aliases: ['hash'], +// category: 'utilities', +// description: 'Gets the file hash of the given discord link', +// usage: ['hash <fileUrl>'], +// examples: ['hash https://cdn.discordapp.com/emojis/782630946435366942.png?v=1'], //nice +// args: [ +// { +// id: 'url', +// description: 'The url of the discord link to find the hash of.', +// type: 'url', +// prompt: 'What url would you like to find the hash of?', +// retry: '{error} Enter a valid url.', +// slashType: ApplicationCommandOptionType.String +// } +// ], +// clientPermissions: (m) => clientSendAndPermCheck(m), +// userPermissions: [] +// }); +// } - public override async exec(message: CommandMessage, { url }: { url: string }) { - try { - const req = await got.get(url); - const rawHash = crypto.createHash('md5'); - rawHash.update(req.rawBody.toString('binary')); - const hash = rawHash.digest('hex'); - await message.util.reply(`\`${hash}\``); - } catch { - await message.util.reply('Unable to calculate hash.'); - } - } -} +// public override async exec(message: CommandMessage, { url }: { url: string }) { +// try { +// const req = await got.get(url); +// const rawHash = crypto.createHash('md5'); +// rawHash.update(req.rawBody.toString('binary')); +// const hash = rawHash.digest('hex'); +// await message.util.reply(`\`${hash}\``); +// } catch { +// await message.util.reply('Unable to calculate hash.'); +// } +// } +// } diff --git a/src/commands/utilities/price.ts b/src/commands/utilities/price.ts index 8a3b5c6..bfe1f10 100644 --- a/src/commands/utilities/price.ts +++ b/src/commands/utilities/price.ts @@ -1,11 +1,9 @@ import { ArgType, BushCommand, clientSendAndPermCheck, colors, emojis, format, oxford, type CommandMessage } from '#lib'; import assert from 'assert/strict'; import { ApplicationCommandOptionType, AutocompleteInteraction, EmbedBuilder, PermissionFlagsBits } from 'discord.js'; -import Fuse from 'fuse.js'; -import got from 'got'; +import { default as Fuse } from 'fuse.js'; assert(Fuse); -assert(got); export default class PriceCommand extends BushCommand { public static cachedItemList: string[] = []; @@ -57,9 +55,8 @@ export default class PriceCommand extends BushCommand { const [bazaar, currentLowestBIN, averageLowestBIN, auctionAverages] = (await Promise.all( PriceCommand.urls.map(({ url, error }) => - got - .get(url) - .json() + fetch(url) + .then((p) => (p.ok ? p.json() : undefined)) .catch(() => (errors.push(error), undefined)) ) )) as [Bazaar?, LowestBIN?, LowestBIN?, AuctionAverages?]; diff --git a/src/context-menu-commands/user/modlog.ts b/src/context-menu-commands/user/modlog.ts index 91b1b62..c78396e 100644 --- a/src/context-menu-commands/user/modlog.ts +++ b/src/context-menu-commands/user/modlog.ts @@ -1,7 +1,7 @@ +import { ModlogCommand } from '#commands'; import { emojis, SlashMessage } from '#lib'; import { CommandUtil, ContextMenuCommand } from 'discord-akairo'; import { ApplicationCommandType, type ContextMenuCommandInteraction } from 'discord.js'; -import ModlogCommand from '../../commands/moderation/modlog.js'; export default class ModlogContextMenuCommand extends ContextMenuCommand { public constructor() { diff --git a/src/context-menu-commands/user/userInfo.ts b/src/context-menu-commands/user/userInfo.ts index 0d19cce..6d7f3b6 100644 --- a/src/context-menu-commands/user/userInfo.ts +++ b/src/context-menu-commands/user/userInfo.ts @@ -1,7 +1,7 @@ +import { UserInfoCommand } from '#commands'; import { format } from '#lib'; import { ContextMenuCommand } from 'discord-akairo'; import { ApplicationCommandType, type ContextMenuCommandInteraction, type Guild } from 'discord.js'; -import UserInfoCommand from '../../commands/info/userInfo.js'; export default class UserInfoContextMenuCommand extends ContextMenuCommand { public constructor() { diff --git a/src/listeners/commands/commandError.ts b/src/listeners/commands/commandError.ts index bfa857c..7e14bc3 100644 --- a/src/listeners/commands/commandError.ts +++ b/src/listeners/commands/commandError.ts @@ -1,8 +1,4 @@ -import { capitalize, colors, format, formatError, SlashMessage, type BushCommandHandlerEvents } from '#lib'; -import { type AkairoMessage, type Command } from 'discord-akairo'; -import { ChannelType, Client, EmbedBuilder, escapeInlineCode, GuildTextBasedChannel, type Message } from 'discord.js'; -import { BushListener } from '../../../lib/extensions/discord-akairo/BushListener.js'; -import { bold } from '../../../lib/utils/Format.js'; +import { BushListener, handleCommandError, type BushCommandHandlerEvents } from '#lib'; export default class CommandErrorListener extends BushListener { public constructor() { @@ -14,239 +10,6 @@ export default class CommandErrorListener extends BushListener { } public exec(...[error, message, command]: BushCommandHandlerEvents['error']) { - return CommandErrorListener.handleError(this.client, error, message, command); - } - - public static async handleError( - client: Client, - ...[error, message, _command]: BushCommandHandlerEvents['error'] | BushCommandHandlerEvents['slashError'] - ) { - try { - const isSlash = message.util?.isSlash; - const errorNum = Math.floor(Math.random() * 6969696969) + 69; // hehe funny number - const channel = - message.channel?.type === ChannelType.DM - ? message.channel.recipient?.tag - : (<GuildTextBasedChannel>message.channel)?.name; - const command = _command ?? message.util?.parsed?.command; - - client.sentry.captureException(error, { - level: 'error', - user: { id: message.author.id, username: message.author.tag }, - extra: { - 'command.name': command?.id, - 'message.id': message.id, - 'message.type': message.util ? (message.util.isSlash ? 'slash' : 'normal') : 'unknown', - 'message.parsed.content': message.util?.parsed?.content, - 'channel.id': - (message.channel?.type === ChannelType.DM ? message.channel.recipient?.id : message.channel?.id) ?? '¯\\_(ツ)_/¯', - 'channel.name': channel, - 'guild.id': message.guild?.id ?? '¯\\_(ツ)_/¯', - 'guild.name': message.guild?.name ?? '¯\\_(ツ)_/¯', - 'environment': client.config.environment - } - }); - - void client.console.error( - `${isSlash ? 'slashC' : 'c'}ommandError`, - `an error occurred with the <<${command}>> ${isSlash ? 'slash ' : ''}command in <<${channel}>> triggered by <<${ - message?.author?.tag - }>>:\n${formatError(error, true)})}`, - false - ); - - const _haste = CommandErrorListener.getErrorHaste(client, error); - const _stack = CommandErrorListener.getErrorStack(client, error); - const [haste, stack] = await Promise.all([_haste, _stack]); - const options = { message, error, isSlash, errorNum, command, channel, haste, stack }; - - const errorEmbed = CommandErrorListener._generateErrorEmbed({ - ...options, - type: 'command-log' - }); - - void client.logger.channelError({ embeds: errorEmbed }); - - if (message) { - if (!client.config.owners.includes(message.author.id)) { - const errorUserEmbed = CommandErrorListener._generateErrorEmbed({ - ...options, - type: 'command-user' - }); - void message.util?.send({ embeds: errorUserEmbed }).catch(() => null); - } else { - const errorDevEmbed = CommandErrorListener._generateErrorEmbed({ - ...options, - type: 'command-dev' - }); - - void message.util?.send({ embeds: errorDevEmbed }).catch(() => null); - } - } - } catch (e) { - throw new IFuckedUpError('An error occurred while handling a command error.', error, e); - } - } - - public static async generateErrorEmbed( - client: Client, - options: - | { - message: Message | AkairoMessage; - error: Error | any; - isSlash?: boolean; - type: 'command-log' | 'command-dev' | 'command-user'; - errorNum: number; - command?: Command; - channel?: string; - } - | { error: Error | any; type: 'uncaughtException' | 'unhandledRejection'; context?: string } - ): Promise<EmbedBuilder[]> { - const _haste = CommandErrorListener.getErrorHaste(client, options.error); - const _stack = CommandErrorListener.getErrorStack(client, options.error); - const [haste, stack] = await Promise.all([_haste, _stack]); - - return CommandErrorListener._generateErrorEmbed({ ...options, haste, stack }); - } - - private static _generateErrorEmbed( - options: - | { - message: Message | SlashMessage; - error: Error | any; - isSlash?: boolean; - type: 'command-log' | 'command-dev' | 'command-user'; - errorNum: number; - command?: Command; - channel?: string; - haste: string[]; - stack: string; - } - | { - error: Error | any; - type: 'uncaughtException' | 'unhandledRejection'; - context?: string; - haste: string[]; - stack: string; - } - ): EmbedBuilder[] { - const embeds = [new EmbedBuilder().setColor(colors.error)]; - if (options.type === 'command-user') { - embeds[0] - .setTitle('An Error Occurred') - .setDescription( - `Oh no! ${ - options.command - ? `While running the ${options.isSlash ? 'slash ' : ''}command ${format.input(options.command.id)}, a` - : 'A' - }n error occurred. Please give the developers code ${format.input(`${options.errorNum}`)}.` - ) - .setTimestamp(); - return embeds; - } - const description: string[] = []; - - if (options.type === 'command-log') { - description.push( - `**User:** ${options.message.author} (${options.message.author.tag})`, - `**Command:** ${options.command ?? 'N/A'}`, - `**Channel:** <#${options.message.channel?.id}> (${options.channel})`, - `**Message:** [link](${options.message.url})` - ); - if (options.message?.util?.parsed?.content) description.push(`**Command Content:** ${options.message.util.parsed.content}`); - } - - description.push(...options.haste); - - embeds.push(new EmbedBuilder().setColor(colors.error).setTimestamp().setDescription(options.stack.substring(0, 4000))); - if (description.length) embeds[0].setDescription(description.join('\n').substring(0, 4000)); - - if (options.type === 'command-dev' || options.type === 'command-log') - embeds[0].setTitle(`${options.isSlash ? 'Slash ' : ''}CommandError #${format.input(`${options.errorNum}`)}`); - else if (options.type === 'uncaughtException') - embeds[0].setTitle(`${options.context ? `[${bold(options.context)}] An Error Occurred` : 'Uncaught Exception'}`); - else if (options.type === 'unhandledRejection') - embeds[0].setTitle(`${options.context ? `[${bold(options.context)}] An Error Occurred` : 'Unhandled Promise Rejection'}`); - return embeds; - } - - public static async getErrorHaste(client: Client, error: Error | any): Promise<string[]> { - const inspectOptions = { - showHidden: false, - depth: 9, - colors: false, - customInspect: true, - showProxy: false, - maxArrayLength: Infinity, - maxStringLength: Infinity, - breakLength: 80, - compact: 3, - sorted: false, - getters: true - }; - - const ret: string[] = []; - const promises: Promise<{ - url?: string | undefined; - error?: 'content too long' | 'substr' | 'unable to post' | undefined; - }>[] = []; - const pair: { - [key: string]: { - url?: string | undefined; - error?: 'content too long' | 'substr' | 'unable to post' | undefined; - }; - } = {}; - - for (const element in error) { - if (['stack', 'name', 'message'].includes(element)) continue; - else if (typeof (error as any)[element] === 'object') { - promises.push(client.utils.inspectCleanRedactHaste((error as any)[element], inspectOptions)); - } - } - - const links = await Promise.all(promises); - - let index = 0; - for (const element in error) { - if (['stack', 'name', 'message'].includes(element)) continue; - else if (typeof (error as any)[element] === 'object') { - pair[element] = links[index]; - index++; - } - } - - for (const element in error) { - if (['stack', 'name', 'message'].includes(element)) continue; - else { - ret.push( - `**Error ${capitalize(element)}:** ${ - typeof error[element] === 'object' - ? `${ - pair[element].url - ? `[haste](${pair[element].url})${pair[element].error ? ` - ${pair[element].error}` : ''}` - : pair[element].error - }` - : `\`${escapeInlineCode(client.utils.inspectAndRedact((error as any)[element], inspectOptions))}\`` - }` - ); - } - } - return ret; - } - - public static async getErrorStack(client: Client, error: Error | any): Promise<string> { - return await client.utils.inspectCleanRedactCodeblock(error, 'js', { colors: false }, 4000); - } -} - -export class IFuckedUpError extends Error { - public declare original: Error | any; - public declare newError: Error | any; - - public constructor(message: string, original?: Error | any, newError?: Error | any) { - super(message); - this.name = 'IFuckedUpError'; - this.original = original; - this.newError = newError; + return handleCommandError(this.client, error, message, command); } } diff --git a/src/listeners/commands/slashCommandError.ts b/src/listeners/commands/slashCommandError.ts index 7c0d52c..aca7c5b 100644 --- a/src/listeners/commands/slashCommandError.ts +++ b/src/listeners/commands/slashCommandError.ts @@ -1,5 +1,4 @@ -import { BushListener, type BushCommandHandlerEvents } from '#lib'; -import CommandErrorListener from './commandError.js'; +import { BushListener, handleCommandError, type BushCommandHandlerEvents } from '#lib'; export default class SlashCommandErrorListener extends BushListener { public constructor() { @@ -11,6 +10,6 @@ export default class SlashCommandErrorListener extends BushListener { } public async exec(...[error, message, command]: BushCommandHandlerEvents['slashError']) { - return await CommandErrorListener.handleError(this.client, error, message, command); + return await handleCommandError(this.client, error, message, command); } } diff --git a/src/listeners/contextCommands/contextCommandError.ts b/src/listeners/contextCommands/contextCommandError.ts index 4b1ea52..6951ce3 100644 --- a/src/listeners/contextCommands/contextCommandError.ts +++ b/src/listeners/contextCommands/contextCommandError.ts @@ -1,7 +1,6 @@ -import { BushListener, colors, format, formatError } from '#lib'; +import { BushListener, colors, format, formatError, getErrorHaste, getErrorStack, IFuckedUpError } from '#lib'; import { type ContextMenuCommand, type ContextMenuCommandHandlerEvents } from 'discord-akairo'; import { ChannelType, Client, ContextMenuCommandInteraction, EmbedBuilder, GuildTextBasedChannel } from 'discord.js'; -import CommandErrorListener, { IFuckedUpError } from '../commands/commandError.js'; export default class ContextCommandErrorListener extends BushListener { public constructor() { @@ -49,8 +48,8 @@ export default class ContextCommandErrorListener extends BushListener { false ); - const _haste = CommandErrorListener.getErrorHaste(client, error); - const _stack = CommandErrorListener.getErrorStack(client, error); + const _haste = getErrorHaste(client, error); + const _stack = getErrorStack(client, error); const [haste, stack] = await Promise.all([_haste, _stack]); const options = { interaction, error, errorNum, command, channel, haste, stack }; diff --git a/src/listeners/member-custom/bushBan.ts b/src/listeners/member-custom/bushBan.ts index 525184c..2cde91d 100644 --- a/src/listeners/member-custom/bushBan.ts +++ b/src/listeners/member-custom/bushBan.ts @@ -24,7 +24,7 @@ export default class BushBanListener extends BushListener { { name: '**Action**', value: `${duration ? 'Temp Ban' : 'Perm Ban'}` }, { name: '**User**', value: `${user} (${user.tag})` }, { name: '**Moderator**', value: `${moderator} (${moderator.tag})` }, - { name: '**Reason**', value: `${reason ? reason : '[No Reason Provided]'}` } + { name: '**Reason**', value: `${reason ? reason.substring(0, 1024) : '[No Reason Provided]'}` } ); if (duration) logEmbed.addFields({ name: '**Duration**', value: humanizeDuration(duration) }); if (dmSuccess === false) logEmbed.addFields({ name: '**Additional Info**', value: 'Could not dm user.' }); diff --git a/src/listeners/message/blacklistedFile.ts b/src/listeners/message/blacklistedFile.ts index 3d66f38..f3e082c 100644 --- a/src/listeners/message/blacklistedFile.ts +++ b/src/listeners/message/blacklistedFile.ts @@ -1,154 +1,154 @@ -import { BushListener, type BushClientEvents } from '#lib'; -import * as crypto from 'crypto'; -import { ChannelType } from 'discord.js'; -import got from 'got'; +// import { BushListener, type BushClientEvents } from '#lib'; +// import * as crypto from 'crypto'; +// import { ChannelType } from 'discord.js'; +// import got from 'got'; -export default class BlacklistedFileListener extends BushListener { - #blacklistedFiles: { hash: string[]; name: string; description: string }[] = [ - { - hash: ['a0f5e30426234bc9d09306ffc9474422'], - name: 'Play twice audio', - description: 'weird audio files' - }, - { - hash: ['43e55abbcea67d9e6d7abfff944a8d0b'], - name: 'Flashy loud jumpscare', - description: 'flashy, loud gifs' - }, - { - hash: [ - '7a0831239e8c8368e96fb4cacd61b5f2', - '3bdb44bf3702f15d118f04fa63b927a9', - 'b6e45619a68c0e20749edb2412590b15', - 'bb8a27047518a8a7e420509af0e9e0ed', - 'f8076cd51e1ddab4ceded26a764af160', - '1757f0442b5e337bba0340f7b116e6f7', - 'f59185531f0dfa9bdd323b86f796c3bd', - '2825d3d82af65de210e638911e49b3a2', - '5256c3c18b367552e55e463a60af7760' - ], - name: 'Discord crash video/gif', - description: 'media that crashes discord' - }, - { - hash: ['1fd6b3f255946236fd55d3e4bef01c5f', '157d374ec41adeef9601fd87e23f4bf5'], - name: 'Repost lobster video', - description: 'images encouraging spam' - }, - { - hash: ['10ad124fc47cd9b7de2ec629bc945bf2'], - name: 'Jarvis message top user troll thingy', - description: 'gifs encouraging spam' - }, - { - hash: ['312cda77d3e1f5fa00f482aed3b36f6f'], - name: 'Discord token stealer', - description: 'discord token stealers' - }, - { - hash: ['f37f772246db9d690dee0f581682dfb7'], - name: 'Weird nsfw dog vid', - description: 'weird nsfw videos' - }, - { - hash: ['5a5bfdf02a0224d3468499d099ec4eee'], - name: 'Virus (or at least flags antiviruses)', - description: 'viruses' - } - ]; +// export default class BlacklistedFileListener extends BushListener { +// #blacklistedFiles: { hash: string[]; name: string; description: string }[] = [ +// { +// hash: ['a0f5e30426234bc9d09306ffc9474422'], +// name: 'Play twice audio', +// description: 'weird audio files' +// }, +// { +// hash: ['43e55abbcea67d9e6d7abfff944a8d0b'], +// name: 'Flashy loud jumpscare', +// description: 'flashy, loud gifs' +// }, +// { +// hash: [ +// '7a0831239e8c8368e96fb4cacd61b5f2', +// '3bdb44bf3702f15d118f04fa63b927a9', +// 'b6e45619a68c0e20749edb2412590b15', +// 'bb8a27047518a8a7e420509af0e9e0ed', +// 'f8076cd51e1ddab4ceded26a764af160', +// '1757f0442b5e337bba0340f7b116e6f7', +// 'f59185531f0dfa9bdd323b86f796c3bd', +// '2825d3d82af65de210e638911e49b3a2', +// '5256c3c18b367552e55e463a60af7760' +// ], +// name: 'Discord crash video/gif', +// description: 'media that crashes discord' +// }, +// { +// hash: ['1fd6b3f255946236fd55d3e4bef01c5f', '157d374ec41adeef9601fd87e23f4bf5'], +// name: 'Repost lobster video', +// description: 'images encouraging spam' +// }, +// { +// hash: ['10ad124fc47cd9b7de2ec629bc945bf2'], +// name: 'Jarvis message top user troll thingy', +// description: 'gifs encouraging spam' +// }, +// { +// hash: ['312cda77d3e1f5fa00f482aed3b36f6f'], +// name: 'Discord token stealer', +// description: 'discord token stealers' +// }, +// { +// hash: ['f37f772246db9d690dee0f581682dfb7'], +// name: 'Weird nsfw dog vid', +// description: 'weird nsfw videos' +// }, +// { +// hash: ['5a5bfdf02a0224d3468499d099ec4eee'], +// name: 'Virus (or at least flags antiviruses)', +// description: 'viruses' +// } +// ]; - public constructor() { - super('blacklistedFile', { - emitter: 'client', - event: 'messageCreate', - category: 'message' - }); - } +// public constructor() { +// super('blacklistedFile', { +// emitter: 'client', +// event: 'messageCreate', +// category: 'message' +// }); +// } - public async exec(...[message]: BushClientEvents['messageCreate']) { - if (!message.guild || !(await message.guild.hasFeature('blacklistedFile'))) return; - // const embedAttachments = message.embeds.filter((e) => ['image', 'video', 'gifv'].includes(e.type)); - const foundEmojis = [...message.content.matchAll(/<(?<animated>a?):\w+:(?<id>\d+)>/g)]; - if (message.attachments.size + /* embedAttachments.length + */ foundEmojis.length < 1) return; - const foundFiles = [] as { - name: string; - hash: string[]; - description: string; - }[]; - for (const attachment of message.attachments) { - try { - const req = await got.get(attachment[1].proxyURL); - const rawHash = crypto.createHash('md5'); - rawHash.update(req.rawBody.toString('binary')); - const hash = rawHash.digest('hex'); - const blacklistData = this.#blacklistedFiles.find((h) => h.hash.some((h) => h === hash)); - if (blacklistData !== undefined) { - foundFiles.push(blacklistData); - } - } catch { - continue; - } - } - /* for (const attachment of embedAttachments) { - try { - const req = await got.get(attachment.url!); - const rawHash = crypto.createHash('md5'); - rawHash.update(req.rawBody.toString('binary')); - const hash = rawHash.digest('hex'); - const blacklistData = this.#blacklistedFiles.find((h) => h.hash.some((h) => h === hash)); - if (blacklistData !== undefined) { - foundFiles.push(blacklistData); - } - } catch { - continue; - } - } */ - for (const attachment of foundEmojis) { - try { - const req = await got.get( - `https://cdn.discordapp.com/emojis/${attachment.groups?.id}.${attachment.groups?.animated === 'a' ? 'gif' : 'png'}` - ); - const rawHash = crypto.createHash('md5'); - rawHash.update(req.rawBody.toString('binary')); - const hash = rawHash.digest('hex'); - const blacklistData = this.#blacklistedFiles.find((h) => h.hash.some((h) => h === hash)); - if (blacklistData !== undefined) { - foundFiles.push(blacklistData); - } - } catch { - continue; - } - } - if (foundFiles.length > 0) { - try { - for (let i = 0; i < foundFiles.length; i++) { - if (foundFiles[i].name === 'Discord crash video' && !this.client.ownerID.includes(message.author.id)) { - await message.member?.roles.add('748912426581229690'); - } - } - await message.delete(); +// public async exec(...[message]: BushClientEvents['messageCreate']) { +// if (!message.guild || !(await message.guild.hasFeature('blacklistedFile'))) return; +// // const embedAttachments = message.embeds.filter((e) => ['image', 'video', 'gifv'].includes(e.type)); +// const foundEmojis = [...message.content.matchAll(/<(?<animated>a?):\w+:(?<id>\d+)>/g)]; +// if (message.attachments.size + /* embedAttachments.length + */ foundEmojis.length < 1) return; +// const foundFiles = [] as { +// name: string; +// hash: string[]; +// description: string; +// }[]; +// for (const attachment of message.attachments) { +// try { +// const req = await got.get(attachment[1].proxyURL); +// const rawHash = crypto.createHash('md5'); +// rawHash.update(req.rawBody.toString('binary')); +// const hash = rawHash.digest('hex'); +// const blacklistData = this.#blacklistedFiles.find((h) => h.hash.some((h) => h === hash)); +// if (blacklistData !== undefined) { +// foundFiles.push(blacklistData); +// } +// } catch { +// continue; +// } +// } +// /* for (const attachment of embedAttachments) { +// try { +// const req = await got.get(attachment.url!); +// const rawHash = crypto.createHash('md5'); +// rawHash.update(req.rawBody.toString('binary')); +// const hash = rawHash.digest('hex'); +// const blacklistData = this.#blacklistedFiles.find((h) => h.hash.some((h) => h === hash)); +// if (blacklistData !== undefined) { +// foundFiles.push(blacklistData); +// } +// } catch { +// continue; +// } +// } */ +// for (const attachment of foundEmojis) { +// try { +// const req = await got.get( +// `https://cdn.discordapp.com/emojis/${attachment.groups?.id}.${attachment.groups?.animated === 'a' ? 'gif' : 'png'}` +// ); +// const rawHash = crypto.createHash('md5'); +// rawHash.update(req.rawBody.toString('binary')); +// const hash = rawHash.digest('hex'); +// const blacklistData = this.#blacklistedFiles.find((h) => h.hash.some((h) => h === hash)); +// if (blacklistData !== undefined) { +// foundFiles.push(blacklistData); +// } +// } catch { +// continue; +// } +// } +// if (foundFiles.length > 0) { +// try { +// for (let i = 0; i < foundFiles.length; i++) { +// if (foundFiles[i].name === 'Discord crash video' && !this.client.ownerID.includes(message.author.id)) { +// await message.member?.roles.add('748912426581229690'); +// } +// } +// await message.delete(); - await message.util!.send( - `<@!${message.author.id}>, please do not send ${foundFiles.map((f) => f.description).join(' or ')}.` - ); - if (message.channel.type === ChannelType.DM) return; - void this.client.console.info( - 'blacklistedFile', - `Deleted <<${foundFiles.map((f) => f.description).join(' and ')}>> sent by <<${message.author.tag}>> in ${ - message.channel.name - }.` - ); - } catch (e) { - void message.util!.send( - `<@!${message.author.id}>, please do not send ${foundFiles.map((f) => f.description).join(' or ')}.` - ); - void this.client.console.warn( - 'blacklistedFile', - `Failed to delete <<${foundFiles.map((f) => f.description).join(' and ')}>> sent by <<${message.author.tag}>> in <<${ - message.channel.type === ChannelType.DM ? `${message.channel.recipient?.tag}'s DMs` : message.channel.name - }>>.` - ); - } - } - } -} +// await message.util!.send( +// `<@!${message.author.id}>, please do not send ${foundFiles.map((f) => f.description).join(' or ')}.` +// ); +// if (message.channel.type === ChannelType.DM) return; +// void this.client.console.info( +// 'blacklistedFile', +// `Deleted <<${foundFiles.map((f) => f.description).join(' and ')}>> sent by <<${message.author.tag}>> in ${ +// message.channel.name +// }.` +// ); +// } catch (e) { +// void message.util!.send( +// `<@!${message.author.id}>, please do not send ${foundFiles.map((f) => f.description).join(' or ')}.` +// ); +// void this.client.console.warn( +// 'blacklistedFile', +// `Failed to delete <<${foundFiles.map((f) => f.description).join(' and ')}>> sent by <<${message.author.tag}>> in <<${ +// message.channel.type === ChannelType.DM ? `${message.channel.recipient?.tag}'s DMs` : message.channel.name +// }>>.` +// ); +// } +// } +// } +// } diff --git a/src/listeners/other/promiseRejection.ts b/src/listeners/other/promiseRejection.ts index ab67ad4..4ff6c0e 100644 --- a/src/listeners/other/promiseRejection.ts +++ b/src/listeners/other/promiseRejection.ts @@ -1,5 +1,4 @@ -import { BushListener, formatError } from '#lib'; -import CommandErrorListener from '../commands/commandError.js'; +import { BushListener, formatError, generateErrorEmbed } from '#lib'; export default class PromiseRejectionListener extends BushListener { public constructor() { @@ -27,7 +26,7 @@ export default class PromiseRejectionListener extends BushListener { ); if (!error.message.includes('reason: getaddrinfo ENOTFOUND canary.discord.com')) void this.client.console.channelError({ - embeds: await CommandErrorListener.generateErrorEmbed(this.client, { type: 'unhandledRejection', error: error }) + embeds: await generateErrorEmbed(this.client, { type: 'unhandledRejection', error: error }) }); } } diff --git a/src/listeners/other/uncaughtException.ts b/src/listeners/other/uncaughtException.ts index e06a3b8..c976a22 100644 --- a/src/listeners/other/uncaughtException.ts +++ b/src/listeners/other/uncaughtException.ts @@ -1,5 +1,4 @@ -import { BushListener, formatError } from '#lib'; -import CommandErrorListener from '../commands/commandError.js'; +import { BushListener, formatError, generateErrorEmbed } from '#lib'; export default class UncaughtExceptionListener extends BushListener { public constructor() { @@ -21,7 +20,7 @@ export default class UncaughtExceptionListener extends BushListener { void this.client.console.error('uncaughtException', `An uncaught exception occurred:\n${formatError(error, true)}`, false); void this.client.console.channelError({ - embeds: await CommandErrorListener.generateErrorEmbed(this.client, { type: 'uncaughtException', error: error }) + embeds: await generateErrorEmbed(this.client, { type: 'uncaughtException', error: error }) }); } } diff --git a/src/listeners/other/warning.ts b/src/listeners/other/warning.ts index b427e4c..5cf9764 100644 --- a/src/listeners/other/warning.ts +++ b/src/listeners/other/warning.ts @@ -1,5 +1,4 @@ -import { BushListener, colors, formatError } from '#lib'; -import CommandErrorListener from '../commands/commandError.js'; +import { BushListener, colors, formatError, generateErrorEmbed } from '#lib'; export default class WarningListener extends BushListener { public constructor() { @@ -18,7 +17,7 @@ export default class WarningListener extends BushListener { void this.client.console.warn('warning', `A warning occurred:\n${formatError(error, true)}`, false); - const embeds = await CommandErrorListener.generateErrorEmbed(this.client, { type: 'unhandledRejection', error: error }); + const embeds = await generateErrorEmbed(this.client, { type: 'unhandledRejection', error: error }); embeds[0].setColor(colors.warn).setTitle('A Warning Occurred'); void this.client.console.channelError({ embeds }); diff --git a/src/tasks/cache/updateCache.ts b/src/tasks/cache/updateCache.ts index 595a872..190e2a4 100644 --- a/src/tasks/cache/updateCache.ts +++ b/src/tasks/cache/updateCache.ts @@ -1,8 +1,4 @@ -import { Global, Guild, Shared, type BushClient } from '#lib'; -import type { Client } from 'discord.js'; -import config from '../../../config/options.js'; -import { BushTask } from '../../../lib/extensions/discord-akairo/BushTask.js'; -import { Time } from '../../../lib/utils/BushConstants.js'; +import { BushTask, Time, updateEveryCache } from '#lib'; export default class UpdateCacheTask extends BushTask { public constructor() { @@ -13,48 +9,7 @@ export default class UpdateCacheTask extends BushTask { } public async exec() { - await Promise.all([ - UpdateCacheTask.#updateGlobalCache(this.client), - UpdateCacheTask.#updateSharedCache(this.client), - UpdateCacheTask.#updateGuildCache(this.client) - ]); + await updateEveryCache(this.client); void this.client.logger.verbose(`UpdateCache`, `Updated cache.`); } - - public static async init(client: BushClient) { - await Promise.all([ - UpdateCacheTask.#updateGlobalCache(client), - UpdateCacheTask.#updateSharedCache(client), - UpdateCacheTask.#updateGuildCache(client) - ]); - } - - static async #updateGlobalCache(client: Client) { - const environment = config.environment; - const row: { [x: string]: any } = ((await Global.findByPk(environment)) ?? (await Global.create({ environment }))).toJSON(); - - for (const option in row) { - if (Object.keys(client.cache.global).includes(option)) { - client.cache.global[option as keyof typeof client.cache.global] = row[option]; - } - } - } - - static async #updateSharedCache(client: Client) { - const row: { [x: string]: any } = ((await Shared.findByPk(0)) ?? (await Shared.create())).toJSON(); - - for (const option in row) { - if (Object.keys(client.cache.shared).includes(option)) { - client.cache.shared[option as keyof typeof client.cache.shared] = row[option]; - if (option === 'superUsers') client.superUserID = row[option]; - } - } - } - - static async #updateGuildCache(client: Client) { - const rows = await Guild.findAll(); - for (const row of rows) { - client.cache.guilds.set(row.id, row.toJSON() as Guild); - } - } } diff --git a/src/tasks/cache/updatePriceItemCache.ts b/src/tasks/cache/updatePriceItemCache.ts index 55115cc..bafbfaf 100644 --- a/src/tasks/cache/updatePriceItemCache.ts +++ b/src/tasks/cache/updatePriceItemCache.ts @@ -1,5 +1,4 @@ import { BushTask, Time } from '#lib'; -import got from 'got'; import PriceCommand, { AuctionAverages, Bazaar, LowestBIN } from '../../commands/utilities/price.js'; export default class UpdatePriceItemCache extends BushTask { @@ -13,9 +12,8 @@ export default class UpdatePriceItemCache extends BushTask { public async exec() { const [bazaar, currentLowestBIN, averageLowestBIN, auctionAverages] = (await Promise.all( PriceCommand.urls.map(({ url }) => - got - .get(url) - .json() + fetch(url) + .then((p) => (p.ok ? p.json() : undefined)) .catch(() => undefined) ) )) as [Bazaar?, LowestBIN?, LowestBIN?, AuctionAverages?]; diff --git a/src/tasks/feature/handleReminders.ts b/src/tasks/feature/handleReminders.ts index 1e44083..a9f5658 100644 --- a/src/tasks/feature/handleReminders.ts +++ b/src/tasks/feature/handleReminders.ts @@ -1,5 +1,5 @@ import { BushTask, dateDelta, format, Reminder, Time } from '#lib'; -const { Op } = (await import('sequelize')).default; +import { Op } from 'sequelize'; export default class HandlerRemindersTask extends BushTask { public constructor() { @@ -29,8 +29,7 @@ export default class HandlerRemindersTask extends BushTask { void this.client.users .send( entry.user, - `The reminder you set ${dateDelta(entry.created)} ago has expired: ${format.bold(entry.content)} -${entry.messageUrl}` + `The reminder you set ${dateDelta(entry.created)} ago has expired: ${format.bold(entry.content)}\n${entry.messageUrl}` ) .catch(() => false); void entry.update({ notified: true }); diff --git a/src/tasks/feature/removeExpiredPunishements.ts b/src/tasks/feature/removeExpiredPunishements.ts index c21454b..30b8eba 100644 --- a/src/tasks/feature/removeExpiredPunishements.ts +++ b/src/tasks/feature/removeExpiredPunishements.ts @@ -1,6 +1,6 @@ import { ActivePunishment, ActivePunishmentType, BushTask, Time } from '#lib'; import assert from 'assert/strict'; -const { Op } = (await import('sequelize')).default; +import { Op } from 'sequelize'; export default class RemoveExpiredPunishmentsTask extends BushTask { public constructor() { diff --git a/src/tasks/feature/updateStats.d.ts b/src/tasks/feature/updateStats.d.ts new file mode 100644 index 0000000..1274267 --- /dev/null +++ b/src/tasks/feature/updateStats.d.ts @@ -0,0 +1,10 @@ +import { BushTask } from '#lib'; +import { Client } from 'discord.js'; +export default class UpdateStatsTask extends BushTask { + constructor(); + exec(): Promise<void>; + static init(client: Client): Promise<{ + commandsUsed: bigint; + slashCommandsUsed: bigint; + }>; +} diff --git a/src/tasks/feature/updateStats.js b/src/tasks/feature/updateStats.js new file mode 100644 index 0000000..18a9a7c --- /dev/null +++ b/src/tasks/feature/updateStats.js @@ -0,0 +1,22 @@ +import { BushTask, Stat, Time } from '#lib'; +import { Client } from 'discord.js'; +export default class UpdateStatsTask extends BushTask { + constructor() { + super('updateStats', { + delay: 10 * 60000, + runOnStart: true + }); + } + async exec() { + const row = (await Stat.findByPk(this.client.config.environment)) ?? + (await Stat.create({ environment: this.client.config.environment })); + row.commandsUsed = this.client.stats.commandsUsed; + row.slashCommandsUsed = this.client.stats.slashCommandsUsed; + await row.save(); + } + static async init(client) { + const temp = (await Stat.findByPk(client.config.environment)) ?? (await Stat.create({ environment: client.config.environment })); + return { commandsUsed: temp.commandsUsed, slashCommandsUsed: temp.slashCommandsUsed }; + } +} +//# sourceMappingURL=updateStats.js.map
\ No newline at end of file diff --git a/src/tasks/feature/updateStats.js.map b/src/tasks/feature/updateStats.js.map new file mode 100644 index 0000000..01cd260 --- /dev/null +++ b/src/tasks/feature/updateStats.js.map @@ -0,0 +1 @@ +{"version":3,"file":"updateStats.js","sourceRoot":"","sources":["updateStats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,QAAQ;IACpD;QACC,KAAK,CAAC,aAAa,EAAE;YACpB,KAAK,EAAE,EAAE,QAAc;YACvB,UAAU,EAAE,IAAI;SAChB,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,IAAI;QAChB,MAAM,GAAG,GACR,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACrD,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACtE,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;QAClD,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC;QAC5D,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAClB,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAc;QACtC,MAAM,IAAI,GACT,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACrH,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACvF,CAAC;CACD"}
\ No newline at end of file diff --git a/src/tasks/feature/updateStats.ts b/src/tasks/feature/updateStats.ts index 0d0e661..77b7c30 100644 --- a/src/tasks/feature/updateStats.ts +++ b/src/tasks/feature/updateStats.ts @@ -1,5 +1,4 @@ import { BushTask, Stat, Time } from '#lib'; -import { Client } from 'discord.js'; export default class UpdateStatsTask extends BushTask { public constructor() { @@ -17,10 +16,4 @@ export default class UpdateStatsTask extends BushTask { row.slashCommandsUsed = this.client.stats.slashCommandsUsed; await row.save(); } - - public static async init(client: Client): Promise<{ commandsUsed: bigint; slashCommandsUsed: bigint }> { - const temp = - (await Stat.findByPk(client.config.environment)) ?? (await Stat.create({ environment: client.config.environment })); - return { commandsUsed: temp.commandsUsed, slashCommandsUsed: temp.slashCommandsUsed }; - } } diff --git a/src/tsconfig.json b/src/tsconfig.json index 6d2834a..705d261 100644 --- a/src/tsconfig.json +++ b/src/tsconfig.json @@ -1,9 +1,7 @@ { "extends": "../tsconfig.base.json", "compilerOptions": { - "outDir": "../../dist/src", - "composite": true + "outDir": "../dist/src" }, - "references": [{ "path": "../lib" }, { "path": "../config" }], - "include": ["src/**/*.ts"] + "references": [{ "path": "../lib" }, { "path": "../config" }, { "path": "../tsconfig.pkg.json" }] } diff --git a/tsconfig.base.json b/tsconfig.base.json index 44301c8..e878b4a 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -15,23 +15,22 @@ // #region Modules "module": "ESNext", - "moduleResolution": "Node", - // "baseUrl": "./", + "moduleResolution": "NodeNext", "paths": { "#lib": ["./lib/index.ts"], - "#constants": ["./lib/utils/BushConstants.ts"], + "#src/*": ["./src/*"], "#args": ["./lib/arguments/index.ts"], "#commands": ["./src/commands/index.ts"], - "#tags": ["./lib/common/tags.ts"] + "#tags": ["./lib/common/tags.ts"], + "#config": ["./config/index.ts"] }, "resolveJsonModule": true, - // "noResolve": true, + "types": ["node"], // #endregion // #region JavaScript Support "allowJs": false, "checkJs": false, - "maxNodeModuleJsDepth": 0, // #endregion // #region Emit @@ -56,12 +55,10 @@ "noFallthroughCasesInSwitch": true, "noImplicitOverride": true, "allowUnusedLabels": true, - "allowUnreachableCode": true, + "allowUnreachableCode": true // #endregion // #region Completeness - "skipDefaultLibCheck": false, - "skipLibCheck": true // #endregion } } diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json index 8b91633..c407a2e 100644 --- a/tsconfig.eslint.json +++ b/tsconfig.eslint.json @@ -4,5 +4,5 @@ "allowJs": true, "checkJs": true }, - "include": ["**/*"] + "include": ["./**/*"] } diff --git a/tsconfig.json b/tsconfig.json index 0310e3d..6ffd4cc 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,9 +1,4 @@ { - "extends": "./tsconfig.base.json", - "compilerOptions": { - "outDir": "./dist" - }, - "references": [{ "path": "./src" }, { "path": "./lib" }, { "path": "./config" }], - "include": ["./src/**/*.ts", "./lib/**/*.ts"], - "files": ["./package.json", "config/Config.ts", "config/example-options.ts", "config/options.ts"] + "references": [{ "path": "./src" }, { "path": "./lib" }, { "path": "./config" }, { "path": "./tsconfig.pkg.json" }], + "files": [] } diff --git a/tsconfig.pkg.json b/tsconfig.pkg.json new file mode 100644 index 0000000..2ab21da --- /dev/null +++ b/tsconfig.pkg.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.base.json", + "compilerOptions": { + "outDir": "./dist", + "composite": true + }, + "files": ["./package.json"] +} @@ -49,28 +49,6 @@ __metadata: languageName: node linkType: hard -"@electron/get@npm:^1.14.1": - version: 1.14.1 - resolution: "@electron/get@npm:1.14.1" - dependencies: - debug: ^4.1.1 - env-paths: ^2.2.0 - fs-extra: ^8.1.0 - global-agent: ^3.0.0 - global-tunnel-ng: ^2.7.1 - got: ^9.6.0 - progress: ^2.0.3 - semver: ^6.2.0 - sumchecker: ^3.0.1 - dependenciesMeta: - global-agent: - optional: true - global-tunnel-ng: - optional: true - checksum: 21fec5e82bbee8f9fa183b46e05675b137c3130c7999d3b2b34a0047d1a06ec3c76347b9bbdb9911ba9b2123697804e360a15dda9db614c0226d5d4dcc4d6d15 - languageName: node - linkType: hard - "@esbuild/linux-loong64@npm:0.14.54": version: 0.14.54 resolution: "@esbuild/linux-loong64@npm:0.14.54" @@ -216,29 +194,29 @@ __metadata: linkType: hard "@npmcli/fs@npm:^2.1.0": - version: 2.1.1 - resolution: "@npmcli/fs@npm:2.1.1" + version: 2.1.2 + resolution: "@npmcli/fs@npm:2.1.2" dependencies: "@gar/promisify": ^1.1.3 semver: ^7.3.5 - checksum: 4944a0545d38d3e6e29780eeb3cd4be6059c1e9627509d2c9ced635c53b852d28b37cdc615a2adf815b51ab8673adb6507e370401a20a7e90c8a6dc4fac02389 + checksum: 405074965e72d4c9d728931b64d2d38e6ea12066d4fad651ac253d175e413c06fe4350970c783db0d749181da8fe49c42d3880bd1cbc12cd68e3a7964d820225 languageName: node linkType: hard "@npmcli/move-file@npm:^2.0.0": - version: 2.0.0 - resolution: "@npmcli/move-file@npm:2.0.0" + version: 2.0.1 + resolution: "@npmcli/move-file@npm:2.0.1" dependencies: mkdirp: ^1.0.4 rimraf: ^3.0.2 - checksum: 1388777b507b0c592d53f41b9d182e1a8de7763bc625fc07999b8edbc22325f074e5b3ec90af79c89d6987fdb2325bc66d59f483258543c14a43661621f841b0 + checksum: 52dc02259d98da517fae4cb3a0a3850227bdae4939dda1980b788a7670636ca2b4a01b58df03dd5f65c1e3cb70c50fa8ce5762b582b3f499ec30ee5ce1fd9380 languageName: node linkType: hard "@sapphire/async-queue@npm:^1.3.2": - version: 1.4.0 - resolution: "@sapphire/async-queue@npm:1.4.0" - checksum: 1361898e82aceee4189dd4bd3d2516f560ed15c3fb048a51e9df26f3e506c5935ef87160e4fdbd15facb8c2f2417cd896ee92c14f784aaf4d3ae96d0b21fbddf + version: 1.5.0 + resolution: "@sapphire/async-queue@npm:1.5.0" + checksum: 983dbd1fd1b1798496e5edb6a0db7e4d90015160e1028f20475eab0a92625513f1e8d938bc0305811a9cec461c94e01b1e4191615ff03ba49356f568f3255250 languageName: node linkType: hard @@ -259,115 +237,83 @@ __metadata: languageName: node linkType: hard -"@sentry/core@npm:7.9.0": - version: 7.9.0 - resolution: "@sentry/core@npm:7.9.0" +"@sentry/core@npm:7.11.1": + version: 7.11.1 + resolution: "@sentry/core@npm:7.11.1" dependencies: - "@sentry/hub": 7.9.0 - "@sentry/types": 7.9.0 - "@sentry/utils": 7.9.0 + "@sentry/hub": 7.11.1 + "@sentry/types": 7.11.1 + "@sentry/utils": 7.11.1 tslib: ^1.9.3 - checksum: 427d66d53e2af6797c1fbb0f186db596802d8e498bae32a56be89caa2f0a91cd73aa5689943ddd4cd1c9e4afc0259cdecf496733fa220ee3c0c3bfe21e676d08 + checksum: 4e3fa11d248182a6cdce87ff60111cd29fe028fb84abed7f362f3d7b1a6db9b97bf6bf07317f2338fce01b331a1e867a34e3ef477134b859270ef0d0f48bdc8e languageName: node linkType: hard -"@sentry/hub@npm:7.9.0": - version: 7.9.0 - resolution: "@sentry/hub@npm:7.9.0" +"@sentry/hub@npm:7.11.1": + version: 7.11.1 + resolution: "@sentry/hub@npm:7.11.1" dependencies: - "@sentry/types": 7.9.0 - "@sentry/utils": 7.9.0 + "@sentry/types": 7.11.1 + "@sentry/utils": 7.11.1 tslib: ^1.9.3 - checksum: 594558fc360a5765389891f807119d2906da1c60b101862b9b13afdc0954b948495fb885471f6bfbf3c7e9bceeedb0111b84833ac1c7c974be7bf5e8b2dcfb8b + checksum: 1df55e6e3a494167e6b1592f1aa6ea185feeed3a68d9060340877b3db5943fe45437c5d508dfabc1d4275ce7f3c3910f3bb4ad1880a3c9d01a7d07200f3feb91 languageName: node linkType: hard -"@sentry/integrations@npm:^7.9.0": - version: 7.9.0 - resolution: "@sentry/integrations@npm:7.9.0" +"@sentry/integrations@npm:^7.11.1": + version: 7.11.1 + resolution: "@sentry/integrations@npm:7.11.1" dependencies: - "@sentry/types": 7.9.0 - "@sentry/utils": 7.9.0 + "@sentry/types": 7.11.1 + "@sentry/utils": 7.11.1 localforage: ^1.8.1 tslib: ^1.9.3 - checksum: 3a7c88e7c4939a3057780acfd3803673a3e6017fa386467e67379d3c2d26f6eee5b2d74d60563c4102c143d74393b78c1f0f5e0e166fc010b0a7717c6211d916 + checksum: e89ab412462e4d93a6689360d3afe2eb5e64a45f3d2bf9e8c3cdb8f71bfe66b71b62ac1d867d9c726c4d2e1ab9309893bb7f856f74acbc382debe60db33008fa languageName: node linkType: hard -"@sentry/node@npm:^7.9.0": - version: 7.9.0 - resolution: "@sentry/node@npm:7.9.0" +"@sentry/node@npm:^7.11.1": + version: 7.11.1 + resolution: "@sentry/node@npm:7.11.1" dependencies: - "@sentry/core": 7.9.0 - "@sentry/hub": 7.9.0 - "@sentry/types": 7.9.0 - "@sentry/utils": 7.9.0 + "@sentry/core": 7.11.1 + "@sentry/hub": 7.11.1 + "@sentry/types": 7.11.1 + "@sentry/utils": 7.11.1 cookie: ^0.4.1 https-proxy-agent: ^5.0.0 lru_map: ^0.3.3 tslib: ^1.9.3 - checksum: b8baa65a00b0c42f3b5d6eeb0c98812155081b9963482d9bd6b2de62bc8a81db86f5dbb3c17cc1177cf76fe6ac10397ff881e758245aab13904e333d8230250b + checksum: 824780c2d4fecbfaabfacd27b7108a21c6e37b98a61aeb2dda394dae6d67584ef46a749df80fb7dfa3e43bd4e6dcb28b7bcf8a83c77ebef621d05f231651724a languageName: node linkType: hard -"@sentry/tracing@npm:^7.9.0": - version: 7.9.0 - resolution: "@sentry/tracing@npm:7.9.0" +"@sentry/tracing@npm:^7.11.1": + version: 7.11.1 + resolution: "@sentry/tracing@npm:7.11.1" dependencies: - "@sentry/hub": 7.9.0 - "@sentry/types": 7.9.0 - "@sentry/utils": 7.9.0 + "@sentry/hub": 7.11.1 + "@sentry/types": 7.11.1 + "@sentry/utils": 7.11.1 tslib: ^1.9.3 - checksum: e8e8cfecbb4647aeea849225c7c898bde1c9029b0bdf75984109a19668fcd99a62abe93d4115b5dccd484f0f7e0b378a0715f830bcf5a2788e23e69c8199145d + checksum: c0c4b540eff30deb94b939d7792f765410bd0abb3c495a49cd89c1ed113f0ca46fb7b12bdc777ddb42f64018a5647afe69bb444d77a2e0cb8a8ae9ed813a7f7b languageName: node linkType: hard -"@sentry/types@npm:7.9.0, @sentry/types@npm:^7.9.0": - version: 7.9.0 - resolution: "@sentry/types@npm:7.9.0" - checksum: 5f56d27454cab0344554bd85e9db8c34827dffa61145150664dc1ff478aaf599bffceb3a6bb20f592f0d8080b1f26b7af03c306a09c6463b8de4bdfdd10eecba +"@sentry/types@npm:7.11.1, @sentry/types@npm:^7.11.1": + version: 7.11.1 + resolution: "@sentry/types@npm:7.11.1" + checksum: 935dbd83d8c43bca202979fef12fe2af0508e44c61a0b3b2e10971006b59938fac36bfde530c7b7db14601dcbb17a2a7b35f479de8bbfe961df3eff7fd9327ce languageName: node linkType: hard -"@sentry/utils@npm:7.9.0": - version: 7.9.0 - resolution: "@sentry/utils@npm:7.9.0" +"@sentry/utils@npm:7.11.1": + version: 7.11.1 + resolution: "@sentry/utils@npm:7.11.1" dependencies: - "@sentry/types": 7.9.0 + "@sentry/types": 7.11.1 tslib: ^1.9.3 - checksum: 414a81ae8005d12ba22578606dff57b906598fc8b761cb3b4143a87fe20226bc90f9018a8930df11625a69cf5706d6f834191ef01d3ee8362ca6078e59108d9c - languageName: node - linkType: hard - -"@sindresorhus/is@npm:^0.14.0": - version: 0.14.0 - resolution: "@sindresorhus/is@npm:0.14.0" - checksum: 971e0441dd44ba3909b467219a5e242da0fc584048db5324cfb8048148fa8dcc9d44d71e3948972c4f6121d24e5da402ef191420d1266a95f713bb6d6e59c98a - languageName: node - linkType: hard - -"@sindresorhus/is@npm:^5.2.0": - version: 5.3.0 - resolution: "@sindresorhus/is@npm:5.3.0" - checksum: b31cebabcdece3d5322de2a4dbc8c0f004e04147a00f2606787bcaf5655ad4b1954f6727fc6914c524009b2b9a2cc01c42835b55f651ce69fd2a0083b60bb852 - languageName: node - linkType: hard - -"@szmarczak/http-timer@npm:^1.1.2": - version: 1.1.2 - resolution: "@szmarczak/http-timer@npm:1.1.2" - dependencies: - defer-to-connect: ^1.0.1 - checksum: 4d9158061c5f397c57b4988cde33a163244e4f02df16364f103971957a32886beb104d6180902cbe8b38cb940e234d9f98a4e486200deca621923f62f50a06fe - languageName: node - linkType: hard - -"@szmarczak/http-timer@npm:^5.0.1": - version: 5.0.1 - resolution: "@szmarczak/http-timer@npm:5.0.1" - dependencies: - defer-to-connect: ^2.0.1 - checksum: fc9cb993e808806692e4a3337c90ece0ec00c89f4b67e3652a356b89730da98bc824273a6d67ca84d5f33cd85f317dcd5ce39d8cc0a2f060145a608a7cb8ce92 + checksum: e0a1d8528e9f99a35c88786cc230a5466966a59554796bbf13a33aa8956911c8bce7c556bb7a90ba20c9af9fa64ef6b87b956d1d8bae6ff42950ce4125c3b44e languageName: node linkType: hard @@ -395,18 +341,6 @@ __metadata: languageName: node linkType: hard -"@types/cacheable-request@npm:^6.0.2": - version: 6.0.2 - resolution: "@types/cacheable-request@npm:6.0.2" - dependencies: - "@types/http-cache-semantics": "*" - "@types/keyv": "*" - "@types/node": "*" - "@types/responselike": "*" - checksum: 667d25808dbf46fe104d6f029e0281ff56058d50c7c1b9182774b3e38bb9c1124f56e4c367ba54f92dbde2d1cc573f26eb0e9748710b2822bc0fd1e5498859c6 - languageName: node - linkType: hard - "@types/chai-subset@npm:^1.3.3": version: 1.3.3 resolution: "@types/chai-subset@npm:1.3.3" @@ -441,13 +375,13 @@ __metadata: languageName: node linkType: hard -"@types/eslint@npm:^8.4.5": - version: 8.4.5 - resolution: "@types/eslint@npm:8.4.5" +"@types/eslint@npm:^8.4.6": + version: 8.4.6 + resolution: "@types/eslint@npm:8.4.6" dependencies: "@types/estree": "*" "@types/json-schema": "*" - checksum: 428b0c971a50adb0d08621e76f21b284580a0052a31341a0e6d553f72b54cd0142d549aa1497c7e3bc56e9f6bcc27286e66e0216e1ba76d1a5ecd2279c40bc8c + checksum: bfaf27b00031b2238139003965475d023306119e467947f7a43a41e380918e365618e2ae6a6ae638697f6421a6bb1571db078695ff5e548f23618000b38acd23 languageName: node linkType: hard @@ -491,20 +425,6 @@ __metadata: languageName: node linkType: hard -"@types/http-cache-semantics@npm:*": - version: 4.0.1 - resolution: "@types/http-cache-semantics@npm:4.0.1" - checksum: 1048aacf627829f0d5f00184e16548205cd9f964bf0841c29b36bc504509230c40bc57c39778703a1c965a6f5b416ae2cbf4c1d4589c889d2838dd9dbfccf6e9 - languageName: node - linkType: hard - -"@types/json-buffer@npm:~3.0.0": - version: 3.0.0 - resolution: "@types/json-buffer@npm:3.0.0" - checksum: 6b0a371dd603f0eec9d00874574bae195382570e832560dadf2193ee0d1062b8e0694bbae9798bc758632361c227b1e3b19e3bd914043b498640470a2da38b77 - languageName: node - linkType: hard - "@types/json-schema@npm:*, @types/json-schema@npm:^7.0.9": version: 7.0.11 resolution: "@types/json-schema@npm:7.0.11" @@ -512,26 +432,10 @@ __metadata: languageName: node linkType: hard -"@types/json5@npm:^0.0.29": - version: 0.0.29 - resolution: "@types/json5@npm:0.0.29" - checksum: e60b153664572116dfea673c5bda7778dbff150498f44f998e34b5886d8afc47f16799280e4b6e241c0472aef1bc36add771c569c68fc5125fc2ae519a3eb9ac - languageName: node - linkType: hard - -"@types/keyv@npm:*, @types/keyv@npm:^3.1.1": - version: 3.1.4 - resolution: "@types/keyv@npm:3.1.4" - dependencies: - "@types/node": "*" - checksum: e009a2bfb50e90ca9b7c6e8f648f8464067271fd99116f881073fa6fa76dc8d0133181dd65e6614d5fb1220d671d67b0124aef7d97dc02d7e342ab143a47779d - languageName: node - linkType: hard - -"@types/lodash@npm:^4.14.182": - version: 4.14.182 - resolution: "@types/lodash@npm:4.14.182" - checksum: 7dd137aa9dbabd632408bd37009d984655164fa1ecc3f2b6eb94afe35bf0a5852cbab6183148d883e9c73a958b7fec9a9bcf7c8e45d41195add6a18c34958209 +"@types/lodash@npm:^4.14.184": + version: 4.14.184 + resolution: "@types/lodash@npm:4.14.184" + checksum: 6d9a4d67f7f9d0ec3fd21174f3dd3d00629dc1227eb469450eace53adbc1f7e2330699c28d0fe093e5f0fef0f0e763098be1f779268857213224af082b62be21 languageName: node linkType: hard @@ -556,17 +460,10 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:^18.6.5": - version: 18.6.5 - resolution: "@types/node@npm:18.6.5" - checksum: e3e66c9a84b94010a57c1b9dac882c08484278d74f9d120dbe6a3e45d00740d178bd1d34a5deee28197c94b9f4359153b637bab9b305328e865027e9987a0f3d - languageName: node - linkType: hard - -"@types/node@npm:^16.11.26": - version: 16.11.47 - resolution: "@types/node@npm:16.11.47" - checksum: 26811000753fd1bb9a90a563fc72942ac3ad5d5b6c97609a090c1e24210e040597ba060e55a7a46cb22cc84dafee112d741f45652139c6166e8ce0c970b4f05a +"@types/node@npm:*, @types/node@npm:^18.7.8": + version: 18.7.8 + resolution: "@types/node@npm:18.7.8" + checksum: e0125efefa896083c05f549d93166109959ffdd68cb626aad0d660c0ce9de888fe405b4763b4a3c3e0968560409c272413e0ad07204522543c688e162a617ecb languageName: node linkType: hard @@ -609,15 +506,6 @@ __metadata: languageName: node linkType: hard -"@types/responselike@npm:*, @types/responselike@npm:^1.0.0": - version: 1.0.0 - resolution: "@types/responselike@npm:1.0.0" - dependencies: - "@types/node": "*" - checksum: e99fc7cc6265407987b30deda54c1c24bb1478803faf6037557a774b2f034c5b097ffd65847daa87e82a61a250d919f35c3588654b0fdaa816906650f596d1b0 - languageName: node - linkType: hard - "@types/rimraf@npm:^3.0.2": version: 3.0.2 resolution: "@types/rimraf@npm:3.0.2" @@ -661,22 +549,13 @@ __metadata: languageName: node linkType: hard -"@types/yauzl@npm:^2.9.1": - version: 2.10.0 - resolution: "@types/yauzl@npm:2.10.0" +"@typescript-eslint/eslint-plugin@npm:^5.33.1": + version: 5.33.1 + resolution: "@typescript-eslint/eslint-plugin@npm:5.33.1" dependencies: - "@types/node": "*" - checksum: 55d27ae5d346ea260e40121675c24e112ef0247649073848e5d4e03182713ae4ec8142b98f61a1c6cbe7d3b72fa99bbadb65d8b01873e5e605cdc30f1ff70ef2 - languageName: node - linkType: hard - -"@typescript-eslint/eslint-plugin@npm:^5.33.0": - version: 5.33.0 - resolution: "@typescript-eslint/eslint-plugin@npm:5.33.0" - dependencies: - "@typescript-eslint/scope-manager": 5.33.0 - "@typescript-eslint/type-utils": 5.33.0 - "@typescript-eslint/utils": 5.33.0 + "@typescript-eslint/scope-manager": 5.33.1 + "@typescript-eslint/type-utils": 5.33.1 + "@typescript-eslint/utils": 5.33.1 debug: ^4.3.4 functional-red-black-tree: ^1.0.1 ignore: ^5.2.0 @@ -689,53 +568,53 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: d408f3f474b34fefde8ee65d98deb126949fd7d8e211a7f95c5cc2b507dedbf8eb239f3895e0c37aa6338989531e37c5f35c2e0de36a126c52f0846e89605487 + checksum: d9b6b038f70e4959ad211c84f50a38de2d00b54f0636ad76eea414fb070fa616933690da80de6668e62c8fbbeb227086322001b7d7ad1924421a232547c97936 languageName: node linkType: hard "@typescript-eslint/experimental-utils@npm:^5.0.0": - version: 5.33.0 - resolution: "@typescript-eslint/experimental-utils@npm:5.33.0" + version: 5.33.1 + resolution: "@typescript-eslint/experimental-utils@npm:5.33.1" dependencies: - "@typescript-eslint/utils": 5.33.0 + "@typescript-eslint/utils": 5.33.1 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 51374c63afd368e992278c321819cca64354f0a160de07780378cd30fe148e9a239676b4005869ff0dc1910575e60cc96535a36be3d509b7e22c0cec7b0eed12 + checksum: 49e81b5977adc2d5c2c1a39eea25b79ec6d88ff3a7757373eb2da1a865658e23b382158c389fa47b9882603414a758894596aab9f5f79aaec046b9e3c2a9fa47 languageName: node linkType: hard -"@typescript-eslint/parser@npm:^5.33.0": - version: 5.33.0 - resolution: "@typescript-eslint/parser@npm:5.33.0" +"@typescript-eslint/parser@npm:^5.33.1": + version: 5.33.1 + resolution: "@typescript-eslint/parser@npm:5.33.1" dependencies: - "@typescript-eslint/scope-manager": 5.33.0 - "@typescript-eslint/types": 5.33.0 - "@typescript-eslint/typescript-estree": 5.33.0 + "@typescript-eslint/scope-manager": 5.33.1 + "@typescript-eslint/types": 5.33.1 + "@typescript-eslint/typescript-estree": 5.33.1 debug: ^4.3.4 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 2617aba987a70ee6b16ecc6afa6d245422df33a9d056018ff2e316159e667a0ab9d9c15fcea95e0ba65832661e71cc2753a221e77f0b0fab278e52c4497b8278 + checksum: fb3a4e000ce6d9583656fc3b3fb80f127a0ec1b7c3872ea469164516d993a588859ded4ec1338e6bbf2151168380d8aa29ec31027af23b50f5107949f8e7b438 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:5.33.0": - version: 5.33.0 - resolution: "@typescript-eslint/scope-manager@npm:5.33.0" +"@typescript-eslint/scope-manager@npm:5.33.1": + version: 5.33.1 + resolution: "@typescript-eslint/scope-manager@npm:5.33.1" dependencies: - "@typescript-eslint/types": 5.33.0 - "@typescript-eslint/visitor-keys": 5.33.0 - checksum: b2cbea9abd528d01a5acb2d68a2a5be51ec6827760d3869bdd70920cf6c3a4f9f96d87c77177f8313009d9db71253e4a75f8393f38651e2abaf91ef28e60fb9d + "@typescript-eslint/types": 5.33.1 + "@typescript-eslint/visitor-keys": 5.33.1 + checksum: b9918d8320ea59081d19070ce952b56984e72fb2c113215e5e6a0f97deac9aae5aa67ec7a07cddb010c0f75cdf8df096ab45e9241e4b7b611acfa6d4cdfb6516 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:5.33.0": - version: 5.33.0 - resolution: "@typescript-eslint/type-utils@npm:5.33.0" +"@typescript-eslint/type-utils@npm:5.33.1": + version: 5.33.1 + resolution: "@typescript-eslint/type-utils@npm:5.33.1" dependencies: - "@typescript-eslint/utils": 5.33.0 + "@typescript-eslint/utils": 5.33.1 debug: ^4.3.4 tsutils: ^3.21.0 peerDependencies: @@ -743,23 +622,23 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: a1d1ffb42fe96bfc2339cc2875e218aa82fa9391be04c1a266bb11da1eca6835555687e81cde75477c60e6702049cd4dde7d2638e7e9b9d8cf4b7b2242353a6e + checksum: ddf88835bc87b3ad946aaeb29b770a49a8e1c3c5e294ee9cb93b1936f432a1016efb97803f197eea1be61545cbc79b5526cc05e9339ca9beada22fc83801ddea languageName: node linkType: hard -"@typescript-eslint/types@npm:5.33.0": - version: 5.33.0 - resolution: "@typescript-eslint/types@npm:5.33.0" - checksum: 8bbddda84cb3adf5c659b0d42547a2d6ab87f4eea574aca5dd63a3bd85169f32796ecbddad3b27f18a609070f6b1d18a54018d488bad746ae0f6ea5c02206109 +"@typescript-eslint/types@npm:5.33.1": + version: 5.33.1 + resolution: "@typescript-eslint/types@npm:5.33.1" + checksum: 122891bd4ab4b930b1d33f3ce43a010825c1e61b9879520a0f3dc34cf92df71e2a873410845ab8d746333511c455c115eaafdec149298a161cef713829dfdb77 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.33.0": - version: 5.33.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.33.0" +"@typescript-eslint/typescript-estree@npm:5.33.1": + version: 5.33.1 + resolution: "@typescript-eslint/typescript-estree@npm:5.33.1" dependencies: - "@typescript-eslint/types": 5.33.0 - "@typescript-eslint/visitor-keys": 5.33.0 + "@typescript-eslint/types": 5.33.1 + "@typescript-eslint/visitor-keys": 5.33.1 debug: ^4.3.4 globby: ^11.1.0 is-glob: ^4.0.3 @@ -768,33 +647,33 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 26f9005cdfb14654125a33d90d872b926820e560dff8970c4629fd5f6f47ad2a31e4c63161564d21bb42a8fc3ced0033994854ee37336ae07d90ccf6300d702b + checksum: 1418e409b141c2f012bc2dd5c40d95dfd8aa572dd3e9523ed23e4371e4459d10ecd074fda75dc770ce980686b25ffc44725eebf165c494818ed4131d1ac0239f languageName: node linkType: hard -"@typescript-eslint/utils@npm:5.33.0": - version: 5.33.0 - resolution: "@typescript-eslint/utils@npm:5.33.0" +"@typescript-eslint/utils@npm:5.33.1": + version: 5.33.1 + resolution: "@typescript-eslint/utils@npm:5.33.1" dependencies: "@types/json-schema": ^7.0.9 - "@typescript-eslint/scope-manager": 5.33.0 - "@typescript-eslint/types": 5.33.0 - "@typescript-eslint/typescript-estree": 5.33.0 + "@typescript-eslint/scope-manager": 5.33.1 + "@typescript-eslint/types": 5.33.1 + "@typescript-eslint/typescript-estree": 5.33.1 eslint-scope: ^5.1.1 eslint-utils: ^3.0.0 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 6ce5ee5eabeb6d73538b24e6487f811ecb0ef3467bd366cbd15bf30d904bdedb73fc6f48cf2e2e742dda462b42999ea505e8b59255545825ec9db86f3d423ea7 + checksum: c550504d62fc72f29bf3d7a651bd3a81f49fb1fccaf47583721c2ab1abd2ef78a1e4bc392cb4be4a61a45a4f24fc14a59d67b98aac8a16a207a7cace86538cab languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:5.33.0": - version: 5.33.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.33.0" +"@typescript-eslint/visitor-keys@npm:5.33.1": + version: 5.33.1 + resolution: "@typescript-eslint/visitor-keys@npm:5.33.1" dependencies: - "@typescript-eslint/types": 5.33.0 + "@typescript-eslint/types": 5.33.1 eslint-visitor-keys: ^3.3.0 - checksum: d7e3653de6bac6841e6fcc54226b93ad6bdca4aa76ebe7d83459c016c3eebcc50d4f65ee713174bc267d765295b642d1927a778c5de707b8389e3fcc052aa4a1 + checksum: 0d32a433450f61e97b5fa6b1e167f06ed395c200b16b4dbd4490a1c4941de420689b622f8a2486f5398806fb24f57b9fab901b4cbc8fdb8853f568264b3a182a languageName: node linkType: hard @@ -805,15 +684,6 @@ __metadata: languageName: node linkType: hard -"abort-controller@npm:^3.0.0": - version: 3.0.0 - resolution: "abort-controller@npm:3.0.0" - dependencies: - event-target-shim: ^5.0.0 - checksum: 170bdba9b47b7e65906a28c8ce4f38a7a369d78e2271706f020849c1bfe0ee2067d4261df8bbb66eb84f79208fd5b710df759d64191db58cfba7ce8ef9c54b75 - languageName: node - linkType: hard - "acorn-jsx@npm:^5.3.2": version: 5.3.2 resolution: "acorn-jsx@npm:5.3.2" @@ -931,19 +801,6 @@ __metadata: languageName: node linkType: hard -"array-includes@npm:^3.1.4": - version: 3.1.5 - resolution: "array-includes@npm:3.1.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.19.5 - get-intrinsic: ^1.1.1 - is-string: ^1.0.7 - checksum: f6f24d834179604656b7bec3e047251d5cc87e9e87fab7c175c61af48e80e75acd296017abcde21fb52292ab6a2a449ab2ee37213ee48c8709f004d75983f9c5 - languageName: node - linkType: hard - "array-union@npm:^2.1.0": version: 2.1.0 resolution: "array-union@npm:2.1.0" @@ -951,18 +808,6 @@ __metadata: languageName: node linkType: hard -"array.prototype.flat@npm:^1.2.5": - version: 1.3.0 - resolution: "array.prototype.flat@npm:1.3.0" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.19.2 - es-shim-unscopables: ^1.0.0 - checksum: 2a652b3e8dc0bebb6117e42a5ab5738af0203a14c27341d7bb2431467bdb4b348e2c5dc555dfcda8af0a5e4075c400b85311ded73861c87290a71a17c3e0a257 - languageName: node - linkType: hard - "arrify@npm:^2.0.0": version: 2.0.1 resolution: "arrify@npm:2.0.1" @@ -1008,13 +853,6 @@ __metadata: languageName: node linkType: hard -"boolean@npm:^3.0.1": - version: 3.2.0 - resolution: "boolean@npm:3.2.0" - checksum: fb29535b8bf710ef45279677a86d14f5185d604557204abd2ca5fa3fb2a5c80e04d695c8dbf13ab269991977a79bb6c04b048220a6b2a3849853faa94f4a7d77 - languageName: node - linkType: hard - "brace-expansion@npm:^1.1.7": version: 1.1.11 resolution: "brace-expansion@npm:1.1.11" @@ -1111,37 +949,34 @@ __metadata: "@notenoughupdates/simplify-number": ^1.0.1 "@notenoughupdates/wolfram-alpha-api": ^1.0.2 "@sapphire/snowflake": ^3.2.2 - "@sentry/integrations": ^7.9.0 - "@sentry/node": ^7.9.0 - "@sentry/tracing": ^7.9.0 - "@sentry/types": ^7.9.0 - "@types/eslint": ^8.4.5 + "@sentry/integrations": ^7.11.1 + "@sentry/node": ^7.11.1 + "@sentry/tracing": ^7.11.1 + "@sentry/types": ^7.11.1 + "@types/eslint": ^8.4.6 "@types/express": ^4.17.13 - "@types/lodash": ^4.14.182 - "@types/node": ^18.6.5 + "@types/lodash": ^4.14.184 + "@types/node": ^18.7.8 "@types/numeral": ^2.0.2 "@types/pg": ^8.6.5 "@types/prettier": ^2.7.0 "@types/rimraf": ^3.0.2 "@types/tinycolor2": ^1.4.3 "@types/validator": ^13.7.5 - "@typescript-eslint/eslint-plugin": ^5.33.0 - "@typescript-eslint/parser": ^5.33.0 + "@typescript-eslint/eslint-plugin": ^5.33.1 + "@typescript-eslint/parser": ^5.33.1 canvas: ^2.9.3 chalk: ^5.0.1 deep-lock: ^1.0.0 discord-akairo: "npm:@notenoughupdates/discord-akairo@dev" discord-api-types: 0.37.1 discord.js: "npm:@notenoughupdates/discord.js@forum" - electron: ^20.0.1 - eslint: ^8.21.0 + eslint: ^8.22.0 eslint-config-prettier: ^8.5.0 eslint-plugin-deprecation: ^1.3.2 - eslint-plugin-import: ^2.26.0 fuse.js: ^6.6.2 gif-to-apng: ^0.1.2 - googleapis: ^105.0.0 - got: ^12.3.1 + googleapis: ^107.0.0 lodash: ^4.17.21 mathjs: ^11.0.1 nanoid: ^4.0.0 @@ -1152,18 +987,18 @@ __metadata: prettier: ^2.7.1 pretty-bytes: ^6.0.0 rimraf: ^3.0.2 - sequelize: 6.21.3 + sequelize: 6.21.4 tinycolor2: ^1.4.2 ts-essentials: ^9.2.0 typescript: ^4.7.4 - vitest: ^0.21.1 + vitest: ^0.22.1 vm2: ^3.9.10 languageName: unknown linkType: soft "cacache@npm:^16.1.0": - version: 16.1.1 - resolution: "cacache@npm:16.1.1" + version: 16.1.2 + resolution: "cacache@npm:16.1.2" dependencies: "@npmcli/fs": ^2.1.0 "@npmcli/move-file": ^2.0.0 @@ -1183,48 +1018,11 @@ __metadata: ssri: ^9.0.0 tar: ^6.1.11 unique-filename: ^1.1.1 - checksum: 488524617008b793f0249b0c4ea2c330c710ca997921376e15650cc2415a8054491ae2dee9f01382c2015602c0641f3f977faf2fa7361aa33d2637dcfb03907a - languageName: node - linkType: hard - -"cacheable-lookup@npm:^6.0.4": - version: 6.1.0 - resolution: "cacheable-lookup@npm:6.1.0" - checksum: 4e37afe897219b1035335b0765106a2c970ffa930497b43cac5000b860f3b17f48d004187279fae97e2e4cbf6a3693709b6d64af65279c7d6c8453321d36d118 - languageName: node - linkType: hard - -"cacheable-request@npm:^6.0.0": - version: 6.1.0 - resolution: "cacheable-request@npm:6.1.0" - dependencies: - clone-response: ^1.0.2 - get-stream: ^5.1.0 - http-cache-semantics: ^4.0.0 - keyv: ^3.0.0 - lowercase-keys: ^2.0.0 - normalize-url: ^4.1.0 - responselike: ^1.0.2 - checksum: b510b237b18d17e89942e9ee2d2a077cb38db03f12167fd100932dfa8fc963424bfae0bfa1598df4ae16c944a5484e43e03df8f32105b04395ee9495e9e4e9f1 + checksum: defe1d6f557ddda178204cac111990da27e8a60ed276fcd608dad7109cc1936e7dcd57d7263d22cdb06a80e7ceb76ab5eb05133c7c7f886abf1d870d722abd6c languageName: node linkType: hard -"cacheable-request@npm:^7.0.2": - version: 7.0.2 - resolution: "cacheable-request@npm:7.0.2" - dependencies: - clone-response: ^1.0.2 - get-stream: ^5.1.0 - http-cache-semantics: ^4.0.0 - keyv: ^4.0.0 - lowercase-keys: ^2.0.0 - normalize-url: ^6.0.1 - responselike: ^2.0.0 - checksum: 6152813982945a5c9989cb457a6c499f12edcc7ade323d2fbfd759abc860bdbd1306e08096916bb413c3c47e812f8e4c0a0cc1e112c8ce94381a960f115bc77f - languageName: node - linkType: hard - -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": +"call-bind@npm:^1.0.0": version: 1.0.2 resolution: "call-bind@npm:1.0.2" dependencies: @@ -1306,15 +1104,6 @@ __metadata: languageName: node linkType: hard -"clone-response@npm:^1.0.2": - version: 1.0.3 - resolution: "clone-response@npm:1.0.3" - dependencies: - mimic-response: ^1.0.0 - checksum: 4e671cac39b11c60aa8ba0a450657194a5d6504df51bca3fac5b3bd0145c4f8e8464898f87c8406b83232e3bc5cca555f51c1f9c8ac023969ebfbf7f6bdabb2e - languageName: node - linkType: hard - "color-convert@npm:^2.0.1": version: 2.0.1 resolution: "color-convert@npm:2.0.1" @@ -1354,16 +1143,6 @@ __metadata: languageName: node linkType: hard -"compress-brotli@npm:^1.3.8": - version: 1.3.8 - resolution: "compress-brotli@npm:1.3.8" - dependencies: - "@types/json-buffer": ~3.0.0 - json-buffer: ~3.0.1 - checksum: de7589d692d40eb362f6c91070b5e51bc10b05a89eabb4a7c76c1aa21b625756f8c101c6999e4df0c4dc6199c5ca2e1353573bfdcca5615810f27485394162a5 - languageName: node - linkType: hard - "concat-map@npm:0.0.1": version: 0.0.1 resolution: "concat-map@npm:0.0.1" @@ -1371,16 +1150,6 @@ __metadata: languageName: node linkType: hard -"config-chain@npm:^1.1.11": - version: 1.1.13 - resolution: "config-chain@npm:1.1.13" - dependencies: - ini: ^1.3.4 - proto-list: ~1.2.1 - checksum: 828137a28e7c2fc4b7fb229bd0cd6c1397bcf83434de54347e608154008f411749041ee392cbe42fab6307e02de4c12480260bf769b7d44b778fdea3839eafab - languageName: node - linkType: hard - "console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0": version: 1.1.0 resolution: "console-control-strings@npm:1.1.0" @@ -1443,37 +1212,10 @@ __metadata: languageName: node linkType: hard -"debug@npm:^2.6.9": - version: 2.6.9 - resolution: "debug@npm:2.6.9" - dependencies: - ms: 2.0.0 - checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6 - languageName: node - linkType: hard - -"debug@npm:^3.2.7": - version: 3.2.7 - resolution: "debug@npm:3.2.7" - dependencies: - ms: ^2.1.1 - checksum: b3d8c5940799914d30314b7c3304a43305fd0715581a919dacb8b3176d024a782062368405b47491516d2091d6462d4d11f2f4974a405048094f8bfebfa3071c - languageName: node - linkType: hard - "decimal.js@npm:^10.3.1": - version: 10.3.1 - resolution: "decimal.js@npm:10.3.1" - checksum: 0351ac9f05fe050f23227aa6a4573bee2d58fa7378fcf28d969a8c789525032effb488a90320fd3fe86a66e17b4bc507d811b15eada5b7f0e7ec5d2af4c24a59 - languageName: node - linkType: hard - -"decompress-response@npm:^3.3.0": - version: 3.3.0 - resolution: "decompress-response@npm:3.3.0" - dependencies: - mimic-response: ^1.0.0 - checksum: 952552ac3bd7de2fc18015086b09468645c9638d98a551305e485230ada278c039c91116e946d07894b39ee53c0f0d5b6473f25a224029344354513b412d7380 + version: 10.4.0 + resolution: "decimal.js@npm:10.4.0" + checksum: 98702d9d817a9e5b3767ea6580e7f3b35544b9454e463a5dd5d3232131470f39067d02864c45cab009eb1200bc162cd26a33d34c622cd79e4657a3e25e95fb4e languageName: node linkType: hard @@ -1486,15 +1228,6 @@ __metadata: languageName: node linkType: hard -"decompress-response@npm:^6.0.0": - version: 6.0.0 - resolution: "decompress-response@npm:6.0.0" - dependencies: - mimic-response: ^3.1.0 - checksum: d377cf47e02d805e283866c3f50d3d21578b779731e8c5072d6ce8c13cc31493db1c2f6784da9d1d5250822120cefa44f1deab112d5981015f2e17444b763812 - languageName: node - linkType: hard - "decompress-tar@npm:^4.0.0, decompress-tar@npm:^4.1.0, decompress-tar@npm:^4.1.1": version: 4.1.1 resolution: "decompress-tar@npm:4.1.1" @@ -1581,30 +1314,6 @@ __metadata: languageName: node linkType: hard -"defer-to-connect@npm:^1.0.1": - version: 1.1.3 - resolution: "defer-to-connect@npm:1.1.3" - checksum: 9491b301dcfa04956f989481ba7a43c2231044206269eb4ab64a52d6639ee15b1252262a789eb4239fb46ab63e44d4e408641bae8e0793d640aee55398cb3930 - languageName: node - linkType: hard - -"defer-to-connect@npm:^2.0.1": - version: 2.0.1 - resolution: "defer-to-connect@npm:2.0.1" - checksum: 8a9b50d2f25446c0bfefb55a48e90afd58f85b21bcf78e9207cd7b804354f6409032a1705c2491686e202e64fc05f147aa5aa45f9aa82627563f045937f5791b - languageName: node - linkType: hard - -"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4": - version: 1.1.4 - resolution: "define-properties@npm:1.1.4" - dependencies: - has-property-descriptors: ^1.0.0 - object-keys: ^1.1.1 - checksum: ce0aef3f9eb193562b5cfb79b2d2c86b6a109dfc9fdcb5f45d680631a1a908c06824ddcdb72b7573b54e26ace07f0a23420aaba0d5c627b34d2c1de8ef527e2b - languageName: node - linkType: hard - "delegates@npm:^1.0.0": version: 1.0.0 resolution: "delegates@npm:1.0.0" @@ -1626,13 +1335,6 @@ __metadata: languageName: node linkType: hard -"detect-node@npm:^2.0.4": - version: 2.1.0 - resolution: "detect-node@npm:2.1.0" - checksum: 832184ec458353e41533ac9c622f16c19f7c02d8b10c303dfd3a756f56be93e903616c0bb2d4226183c9351c15fc0b3dba41a17a2308262afabcfa3776e6ae6e - languageName: node - linkType: hard - "dir-glob@npm:^3.0.1": version: 3.0.1 resolution: "dir-glob@npm:3.0.1" @@ -1684,15 +1386,6 @@ __metadata: languageName: node linkType: hard -"doctrine@npm:^2.1.0": - version: 2.1.0 - resolution: "doctrine@npm:2.1.0" - dependencies: - esutils: ^2.0.2 - checksum: a45e277f7feaed309fe658ace1ff286c6e2002ac515af0aaf37145b8baa96e49899638c7cd47dccf84c3d32abfc113246625b3ac8f552d1046072adee13b0dc8 - languageName: node - linkType: hard - "doctrine@npm:^3.0.0": version: 3.0.0 resolution: "doctrine@npm:3.0.0" @@ -1709,13 +1402,6 @@ __metadata: languageName: node linkType: hard -"duplexer3@npm:^0.1.4": - version: 0.1.5 - resolution: "duplexer3@npm:0.1.5" - checksum: e677cb4c48f031ca728601d6a20bf6aed4c629d69ef9643cb89c67583d673c4ec9317cc6427501f38bd8c368d3a18f173987cc02bd99d8cf8fe3d94259a22a20 - languageName: node - linkType: hard - "ecdsa-sig-formatter@npm:1.0.11, ecdsa-sig-formatter@npm:^1.0.11": version: 1.0.11 resolution: "ecdsa-sig-formatter@npm:1.0.11" @@ -1725,19 +1411,6 @@ __metadata: languageName: node linkType: hard -"electron@npm:^20.0.1": - version: 20.0.1 - resolution: "electron@npm:20.0.1" - dependencies: - "@electron/get": ^1.14.1 - "@types/node": ^16.11.26 - extract-zip: ^2.0.1 - bin: - electron: cli.js - checksum: 1ae66fdd7d9bb03bc8eaead814c429ccc20427cfc430ab70cd55c24e3f948c2aab7713de3478894ce15e5436bc4c5353b538062420b493f17bc62a626b836abe - languageName: node - linkType: hard - "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" @@ -1745,13 +1418,6 @@ __metadata: languageName: node linkType: hard -"encodeurl@npm:^1.0.2": - version: 1.0.2 - resolution: "encodeurl@npm:1.0.2" - checksum: e50e3d508cdd9c4565ba72d2012e65038e5d71bdc9198cb125beb6237b5b1ade6c0d343998da9e170fb2eae52c1bed37d4d6d98a46ea423a0cddbed5ac3f780c - languageName: node - linkType: hard - "encoding@npm:^0.1.13": version: 0.1.13 resolution: "encoding@npm:0.1.13" @@ -1761,7 +1427,7 @@ __metadata: languageName: node linkType: hard -"end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0": +"end-of-stream@npm:^1.0.0": version: 1.4.4 resolution: "end-of-stream@npm:1.4.4" dependencies: @@ -1784,64 +1450,6 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.1, es-abstract@npm:^1.19.2, es-abstract@npm:^1.19.5": - version: 1.20.1 - resolution: "es-abstract@npm:1.20.1" - dependencies: - call-bind: ^1.0.2 - es-to-primitive: ^1.2.1 - function-bind: ^1.1.1 - function.prototype.name: ^1.1.5 - get-intrinsic: ^1.1.1 - get-symbol-description: ^1.0.0 - has: ^1.0.3 - has-property-descriptors: ^1.0.0 - has-symbols: ^1.0.3 - internal-slot: ^1.0.3 - is-callable: ^1.2.4 - is-negative-zero: ^2.0.2 - is-regex: ^1.1.4 - is-shared-array-buffer: ^1.0.2 - is-string: ^1.0.7 - is-weakref: ^1.0.2 - object-inspect: ^1.12.0 - object-keys: ^1.1.1 - object.assign: ^4.1.2 - regexp.prototype.flags: ^1.4.3 - string.prototype.trimend: ^1.0.5 - string.prototype.trimstart: ^1.0.5 - unbox-primitive: ^1.0.2 - checksum: 28da27ae0ed9c76df7ee8ef5c278df79dcfdb554415faf7068bb7c58f8ba8e2a16bfb59e586844be6429ab4c302ca7748979d48442224cb1140b051866d74b7f - languageName: node - linkType: hard - -"es-shim-unscopables@npm:^1.0.0": - version: 1.0.0 - resolution: "es-shim-unscopables@npm:1.0.0" - dependencies: - has: ^1.0.3 - checksum: 83e95cadbb6ee44d3644dfad60dcad7929edbc42c85e66c3e99aefd68a3a5c5665f2686885cddb47dfeabfd77bd5ea5a7060f2092a955a729bbd8834f0d86fa1 - languageName: node - linkType: hard - -"es-to-primitive@npm:^1.2.1": - version: 1.2.1 - resolution: "es-to-primitive@npm:1.2.1" - dependencies: - is-callable: ^1.1.4 - is-date-object: ^1.0.1 - is-symbol: ^1.0.2 - checksum: 4ead6671a2c1402619bdd77f3503991232ca15e17e46222b0a41a5d81aebc8740a77822f5b3c965008e631153e9ef0580540007744521e72de8e33599fca2eed - languageName: node - linkType: hard - -"es6-error@npm:^4.1.1": - version: 4.1.1 - resolution: "es6-error@npm:4.1.1" - checksum: ae41332a51ec1323da6bbc5d75b7803ccdeddfae17c41b6166ebbafc8e8beb7a7b80b884b7fab1cc80df485860ac3c59d78605e860bb4f8cd816b3d6ade0d010 - languageName: node - linkType: hard - "esbuild-android-64@npm:0.14.54": version: 0.14.54 resolution: "esbuild-android-64@npm:0.14.54" @@ -2081,26 +1689,6 @@ __metadata: languageName: node linkType: hard -"eslint-import-resolver-node@npm:^0.3.6": - version: 0.3.6 - resolution: "eslint-import-resolver-node@npm:0.3.6" - dependencies: - debug: ^3.2.7 - resolve: ^1.20.0 - checksum: 6266733af1e112970e855a5bcc2d2058fb5ae16ad2a6d400705a86b29552b36131ffc5581b744c23d550de844206fb55e9193691619ee4dbf225c4bde526b1c8 - languageName: node - linkType: hard - -"eslint-module-utils@npm:^2.7.3": - version: 2.7.3 - resolution: "eslint-module-utils@npm:2.7.3" - dependencies: - debug: ^3.2.7 - find-up: ^2.1.0 - checksum: 77048263f309167a1e6a1e1b896bfb5ddd1d3859b2e2abbd9c32c432aee13d610d46e6820b1ca81b37fba437cf423a404bc6649be64ace9148a3062d1886a678 - languageName: node - linkType: hard - "eslint-plugin-deprecation@npm:^1.3.2": version: 1.3.2 resolution: "eslint-plugin-deprecation@npm:1.3.2" @@ -2115,29 +1703,6 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-import@npm:^2.26.0": - version: 2.26.0 - resolution: "eslint-plugin-import@npm:2.26.0" - dependencies: - array-includes: ^3.1.4 - array.prototype.flat: ^1.2.5 - debug: ^2.6.9 - doctrine: ^2.1.0 - eslint-import-resolver-node: ^0.3.6 - eslint-module-utils: ^2.7.3 - has: ^1.0.3 - is-core-module: ^2.8.1 - is-glob: ^4.0.3 - minimatch: ^3.1.2 - object.values: ^1.1.5 - resolve: ^1.22.0 - tsconfig-paths: ^3.14.1 - peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - checksum: 0bf77ad80339554481eafa2b1967449e1f816b94c7a6f9614ce33fb4083c4e6c050f10d241dd50b4975d47922880a34de1e42ea9d8e6fd663ebb768baa67e655 - languageName: node - linkType: hard - "eslint-scope@npm:^5.1.1": version: 5.1.1 resolution: "eslint-scope@npm:5.1.1" @@ -2183,9 +1748,9 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^8.21.0": - version: 8.21.0 - resolution: "eslint@npm:8.21.0" +"eslint@npm:^8.22.0": + version: 8.22.0 + resolution: "eslint@npm:8.22.0" dependencies: "@eslint/eslintrc": ^1.3.0 "@humanwhocodes/config-array": ^0.10.4 @@ -2228,7 +1793,7 @@ __metadata: v8-compile-cache: ^2.0.3 bin: eslint: bin/eslint.js - checksum: 1d39ddb08772ea230cb7d74f7f81f85b9d46965d3600725c7eb39a27bcdaf28cb2a780dacf6cfa1cfbf2da606b57a5e7e3ab373ab474cbcf0ba042076821f501 + checksum: 2d84a7a2207138cdb250759b047fdb05a57fede7f87b7a039d9370edba7f26e23a873a208becfd4b2c9e4b5499029f3fc3b9318da3290e693d25c39084119c80 languageName: node linkType: hard @@ -2282,13 +1847,6 @@ __metadata: languageName: node linkType: hard -"event-target-shim@npm:^5.0.0": - version: 5.0.1 - resolution: "event-target-shim@npm:5.0.1" - checksum: 1ffe3bb22a6d51bdeb6bf6f7cf97d2ff4a74b017ad12284cc9e6a279e727dc30a5de6bb613e5596ff4dc3e517841339ad09a7eec44266eccb1aa201a30448166 - languageName: node - linkType: hard - "execa@npm:^0.6.3": version: 0.6.3 resolution: "execa@npm:0.6.3" @@ -2311,23 +1869,6 @@ __metadata: languageName: node linkType: hard -"extract-zip@npm:^2.0.1": - version: 2.0.1 - resolution: "extract-zip@npm:2.0.1" - dependencies: - "@types/yauzl": ^2.9.1 - debug: ^4.1.1 - get-stream: ^5.1.0 - yauzl: ^2.10.0 - dependenciesMeta: - "@types/yauzl": - optional: true - bin: - extract-zip: cli.js - checksum: 8cbda9debdd6d6980819cc69734d874ddd71051c9fe5bde1ef307ebcedfe949ba57b004894b585f758b7c9eeeea0e3d87f2dda89b7d25320459c2c9643ebb635 - languageName: node - linkType: hard - "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" @@ -2447,15 +1988,6 @@ __metadata: languageName: node linkType: hard -"find-up@npm:^2.1.0": - version: 2.1.0 - resolution: "find-up@npm:2.1.0" - dependencies: - locate-path: ^2.0.0 - checksum: 43284fe4da09f89011f08e3c32cd38401e786b19226ea440b75386c1b12a4cb738c94969808d53a84f564ede22f732c8409e3cfc3f7fb5b5c32378ad0bbf28bd - languageName: node - linkType: hard - "find-up@npm:^5.0.0": version: 5.0.0 resolution: "find-up@npm:5.0.0" @@ -2477,16 +2009,9 @@ __metadata: linkType: hard "flatted@npm:^3.1.0": - version: 3.2.6 - resolution: "flatted@npm:3.2.6" - checksum: 33b87aa88dfa40ca6ee31d7df61712bbbad3d3c05c132c23e59b9b61d34631b337a18ff2b8dc5553acdc871ec72b741e485f78969cf006124a3f57174de29a0e - languageName: node - linkType: hard - -"form-data-encoder@npm:^2.0.1": - version: 2.0.1 - resolution: "form-data-encoder@npm:2.0.1" - checksum: 66a8dd84d7fcbab5fdaec9382f29e26a12b625d491ddfd267c7c7b0bf5b41b142c51826d4b89155fa975c09ea32b67000b6d01074410d57d6a7adee7405754c0 + version: 3.2.7 + resolution: "flatted@npm:3.2.7" + checksum: 427633049d55bdb80201c68f7eb1cbd533e03eac541f97d3aecab8c5526f12a20ccecaeede08b57503e772c769e7f8680b37e8d482d1e5f8d7e2194687f9ea35 languageName: node linkType: hard @@ -2513,17 +2038,6 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^8.1.0": - version: 8.1.0 - resolution: "fs-extra@npm:8.1.0" - dependencies: - graceful-fs: ^4.2.0 - jsonfile: ^4.0.0 - universalify: ^0.1.0 - checksum: bf44f0e6cea59d5ce071bba4c43ca76d216f89e402dc6285c128abc0902e9b8525135aa808adad72c9d5d218e9f4bcc63962815529ff2f684ad532172a284880 - languageName: node - linkType: hard - "fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": version: 2.1.0 resolution: "fs-minipass@npm:2.1.0" @@ -2566,18 +2080,6 @@ __metadata: languageName: node linkType: hard -"function.prototype.name@npm:^1.1.5": - version: 1.1.5 - resolution: "function.prototype.name@npm:1.1.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.19.0 - functions-have-names: ^1.2.2 - checksum: acd21d733a9b649c2c442f067567743214af5fa248dbeee69d8278ce7df3329ea5abac572be9f7470b4ec1cd4d8f1040e3c5caccf98ebf2bf861a0deab735c27 - languageName: node - linkType: hard - "functional-red-black-tree@npm:^1.0.1": version: 1.0.1 resolution: "functional-red-black-tree@npm:1.0.1" @@ -2585,13 +2087,6 @@ __metadata: languageName: node linkType: hard -"functions-have-names@npm:^1.2.2": - version: 1.2.3 - resolution: "functions-have-names@npm:1.2.3" - checksum: c3f1f5ba20f4e962efb71344ce0a40722163e85bee2101ce25f88214e78182d2d2476aa85ef37950c579eb6cf6ee811c17b3101bb84004bb75655f3e33f3fdb5 - languageName: node - linkType: hard - "fuse.js@npm:^6.6.2": version: 6.6.2 resolution: "fuse.js@npm:6.6.2" @@ -2632,20 +2127,7 @@ __metadata: languageName: node linkType: hard -"gaxios@npm:^4.0.0": - version: 4.3.3 - resolution: "gaxios@npm:4.3.3" - dependencies: - abort-controller: ^3.0.0 - extend: ^3.0.2 - https-proxy-agent: ^5.0.0 - is-stream: ^2.0.0 - node-fetch: ^2.6.7 - checksum: 0b72a00875404e2c3d7aca9f32535e931d7b0ebb850dc92fafc1685b99a109b04205c63e4637a2d0d9a261ac50adf83f7d33435f73e256dcca32564ef9358fee - languageName: node - linkType: hard - -"gaxios@npm:^5.0.0": +"gaxios@npm:^5.0.0, gaxios@npm:^5.0.1": version: 5.0.1 resolution: "gaxios@npm:5.0.1" dependencies: @@ -2674,7 +2156,7 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.0, get-intrinsic@npm:^1.1.1": +"get-intrinsic@npm:^1.0.2": version: 1.1.2 resolution: "get-intrinsic@npm:1.1.2" dependencies: @@ -2702,41 +2184,6 @@ __metadata: languageName: node linkType: hard -"get-stream@npm:^4.1.0": - version: 4.1.0 - resolution: "get-stream@npm:4.1.0" - dependencies: - pump: ^3.0.0 - checksum: 443e1914170c15bd52ff8ea6eff6dfc6d712b031303e36302d2778e3de2506af9ee964d6124010f7818736dcfde05c04ba7ca6cc26883106e084357a17ae7d73 - languageName: node - linkType: hard - -"get-stream@npm:^5.1.0": - version: 5.2.0 - resolution: "get-stream@npm:5.2.0" - dependencies: - pump: ^3.0.0 - checksum: 8bc1a23174a06b2b4ce600df38d6c98d2ef6d84e020c1ddad632ad75bac4e092eeb40e4c09e0761c35fc2dbc5e7fff5dab5e763a383582c4a167dd69a905bd12 - languageName: node - linkType: hard - -"get-stream@npm:^6.0.1": - version: 6.0.1 - resolution: "get-stream@npm:6.0.1" - checksum: e04ecece32c92eebf5b8c940f51468cd53554dcbb0ea725b2748be583c9523d00128137966afce410b9b051eb2ef16d657cd2b120ca8edafcf5a65e81af63cad - languageName: node - linkType: hard - -"get-symbol-description@npm:^1.0.0": - version: 1.0.0 - resolution: "get-symbol-description@npm:1.0.0" - dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.1 - checksum: 9ceff8fe968f9270a37a1f73bf3f1f7bda69ca80f4f80850670e0e7b9444ff99323f7ac52f96567f8b5f5fbe7ac717a0d81d3407c7313e82810c6199446a5247 - languageName: node - linkType: hard - "gif-to-apng@npm:^0.1.2": version: 0.1.2 resolution: "gif-to-apng@npm:0.1.2" @@ -2792,32 +2239,6 @@ __metadata: languageName: node linkType: hard -"global-agent@npm:^3.0.0": - version: 3.0.0 - resolution: "global-agent@npm:3.0.0" - dependencies: - boolean: ^3.0.1 - es6-error: ^4.1.1 - matcher: ^3.0.0 - roarr: ^2.15.3 - semver: ^7.3.2 - serialize-error: ^7.0.1 - checksum: 75074d80733b4bd5386c47f5df028e798018025beac0ab310e9908c72bf5639e408203e7bca0130d5ee01b5f4abc6d34385d96a9f950ea5fe1979bb431c808f7 - languageName: node - linkType: hard - -"global-tunnel-ng@npm:^2.7.1": - version: 2.7.1 - resolution: "global-tunnel-ng@npm:2.7.1" - dependencies: - encodeurl: ^1.0.2 - lodash: ^4.17.10 - npm-conf: ^1.1.3 - tunnel: ^0.0.6 - checksum: b7e016093eab6058b5fdd8caea31c22dc1a607f0f0b41c001ade5e0227c5d74efe9ce9bae56316d794bc1cedd461a187b8b7e8f0a3eb4d194972cdfb9d860af2 - languageName: node - linkType: hard - "globals@npm:^13.15.0": version: 13.17.0 resolution: "globals@npm:13.17.0" @@ -2827,15 +2248,6 @@ __metadata: languageName: node linkType: hard -"globalthis@npm:^1.0.1": - version: 1.0.3 - resolution: "globalthis@npm:1.0.3" - dependencies: - define-properties: ^1.1.3 - checksum: fbd7d760dc464c886d0196166d92e5ffb4c84d0730846d6621a39fbbc068aeeb9c8d1421ad330e94b7bca4bb4ea092f5f21f3d36077812af5d098b4dc006c998 - languageName: node - linkType: hard - "globby@npm:^11.1.0": version: 11.1.0 resolution: "globby@npm:11.1.0" @@ -2851,8 +2263,8 @@ __metadata: linkType: hard "google-auth-library@npm:^8.0.2": - version: 8.1.1 - resolution: "google-auth-library@npm:8.1.1" + version: 8.3.0 + resolution: "google-auth-library@npm:8.3.0" dependencies: arrify: ^2.0.0 base64-js: ^1.3.0 @@ -2863,7 +2275,7 @@ __metadata: gtoken: ^6.0.0 jws: ^4.0.0 lru-cache: ^6.0.0 - checksum: 581badf70974b900cdf6fa1749a14f8a42885cfab8ce5731101e40de286d977e30845e6815f58ea329eaf7ee4678262415ab1ea13aa29bce3609131be967787c + checksum: abae50667afc0835c8957173d6464eb3fa2c53deea17fee54cbb050114e096f86b85dd3825d2f6980e67f13756e5d7a69bb4d48282c397ee165dfbb6072714b4 languageName: node linkType: hard @@ -2879,70 +2291,30 @@ __metadata: linkType: hard "googleapis-common@npm:^6.0.0": - version: 6.0.0 - resolution: "googleapis-common@npm:6.0.0" + version: 6.0.1 + resolution: "googleapis-common@npm:6.0.1" dependencies: extend: ^3.0.2 - gaxios: ^4.0.0 + gaxios: ^5.0.1 google-auth-library: ^8.0.2 qs: ^6.7.0 url-template: ^2.0.8 uuid: ^8.0.0 - checksum: a6c697ac0c829f7bdfcfe32f5fb16fbf7b864cc173257c09eff6e4893f3bd56064904f7b6843d4c8ff074b128609c6cc2ac7490aaf9ed70cab417dc2fb54236b + checksum: 46bfdd4673006075e3349500e312f2267f1d2830434d76b7b20d8de3ebfb9c5a3f525cc88b6e89f5d8f5f8f3ff9fcee90e4667dac45306cddb05d0f70b97b999 languageName: node linkType: hard -"googleapis@npm:^105.0.0": - version: 105.0.0 - resolution: "googleapis@npm:105.0.0" +"googleapis@npm:^107.0.0": + version: 107.0.0 + resolution: "googleapis@npm:107.0.0" dependencies: google-auth-library: ^8.0.2 googleapis-common: ^6.0.0 - checksum: 39056eed8b5d861dffa591af7d23cd8761752e7f47f57811de8781781d9f917a2e4eee555fc70fcbd17aa07668e65d8f5e38870114adb4877a3cb95b5f7530e8 - languageName: node - linkType: hard - -"got@npm:^12.3.1": - version: 12.3.1 - resolution: "got@npm:12.3.1" - dependencies: - "@sindresorhus/is": ^5.2.0 - "@szmarczak/http-timer": ^5.0.1 - "@types/cacheable-request": ^6.0.2 - "@types/responselike": ^1.0.0 - cacheable-lookup: ^6.0.4 - cacheable-request: ^7.0.2 - decompress-response: ^6.0.0 - form-data-encoder: ^2.0.1 - get-stream: ^6.0.1 - http2-wrapper: ^2.1.10 - lowercase-keys: ^3.0.0 - p-cancelable: ^3.0.0 - responselike: ^2.0.0 - checksum: 156bc4dd7300b5945a2648b18d03610a674d9d3ae54c557f85cf5026f3f6362801b561413898d5e86f554791de88841685ca48674b1fc4d462621de8d2186300 - languageName: node - linkType: hard - -"got@npm:^9.6.0": - version: 9.6.0 - resolution: "got@npm:9.6.0" - dependencies: - "@sindresorhus/is": ^0.14.0 - "@szmarczak/http-timer": ^1.1.2 - cacheable-request: ^6.0.0 - decompress-response: ^3.3.0 - duplexer3: ^0.1.4 - get-stream: ^4.1.0 - lowercase-keys: ^1.0.1 - mimic-response: ^1.0.1 - p-cancelable: ^1.0.0 - to-readable-stream: ^1.0.0 - url-parse-lax: ^3.0.0 - checksum: 941807bd9704bacf5eb401f0cc1212ffa1f67c6642f2d028fd75900471c221b1da2b8527f4553d2558f3faeda62ea1cf31665f8b002c6137f5de8732f07370b0 + checksum: 6cf90ad0039d61d65aacdfca9eb98af55ae380ec1b4cea43b58b49d765b924e8b5307e4c4e3b0f0128f53cab813fbdeaaf36522b60bb0a114c218c62a95f8f97 languageName: node linkType: hard -"graceful-fs@npm:^4.1.10, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.6": +"graceful-fs@npm:^4.1.10, graceful-fs@npm:^4.2.6": version: 4.2.10 resolution: "graceful-fs@npm:4.2.10" checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da @@ -2957,20 +2329,13 @@ __metadata: linkType: hard "gtoken@npm:^6.0.0": - version: 6.1.0 - resolution: "gtoken@npm:6.1.0" + version: 6.1.1 + resolution: "gtoken@npm:6.1.1" dependencies: - gaxios: ^4.0.0 + gaxios: ^5.0.1 google-p12-pem: ^4.0.0 jws: ^4.0.0 - checksum: 23a1d954e0644fb42127cf3fc70f73dab984de3667c9b0952f50be36b52840eb6e953d5051de92cc9ae71ecfcfa310d1d086b578e3609b2ed3cd9dd61a194baa - languageName: node - linkType: hard - -"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": - version: 1.0.2 - resolution: "has-bigints@npm:1.0.2" - checksum: 390e31e7be7e5c6fe68b81babb73dfc35d413604d7ee5f56da101417027a4b4ce6a27e46eff97ad040c835b5d228676eae99a9b5c3bc0e23c8e81a49241ff45b + checksum: f063ed3f418f5a9c33fbe599b09f56a55b18f6c8d2913f11cc2fc5025d53b96fd6ab1b4deb2c7631167d6b89d0939e4ea77f94767fcf338862ffda8911250980 languageName: node linkType: hard @@ -2981,31 +2346,13 @@ __metadata: languageName: node linkType: hard -"has-property-descriptors@npm:^1.0.0": - version: 1.0.0 - resolution: "has-property-descriptors@npm:1.0.0" - dependencies: - get-intrinsic: ^1.1.1 - checksum: a6d3f0a266d0294d972e354782e872e2fe1b6495b321e6ef678c9b7a06a40408a6891817350c62e752adced73a94ac903c54734fee05bf65b1905ee1368194bb - languageName: node - linkType: hard - -"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": +"has-symbols@npm:^1.0.3": version: 1.0.3 resolution: "has-symbols@npm:1.0.3" checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 languageName: node linkType: hard -"has-tostringtag@npm:^1.0.0": - version: 1.0.0 - resolution: "has-tostringtag@npm:1.0.0" - dependencies: - has-symbols: ^1.0.2 - checksum: cc12eb28cb6ae22369ebaad3a8ab0799ed61270991be88f208d508076a1e99abe4198c965935ce85ea90b60c94ddda73693b0920b58e7ead048b4a391b502c1c - languageName: node - linkType: hard - "has-unicode@npm:^2.0.1": version: 2.0.1 resolution: "has-unicode@npm:2.0.1" @@ -3022,7 +2369,7 @@ __metadata: languageName: node linkType: hard -"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.0": +"http-cache-semantics@npm:^4.1.0": version: 4.1.0 resolution: "http-cache-semantics@npm:4.1.0" checksum: 974de94a81c5474be07f269f9fd8383e92ebb5a448208223bfb39e172a9dbc26feff250192ecc23b9593b3f92098e010406b0f24bd4d588d631f80214648ed42 @@ -3040,16 +2387,6 @@ __metadata: languageName: node linkType: hard -"http2-wrapper@npm:^2.1.10": - version: 2.1.11 - resolution: "http2-wrapper@npm:2.1.11" - dependencies: - quick-lru: ^5.1.1 - resolve-alpn: ^1.2.0 - checksum: 5da05aa2c77226ac9cc82c616383f59c8f31b79897b02ecbe44b09714be1fca1f21bb184e672a669ca2830eefea4edac5f07e71c00cb5a8c5afec8e5a20cfaf7 - languageName: node - linkType: hard - "https-proxy-agent@npm:^5.0.0": version: 5.0.1 resolution: "https-proxy-agent@npm:5.0.1" @@ -3154,24 +2491,6 @@ __metadata: languageName: node linkType: hard -"ini@npm:^1.3.4": - version: 1.3.8 - resolution: "ini@npm:1.3.8" - checksum: dfd98b0ca3a4fc1e323e38a6c8eb8936e31a97a918d3b377649ea15bdb15d481207a0dda1021efbd86b464cae29a0d33c1d7dcaf6c5672bee17fa849bc50a1b3 - languageName: node - linkType: hard - -"internal-slot@npm:^1.0.3": - version: 1.0.3 - resolution: "internal-slot@npm:1.0.3" - dependencies: - get-intrinsic: ^1.1.0 - has: ^1.0.3 - side-channel: ^1.0.4 - checksum: 1944f92e981e47aebc98a88ff0db579fd90543d937806104d0b96557b10c1f170c51fb777b97740a8b6ddeec585fca8c39ae99fd08a8e058dfc8ab70937238bf - languageName: node - linkType: hard - "ip@npm:^2.0.0": version: 2.0.0 resolution: "ip@npm:2.0.0" @@ -3179,33 +2498,7 @@ __metadata: languageName: node linkType: hard -"is-bigint@npm:^1.0.1": - version: 1.0.4 - resolution: "is-bigint@npm:1.0.4" - dependencies: - has-bigints: ^1.0.1 - checksum: c56edfe09b1154f8668e53ebe8252b6f185ee852a50f9b41e8d921cb2bed425652049fbe438723f6cb48a63ca1aa051e948e7e401e093477c99c84eba244f666 - languageName: node - linkType: hard - -"is-boolean-object@npm:^1.1.0": - version: 1.1.2 - resolution: "is-boolean-object@npm:1.1.2" - dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: c03b23dbaacadc18940defb12c1c0e3aaece7553ef58b162a0f6bba0c2a7e1551b59f365b91e00d2dbac0522392d576ef322628cb1d036a0fe51eb466db67222 - languageName: node - linkType: hard - -"is-callable@npm:^1.1.4, is-callable@npm:^1.2.4": - version: 1.2.4 - resolution: "is-callable@npm:1.2.4" - checksum: 1a28d57dc435797dae04b173b65d6d1e77d4f16276e9eff973f994eadcfdc30a017e6a597f092752a083c1103cceb56c91e3dadc6692fedb9898dfaba701575f - languageName: node - linkType: hard - -"is-core-module@npm:^2.8.1, is-core-module@npm:^2.9.0": +"is-core-module@npm:^2.9.0": version: 2.10.0 resolution: "is-core-module@npm:2.10.0" dependencies: @@ -3214,15 +2507,6 @@ __metadata: languageName: node linkType: hard -"is-date-object@npm:^1.0.1": - version: 1.0.5 - resolution: "is-date-object@npm:1.0.5" - dependencies: - has-tostringtag: ^1.0.0 - checksum: baa9077cdf15eb7b58c79398604ca57379b2fc4cf9aa7a9b9e295278648f628c9b201400c01c5e0f7afae56507d741185730307cbe7cad3b9f90a77e5ee342fc - languageName: node - linkType: hard - "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" @@ -3260,22 +2544,6 @@ __metadata: languageName: node linkType: hard -"is-negative-zero@npm:^2.0.2": - version: 2.0.2 - resolution: "is-negative-zero@npm:2.0.2" - checksum: f3232194c47a549da60c3d509c9a09be442507616b69454716692e37ae9f37c4dea264fb208ad0c9f3efd15a796a46b79df07c7e53c6227c32170608b809149a - languageName: node - linkType: hard - -"is-number-object@npm:^1.0.4": - version: 1.0.7 - resolution: "is-number-object@npm:1.0.7" - dependencies: - has-tostringtag: ^1.0.0 - checksum: d1e8d01bb0a7134c74649c4e62da0c6118a0bfc6771ea3c560914d52a627873e6920dd0fd0ebc0e12ad2ff4687eac4c308f7e80320b973b2c8a2c8f97a7524f7 - languageName: node - linkType: hard - "is-number@npm:^7.0.0": version: 7.0.0 resolution: "is-number@npm:7.0.0" @@ -3283,25 +2551,6 @@ __metadata: languageName: node linkType: hard -"is-regex@npm:^1.1.4": - version: 1.1.4 - resolution: "is-regex@npm:1.1.4" - dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: 362399b33535bc8f386d96c45c9feb04cf7f8b41c182f54174c1a45c9abbbe5e31290bbad09a458583ff6bf3b2048672cdb1881b13289569a7c548370856a652 - languageName: node - linkType: hard - -"is-shared-array-buffer@npm:^1.0.2": - version: 1.0.2 - resolution: "is-shared-array-buffer@npm:1.0.2" - dependencies: - call-bind: ^1.0.2 - checksum: 9508929cf14fdc1afc9d61d723c6e8d34f5e117f0bffda4d97e7a5d88c3a8681f633a74f8e3ad1fe92d5113f9b921dc5ca44356492079612f9a247efbce7032a - languageName: node - linkType: hard - "is-stream@npm:^1.1.0": version: 1.1.0 resolution: "is-stream@npm:1.1.0" @@ -3316,33 +2565,6 @@ __metadata: languageName: node linkType: hard -"is-string@npm:^1.0.5, is-string@npm:^1.0.7": - version: 1.0.7 - resolution: "is-string@npm:1.0.7" - dependencies: - has-tostringtag: ^1.0.0 - checksum: 323b3d04622f78d45077cf89aab783b2f49d24dc641aa89b5ad1a72114cfeff2585efc8c12ef42466dff32bde93d839ad321b26884cf75e5a7892a938b089989 - languageName: node - linkType: hard - -"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.4 - resolution: "is-symbol@npm:1.0.4" - dependencies: - has-symbols: ^1.0.2 - checksum: 92805812ef590738d9de49d677cd17dfd486794773fb6fa0032d16452af46e9b91bb43ffe82c983570f015b37136f4b53b28b8523bfb10b0ece7a66c31a54510 - languageName: node - linkType: hard - -"is-weakref@npm:^1.0.2": - version: 1.0.2 - resolution: "is-weakref@npm:1.0.2" - dependencies: - call-bind: ^1.0.2 - checksum: 95bd9a57cdcb58c63b1c401c60a474b0f45b94719c30f548c891860f051bc2231575c290a6b420c6bc6e7ed99459d424c652bd5bf9a1d5259505dc35b4bf83de - languageName: node - linkType: hard - "isarray@npm:~1.0.0": version: 1.0.0 resolution: "isarray@npm:1.0.0" @@ -3384,20 +2606,6 @@ __metadata: languageName: node linkType: hard -"json-buffer@npm:3.0.0": - version: 3.0.0 - resolution: "json-buffer@npm:3.0.0" - checksum: 0cecacb8025370686a916069a2ff81f7d55167421b6aa7270ee74e244012650dd6bce22b0852202ea7ff8624fce50ff0ec1bdf95914ccb4553426e290d5a63fa - languageName: node - linkType: hard - -"json-buffer@npm:3.0.1, json-buffer@npm:~3.0.1": - version: 3.0.1 - resolution: "json-buffer@npm:3.0.1" - checksum: 9026b03edc2847eefa2e37646c579300a1f3a4586cfb62bf857832b60c852042d0d6ae55d1afb8926163fa54c2b01d83ae24705f34990348bdac6273a29d4581 - languageName: node - linkType: hard - "json-schema-traverse@npm:^0.4.1": version: 0.4.1 resolution: "json-schema-traverse@npm:0.4.1" @@ -3412,36 +2620,6 @@ __metadata: languageName: node linkType: hard -"json-stringify-safe@npm:^5.0.1": - version: 5.0.1 - resolution: "json-stringify-safe@npm:5.0.1" - checksum: 48ec0adad5280b8a96bb93f4563aa1667fd7a36334f79149abd42446d0989f2ddc58274b479f4819f1f00617957e6344c886c55d05a4e15ebb4ab931e4a6a8ee - languageName: node - linkType: hard - -"json5@npm:^1.0.1": - version: 1.0.1 - resolution: "json5@npm:1.0.1" - dependencies: - minimist: ^1.2.0 - bin: - json5: lib/cli.js - checksum: e76ea23dbb8fc1348c143da628134a98adf4c5a4e8ea2adaa74a80c455fc2cdf0e2e13e6398ef819bfe92306b610ebb2002668ed9fc1af386d593691ef346fc3 - languageName: node - linkType: hard - -"jsonfile@npm:^4.0.0": - version: 4.0.0 - resolution: "jsonfile@npm:4.0.0" - dependencies: - graceful-fs: ^4.1.6 - dependenciesMeta: - graceful-fs: - optional: true - checksum: 6447d6224f0d31623eef9b51185af03ac328a7553efcee30fa423d98a9e276ca08db87d71e17f2310b0263fd3ffa6c2a90a6308367f661dc21580f9469897c9e - languageName: node - linkType: hard - "jwa@npm:^2.0.0": version: 2.0.0 resolution: "jwa@npm:2.0.0" @@ -3463,25 +2641,6 @@ __metadata: languageName: node linkType: hard -"keyv@npm:^3.0.0": - version: 3.1.0 - resolution: "keyv@npm:3.1.0" - dependencies: - json-buffer: 3.0.0 - checksum: bb7e8f3acffdbafbc2dd5b63f377fe6ec4c0e2c44fc82720449ef8ab54f4a7ce3802671ed94c0f475ae0a8549703353a2124561fcf3317010c141b32ca1ce903 - languageName: node - linkType: hard - -"keyv@npm:^4.0.0": - version: 4.3.3 - resolution: "keyv@npm:4.3.3" - dependencies: - compress-brotli: ^1.3.8 - json-buffer: 3.0.1 - checksum: bcc946eeec3407fb3b42d831ce985357162113c5f07a8c45c12ede39704ba2d99be4c3dded76d2d2d2a2366627e42440bdde24393216164156928399949c12a1 - languageName: node - linkType: hard - "levn@npm:^0.4.1": version: 0.4.1 resolution: "levn@npm:0.4.1" @@ -3517,16 +2676,6 @@ __metadata: languageName: node linkType: hard -"locate-path@npm:^2.0.0": - version: 2.0.0 - resolution: "locate-path@npm:2.0.0" - dependencies: - p-locate: ^2.0.0 - path-exists: ^3.0.0 - checksum: 02d581edbbbb0fa292e28d96b7de36b5b62c2fa8b5a7e82638ebb33afa74284acf022d3b1e9ae10e3ffb7658fbc49163fcd5e76e7d1baaa7801c3e05a81da755 - languageName: node - linkType: hard - "locate-path@npm:^6.0.0": version: 6.0.0 resolution: "locate-path@npm:6.0.0" @@ -3557,7 +2706,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.17.10, lodash@npm:^4.17.21": +"lodash@npm:^4.17.21": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 @@ -3573,27 +2722,6 @@ __metadata: languageName: node linkType: hard -"lowercase-keys@npm:^1.0.0, lowercase-keys@npm:^1.0.1": - version: 1.0.1 - resolution: "lowercase-keys@npm:1.0.1" - checksum: 4d045026595936e09953e3867722e309415ff2c80d7701d067546d75ef698dac218a4f53c6d1d0e7368b47e45fd7529df47e6cb56fbb90523ba599f898b3d147 - languageName: node - linkType: hard - -"lowercase-keys@npm:^2.0.0": - version: 2.0.0 - resolution: "lowercase-keys@npm:2.0.0" - checksum: 24d7ebd56ccdf15ff529ca9e08863f3c54b0b9d1edb97a3ae1af34940ae666c01a1e6d200707bce730a8ef76cb57cc10e65f245ecaaf7e6bc8639f2fb460ac23 - languageName: node - linkType: hard - -"lowercase-keys@npm:^3.0.0": - version: 3.0.0 - resolution: "lowercase-keys@npm:3.0.0" - checksum: 67a3f81409af969bc0c4ca0e76cd7d16adb1e25aa1c197229587eaf8671275c8c067cd421795dbca4c81be0098e4c426a086a05e30de8a9c587b7a13c0c7ccc5 - languageName: node - linkType: hard - "lru-cache@npm:^4.0.1": version: 4.1.5 resolution: "lru-cache@npm:4.1.5" @@ -3614,9 +2742,9 @@ __metadata: linkType: hard "lru-cache@npm:^7.7.1": - version: 7.13.2 - resolution: "lru-cache@npm:7.13.2" - checksum: dfed24e52bae95edf490d0f28f4f14552319ac7e7dc37ae0b84a72e084949233821b33227271abe81d8361ac079810f9d171a706f316cfdeda135012e4311015 + version: 7.14.0 + resolution: "lru-cache@npm:7.14.0" + checksum: efdd329f2c1bb790b71d497c6c59272e6bc2d7dd060ba55fc136becd3dd31fc8346edb446275504d94cb60d3c8385dbf5267b79b23789e409b2bdf302d13f0d7 languageName: node linkType: hard @@ -3646,8 +2774,8 @@ __metadata: linkType: hard "make-fetch-happen@npm:^10.0.3": - version: 10.2.0 - resolution: "make-fetch-happen@npm:10.2.0" + version: 10.2.1 + resolution: "make-fetch-happen@npm:10.2.1" dependencies: agentkeepalive: ^4.2.1 cacache: ^16.1.0 @@ -3665,16 +2793,7 @@ __metadata: promise-retry: ^2.0.1 socks-proxy-agent: ^7.0.0 ssri: ^9.0.0 - checksum: 2f6c294179972f56fab40fd8618f07841e06550692bb78f6da16e7afaa9dca78c345b08cf44a77a8907ef3948e4dc77e93eb7492b8381f1217d7ac057a7522f8 - languageName: node - linkType: hard - -"matcher@npm:^3.0.0": - version: 3.0.0 - resolution: "matcher@npm:3.0.0" - dependencies: - escape-string-regexp: ^4.0.0 - checksum: 8bee1a7ab7609c2c21d9c9254b6785fa708eadf289032b556d57a34e98fcd4c537659a004dafee6ce80ab157099e645c199dc52678dff1e7fb0a6684e0da4dbe + checksum: 2332eb9a8ec96f1ffeeea56ccefabcb4193693597b132cd110734d50f2928842e22b84cfa1508e921b8385cdfd06dda9ad68645fed62b50fff629a580f5fb72c languageName: node linkType: hard @@ -3714,13 +2833,6 @@ __metadata: languageName: node linkType: hard -"mimic-response@npm:^1.0.0, mimic-response@npm:^1.0.1": - version: 1.0.1 - resolution: "mimic-response@npm:1.0.1" - checksum: 034c78753b0e622bc03c983663b1cdf66d03861050e0c8606563d149bc2b02d63f62ce4d32be4ab50d0553ae0ffe647fc34d1f5281184c6e1e8cf4d85e8d9823 - languageName: node - linkType: hard - "mimic-response@npm:^2.0.0": version: 2.1.0 resolution: "mimic-response@npm:2.1.0" @@ -3728,13 +2840,6 @@ __metadata: languageName: node linkType: hard -"mimic-response@npm:^3.1.0": - version: 3.1.0 - resolution: "mimic-response@npm:3.1.0" - checksum: 25739fee32c17f433626bf19f016df9036b75b3d84a3046c7d156e72ec963dd29d7fc8a302f55a3d6c5a4ff24259676b15d915aad6480815a969ff2ec0836867 - languageName: node - linkType: hard - "minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" @@ -3753,13 +2858,6 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.2.0, minimist@npm:^1.2.6": - version: 1.2.6 - resolution: "minimist@npm:1.2.6" - checksum: d15428cd1e11eb14e1233bcfb88ae07ed7a147de251441d61158619dfb32c4d7e9061d09cab4825fdee18ecd6fce323228c8c47b5ba7cd20af378ca4048fb3fb - languageName: node - linkType: hard - "minipass-collect@npm:^1.0.2": version: 1.0.2 resolution: "minipass-collect@npm:1.0.2" @@ -3770,8 +2868,8 @@ __metadata: linkType: hard "minipass-fetch@npm:^2.0.3": - version: 2.1.0 - resolution: "minipass-fetch@npm:2.1.0" + version: 2.1.1 + resolution: "minipass-fetch@npm:2.1.1" dependencies: encoding: ^0.1.13 minipass: ^3.1.6 @@ -3780,7 +2878,7 @@ __metadata: dependenciesMeta: encoding: optional: true - checksum: 1334732859a3f7959ed22589bafd9c40384b885aebb5932328071c33f86b3eb181d54c86919675d1825ab5f1c8e4f328878c863873258d113c29d79a4b0c9c9f + checksum: 1aae0c2240b2f65309e046615e5a38cfd56a16ed2d334932aa195d183a0a2e1673a242a3b257bbb64892dee2e75d0233e8d2c3ad160928b6a2e5609efe6daad8 languageName: node linkType: hard @@ -3855,13 +2953,6 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.0.0": - version: 2.0.0 - resolution: "ms@npm:2.0.0" - checksum: 0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4 - languageName: node - linkType: hard - "ms@npm:2.1.2": version: 2.1.2 resolution: "ms@npm:2.1.2" @@ -3869,7 +2960,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:^2.0.0, ms@npm:^2.1.1": +"ms@npm:^2.0.0": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d @@ -3987,30 +3078,6 @@ __metadata: languageName: node linkType: hard -"normalize-url@npm:^4.1.0": - version: 4.5.1 - resolution: "normalize-url@npm:4.5.1" - checksum: 9a9dee01df02ad23e171171893e56e22d752f7cff86fb96aafeae074819b572ea655b60f8302e2d85dbb834dc885c972cc1c573892fea24df46b2765065dd05a - languageName: node - linkType: hard - -"normalize-url@npm:^6.0.1": - version: 6.1.0 - resolution: "normalize-url@npm:6.1.0" - checksum: 4a4944631173e7d521d6b80e4c85ccaeceb2870f315584fa30121f505a6dfd86439c5e3fdd8cd9e0e291290c41d0c3599f0cb12ab356722ed242584c30348e50 - languageName: node - linkType: hard - -"npm-conf@npm:^1.1.3": - version: 1.1.3 - resolution: "npm-conf@npm:1.1.3" - dependencies: - config-chain: ^1.1.11 - pify: ^3.0.0 - checksum: 2d4e933b657623d98183ec408d17318547296b1cd17c4d3587e2920c554675f24f829d8f5f7f84db3a020516678fdcd01952ebaaf0e7fa8a17f6c39be4154bef - languageName: node - linkType: hard - "npm-run-path@npm:^2.0.0": version: 2.0.2 resolution: "npm-run-path@npm:2.0.2" @@ -4058,43 +3125,13 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.12.0, object-inspect@npm:^1.9.0": +"object-inspect@npm:^1.9.0": version: 1.12.2 resolution: "object-inspect@npm:1.12.2" checksum: a534fc1b8534284ed71f25ce3a496013b7ea030f3d1b77118f6b7b1713829262be9e6243acbcb3ef8c626e2b64186112cb7f6db74e37b2789b9c789ca23048b2 languageName: node linkType: hard -"object-keys@npm:^1.1.1": - version: 1.1.1 - resolution: "object-keys@npm:1.1.1" - checksum: b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a - languageName: node - linkType: hard - -"object.assign@npm:^4.1.2": - version: 4.1.3 - resolution: "object.assign@npm:4.1.3" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - has-symbols: ^1.0.3 - object-keys: ^1.1.1 - checksum: fe87c8acd60e0d7140e1eae8886804e7497bf6a019bae715084083c2abd1760bd5aa9c3f0e5b02c82ca5cc33b641dc908c42c86c6f7d6dfd9f083a7baa95d318 - languageName: node - linkType: hard - -"object.values@npm:^1.1.5": - version: 1.1.5 - resolution: "object.values@npm:1.1.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.19.1 - checksum: 0f17e99741ebfbd0fa55ce942f6184743d3070c61bd39221afc929c8422c4907618c8da694c6915bc04a83ab3224260c779ba37fc07bb668bdc5f33b66a902a4 - languageName: node - linkType: hard - "once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": version: 1.4.0 resolution: "once@npm:1.4.0" @@ -4118,20 +3155,6 @@ __metadata: languageName: node linkType: hard -"p-cancelable@npm:^1.0.0": - version: 1.1.0 - resolution: "p-cancelable@npm:1.1.0" - checksum: 2db3814fef6d9025787f30afaee4496a8857a28be3c5706432cbad76c688a6db1874308f48e364a42f5317f5e41e8e7b4f2ff5c8ff2256dbb6264bc361704ece - languageName: node - linkType: hard - -"p-cancelable@npm:^3.0.0": - version: 3.0.0 - resolution: "p-cancelable@npm:3.0.0" - checksum: 2b5ae34218f9c2cf7a7c18e5d9a726ef9b165ef07e6c959f6738371509e747334b5f78f3bcdeb03d8a12dcb978faf641fd87eb21486ed7d36fb823b8ddef3219 - languageName: node - linkType: hard - "p-finally@npm:^1.0.0": version: 1.0.0 resolution: "p-finally@npm:1.0.0" @@ -4139,15 +3162,6 @@ __metadata: languageName: node linkType: hard -"p-limit@npm:^1.1.0": - version: 1.3.0 - resolution: "p-limit@npm:1.3.0" - dependencies: - p-try: ^1.0.0 - checksum: 281c1c0b8c82e1ac9f81acd72a2e35d402bf572e09721ce5520164e9de07d8274451378a3470707179ad13240535558f4b277f02405ad752e08c7d5b0d54fbfd - languageName: node - linkType: hard - "p-limit@npm:^3.0.2": version: 3.1.0 resolution: "p-limit@npm:3.1.0" @@ -4157,15 +3171,6 @@ __metadata: languageName: node linkType: hard -"p-locate@npm:^2.0.0": - version: 2.0.0 - resolution: "p-locate@npm:2.0.0" - dependencies: - p-limit: ^1.1.0 - checksum: e2dceb9b49b96d5513d90f715780f6f4972f46987dc32a0e18bc6c3fc74a1a5d73ec5f81b1398af5e58b99ea1ad03fd41e9181c01fa81b4af2833958696e3081 - languageName: node - linkType: hard - "p-locate@npm:^5.0.0": version: 5.0.0 resolution: "p-locate@npm:5.0.0" @@ -4184,13 +3189,6 @@ __metadata: languageName: node linkType: hard -"p-try@npm:^1.0.0": - version: 1.0.0 - resolution: "p-try@npm:1.0.0" - checksum: 3b5303f77eb7722144154288bfd96f799f8ff3e2b2b39330efe38db5dd359e4fb27012464cd85cb0a76e9b7edd1b443568cb3192c22e7cffc34989df0bafd605 - languageName: node - linkType: hard - "packet-reader@npm:1.0.0": version: 1.0.0 resolution: "packet-reader@npm:1.0.0" @@ -4207,13 +3205,6 @@ __metadata: languageName: node linkType: hard -"path-exists@npm:^3.0.0": - version: 3.0.0 - resolution: "path-exists@npm:3.0.0" - checksum: 96e92643aa34b4b28d0de1cd2eba52a1c5313a90c6542d03f62750d82480e20bfa62bc865d5cfc6165f5fcd5aeb0851043c40a39be5989646f223300021bae0a - languageName: node - linkType: hard - "path-exists@npm:^4.0.0": version: 4.0.0 resolution: "path-exists@npm:4.0.0" @@ -4450,13 +3441,6 @@ __metadata: languageName: node linkType: hard -"prepend-http@npm:^2.0.0": - version: 2.0.0 - resolution: "prepend-http@npm:2.0.0" - checksum: 7694a9525405447662c1ffd352fcb41b6410c705b739b6f4e3a3e21cf5fdede8377890088e8934436b8b17ba55365a615f153960f30877bf0d0392f9e93503ea - languageName: node - linkType: hard - "prettier@npm:^2.7.1": version: 2.7.1 resolution: "prettier@npm:2.7.1" @@ -4480,13 +3464,6 @@ __metadata: languageName: node linkType: hard -"progress@npm:^2.0.3": - version: 2.0.3 - resolution: "progress@npm:2.0.3" - checksum: f67403fe7b34912148d9252cb7481266a354bd99ce82c835f79070643bb3c6583d10dbcfda4d41e04bbc1d8437e9af0fb1e1f2135727878f5308682a579429b7 - languageName: node - linkType: hard - "promise-inflight@npm:^1.0.1": version: 1.0.1 resolution: "promise-inflight@npm:1.0.1" @@ -4504,13 +3481,6 @@ __metadata: languageName: node linkType: hard -"proto-list@npm:~1.2.1": - version: 1.2.4 - resolution: "proto-list@npm:1.2.4" - checksum: 4d4826e1713cbfa0f15124ab0ae494c91b597a3c458670c9714c36e8baddf5a6aad22842776f2f5b137f259c8533e741771445eb8df82e861eea37a6eaba03f7 - languageName: node - linkType: hard - "pseudomap@npm:^1.0.2": version: 1.0.2 resolution: "pseudomap@npm:1.0.2" @@ -4518,16 +3488,6 @@ __metadata: languageName: node linkType: hard -"pump@npm:^3.0.0": - version: 3.0.0 - resolution: "pump@npm:3.0.0" - dependencies: - end-of-stream: ^1.1.0 - once: ^1.3.1 - checksum: e42e9229fba14732593a718b04cb5e1cfef8254544870997e0ecd9732b189a48e1256e4e5478148ecb47c8511dca2b09eae56b4d0aad8009e6fac8072923cfc9 - languageName: node - linkType: hard - "punycode@npm:^2.1.0": version: 2.1.1 resolution: "punycode@npm:2.1.1" @@ -4551,13 +3511,6 @@ __metadata: languageName: node linkType: hard -"quick-lru@npm:^5.1.1": - version: 5.1.1 - resolution: "quick-lru@npm:5.1.1" - checksum: a516faa25574be7947969883e6068dbe4aa19e8ef8e8e0fd96cddd6d36485e9106d85c0041a27153286b0770b381328f4072aa40d3b18a19f5f7d2b78b94b5ed - languageName: node - linkType: hard - "readable-stream@npm:^2.3.0, readable-stream@npm:^2.3.5": version: 2.3.7 resolution: "readable-stream@npm:2.3.7" @@ -4600,17 +3553,6 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.4.3": - version: 1.4.3 - resolution: "regexp.prototype.flags@npm:1.4.3" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - functions-have-names: ^1.2.2 - checksum: 51228bae732592adb3ededd5e15426be25f289e9c4ef15212f4da73f4ec3919b6140806374b8894036a86020d054a8d2657d3fee6bb9b4d35d8939c20030b7a6 - languageName: node - linkType: hard - "regexpp@npm:^3.2.0": version: 3.2.0 resolution: "regexpp@npm:3.2.0" @@ -4618,13 +3560,6 @@ __metadata: languageName: node linkType: hard -"resolve-alpn@npm:^1.2.0": - version: 1.2.1 - resolution: "resolve-alpn@npm:1.2.1" - checksum: f558071fcb2c60b04054c99aebd572a2af97ef64128d59bef7ab73bd50d896a222a056de40ffc545b633d99b304c259ea9d0c06830d5c867c34f0bfa60b8eae0 - languageName: node - linkType: hard - "resolve-from@npm:^4.0.0": version: 4.0.0 resolution: "resolve-from@npm:4.0.0" @@ -4632,7 +3567,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.20.0, resolve@npm:^1.22.0, resolve@npm:^1.22.1": +"resolve@npm:^1.22.1": version: 1.22.1 resolution: "resolve@npm:1.22.1" dependencies: @@ -4645,7 +3580,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.20.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.1#~builtin<compat/resolve>": +"resolve@patch:resolve@^1.22.1#~builtin<compat/resolve>": version: 1.22.1 resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin<compat/resolve>::version=1.22.1&hash=07638b" dependencies: @@ -4658,24 +3593,6 @@ __metadata: languageName: node linkType: hard -"responselike@npm:^1.0.2": - version: 1.0.2 - resolution: "responselike@npm:1.0.2" - dependencies: - lowercase-keys: ^1.0.0 - checksum: 2e9e70f1dcca3da621a80ce71f2f9a9cad12c047145c6ece20df22f0743f051cf7c73505e109814915f23f9e34fb0d358e22827723ee3d56b623533cab8eafcd - languageName: node - linkType: hard - -"responselike@npm:^2.0.0": - version: 2.0.1 - resolution: "responselike@npm:2.0.1" - dependencies: - lowercase-keys: ^2.0.0 - checksum: b122535466e9c97b55e69c7f18e2be0ce3823c5d47ee8de0d9c0b114aa55741c6db8bfbfce3766a94d1272e61bfb1ebf0a15e9310ac5629fbb7446a861b4fd3a - languageName: node - linkType: hard - "retry-as-promised@npm:^5.0.0": version: 5.0.0 resolution: "retry-as-promised@npm:5.0.0" @@ -4708,23 +3625,9 @@ __metadata: languageName: node linkType: hard -"roarr@npm:^2.15.3": - version: 2.15.4 - resolution: "roarr@npm:2.15.4" - dependencies: - boolean: ^3.0.1 - detect-node: ^2.0.4 - globalthis: ^1.0.1 - json-stringify-safe: ^5.0.1 - semver-compare: ^1.0.0 - sprintf-js: ^1.1.2 - checksum: 682e28d5491e3ae99728a35ba188f4f0ccb6347dbd492f95dc9f4bfdfe8ee63d8203ad234766ee2db88c8d7a300714304976eb095ce5c9366fe586c03a21586c - languageName: node - linkType: hard - -"rollup@npm:^2.75.6": - version: 2.77.2 - resolution: "rollup@npm:2.77.2" +"rollup@npm:>=2.75.6 <2.77.0 || ~2.77.0": + version: 2.77.3 + resolution: "rollup@npm:2.77.3" dependencies: fsevents: ~2.3.2 dependenciesMeta: @@ -4732,7 +3635,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 5a84fb98a6f858906bceba091430442f6c1f362b07c5fa9123b708f87e39f52640e34a189cd9a1776ceae61300055c78ba648205fa03188451539ebeb19797df + checksum: b179c68249584565ddb5664a241e8e48c293b2207718d885b08ee25797d98857a383f06b544bb89819407da5a71557f4713309a278f61c4778bb32b1d3321a1c languageName: node linkType: hard @@ -4785,14 +3688,7 @@ __metadata: languageName: node linkType: hard -"semver-compare@npm:^1.0.0": - version: 1.0.0 - resolution: "semver-compare@npm:1.0.0" - checksum: dd1d7e2909744cf2cf71864ac718efc990297f9de2913b68e41a214319e70174b1d1793ac16e31183b128c2b9812541300cb324db8168e6cf6b570703b171c68 - languageName: node - linkType: hard - -"semver@npm:^6.0.0, semver@npm:^6.2.0": +"semver@npm:^6.0.0": version: 6.3.0 resolution: "semver@npm:6.3.0" bin: @@ -4801,7 +3697,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.2, semver@npm:^7.3.5, semver@npm:^7.3.7": +"semver@npm:^7.3.5, semver@npm:^7.3.7": version: 7.3.7 resolution: "semver@npm:7.3.7" dependencies: @@ -4819,9 +3715,9 @@ __metadata: languageName: node linkType: hard -"sequelize@npm:6.21.3": - version: 6.21.3 - resolution: "sequelize@npm:6.21.3" +"sequelize@npm:6.21.4": + version: 6.21.4 + resolution: "sequelize@npm:6.21.4" dependencies: "@types/debug": ^4.1.7 "@types/validator": ^13.7.1 @@ -4856,16 +3752,7 @@ __metadata: optional: true tedious: optional: true - checksum: 85a57cdde00edc5e1634585aacda874eeab9cc0d6d296e5ae90be3d861cba682bacde427009600d331fec82396520621a16a27d1958c689dd197d9d88051cf7e - languageName: node - linkType: hard - -"serialize-error@npm:^7.0.1": - version: 7.0.1 - resolution: "serialize-error@npm:7.0.1" - dependencies: - type-fest: ^0.13.1 - checksum: e0aba4dca2fc9fe74ae1baf38dbd99190e1945445a241ba646290f2176cdb2032281a76443b02ccf0caf30da5657d510746506368889a593b9835a497fc0732e + checksum: 6d066083125aa8a90286c82379964b5e54620daa7eac7f0d8b25c52cad93f8cae70cc4606a58097e815f57bad405969353d35321c1c9edfff27d953cec9ff064 languageName: node linkType: hard @@ -4993,13 +3880,6 @@ __metadata: languageName: node linkType: hard -"sprintf-js@npm:^1.1.2": - version: 1.1.2 - resolution: "sprintf-js@npm:1.1.2" - checksum: d4bb46464632b335e5faed381bd331157e0af64915a98ede833452663bc672823db49d7531c32d58798e85236581fb7342fd0270531ffc8f914e186187bf1c90 - languageName: node - linkType: hard - "ssri@npm:^9.0.0": version: 9.0.1 resolution: "ssri@npm:9.0.1" @@ -5020,28 +3900,6 @@ __metadata: languageName: node linkType: hard -"string.prototype.trimend@npm:^1.0.5": - version: 1.0.5 - resolution: "string.prototype.trimend@npm:1.0.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.19.5 - checksum: d44f543833112f57224e79182debadc9f4f3bf9d48a0414d6f0cbd2a86f2b3e8c0ca1f95c3f8e5b32ae83e91554d79d932fc746b411895f03f93d89ed3dfb6bc - languageName: node - linkType: hard - -"string.prototype.trimstart@npm:^1.0.5": - version: 1.0.5 - resolution: "string.prototype.trimstart@npm:1.0.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.19.5 - checksum: a4857c5399ad709d159a77371eeaa8f9cc284469a0b5e1bfe405de16f1fd4166a8ea6f4180e55032f348d1b679b1599fd4301fbc7a8b72bdb3e795e43f7b1048 - languageName: node - linkType: hard - "string_decoder@npm:^1.1.1": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" @@ -5069,13 +3927,6 @@ __metadata: languageName: node linkType: hard -"strip-bom@npm:^3.0.0": - version: 3.0.0 - resolution: "strip-bom@npm:3.0.0" - checksum: 8d50ff27b7ebe5ecc78f1fe1e00fcdff7af014e73cf724b46fb81ef889eeb1015fc5184b64e81a2efe002180f3ba431bdd77e300da5c6685d702780fbf0c8d5b - languageName: node - linkType: hard - "strip-dirs@npm:^2.0.0": version: 2.1.0 resolution: "strip-dirs@npm:2.1.0" @@ -5109,15 +3960,6 @@ __metadata: languageName: node linkType: hard -"sumchecker@npm:^3.0.1": - version: 3.0.1 - resolution: "sumchecker@npm:3.0.1" - dependencies: - debug: ^4.1.0 - checksum: 31ba7a62c889236b5b07f75b5c250d481158a1ca061b8f234fca0457bdbe48a20e5011c12c715343dc577e111463dc3d9e721b98015a445a2a88c35e0c9f0f91 - languageName: node - linkType: hard - "supports-color@npm:^7.1.0": version: 7.2.0 resolution: "supports-color@npm:7.2.0" @@ -5198,10 +4040,10 @@ __metadata: languageName: node linkType: hard -"tinyspy@npm:^1.0.0": - version: 1.0.0 - resolution: "tinyspy@npm:1.0.0" - checksum: f9a7cea406db9b0f99a4ef162eb0a45d88fc36facbc309702c8d568283baa363ab3c4138d8402fbfdef7a8d3157ff7cfae3e99ec6c75d8f684bd7b23485b5ec5 +"tinyspy@npm:^1.0.2": + version: 1.0.2 + resolution: "tinyspy@npm:1.0.2" + checksum: 32096121aa8d52bb625ad62c9314b3e4daba4ab9ac428217b12b1e1dfe9860e3c94d54a7affa279cc70dc6f10d88c6ba46b51de68896b318a06d02f05e87dcc3 languageName: node linkType: hard @@ -5212,13 +4054,6 @@ __metadata: languageName: node linkType: hard -"to-readable-stream@npm:^1.0.0": - version: 1.0.0 - resolution: "to-readable-stream@npm:1.0.0" - checksum: 2bd7778490b6214a2c40276065dd88949f4cf7037ce3964c76838b8cb212893aeb9cceaaf4352a4c486e3336214c350270f3263e1ce7a0c38863a715a4d9aeb5 - languageName: node - linkType: hard - "to-regex-range@npm:^5.0.1": version: 5.0.1 resolution: "to-regex-range@npm:5.0.1" @@ -5268,18 +4103,6 @@ __metadata: languageName: node linkType: hard -"tsconfig-paths@npm:^3.14.1": - version: 3.14.1 - resolution: "tsconfig-paths@npm:3.14.1" - dependencies: - "@types/json5": ^0.0.29 - json5: ^1.0.1 - minimist: ^1.2.6 - strip-bom: ^3.0.0 - checksum: 8afa01c673ebb4782ba53d3a12df97fa837ce524f8ad38ee4e2b2fd57f5ac79abc21c574e9e9eb014d93efe7fe8214001b96233b5c6ea75bd1ea82afe17a4c6d - languageName: node - linkType: hard - "tslib@npm:^1.8.1, tslib@npm:^1.9.3": version: 1.14.1 resolution: "tslib@npm:1.14.1" @@ -5305,13 +4128,6 @@ __metadata: languageName: node linkType: hard -"tunnel@npm:^0.0.6": - version: 0.0.6 - resolution: "tunnel@npm:0.0.6" - checksum: c362948df9ad34b649b5585e54ce2838fa583aa3037091aaed66793c65b423a264e5229f0d7e9a95513a795ac2bd4cb72cda7e89a74313f182c1e9ae0b0994fa - languageName: node - linkType: hard - "type-check@npm:^0.4.0, type-check@npm:~0.4.0": version: 0.4.0 resolution: "type-check@npm:0.4.0" @@ -5328,13 +4144,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.13.1": - version: 0.13.1 - resolution: "type-fest@npm:0.13.1" - checksum: e6bf2e3c449f27d4ef5d56faf8b86feafbc3aec3025fc9a5fbe2db0a2587c44714521f9c30d8516a833c8c506d6263f5cc11267522b10c6ccdb6cc55b0a9d1c4 - languageName: node - linkType: hard - "type-fest@npm:^0.20.2": version: 0.20.2 resolution: "type-fest@npm:0.20.2" @@ -5343,9 +4152,9 @@ __metadata: linkType: hard "typed-function@npm:^3.0.0": - version: 3.0.0 - resolution: "typed-function@npm:3.0.0" - checksum: f05afc8254dcb72815903c764fc3f8064a50ce1a0db9eb3a5134528209a852c8817682bdaf8ee9a73b316d4a4bbf92b6ae030934dd0983e7a2fd7fa487a71cec + version: 3.0.1 + resolution: "typed-function@npm:3.0.1" + checksum: 1061764c52be7fc5ea37bdafe58b0568df42f3060ccabe4358dbfe1eadace32ba05808b9b0cb8da4aa0604c0bffe8135c3d7cf1a3ab7a0cb2bc5e95fd71f7da2 languageName: node linkType: hard @@ -5369,18 +4178,6 @@ __metadata: languageName: node linkType: hard -"unbox-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "unbox-primitive@npm:1.0.2" - dependencies: - call-bind: ^1.0.2 - has-bigints: ^1.0.2 - has-symbols: ^1.0.3 - which-boxed-primitive: ^1.0.2 - checksum: b7a1cf5862b5e4b5deb091672ffa579aa274f648410009c81cca63fed3b62b610c4f3b773f912ce545bb4e31edc3138975b5bc777fc6e4817dca51affb6380e9 - languageName: node - linkType: hard - "unbzip2-stream@npm:^1.0.9": version: 1.4.3 resolution: "unbzip2-stream@npm:1.4.3" @@ -5399,9 +4196,9 @@ __metadata: linkType: hard "undici@npm:^5.8.0": - version: 5.8.2 - resolution: "undici@npm:5.8.2" - checksum: 726e04bb37e2e285b4f632600c792efc9eaa5e06e37f9f34338352ac5e1dbd8ae3cdd12dd8761abfecffc5f200d1c7b91b41efb3a31c4e804ea341e5808ddfcf + version: 5.9.1 + resolution: "undici@npm:5.9.1" + checksum: 8acabbac8e18943ff822574f831d03d65e697e66ef486a679763f7778f37b28980caf7097ededf4017b58c099809e8efd8509a6688f60638360fb86ef47a59df languageName: node linkType: hard @@ -5423,13 +4220,6 @@ __metadata: languageName: node linkType: hard -"universalify@npm:^0.1.0": - version: 0.1.2 - resolution: "universalify@npm:0.1.2" - checksum: 40cdc60f6e61070fe658ca36016a8f4ec216b29bf04a55dce14e3710cc84c7448538ef4dad3728d0bfe29975ccd7bfb5f414c45e7b78883567fb31b246f02dff - languageName: node - linkType: hard - "uri-js@npm:^4.2.2": version: 4.4.1 resolution: "uri-js@npm:4.4.1" @@ -5439,15 +4229,6 @@ __metadata: languageName: node linkType: hard -"url-parse-lax@npm:^3.0.0": - version: 3.0.0 - resolution: "url-parse-lax@npm:3.0.0" - dependencies: - prepend-http: ^2.0.0 - checksum: 1040e357750451173132228036aff1fd04abbd43eac1fb3e4fca7495a078bcb8d33cb765fe71ad7e473d9c94d98fd67adca63bd2716c815a2da066198dd37217 - languageName: node - linkType: hard - "url-template@npm:^2.0.8": version: 2.0.8 resolution: "url-template@npm:2.0.8" @@ -5486,14 +4267,14 @@ __metadata: linkType: hard "vite@npm:^2.9.12 || ^3.0.0-0": - version: 3.0.5 - resolution: "vite@npm:3.0.5" + version: 3.0.9 + resolution: "vite@npm:3.0.9" dependencies: esbuild: ^0.14.47 fsevents: ~2.3.2 postcss: ^8.4.16 resolve: ^1.22.1 - rollup: ^2.75.6 + rollup: ">=2.75.6 <2.77.0 || ~2.77.0" peerDependencies: less: "*" sass: "*" @@ -5513,13 +4294,13 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: c00ec43356469032fa261872b028740526d5a5726132cb306741e2d9dca241dcb7b0b5d39181d5ebc39c5e82396511080640fa302c66e713a622e8bfa1f14a8d + checksum: 6341aa43579ae45f8a383bdc0c5041dea3dff98f14e0a546d6d884a864134b00082246a28d1de8adff0ce0dd92b468c7ade8f972ffe1ed97258671d63e0f16f7 languageName: node linkType: hard -"vitest@npm:^0.21.1": - version: 0.21.1 - resolution: "vitest@npm:0.21.1" +"vitest@npm:^0.22.1": + version: 0.22.1 + resolution: "vitest@npm:0.22.1" dependencies: "@types/chai": ^4.3.3 "@types/chai-subset": ^1.3.3 @@ -5528,13 +4309,12 @@ __metadata: debug: ^4.3.4 local-pkg: ^0.4.2 tinypool: ^0.2.4 - tinyspy: ^1.0.0 + tinyspy: ^1.0.2 vite: ^2.9.12 || ^3.0.0-0 peerDependencies: "@edge-runtime/vm": "*" "@vitest/browser": "*" "@vitest/ui": "*" - c8: "*" happy-dom: "*" jsdom: "*" peerDependenciesMeta: @@ -5544,15 +4324,13 @@ __metadata: optional: true "@vitest/ui": optional: true - c8: - optional: true happy-dom: optional: true jsdom: optional: true bin: vitest: vitest.mjs - checksum: 27c8cd0a1e2443e1311b1ed236d66caad77dcea2c4b49364475688d89d6f8dba2074b1a2da8e7ca529ded15bd5314ff4b36119a0010a33d2dcd34333d4043bd5 + checksum: 7abe50ceb51181e77cd62eb3a07c2da17f13078f09be34cc2e98f1f94a77eba33a56c644d48ae16bb474945ffc1cfc8664b1f4976c3de495c5e474057420c4ca languageName: node linkType: hard @@ -5592,19 +4370,6 @@ __metadata: languageName: node linkType: hard -"which-boxed-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "which-boxed-primitive@npm:1.0.2" - dependencies: - is-bigint: ^1.0.1 - is-boolean-object: ^1.1.0 - is-number-object: ^1.0.4 - is-string: ^1.0.5 - is-symbol: ^1.0.3 - checksum: 53ce774c7379071729533922adcca47220228405e1895f26673bbd71bdf7fb09bee38c1d6399395927c6289476b5ae0629863427fd151491b71c4b6cb04f3a5e - languageName: node - linkType: hard - "which@npm:^1.2.9": version: 1.3.1 resolution: "which@npm:1.3.1" @@ -5695,7 +4460,7 @@ __metadata: languageName: node linkType: hard -"yauzl@npm:^2.10.0, yauzl@npm:^2.4.2": +"yauzl@npm:^2.4.2": version: 2.10.0 resolution: "yauzl@npm:2.10.0" dependencies: |