diff --git a/.github/workflows/continuous-delivery.yml b/.github/workflows/continuous-delivery.yml index 93fe4e798fa..144dc3c4242 100644 --- a/.github/workflows/continuous-delivery.yml +++ b/.github/workflows/continuous-delivery.yml @@ -19,7 +19,7 @@ jobs: - name: Checkout Project uses: actions/checkout@v4 - name: Setup Docker Buildx - uses: docker/setup-buildx-action@v3.6.1 + uses: docker/setup-buildx-action@v3.7.1 - name: Login to GitHub Container Registry uses: docker/login-action@v3.3.0 with: @@ -27,7 +27,7 @@ jobs: username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push Skyra Docker image - uses: docker/build-push-action@v6.7.0 + uses: docker/build-push-action@v6.9.0 with: push: true context: . diff --git a/.github/workflows/publish-stable.yml b/.github/workflows/publish-stable.yml index 55bea92f224..02535e26e14 100644 --- a/.github/workflows/publish-stable.yml +++ b/.github/workflows/publish-stable.yml @@ -18,7 +18,7 @@ jobs: with: ref: ${{ github.event.inputs.commit }} - name: Setup Docker Buildx - uses: docker/setup-buildx-action@v3.6.1 + uses: docker/setup-buildx-action@v3.7.1 - name: Login to GitHub Container Registry uses: docker/login-action@v3.3.0 with: @@ -26,7 +26,7 @@ jobs: username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push Skyra Docker image - uses: docker/build-push-action@v6.7.0 + uses: docker/build-push-action@v6.9.0 with: push: true context: . diff --git a/package.json b/package.json index 432d7aa924e..b39da37980d 100644 --- a/package.json +++ b/package.json @@ -51,8 +51,8 @@ "update": "yarn upgrade-interactive" }, "dependencies": { - "@discordjs/builders": "^1.8.2", - "@discordjs/collection": "^2.1.0", + "@discordjs/builders": "^1.9.0", + "@discordjs/collection": "^2.1.1", "@discordjs/core": "^1.2.0", "@influxdata/influxdb-client": "^1.35.0", "@influxdata/influxdb-client-apis": "^1.35.0", @@ -85,7 +85,7 @@ "confusables": "^1.1.1", "diff": "^5.2.0", "discord-api-types": "0.37.98", - "discord.js": "~14.15.3", + "discord.js": "~14.16.3", "he": "^1.2.0", "zlib-sync": "^0.1.9" }, diff --git a/src/arguments/commandName.ts b/src/arguments/commandName.ts index ae274e41741..6bebda7154a 100644 --- a/src/arguments/commandName.ts +++ b/src/arguments/commandName.ts @@ -1,6 +1,6 @@ import { LanguageKeys } from '#lib/i18n/languageKeys'; import type { SkyraCommand } from '#lib/structures'; -import { PermissionLevels } from '#lib/types'; +import { PermissionLevels, type NonGroupMessage } from '#lib/types'; import { OWNERS } from '#root/config'; import { FuzzySearch } from '#utils/Parsers/FuzzySearch'; import { Argument, Command } from '@sapphire/framework'; @@ -13,7 +13,11 @@ export class UserArgument extends Argument { return this.isAllowed(found, context) ? this.ok(found) : this.error({ parameter, identifier: LanguageKeys.Arguments.Command, context }); } - const command = await new FuzzySearch(commands, (command) => command.name, context.filter).run(context.message, parameter, context.minimum); + const command = await new FuzzySearch(commands, (command) => command.name, context.filter).run( + context.message as NonGroupMessage, + parameter, + context.minimum + ); if (command) return this.ok(command[1]); return this.error({ parameter, identifier: LanguageKeys.Arguments.Command, context }); diff --git a/src/lib/moderation/structures/SetUpModerationCommand.ts b/src/lib/moderation/structures/SetUpModerationCommand.ts index e6e5f5f6e81..a6fa74f7b31 100644 --- a/src/lib/moderation/structures/SetUpModerationCommand.ts +++ b/src/lib/moderation/structures/SetUpModerationCommand.ts @@ -44,7 +44,7 @@ export abstract class SetUpModerationCommand & { member: GuildMember }; export type DMMessage = Message; +export type NonGroupMessage = OmitPartialGroupDMChannel>; diff --git a/src/lib/util/Parsers/FuzzySearch.ts b/src/lib/util/Parsers/FuzzySearch.ts index d9de209c8a5..2aa9962e016 100644 --- a/src/lib/util/Parsers/FuzzySearch.ts +++ b/src/lib/util/Parsers/FuzzySearch.ts @@ -1,10 +1,10 @@ import { LanguageKeys } from '#lib/i18n/languageKeys'; +import type { NonGroupMessage } from '#lib/types'; import { promptForMessage } from '#utils/functions'; import { UserError } from '@sapphire/framework'; import { fetchT } from '@sapphire/plugin-i18next'; import { codeBlock } from '@sapphire/utilities'; import { decodeUtf8, jaroWinkler } from '@skyra/jaro-winkler'; -import type { Message } from 'discord.js'; type FuzzySearchAccess = (value: V) => string; type FuzzySearchFilter = (value: V) => boolean; @@ -20,7 +20,7 @@ export class FuzzySearch { this.kFilter = filter; } - public run(message: Message, query: string, threshold?: number) { + public run(message: NonGroupMessage, query: string, threshold?: number) { const lowerCaseQuery = query.toLowerCase(); const decodedLowerCaseQuery = decodeUtf8(lowerCaseQuery); const results: [K, V, number][] = []; @@ -75,7 +75,7 @@ export class FuzzySearch { return this.select(message, sorted); } - private async select(message: Message, results: [K, V, number][]) { + private async select(message: NonGroupMessage, results: [K, V, number][]) { if (results.length === 1) return results[0]; if (results.length > 10) results.length = 10; diff --git a/src/lib/util/functions/messages.ts b/src/lib/util/functions/messages.ts index ed6715fdd9e..a0feaf50645 100644 --- a/src/lib/util/functions/messages.ts +++ b/src/lib/util/functions/messages.ts @@ -1,5 +1,5 @@ import type { SkyraCommand } from '#lib/structures'; -import type { TypedFT, TypedT } from '#lib/types'; +import type { NonGroupMessage, TypedFT, TypedT } from '#lib/types'; import { floatPromise, minutes, resolveOnErrorCodes } from '#utils/common'; import { canReact, canRemoveAllReactions } from '@sapphire/discord.js-utilities'; import { container } from '@sapphire/framework'; @@ -149,11 +149,11 @@ const enum PromptConfirmationReactions { No = '🇳' } -async function promptConfirmationReaction(message: Message, response: Message, options: PromptConfirmationMessageOptions) { +async function promptConfirmationReaction(message: NonGroupMessage, response: NonGroupMessage, options: PromptConfirmationMessageOptions) { await response.react(PromptConfirmationReactions.Yes); await response.react(PromptConfirmationReactions.No); - const target = container.client.users.resolveId(options.target ?? message.author)!; + const target = container.client.users.resolveId(options.target ?? message.author); const reactions = await response.awaitReactions({ filter: (__, user) => user.id === target, time: minutes(1), max: 1 }); // Remove all reactions if the user has permissions to do so @@ -165,8 +165,8 @@ async function promptConfirmationReaction(message: Message, response: Message, o } const promptConfirmationMessageRegExp = /^y|yes?|yeah?$/i; -async function promptConfirmationMessage(message: Message, response: Message, options: PromptConfirmationMessageOptions) { - const target = container.client.users.resolveId(options.target ?? message.author)!; +async function promptConfirmationMessage(message: NonGroupMessage, response: NonGroupMessage, options: PromptConfirmationMessageOptions) { + const target = container.client.users.resolveId(options.target ?? message.author); const messages = await response.channel.awaitMessages({ filter: (message) => message.author.id === target, time: minutes(1), max: 1 }); return messages.size === 0 ? null : promptConfirmationMessageRegExp.test(messages.first()!.content); @@ -178,17 +178,21 @@ async function promptConfirmationMessage(message: Message, response: Message, op * @param options The options for the message to be sent, alongside the prompt options. * @returns `null` if no response was given within the requested time, `boolean` otherwise. */ -export async function promptConfirmation(message: Message, options: string | PromptConfirmationMessageOptions) { +export async function promptConfirmation(message: NonGroupMessage, options: string | PromptConfirmationMessageOptions) { if (typeof options === 'string') options = { content: options }; // TODO: v13 | Switch to buttons only when available. - const response = await send(message, options); + const response = (await send(message, options)) as NonGroupMessage; return canReact(response.channel) ? promptConfirmationReaction(message, response, options) : promptConfirmationMessage(message, response, options); } -export async function promptForMessage(message: Message, sendOptions: string | MessageCreateOptions, time = minutes(1)): Promise { +export async function promptForMessage( + message: NonGroupMessage, + sendOptions: string | MessageCreateOptions, + time = minutes(1) +): Promise { const response = await message.channel.send(sendOptions); const responses = await message.channel.awaitMessages({ filter: (msg) => msg.author === message.author, time, max: 1 }); floatPromise(deleteMessage(response)); diff --git a/src/listeners/messages/messageDeleteBulkRemoveResponses.ts b/src/listeners/messages/messageDeleteBulkRemoveResponses.ts index 0ee6e2e1ff0..dca93ddf4b6 100644 --- a/src/listeners/messages/messageDeleteBulkRemoveResponses.ts +++ b/src/listeners/messages/messageDeleteBulkRemoveResponses.ts @@ -5,9 +5,9 @@ import { ApplyOptions } from '@sapphire/decorators'; import { Listener } from '@sapphire/framework'; import { get } from '@sapphire/plugin-editable-commands'; import { hasAtLeastOneKeyInMap } from '@sapphire/utilities'; -import { Collection, type Message, type Snowflake } from 'discord.js'; +import type { Message, OmitPartialGroupDMChannel, ReadonlyCollection } from 'discord.js'; -type MessageCollection = Collection; +type MessageCollection = ReadonlyCollection>>; @ApplyOptions({ event: Events.MessageDeleteBulk }) export class UserListener extends Listener { diff --git a/src/listeners/twitch/twitchStreamOffline.ts b/src/listeners/twitch/twitchStreamOffline.ts index b93beb02835..d4c1f6b0705 100644 --- a/src/listeners/twitch/twitchStreamOffline.ts +++ b/src/listeners/twitch/twitchStreamOffline.ts @@ -5,7 +5,7 @@ import { streamNotificationDrip } from '#utils/twitch'; import { extractDetailedMentions } from '#utils/util'; import { TimestampStyles, time } from '@discordjs/builders'; import { ApplyOptions } from '@sapphire/decorators'; -import { canSendMessages, type TextBasedChannelTypes } from '@sapphire/discord.js-utilities'; +import { canSendMessages, type GuildTextBasedChannelTypes } from '@sapphire/discord.js-utilities'; import { Listener } from '@sapphire/framework'; import type { TFunction } from '@sapphire/plugin-i18next'; import { fetchT } from '@sapphire/plugin-i18next'; @@ -42,7 +42,7 @@ export class UserListener extends Listener { const t = await fetchT(guild); // Retrieve the channel to send the message to - const channel = guild.channels.cache.get(guildSubscription.channelId) as TextBasedChannelTypes; + const channel = guild.channels.cache.get(guildSubscription.channelId) as GuildTextBasedChannelTypes; if (isNullish(channel) || !canSendMessages(channel)) { continue; } diff --git a/src/listeners/twitch/twitchStreamOnline.ts b/src/listeners/twitch/twitchStreamOnline.ts index 9c3bf4e8d3f..60c15592ad2 100644 --- a/src/listeners/twitch/twitchStreamOnline.ts +++ b/src/listeners/twitch/twitchStreamOnline.ts @@ -6,15 +6,15 @@ import { streamNotificationDrip } from '#utils/twitch'; import { extractDetailedMentions } from '#utils/util'; import { EmbedBuilder } from '@discordjs/builders'; import { ApplyOptions } from '@sapphire/decorators'; -import { canSendMessages, type TextBasedChannelTypes } from '@sapphire/discord.js-utilities'; +import { canSendMessages, type GuildTextBasedChannelTypes } from '@sapphire/discord.js-utilities'; import { Listener } from '@sapphire/framework'; import type { TFunction } from '@sapphire/plugin-i18next'; import { fetchT } from '@sapphire/plugin-i18next'; import { isNullish } from '@sapphire/utilities'; import { - fetchStream, TwitchBrandingColor, TwitchEventSubTypes, + fetchStream, type TwitchEventSubOnlineEvent, type TwitchHelixStreamsResult, type TwitchOnlineEmbedData @@ -56,7 +56,7 @@ export class UserListener extends Listener { const t = await fetchT(guild); // Retrieve the channel to send the message to - const channel = guild.channels.cache.get(guildSubscription.channelId) as TextBasedChannelTypes; + const channel = guild.channels.cache.get(guildSubscription.channelId) as GuildTextBasedChannelTypes; if (isNullish(channel) || !canSendMessages(channel)) { continue; } diff --git a/yarn.lock b/yarn.lock index 9fe4adbbede..e6c5cdbeee2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -324,18 +324,18 @@ __metadata: languageName: node linkType: hard -"@discordjs/builders@npm:^1.8.1, @discordjs/builders@npm:^1.8.2": - version: 1.8.2 - resolution: "@discordjs/builders@npm:1.8.2" +"@discordjs/builders@npm:^1.8.1, @discordjs/builders@npm:^1.9.0": + version: 1.9.0 + resolution: "@discordjs/builders@npm:1.9.0" dependencies: - "@discordjs/formatters": "npm:^0.4.0" - "@discordjs/util": "npm:^1.1.0" - "@sapphire/shapeshift": "npm:^3.9.7" - discord-api-types: "npm:0.37.83" + "@discordjs/formatters": "npm:^0.5.0" + "@discordjs/util": "npm:^1.1.1" + "@sapphire/shapeshift": "npm:^4.0.0" + discord-api-types: "npm:0.37.97" fast-deep-equal: "npm:^3.1.3" ts-mixer: "npm:^6.0.4" - tslib: "npm:^2.6.2" - checksum: 10/64de3c72fdde202cc168ae5e42c05df44d3a4323cc1706fa667077b5bef1d60cf10d8e871bd4c758140432252f3c9c2747370f56fa0ff08c55669cb0a1e516d7 + tslib: "npm:^2.6.3" + checksum: 10/8d45f4919355237d8e442df7a98cec49fcd9dcdcb193cdbb88dbc8775d5cb25f6451317a40542921ab54649a9e9fc801e781617f290634db78ae3cd91454ccd3 languageName: node linkType: hard @@ -346,10 +346,10 @@ __metadata: languageName: node linkType: hard -"@discordjs/collection@npm:^2.1.0": - version: 2.1.0 - resolution: "@discordjs/collection@npm:2.1.0" - checksum: 10/386b508a0ed55614a8c32990a16eaaae4c9289172ce06fc7489b91932c593f7485fb62afd13cf71ad762ba927e73233ed63a8d6c8884de949cf1dfaa8ca391e8 +"@discordjs/collection@npm:^2.1.0, @discordjs/collection@npm:^2.1.1": + version: 2.1.1 + resolution: "@discordjs/collection@npm:2.1.1" + checksum: 10/2bf815120929e20bdcc94a7d0a9c0e567ef859b8cc502f5ecddaeae31ba3457711df708ab200ac6e86ffccab31f796192860f8ad609a9ddc2cdd7ffe5825a266 languageName: node linkType: hard @@ -367,40 +367,40 @@ __metadata: languageName: node linkType: hard -"@discordjs/formatters@npm:^0.4.0": - version: 0.4.0 - resolution: "@discordjs/formatters@npm:0.4.0" +"@discordjs/formatters@npm:^0.5.0": + version: 0.5.0 + resolution: "@discordjs/formatters@npm:0.5.0" dependencies: - discord-api-types: "npm:0.37.83" - checksum: 10/dbc75cf1048c928ddefb3d3f6268f8c153fce3030ef08afad06b7e2b1cd407451069eef1bcd903fc654d5e02fd1bf26372e12da41496182eb8fbee3dab87a83c + discord-api-types: "npm:0.37.97" + checksum: 10/71643849aef40cdbee997739cad95fcd2e803800fd8db9c8decffd9bbfc37467b0ca1dd8dd827d4bd34651c2b0944e93aea0879f9db6b7f03bdc24fbc07928bf languageName: node linkType: hard -"@discordjs/rest@npm:^2.3.0": - version: 2.3.0 - resolution: "@discordjs/rest@npm:2.3.0" +"@discordjs/rest@npm:^2.3.0, @discordjs/rest@npm:^2.4.0": + version: 2.4.0 + resolution: "@discordjs/rest@npm:2.4.0" dependencies: - "@discordjs/collection": "npm:^2.1.0" - "@discordjs/util": "npm:^1.1.0" - "@sapphire/async-queue": "npm:^1.5.2" + "@discordjs/collection": "npm:^2.1.1" + "@discordjs/util": "npm:^1.1.1" + "@sapphire/async-queue": "npm:^1.5.3" "@sapphire/snowflake": "npm:^3.5.3" - "@vladfrangu/async_event_emitter": "npm:^2.2.4" - discord-api-types: "npm:0.37.83" + "@vladfrangu/async_event_emitter": "npm:^2.4.6" + discord-api-types: "npm:0.37.97" magic-bytes.js: "npm:^1.10.0" - tslib: "npm:^2.6.2" - undici: "npm:6.13.0" - checksum: 10/55932ed31248f3b02e819fb2e197eb223862d29894f8b0271d8451c5d8226ae9f398d65234f299bdd5e8597ca8e287ad82867d9b85d54070b6ff172ad3e22ee9 + tslib: "npm:^2.6.3" + undici: "npm:6.19.8" + checksum: 10/aca81c02f24b953400425d0ba96b96bf1a7b9a42aa9ccff021ea795cd9bed3fa36586a921720569a88cceb659507a76084b72c28f08b931121ea0e4b292a1431 languageName: node linkType: hard -"@discordjs/util@npm:^1.1.0": +"@discordjs/util@npm:^1.1.0, @discordjs/util@npm:^1.1.1": version: 1.1.1 resolution: "@discordjs/util@npm:1.1.1" checksum: 10/3c8ae0c47fcf124e13bfef6232cf4564c35da9ac6b95b63888458c6662742e387324cdafa6207d625415553a5d05fc854f106c726a00c8e81c3414fd5e7eaf2c languageName: node linkType: hard -"@discordjs/ws@npm:^1.1.0, @discordjs/ws@npm:^1.1.1": +"@discordjs/ws@npm:1.1.1, @discordjs/ws@npm:^1.1.0": version: 1.1.1 resolution: "@discordjs/ws@npm:1.1.1" dependencies: @@ -1684,13 +1684,13 @@ __metadata: languageName: node linkType: hard -"@sapphire/shapeshift@npm:^3.9.7": - version: 3.9.7 - resolution: "@sapphire/shapeshift@npm:3.9.7" +"@sapphire/shapeshift@npm:^4.0.0": + version: 4.0.0 + resolution: "@sapphire/shapeshift@npm:4.0.0" dependencies: fast-deep-equal: "npm:^3.1.3" lodash: "npm:^4.17.21" - checksum: 10/f90f8e25920fe953a5231aa65f24829e1f2ecb26dcac7a09ff1a1f3cb988f174e27b3ac82fc4f6368891edff8ad6f90ee78cf5c0cab3038fd2714d02eba4eb0c + checksum: 10/71437388066ca19a521f94f3066633010a5b3e24d9da1c07664389b9b02635af502b81236af92f24bb4c0f312a93b0f4ac544391afd464c2e98e6f93e2a4ded0 languageName: node linkType: hard @@ -2256,10 +2256,10 @@ __metadata: languageName: node linkType: hard -"@vladfrangu/async_event_emitter@npm:^2.2.4": - version: 2.2.4 - resolution: "@vladfrangu/async_event_emitter@npm:2.2.4" - checksum: 10/06de49380dc47fe712768b0e49286e54a114de962da36ef021d4b03fcff7ec8338b46179d8b3eba4c0e02b2926bbf1e6ea0f9c6c08f6f081361947a7f6719ce9 +"@vladfrangu/async_event_emitter@npm:^2.2.4, @vladfrangu/async_event_emitter@npm:^2.4.6": + version: 2.4.6 + resolution: "@vladfrangu/async_event_emitter@npm:2.4.6" + checksum: 10/6a329441bbd36bb8bdc8c49f18328abf724834597c8cab56b5741f18fa167a010bb841bc9ec3638b6b73c6692b85d0de724612b0a416b523650574576fd1a197 languageName: node linkType: hard @@ -3734,23 +3734,23 @@ __metadata: languageName: node linkType: hard -"discord.js@npm:~14.15.3": - version: 14.15.3 - resolution: "discord.js@npm:14.15.3" +"discord.js@npm:~14.16.3": + version: 14.16.3 + resolution: "discord.js@npm:14.16.3" dependencies: - "@discordjs/builders": "npm:^1.8.2" + "@discordjs/builders": "npm:^1.9.0" "@discordjs/collection": "npm:1.5.3" - "@discordjs/formatters": "npm:^0.4.0" - "@discordjs/rest": "npm:^2.3.0" - "@discordjs/util": "npm:^1.1.0" - "@discordjs/ws": "npm:^1.1.1" + "@discordjs/formatters": "npm:^0.5.0" + "@discordjs/rest": "npm:^2.4.0" + "@discordjs/util": "npm:^1.1.1" + "@discordjs/ws": "npm:1.1.1" "@sapphire/snowflake": "npm:3.5.3" - discord-api-types: "npm:0.37.83" + discord-api-types: "npm:0.37.100" fast-deep-equal: "npm:3.1.3" lodash.snakecase: "npm:4.1.1" - tslib: "npm:2.6.2" - undici: "npm:6.13.0" - checksum: 10/b18decbe8a0f1a3f569eb144be2a7039a08068131be2760190ac70fefdeb255cfed10ee0368e488f6c38d53d190c2988a6cc50c7db57a802cf54bb20cc47dc2e + tslib: "npm:^2.6.3" + undici: "npm:6.19.8" + checksum: 10/d8ac4116411922acab80a19b0caac696e1d071646fbf01202a185a484b2c0145f4306aad07c1a448efff4b38c98f601cae767e91b3fc3dc4cd14b05d1278a0db languageName: node linkType: hard @@ -7396,8 +7396,8 @@ __metadata: 0x: "npm:^5.7.0" "@commitlint/cli": "npm:^19.5.0" "@commitlint/config-conventional": "npm:^19.5.0" - "@discordjs/builders": "npm:^1.8.2" - "@discordjs/collection": "npm:^2.1.0" + "@discordjs/builders": "npm:^1.9.0" + "@discordjs/collection": "npm:^2.1.1" "@discordjs/core": "npm:^1.2.0" "@influxdata/influxdb-client": "npm:^1.35.0" "@influxdata/influxdb-client-apis": "npm:^1.35.0" @@ -7443,7 +7443,7 @@ __metadata: cz-conventional-changelog: "npm:^3.3.0" diff: "npm:^5.2.0" discord-api-types: "npm:0.37.98" - discord.js: "npm:~14.15.3" + discord.js: "npm:~14.16.3" eslint: "npm:^8.57.1" eslint-config-prettier: "npm:^9.1.0" eslint-plugin-prettier: "npm:^5.2.1" @@ -8025,13 +8025,6 @@ __metadata: languageName: node linkType: hard -"tslib@npm:2.6.2": - version: 2.6.2 - resolution: "tslib@npm:2.6.2" - checksum: 10/bd26c22d36736513980091a1e356378e8b662ded04204453d353a7f34a4c21ed0afc59b5f90719d4ba756e581a162ecbf93118dc9c6be5acf70aa309188166ca - languageName: node - linkType: hard - "tslib@npm:2.7.0": version: 2.7.0 resolution: "tslib@npm:2.7.0" @@ -8039,7 +8032,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.1.0, tslib@npm:^2.2.0, tslib@npm:^2.6.2": +"tslib@npm:^2.1.0, tslib@npm:^2.2.0, tslib@npm:^2.6.2, tslib@npm:^2.6.3": version: 2.8.1 resolution: "tslib@npm:2.8.1" checksum: 10/3e2e043d5c2316461cb54e5c7fe02c30ef6dccb3384717ca22ae5c6b5bc95232a6241df19c622d9c73b809bea33b187f6dbc73030963e29950c2141bc32a79f7 @@ -8161,10 +8154,10 @@ __metadata: languageName: node linkType: hard -"undici@npm:6.13.0, undici@npm:^6.4.0": - version: 6.13.0 - resolution: "undici@npm:6.13.0" - checksum: 10/4ec2038e95779d4f1114a5dcf5bc74ec59c7fc76f6287f8a6bea6d69113f0190e6d41cc6e14409b5d912b0a92ce910b33bfa05808f40b6bf2b802b58b427f2cf +"undici@npm:6.19.8, undici@npm:^6.4.0": + version: 6.19.8 + resolution: "undici@npm:6.19.8" + checksum: 10/19ae4ba38b029a664d99fd330935ef59136cf99edb04ed821042f27b5a9e84777265fb744c8a7abc83f2059afb019446c69a4ebef07bbc0ed6b2de8d67ef4090 languageName: node linkType: hard