diff --git a/eslint.config.js b/eslint.config.js index 537c00282536..c77f8d73f9c1 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -100,6 +100,13 @@ export default tseslint.config( 'unicorn/prefer-node-protocol': 0, }, }, + { + files: [`packages/structures/**/*${commonFiles}`], + rules: { + '@typescript-eslint/no-empty-object-type': 0, + '@typescript-eslint/no-unsafe-declaration-merging': 0, + }, + }, { files: [`packages/voice/**/*${commonFiles}`], rules: { 'no-restricted-globals': 0 }, diff --git a/packages/structures/__tests__/Mixin.test.ts b/packages/structures/__tests__/Mixin.test.ts index 7f83da694876..3900d0f3214a 100644 --- a/packages/structures/__tests__/Mixin.test.ts +++ b/packages/structures/__tests__/Mixin.test.ts @@ -74,6 +74,7 @@ describe('Mixin function', () => { expect('mixinOptimize' in alreadyOptimizedInstance[kData]).toBe(true); expect(alreadyOptimizedInstance[kData].baseOptimize).toBeUndefined(); expect(alreadyOptimizedInstance[kData].mixinOptimize).toBeUndefined(); + expect(alreadyOptimizedInstance.toJSON()).toEqual({ ...data, mixinOptimize: 'true', baseOptimize: 'true' }); alreadyOptimizedInstance._patch({ mixinOptimize: '', baseOptimize: '' }); diff --git a/packages/structures/__tests__/channels.test.ts b/packages/structures/__tests__/channels.test.ts new file mode 100644 index 000000000000..bd2158510b0c --- /dev/null +++ b/packages/structures/__tests__/channels.test.ts @@ -0,0 +1,696 @@ +import type { + APIDMChannel, + APIGroupDMChannel, + APIGuildCategoryChannel, + APIGuildForumChannel, + APIGuildMediaChannel, + APIGuildStageVoiceChannel, + APIGuildVoiceChannel, + APINewsChannel, + APITextChannel, + APIThreadChannel, +} from 'discord-api-types/v10'; +import { + ForumLayoutType, + SortOrderType, + ChannelType, + OverwriteType, + ThreadAutoArchiveDuration, + VideoQualityMode, +} from 'discord-api-types/v10'; +import { describe, expect, test } from 'vitest'; +import { + AnnouncementChannel, + AnnouncementThreadChannel, + CategoryChannel, + DMChannel, + ForumChannel, + GroupDMChannel, + MediaChannel, + PrivateThreadChannel, + PublicThreadChannel, + StageChannel, + TextChannel, + VoiceChannel, +} from '../src'; +import { kData } from '../src/utils/symbols'; + +describe('text channel', () => { + const data: APITextChannel = { + id: '1', + name: 'test', + type: ChannelType.GuildText, + position: 0, + guild_id: '2', + last_message_id: '3', + last_pin_timestamp: '2020-10-10T13:50:17.209Z', + nsfw: true, + parent_id: '4', + permission_overwrites: [ + { + allow: '123', + deny: '456', + type: OverwriteType.Member, + id: '5', + }, + ], + rate_limit_per_user: 9, + topic: 'hello', + default_auto_archive_duration: ThreadAutoArchiveDuration.OneHour, + default_thread_rate_limit_per_user: 30, + }; + + test('TextChannel has all properties', () => { + const instance = new TextChannel(data); + expect(instance.id).toBe(data.id); + expect(instance.name).toBe(data.name); + expect(instance.position).toBe(data.position); + expect(instance.defaultAutoArchiveDuration).toBe(data.default_auto_archive_duration); + expect(instance.defaultThreadRateLimitPerUser).toBe(data.default_thread_rate_limit_per_user); + expect(instance.flags).toBe(data.flags); + expect(instance.guildId).toBe(data.guild_id); + expect(instance.lastMessageId).toBe(data.last_message_id); + expect(instance.lastPinTimestamp).toBe(Date.parse(data.last_pin_timestamp!)); + expect(instance.lastPinAt?.toISOString()).toBe(data.last_pin_timestamp); + expect(instance.nsfw).toBe(data.nsfw); + expect(instance.parentId).toBe(data.parent_id); + expect(instance.permissionOverwrites?.map((overwrite) => overwrite.toJSON())).toEqual(data.permission_overwrites); + expect(instance.permissionOverwrites?.[0]?.allow?.toString()).toBe(data.permission_overwrites?.[0]?.allow); + expect(instance.permissionOverwrites?.[0]?.deny?.toString()).toBe(data.permission_overwrites?.[0]?.deny); + expect(instance.permissionOverwrites?.[0]?.id).toBe(data.permission_overwrites?.[0]?.id); + expect(instance.permissionOverwrites?.[0]?.type).toBe(data.permission_overwrites?.[0]?.type); + expect(instance.rateLimitPerUser).toBe(data.rate_limit_per_user); + expect(instance.topic).toBe(data.topic); + expect(instance.type).toBe(ChannelType.GuildText); + expect(instance.url).toBe('https://discord.com/channels/2/1'); + expect(instance.toJSON()).toEqual(data); + console.log(instance[kData]); + }); + + test('typeguards', () => { + const instance = new TextChannel(data); + expect(instance.isDMBased()).toBe(false); + expect(instance.isGuildBased()).toBe(true); + expect(instance.isPermissionCapabale()).toBe(true); + expect(instance.isTextBased()).toBe(true); + expect(instance.isThread()).toBe(false); + expect(instance.isThreadOnly()).toBe(false); + expect(instance.isVoiceBased()).toBe(false); + expect(instance.isWebhookCapable()).toBe(true); + }); +}); + +describe('announcement channel', () => { + const data: APINewsChannel = { + id: '1', + name: 'test', + type: ChannelType.GuildAnnouncement, + position: 0, + guild_id: '2', + last_message_id: '3', + last_pin_timestamp: null, + nsfw: true, + parent_id: '4', + rate_limit_per_user: 9, + topic: 'hello', + default_auto_archive_duration: ThreadAutoArchiveDuration.OneHour, + default_thread_rate_limit_per_user: 30, + }; + + test('AnnouncementChannel has all properties', () => { + const instance = new AnnouncementChannel(data); + expect(instance.id).toBe(data.id); + expect(instance.name).toBe(data.name); + expect(instance.position).toBe(data.position); + expect(instance.defaultAutoArchiveDuration).toBe(data.default_auto_archive_duration); + expect(instance.defaultThreadRateLimitPerUser).toBe(data.default_thread_rate_limit_per_user); + expect(instance.flags).toBe(data.flags); + expect(instance.guildId).toBe(data.guild_id); + expect(instance.lastMessageId).toBe(data.last_message_id); + expect(instance.lastPinTimestamp).toBe(null); + expect(instance.lastPinAt).toBe(data.last_pin_timestamp); + expect(instance.nsfw).toBe(data.nsfw); + expect(instance.parentId).toBe(data.parent_id); + expect(instance.permissionOverwrites?.map((overwrite) => overwrite.toJSON())).toEqual(data.permission_overwrites); + expect(instance.rateLimitPerUser).toBe(data.rate_limit_per_user); + expect(instance.topic).toBe(data.topic); + expect(instance.type).toBe(ChannelType.GuildAnnouncement); + expect(instance.url).toBe('https://discord.com/channels/2/1'); + expect(instance.toJSON()).toEqual(data); + }); + + test('typeguards', () => { + const instance = new AnnouncementChannel(data); + expect(instance.isDMBased()).toBe(false); + expect(instance.isGuildBased()).toBe(true); + expect(instance.isPermissionCapabale()).toBe(true); + expect(instance.isTextBased()).toBe(true); + expect(instance.isThread()).toBe(false); + expect(instance.isThreadOnly()).toBe(false); + expect(instance.isVoiceBased()).toBe(false); + expect(instance.isWebhookCapable()).toBe(true); + }); +}); + +describe('category channel', () => { + const data: APIGuildCategoryChannel = { + id: '1', + name: 'test', + type: ChannelType.GuildCategory, + position: 0, + guild_id: '2', + permission_overwrites: [ + { + allow: '123', + deny: '456', + type: OverwriteType.Member, + id: '5', + }, + ], + }; + + test('CategoryChannel has all properties', () => { + const instance = new CategoryChannel(data); + expect(instance.id).toBe(data.id); + expect(instance.name).toBe(data.name); + expect(instance.position).toBe(data.position); + expect(instance.flags).toBe(data.flags); + expect(instance.guildId).toBe(data.guild_id); + expect(instance.permissionOverwrites?.map((overwrite) => overwrite.toJSON())).toEqual(data.permission_overwrites); + expect(instance.type).toBe(ChannelType.GuildCategory); + expect(instance.url).toBe('https://discord.com/channels/2/1'); + expect(instance.toJSON()).toEqual(data); + }); + + test('typeguards', () => { + const instance = new CategoryChannel(data); + expect(instance.isDMBased()).toBe(false); + expect(instance.isGuildBased()).toBe(true); + expect(instance.isPermissionCapabale()).toBe(true); + expect(instance.isTextBased()).toBe(false); + expect(instance.isThread()).toBe(false); + expect(instance.isThreadOnly()).toBe(false); + expect(instance.isVoiceBased()).toBe(false); + expect(instance.isWebhookCapable()).toBe(false); + }); +}); + +describe('DM channel', () => { + const dataNoRecipients: APIDMChannel = { + id: '1', + type: ChannelType.DM, + last_message_id: '3', + last_pin_timestamp: '2020-10-10T13:50:17.209Z', + name: null, + }; + + const data = { + ...dataNoRecipients, + recipients: [ + { + avatar: '123', + discriminator: '0', + global_name: 'tester', + id: '1', + username: 'test', + }, + ], + }; + + test('DMChannel has all properties', () => { + const instance = new DMChannel(data); + expect(instance.id).toBe(data.id); + expect(instance.name).toBe(data.name); + expect(instance.flags).toBe(data.flags); + expect(instance.lastMessageId).toBe(data.last_message_id); + expect(instance.lastPinTimestamp).toBe(Date.parse(data.last_pin_timestamp!)); + expect(instance.lastPinAt?.toISOString()).toBe(data.last_pin_timestamp); + expect(instance.recipients?.map((recipient) => recipient.toJSON())).toEqual(data.recipients); + expect(instance.type).toBe(ChannelType.DM); + expect(instance.url).toBe('https://discord.com/channels/@me/1'); + expect(instance.toJSON()).toEqual(data); + }); + + test('DMChannel with no recipients', () => { + const instance = new DMChannel(dataNoRecipients); + expect(instance.recipients?.map((recipient) => recipient.toJSON())).toEqual(dataNoRecipients.recipients); + expect(instance.toJSON()).toEqual(dataNoRecipients); + }); + + test('typeguards', () => { + const instance = new DMChannel(data); + expect(instance.isDMBased()).toBe(true); + expect(instance.isGuildBased()).toBe(false); + expect(instance.isPermissionCapabale()).toBe(false); + expect(instance.isTextBased()).toBe(true); + expect(instance.isThread()).toBe(false); + expect(instance.isThreadOnly()).toBe(false); + expect(instance.isVoiceBased()).toBe(false); + expect(instance.isWebhookCapable()).toBe(false); + }); +}); + +describe('GroupDM channel', () => { + const data: APIGroupDMChannel = { + id: '1', + type: ChannelType.GroupDM, + last_message_id: '3', + name: 'name', + recipients: [ + { + avatar: '123', + discriminator: '0', + global_name: 'tester', + id: '1', + username: 'test', + }, + ], + application_id: '34', + icon: 'abc', + managed: true, + owner_id: '567', + }; + + test('GroupDMChannel has all properties', () => { + const instance = new GroupDMChannel(data); + expect(instance.id).toBe(data.id); + expect(instance.name).toBe(data.name); + expect(instance.flags).toBe(data.flags); + expect(instance.lastMessageId).toBe(data.last_message_id); + expect(instance.recipients?.map((recipient) => recipient.toJSON())).toEqual(data.recipients); + expect(instance.applicationId).toBe(data.application_id); + expect(instance.managed).toBe(data.managed); + expect(instance.ownerId).toBe(data.owner_id); + expect(instance.type).toBe(ChannelType.GroupDM); + expect(instance.icon).toBe(data.icon); + expect(instance.url).toBe('https://discord.com/channels/@me/1'); + expect(instance.toJSON()).toEqual(data); + }); + + test('typeguards', () => { + const instance = new GroupDMChannel(data); + expect(instance.isDMBased()).toBe(true); + expect(instance.isGuildBased()).toBe(false); + expect(instance.isPermissionCapabale()).toBe(false); + expect(instance.isTextBased()).toBe(true); + expect(instance.isThread()).toBe(false); + expect(instance.isThreadOnly()).toBe(false); + expect(instance.isVoiceBased()).toBe(false); + expect(instance.isWebhookCapable()).toBe(false); + }); +}); + +describe('forum channel', () => { + const data: APIGuildForumChannel = { + id: '1', + name: 'test', + type: ChannelType.GuildForum, + position: 0, + guild_id: '2', + nsfw: true, + parent_id: '4', + permission_overwrites: [ + { + allow: '123', + deny: '456', + type: OverwriteType.Member, + id: '5', + }, + ], + topic: 'hello', + default_auto_archive_duration: ThreadAutoArchiveDuration.OneHour, + default_thread_rate_limit_per_user: 30, + available_tags: [ + { + name: 'emoji', + emoji_name: '😀', + moderated: false, + id: '789', + emoji_id: null, + }, + ], + default_forum_layout: ForumLayoutType.GalleryView, + default_reaction_emoji: { + emoji_id: '159', + emoji_name: null, + }, + default_sort_order: SortOrderType.LatestActivity, + }; + + test('ForumChannel has all properties', () => { + const instance = new ForumChannel(data); + expect(instance.id).toBe(data.id); + expect(instance.name).toBe(data.name); + expect(instance.position).toBe(data.position); + expect(instance.defaultAutoArchiveDuration).toBe(data.default_auto_archive_duration); + expect(instance.defaultThreadRateLimitPerUser).toBe(data.default_thread_rate_limit_per_user); + expect(instance.flags).toBe(data.flags); + expect(instance.guildId).toBe(data.guild_id); + expect(instance.nsfw).toBe(data.nsfw); + expect(instance.parentId).toBe(data.parent_id); + expect(instance.permissionOverwrites?.map((overwrite) => overwrite.toJSON())).toEqual(data.permission_overwrites); + expect(instance.defaultForumLayout).toBe(data.default_forum_layout); + expect(instance.defaultReactionEmoji).toBe(data.default_reaction_emoji); + expect(instance.defaultSortOrder).toBe(data.default_sort_order); + expect(instance.availableTags.map((tag) => tag.toJSON())).toEqual(data.available_tags); + expect(instance.availableTags[0]?.id).toBe(data.available_tags[0]?.id); + expect(instance.availableTags[0]?.emojiId).toBe(data.available_tags[0]?.emoji_id); + expect(instance.availableTags[0]?.emojiName).toBe(data.available_tags[0]?.emoji_name); + expect(instance.availableTags[0]?.name).toBe(data.available_tags[0]?.name); + expect(instance.availableTags[0]?.moderated).toBe(data.available_tags[0]?.moderated); + expect(instance.availableTags[0]?.emoji).toBe(data.available_tags[0]?.emoji_name); + expect(instance.topic).toBe(data.topic); + expect(instance.type).toBe(ChannelType.GuildForum); + expect(instance.url).toBe('https://discord.com/channels/2/1'); + expect(instance.toJSON()).toEqual(data); + }); + + test('typeguards', () => { + const instance = new ForumChannel(data); + expect(instance.isDMBased()).toBe(false); + expect(instance.isGuildBased()).toBe(true); + expect(instance.isPermissionCapabale()).toBe(true); + expect(instance.isTextBased()).toBe(false); + expect(instance.isThread()).toBe(false); + expect(instance.isThreadOnly()).toBe(true); + expect(instance.isVoiceBased()).toBe(false); + expect(instance.isWebhookCapable()).toBe(true); + }); +}); + +describe('media channel', () => { + const data: APIGuildMediaChannel = { + id: '1', + name: 'test', + type: ChannelType.GuildMedia, + position: 0, + guild_id: '2', + nsfw: true, + parent_id: '4', + permission_overwrites: [ + { + allow: '123', + deny: '456', + type: OverwriteType.Member, + id: '5', + }, + ], + topic: 'hello', + default_auto_archive_duration: ThreadAutoArchiveDuration.OneHour, + default_thread_rate_limit_per_user: 30, + available_tags: [ + { + name: 'emoji', + emoji_name: null, + moderated: false, + id: '789', + emoji_id: '444', + }, + ], + default_reaction_emoji: { + emoji_id: '159', + emoji_name: null, + }, + default_sort_order: SortOrderType.LatestActivity, + }; + + test('MediaChannel has all properties', () => { + const instance = new MediaChannel(data); + expect(instance.id).toBe(data.id); + expect(instance.name).toBe(data.name); + expect(instance.position).toBe(data.position); + expect(instance.defaultAutoArchiveDuration).toBe(data.default_auto_archive_duration); + expect(instance.defaultThreadRateLimitPerUser).toBe(data.default_thread_rate_limit_per_user); + expect(instance.flags).toBe(data.flags); + expect(instance.guildId).toBe(data.guild_id); + expect(instance.nsfw).toBe(data.nsfw); + expect(instance.parentId).toBe(data.parent_id); + expect(instance.permissionOverwrites?.map((overwrite) => overwrite.toJSON())).toEqual(data.permission_overwrites); + expect(instance.availableTags.map((tag) => tag.toJSON())).toEqual(data.available_tags); + expect(instance.availableTags[0]?.emoji).toBe(`<:_:${data.available_tags[0]?.emoji_id}>`); + expect(instance.topic).toBe(data.topic); + expect(instance.type).toBe(ChannelType.GuildMedia); + expect(instance.url).toBe('https://discord.com/channels/2/1'); + expect(instance.toJSON()).toEqual(data); + }); + + test('typeguards', () => { + const instance = new MediaChannel(data); + expect(instance.isDMBased()).toBe(false); + expect(instance.isGuildBased()).toBe(true); + expect(instance.isPermissionCapabale()).toBe(true); + expect(instance.isTextBased()).toBe(false); + expect(instance.isThread()).toBe(false); + expect(instance.isThreadOnly()).toBe(true); + expect(instance.isVoiceBased()).toBe(false); + expect(instance.isWebhookCapable()).toBe(true); + }); +}); + +describe('voice channel', () => { + const data: APIGuildVoiceChannel = { + id: '1', + name: 'test', + type: ChannelType.GuildVoice, + position: 0, + guild_id: '2', + last_message_id: '3', + nsfw: true, + parent_id: '4', + permission_overwrites: [ + { + allow: '123', + deny: '456', + type: OverwriteType.Member, + id: '5', + }, + ], + rate_limit_per_user: 9, + bitrate: 7, + rtc_region: 'somewhere', + user_limit: 100, + video_quality_mode: VideoQualityMode.Full, + }; + + test('VoiceChannel has all properties', () => { + const instance = new VoiceChannel(data); + expect(instance.id).toBe(data.id); + expect(instance.name).toBe(data.name); + expect(instance.position).toBe(data.position); + expect(instance.bitrate).toBe(data.bitrate); + expect(instance.rtcRegion).toBe(data.rtc_region); + expect(instance.flags).toBe(data.flags); + expect(instance.guildId).toBe(data.guild_id); + expect(instance.lastMessageId).toBe(data.last_message_id); + expect(instance.videoQualityMode).toBe(data.video_quality_mode); + expect(instance.userLimit).toBe(data.user_limit); + expect(instance.nsfw).toBe(data.nsfw); + expect(instance.parentId).toBe(data.parent_id); + expect(instance.permissionOverwrites?.map((overwrite) => overwrite.toJSON())).toEqual(data.permission_overwrites); + expect(instance.rateLimitPerUser).toBe(data.rate_limit_per_user); + expect(instance.type).toBe(ChannelType.GuildVoice); + expect(instance.url).toBe('https://discord.com/channels/2/1'); + expect(instance.toJSON()).toEqual(data); + }); + + test('typeguards', () => { + const instance = new VoiceChannel(data); + expect(instance.isDMBased()).toBe(false); + expect(instance.isGuildBased()).toBe(true); + expect(instance.isPermissionCapabale()).toBe(true); + expect(instance.isTextBased()).toBe(true); + expect(instance.isThread()).toBe(false); + expect(instance.isThreadOnly()).toBe(false); + expect(instance.isVoiceBased()).toBe(true); + expect(instance.isWebhookCapable()).toBe(true); + }); +}); + +describe('stage channel', () => { + const data: APIGuildStageVoiceChannel = { + id: '1', + name: 'test', + type: ChannelType.GuildStageVoice, + position: 0, + guild_id: '2', + last_message_id: '3', + nsfw: true, + parent_id: '4', + permission_overwrites: [ + { + allow: '123', + deny: '456', + type: OverwriteType.Member, + id: '5', + }, + ], + rate_limit_per_user: 9, + bitrate: 7, + rtc_region: 'somewhere', + user_limit: 100, + video_quality_mode: VideoQualityMode.Full, + }; + + test('StageChannel has all properties', () => { + const instance = new StageChannel(data); + expect(instance.id).toBe(data.id); + expect(instance.name).toBe(data.name); + expect(instance.position).toBe(data.position); + expect(instance.bitrate).toBe(data.bitrate); + expect(instance.rtcRegion).toBe(data.rtc_region); + expect(instance.flags).toBe(data.flags); + expect(instance.guildId).toBe(data.guild_id); + expect(instance.lastMessageId).toBe(data.last_message_id); + expect(instance.videoQualityMode).toBe(data.video_quality_mode); + expect(instance.nsfw).toBe(data.nsfw); + expect(instance.parentId).toBe(data.parent_id); + expect(instance.permissionOverwrites?.map((overwrite) => overwrite.toJSON())).toEqual(data.permission_overwrites); + expect(instance.rateLimitPerUser).toBe(data.rate_limit_per_user); + expect(instance.type).toBe(ChannelType.GuildStageVoice); + expect(instance.url).toBe('https://discord.com/channels/2/1'); + expect(instance.toJSON()).toEqual(data); + }); + + test('typeguards', () => { + const instance = new StageChannel(data); + expect(instance.isDMBased()).toBe(false); + expect(instance.isGuildBased()).toBe(true); + expect(instance.isPermissionCapabale()).toBe(true); + expect(instance.isTextBased()).toBe(true); + expect(instance.isThread()).toBe(false); + expect(instance.isThreadOnly()).toBe(false); + expect(instance.isVoiceBased()).toBe(true); + expect(instance.isWebhookCapable()).toBe(true); + }); +}); + +describe('thread channels', () => { + // TODO: remove special handling once dtypes PR for thread channel types releases + const dataPublic: Omit = { + id: '1', + name: 'test', + type: ChannelType.PublicThread, + guild_id: '2', + last_message_id: '3', + nsfw: true, + parent_id: '4', + rate_limit_per_user: 9, + applied_tags: ['567'], + }; + + const dataAnnounce: Omit = { + ...dataPublic, + thread_metadata: { + archive_timestamp: '2024-09-08T12:01:02.345Z', + archived: false, + auto_archive_duration: ThreadAutoArchiveDuration.ThreeDays, + locked: true, + create_timestamp: '2023-01-02T15:13:11.987Z', + }, + type: ChannelType.AnnouncementThread, + }; + + const dataPrivate: Omit = { + ...dataPublic, + thread_metadata: { + ...dataAnnounce.thread_metadata!, + invitable: true, + }, + type: ChannelType.PrivateThread, + }; + + test('PublicThreadChannel has all properties', () => { + const instance = new PublicThreadChannel(dataPublic); + expect(instance.id).toBe(dataPublic.id); + expect(instance.name).toBe(dataPublic.name); + expect(instance.flags).toBe(dataPublic.flags); + expect(instance.guildId).toBe(dataPublic.guild_id); + expect(instance.lastMessageId).toBe(dataPublic.last_message_id); + expect(instance.nsfw).toBe(dataPublic.nsfw); + expect(instance.parentId).toBe(dataPublic.parent_id); + expect(instance.rateLimitPerUser).toBe(dataPublic.rate_limit_per_user); + expect(instance.type).toBe(ChannelType.PublicThread); + expect(instance.appliedTags).toEqual(dataPublic.applied_tags); + expect(instance.memberCount).toBe(dataPublic.member_count); + expect(instance.messageCount).toBe(dataPublic.message_count); + expect(instance.totalMessageSent).toBe(dataPublic.total_message_sent); + expect(instance.url).toBe('https://discord.com/channels/2/1'); + expect(instance.toJSON()).toEqual(dataPublic); + }); + + test('typeguards PublicThread', () => { + const instance = new PublicThreadChannel(dataPublic); + expect(instance.isDMBased()).toBe(false); + expect(instance.isGuildBased()).toBe(true); + expect(instance.isPermissionCapabale()).toBe(false); + expect(instance.isTextBased()).toBe(true); + expect(instance.isThread()).toBe(true); + expect(instance.isThreadOnly()).toBe(false); + expect(instance.isVoiceBased()).toBe(false); + expect(instance.isWebhookCapable()).toBe(false); + }); + + test('PrivateThreadChannel has all properties', () => { + const instance = new PrivateThreadChannel(dataPrivate); + expect(instance.id).toBe(dataPrivate.id); + expect(instance.name).toBe(dataPrivate.name); + expect(instance.flags).toBe(dataPrivate.flags); + expect(instance.guildId).toBe(dataPrivate.guild_id); + expect(instance.lastMessageId).toBe(dataPrivate.last_message_id); + expect(instance.nsfw).toBe(dataPrivate.nsfw); + expect(instance.parentId).toBe(dataPrivate.parent_id); + expect(instance.rateLimitPerUser).toBe(dataPrivate.rate_limit_per_user); + expect(instance.threadMetadata?.toJSON()).toEqual(dataPrivate.thread_metadata); + expect(instance.threadMetadata?.archived).toBe(dataPrivate.thread_metadata?.archived); + expect(instance.threadMetadata?.archivedAt?.toISOString()).toBe(dataPrivate.thread_metadata?.archive_timestamp); + expect(instance.threadMetadata?.archivedTimestamp).toBe(Date.parse(dataPrivate.thread_metadata!.archive_timestamp)); + expect(instance.threadMetadata?.createdAt?.toISOString()).toBe(dataPrivate.thread_metadata?.create_timestamp); + expect(instance.threadMetadata?.createdTimestamp).toBe(Date.parse(dataPrivate.thread_metadata!.create_timestamp!)); + expect(instance.threadMetadata?.autoArchiveDuration).toBe(dataPrivate.thread_metadata?.auto_archive_duration); + expect(instance.threadMetadata?.invitable).toBe(dataPrivate.thread_metadata?.invitable); + expect(instance.threadMetadata?.locked).toBe(dataPrivate.thread_metadata?.locked); + expect(instance.type).toBe(ChannelType.PrivateThread); + expect(instance.url).toBe('https://discord.com/channels/2/1'); + expect(instance.toJSON()).toEqual(dataPrivate); + }); + + test('typeguards PrivateThread', () => { + const instance = new PrivateThreadChannel(dataPrivate); + expect(instance.isDMBased()).toBe(false); + expect(instance.isGuildBased()).toBe(true); + expect(instance.isPermissionCapabale()).toBe(false); + expect(instance.isTextBased()).toBe(true); + expect(instance.isThread()).toBe(true); + expect(instance.isThreadOnly()).toBe(false); + expect(instance.isVoiceBased()).toBe(false); + expect(instance.isWebhookCapable()).toBe(false); + }); + + test('AnnouncementThreadChannel has all properties', () => { + const instance = new AnnouncementThreadChannel(dataAnnounce); + expect(instance.id).toBe(dataAnnounce.id); + expect(instance.name).toBe(dataAnnounce.name); + expect(instance.flags).toBe(dataAnnounce.flags); + expect(instance.guildId).toBe(dataAnnounce.guild_id); + expect(instance.lastMessageId).toBe(dataAnnounce.last_message_id); + expect(instance.nsfw).toBe(dataAnnounce.nsfw); + expect(instance.parentId).toBe(dataAnnounce.parent_id); + expect(instance.rateLimitPerUser).toBe(dataAnnounce.rate_limit_per_user); + expect(instance.threadMetadata?.toJSON()).toEqual(dataAnnounce.thread_metadata); + expect(instance.type).toBe(ChannelType.AnnouncementThread); + expect(instance.url).toBe('https://discord.com/channels/2/1'); + expect(instance.toJSON()).toEqual(dataAnnounce); + }); + + test('typeguards AnnouncementThread', () => { + const instance = new AnnouncementThreadChannel(dataAnnounce); + expect(instance.isDMBased()).toBe(false); + expect(instance.isGuildBased()).toBe(true); + expect(instance.isPermissionCapabale()).toBe(false); + expect(instance.isTextBased()).toBe(true); + expect(instance.isThread()).toBe(true); + expect(instance.isThreadOnly()).toBe(false); + expect(instance.isVoiceBased()).toBe(false); + expect(instance.isWebhookCapable()).toBe(false); + }); +}); diff --git a/packages/structures/__tests__/invite.test.ts b/packages/structures/__tests__/invite.test.ts new file mode 100644 index 000000000000..c5a69e2ed40a --- /dev/null +++ b/packages/structures/__tests__/invite.test.ts @@ -0,0 +1,39 @@ +import type { APIExtendedInvite } from 'discord-api-types/v10'; +import { InviteTargetType, InviteType } from 'discord-api-types/v10'; +import { describe, expect, test } from 'vitest'; +import { Invite } from '../src'; + +describe('Invite', () => { + const data: APIExtendedInvite = { + type: InviteType.Guild, + channel: null, + code: '123', + created_at: '2020-10-10T13:50:17.209Z', + max_age: 12, + max_uses: 34, + temporary: false, + uses: 5, + approximate_member_count: 15, + approximate_presence_count: 35, + target_type: InviteTargetType.EmbeddedApplication, + }; + + test('Invite has all properties', () => { + const instance = new Invite(data); + // expect(instance.type).toBe(data.type); + expect(instance.code).toBe(data.code); + expect(instance.createdAt?.toISOString()).toBe(data.created_at); + expect(instance.createdTimestamp).toBe(Date.parse(data.created_at)); + expect(instance.maxAge).toBe(data.max_age); + expect(instance.maxUses).toBe(data.max_uses); + expect(instance.memberCount).toBe(data.approximate_member_count); + expect(instance.presenceCount).toBe(data.approximate_presence_count); + expect(instance.targetType).toBe(data.target_type); + expect(instance.temporary).toBe(data.temporary); + expect(instance.uses).toBe(data.uses); + expect(instance.expiresTimestamp).toStrictEqual(Date.parse('2020-10-10T13:50:29.209Z')); + expect(instance.expiresAt).toStrictEqual(new Date('2020-10-10T13:50:29.209Z')); + expect(instance.url).toBe('https://discord.gg/123'); + expect(instance.toJSON()).toEqual(data); + }); +}); diff --git a/packages/structures/__tests__/mixinClasses.ts b/packages/structures/__tests__/mixinClasses.ts index 3e75a02c9151..972419989ba7 100644 --- a/packages/structures/__tests__/mixinClasses.ts +++ b/packages/structures/__tests__/mixinClasses.ts @@ -41,6 +41,15 @@ export class Base extends Structure extends Base { @@ -68,6 +77,12 @@ export class MixinProperty1 { public getProperty1() { return this.property1; } + + protected _toJSON(data: Partial) { + if (this.mixinOptimize) { + data.mixinOptimize = String(this.mixinOptimize); + } + } } export interface MixinProperty2 extends Base { diff --git a/packages/structures/package.json b/packages/structures/package.json index 41594f1a8150..8d6164a0c38f 100644 --- a/packages/structures/package.json +++ b/packages/structures/package.json @@ -62,27 +62,28 @@ "homepage": "https://discord.js.org", "dependencies": { "@sapphire/snowflake": "^3.5.5", - "discord-api-types": "^0.37.114" + "discord-api-types": "^0.38.1" }, "devDependencies": { "@discordjs/api-extractor": "workspace:^", "@discordjs/scripts": "workspace:^", "@favware/cliff-jumper": "^4.1.0", - "@types/node": "20.17.10", - "@vitest/coverage-v8": "^2.1.8", + "@types/node": "22.15.2", + "@vitest/coverage-v8": "^3.1.1", "cross-env": "^7.0.3", "esbuild-plugin-version-injector": "^1.2.1", - "eslint": "^8.57.1", - "eslint-config-neon": "^0.1.62", + "eslint": "^9.25.1", + "eslint-config-neon": "^0.2.7", + "eslint-formatter-compact": "^8.40.0", "eslint-formatter-pretty": "^6.0.1", - "prettier": "^3.4.2", + "prettier": "^3.5.3", "tsd": "^0.31.2", - "tsup": "^8.3.5", - "typescript": "~5.5.4", - "vitest": "^2.1.8" + "tsup": "^8.4.0", + "typescript": "~5.8.3", + "vitest": "^3.1.1" }, "engines": { - "node": ">=20" + "node": ">=22.12.0" }, "publishConfig": { "access": "public", diff --git a/packages/structures/src/Mixin.ts b/packages/structures/src/Mixin.ts index e9ce149bd18e..86f01c03b339 100644 --- a/packages/structures/src/Mixin.ts +++ b/packages/structures/src/Mixin.ts @@ -8,6 +8,8 @@ export type Mixinable = new (...args: unknown[]) => ClassType; export type MixinBase> = BaseClass extends Structure ? Structure : never; +export const EnrichToJSONPropertyName = '_toJSON'; + /** * Copies the prototype (getters, setters, and methods) of all mixins to the destination class. * For type information see {@link MixinTypes} @@ -40,6 +42,7 @@ export function Mixin>( ) { const dataTemplates: Record[] = []; const dataOptimizations: ((data: unknown) => void)[] = []; + const enrichToJSONs: ((data: unknown) => void)[] = []; const constructors: ((data: Partial) => void)[] = []; for (const mixin of mixins) { @@ -80,6 +83,10 @@ export function Mixin>( if (typeof descriptor.value !== 'function') return; dataOptimizations.push(descriptor.value); continue; + } else if (prop === EnrichToJSONPropertyName) { + if (typeof descriptor.value !== 'function') return; + enrichToJSONs.push(descriptor.value); + continue; } // Shouldn't be anything other than these without being instantiated, but just in case @@ -143,6 +150,34 @@ export function Mixin>( }); } + if (enrichToJSONs.length > 0) { + // call base toJSON first, then enrich the result with mixins if they have a _toJSON function + let baseToJSON; + let destinationClass = destination; + + while (!baseToJSON && destinationClass) { + baseToJSON = Object.getOwnPropertyDescriptor(destinationClass.prototype, 'toJSON')?.value; + destinationClass = Object.getPrototypeOf(destinationClass); + } + + if (baseToJSON && typeof baseToJSON === 'function') { + Object.defineProperty(destination.prototype, 'toJSON', { + writable: true, + enumerable: true, + configurable: true, + // eslint-disable-next-line func-name-matching + value: function _mixinToJSON() { + const data = baseToJSON.call(this); + for (const enricher of enrichToJSONs) { + enricher.call(this, data); + } + + return data; + }, + }); + } + } + // Copy the properties (setters) of each mixins template to the destinations template if (dataTemplates.length > 0) { if (!Object.getOwnPropertyDescriptor(destination, DataTemplatePropertyName)) { diff --git a/packages/structures/src/Structure.ts b/packages/structures/src/Structure.ts index 91571d2d60be..dc55e6802da3 100644 --- a/packages/structures/src/Structure.ts +++ b/packages/structures/src/Structure.ts @@ -22,11 +22,11 @@ export const OptimizeDataPropertyName = '_optimizeData'; * There are two layers of Omitted generics, one here, which allows omitting things at the library level so we do not accidentally * access them, in addition to whatever the user does at the layer above. * - * The second layer, in the exported structure is effectively a type cast that allows the getters types to match whatever data template is ued + * The second layer, in the exported structure is effectively a type cast that allows the getters types to match whatever data template is used * * In order to safely set and access this data, the constructor and patch take data as "partial" and forcibly assigns it to kData. To acommodate this, * kData stores properties as `unknown` when it is omitted, which allows accessing the property in getters even when it may not actually be present. - * This is the most technically correct way of represnting the value, especially since there is no way to guarantee runtime matches the "type cast." + * This is the most technically correct way of representing the value, especially since there is no way to guarantee runtime matches the "type cast." */ export abstract class Structure { /** diff --git a/packages/structures/src/channels/AnnouncementChannel.ts b/packages/structures/src/channels/AnnouncementChannel.ts new file mode 100644 index 000000000000..9473a54eda21 --- /dev/null +++ b/packages/structures/src/channels/AnnouncementChannel.ts @@ -0,0 +1,42 @@ +import type { APINewsChannel, ChannelType } from 'discord-api-types/v10'; +import type { MixinTypes } from '../Mixin.js'; +import { Mixin } from '../Mixin.js'; +import { Channel } from './Channel.js'; +import { ChannelParentMixin } from './mixins/ChannelParentMixin.js'; +import { ChannelPermissionMixin } from './mixins/ChannelPermissionMixin.js'; +import { ChannelPinMixin } from './mixins/ChannelPinMixin.js'; +import { ChannelSlowmodeMixin } from './mixins/ChannelSlowmodeMixin.js'; +import { ChannelTopicMixin } from './mixins/ChannelTopicMixin.js'; +import { TextChannelMixin } from './mixins/TextChannelMixin.js'; + +export interface AnnouncementChannel + extends MixinTypes< + Channel, + [ + TextChannelMixin, + ChannelParentMixin, + ChannelPermissionMixin, + ChannelPinMixin, + ChannelSlowmodeMixin, + ChannelTopicMixin, + ] + > {} + +export class AnnouncementChannel extends Channel< + ChannelType.GuildAnnouncement, + Omitted +> { + public constructor(data: APINewsChannel) { + super(data); + this._optimizeData(data); + } +} + +Mixin(AnnouncementChannel, [ + TextChannelMixin, + ChannelParentMixin, + ChannelPermissionMixin, + ChannelPinMixin, + ChannelSlowmodeMixin, + ChannelTopicMixin, +]); diff --git a/packages/structures/src/channels/AnnouncementThreadChannel.ts b/packages/structures/src/channels/AnnouncementThreadChannel.ts new file mode 100644 index 000000000000..c06cc55d720a --- /dev/null +++ b/packages/structures/src/channels/AnnouncementThreadChannel.ts @@ -0,0 +1,45 @@ +import type { ChannelType } from 'discord-api-types/v10'; +import { Mixin, type MixinTypes } from '../Mixin.js'; +import type { APIThreadChannel } from '../utils/types'; +import { Channel } from './Channel.js'; +import { ChannelOwnerMixin } from './mixins/ChannelOwnerMixin.js'; +import { ChannelParentMixin } from './mixins/ChannelParentMixin.js'; +import { ChannelPinMixin } from './mixins/ChannelPinMixin.js'; +import { ChannelSlowmodeMixin } from './mixins/ChannelSlowmodeMixin.js'; +import { GuildChannelMixin } from './mixins/GuildChannelMixin.js'; +import { TextChannelMixin } from './mixins/TextChannelMixin.js'; +import { ThreadChannelMixin } from './mixins/ThreadChannelMixin.js'; + +export interface AnnouncementThreadChannel + extends MixinTypes< + Channel, + [ + TextChannelMixin, + ChannelOwnerMixin, + ChannelParentMixin, + ChannelPinMixin, + ChannelSlowmodeMixin, + GuildChannelMixin, + ThreadChannelMixin, + ] + > {} + +export class AnnouncementThreadChannel extends Channel< + ChannelType.AnnouncementThread, + Omitted +> { + public constructor(data: APIThreadChannel) { + super(data); + this._optimizeData(data); + } +} + +Mixin(AnnouncementThreadChannel, [ + TextChannelMixin, + ChannelOwnerMixin, + ChannelParentMixin, + ChannelPinMixin, + ChannelSlowmodeMixin, + GuildChannelMixin, + ThreadChannelMixin, +]); diff --git a/packages/structures/src/channels/CategoryChannel.ts b/packages/structures/src/channels/CategoryChannel.ts new file mode 100644 index 000000000000..a49a34aad9a8 --- /dev/null +++ b/packages/structures/src/channels/CategoryChannel.ts @@ -0,0 +1,23 @@ +import type { APIGuildCategoryChannel, ChannelType } from 'discord-api-types/v10'; +import { Mixin, type MixinTypes } from '../Mixin.js'; +import { Channel } from './Channel.js'; +import { ChannelPermissionMixin } from './mixins/ChannelPermissionMixin.js'; +import { GuildChannelMixin } from './mixins/GuildChannelMixin.js'; + +export interface CategoryChannel + extends MixinTypes< + Channel, + [ChannelPermissionMixin, GuildChannelMixin] + > {} + +export class CategoryChannel extends Channel< + ChannelType.GuildCategory, + Omitted +> { + public constructor(data: APIGuildCategoryChannel) { + super(data); + this._optimizeData(data); + } +} + +Mixin(CategoryChannel, [ChannelPermissionMixin, GuildChannelMixin]); diff --git a/packages/structures/src/channels/Channel.ts b/packages/structures/src/channels/Channel.ts index 0454aa0b6633..b678c0ff6554 100644 --- a/packages/structures/src/channels/Channel.ts +++ b/packages/structures/src/channels/Channel.ts @@ -1,7 +1,24 @@ import { DiscordSnowflake } from '@sapphire/snowflake'; -import type { APIChannel, APIPartialChannel, ChannelType } from 'discord-api-types/v10'; +import type { + TextChannelType, + ThreadChannelType, + APIChannel, + APIPartialChannel, + ChannelType, + GuildChannelType, + GuildTextChannelType, +} from 'discord-api-types/v10'; import { Structure } from '../Structure.js'; import { kData } from '../utils/symbols.js'; +import type { APIThreadChannel } from '../utils/types'; +import type { ChannelPermissionMixin } from './mixins/ChannelPermissionMixin.js'; +import type { ChannelWebhookMixin } from './mixins/ChannelWebhookMixin.js'; +import type { DMChannelMixin } from './mixins/DMChannelMixin.js'; +import type { GuildChannelMixin } from './mixins/GuildChannelMixin.js'; +import type { TextChannelMixin } from './mixins/TextChannelMixin.js'; +import type { ThreadChannelMixin } from './mixins/ThreadChannelMixin.js'; +import type { ThreadOnlyChannelMixin } from './mixins/ThreadOnlyChannelMixin.js'; +import type { VoiceChannelMixin } from './mixins/VoiceChannelMixin.js'; export type PartialChannel = Channel<'unknown', Exclude>; @@ -10,7 +27,9 @@ export type PartialChannel = Channel<'unknown', Exclude = Type extends 'unknown' ? APIChannel - : Extract; + : Type extends ChannelType.AnnouncementThread | ChannelType.PrivateThread | ChannelType.PublicThread + ? APIThreadChannel + : Extract; // TODO: remove special handling once dtypes PR for thread channel types releases /** * Represents any channel on Discord. @@ -73,6 +92,16 @@ export class Channel< return this[kData].name; } + /** + * The flags that are applied to the channel. + * + * @privateRemarks The type of `flags` can be narrowed in Guild Channels and DMChannel to ChannelFlags, and in GroupDM channel + * to null, respecting Omit behaviors + */ + public get flags() { + return this[kData].flags; + } + /** * The timestamp the channel was created at */ @@ -94,7 +123,7 @@ export class Channel< * * @privateRemarks Overriden to `true` on `ThreadChannelMixin` */ - public isThread() { + public isThread(): this is ThreadChannelMixin> { return false; } @@ -103,7 +132,7 @@ export class Channel< * * @privateRemarks Overriden to `true` on `TextChannelMixin` */ - public iSTextBased() { + public isTextBased(): this is TextChannelMixin> { return false; } @@ -112,7 +141,7 @@ export class Channel< * * @privateRemarks Overriden to `true` on `GuildChannelMixin` */ - public isGuildBased() { + public isGuildBased(): this is GuildChannelMixin> { return false; } @@ -121,7 +150,7 @@ export class Channel< * * @privateRemarks Overriden to `true` on `DMChannelMixin` */ - public isDMBased() { + public isDMBased(): this is DMChannelMixin> { return false; } @@ -130,7 +159,9 @@ export class Channel< * * @privateRemarks Overriden to `true` on `VoiceChannelMixin` */ - public isVoiceBased() { + public isVoiceBased(): this is VoiceChannelMixin< + Extract + > { return false; } @@ -139,7 +170,9 @@ export class Channel< * * @privateRemarks Overriden to `true` on `ThreadOnlyChannelMixin` */ - public isThreadOnly() { + public isThreadOnly(): this is ThreadOnlyChannelMixin< + Extract + > { return false; } @@ -148,7 +181,9 @@ export class Channel< * * @privateRemarks Overriden to `true` on `ChannelPermissionsMixin` */ - public isPermissionCapabale() { + public isPermissionCapabale(): this is ChannelPermissionMixin< + Extract> + > { return false; } @@ -157,7 +192,9 @@ export class Channel< * * @privateRemarks Overriden to `true` on `ChannelWebhooksMixin` */ - public isWebhookCapable() { + public isWebhookCapable(): this is ChannelWebhookMixin< + Extract> + > { return false; } } diff --git a/packages/structures/src/channels/DMChannel.ts b/packages/structures/src/channels/DMChannel.ts new file mode 100644 index 000000000000..63ee3fe31c0e --- /dev/null +++ b/packages/structures/src/channels/DMChannel.ts @@ -0,0 +1,21 @@ +import type { APIDMChannel, ChannelType } from 'discord-api-types/v10'; +import { Mixin, type MixinTypes } from '../Mixin.js'; +import { Channel } from './Channel.js'; +import { ChannelPinMixin } from './mixins/ChannelPinMixin.js'; +import { DMChannelMixin } from './mixins/DMChannelMixin.js'; +import { TextChannelMixin } from './mixins/TextChannelMixin.js'; + +export interface DMChannel + extends MixinTypes< + Channel, + [DMChannelMixin, TextChannelMixin, ChannelPinMixin] + > {} + +export class DMChannel extends Channel { + public constructor(data: APIDMChannel) { + super(data); + this._optimizeData(data); + } +} + +Mixin(DMChannel, [DMChannelMixin, TextChannelMixin, ChannelPinMixin]); diff --git a/packages/structures/src/channels/DirectoryChannel.ts b/packages/structures/src/channels/DirectoryChannel.ts new file mode 100644 index 000000000000..f6b7a093c90c --- /dev/null +++ b/packages/structures/src/channels/DirectoryChannel.ts @@ -0,0 +1,18 @@ +/* eslint-disable unicorn/no-empty-file */ +// TODO: what does a DirectoryChannel even have and what not? +/* +import type { APIChannelBase, ChannelType } from 'discord-api-types/v10'; +import { Mixin, type MixinTypes } from '../Mixin.js'; +import { Channel } from './Channel.js'; +import { GuildChannelMixin } from './mixins/GuildChannelMixin.js'; + +export interface DirectoryChannel | '' = ''> + extends MixinTypes, [GuildChannelMixin]> {} + +export class DirectoryChannel | '' = ''> extends Channel< + ChannelType.GuildDirectory, + Omitted +> {} + +Mixin(DirectoryChannel, [GuildChannelMixin]); +*/ diff --git a/packages/structures/src/channels/ForumChannel.ts b/packages/structures/src/channels/ForumChannel.ts new file mode 100644 index 000000000000..999dcdbb49de --- /dev/null +++ b/packages/structures/src/channels/ForumChannel.ts @@ -0,0 +1,39 @@ +import type { APIGuildForumChannel, ChannelType } from 'discord-api-types/v10'; +import { Mixin, type MixinTypes } from '../Mixin.js'; +import { kData } from '../utils/symbols.js'; +import { Channel } from './Channel.js'; +import { ChannelParentMixin } from './mixins/ChannelParentMixin.js'; +import { ChannelPermissionMixin } from './mixins/ChannelPermissionMixin.js'; +import { ChannelTopicMixin } from './mixins/ChannelTopicMixin.js'; +import { ThreadOnlyChannelMixin } from './mixins/ThreadOnlyChannelMixin.js'; + +export interface ForumChannel + extends MixinTypes< + Channel, + [ + ChannelParentMixin, + ChannelPermissionMixin, + ChannelTopicMixin, + ThreadOnlyChannelMixin, + ] + > {} + +export class ForumChannel extends Channel< + ChannelType.GuildForum, + Omitted +> { + public constructor(data: APIGuildForumChannel) { + super(data); + this._optimizeData(data); + } + + /** + * The default forum layout view used to display posts in this channel. + * Defaults to 0, which indicates a layout view has not been set by a channel admin. + */ + public get defaultForumLayout() { + return this[kData].default_forum_layout; + } +} + +Mixin(ForumChannel, [ChannelParentMixin, ChannelPermissionMixin, ChannelTopicMixin, ThreadOnlyChannelMixin]); diff --git a/packages/structures/src/channels/ForumTag.ts b/packages/structures/src/channels/ForumTag.ts new file mode 100644 index 000000000000..e587cb5f8936 --- /dev/null +++ b/packages/structures/src/channels/ForumTag.ts @@ -0,0 +1,52 @@ +import type { APIGuildForumTag } from 'discord-api-types/v10'; +import { Structure } from '../Structure.js'; +import { kData } from '../utils/symbols.js'; + +/** + * Represents metadata of a thread channel on Discord. + * + * @typeParam Omitted - Specify the propeties that will not be stored in the raw data field as a union, implement via `DataTemplate` + */ +export class ForumTag extends Structure { + /** + * The id of the tag. + */ + public get id() { + return this[kData].id; + } + + /** + * The name of the tag. + */ + public get name() { + return this[kData].name; + } + + /** + * Whether this tag can only be added to or removed from threads by a member with the {@link discord-api-types/v10!PermissionFlagsBits.ManageThreads} permission. + */ + public get moderated() { + return this[kData].moderated; + } + + /** + * The id of a guild's custom emoji. + */ + public get emojiId() { + return this[kData].emoji_id; + } + + /** + * The unicode character of the emoji. + */ + public get emojiName() { + return this[kData].emoji_name; + } + + /** + * The textual representation of this tag's emoji. Either a unicode character or a guild emoji mention. + */ + public get emoji() { + return this.emojiName ?? `<:_:${this.emojiId}>`; + } +} diff --git a/packages/structures/src/channels/GroupDMChannel.ts b/packages/structures/src/channels/GroupDMChannel.ts new file mode 100644 index 000000000000..053fff0e07bb --- /dev/null +++ b/packages/structures/src/channels/GroupDMChannel.ts @@ -0,0 +1,46 @@ +import type { APIGroupDMChannel, ChannelType } from 'discord-api-types/v10'; +import { Mixin, type MixinTypes } from '../Mixin.js'; +import { kData } from '../utils/symbols.js'; +import { Channel } from './Channel.js'; +import { ChannelOwnerMixin } from './mixins/ChannelOwnerMixin.js'; +import { DMChannelMixin } from './mixins/DMChannelMixin.js'; +import { TextChannelMixin } from './mixins/TextChannelMixin.js'; + +export interface GroupDMChannel + extends MixinTypes< + Channel, + [DMChannelMixin, TextChannelMixin, ChannelOwnerMixin] + > {} + +export class GroupDMChannel extends Channel< + ChannelType.GroupDM, + Omitted +> { + public constructor(data: APIGroupDMChannel) { + super(data); + this._optimizeData(data); + } + + /** + * The icon hash of the group DM. + */ + public get icon() { + return this[kData].icon; + } + + /** + * Whether the channel is managed by an application via the `gdm.join` OAuth2 scope. + */ + public get managed() { + return this[kData].managed; + } + + /** + * The application id of the group DM creator if it is bot-created. + */ + public get applicationId() { + return this[kData].application_id; + } +} + +Mixin(GroupDMChannel, [DMChannelMixin, TextChannelMixin, ChannelOwnerMixin]); diff --git a/packages/structures/src/channels/MediaChannel.ts b/packages/structures/src/channels/MediaChannel.ts new file mode 100644 index 000000000000..aa40a01f1e35 --- /dev/null +++ b/packages/structures/src/channels/MediaChannel.ts @@ -0,0 +1,30 @@ +import type { APIGuildMediaChannel, ChannelType } from 'discord-api-types/v10'; +import { Mixin, type MixinTypes } from '../Mixin.js'; +import { Channel } from './Channel.js'; +import { ChannelParentMixin } from './mixins/ChannelParentMixin.js'; +import { ChannelPermissionMixin } from './mixins/ChannelPermissionMixin.js'; +import { ChannelTopicMixin } from './mixins/ChannelTopicMixin.js'; +import { ThreadOnlyChannelMixin } from './mixins/ThreadOnlyChannelMixin.js'; + +export interface MediaChannel + extends MixinTypes< + Channel, + [ + ChannelParentMixin, + ChannelPermissionMixin, + ChannelTopicMixin, + ThreadOnlyChannelMixin, + ] + > {} + +export class MediaChannel extends Channel< + ChannelType.GuildMedia, + Omitted +> { + public constructor(data: APIGuildMediaChannel) { + super(data); + this._optimizeData(data); + } +} + +Mixin(MediaChannel, [ChannelParentMixin, ChannelPermissionMixin, ChannelTopicMixin, ThreadOnlyChannelMixin]); diff --git a/packages/structures/src/channels/PermissionOverwrite.ts b/packages/structures/src/channels/PermissionOverwrite.ts new file mode 100644 index 000000000000..c66b79f63396 --- /dev/null +++ b/packages/structures/src/channels/PermissionOverwrite.ts @@ -0,0 +1,87 @@ +import type { APIOverwrite } from 'discord-api-types/v10'; +import { Structure } from '../Structure.js'; +import { kAllow, kData, kDeny } from '../utils/symbols.js'; + +/** + * Represents metadata of a thread channel on Discord. + * + * @typeParam Omitted - Specify the propeties that will not be stored in the raw data field as a union, implement via `DataTemplate` + */ +export class PermissionOverwrite extends Structure< + APIOverwrite, + Omitted +> { + protected [kAllow]: bigint | null; + + protected [kDeny]: bigint | null; + + public constructor(data: Partial) { + super(data); + this._optimizeData(data); + this[kAllow] ??= null; + this[kDeny] ??= null; + } + + /** + * The template used for removing data from the raw data stored for each ThreadMetadata + * + * @remarks This template has defaults, if you want to remove additional data and keep the defaults, + * use `Object.defineProperties`. To override the defaults, set this value directly. + */ + public static override DataTemplate: Partial = { + set allow(_: string) {}, + set deny(_: string) {}, + }; + + /** + * {@inheritDoc Structure._optimizeData} + */ + protected override _optimizeData(data: Partial) { + this[kAllow] = data.allow ? BigInt(data.allow) : (this[kAllow] ?? null); + this[kDeny] = data.deny ? BigInt(data.deny) : (this[kDeny] ?? null); + } + + /** + * The permission bit set allowed by this overwrite. + */ + public get allow() { + return this[kAllow]; + } + + /** + * The permission bit set denied by this overwrite. + */ + public get deny() { + return this[kDeny]; + } + + /** + * The role or user id for this overwrite. + */ + public get id() { + return this[kData].id; + } + + /** + * The type of this overwrite. + */ + public get type() { + return this[kData].type; + } + + /** + * {@inheritDoc Structure.toJSON} + */ + public override toJSON() { + const clone = super.toJSON(); + if (this[kAllow]) { + clone.allow = this[kAllow].toString(); + } + + if (this[kDeny]) { + clone.deny = this[kDeny].toString(); + } + + return clone; + } +} diff --git a/packages/structures/src/channels/PrivateThreadChannel.ts b/packages/structures/src/channels/PrivateThreadChannel.ts new file mode 100644 index 000000000000..7c3eb27d83a9 --- /dev/null +++ b/packages/structures/src/channels/PrivateThreadChannel.ts @@ -0,0 +1,42 @@ +import type { ChannelType } from 'discord-api-types/v10'; +import { Mixin, type MixinTypes } from '../Mixin.js'; +import type { APIThreadChannel } from '../utils/types'; +import { Channel } from './Channel.js'; +import { ChannelOwnerMixin } from './mixins/ChannelOwnerMixin.js'; +import { ChannelParentMixin } from './mixins/ChannelParentMixin.js'; +import { ChannelPinMixin } from './mixins/ChannelPinMixin.js'; +import { ChannelSlowmodeMixin } from './mixins/ChannelSlowmodeMixin.js'; +import { TextChannelMixin } from './mixins/TextChannelMixin.js'; +import { ThreadChannelMixin } from './mixins/ThreadChannelMixin.js'; + +export interface PrivateThreadChannel + extends MixinTypes< + Channel, + [ + TextChannelMixin, + ChannelOwnerMixin, + ChannelParentMixin, + ChannelPinMixin, + ChannelSlowmodeMixin, + ThreadChannelMixin, + ] + > {} + +export class PrivateThreadChannel extends Channel< + ChannelType.PrivateThread, + Omitted +> { + public constructor(data: APIThreadChannel) { + super(data); + this._optimizeData(data); + } +} + +Mixin(PrivateThreadChannel, [ + TextChannelMixin, + ChannelOwnerMixin, + ChannelParentMixin, + ChannelPinMixin, + ChannelSlowmodeMixin, + ThreadChannelMixin, +]); diff --git a/packages/structures/src/channels/PublicThreadChannel.ts b/packages/structures/src/channels/PublicThreadChannel.ts new file mode 100644 index 000000000000..82eec92b92c6 --- /dev/null +++ b/packages/structures/src/channels/PublicThreadChannel.ts @@ -0,0 +1,50 @@ +import type { ChannelType } from 'discord-api-types/v10'; +import { Mixin, type MixinTypes } from '../Mixin.js'; +import { kData } from '../utils/symbols.js'; +import type { APIThreadChannel } from '../utils/types'; +import { Channel } from './Channel.js'; +import { ChannelOwnerMixin } from './mixins/ChannelOwnerMixin.js'; +import { ChannelParentMixin } from './mixins/ChannelParentMixin.js'; +import { ChannelPinMixin } from './mixins/ChannelPinMixin.js'; +import { ChannelSlowmodeMixin } from './mixins/ChannelSlowmodeMixin.js'; +import { TextChannelMixin } from './mixins/TextChannelMixin.js'; +import { ThreadChannelMixin } from './mixins/ThreadChannelMixin.js'; + +export interface PublicThreadChannel + extends MixinTypes< + Channel, + [ + TextChannelMixin, + ChannelOwnerMixin, + ChannelParentMixin, + ChannelPinMixin, + ChannelSlowmodeMixin, + ThreadChannelMixin, + ] + > {} + +export class PublicThreadChannel extends Channel< + ChannelType.PublicThread, + Omitted +> { + public constructor(data: APIThreadChannel) { + super(data); + this._optimizeData(data); + } + + /** + * The IDs of the set of tags that have been applied to a thread in a {@link ForumChannel} or a {@link MediaChannel}. + */ + public get appliedTags() { + return Array.isArray(this[kData].applied_tags) ? [...this[kData].applied_tags] : null; + } +} + +Mixin(PublicThreadChannel, [ + TextChannelMixin, + ChannelOwnerMixin, + ChannelParentMixin, + ChannelPinMixin, + ChannelSlowmodeMixin, + ThreadChannelMixin, +]); diff --git a/packages/structures/src/channels/StageChannel.ts b/packages/structures/src/channels/StageChannel.ts new file mode 100644 index 000000000000..9c433a07dd20 --- /dev/null +++ b/packages/structures/src/channels/StageChannel.ts @@ -0,0 +1,38 @@ +import type { APIGuildStageVoiceChannel, ChannelType } from 'discord-api-types/v10'; +import { Mixin, type MixinTypes } from '../Mixin.js'; +import { Channel } from './Channel.js'; +import { ChannelParentMixin } from './mixins/ChannelParentMixin.js'; +import { ChannelPermissionMixin } from './mixins/ChannelPermissionMixin.js'; +import { ChannelSlowmodeMixin } from './mixins/ChannelSlowmodeMixin.js'; +import { ChannelWebhookMixin } from './mixins/ChannelWebhookMixin.js'; +import { VoiceChannelMixin } from './mixins/VoiceChannelMixin.js'; + +export interface StageChannel + extends MixinTypes< + Channel, + [ + ChannelParentMixin, + ChannelPermissionMixin, + ChannelSlowmodeMixin, + ChannelWebhookMixin, + VoiceChannelMixin, + ] + > {} + +export class StageChannel extends Channel< + ChannelType.GuildStageVoice, + Omitted +> { + public constructor(data: APIGuildStageVoiceChannel) { + super(data); + this._optimizeData(data); + } +} + +Mixin(StageChannel, [ + ChannelParentMixin, + ChannelPermissionMixin, + ChannelSlowmodeMixin, + ChannelWebhookMixin, + VoiceChannelMixin, +]); diff --git a/packages/structures/src/channels/TextChannel.ts b/packages/structures/src/channels/TextChannel.ts new file mode 100644 index 000000000000..bde99a0be895 --- /dev/null +++ b/packages/structures/src/channels/TextChannel.ts @@ -0,0 +1,41 @@ +import type { APITextChannel, ChannelType } from 'discord-api-types/v10'; +import { Mixin, type MixinTypes } from '../Mixin.js'; +import { Channel } from './Channel.js'; +import { ChannelParentMixin } from './mixins/ChannelParentMixin.js'; +import { ChannelPermissionMixin } from './mixins/ChannelPermissionMixin.js'; +import { ChannelPinMixin } from './mixins/ChannelPinMixin.js'; +import { ChannelSlowmodeMixin } from './mixins/ChannelSlowmodeMixin.js'; +import { ChannelTopicMixin } from './mixins/ChannelTopicMixin.js'; +import { TextChannelMixin } from './mixins/TextChannelMixin.js'; + +export interface TextChannel + extends MixinTypes< + Channel, + [ + TextChannelMixin, + ChannelParentMixin, + ChannelPermissionMixin, + ChannelPinMixin, + ChannelSlowmodeMixin, + ChannelTopicMixin, + ] + > {} + +export class TextChannel extends Channel< + ChannelType.GuildText, + Omitted +> { + public constructor(data: APITextChannel) { + super(data); + this._optimizeData(data); + } +} + +Mixin(TextChannel, [ + TextChannelMixin, + ChannelParentMixin, + ChannelPermissionMixin, + ChannelPinMixin, + ChannelSlowmodeMixin, + ChannelTopicMixin, +]); diff --git a/packages/structures/src/channels/ThreadMetadata.ts b/packages/structures/src/channels/ThreadMetadata.ts new file mode 100644 index 000000000000..dfe8c1dccf88 --- /dev/null +++ b/packages/structures/src/channels/ThreadMetadata.ts @@ -0,0 +1,121 @@ +import type { APIThreadMetadata } from 'discord-api-types/v10'; +import { Structure } from '../Structure.js'; +import { kArchiveTimestamp, kCreatedTimestamp, kData } from '../utils/symbols.js'; + +/** + * Represents metadata of a thread channel on Discord. + * + * @typeParam Omitted - Specify the propeties that will not be stored in the raw data field as a union, implement via `DataTemplate` + */ +export class ThreadMetadata extends Structure< + APIThreadMetadata, + Omitted +> { + protected [kArchiveTimestamp]: number | null; + + protected [kCreatedTimestamp]: number | null; + + public constructor(data: Partial) { + super(data); + this._optimizeData(data); + this[kArchiveTimestamp] ??= null; + this[kCreatedTimestamp] ??= null; + } + + /** + * The template used for removing data from the raw data stored for each ThreadMetadata + * + * @remarks This template has defaults, if you want to remove additional data and keep the defaults, + * use `Object.defineProperties`. To override the defaults, set this value directly. + */ + public static override DataTemplate: Partial = { + set create_timestamp(_: string) {}, + set archive_timestamp(_: string) {}, + }; + + /** + * {@inheritDoc Structure._optimizeData} + */ + protected override _optimizeData(data: Partial) { + this[kCreatedTimestamp] = data.create_timestamp + ? Date.parse(data.create_timestamp) + : (this[kCreatedTimestamp] ?? null); + this[kArchiveTimestamp] = data.archive_timestamp + ? Date.parse(data.archive_timestamp) + : (this[kArchiveTimestamp] ?? null); + } + + /** + * Whether the thread is archived. + */ + public get archived() { + return this[kData].archived; + } + + /** + * The timestamp when the thread's archive status was last changed, used for calculating recent activity. + */ + public get archivedTimestamp() { + return this[kArchiveTimestamp]; + } + + /** + * The timestamp when the thread was created; only populated for threads created after 2022-01-09. + */ + public get createdTimestamp() { + return this[kCreatedTimestamp]; + } + + /** + * The thread will stop showing in the channel list after auto_archive_duration minutes of inactivity, + */ + public get autoArchiveDuration() { + return this[kData].auto_archive_duration; + } + + /** + * Whether non-moderators can add other non-moderators to a thread; only available on private threads. + */ + public get invitable() { + return this[kData].invitable; + } + + /** + * Whether the thread is locked; when a thread is locked, only users with {@link PermissionFlagsBits.ManageThreads} can unarchive it. + */ + public get locked() { + return this[kData].locked; + } + + /** + * The time the thread was archived at + */ + public get archivedAt() { + const archivedTimestamp = this.archivedTimestamp; + return archivedTimestamp ? new Date(archivedTimestamp) : null; + } + + /** + * The time the thread was created at + */ + public get createdAt() { + const createdTimestamp = this.createdTimestamp; + return createdTimestamp ? new Date(createdTimestamp) : null; + } + + /** + * {@inheritDoc Structure.toJSON} + */ + public override toJSON() { + const data = super.toJSON(); + if (this[kArchiveTimestamp]) { + data.archive_timestamp = new Date(this[kArchiveTimestamp]).toISOString(); + } + + if (this[kCreatedTimestamp]) { + data.create_timestamp = new Date(this[kCreatedTimestamp]).toISOString(); + } + + return data; + } +} diff --git a/packages/structures/src/channels/VoiceChannel.ts b/packages/structures/src/channels/VoiceChannel.ts new file mode 100644 index 000000000000..11b4be6172b5 --- /dev/null +++ b/packages/structures/src/channels/VoiceChannel.ts @@ -0,0 +1,38 @@ +import type { APIGuildVoiceChannel, ChannelType } from 'discord-api-types/v10'; +import { Mixin, type MixinTypes } from '../Mixin.js'; +import { Channel } from './Channel.js'; +import { ChannelParentMixin } from './mixins/ChannelParentMixin.js'; +import { ChannelPermissionMixin } from './mixins/ChannelPermissionMixin.js'; +import { ChannelSlowmodeMixin } from './mixins/ChannelSlowmodeMixin.js'; +import { ChannelWebhookMixin } from './mixins/ChannelWebhookMixin.js'; +import { VoiceChannelMixin } from './mixins/VoiceChannelMixin.js'; + +export interface VoiceChannel + extends MixinTypes< + Channel, + [ + ChannelParentMixin, + ChannelPermissionMixin, + ChannelSlowmodeMixin, + ChannelWebhookMixin, + VoiceChannelMixin, + ] + > {} + +export class VoiceChannel extends Channel< + ChannelType.GuildVoice, + Omitted +> { + public constructor(data: APIGuildVoiceChannel) { + super(data); + this._optimizeData(data); + } +} + +Mixin(VoiceChannel, [ + ChannelParentMixin, + ChannelPermissionMixin, + ChannelSlowmodeMixin, + ChannelWebhookMixin, + VoiceChannelMixin, +]); diff --git a/packages/structures/src/channels/index.ts b/packages/structures/src/channels/index.ts index 01672f14a4c6..d713a828a2a7 100644 --- a/packages/structures/src/channels/index.ts +++ b/packages/structures/src/channels/index.ts @@ -1 +1,18 @@ +export * from './mixins/index.js'; +export * from './ForumTag.js'; +export * from './PermissionOverwrite.js'; +export * from './ThreadMetadata.js'; export * from './Channel.js'; +export * from './AnnouncementChannel.js'; +export * from './AnnouncementThreadChannel.js'; +export * from './CategoryChannel.js'; +// export * from './DirectoryChannel.js'; +export * from './DMChannel.js'; +export * from './ForumChannel.js'; +export * from './GroupDMChannel.js'; +export * from './MediaChannel.js'; +export * from './PrivateThreadChannel.js'; +export * from './PublicThreadChannel.js'; +export * from './StageChannel.js'; +export * from './TextChannel.js'; +export * from './VoiceChannel.js'; diff --git a/packages/structures/src/channels/mixins/ChannelOwnerMixin.ts b/packages/structures/src/channels/mixins/ChannelOwnerMixin.ts new file mode 100644 index 000000000000..ced2dc162a53 --- /dev/null +++ b/packages/structures/src/channels/mixins/ChannelOwnerMixin.ts @@ -0,0 +1,14 @@ +import type { ChannelType, ThreadChannelType } from 'discord-api-types/v10'; +import { kData } from '../../utils/symbols'; +import type { Channel } from '../Channel'; + +export interface ChannelOwnerMixin extends Channel {} + +export class ChannelOwnerMixin { + /** + * The id of the creator of the group DM or thread + */ + public get ownerId() { + return this[kData].owner_id; + } +} diff --git a/packages/structures/src/channels/mixins/ChannelParentMixin.ts b/packages/structures/src/channels/mixins/ChannelParentMixin.ts new file mode 100644 index 000000000000..e11418159dcf --- /dev/null +++ b/packages/structures/src/channels/mixins/ChannelParentMixin.ts @@ -0,0 +1,21 @@ +import type { ChannelType, GuildChannelType } from 'discord-api-types/v10'; +import { kData } from '../../utils/symbols'; +import { GuildChannelMixin } from './GuildChannelMixin'; + +export class ChannelParentMixin< + Type extends Exclude, +> extends GuildChannelMixin { + /** + * The id of the parent category for a channel (each parent category can contain up to 50 channels) or id of the parent channel for a thread + */ + public get parentId() { + return this[kData].parent_id; + } + + /** + * Whether the channel is nsfw + */ + public get nsfw() { + return this[kData].nsfw; + } +} diff --git a/packages/structures/src/channels/mixins/ChannelPermissionMixin.ts b/packages/structures/src/channels/mixins/ChannelPermissionMixin.ts new file mode 100644 index 000000000000..2eaf0026d61f --- /dev/null +++ b/packages/structures/src/channels/mixins/ChannelPermissionMixin.ts @@ -0,0 +1,62 @@ +import type { APIOverwrite, ChannelType, GuildChannelType, ThreadChannelType } from 'discord-api-types/v10'; +import { kData } from '../../utils/symbols'; +import type { Channel, ChannelDataType } from '../Channel'; +import { PermissionOverwrite } from '../PermissionOverwrite'; + +export interface ChannelPermissionMixin< + Type extends Exclude, +> extends Channel { + /** + * The explicit permission overwrites for members and roles + */ + permissionOverwrites: readonly PermissionOverwrite[] | null; +} + +export class ChannelPermissionMixin< + Type extends Exclude, +> { + /** + * The template used for removing data from the raw data stored for each Channel. + */ + public static DataTemplate: Partial< + ChannelDataType> + > = { + set permission_overwrites(_: APIOverwrite[]) {}, + }; + + /** + * {@inheritDoc Structure._optimizeData} + */ + protected _optimizeData(data: Partial>) { + this.permissionOverwrites = data.permission_overwrites + ? data.permission_overwrites.map((overwrite) => new PermissionOverwrite(overwrite)) + : (this.permissionOverwrites ?? null); + } + + /** + * The sorting position of the channel + */ + public get position() { + return this[kData].position; + } + + /** + * Indicates whether this channel can have permission overwrites + */ + public isPermissionCapabale(): this is ChannelPermissionMixin< + Extract> + > { + return true; + } + + /** + * Adds data from optimized properties omitted from [kData]. + * + * @param data the result of {@link Channel.toJSON()} + */ + protected _toJSON(data: Partial>) { + if (this.permissionOverwrites) { + data.permission_overwrites = this.permissionOverwrites?.map((overwrite) => overwrite.toJSON()); + } + } +} diff --git a/packages/structures/src/channels/mixins/ChannelPinMixin.ts b/packages/structures/src/channels/mixins/ChannelPinMixin.ts new file mode 100644 index 000000000000..323af00e6062 --- /dev/null +++ b/packages/structures/src/channels/mixins/ChannelPinMixin.ts @@ -0,0 +1,42 @@ +import type { ChannelType, ThreadChannelType } from 'discord-api-types/v10'; +import type { Channel, ChannelDataType } from '../Channel'; + +export interface ChannelPinMixin< + Type extends ChannelType.DM | ChannelType.GuildAnnouncement | ChannelType.GuildText | ThreadChannelType, +> extends Channel { + /** + * The timestamp of when the last pin in the channel happened + */ + lastPinTimestamp: number | null; +} + +export class ChannelPinMixin< + Type extends ChannelType.DM | ChannelType.GuildAnnouncement | ChannelType.GuildText | ThreadChannelType, +> { + /** + * {@inheritDoc Structure._optimizeData} + */ + protected _optimizeData(data: Partial>) { + this.lastPinTimestamp = data.last_pin_timestamp + ? Date.parse(data.last_pin_timestamp) + : (this.lastPinTimestamp ?? null); + } + + /** + * The Date of when the last pin in the channel happened + */ + public get lastPinAt() { + return this.lastPinTimestamp ? new Date(this.lastPinTimestamp) : null; + } + + /** + * Adds data from optimized properties omitted from [kData]. + * + * @param data the result of {@link Channel.toJSON()} + */ + protected _toJSON(data: Partial>) { + if (this.lastPinTimestamp) { + data.last_pin_timestamp = new Date(this.lastPinTimestamp).toISOString(); + } + } +} diff --git a/packages/structures/src/channels/mixins/ChannelSlowmodeMixin.ts b/packages/structures/src/channels/mixins/ChannelSlowmodeMixin.ts new file mode 100644 index 000000000000..515746b0576c --- /dev/null +++ b/packages/structures/src/channels/mixins/ChannelSlowmodeMixin.ts @@ -0,0 +1,12 @@ +import type { GuildTextChannelType } from 'discord-api-types/v10'; +import { kData } from '../../utils/symbols'; +import { TextChannelMixin } from './TextChannelMixin'; + +export class ChannelSlowmodeMixin extends TextChannelMixin { + /** + * The rate limit per user (slowmode) of this channel. + */ + public get rateLimitPerUser() { + return this[kData].rate_limit_per_user; + } +} diff --git a/packages/structures/src/channels/mixins/ChannelTopicMixin.ts b/packages/structures/src/channels/mixins/ChannelTopicMixin.ts new file mode 100644 index 000000000000..290cb5b67da9 --- /dev/null +++ b/packages/structures/src/channels/mixins/ChannelTopicMixin.ts @@ -0,0 +1,33 @@ +import type { ChannelType } from 'discord-api-types/v10'; +import { kData } from '../../utils/symbols'; +import type { Channel } from '../Channel'; +import { ChannelWebhookMixin } from './ChannelWebhookMixin'; + +export interface ChannelTopicMixin< + Type extends ChannelType.GuildAnnouncement | ChannelType.GuildForum | ChannelType.GuildMedia | ChannelType.GuildText, +> extends Channel {} + +export class ChannelTopicMixin< + Type extends ChannelType.GuildAnnouncement | ChannelType.GuildForum | ChannelType.GuildMedia | ChannelType.GuildText, +> extends ChannelWebhookMixin { + /** + * The topic of this channel. + */ + public get topic() { + return this[kData].topic; + } + + /** + * The duration after which new threads get archived by default on this channel. + */ + public get defaultAutoArchiveDuration() { + return this[kData].default_auto_archive_duration; + } + + /** + * The default value for rate limit per user (slowmode) on new threads in this channel. + */ + public get defaultThreadRateLimitPerUser() { + return this[kData].default_thread_rate_limit_per_user; + } +} diff --git a/packages/structures/src/channels/mixins/ChannelWebhookMixin.ts b/packages/structures/src/channels/mixins/ChannelWebhookMixin.ts new file mode 100644 index 000000000000..503951a92d05 --- /dev/null +++ b/packages/structures/src/channels/mixins/ChannelWebhookMixin.ts @@ -0,0 +1,19 @@ +import type { ChannelType, GuildTextChannelType, ThreadChannelType } from 'discord-api-types/v10'; +import type { Channel } from '../Channel'; + +export interface ChannelWebhookMixin< + Type extends ChannelType.GuildForum | ChannelType.GuildMedia | Exclude, +> extends Channel {} + +export class ChannelWebhookMixin< + Type extends ChannelType.GuildForum | ChannelType.GuildMedia | Exclude, +> { + /** + * Indicates whether this channel can have webhooks + */ + public isWebhookCapable(): this is ChannelWebhookMixin< + Extract> + > { + return true; + } +} diff --git a/packages/structures/src/channels/mixins/DMChannelMixin.ts b/packages/structures/src/channels/mixins/DMChannelMixin.ts new file mode 100644 index 000000000000..a1d83aca9514 --- /dev/null +++ b/packages/structures/src/channels/mixins/DMChannelMixin.ts @@ -0,0 +1,53 @@ +import type { APIUser, ChannelType } from 'discord-api-types/v10'; +import { User } from '../../users'; +import type { Channel, ChannelDataType } from '../Channel'; + +export interface DMChannelMixin extends Channel { + /** + * The recipients of this DM based channel. + */ + recipients: readonly User[] | null; +} + +export class DMChannelMixin { + /** + * The template used for removing data from the raw data stored for each Channel. + */ + public static DataTemplate: Partial> = { + set recipients(_: APIUser[]) {}, + }; + + /** + * {@inheritDoc Structure._optimizeData} + */ + protected _optimizeData(data: Partial>) { + this.recipients = data.recipients + ? data.recipients.map((recipient) => new User(recipient)) + : (this.recipients ?? null); + } + + /** + * The URL to this channel. + */ + public get url() { + return `https://discord.com/channels/@me/${this.id}`; + } + + /** + * Indiciates whether this channel is a DM or DM Group + */ + public isDMBased(): this is DMChannelMixin> { + return true; + } + + /** + * Adds data from optimized properties omitted from [kData]. + * + * @param data the result of {@link Channel.toJSON()} + */ + protected _toJSON(data: Partial>) { + if (this.recipients) { + data.recipients = this.recipients.map((recipient) => recipient.toJSON()); + } + } +} diff --git a/packages/structures/src/channels/mixins/GuildChannelMixin.ts b/packages/structures/src/channels/mixins/GuildChannelMixin.ts new file mode 100644 index 000000000000..3d0893cb7bab --- /dev/null +++ b/packages/structures/src/channels/mixins/GuildChannelMixin.ts @@ -0,0 +1,38 @@ +import type { GuildChannelType } from 'discord-api-types/v10'; +import { kData } from '../../utils/symbols'; +import type { Channel } from '../Channel'; + +export interface GuildChannelMixin extends Channel {} + +export class GuildChannelMixin { + /** + * The flags that are applied to the channel. + * + * @privateRemarks The type of `flags` can be narrowed in Guild Channels and DMChannel to ChannelFlags, and in GroupDM channel + * to null, respecting Omit behaviors + */ + public get flags() { + return this[kData].flags!; + } + + /** + * THe id of the guild this channel is in. + */ + public get guildId() { + return this[kData].guild_id!; + } + + /** + * The URL to this channel. + */ + public get url() { + return `https://discord.com/channels/${this.guildId}/${this.id}`; + } + + /** + * Indiciates whether this channel is in a guild + */ + public isGuildBased(): this is GuildChannelMixin> { + return true; + } +} diff --git a/packages/structures/src/channels/mixins/TextChannelMixin.ts b/packages/structures/src/channels/mixins/TextChannelMixin.ts new file mode 100644 index 000000000000..1f85f505b631 --- /dev/null +++ b/packages/structures/src/channels/mixins/TextChannelMixin.ts @@ -0,0 +1,21 @@ +import type { TextChannelType } from 'discord-api-types/v10'; +import { kData } from '../../utils/symbols'; +import type { Channel } from '../Channel'; + +export interface TextChannelMixin extends Channel {} + +export class TextChannelMixin { + /** + * The id of the last message sent in this channel. + */ + public get lastMessageId() { + return this[kData].last_message_id; + } + + /** + * Indicates whether this channel can contain messages + */ + public isTextBased(): this is TextChannelMixin> { + return true; + } +} diff --git a/packages/structures/src/channels/mixins/ThreadChannelMixin.ts b/packages/structures/src/channels/mixins/ThreadChannelMixin.ts new file mode 100644 index 000000000000..c2959423534b --- /dev/null +++ b/packages/structures/src/channels/mixins/ThreadChannelMixin.ts @@ -0,0 +1,76 @@ +import type { APIThreadMetadata, ThreadChannelType } from 'discord-api-types/v10'; +import { kData } from '../../utils/symbols'; +import type { APIThreadChannel } from '../../utils/types'; +import type { Channel, ChannelDataType } from '../Channel'; +import { ThreadMetadata } from '../ThreadMetadata'; + +export interface ThreadChannelMixin< + Type extends ThreadChannelType = ThreadChannelType, + Omitted extends keyof APIThreadChannel | '' = '', +> extends Channel { + /** + * The metadata of this thread channel. + */ + threadMetadata: ThreadMetadata | null; +} + +export class ThreadChannelMixin< + Type extends ThreadChannelType = ThreadChannelType, + Omitted extends keyof APIThreadChannel | '' = '', +> { + /** + * The template used for removing data from the raw data stored for each Channel. + */ + public static DataTemplate: Partial> = { + set thread_metadata(_: APIThreadMetadata) {}, + }; + + /** + * {@inheritDoc Structure._optimizeData} + */ + protected _optimizeData(data: Partial) { + this.threadMetadata = data.thread_metadata + ? new ThreadMetadata(data.thread_metadata) + : (this.threadMetadata ?? null); + } + + /** + * The approximate count of users in a thread, stops counting at 50 + */ + public get memberCount() { + return this[kData].member_count; + } + + /** + * The number of messages (not including the initial message or deleted messages) in a thread. + */ + public get messageCount() { + return this[kData].message_count; + } + + /** + * The number of messages ever sent in a thread, it's similar to message_count on message creation, + * but will not decrement the number when a message is deleted. + */ + public get totalMessageSent() { + return this[kData].total_message_sent; + } + + /** + * Indicates whether this channel is a thread channel + */ + public isThread(): this is ThreadChannelMixin> { + return true; + } + + /** + * Adds data from optimized properties omitted from [kData]. + * + * @param data the result of {@link Channel.toJSON()} + */ + public _toJSON(data: Partial) { + if (this.threadMetadata) { + data.thread_metadata = this.threadMetadata.toJSON(); + } + } +} diff --git a/packages/structures/src/channels/mixins/ThreadOnlyChannelMixin.ts b/packages/structures/src/channels/mixins/ThreadOnlyChannelMixin.ts new file mode 100644 index 000000000000..bdbf0bfd51c2 --- /dev/null +++ b/packages/structures/src/channels/mixins/ThreadOnlyChannelMixin.ts @@ -0,0 +1,65 @@ +import type { APIGuildForumTag, ChannelType } from 'discord-api-types/v10'; +import { kData } from '../../utils/symbols'; +import type { Channel, ChannelDataType } from '../Channel'; +import { ForumTag } from '../ForumTag'; + +export interface ThreadOnlyChannelMixin + extends Channel { + /** + * The set of tags that can be used in this channel. + */ + availableTags: readonly ForumTag[]; +} + +export class ThreadOnlyChannelMixin { + /** + * The template used for removing data from the raw data stored for each Channel. + */ + public static DataTemplate: Partial> = { + set available_tags(_: APIGuildForumTag[]) {}, + }; + + /** + * {@inheritDoc Structure._optimizeData} + */ + protected _optimizeData(data: Partial>) { + this.availableTags = data.available_tags + ? data.available_tags.map((overwrite) => new ForumTag(overwrite)) + : (this.availableTags ?? null); + } + + /** + * The emoji to show in the add reaction button on a thread in this channel. + */ + public get defaultReactionEmoji() { + return this[kData].default_reaction_emoji; + } + + /** + * The default sort order type used to order posts in this channel. + * Defaults to null, which indicates a preferred sort order hasn't been set by a channel admin. + */ + public get defaultSortOrder() { + return this[kData].default_sort_order!; + } + + /** + * Indicates whether this channel only allows thread creation + */ + public isThreadOnly(): this is ThreadOnlyChannelMixin< + Extract + > { + return true; + } + + /** + * Adds data from optimized properties omitted from [kData]. + * + * @param data the result of {@link Channel.toJSON()} + */ + protected _toJSON(data: Partial>) { + if (this.availableTags) { + data.available_tags = this.availableTags?.map((tag) => tag.toJSON()); + } + } +} diff --git a/packages/structures/src/channels/mixins/VoiceChannelMixin.ts b/packages/structures/src/channels/mixins/VoiceChannelMixin.ts new file mode 100644 index 000000000000..2e4bd4c20101 --- /dev/null +++ b/packages/structures/src/channels/mixins/VoiceChannelMixin.ts @@ -0,0 +1,48 @@ +import type { ChannelType } from 'discord-api-types/v10'; +import { kData } from '../../utils/symbols'; +import type { Channel } from '../Channel'; +import { TextChannelMixin } from './TextChannelMixin'; + +export interface VoiceChannelMixin + extends Channel {} + +export class VoiceChannelMixin< + Type extends ChannelType.GuildStageVoice | ChannelType.GuildVoice, +> extends TextChannelMixin { + /** + * The bitrate (in bits) of the voice channel. + */ + public get bitrate() { + return this[kData].bitrate!; + } + + /** + * The voice region id for this channel, automatic when set to null. + */ + public get rtcRegion() { + return this[kData].rtc_region!; + } + + /** + * The camera video quality mode of the voice channel, 1 when not present. + */ + public get videoQualityMode() { + return this[kData].video_quality_mode!; + } + + /** + * The user limit of the voice channel. + */ + public get userLimit() { + return this[kData].user_limit!; + } + + /** + * Indicates whether this channel has voice connection capabilities + */ + public override isVoiceBased(): this is VoiceChannelMixin< + Extract + > { + return true; + } +} diff --git a/packages/structures/src/channels/mixins/index.ts b/packages/structures/src/channels/mixins/index.ts new file mode 100644 index 000000000000..ce597e0fa1a5 --- /dev/null +++ b/packages/structures/src/channels/mixins/index.ts @@ -0,0 +1,13 @@ +export * from './ChannelOwnerMixin'; +export * from './ChannelParentMixin'; +export * from './ChannelPermissionMixin'; +export * from './ChannelPinMixin'; +export * from './ChannelSlowmodeMixin'; +export * from './ChannelTopicMixin'; +export * from './ChannelWebhookMixin'; +export * from './DMChannelMixin'; +export * from './GuildChannelMixin'; +export * from './TextChannelMixin'; +export * from './ThreadChannelMixin'; +export * from './ThreadOnlyChannelMixin'; +export * from './VoiceChannelMixin'; diff --git a/packages/structures/src/invites/Invite.ts b/packages/structures/src/invites/Invite.ts index 947238c1fb59..076b4d2609e2 100644 --- a/packages/structures/src/invites/Invite.ts +++ b/packages/structures/src/invites/Invite.ts @@ -53,6 +53,7 @@ export class Invite< data: Omit, ) { super(data); + this._optimizeData(data); this[kExpiresTimestamp] ??= null; this[kCreatedTimestamp] ??= null; } diff --git a/packages/structures/src/users/index.ts b/packages/structures/src/users/index.ts index 0a224ef365ec..482cd771e350 100644 --- a/packages/structures/src/users/index.ts +++ b/packages/structures/src/users/index.ts @@ -1 +1,2 @@ export * from './User.js'; +export * from './Connection.js'; diff --git a/packages/structures/src/utils/symbols.ts b/packages/structures/src/utils/symbols.ts index 60d790fe8f47..f42815227b08 100644 --- a/packages/structures/src/utils/symbols.ts +++ b/packages/structures/src/utils/symbols.ts @@ -1,5 +1,11 @@ export const kData = Symbol.for('djs.structures.data'); export const kExpiresTimestamp = Symbol.for('djs.structures.expiresTimestamp'); export const kCreatedTimestamp = Symbol.for('djs.structures.createdTimestamp'); +export const kArchiveTimestamp = Symbol.for('djs.structures.archiveTimestamp'); +export const kThreadMetadata = Symbol.for('djs.structures.threadMetadata'); +export const kAllow = Symbol.for('djs.structures.allow'); +export const kDeny = Symbol.for('djs.structures.deny'); +export const kPermissionOverwrite = Symbol.for('djs.structures.permissionOverwrite'); +export const kLastPinTimestamp = Symbol.for('djs.structures.lastPinTimestamp'); export const kMixinConstruct = Symbol.for('djs.structures.mixin.construct'); diff --git a/packages/structures/src/utils/types.ts b/packages/structures/src/utils/types.ts index 7b5c8bd86fa0..4ebfa9ba5e41 100644 --- a/packages/structures/src/utils/types.ts +++ b/packages/structures/src/utils/types.ts @@ -1,3 +1,5 @@ +import type { APIThreadChannel as _APIThreadChannel } from 'discord-api-types/v10'; + export type ReplaceOmittedWithUnknown = { [Key in keyof Data]: Key extends Omitted ? unknown : Data[Key]; }; @@ -19,3 +21,6 @@ export type MergePrototypes = ClassArray : ClassArray extends [infer Class1, ...infer Rest] ? MergePrototype> : never; + +// TODO: remove helper type once dtypes PR for thread channel types releases +export type APIThreadChannel = Omit<_APIThreadChannel, 'position'>; diff --git a/packages/structures/tsconfig.test.json b/packages/structures/tsconfig.test.json new file mode 100644 index 000000000000..11e8d6d40c87 --- /dev/null +++ b/packages/structures/tsconfig.test.json @@ -0,0 +1,10 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig.json", + "extends": "./tsconfig.json", + "compilerOptions": { + "noEmit": true, + "skipLibCheck": true + }, + "include": ["__tests__/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/packages/ws/package.json b/packages/ws/package.json index 384ffbd6858b..d335e0c80245 100644 --- a/packages/ws/package.json +++ b/packages/ws/package.json @@ -102,7 +102,7 @@ "typescript": "~5.5.4", "undici": "6.21.0", "vitest": "^2.1.8", - "zlib-sync": "^0.1.9" + "zlib-sync": "^0.1.10" }, "engines": { "node": ">=20" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5712fffac00c..b4c4c75eeb0d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,7 +23,7 @@ importers: devDependencies: '@commitlint/cli': specifier: ^19.6.1 - version: 19.6.1(@types/node@22.10.2)(typescript@5.5.4) + version: 19.6.1(@types/node@22.15.2)(typescript@5.5.4) '@commitlint/config-angular': specifier: ^19.6.0 version: 19.6.0 @@ -41,7 +41,7 @@ importers: version: 0.65.3(eslint@8.57.1)(typescript@5.5.4) '@vitest/coverage-v8': specifier: ^2.1.8 - version: 2.1.8(vitest@2.1.8(@edge-runtime/vm@3.2.0)(@types/node@22.10.2)(happy-dom@14.12.3)(terser@5.37.0)) + version: 2.1.8(vitest@2.1.8(@edge-runtime/vm@3.2.0)(@types/node@22.15.2)(happy-dom@14.12.3)(terser@5.37.0)) conventional-changelog-cli: specifier: ^4.1.0 version: 4.1.0 @@ -50,7 +50,7 @@ importers: version: 8.57.1 eslint-config-neon: specifier: ^0.1.62 - version: 0.1.62(eslint@8.57.1)(typescript@5.5.4) + version: 0.1.62(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) husky: specifier: ^9.1.7 version: 9.1.7 @@ -68,7 +68,7 @@ importers: version: 3.4.2 tsup: specifier: ^8.3.5 - version: 8.3.5(@microsoft/api-extractor@7.43.0(@types/node@22.10.2))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.5.4)(yaml@2.7.0) + version: 8.3.5(@microsoft/api-extractor@7.43.0(@types/node@22.15.2))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.5.4)(yaml@2.7.0) turbo: specifier: ^2.3.3 version: 2.3.3 @@ -80,13 +80,13 @@ importers: version: 8.19.0(eslint@8.57.1)(typescript@5.5.4) unocss: specifier: ^0.65.3 - version: 0.65.3(rollup@4.29.1)(vite@5.4.11(@types/node@22.10.2)(terser@5.37.0)) + version: 0.65.3(rollup@4.40.2)(vite@5.4.11(@types/node@22.15.2)(terser@5.37.0)) vercel: specifier: ^39.2.2 version: 39.2.2(encoding@0.1.13) vitest: specifier: ^2.1.8 - version: 2.1.8(@edge-runtime/vm@3.2.0)(@types/node@22.10.2)(happy-dom@14.12.3)(terser@5.37.0) + version: 2.1.8(@edge-runtime/vm@3.2.0)(@types/node@22.15.2)(happy-dom@14.12.3)(terser@5.37.0) apps/guide: dependencies: @@ -189,7 +189,7 @@ importers: version: 8.57.1 eslint-config-neon: specifier: ^0.1.62 - version: 0.1.62(eslint@8.57.1)(typescript@5.5.4) + version: 0.1.62(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) eslint-formatter-pretty: specifier: ^6.0.1 version: 6.0.1 @@ -219,7 +219,7 @@ importers: version: 5.5.4 unocss: specifier: ^0.60.4 - version: 0.60.4(postcss@8.4.49)(rollup@4.29.1)(vite@5.4.11(@types/node@18.19.68)(terser@5.37.0)) + version: 0.60.4(postcss@8.4.49)(rollup@4.40.2)(vite@5.4.11(@types/node@18.19.68)(terser@5.37.0)) vercel: specifier: ^37.14.0 version: 37.14.0(encoding@0.1.13) @@ -267,7 +267,7 @@ importers: version: 15.0.0-rc.0(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@0.0.0-experimental-592953e-20240517)(react-dom@19.0.0-rc-f994737d14-20240522(react@19.0.0-rc-f994737d14-20240522))(react@19.0.0-rc-f994737d14-20240522) next-mdx-remote-client: specifier: ^1.0.3 - version: 1.0.3(@types/react@18.3.18)(acorn@8.14.0)(react-dom@19.0.0-rc-f994737d14-20240522(react@19.0.0-rc-f994737d14-20240522))(react@19.0.0-rc-f994737d14-20240522) + version: 1.0.3(@types/react@18.3.18)(acorn@8.14.1)(react-dom@19.0.0-rc-f994737d14-20240522(react@19.0.0-rc-f994737d14-20240522))(react@19.0.0-rc-f994737d14-20240522) next-themes: specifier: ^0.3.0 version: 0.3.0(react-dom@19.0.0-rc-f994737d14-20240522(react@19.0.0-rc-f994737d14-20240522))(react@19.0.0-rc-f994737d14-20240522) @@ -340,7 +340,7 @@ importers: version: 8.57.1 eslint-config-neon: specifier: ^0.1.62 - version: 0.1.62(eslint@8.57.1)(typescript@5.5.4) + version: 0.1.62(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) eslint-formatter-pretty: specifier: ^6.0.1 version: 6.0.1 @@ -428,7 +428,7 @@ importers: version: 8.57.1 eslint-config-neon: specifier: ^0.1.62 - version: 0.1.62(eslint@8.57.1)(typescript@5.5.4) + version: 0.1.62(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) eslint-formatter-pretty: specifier: ^6.0.1 version: 6.0.1 @@ -513,7 +513,7 @@ importers: version: 8.57.1 eslint-config-neon: specifier: ^0.1.62 - version: 0.1.62(eslint@8.57.1)(typescript@5.5.4) + version: 0.1.62(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) eslint-formatter-pretty: specifier: ^6.0.1 version: 6.0.1 @@ -556,7 +556,7 @@ importers: version: 8.57.1 eslint-config-neon: specifier: ^0.1.62 - version: 0.1.62(eslint@8.57.1)(typescript@5.5.4) + version: 0.1.62(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) eslint-formatter-pretty: specifier: ^6.0.1 version: 6.0.1 @@ -596,7 +596,7 @@ importers: version: 8.57.1 eslint-config-neon: specifier: ^0.1.62 - version: 0.1.62(eslint@8.57.1)(typescript@5.5.4) + version: 0.1.62(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) eslint-formatter-pretty: specifier: ^6.0.1 version: 6.0.1 @@ -651,7 +651,7 @@ importers: version: 8.57.1 eslint-config-neon: specifier: ^0.1.62 - version: 0.1.62(eslint@8.57.1)(typescript@5.5.4) + version: 0.1.62(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) eslint-formatter-pretty: specifier: ^6.0.1 version: 6.0.1 @@ -718,7 +718,7 @@ importers: version: 8.57.1 eslint-config-neon: specifier: ^0.1.62 - version: 0.1.62(eslint@8.57.1)(typescript@5.5.4) + version: 0.1.62(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) eslint-formatter-pretty: specifier: ^6.0.1 version: 6.0.1 @@ -766,7 +766,7 @@ importers: version: 8.57.1 eslint-config-neon: specifier: ^0.1.62 - version: 0.1.62(eslint@8.57.1)(typescript@5.5.4) + version: 0.1.62(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) eslint-formatter-pretty: specifier: ^6.0.1 version: 6.0.1 @@ -833,7 +833,7 @@ importers: version: 8.57.1 eslint-config-neon: specifier: ^0.1.62 - version: 0.1.62(eslint@8.57.1)(typescript@5.5.4) + version: 0.1.62(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) eslint-formatter-pretty: specifier: ^6.0.1 version: 6.0.1 @@ -897,7 +897,7 @@ importers: version: 8.57.1 eslint-config-neon: specifier: ^0.1.62 - version: 0.1.62(eslint@8.57.1)(typescript@5.5.4) + version: 0.1.62(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) eslint-formatter-pretty: specifier: ^6.0.1 version: 6.0.1 @@ -1040,7 +1040,7 @@ importers: version: 8.57.1 eslint-config-neon: specifier: ^0.1.62 - version: 0.1.62(eslint@8.57.1)(typescript@5.5.4) + version: 0.1.62(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) eslint-formatter-pretty: specifier: ^6.0.1 version: 6.0.1 @@ -1089,7 +1089,7 @@ importers: version: 8.57.1 eslint-config-neon: specifier: ^0.1.62 - version: 0.1.62(eslint@8.57.1)(typescript@5.5.4) + version: 0.1.62(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) eslint-formatter-pretty: specifier: ^6.0.1 version: 6.0.1 @@ -1162,7 +1162,7 @@ importers: version: 8.57.1 eslint-config-neon: specifier: ^0.1.62 - version: 0.1.62(eslint@8.57.1)(typescript@5.5.4) + version: 0.1.62(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) eslint-formatter-pretty: specifier: ^6.0.1 version: 6.0.1 @@ -1226,7 +1226,7 @@ importers: version: 8.57.1 eslint-config-neon: specifier: ^0.1.62 - version: 0.1.62(eslint@8.57.1)(typescript@5.5.4) + version: 0.1.62(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) eslint-formatter-pretty: specifier: ^6.0.1 version: 6.0.1 @@ -1272,7 +1272,7 @@ importers: version: 8.57.1 eslint-config-neon: specifier: ^0.1.62 - version: 0.1.62(eslint@8.57.1)(typescript@5.5.4) + version: 0.1.62(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) eslint-formatter-pretty: specifier: ^6.0.1 version: 6.0.1 @@ -1348,7 +1348,7 @@ importers: version: 8.57.1 eslint-config-neon: specifier: ^0.1.62 - version: 0.1.62(eslint@8.57.1)(typescript@5.5.4) + version: 0.1.62(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) eslint-formatter-pretty: specifier: ^6.0.1 version: 6.0.1 @@ -1424,16 +1424,16 @@ importers: version: 8.57.1 eslint-config-neon: specifier: ^0.1.62 - version: 0.1.62(eslint@8.57.1)(typescript@5.5.4) + version: 0.1.62(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) eslint-formatter-pretty: specifier: ^6.0.1 version: 6.0.1 prettier: specifier: ^3.4.2 - version: 3.4.2 + version: 3.5.3 tsup: specifier: ^8.3.5 - version: 8.3.5(@microsoft/api-extractor@7.43.0(@types/node@20.17.10))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.5.4)(yaml@2.7.0) + version: 8.5.0(@microsoft/api-extractor@7.43.0(@types/node@20.17.10))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.5.4)(yaml@2.7.0) turbo: specifier: ^2.3.3 version: 2.3.3 @@ -1450,8 +1450,8 @@ importers: specifier: ^3.5.5 version: 3.5.5 discord-api-types: - specifier: ^0.37.114 - version: 0.37.114 + specifier: ^0.38.1 + version: 0.38.8 devDependencies: '@discordjs/api-extractor': specifier: workspace:^ @@ -1463,11 +1463,11 @@ importers: specifier: ^4.1.0 version: 4.1.0 '@types/node': - specifier: 20.17.10 - version: 20.17.10 + specifier: 22.15.2 + version: 22.15.2 '@vitest/coverage-v8': - specifier: ^2.1.8 - version: 2.1.8(vitest@2.1.8(@edge-runtime/vm@3.2.0)(@types/node@20.17.10)(happy-dom@14.12.3)(terser@5.37.0)) + specifier: ^3.1.1 + version: 3.1.3(vitest@3.1.3(@edge-runtime/vm@3.2.0)(@types/debug@4.1.12)(@types/node@22.15.2)(happy-dom@14.12.3)(terser@5.37.0)) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -1475,29 +1475,32 @@ importers: specifier: ^1.2.1 version: 1.2.1 eslint: - specifier: ^8.57.1 - version: 8.57.1 + specifier: ^9.25.1 + version: 9.27.0(jiti@2.4.2) eslint-config-neon: - specifier: ^0.1.62 - version: 0.1.62(eslint@8.57.1)(typescript@5.5.4) + specifier: ^0.2.7 + version: 0.2.7(@typescript-eslint/types@8.32.1)(@typescript-eslint/utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint-formatter-compact: + specifier: ^8.40.0 + version: 8.40.0 eslint-formatter-pretty: specifier: ^6.0.1 version: 6.0.1 prettier: - specifier: ^3.4.2 - version: 3.4.2 + specifier: ^3.5.3 + version: 3.5.3 tsd: specifier: ^0.31.2 version: 0.31.2 tsup: - specifier: ^8.3.5 - version: 8.3.5(@microsoft/api-extractor@7.43.0(@types/node@20.17.10))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.5.4)(yaml@2.7.0) + specifier: ^8.4.0 + version: 8.5.0(@microsoft/api-extractor@7.43.0(@types/node@22.15.2))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.8.3)(yaml@2.7.0) typescript: - specifier: ~5.5.4 - version: 5.5.4 + specifier: ~5.8.3 + version: 5.8.3 vitest: - specifier: ^2.1.8 - version: 2.1.8(@edge-runtime/vm@3.2.0)(@types/node@20.17.10)(happy-dom@14.12.3)(terser@5.37.0) + specifier: ^3.1.1 + version: 3.1.3(@edge-runtime/vm@3.2.0)(@types/debug@4.1.12)(@types/node@22.15.2)(happy-dom@14.12.3)(terser@5.37.0) packages/ui: dependencies: @@ -1537,7 +1540,7 @@ importers: version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(typescript@5.5.4) '@storybook/react-vite': specifier: ^8.4.7 - version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.29.1)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(typescript@5.5.4)(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0)) + version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.40.2)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(typescript@5.5.4)(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0)) '@storybook/testing-library': specifier: ^0.2.2 version: 0.2.2 @@ -1573,7 +1576,7 @@ importers: version: 8.57.1 eslint-config-neon: specifier: ^0.1.62 - version: 0.1.62(eslint@8.57.1)(typescript@5.5.4) + version: 0.1.62(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) eslint-formatter-pretty: specifier: ^6.0.1 version: 6.0.1 @@ -1594,13 +1597,13 @@ importers: version: 5.5.4 unocss: specifier: ^0.60.4 - version: 0.60.4(postcss@8.4.49)(rollup@4.29.1)(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0)) + version: 0.60.4(postcss@8.4.49)(rollup@4.40.2)(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0)) vite: specifier: ^5.4.11 version: 5.4.11(@types/node@20.17.10)(terser@5.37.0) vite-plugin-dts: specifier: ^3.9.1 - version: 3.9.1(@types/node@20.17.10)(rollup@4.29.1)(typescript@5.5.4)(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0)) + version: 3.9.1(@types/node@20.17.10)(rollup@4.40.2)(typescript@5.5.4)(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0)) vitest: specifier: ^2.1.8 version: 2.1.8(@edge-runtime/vm@3.2.0)(@types/node@20.17.10)(happy-dom@14.12.3)(terser@5.37.0) @@ -1633,7 +1636,7 @@ importers: version: 8.57.1 eslint-config-neon: specifier: ^0.1.62 - version: 0.1.62(eslint@8.57.1)(typescript@5.5.4) + version: 0.1.62(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) eslint-formatter-pretty: specifier: ^6.0.1 version: 6.0.1 @@ -1706,7 +1709,7 @@ importers: version: 8.57.1 eslint-config-neon: specifier: ^0.1.62 - version: 0.1.62(eslint@8.57.1)(typescript@5.5.4) + version: 0.1.62(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) eslint-formatter-pretty: specifier: ^6.0.1 version: 6.0.1 @@ -1785,7 +1788,7 @@ importers: version: 8.57.1 eslint-config-neon: specifier: ^0.1.62 - version: 0.1.62(eslint@8.57.1)(typescript@5.5.4) + version: 0.1.62(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) eslint-formatter-pretty: specifier: ^6.0.1 version: 6.0.1 @@ -1814,8 +1817,8 @@ importers: specifier: ^2.1.8 version: 2.1.8(@edge-runtime/vm@3.2.0)(@types/node@20.17.10)(happy-dom@14.12.3)(terser@5.37.0) zlib-sync: - specifier: ^0.1.9 - version: 0.1.9 + specifier: ^0.1.10 + version: 0.1.10 packages: @@ -1848,30 +1851,61 @@ packages: '@angular-eslint/bundled-angular-compiler@17.5.3': resolution: {integrity: sha512-x9jZ6mME9wxumErPGonWERXX/9TJ7mzEkQhOKt3BxBFm0sy9XQqLMAenp1PBSg3RF3rH7EEVdB2+jb75RtHp0g==} + '@angular-eslint/bundled-angular-compiler@19.4.0': + resolution: {integrity: sha512-Djq+je34czagDxvkBbbe1dLlhUGYK2MbHjEgPTQ00tVkacLQGAW4UmT1A0JGZzfzl/lDVvli64/lYQsJTSSM6A==} + '@angular-eslint/eslint-plugin-template@17.5.3': resolution: {integrity: sha512-RkRFagxqBPV2xdNyeQQROUm6I1Izto1Z3Wy73lCk2zq1RhVgbznniH/epmOIE8PMkHmMKmZ765FV++J/90p4Ig==} peerDependencies: eslint: ^7.20.0 || ^8.0.0 typescript: '*' + '@angular-eslint/eslint-plugin-template@19.4.0': + resolution: {integrity: sha512-6WAGnHf5SKi7k8/AOOLwGCoN3iQUE8caKsg0OucL4CWPUyzsYpQjx7ALKyxx9lqoAngn3CTlQ2tcwDv6aYtfmg==} + peerDependencies: + '@typescript-eslint/types': ^7.11.0 || ^8.0.0 + '@typescript-eslint/utils': ^7.11.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + '@angular-eslint/eslint-plugin@17.5.3': resolution: {integrity: sha512-2gMRZ+SkiygrPDtCJwMfjmwIFOcvxxC4NRX/MqRo6udsa0gtqPrc8acRbwrmAXlullmhzmaeUfkHpGDSzW8pFw==} peerDependencies: eslint: ^7.20.0 || ^8.0.0 typescript: '*' + '@angular-eslint/eslint-plugin@19.4.0': + resolution: {integrity: sha512-jXhyYYIdo5ItCFfmw7W5EqDRQx8rYtiYbpezI84CemKPHB/VPiP/zqLIvdTVBdJdXlqS31ueXn2YlWU0w6AAgg==} + peerDependencies: + '@typescript-eslint/utils': ^7.11.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + '@angular-eslint/template-parser@17.5.3': resolution: {integrity: sha512-NYybOsMkJUtFOW2JWALicipq0kK5+jGwA1MYyRoXjdbDlXltHUb9qkXj7p0fE6uRutBGXDl4288s8g/fZCnAIA==} peerDependencies: eslint: ^7.20.0 || ^8.0.0 typescript: '*' + '@angular-eslint/template-parser@19.4.0': + resolution: {integrity: sha512-f4t7Z6zo8owOTUqAtZ3G/cMA5hfT3RE2OKR0dLn7YI6LxUJkrlcHq75n60UHiapl5sais6heo70hvjQgJ3fDxQ==} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + '@angular-eslint/utils@17.5.3': resolution: {integrity: sha512-0nNm1FUOLhVHrdK2PP5dZCYYVmTIkEJ4CmlwpuC4JtCLbD5XAHQpY/ZW5Ff5n1b7KfJt1Zy//jlhkkIaw3LaBQ==} peerDependencies: eslint: ^7.20.0 || ^8.0.0 typescript: '*' + '@angular-eslint/utils@19.4.0': + resolution: {integrity: sha512-2hZ7rf/0YBkn1Rk0i7AlYGlfxQ7+DqEXUsgp1M56mf0cy7/GCFiWZE0lcXFY4kzb4yQK3G2g+kIF092MwelT7Q==} + peerDependencies: + '@typescript-eslint/utils': ^7.11.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + '@antfu/install-pkg@0.4.1': resolution: {integrity: sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==} @@ -2111,6 +2145,10 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + '@bcoe/v8-coverage@1.0.2': + resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} + engines: {node: '>=18'} + '@code-hike/lighter@0.7.0': resolution: {integrity: sha512-64O07rIORKQLB+5T/GKAmKcD9sC0N9yHFJXa0Hs+0Aee1G+I4bSXxTccuDFP6c/G/3h5Pk7yv7PoX9/SpzaeiQ==} @@ -2236,12 +2274,12 @@ packages: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} - '@definitelytyped/header-parser@0.2.16': - resolution: {integrity: sha512-UFsgPft5bhZn07UNGz/9ck4AhdKgLFEOmi2DNr7gXcGL89zbe3u5oVafKUT8j1HOtSBjT8ZEQsXHKlbq+wwF/Q==} + '@definitelytyped/header-parser@0.2.19': + resolution: {integrity: sha512-zu+RxQpUCgorYUQZoyyrRIn9CljL1CeM4qak3NDeMO1r7tjAkodfpAGnVzx/6JR2OUk0tAgwmZxNMSwd9LVgxw==} engines: {node: '>=18.18.0'} - '@definitelytyped/typescript-versions@0.1.6': - resolution: {integrity: sha512-gQpXFteIKrOw4ldmBZQfBrD3WobaIG1SwOr/3alXWkcYbkOWa2NRxQbiaYQ2IvYTGaZK26miJw0UOAFiuIs4gA==} + '@definitelytyped/typescript-versions@0.1.8': + resolution: {integrity: sha512-iz6q9aTwWW7CzN2g8jFQfZ955D63LA+wdIAKz4+2pCc/7kokmEHie1/jVWSczqLFOlmH+69bWQxIurryBP/sig==} engines: {node: '>=18.18.0'} '@definitelytyped/utils@0.1.8': @@ -2320,9 +2358,18 @@ packages: '@effect-ts/system@0.57.5': resolution: {integrity: sha512-/crHGujo0xnuHIYNc1VgP0HGJGFSoSqq88JFXe6FmFyXPpWt8Xu39LyLg7rchsxfXFeEdA9CrIZvLV5eswXV5g==} + '@emnapi/core@1.4.3': + resolution: {integrity: sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==} + '@emnapi/runtime@1.3.1': resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} + '@emnapi/runtime@1.4.3': + resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} + + '@emnapi/wasi-threads@1.0.2': + resolution: {integrity: sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==} + '@emotion/use-insertion-effect-with-fallbacks@1.2.0': resolution: {integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==} peerDependencies: @@ -2332,6 +2379,10 @@ packages: resolution: {integrity: sha512-C3Axuq1xd/9VqFZpW4YAzOx5O9q/LP46uIQy/iNDpHG3fmPa6TBtvfglMCs3RBiBxAIi0Go97r8+jvTt55XMyQ==} engines: {node: '>=16'} + '@es-joy/jsdoccomment@0.50.1': + resolution: {integrity: sha512-fas3qe1hw38JJgU/0m5sDpcrbZGysBeZcMwW5Ws9brYxY64MJyWLXRZCj18keTycT1LFTrFXdSNMS+GRVaU6Hw==} + engines: {node: '>=18'} + '@esbuild-plugins/node-resolve@0.1.4': resolution: {integrity: sha512-haFQ0qhxEpqtWWY0kx1Y5oE3sMyO1PcoSiWEPrAw6tm/ZOOLXjSs6Q+v1v9eyuVF0nNt50YEvrcrvENmyoMv5g==} peerDependencies: @@ -2355,6 +2406,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.25.4': + resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.18.20': resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} @@ -2379,6 +2436,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.25.4': + resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.18.20': resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} @@ -2403,6 +2466,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.25.4': + resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.18.20': resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} @@ -2427,6 +2496,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.25.4': + resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.18.20': resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} @@ -2451,6 +2526,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.25.4': + resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.18.20': resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} @@ -2475,6 +2556,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.25.4': + resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.18.20': resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} @@ -2499,6 +2586,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.25.4': + resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.18.20': resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} @@ -2523,6 +2616,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.25.4': + resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.18.20': resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} @@ -2547,6 +2646,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.25.4': + resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.18.20': resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} @@ -2571,6 +2676,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.25.4': + resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.18.20': resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} @@ -2595,6 +2706,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.25.4': + resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.18.20': resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} @@ -2619,6 +2736,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.25.4': + resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.18.20': resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} @@ -2643,6 +2766,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.25.4': + resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.18.20': resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} @@ -2667,6 +2796,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.25.4': + resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.18.20': resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} @@ -2691,6 +2826,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.25.4': + resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.18.20': resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} @@ -2715,6 +2856,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.25.4': + resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.18.20': resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} @@ -2739,12 +2886,24 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.25.4': + resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-arm64@0.24.2': resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-arm64@0.25.4': + resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.18.20': resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} @@ -2769,6 +2928,12 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.25.4': + resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.23.1': resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} engines: {node: '>=18'} @@ -2781,6 +2946,12 @@ packages: cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.25.4': + resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.18.20': resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} @@ -2805,6 +2976,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.25.4': + resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/sunos-x64@0.18.20': resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} @@ -2829,6 +3006,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.25.4': + resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.18.20': resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} @@ -2853,6 +3036,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.25.4': + resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.18.20': resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} @@ -2877,6 +3066,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.25.4': + resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.18.20': resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} @@ -2901,24 +3096,73 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.25.4': + resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.4.1': resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/eslint-utils@4.7.0': + resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/regexpp@4.12.1': resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint/compat@1.2.9': + resolution: {integrity: sha512-gCdSY54n7k+driCadyMNv8JSPzYLeDVM/ikZRtvtROBpRdFSkS8W9A82MqsaY7lZuwL0wiapgD0NT1xT0hyJsA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^9.10.0 + peerDependenciesMeta: + eslint: + optional: true + + '@eslint/config-array@0.20.0': + resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.2.2': + resolution: {integrity: sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.14.0': + resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/eslintrc@2.1.4': resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/js@8.57.1': resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/js@9.27.0': + resolution: {integrity: sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.3.1': + resolution: {integrity: sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@fal-works/esbuild-plugin-global-externals@2.1.2': resolution: {integrity: sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==} @@ -2979,6 +3223,14 @@ packages: engines: {node: '>=6'} hasBin: true + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + '@humanwhocodes/config-array@0.13.0': resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} engines: {node: '>=10.10.0'} @@ -2992,6 +3244,14 @@ packages: resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} deprecated: Use @eslint/object-schema instead + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + '@hutson/parse-repository-url@5.0.0': resolution: {integrity: sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==} engines: {node: '>=10.13.0'} @@ -3286,13 +3546,22 @@ packages: '@microsoft/tsdoc-config@0.16.2': resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} + '@microsoft/tsdoc-config@0.17.1': + resolution: {integrity: sha512-UtjIFe0C6oYgTnad4q1QP4qXwLhe6tIpNTRStJ2RZEPIkqQPREAwE5spzVxsdn9UaEMUqhh0AqSx3X4nWAKXWw==} + '@microsoft/tsdoc@0.14.2': resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} + '@microsoft/tsdoc@0.15.1': + resolution: {integrity: sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==} + '@msgpack/msgpack@3.0.0-beta2': resolution: {integrity: sha512-y+l1PNV0XDyY8sM3YtuMLK5vE3/hkfId+Do8pLo/OPxfxuFAUwcGz3oiiUuV46/aBpwTzZ+mRWVMtlSKbradhw==} engines: {node: '>= 14'} + '@napi-rs/wasm-runtime@0.2.10': + resolution: {integrity: sha512-bCsCyeZEwVErsGmyPNSzwfwFn4OdxBj0mmv6hOFucB/k81Ojdu68RbZdxYsRQUPc9l6SU5F/cG+bXgWs3oUgsQ==} + '@neondatabase/serverless@0.9.5': resolution: {integrity: sha512-siFas6gItqv6wD/pZnvdu34wEqgG3nSE6zWZdq5j2DEsa+VvX8i/5HXJOo06qrw5axPXn+lGCxeR+NLaSPIXug==} @@ -3305,6 +3574,9 @@ packages: '@next/eslint-plugin-next@14.2.22': resolution: {integrity: sha512-8xCmBMd+hUapMpviPp5g3oDhoWRtbE/QeN/Nvth+SZrdt7xt9TBsH8cePkRwRjXFpwHndpRDNVQROxR/1HiVbg==} + '@next/eslint-plugin-next@15.3.2': + resolution: {integrity: sha512-ijVRTXBgnHT33aWnDtmlG+LJD+5vhc9AKTJPquGG5NKXjpKNjc62woIhFtrAcWdBobt8kqjCoaJ0q6sDQoX7aQ==} + '@next/swc-darwin-arm64@14.2.22': resolution: {integrity: sha512-HUaLiehovgnqY4TMBZJ3pDaOsTE1spIXeR10pWgdQVPYqDGQmHJBj3h3V6yC0uuo/RoY2GC0YBFRkOX3dI9WVQ==} engines: {node: '>= 10'} @@ -3626,6 +3898,10 @@ packages: resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@pkgr/core@0.2.4': + resolution: {integrity: sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@polka/url@1.0.0-next.28': resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} @@ -4723,96 +4999,196 @@ packages: cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@4.40.2': + resolution: {integrity: sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.29.1': resolution: {integrity: sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==} cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.40.2': + resolution: {integrity: sha512-13unNoZ8NzUmnndhPTkWPWbX3vtHodYmy+I9kuLxN+F+l+x3LdVF7UCu8TWVMt1POHLh6oDHhnOA04n8oJZhBw==} + cpu: [arm64] + os: [android] + '@rollup/rollup-darwin-arm64@4.29.1': resolution: {integrity: sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==} cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.40.2': + resolution: {integrity: sha512-Gzf1Hn2Aoe8VZzevHostPX23U7N5+4D36WJNHK88NZHCJr7aVMG4fadqkIf72eqVPGjGc0HJHNuUaUcxiR+N/w==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.29.1': resolution: {integrity: sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==} cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.40.2': + resolution: {integrity: sha512-47N4hxa01a4x6XnJoskMKTS8XZ0CZMd8YTbINbi+w03A2w4j1RTlnGHOz/P0+Bg1LaVL6ufZyNprSg+fW5nYQQ==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-freebsd-arm64@4.29.1': resolution: {integrity: sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==} cpu: [arm64] os: [freebsd] + '@rollup/rollup-freebsd-arm64@4.40.2': + resolution: {integrity: sha512-8t6aL4MD+rXSHHZUR1z19+9OFJ2rl1wGKvckN47XFRVO+QL/dUSpKA2SLRo4vMg7ELA8pzGpC+W9OEd1Z/ZqoQ==} + cpu: [arm64] + os: [freebsd] + '@rollup/rollup-freebsd-x64@4.29.1': resolution: {integrity: sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==} cpu: [x64] os: [freebsd] + '@rollup/rollup-freebsd-x64@4.40.2': + resolution: {integrity: sha512-C+AyHBzfpsOEYRFjztcYUFsH4S7UsE9cDtHCtma5BK8+ydOZYgMmWg1d/4KBytQspJCld8ZIujFMAdKG1xyr4Q==} + cpu: [x64] + os: [freebsd] + '@rollup/rollup-linux-arm-gnueabihf@4.29.1': resolution: {integrity: sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-gnueabihf@4.40.2': + resolution: {integrity: sha512-de6TFZYIvJwRNjmW3+gaXiZ2DaWL5D5yGmSYzkdzjBDS3W+B9JQ48oZEsmMvemqjtAFzE16DIBLqd6IQQRuG9Q==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.29.1': resolution: {integrity: sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.40.2': + resolution: {integrity: sha512-urjaEZubdIkacKc930hUDOfQPysezKla/O9qV+O89enqsqUmQm8Xj8O/vh0gHg4LYfv7Y7UsE3QjzLQzDYN1qg==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.29.1': resolution: {integrity: sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.40.2': + resolution: {integrity: sha512-KlE8IC0HFOC33taNt1zR8qNlBYHj31qGT1UqWqtvR/+NuCVhfufAq9fxO8BMFC22Wu0rxOwGVWxtCMvZVLmhQg==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-arm64-musl@4.29.1': resolution: {integrity: sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-musl@4.40.2': + resolution: {integrity: sha512-j8CgxvfM0kbnhu4XgjnCWJQyyBOeBI1Zq91Z850aUddUmPeQvuAy6OiMdPS46gNFgy8gN1xkYyLgwLYZG3rBOg==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-loongarch64-gnu@4.29.1': resolution: {integrity: sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==} cpu: [loong64] os: [linux] + '@rollup/rollup-linux-loongarch64-gnu@4.40.2': + resolution: {integrity: sha512-Ybc/1qUampKuRF4tQXc7G7QY9YRyeVSykfK36Y5Qc5dmrIxwFhrOzqaVTNoZygqZ1ZieSWTibfFhQ5qK8jpWxw==} + cpu: [loong64] + os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.29.1': resolution: {integrity: sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==} cpu: [ppc64] os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': + resolution: {integrity: sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q==} + cpu: [ppc64] + os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.29.1': resolution: {integrity: sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==} cpu: [riscv64] os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.40.2': + resolution: {integrity: sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.40.2': + resolution: {integrity: sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg==} + cpu: [riscv64] + os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.29.1': resolution: {integrity: sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==} cpu: [s390x] os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.40.2': + resolution: {integrity: sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ==} + cpu: [s390x] + os: [linux] + '@rollup/rollup-linux-x64-gnu@4.29.1': resolution: {integrity: sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-gnu@4.40.2': + resolution: {integrity: sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng==} + cpu: [x64] + os: [linux] + '@rollup/rollup-linux-x64-musl@4.29.1': resolution: {integrity: sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-musl@4.40.2': + resolution: {integrity: sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA==} + cpu: [x64] + os: [linux] + '@rollup/rollup-win32-arm64-msvc@4.29.1': resolution: {integrity: sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==} cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.40.2': + resolution: {integrity: sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.29.1': resolution: {integrity: sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==} cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.40.2': + resolution: {integrity: sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA==} + cpu: [ia32] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.29.1': resolution: {integrity: sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.40.2': + resolution: {integrity: sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA==} + cpu: [x64] + os: [win32] + '@rushstack/eslint-patch@1.10.4': resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==} @@ -5183,6 +5559,24 @@ packages: '@storybook/types@7.6.20': resolution: {integrity: sha512-GncdY3x0LpbhmUAAJwXYtJDUQEwfF175gsjH0/fxPkxPoV7Sef9TM41jQLJW/5+6TnZoCZP/+aJZTJtq3ni23Q==} + '@stylistic/eslint-plugin-jsx@4.2.0': + resolution: {integrity: sha512-V+AtcVs0a3ck2IWWH/fd/+TmOYSgBJlsJXIR65+3kqgNi3p3pPfo9C8nhRsU/KlcSwhnzyx+Z/kEcuWCMZtTcA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=9.0.0' + + '@stylistic/eslint-plugin-ts@4.2.0': + resolution: {integrity: sha512-j2o2GvOx9v66x8hmp/HJ+0T+nOppiO5ycGsCkifh7JPGgjxEhpkGmIGx3RWsoxpWbad3VCX8e8/T8n3+7ze1Zg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=9.0.0' + + '@stylistic/eslint-plugin@4.2.0': + resolution: {integrity: sha512-8hXezgz7jexGHdo5WN6JBEIPHCSFyyU4vgbxevu4YLVS5vl+sxqAAGyXSzfNDyR6xMNSH5H1x67nsXcYMOHtZA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=9.0.0' + '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} @@ -5263,6 +5657,9 @@ packages: resolution: {integrity: sha512-PSys7Hy5NuX76HBleOkd8wlRtI4GCzLHS2XUpKeGIj0vpzH4fqE+tpi7fBb5t9U7UiyM6E6pyabSKjoD2zUsoQ==} hasBin: true + '@tybys/wasm-util@0.9.0': + resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} + '@types/acorn@4.0.6': resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} @@ -5311,12 +5708,18 @@ packages: '@types/eslint@8.56.12': resolution: {integrity: sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==} + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/express-serve-static-core@4.19.6': resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} @@ -5428,8 +5831,8 @@ packages: '@types/node@20.17.10': resolution: {integrity: sha512-/jrvh5h6NXhEauFFexRin69nA0uHJ5gwk4iDivp/DeoEua3uwCUto6PC86IpRITBOs4+6i2I56K5x5b6WYGXHA==} - '@types/node@22.10.2': - resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==} + '@types/node@22.15.2': + resolution: {integrity: sha512-uKXqKN9beGoMdBfcaTY1ecwz6ctxuJAcUlwE55938g0ZJ8lRxwAZqRz2AJ4pzpt5dHdTPMB863UZ0ESiFUcP7A==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -5536,6 +5939,14 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' + '@typescript-eslint/eslint-plugin@8.32.1': + resolution: {integrity: sha512-6u6Plg9nP/J1GRpe/vcjjabo6Uc5YQPAMxsgQyGC/I0RuukiG1wIe3+Vtg3IrSCVJDmqK3j8adrtzXSENRtFgg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/experimental-utils@5.62.0': resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5559,7 +5970,14 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/scope-manager@5.62.0': + '@typescript-eslint/parser@8.32.1': + resolution: {integrity: sha512-LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/scope-manager@5.62.0': resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5575,6 +5993,10 @@ packages: resolution: {integrity: sha512-hkoJiKQS3GQ13TSMEiuNmSCvhz7ujyqD1x3ShbaETATHrck+9RaDdUbt+osXaUuns9OFwrDTTrjtwsU8gJyyRA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.32.1': + resolution: {integrity: sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/type-utils@7.11.0': resolution: {integrity: sha512-WmppUEgYy+y1NTseNMJ6mCFxt03/7jTOy08bcg7bxJJdsM4nuhnchyBbE8vryveaJUf62noH7LodPSo5Z0WUCg==} engines: {node: ^18.18.0 || >=20.0.0} @@ -5602,6 +6024,13 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' + '@typescript-eslint/type-utils@8.32.1': + resolution: {integrity: sha512-mv9YpQGA8iIsl5KyUPi+FGLm7+bA4fgXaeRcFKRDRwDMu4iwrSHeDPipwueNXhdIIZltwCJv+NkxftECbIZWfA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/types@5.62.0': resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5618,6 +6047,10 @@ packages: resolution: {integrity: sha512-8XQ4Ss7G9WX8oaYvD4OOLCjIQYgRQxO+qCiR2V2s2GxI9AUpo7riNwo6jDhKtTcaJjT8PY54j2Yb33kWtSJsmA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.32.1': + resolution: {integrity: sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@5.62.0': resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5651,6 +6084,12 @@ packages: peerDependencies: typescript: '>=4.8.4 <5.8.0' + '@typescript-eslint/typescript-estree@8.32.1': + resolution: {integrity: sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/utils@5.62.0': resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5676,6 +6115,13 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' + '@typescript-eslint/utils@8.32.1': + resolution: {integrity: sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/visitor-keys@5.62.0': resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5692,6 +6138,10 @@ packages: resolution: {integrity: sha512-mCFtBbFBJDCNCWUl5y6sZSCHXw1DEFEk3c/M3nRK2a4XUB8StGFtmcEMizdjKuBzB6e/smJAAWYug3VrdLMr1w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.32.1': + resolution: {integrity: sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ungap/structured-clone@1.2.1': resolution: {integrity: sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==} @@ -5867,6 +6317,91 @@ packages: peerDependencies: vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 + '@unrs/resolver-binding-darwin-arm64@1.7.2': + resolution: {integrity: sha512-vxtBno4xvowwNmO/ASL0Y45TpHqmNkAaDtz4Jqb+clmcVSSl8XCG/PNFFkGsXXXS6AMjP+ja/TtNCFFa1QwLRg==} + cpu: [arm64] + os: [darwin] + + '@unrs/resolver-binding-darwin-x64@1.7.2': + resolution: {integrity: sha512-qhVa8ozu92C23Hsmv0BF4+5Dyyd5STT1FolV4whNgbY6mj3kA0qsrGPe35zNR3wAN7eFict3s4Rc2dDTPBTuFQ==} + cpu: [x64] + os: [darwin] + + '@unrs/resolver-binding-freebsd-x64@1.7.2': + resolution: {integrity: sha512-zKKdm2uMXqLFX6Ac7K5ElnnG5VIXbDlFWzg4WJ8CGUedJryM5A3cTgHuGMw1+P5ziV8CRhnSEgOnurTI4vpHpg==} + cpu: [x64] + os: [freebsd] + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.7.2': + resolution: {integrity: sha512-8N1z1TbPnHH+iDS/42GJ0bMPLiGK+cUqOhNbMKtWJ4oFGzqSJk/zoXFzcQkgtI63qMcUI7wW1tq2usZQSb2jxw==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm-musleabihf@1.7.2': + resolution: {integrity: sha512-tjYzI9LcAXR9MYd9rO45m1s0B/6bJNuZ6jeOxo1pq1K6OBuRMMmfyvJYval3s9FPPGmrldYA3mi4gWDlWuTFGA==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-gnu@1.7.2': + resolution: {integrity: sha512-jon9M7DKRLGZ9VYSkFMflvNqu9hDtOCEnO2QAryFWgT6o6AXU8du56V7YqnaLKr6rAbZBWYsYpikF226v423QA==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-musl@1.7.2': + resolution: {integrity: sha512-c8Cg4/h+kQ63pL43wBNaVMmOjXI/X62wQmru51qjfTvI7kmCy5uHTJvK/9LrF0G8Jdx8r34d019P1DVJmhXQpA==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-ppc64-gnu@1.7.2': + resolution: {integrity: sha512-A+lcwRFyrjeJmv3JJvhz5NbcCkLQL6Mk16kHTNm6/aGNc4FwPHPE4DR9DwuCvCnVHvF5IAd9U4VIs/VvVir5lg==} + cpu: [ppc64] + os: [linux] + + '@unrs/resolver-binding-linux-riscv64-gnu@1.7.2': + resolution: {integrity: sha512-hQQ4TJQrSQW8JlPm7tRpXN8OCNP9ez7PajJNjRD1ZTHQAy685OYqPrKjfaMw/8LiHCt8AZ74rfUVHP9vn0N69Q==} + cpu: [riscv64] + os: [linux] + + '@unrs/resolver-binding-linux-riscv64-musl@1.7.2': + resolution: {integrity: sha512-NoAGbiqrxtY8kVooZ24i70CjLDlUFI7nDj3I9y54U94p+3kPxwd2L692YsdLa+cqQ0VoqMWoehDFp21PKRUoIQ==} + cpu: [riscv64] + os: [linux] + + '@unrs/resolver-binding-linux-s390x-gnu@1.7.2': + resolution: {integrity: sha512-KaZByo8xuQZbUhhreBTW+yUnOIHUsv04P8lKjQ5otiGoSJ17ISGYArc+4vKdLEpGaLbemGzr4ZeUbYQQsLWFjA==} + cpu: [s390x] + os: [linux] + + '@unrs/resolver-binding-linux-x64-gnu@1.7.2': + resolution: {integrity: sha512-dEidzJDubxxhUCBJ/SHSMJD/9q7JkyfBMT77Px1npl4xpg9t0POLvnWywSk66BgZS/b2Hy9Y1yFaoMTFJUe9yg==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-linux-x64-musl@1.7.2': + resolution: {integrity: sha512-RvP+Ux3wDjmnZDT4XWFfNBRVG0fMsc+yVzNFUqOflnDfZ9OYujv6nkh+GOr+watwrW4wdp6ASfG/e7bkDradsw==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-wasm32-wasi@1.7.2': + resolution: {integrity: sha512-y797JBmO9IsvXVRCKDXOxjyAE4+CcZpla2GSoBQ33TVb3ILXuFnMrbR/QQZoauBYeOFuu4w3ifWLw52sdHGz6g==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@unrs/resolver-binding-win32-arm64-msvc@1.7.2': + resolution: {integrity: sha512-gtYTh4/VREVSLA+gHrfbWxaMO/00y+34htY7XpioBTy56YN2eBjkPrY1ML1Zys89X3RJDKVaogzwxlM1qU7egg==} + cpu: [arm64] + os: [win32] + + '@unrs/resolver-binding-win32-ia32-msvc@1.7.2': + resolution: {integrity: sha512-Ywv20XHvHTDRQs12jd3MY8X5C8KLjDbg/jyaal/QLKx3fAShhJyD4blEANInsjxW3P7isHx1Blt56iUDDJO3jg==} + cpu: [ia32] + os: [win32] + + '@unrs/resolver-binding-win32-x64-msvc@1.7.2': + resolution: {integrity: sha512-friS8NEQfHaDbkThxopGk+LuE5v3iY0StruifjQEt7SLbA46OnfgMO15sOTkbpJkol6RB+1l1TYPXh0sCddpvA==} + cpu: [x64] + os: [win32] + '@vercel/analytics@1.4.1': resolution: {integrity: sha512-ekpL4ReX2TH3LnrRZTUKjHHNpNy9S1I7QmS+g/RQXoSUQ8ienzosuX7T9djZ/s8zPhBx1mpHP/Rw5875N+zQIQ==} peerDependencies: @@ -6019,12 +6554,24 @@ packages: '@vitest/browser': optional: true + '@vitest/coverage-v8@3.1.3': + resolution: {integrity: sha512-cj76U5gXCl3g88KSnf80kof6+6w+K4BjOflCl7t6yRJPDuCrHtVu0SgNYOUARJOL5TI8RScDbm5x4s1/P9bvpw==} + peerDependencies: + '@vitest/browser': 3.1.3 + vitest: 3.1.3 + peerDependenciesMeta: + '@vitest/browser': + optional: true + '@vitest/expect@2.0.5': resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} '@vitest/expect@2.1.8': resolution: {integrity: sha512-8ytZ/fFHq2g4PJVAtDX57mayemKgDR6X3Oa2Foro+EygiOJHUXhCqBAAKQYYajZpFoIfvBCF1j6R6IYRSIUFuw==} + '@vitest/expect@3.1.3': + resolution: {integrity: sha512-7FTQQuuLKmN1Ig/h+h/GO+44Q1IlglPlR2es4ab7Yvfx+Uk5xsv+Ykk+MEt/M2Yn/xGmzaLKxGw2lgy2bwuYqg==} + '@vitest/mocker@2.1.8': resolution: {integrity: sha512-7guJ/47I6uqfttp33mgo6ga5Gr1VnL58rcqYKyShoRK9ebu8T5Rs6HN3s1NABiBeVTdWNrwUMcHH54uXZBN4zA==} peerDependencies: @@ -6036,30 +6583,56 @@ packages: vite: optional: true + '@vitest/mocker@3.1.3': + resolution: {integrity: sha512-PJbLjonJK82uCWHjzgBJZuR7zmAOrSvKk1QBxrennDIgtH4uK0TB1PvYmc0XBCigxxtiAVPfWtAdy4lpz8SQGQ==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + '@vitest/pretty-format@2.0.5': resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} '@vitest/pretty-format@2.1.8': resolution: {integrity: sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==} + '@vitest/pretty-format@3.1.3': + resolution: {integrity: sha512-i6FDiBeJUGLDKADw2Gb01UtUNb12yyXAqC/mmRWuYl+m/U9GS7s8us5ONmGkGpUUo7/iAYzI2ePVfOZTYvUifA==} + '@vitest/runner@2.1.8': resolution: {integrity: sha512-17ub8vQstRnRlIU5k50bG+QOMLHRhYPAna5tw8tYbj+jzjcspnwnwtPtiOlkuKC4+ixDPTuLZiqiWWQ2PSXHVg==} + '@vitest/runner@3.1.3': + resolution: {integrity: sha512-Tae+ogtlNfFei5DggOsSUvkIaSuVywujMj6HzR97AHK6XK8i3BuVyIifWAm/sE3a15lF5RH9yQIrbXYuo0IFyA==} + '@vitest/snapshot@2.1.8': resolution: {integrity: sha512-20T7xRFbmnkfcmgVEz+z3AU/3b0cEzZOt/zmnvZEctg64/QZbSDJEVm9fLnnlSi74KibmRsO9/Qabi+t0vCRPg==} + '@vitest/snapshot@3.1.3': + resolution: {integrity: sha512-XVa5OPNTYUsyqG9skuUkFzAeFnEzDp8hQu7kZ0N25B1+6KjGm4hWLtURyBbsIAOekfWQ7Wuz/N/XXzgYO3deWQ==} + '@vitest/spy@2.0.5': resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} '@vitest/spy@2.1.8': resolution: {integrity: sha512-5swjf2q95gXeYPevtW0BLk6H8+bPlMb4Vw/9Em4hFxDcaOxS+e0LOX4yqNxoHzMR2akEB2xfpnWUzkZokmgWDg==} + '@vitest/spy@3.1.3': + resolution: {integrity: sha512-x6w+ctOEmEXdWaa6TO4ilb7l9DxPR5bwEb6hILKuxfU1NqWT2mpJD9NJN7t3OTfxmVlOMrvtoFJGdgyzZ605lQ==} + '@vitest/utils@2.0.5': resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} '@vitest/utils@2.1.8': resolution: {integrity: sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==} + '@vitest/utils@3.1.3': + resolution: {integrity: sha512-2Ltrpht4OmHO9+c/nmHtF09HWiyWdworqnHIwjfvDyWjuwKbdkcS9AnhsDn+8E2RM4x++foD1/tNuLPVvWG1Rg==} + '@vladfrangu/async_event_emitter@2.4.6': resolution: {integrity: sha512-RaI5qZo6D2CVS6sTHFKg1v5Ohq/+Bo2LZ5gzUEwZ/WkHhwtGTCB/sVLw8ijOkAUxasZ+WshN/Rzj4ywsABJ5ZA==} engines: {node: '>=v14.0.0', npm: '>=7.0.0'} @@ -6115,8 +6688,8 @@ packages: resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} engines: {node: '>=0.4.0'} hasBin: true @@ -6149,6 +6722,9 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} @@ -6387,12 +6963,22 @@ packages: resolution: {integrity: sha512-CGaBseNtunAV2DCpwBXqTKq8+9Tw65XZetMaC0FsMoZuLj0gxNIkbCf2QyKYScVrNOU7/ayfNdVw8ZCSHBiqCg==} engines: {node: ^14.18.0 || >=16.0.0} + astro-eslint-parser@1.2.2: + resolution: {integrity: sha512-JepyLROIad6f44uyqMF6HKE2QbunNzp3mYKRcPoDGt0QkxXmH222FAFC64WTyQu2Kg8NNEXHTN/sWuUId9sSxw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + astrojs-compiler-sync@0.3.5: resolution: {integrity: sha512-y420rhIIJ2HHDkYeqKArBHSdJNIIGMztLH90KGIX3zjcJyt/cr9Z2wYA8CP5J1w6KE7xqMh0DAkhfjhNDpQb2Q==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@astrojs/compiler': '>=0.27.0' + astrojs-compiler-sync@1.1.1: + resolution: {integrity: sha512-0mKvB9sDQRIZPsEJadw6OaFbGJ92cJPPR++ICca9XEyiUAZqgVuk25jNmzHPT0KF80rI94trSZrUR5iHFXGGOQ==} + engines: {node: ^18.18.0 || >=20.9.0} + peerDependencies: + '@astrojs/compiler': '>=0.27.0' + async-listen@1.2.0: resolution: {integrity: sha512-CcEtRh/oc9Jc4uWeUwdpG/+Mb2YUHKmdaTf0gUr7Wa+bfp4xx70HOb3RuSTJMvqKNB1TkdTfjLdrcz2X4rkkZA==} @@ -6548,6 +7134,11 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + browserslist@4.24.5: + resolution: {integrity: sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} @@ -6572,6 +7163,10 @@ packages: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} + builtin-modules@4.0.0: + resolution: {integrity: sha512-p1n8zyCkt1BVrKNFymOHjcDSAl7oq/gUvfgULv2EblgpPVQlQr9yHnWjg9IJ2MhfwPqiYqMMrr01OY7yQoK2yA==} + engines: {node: '>=18.20'} + builtins@1.0.3: resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} @@ -6619,6 +7214,10 @@ packages: resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} engines: {node: '>= 0.4'} + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + call-bind@1.0.8: resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} engines: {node: '>= 0.4'} @@ -6627,6 +7226,10 @@ packages: resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} engines: {node: '>= 0.4'} + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -6659,6 +7262,9 @@ packages: caniuse-lite@1.0.30001690: resolution: {integrity: sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==} + caniuse-lite@1.0.30001718: + resolution: {integrity: sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==} + caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -6673,6 +7279,10 @@ packages: resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} engines: {node: '>=12'} + chai@5.2.0: + resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} + engines: {node: '>=12'} + chalk@1.1.3: resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} engines: {node: '>=0.10.0'} @@ -6989,6 +7599,10 @@ packages: resolution: {integrity: sha512-Qil5KwghMzlqd51UXM0b6fyaGHtOC22scxrwrz4A2882LyUMwQjnvaedN1HAeXzphspQ6CpHkzMAWxBTUruDLg==} engines: {node: ^14.18.0 || >=16.10.0} + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} @@ -7105,6 +7719,9 @@ packages: core-js-compat@3.39.0: resolution: {integrity: sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==} + core-js-compat@3.42.0: + resolution: {integrity: sha512-bQasjMfyDGyaeWKBIu33lHh9qlSR0MFE/Nmc6nMjf/iU9b3rSMdAYz1Baxrv4lPdGUsTqZudHA4jIGSJy0SWZQ==} + core-js-pure@3.39.0: resolution: {integrity: sha512-7fEcWwKI4rJinnK+wLTezeg2smbFFdSBP6E2kQZNbnzM2s1rpKQ6aaRteZSSg7FLU3P0HGGVo/gbpfanU36urg==} @@ -7420,6 +8037,9 @@ packages: discord-api-types@0.37.97: resolution: {integrity: sha512-No1BXPcVkyVD4ZVmbNgDKaBoqgeQ+FJpzZ8wqHkfmBnTZig1FcH3iPPersiK1TUIAzgClh2IvOuVUYfcWLQAOA==} + discord-api-types@0.38.8: + resolution: {integrity: sha512-xuRXPD44FcbKHrQK15FS1HFlMRNJtsaZou/SVws18vQ7zHqmlxyDktMkZpyvD6gE2ctGOVYC/jUyoMMAyBWfcw==} + dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} @@ -7491,6 +8111,9 @@ packages: engines: {node: '>=16'} hasBin: true + electron-to-chromium@1.5.155: + resolution: {integrity: sha512-ps5KcGGmwL8VaeJlvlDlu4fORQpv3+GIcF5I3f9tUKUlJ/wsysh6HU8P5L1XWRYeXfA0oJd4PyM8ds8zTFf6Ng==} + electron-to-chromium@1.5.76: resolution: {integrity: sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==} @@ -7531,6 +8154,10 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + entities@6.0.0: + resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==} + engines: {node: '>=0.12'} + env-cmd@10.1.0: resolution: {integrity: sha512-mMdWTT9XKN7yNth/6N6g2GuKuJTsKMDHlQFUDacb/heQRRWOTIZ42t1rMHnQu4jYxU1ajdTeJM+9eEETlqToMA==} engines: {node: '>=8.0.0'} @@ -7575,10 +8202,17 @@ packages: es-module-lexer@1.6.0: resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-object-atoms@1.0.0: resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} engines: {node: '>= 0.4'} + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + es-set-tostringtag@2.0.3: resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} engines: {node: '>= 0.4'} @@ -7750,6 +8384,11 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.25.4: + resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -7784,10 +8423,26 @@ packages: peerDependencies: eslint: '>=6.0.0' + eslint-compat-utils@0.6.5: + resolution: {integrity: sha512-vAUHYzue4YAa2hNACjB8HvUQj5yehAZgiClyFVVom9cP8z5NSFq3PwB/TtJslN2zAMgRX6FCFCjYBbQh71g5RQ==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + eslint-config-neon@0.1.62: resolution: {integrity: sha512-zOXnVRkzos+zVu99O+nqVTu/1rjzsknz/Z+x+he937MwHAFnRohofOqaqLDAslK15NGnEDiQ+J4bqoD2oWtA2A==} engines: {node: '>=16.0.0'} + eslint-config-neon@0.2.7: + resolution: {integrity: sha512-30g2ZDNydG3enraH/G21qEw0m7ggwlRACm/q3zeAKbV0B/LBHtROGEACkrDYRehm4KC4diKQET/IGx3N+t5AVQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-config-prettier@10.1.1: + resolution: {integrity: sha512-4EQQr6wXwS+ZJSzaR5ZCrYgLxqvUjdXctaEtBqHcbkW944B1NQyO4qpdHQbXBONfwxXdkAY81HH4+LUfrg+zPw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + eslint-config-prettier@9.1.0: resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true @@ -7800,6 +8455,10 @@ packages: eslint: ^8.0.0 typescript: '>=4.0.0' + eslint-formatter-compact@8.40.0: + resolution: {integrity: sha512-cwGUs113TgmTQXecx5kfRjB7m0y2wkDLSadPTE2pK6M/wO4N8PjmUaoWOFNCP9MHgsiZwgqd5bZFnDCnszC56Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-formatter-pretty@4.1.0: resolution: {integrity: sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==} engines: {node: '>=10'} @@ -7815,8 +8474,8 @@ packages: eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-import-resolver-typescript@3.7.0: - resolution: {integrity: sha512-Vrwyi8HHxY97K5ebydMtffsWAn1SCR9eol49eCd5fJS4O1WV7PaAjbcjmbfJJSMz/t4Mal212Uz/fQZrOB8mow==} + eslint-import-resolver-typescript@3.10.1: + resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -7828,12 +8487,35 @@ packages: eslint-plugin-import-x: optional: true + eslint-import-resolver-typescript@4.3.4: + resolution: {integrity: sha512-buzw5z5VtiQMysYLH9iW9BV04YyZebsw+gPi+c4FCjfS9i6COYOrEWw9t3m3wA9PFBfqcBCqWf32qrXLbwafDw==} + engines: {node: ^16.17.0 || >=18.6.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + eslint-mdx@3.1.5: resolution: {integrity: sha512-ynztX0k7CQ3iDL7fDEIeg3g0O/d6QPv7IBI9fdYLhXp5fAp0fi8X22xF/D3+Pk0f90R27uwqa1clHpay6t0l8Q==} engines: {node: '>=18.0.0'} peerDependencies: eslint: '>=8.0.0' + eslint-mdx@3.4.2: + resolution: {integrity: sha512-NYNGuBClNzYzTJWbPzeYSh/eCl5m4BrX1MayNuGuvxn+cItTdNirE+ykos9q1CkYhHj+ZgQz6W+6EIaHMp7/jQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + eslint: '>=8.0.0' + remark-lint-file-extension: '*' + peerDependenciesMeta: + remark-lint-file-extension: + optional: true + eslint-module-utils@2.12.0: resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} engines: {node: '>=4'} @@ -7861,11 +8543,22 @@ packages: peerDependencies: eslint: '>=7.0.0' + eslint-plugin-astro@1.3.1: + resolution: {integrity: sha512-2XaLCMQm8htW1UvJvy1Zcmg8l0ziskitiUfJTn/w1Mk7r4Mxj0fZeNpN6UTNrm64XBIXSa5h8UCGrg8mdu47+g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=8.57.0' + eslint-plugin-cypress@2.15.2: resolution: {integrity: sha512-CtcFEQTDKyftpI22FVGpx8bkpKyYXBlNge6zSo0pl5/qJvBAnzaD76Vu2AsP16d6mTj478Ldn2mhgrWV+Xr0vQ==} peerDependencies: eslint: '>= 3.2.1' + eslint-plugin-cypress@4.3.0: + resolution: {integrity: sha512-CgS/S940MJlT8jtnWGKI0LvZQBGb/BB0QCpgBOxFMM/Z6znD+PZUwBhCTwHKN2GEr5AOny3xB92an0QfzBGooQ==} + peerDependencies: + eslint: '>=9' + eslint-plugin-es-x@7.8.0: resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} engines: {node: ^14.18.0 || >=16.0.0} @@ -7875,15 +8568,28 @@ packages: eslint-plugin-i@2.29.1: resolution: {integrity: sha512-ORizX37MelIWLbMyqI7hi8VJMf7A0CskMmYkB+lkCX3aF4pkGV7kwx5bSEb4qx7Yce2rAf9s34HqDRPjGRZPNQ==} engines: {node: '>=12'} + deprecated: Please migrate to the brand new `eslint-plugin-import-x` instead peerDependencies: eslint: ^7.2.0 || ^8 + eslint-plugin-import-x@4.11.1: + resolution: {integrity: sha512-CiqREASJRnhwCB0NujkTdo4jU+cJAnhQrd4aCnWC1o+rYWIWakVbyuzVbnCriUUSLAnn5CoJ2ob36TEgNzejBQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + eslint-plugin-jsdoc@48.11.0: resolution: {integrity: sha512-d12JHJDPNo7IFwTOAItCeJY1hcqoIxE0lHA8infQByLilQ9xkqrRa6laWCnsuCrf+8rUnvxXY1XuTbibRBNylA==} engines: {node: '>=18'} peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + eslint-plugin-jsdoc@50.6.17: + resolution: {integrity: sha512-hq+VQylhd12l8qjexyriDsejZhqiP33WgMTy2AmaGZ9+MrMWVqPECsM87GPxgHfQn0zw+YTuhqjUfk1f+q67aQ==} + engines: {node: '>=18'} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + eslint-plugin-jsx-a11y@6.10.2: resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} engines: {node: '>=4.0'} @@ -7902,30 +8608,65 @@ packages: peerDependencies: eslint: '>=8.0.0' + eslint-plugin-mdx@3.4.2: + resolution: {integrity: sha512-deXcJ4hTLkQ7F2JLto74UXeDkZYXu1Xtgvy0ZHlJ4CNwCYAZier3qNvTMBwE9VEnowxN+TgB18OhMLYyaR9hXA==} + engines: {node: '>=18.0.0'} + peerDependencies: + eslint: '>=8.0.0' + eslint-plugin-n@16.6.2: resolution: {integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==} engines: {node: '>=16.0.0'} peerDependencies: eslint: '>=7.0.0' + eslint-plugin-n@17.18.0: + resolution: {integrity: sha512-hvZ/HusueqTJ7VDLoCpjN0hx4N4+jHIWTXD4TMLHy9F23XkDagR9v+xQWRWR57yY55GPF8NnD4ox9iGTxirY8A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=8.23.0' + eslint-plugin-promise@6.6.0: resolution: {integrity: sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + eslint-plugin-promise@7.2.1: + resolution: {integrity: sha512-SWKjd+EuvWkYaS+uN2csvj0KoP43YTu7+phKQ5v+xw6+A0gutVX2yqCeCkC3uLCJFiPfR2dD8Es5L7yUsmvEaA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + eslint-plugin-react-hooks@4.6.2: resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + eslint-plugin-react-hooks@5.2.0: + resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + + eslint-plugin-react-refresh@0.4.20: + resolution: {integrity: sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==} + peerDependencies: + eslint: '>=8.40' + eslint-plugin-react@7.37.3: resolution: {integrity: sha512-DomWuTQPFYZwF/7c9W2fkKkStqZmBd3uugfqBYLdkZ3Hii23WzZuOLUskGxB8qkSKqftxEeGL1TB2kMhrce0jA==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + eslint-plugin-react@7.37.5: + resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + eslint-plugin-rxjs-angular@2.0.1: resolution: {integrity: sha512-HJ/JHhjDJKyFUmM8o7rS91WNkNv7W7Z/okR5X3hqG7tKVMLOJi4T63Aa74ECuCdowmdfW75p2RrW4R8WeoZIKQ==} peerDependencies: @@ -7944,6 +8685,11 @@ packages: peerDependencies: eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint-plugin-sonarjs@3.0.2: + resolution: {integrity: sha512-LxjbfwI7ypENeTmGyKmDyNux3COSkMi7H/6Cal5StSLQ6edf0naP45SZR43OclaNR7WfhVTZdhOn63q3/Y6puQ==} + peerDependencies: + eslint: ^8.0.0 || ^9.0.0 + eslint-plugin-svelte3@4.0.0: resolution: {integrity: sha512-OIx9lgaNzD02+MDFNLw0GEUbuovNcglg+wnd/UY0fbZmlQSz7GlQiQ1f+yX0XvC07XPcDOnFcichqI3xCwp71g==} peerDependencies: @@ -7953,6 +8699,9 @@ packages: eslint-plugin-tsdoc@0.2.17: resolution: {integrity: sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA==} + eslint-plugin-tsdoc@0.4.0: + resolution: {integrity: sha512-MT/8b4aKLdDClnS8mP3R/JNjg29i0Oyqd/0ym6NnQf+gfKbJJ4ZcSh2Bs1H0YiUMTBwww5JwXGTWot/RwyJ7aQ==} + eslint-plugin-typescript-sort-keys@3.3.0: resolution: {integrity: sha512-bRW3Rc/VNdrSP9OoY5wgjjaXCOOkZKpzvl/Mk6l8Sg8CMehVIcg9K4y33l+ZcZiknpl0aR6rKusxuCJNGZWmVw==} engines: {node: '>= 16'} @@ -7967,6 +8716,19 @@ packages: peerDependencies: eslint: '>=8.56.0' + eslint-plugin-unicorn@57.0.0: + resolution: {integrity: sha512-zUYYa6zfNdTeG9BISWDlcLmz16c+2Ck2o5ZDHh0UzXJz3DEP7xjmlVDTzbyV0W+XksgZ0q37WEWzN2D2Ze+g9Q==} + engines: {node: '>=18.18'} + peerDependencies: + eslint: '>=9.20.0' + + eslint-plugin-vue@10.1.0: + resolution: {integrity: sha512-/VTiJ1eSfNLw6lvG9ENySbGmcVvz6wZ9nA7ZqXlLBY2RkaF15iViYKxglWiIch12KiLAj0j1iXPYU6W4wTROFA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + vue-eslint-parser: ^10.0.0 + eslint-plugin-vue@9.32.0: resolution: {integrity: sha512-b/Y05HYmnB/32wqVcjxjHZzNpwxj1onBOvqW89W+V+XNG1dRuaFbNd3vT9CLbr2LXjEoq+3vn8DanWf7XU22Ug==} engines: {node: ^14.17.0 || >=16.0.0} @@ -7988,6 +8750,10 @@ packages: resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-scope@8.3.0: + resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -8002,6 +8768,16 @@ packages: deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true + eslint@9.27.0: + resolution: {integrity: sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + espree@10.3.0: resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -8115,6 +8891,10 @@ packages: resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} engines: {node: '>=12.0.0'} + expect-type@1.2.1: + resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} + engines: {node: '>=12.0.0'} + expect@29.7.0: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8143,10 +8923,18 @@ packages: fast-fifo@1.3.2: resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} @@ -8179,6 +8967,14 @@ packages: picomatch: optional: true + fdir@6.4.4: + resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} @@ -8198,6 +8994,10 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + file-set@4.0.2: resolution: {integrity: sha512-fuxEgzk4L8waGXaAkd8cMr73Pm0FxOVkn8hztzUW7BAHhOGH90viQNXbiOsnecCWmfInqU6YmAMwxRMdKETceQ==} engines: {node: '>=10'} @@ -8229,6 +9029,10 @@ packages: '@75lb/nature': optional: true + find-up-simple@1.0.1: + resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} + engines: {node: '>=18'} + find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -8245,10 +9049,17 @@ packages: resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} engines: {node: '>=18'} + fix-dts-default-cjs-exports@1.0.1: + resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} + flat-cache@3.2.0: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + flatted@3.3.2: resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} @@ -8349,6 +9160,9 @@ packages: resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} engines: {node: '>= 0.4'} + functional-red-black-tree@1.0.1: + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} @@ -8386,6 +9200,10 @@ packages: resolution: {integrity: sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==} engines: {node: '>= 0.4'} + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + get-nonce@1.0.1: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} @@ -8394,6 +9212,10 @@ packages: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} @@ -8414,6 +9236,9 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} + get-tsconfig@4.10.0: + resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} + get-tsconfig@4.8.1: resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} @@ -8505,10 +9330,22 @@ packages: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + globals@15.14.0: resolution: {integrity: sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==} engines: {node: '>=18'} + globals@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + engines: {node: '>=18'} + + globals@16.1.0: + resolution: {integrity: sha512-aibexHNbb/jiUSObBgpHLj+sIuUmJnYcgXBlrfsiDZ9rt4aF2TFRbyLgZ2iFQuVZ1K5Mx3FVkbKRSgKrbK3K2g==} + engines: {node: '>=18'} + globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} @@ -8786,6 +9623,10 @@ packages: resolution: {integrity: sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==} engines: {node: '>= 4'} + ignore@7.0.4: + resolution: {integrity: sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==} + engines: {node: '>= 4'} + imagescript@1.3.0: resolution: {integrity: sha512-lCYzQrWzdnA68K03oMj/BUlBJrVBnslzDOgGFymAp49NmdGEJxGeN7sHh5mCva0nQkq+kkKSuru2zLf1m04+3A==} engines: {node: '>=14.0.0'} @@ -8821,6 +9662,10 @@ packages: resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} engines: {node: '>=12'} + index-to-position@1.1.0: + resolution: {integrity: sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg==} + engines: {node: '>=18'} + inflection@2.0.1: resolution: {integrity: sha512-wzkZHqpb4eGrOKBl34xy3umnYHx8Si5R1U4fwmdxLo5gdH6mEK8gclckTj/qWqy4Je0bsDYe/qazZYuO7xe3XQ==} engines: {node: '>=14.0.0'} @@ -8932,8 +9777,12 @@ packages: resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} engines: {node: '>=6'} - is-bun-module@1.3.0: - resolution: {integrity: sha512-DgXeu5UWI0IsMQundYb5UAOzm6G2eVnarJ0byP6Tm55iZNKceD59LNPA2L4VvsScTtHcw0yEkVwSf7PC+QoLSA==} + is-builtin-module@4.0.0: + resolution: {integrity: sha512-rWP3AMAalQSesXO8gleROyL2iKU73SX5Er66losQn9rWOWL4Gef0a/xOEOVqjWGMuR2vHG3FJ8UUmT700O8oFg==} + engines: {node: '>=18.20'} + + is-bun-module@2.0.0: + resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} @@ -9418,6 +10267,11 @@ packages: engines: {node: '>=4'} hasBin: true + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -9674,6 +10528,9 @@ packages: loupe@3.1.2: resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} + loupe@3.1.3: + resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} + lower-case-first@1.0.2: resolution: {integrity: sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA==} @@ -10277,6 +11134,9 @@ packages: mlly@1.7.3: resolution: {integrity: sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==} + mlly@1.7.4: + resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} + mock-socket@9.3.1: resolution: {integrity: sha512-qxBgB7Qa2sEQgHFjj0dSigq7fX4k6Saisd5Nelwp2q8mlbAFh5dHV9JTTlF8viYJLSSWgMCZFUom8PJcMNBoJw==} engines: {node: '>= 8'} @@ -10312,6 +11172,11 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + napi-postinstall@0.2.4: + resolution: {integrity: sha512-ZEzHJwBhZ8qQSbknHqYcdtQVr8zUgGyM/q6h6qAyhtyVMNrSgDhrC4disf03dYW0e+czXyLnZINnCTEkWy0eJg==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + hasBin: true + natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} @@ -10575,6 +11440,10 @@ packages: resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} engines: {node: '>= 0.4'} + object.entries@1.1.9: + resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} + engines: {node: '>= 0.4'} + object.fromentries@2.0.8: resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} engines: {node: '>= 0.4'} @@ -10756,6 +11625,9 @@ packages: parse-entities@4.0.2: resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + parse-imports-exports@0.2.4: + resolution: {integrity: sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==} + parse-imports@2.2.1: resolution: {integrity: sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ==} engines: {node: '>= 18'} @@ -10768,6 +11640,10 @@ packages: resolution: {integrity: sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==} engines: {node: '>=16'} + parse-json@8.3.0: + resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} + engines: {node: '>=18'} + parse-ms@2.1.0: resolution: {integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==} engines: {node: '>=6'} @@ -10776,6 +11652,9 @@ packages: resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} engines: {node: '>=18'} + parse-statements@1.0.11: + resolution: {integrity: sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==} + parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} @@ -10837,6 +11716,9 @@ packages: pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + pathval@2.0.0: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} @@ -11119,6 +12001,11 @@ packages: engines: {node: '>=14'} hasBin: true + prettier@3.5.3: + resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} + engines: {node: '>=14'} + hasBin: true + pretty-format@24.9.0: resolution: {integrity: sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==} engines: {node: '>= 6'} @@ -11370,7 +12257,11 @@ packages: resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - read-pkg-up@10.1.0: + read-package-up@11.0.0: + resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==} + engines: {node: '>=18'} + + read-pkg-up@10.1.0: resolution: {integrity: sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==} engines: {node: '>=16'} @@ -11386,6 +12277,10 @@ packages: resolution: {integrity: sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==} engines: {node: '>=16'} + read-pkg@9.0.1: + resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} + engines: {node: '>=18'} + readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} @@ -11449,6 +12344,10 @@ packages: resolution: {integrity: sha512-zQv5y/cf85sxvdrKPlfcRzlDn/OqKFThNimYmsS3flmkioKvkUGn2Qg9cJVoQiEvdxFGLE0MQER/9fZ9sUqdxg==} engines: {node: '>=0.10.0'} + refa@0.12.1: + resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + reflect.getprototypeof@1.0.9: resolution: {integrity: sha512-r0Ay04Snci87djAsI4U+WNRcSw5S4pOH7qFjd/veA5gC7TbqESR3tcj28ia95L/fYUDw11JKP7uqUKUAfVvV5Q==} engines: {node: '>= 0.4'} @@ -11468,6 +12367,10 @@ packages: regex@5.1.1: resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} + regexp-ast-analysis@0.7.1: + resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + regexp-tree@0.1.27: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true @@ -11487,6 +12390,10 @@ packages: resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} hasBin: true + regjsparser@0.12.0: + resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} + hasBin: true + rehype-autolink-headings@6.1.1: resolution: {integrity: sha512-NMYzZIsHM3sA14nC5rAFuUPIOfg+DFmf9EY1YMhaNlB7+3kK/ZlE6kqPfuxr1tsJ1XWkTrMtMoyHosU70d35mA==} @@ -11635,6 +12542,11 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rollup@4.40.2: + resolution: {integrity: sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} @@ -11707,6 +12619,10 @@ packages: scheduler@0.25.0-rc-f994737d14-20240522: resolution: {integrity: sha512-qS+xGFF7AljP2APO2iJe8zESNsK20k25MACz+WGOXPybUsRdi1ssvaoF93im2nSX2q/XT3wKkjdz6RQfbmaxdw==} + scslre@0.3.0: + resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} + engines: {node: ^14.0.0 || >=16.0.0} + section-matter@1.0.0: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} engines: {node: '>=4'} @@ -11739,6 +12655,16 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true + + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + sentence-case@2.1.1: resolution: {integrity: sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ==} @@ -11939,8 +12865,8 @@ packages: resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} engines: {node: '>= 8'} - stable-hash@0.0.4: - resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} + stable-hash@0.0.5: + resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} @@ -11962,6 +12888,9 @@ packages: std-env@3.8.0: resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} + std-env@3.9.0: + resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + stop-iteration-iterator@1.1.0: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} @@ -12204,6 +13133,10 @@ packages: synchronous-promise@2.0.17: resolution: {integrity: sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==} + synckit@0.11.6: + resolution: {integrity: sha512-2pR2ubZSV64f/vqm9eLPz/KOvR9Dm+Co/5ChLgeHl0yEDRc6h5hXHoxEQH8Y5Ljycozd3p1k5TTSVdzYGkPvLw==} + engines: {node: ^14.18.0 || >=16.0.0} + synckit@0.9.2: resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} engines: {node: ^14.18.0 || >=16.0.0} @@ -12314,6 +13247,10 @@ packages: resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} engines: {node: '>=12.0.0'} + tinyglobby@0.2.13: + resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} + engines: {node: '>=12.0.0'} + tinygradient@1.1.5: resolution: {integrity: sha512-8nIfc2vgQ4TeLnk2lFj4tRLvvJwEfQuabdsmvDdQPT0xlk9TaNtpGd6nNRxXoK6vQhN6RSzj+Cnp5tTQmpxmbw==} @@ -12325,6 +13262,10 @@ packages: resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} engines: {node: '>=14.0.0'} + tinyrainbow@2.0.0: + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} + engines: {node: '>=14.0.0'} + tinyspy@3.0.2: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} @@ -12401,6 +13342,12 @@ packages: peerDependencies: typescript: '>=4.2.0' + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + ts-dedent@2.2.0: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} @@ -12497,6 +13444,25 @@ packages: typescript: optional: true + tsup@8.5.0: + resolution: {integrity: sha512-VmBp77lWNQq6PfuMqCHD3xWl22vEoWsKajkF8t+yMBawlUS8JzEI+vOVMeuNZIuMML8qXRizFKi9oD5glKQVcQ==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7.36.0 + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.5.0' + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + tsutils-etc@1.4.2: resolution: {integrity: sha512-2Dn5SxTDOu6YWDNKcx1xu2YUy6PUeKrWZB/x2cQ8vY2+iz3JRembKn/iZ0JLT1ZudGNwQQvtFX9AwvRHbXuPUg==} hasBin: true @@ -12607,6 +13573,10 @@ packages: resolution: {integrity: sha512-yCxltHW07Nkhv/1F6wWBr8kz+5BGMfP+RbRSYFnegVb0qV/UMT0G0ElBloPVerqn4M2ZV80Ir1FtCcYv1cT6vQ==} engines: {node: '>=16'} + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + typed-array-buffer@1.0.3: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} @@ -12650,6 +13620,13 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' + typescript-eslint@8.32.1: + resolution: {integrity: sha512-D7el+eaDHAmXvrZBy1zpzSNIRqnCOrkwTgZxTu3MUqRWk8k0q9m9Ho4+vPf7iHtgUfrK/o8IZaEApsxPlHTFCg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + typescript@4.9.5: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} @@ -12665,6 +13642,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} + hasBin: true + typical@2.6.1: resolution: {integrity: sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg==} @@ -12709,8 +13691,8 @@ packages: undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - undici-types@6.20.0: - resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} undici@5.28.4: resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} @@ -12842,12 +13824,21 @@ packages: resolution: {integrity: sha512-5liCNPuJW8dqh3+DM6uNM2EI3MLLpCKp/KY+9pB5M2S2SR2qvvDHhKgBOaTWEbZTAws3CXfB0rKTIolWKL05VQ==} engines: {node: '>=14.0.0'} + unrs-resolver@1.7.2: + resolution: {integrity: sha512-BBKpaylOW8KbHsu378Zky/dGh4ckT/4NW/0SHRABdqRLcQJ2dAOjDo9g97p04sWflm0kqPqpUatxReNV/dqI5A==} + update-browserslist-db@1.1.1: resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + update-check@1.5.4: resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==} @@ -13011,6 +14002,11 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true + vite-node@3.1.3: + resolution: {integrity: sha512-uHV4plJ2IxCl4u1up1FQRrqclylKAogbtBfOTwcuJ28xFi+89PZ57BRh+naIRvH70HPwxy5QHYzg1OrEaC7AbA==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + vite-plugin-dts@3.9.1: resolution: {integrity: sha512-rVp2KM9Ue22NGWB8dNtWEr+KekN3rIgz1tWD050QnRGlriUCmaDwa7qA5zDEjbXg5lAXhYMSBJtx3q3hQIJZSg==} engines: {node: ^14.18.0 || >=16.0.0} @@ -13082,12 +14078,46 @@ packages: jsdom: optional: true + vitest@3.1.3: + resolution: {integrity: sha512-188iM4hAHQ0km23TN/adso1q5hhwKqUpv+Sd6p5sOuh6FhQnRNW3IsiIpvxqahtBabsJ2SLZgmGSpcYK4wQYJw==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/debug': ^4.1.12 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 3.1.3 + '@vitest/ui': 3.1.3 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/debug': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + vscode-oniguruma@1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} vscode-textmate@8.0.0: resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} + vue-eslint-parser@10.1.3: + resolution: {integrity: sha512-dbCBnd2e02dYWsXoqX5yKUZlOt+ExIpq7hmHKPb5ZqKcjf++Eo0hMseFTZMLKThrUk61m+Uv6A2YSBve6ZvuDQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + vue-eslint-parser@9.4.3: resolution: {integrity: sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==} engines: {node: ^14.17.0 || >=16.0.0} @@ -13338,8 +14368,8 @@ packages: engines: {node: '>=8.0.0'} hasBin: true - zlib-sync@0.1.9: - resolution: {integrity: sha512-DinB43xCjVwIBDpaIvQqHbmDsnYnSt6HJ/yiB2MZQGTqgPcwBSZqLkimXwK8BvdjQ/MaZysb5uEenImncqvCqQ==} + zlib-sync@0.1.10: + resolution: {integrity: sha512-t7/pYg5tLBznL1RuhmbAt8rNp5tbhr+TSrJFnMkRtrGIaPJZ6Dc0uR4u3OoQI2d6cGlVI62E3Gy6gwkxyIqr/w==} zod-validation-error@2.1.0: resolution: {integrity: sha512-VJh93e2wb4c3tWtGgTa0OF/dTt/zoPCPzXq4V11ZjxmEAFaPi/Zss1xIZdEB5RD8GD00U0/iVXgqkF77RV7pdQ==} @@ -13393,6 +14423,8 @@ snapshots: '@angular-eslint/bundled-angular-compiler@17.5.3': {} + '@angular-eslint/bundled-angular-compiler@19.4.0': {} + '@angular-eslint/eslint-plugin-template@17.5.3(eslint@8.57.1)(typescript@5.5.4)': dependencies: '@angular-eslint/bundled-angular-compiler': 17.5.3 @@ -13406,6 +14438,17 @@ snapshots: transitivePeerDependencies: - supports-color + '@angular-eslint/eslint-plugin-template@19.4.0(@typescript-eslint/types@8.32.1)(@typescript-eslint/utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@angular-eslint/bundled-angular-compiler': 19.4.0 + '@angular-eslint/utils': 19.4.0(@typescript-eslint/utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + aria-query: 5.3.2 + axobject-query: 4.1.0 + eslint: 9.27.0(jiti@2.4.2) + typescript: 5.8.3 + '@angular-eslint/eslint-plugin@17.5.3(eslint@8.57.1)(typescript@5.5.4)': dependencies: '@angular-eslint/bundled-angular-compiler': 17.5.3 @@ -13416,6 +14459,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@angular-eslint/eslint-plugin@19.4.0(@typescript-eslint/utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@angular-eslint/bundled-angular-compiler': 19.4.0 + '@angular-eslint/utils': 19.4.0(@typescript-eslint/utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + typescript: 5.8.3 + '@angular-eslint/template-parser@17.5.3(eslint@8.57.1)(typescript@5.5.4)': dependencies: '@angular-eslint/bundled-angular-compiler': 17.5.3 @@ -13423,6 +14474,13 @@ snapshots: eslint-scope: 8.2.0 typescript: 5.5.4 + '@angular-eslint/template-parser@19.4.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@angular-eslint/bundled-angular-compiler': 19.4.0 + eslint: 9.27.0(jiti@2.4.2) + eslint-scope: 8.2.0 + typescript: 5.8.3 + '@angular-eslint/utils@17.5.3(eslint@8.57.1)(typescript@5.5.4)': dependencies: '@angular-eslint/bundled-angular-compiler': 17.5.3 @@ -13432,6 +14490,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@angular-eslint/utils@19.4.0(@typescript-eslint/utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@angular-eslint/bundled-angular-compiler': 19.4.0 + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + typescript: 5.8.3 + '@antfu/install-pkg@0.4.1': dependencies: package-manager-detector: 0.2.8 @@ -13729,6 +14794,8 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} + '@bcoe/v8-coverage@1.0.2': {} + '@code-hike/lighter@0.7.0': {} '@code-hike/mdx@0.9.0(encoding@0.1.13)(react@18.3.1)': @@ -13739,11 +14806,11 @@ snapshots: transitivePeerDependencies: - encoding - '@commitlint/cli@19.6.1(@types/node@22.10.2)(typescript@5.5.4)': + '@commitlint/cli@19.6.1(@types/node@22.15.2)(typescript@5.5.4)': dependencies: '@commitlint/format': 19.5.0 '@commitlint/lint': 19.6.0 - '@commitlint/load': 19.6.1(@types/node@22.10.2)(typescript@5.5.4) + '@commitlint/load': 19.6.1(@types/node@22.15.2)(typescript@5.5.4) '@commitlint/read': 19.5.0 '@commitlint/types': 19.5.0 tinyexec: 0.3.2 @@ -13791,7 +14858,7 @@ snapshots: '@commitlint/rules': 19.6.0 '@commitlint/types': 19.5.0 - '@commitlint/load@19.6.1(@types/node@22.10.2)(typescript@5.5.4)': + '@commitlint/load@19.6.1(@types/node@22.15.2)(typescript@5.5.4)': dependencies: '@commitlint/config-validator': 19.5.0 '@commitlint/execute-rule': 19.5.0 @@ -13799,7 +14866,7 @@ snapshots: '@commitlint/types': 19.5.0 chalk: 5.4.1 cosmiconfig: 9.0.0(typescript@5.5.4) - cosmiconfig-typescript-loader: 6.1.0(@types/node@22.10.2)(cosmiconfig@9.0.0(typescript@5.5.4))(typescript@5.5.4) + cosmiconfig-typescript-loader: 6.1.0(@types/node@22.15.2)(cosmiconfig@9.0.0(typescript@5.5.4))(typescript@5.5.4) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -13950,13 +15017,13 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.9 - '@definitelytyped/header-parser@0.2.16': + '@definitelytyped/header-parser@0.2.19': dependencies: - '@definitelytyped/typescript-versions': 0.1.6 + '@definitelytyped/typescript-versions': 0.1.8 '@definitelytyped/utils': 0.1.8 semver: 7.6.3 - '@definitelytyped/typescript-versions@0.1.6': {} + '@definitelytyped/typescript-versions@0.1.8': {} '@definitelytyped/utils@0.1.8': dependencies: @@ -14051,11 +15118,27 @@ snapshots: '@effect-ts/system@0.57.5': {} + '@emnapi/core@1.4.3': + dependencies: + '@emnapi/wasi-threads': 1.0.2 + tslib: 2.8.1 + optional: true + '@emnapi/runtime@1.3.1': dependencies: tslib: 2.8.1 optional: true + '@emnapi/runtime@1.4.3': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.0.2': + dependencies: + tslib: 2.8.1 + optional: true + '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@18.3.1)': dependencies: react: 18.3.1 @@ -14066,6 +15149,15 @@ snapshots: esquery: 1.6.0 jsdoc-type-pratt-parser: 4.0.0 + '@es-joy/jsdoccomment@0.50.1': + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 1.0.7 + '@typescript-eslint/types': 8.19.0 + comment-parser: 1.4.1 + esquery: 1.6.0 + jsdoc-type-pratt-parser: 4.1.0 + '@esbuild-plugins/node-resolve@0.1.4(esbuild@0.18.20)': dependencies: '@types/resolve': 1.20.6 @@ -14085,6 +15177,9 @@ snapshots: '@esbuild/aix-ppc64@0.24.2': optional: true + '@esbuild/aix-ppc64@0.25.4': + optional: true + '@esbuild/android-arm64@0.18.20': optional: true @@ -14097,6 +15192,9 @@ snapshots: '@esbuild/android-arm64@0.24.2': optional: true + '@esbuild/android-arm64@0.25.4': + optional: true + '@esbuild/android-arm@0.18.20': optional: true @@ -14109,6 +15207,9 @@ snapshots: '@esbuild/android-arm@0.24.2': optional: true + '@esbuild/android-arm@0.25.4': + optional: true + '@esbuild/android-x64@0.18.20': optional: true @@ -14121,6 +15222,9 @@ snapshots: '@esbuild/android-x64@0.24.2': optional: true + '@esbuild/android-x64@0.25.4': + optional: true + '@esbuild/darwin-arm64@0.18.20': optional: true @@ -14133,6 +15237,9 @@ snapshots: '@esbuild/darwin-arm64@0.24.2': optional: true + '@esbuild/darwin-arm64@0.25.4': + optional: true + '@esbuild/darwin-x64@0.18.20': optional: true @@ -14145,6 +15252,9 @@ snapshots: '@esbuild/darwin-x64@0.24.2': optional: true + '@esbuild/darwin-x64@0.25.4': + optional: true + '@esbuild/freebsd-arm64@0.18.20': optional: true @@ -14157,6 +15267,9 @@ snapshots: '@esbuild/freebsd-arm64@0.24.2': optional: true + '@esbuild/freebsd-arm64@0.25.4': + optional: true + '@esbuild/freebsd-x64@0.18.20': optional: true @@ -14169,6 +15282,9 @@ snapshots: '@esbuild/freebsd-x64@0.24.2': optional: true + '@esbuild/freebsd-x64@0.25.4': + optional: true + '@esbuild/linux-arm64@0.18.20': optional: true @@ -14181,6 +15297,9 @@ snapshots: '@esbuild/linux-arm64@0.24.2': optional: true + '@esbuild/linux-arm64@0.25.4': + optional: true + '@esbuild/linux-arm@0.18.20': optional: true @@ -14193,6 +15312,9 @@ snapshots: '@esbuild/linux-arm@0.24.2': optional: true + '@esbuild/linux-arm@0.25.4': + optional: true + '@esbuild/linux-ia32@0.18.20': optional: true @@ -14205,6 +15327,9 @@ snapshots: '@esbuild/linux-ia32@0.24.2': optional: true + '@esbuild/linux-ia32@0.25.4': + optional: true + '@esbuild/linux-loong64@0.18.20': optional: true @@ -14217,6 +15342,9 @@ snapshots: '@esbuild/linux-loong64@0.24.2': optional: true + '@esbuild/linux-loong64@0.25.4': + optional: true + '@esbuild/linux-mips64el@0.18.20': optional: true @@ -14229,6 +15357,9 @@ snapshots: '@esbuild/linux-mips64el@0.24.2': optional: true + '@esbuild/linux-mips64el@0.25.4': + optional: true + '@esbuild/linux-ppc64@0.18.20': optional: true @@ -14241,6 +15372,9 @@ snapshots: '@esbuild/linux-ppc64@0.24.2': optional: true + '@esbuild/linux-ppc64@0.25.4': + optional: true + '@esbuild/linux-riscv64@0.18.20': optional: true @@ -14253,6 +15387,9 @@ snapshots: '@esbuild/linux-riscv64@0.24.2': optional: true + '@esbuild/linux-riscv64@0.25.4': + optional: true + '@esbuild/linux-s390x@0.18.20': optional: true @@ -14265,6 +15402,9 @@ snapshots: '@esbuild/linux-s390x@0.24.2': optional: true + '@esbuild/linux-s390x@0.25.4': + optional: true + '@esbuild/linux-x64@0.18.20': optional: true @@ -14277,9 +15417,15 @@ snapshots: '@esbuild/linux-x64@0.24.2': optional: true + '@esbuild/linux-x64@0.25.4': + optional: true + '@esbuild/netbsd-arm64@0.24.2': optional: true + '@esbuild/netbsd-arm64@0.25.4': + optional: true + '@esbuild/netbsd-x64@0.18.20': optional: true @@ -14292,12 +15438,18 @@ snapshots: '@esbuild/netbsd-x64@0.24.2': optional: true + '@esbuild/netbsd-x64@0.25.4': + optional: true + '@esbuild/openbsd-arm64@0.23.1': optional: true '@esbuild/openbsd-arm64@0.24.2': optional: true + '@esbuild/openbsd-arm64@0.25.4': + optional: true + '@esbuild/openbsd-x64@0.18.20': optional: true @@ -14310,6 +15462,9 @@ snapshots: '@esbuild/openbsd-x64@0.24.2': optional: true + '@esbuild/openbsd-x64@0.25.4': + optional: true + '@esbuild/sunos-x64@0.18.20': optional: true @@ -14322,6 +15477,9 @@ snapshots: '@esbuild/sunos-x64@0.24.2': optional: true + '@esbuild/sunos-x64@0.25.4': + optional: true + '@esbuild/win32-arm64@0.18.20': optional: true @@ -14334,6 +15492,9 @@ snapshots: '@esbuild/win32-arm64@0.24.2': optional: true + '@esbuild/win32-arm64@0.25.4': + optional: true + '@esbuild/win32-ia32@0.18.20': optional: true @@ -14346,6 +15507,9 @@ snapshots: '@esbuild/win32-ia32@0.24.2': optional: true + '@esbuild/win32-ia32@0.25.4': + optional: true + '@esbuild/win32-x64@0.18.20': optional: true @@ -14358,13 +15522,50 @@ snapshots: '@esbuild/win32-x64@0.24.2': optional: true + '@esbuild/win32-x64@0.25.4': + optional: true + '@eslint-community/eslint-utils@4.4.1(eslint@8.57.1)': dependencies: eslint: 8.57.1 eslint-visitor-keys: 3.4.3 + '@eslint-community/eslint-utils@4.4.1(eslint@9.27.0(jiti@2.4.2))': + dependencies: + eslint: 9.27.0(jiti@2.4.2) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/eslint-utils@4.7.0(eslint@8.57.1)': + dependencies: + eslint: 8.57.1 + eslint-visitor-keys: 3.4.3 + optional: true + + '@eslint-community/eslint-utils@4.7.0(eslint@9.27.0(jiti@2.4.2))': + dependencies: + eslint: 9.27.0(jiti@2.4.2) + eslint-visitor-keys: 3.4.3 + '@eslint-community/regexpp@4.12.1': {} + '@eslint/compat@1.2.9(eslint@9.27.0(jiti@2.4.2))': + optionalDependencies: + eslint: 9.27.0(jiti@2.4.2) + + '@eslint/config-array@0.20.0': + dependencies: + '@eslint/object-schema': 2.1.6 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.2.2': {} + + '@eslint/core@0.14.0': + dependencies: + '@types/json-schema': 7.0.15 + '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 @@ -14379,8 +15580,31 @@ snapshots: transitivePeerDependencies: - supports-color + '@eslint/eslintrc@3.3.1': + dependencies: + ajv: 6.12.6 + debug: 4.4.0 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + '@eslint/js@8.57.1': {} + '@eslint/js@9.27.0': {} + + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.3.1': + dependencies: + '@eslint/core': 0.14.0 + levn: 0.4.1 + '@fal-works/esbuild-plugin-global-externals@2.1.2': {} '@fastify/busboy@2.1.1': {} @@ -14474,6 +15698,13 @@ snapshots: protobufjs: 7.4.0 yargs: 17.7.2 + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + '@humanwhocodes/config-array@0.13.0': dependencies: '@humanwhocodes/object-schema': 2.0.3 @@ -14486,6 +15717,10 @@ snapshots: '@humanwhocodes/object-schema@2.0.3': {} + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.3': {} + '@hutson/parse-repository-url@5.0.0': {} '@iconify/types@2.0.0': {} @@ -14882,9 +16117,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@mdx-js/mdx@3.1.0(acorn@8.14.0)': + '@mdx-js/mdx@3.1.0(acorn@8.14.1)': dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdx': 2.0.13 @@ -14896,7 +16131,7 @@ snapshots: hast-util-to-jsx-runtime: 2.3.2 markdown-extensions: 2.0.0 recma-build-jsx: 1.0.0 - recma-jsx: 1.0.0(acorn@8.14.0) + recma-jsx: 1.0.0(acorn@8.14.1) recma-stringify: 1.0.0 rehype-recma: 1.0.0 remark-mdx: 3.1.0 @@ -14941,11 +16176,11 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor-model@7.28.13(@types/node@22.10.2)': + '@microsoft/api-extractor-model@7.28.13(@types/node@22.15.2)': dependencies: '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2(patch_hash=35av6rrndvjtr2u2jso66jatbu) - '@rushstack/node-core-library': 4.0.2(@types/node@22.10.2) + '@rushstack/node-core-library': 4.0.2(@types/node@22.15.2) transitivePeerDependencies: - '@types/node' optional: true @@ -14987,15 +16222,15 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.43.0(@types/node@22.10.2)': + '@microsoft/api-extractor@7.43.0(@types/node@22.15.2)': dependencies: - '@microsoft/api-extractor-model': 7.28.13(@types/node@22.10.2) + '@microsoft/api-extractor-model': 7.28.13(@types/node@22.15.2) '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2(patch_hash=35av6rrndvjtr2u2jso66jatbu) - '@rushstack/node-core-library': 4.0.2(@types/node@22.10.2) + '@rushstack/node-core-library': 4.0.2(@types/node@22.15.2) '@rushstack/rig-package': 0.5.2 - '@rushstack/terminal': 0.10.0(@types/node@22.10.2) - '@rushstack/ts-command-line': 4.19.1(@types/node@22.10.2) + '@rushstack/terminal': 0.10.0(@types/node@22.15.2) + '@rushstack/ts-command-line': 4.19.1(@types/node@22.15.2) lodash: 4.17.21 minimatch: 3.0.8 resolve: 1.22.10 @@ -15013,10 +16248,26 @@ snapshots: jju: 1.4.0 resolve: 1.19.0 + '@microsoft/tsdoc-config@0.17.1': + dependencies: + '@microsoft/tsdoc': 0.15.1 + ajv: 8.12.0 + jju: 1.4.0 + resolve: 1.22.10 + '@microsoft/tsdoc@0.14.2': {} + '@microsoft/tsdoc@0.15.1': {} + '@msgpack/msgpack@3.0.0-beta2': {} + '@napi-rs/wasm-runtime@0.2.10': + dependencies: + '@emnapi/core': 1.4.3 + '@emnapi/runtime': 1.4.3 + '@tybys/wasm-util': 0.9.0 + optional: true + '@neondatabase/serverless@0.9.5': dependencies: '@types/pg': 8.11.6 @@ -15029,6 +16280,10 @@ snapshots: dependencies: glob: 10.3.10 + '@next/eslint-plugin-next@15.3.2': + dependencies: + fast-glob: 3.3.1 + '@next/swc-darwin-arm64@14.2.22': optional: true @@ -15337,6 +16592,8 @@ snapshots: '@pkgr/core@0.1.1': {} + '@pkgr/core@0.2.4': {} + '@polka/url@1.0.0-next.28': {} '@protobufjs/aspromise@1.1.2': {} @@ -16959,71 +18216,131 @@ snapshots: estree-walker: 2.0.2 picomatch: 2.3.1 - '@rollup/pluginutils@5.1.4(rollup@4.29.1)': + '@rollup/pluginutils@5.1.4(rollup@4.40.2)': dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.29.1 + rollup: 4.40.2 '@rollup/rollup-android-arm-eabi@4.29.1': optional: true + '@rollup/rollup-android-arm-eabi@4.40.2': + optional: true + '@rollup/rollup-android-arm64@4.29.1': optional: true + '@rollup/rollup-android-arm64@4.40.2': + optional: true + '@rollup/rollup-darwin-arm64@4.29.1': optional: true + '@rollup/rollup-darwin-arm64@4.40.2': + optional: true + '@rollup/rollup-darwin-x64@4.29.1': optional: true + '@rollup/rollup-darwin-x64@4.40.2': + optional: true + '@rollup/rollup-freebsd-arm64@4.29.1': optional: true + '@rollup/rollup-freebsd-arm64@4.40.2': + optional: true + '@rollup/rollup-freebsd-x64@4.29.1': optional: true + '@rollup/rollup-freebsd-x64@4.40.2': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.29.1': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.40.2': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.29.1': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.40.2': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.29.1': optional: true + '@rollup/rollup-linux-arm64-gnu@4.40.2': + optional: true + '@rollup/rollup-linux-arm64-musl@4.29.1': optional: true + '@rollup/rollup-linux-arm64-musl@4.40.2': + optional: true + '@rollup/rollup-linux-loongarch64-gnu@4.29.1': optional: true + '@rollup/rollup-linux-loongarch64-gnu@4.40.2': + optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.29.1': optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.29.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.29.1': + '@rollup/rollup-linux-riscv64-gnu@4.40.2': optional: true - '@rollup/rollup-linux-x64-gnu@4.29.1': + '@rollup/rollup-linux-riscv64-musl@4.40.2': optional: true - '@rollup/rollup-linux-x64-musl@4.29.1': + '@rollup/rollup-linux-s390x-gnu@4.29.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.29.1': + '@rollup/rollup-linux-s390x-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.29.1': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-x64-musl@4.29.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.40.2': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.29.1': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.40.2': optional: true '@rollup/rollup-win32-ia32-msvc@4.29.1': optional: true + '@rollup/rollup-win32-ia32-msvc@4.40.2': + optional: true + '@rollup/rollup-win32-x64-msvc@4.29.1': optional: true + '@rollup/rollup-win32-x64-msvc@4.40.2': + optional: true + '@rushstack/eslint-patch@1.10.4': {} '@rushstack/node-core-library@4.0.2(@types/node@18.17.9)': @@ -17049,7 +18366,7 @@ snapshots: optionalDependencies: '@types/node': 20.17.10 - '@rushstack/node-core-library@4.0.2(@types/node@22.10.2)': + '@rushstack/node-core-library@4.0.2(@types/node@22.15.2)': dependencies: fs-extra: 7.0.1 import-lazy: 4.0.0 @@ -17058,7 +18375,7 @@ snapshots: semver: 7.5.4 z-schema: 5.0.5 optionalDependencies: - '@types/node': 22.10.2 + '@types/node': 22.15.2 optional: true '@rushstack/node-core-library@4.1.0(@types/node@20.17.10)': @@ -17097,12 +18414,12 @@ snapshots: optionalDependencies: '@types/node': 20.17.10 - '@rushstack/terminal@0.10.0(@types/node@22.10.2)': + '@rushstack/terminal@0.10.0(@types/node@22.15.2)': dependencies: - '@rushstack/node-core-library': 4.0.2(@types/node@22.10.2) + '@rushstack/node-core-library': 4.0.2(@types/node@22.15.2) supports-color: 8.1.1 optionalDependencies: - '@types/node': 22.10.2 + '@types/node': 22.15.2 optional: true '@rushstack/ts-command-line@4.17.1': @@ -17131,9 +18448,9 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@rushstack/ts-command-line@4.19.1(@types/node@22.10.2)': + '@rushstack/ts-command-line@4.19.1(@types/node@22.15.2)': dependencies: - '@rushstack/terminal': 0.10.0(@types/node@22.10.2) + '@rushstack/terminal': 0.10.0(@types/node@22.15.2) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 @@ -17573,10 +18890,10 @@ snapshots: react-dom: 18.3.1(react@18.3.1) storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) - '@storybook/react-vite@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.29.1)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(typescript@5.5.4)(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0))': + '@storybook/react-vite@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.40.2)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(typescript@5.5.4)(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0))': dependencies: '@joshwooding/vite-plugin-react-docgen-typescript': 0.4.2(typescript@5.5.4)(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0)) - '@rollup/pluginutils': 5.1.4(rollup@4.29.1) + '@rollup/pluginutils': 5.1.4(rollup@4.40.2) '@storybook/builder-vite': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0)) '@storybook/react': 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(typescript@5.5.4) find-up: 5.0.0 @@ -17675,6 +18992,36 @@ snapshots: '@types/express': 4.17.21 file-system-cache: 2.3.0 + '@stylistic/eslint-plugin-jsx@4.2.0(eslint@9.27.0(jiti@2.4.2))': + dependencies: + eslint: 9.27.0(jiti@2.4.2) + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + estraverse: 5.3.0 + picomatch: 4.0.2 + + '@stylistic/eslint-plugin-ts@4.2.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@stylistic/eslint-plugin@4.2.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + estraverse: 5.3.0 + picomatch: 4.0.2 + transitivePeerDependencies: + - supports-color + - typescript + '@swc/counter@0.1.3': {} '@swc/helpers@0.5.11': @@ -17813,9 +19160,14 @@ snapshots: semver: 7.6.2 update-check: 1.5.4 + '@tybys/wasm-util@0.9.0': + dependencies: + tslib: 2.8.1 + optional: true + '@types/acorn@4.0.6': dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 '@types/argparse@1.0.38': {} @@ -17869,20 +19221,27 @@ snapshots: '@types/eslint@7.29.0': dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 '@types/json-schema': 7.0.15 '@types/eslint@8.56.12': dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 + '@types/json-schema': 7.0.15 + + '@types/eslint@9.6.1': + dependencies: + '@types/estree': 1.0.7 '@types/json-schema': 7.0.15 '@types/estree-jsx@1.0.5': dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 '@types/estree@1.0.6': {} + '@types/estree@1.0.7': {} + '@types/express-serve-static-core@4.19.6': dependencies: '@types/node': 20.17.10 @@ -18007,9 +19366,9 @@ snapshots: dependencies: undici-types: 6.19.8 - '@types/node@22.10.2': + '@types/node@22.15.2': dependencies: - undici-types: 6.20.0 + undici-types: 6.21.0 '@types/normalize-package-data@2.4.4': {} @@ -18137,6 +19496,23 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.32.1 + eslint: 9.27.0(jiti@2.4.2) + graphemer: 1.4.0 + ignore: 7.0.4 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/experimental-utils@5.62.0(eslint@8.57.1)(typescript@5.5.4)': dependencies: '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.5.4) @@ -18145,6 +19521,14 @@ snapshots: - supports-color - typescript + '@typescript-eslint/experimental-utils@5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + transitivePeerDependencies: + - supports-color + - typescript + '@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.5.4)': dependencies: '@typescript-eslint/scope-manager': 7.18.0 @@ -18170,6 +19554,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.32.1 + debug: 4.4.0 + eslint: 9.27.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/scope-manager@5.62.0': dependencies: '@typescript-eslint/types': 5.62.0 @@ -18190,6 +19586,11 @@ snapshots: '@typescript-eslint/types': 8.19.0 '@typescript-eslint/visitor-keys': 8.19.0 + '@typescript-eslint/scope-manager@8.32.1': + dependencies: + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/visitor-keys': 8.32.1 + '@typescript-eslint/type-utils@7.11.0(eslint@8.57.1)(typescript@5.5.4)': dependencies: '@typescript-eslint/typescript-estree': 7.11.0(typescript@5.5.4) @@ -18225,6 +19626,17 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/type-utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + debug: 4.4.0 + eslint: 9.27.0(jiti@2.4.2) + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/types@5.62.0': {} '@typescript-eslint/types@7.11.0': {} @@ -18233,6 +19645,8 @@ snapshots: '@typescript-eslint/types@8.19.0': {} + '@typescript-eslint/types@8.32.1': {} + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.5.4)': dependencies: '@typescript-eslint/types': 5.62.0 @@ -18247,6 +19661,20 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.8.3)': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.4.0 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.6.3 + tsutils: 3.21.0(typescript@5.8.3) + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/typescript-estree@7.11.0(typescript@5.5.4)': dependencies: '@typescript-eslint/types': 7.11.0 @@ -18291,6 +19719,35 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/typescript-estree@8.32.1(typescript@5.5.4)': + dependencies: + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/visitor-keys': 8.32.1 + debug: 4.4.0 + fast-glob: 3.3.2 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 2.1.0(typescript@5.5.4) + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + optional: true + + '@typescript-eslint/typescript-estree@8.32.1(typescript@5.8.3)': + dependencies: + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/visitor-keys': 8.32.1 + debug: 4.4.0 + fast-glob: 3.3.2 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.5.4)': dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) @@ -18306,6 +19763,21 @@ snapshots: - supports-color - typescript + '@typescript-eslint/utils@5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.27.0(jiti@2.4.2)) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + eslint-scope: 5.1.1 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + - typescript + '@typescript-eslint/utils@7.11.0(eslint@8.57.1)(typescript@5.5.4)': dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) @@ -18339,6 +19811,29 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/utils@8.32.1(eslint@8.57.1)(typescript@5.5.4)': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.5.4) + eslint: 8.57.1 + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + optional: true + + '@typescript-eslint/utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/visitor-keys@5.62.0': dependencies: '@typescript-eslint/types': 5.62.0 @@ -18359,44 +19854,49 @@ snapshots: '@typescript-eslint/types': 8.19.0 eslint-visitor-keys: 4.2.0 + '@typescript-eslint/visitor-keys@8.32.1': + dependencies: + '@typescript-eslint/types': 8.32.1 + eslint-visitor-keys: 4.2.0 + '@ungap/structured-clone@1.2.1': {} - '@unocss/astro@0.60.4(rollup@4.29.1)(vite@5.4.11(@types/node@18.19.68)(terser@5.37.0))': + '@unocss/astro@0.60.4(rollup@4.40.2)(vite@5.4.11(@types/node@18.19.68)(terser@5.37.0))': dependencies: '@unocss/core': 0.60.4 '@unocss/reset': 0.60.4 - '@unocss/vite': 0.60.4(rollup@4.29.1)(vite@5.4.11(@types/node@18.19.68)(terser@5.37.0)) + '@unocss/vite': 0.60.4(rollup@4.40.2)(vite@5.4.11(@types/node@18.19.68)(terser@5.37.0)) optionalDependencies: vite: 5.4.11(@types/node@18.19.68)(terser@5.37.0) transitivePeerDependencies: - rollup - '@unocss/astro@0.60.4(rollup@4.29.1)(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0))': + '@unocss/astro@0.60.4(rollup@4.40.2)(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0))': dependencies: '@unocss/core': 0.60.4 '@unocss/reset': 0.60.4 - '@unocss/vite': 0.60.4(rollup@4.29.1)(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0)) + '@unocss/vite': 0.60.4(rollup@4.40.2)(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0)) optionalDependencies: vite: 5.4.11(@types/node@20.17.10)(terser@5.37.0) transitivePeerDependencies: - rollup - '@unocss/astro@0.65.3(rollup@4.29.1)(vite@5.4.11(@types/node@22.10.2)(terser@5.37.0))': + '@unocss/astro@0.65.3(rollup@4.40.2)(vite@5.4.11(@types/node@22.15.2)(terser@5.37.0))': dependencies: '@unocss/core': 0.65.3 '@unocss/reset': 0.65.3 - '@unocss/vite': 0.65.3(rollup@4.29.1)(vite@5.4.11(@types/node@22.10.2)(terser@5.37.0)) + '@unocss/vite': 0.65.3(rollup@4.40.2)(vite@5.4.11(@types/node@22.15.2)(terser@5.37.0)) optionalDependencies: - vite: 5.4.11(@types/node@22.10.2)(terser@5.37.0) + vite: 5.4.11(@types/node@22.15.2)(terser@5.37.0) transitivePeerDependencies: - rollup - supports-color - vue - '@unocss/cli@0.60.4(rollup@4.29.1)': + '@unocss/cli@0.60.4(rollup@4.40.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.4(rollup@4.29.1) + '@rollup/pluginutils': 5.1.4(rollup@4.40.2) '@unocss/config': 0.60.4 '@unocss/core': 0.60.4 '@unocss/preset-uno': 0.60.4 @@ -18411,10 +19911,10 @@ snapshots: transitivePeerDependencies: - rollup - '@unocss/cli@0.65.3(rollup@4.29.1)': + '@unocss/cli@0.65.3(rollup@4.40.2)': dependencies: '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.4(rollup@4.29.1) + '@rollup/pluginutils': 5.1.4(rollup@4.40.2) '@unocss/config': 0.65.3 '@unocss/core': 0.65.3 '@unocss/preset-uno': 0.65.3 @@ -18667,10 +20167,10 @@ snapshots: dependencies: '@unocss/core': 0.65.3 - '@unocss/vite@0.60.4(rollup@4.29.1)(vite@5.4.11(@types/node@18.19.68)(terser@5.37.0))': + '@unocss/vite@0.60.4(rollup@4.40.2)(vite@5.4.11(@types/node@18.19.68)(terser@5.37.0))': dependencies: '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.4(rollup@4.29.1) + '@rollup/pluginutils': 5.1.4(rollup@4.40.2) '@unocss/config': 0.60.4 '@unocss/core': 0.60.4 '@unocss/inspector': 0.60.4 @@ -18683,10 +20183,10 @@ snapshots: transitivePeerDependencies: - rollup - '@unocss/vite@0.60.4(rollup@4.29.1)(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0))': + '@unocss/vite@0.60.4(rollup@4.40.2)(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0))': dependencies: '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.4(rollup@4.29.1) + '@rollup/pluginutils': 5.1.4(rollup@4.40.2) '@unocss/config': 0.60.4 '@unocss/core': 0.60.4 '@unocss/inspector': 0.60.4 @@ -18699,22 +20199,75 @@ snapshots: transitivePeerDependencies: - rollup - '@unocss/vite@0.65.3(rollup@4.29.1)(vite@5.4.11(@types/node@22.10.2)(terser@5.37.0))': + '@unocss/vite@0.65.3(rollup@4.40.2)(vite@5.4.11(@types/node@22.15.2)(terser@5.37.0))': dependencies: '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.4(rollup@4.29.1) + '@rollup/pluginutils': 5.1.4(rollup@4.40.2) '@unocss/config': 0.65.3 '@unocss/core': 0.65.3 '@unocss/inspector': 0.65.3 chokidar: 3.6.0 magic-string: 0.30.17 tinyglobby: 0.2.10 - vite: 5.4.11(@types/node@22.10.2)(terser@5.37.0) + vite: 5.4.11(@types/node@22.15.2)(terser@5.37.0) transitivePeerDependencies: - rollup - supports-color - vue + '@unrs/resolver-binding-darwin-arm64@1.7.2': + optional: true + + '@unrs/resolver-binding-darwin-x64@1.7.2': + optional: true + + '@unrs/resolver-binding-freebsd-x64@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-arm-musleabihf@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-arm64-gnu@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-arm64-musl@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-ppc64-gnu@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-riscv64-gnu@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-riscv64-musl@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-s390x-gnu@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-x64-gnu@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-x64-musl@1.7.2': + optional: true + + '@unrs/resolver-binding-wasm32-wasi@1.7.2': + dependencies: + '@napi-rs/wasm-runtime': 0.2.10 + optional: true + + '@unrs/resolver-binding-win32-arm64-msvc@1.7.2': + optional: true + + '@unrs/resolver-binding-win32-ia32-msvc@1.7.2': + optional: true + + '@unrs/resolver-binding-win32-x64-msvc@1.7.2': + optional: true + '@vercel/analytics@1.4.1(next@14.2.22(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': optionalDependencies: next: 14.2.22(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -18824,8 +20377,8 @@ snapshots: dependencies: '@mapbox/node-pre-gyp': 1.0.11(encoding@0.1.13) '@rollup/pluginutils': 4.2.1 - acorn: 8.14.0 - acorn-import-attributes: 1.9.5(acorn@8.14.0) + acorn: 8.14.1 + acorn-import-attributes: 1.9.5(acorn@8.14.1) async-sema: 3.1.1 bindings: 1.5.0 estree-walker: 2.0.2 @@ -19063,7 +20616,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@2.1.8(vitest@2.1.8(@edge-runtime/vm@3.2.0)(@types/node@22.10.2)(happy-dom@14.12.3)(terser@5.37.0))': + '@vitest/coverage-v8@2.1.8(vitest@2.1.8(@edge-runtime/vm@3.2.0)(@types/node@22.15.2)(happy-dom@14.12.3)(terser@5.37.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -19077,7 +20630,25 @@ snapshots: std-env: 3.8.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.8(@edge-runtime/vm@3.2.0)(@types/node@22.10.2)(happy-dom@14.12.3)(terser@5.37.0) + vitest: 2.1.8(@edge-runtime/vm@3.2.0)(@types/node@22.15.2)(happy-dom@14.12.3)(terser@5.37.0) + transitivePeerDependencies: + - supports-color + + '@vitest/coverage-v8@3.1.3(vitest@3.1.3(@edge-runtime/vm@3.2.0)(@types/debug@4.1.12)(@types/node@22.15.2)(happy-dom@14.12.3)(terser@5.37.0))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 1.0.2 + debug: 4.4.0 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.1.7 + magic-string: 0.30.17 + magicast: 0.3.5 + std-env: 3.9.0 + test-exclude: 7.0.1 + tinyrainbow: 2.0.0 + vitest: 3.1.3(@edge-runtime/vm@3.2.0)(@types/debug@4.1.12)(@types/node@22.15.2)(happy-dom@14.12.3)(terser@5.37.0) transitivePeerDependencies: - supports-color @@ -19095,6 +20666,13 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 + '@vitest/expect@3.1.3': + dependencies: + '@vitest/spy': 3.1.3 + '@vitest/utils': 3.1.3 + chai: 5.2.0 + tinyrainbow: 2.0.0 + '@vitest/mocker@2.1.8(vite@5.4.11(@types/node@18.19.68)(terser@5.37.0))': dependencies: '@vitest/spy': 2.1.8 @@ -19111,13 +20689,21 @@ snapshots: optionalDependencies: vite: 5.4.11(@types/node@20.17.10)(terser@5.37.0) - '@vitest/mocker@2.1.8(vite@5.4.11(@types/node@22.10.2)(terser@5.37.0))': + '@vitest/mocker@2.1.8(vite@5.4.11(@types/node@22.15.2)(terser@5.37.0))': dependencies: '@vitest/spy': 2.1.8 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 5.4.11(@types/node@22.10.2)(terser@5.37.0) + vite: 5.4.11(@types/node@22.15.2)(terser@5.37.0) + + '@vitest/mocker@3.1.3(vite@5.4.11(@types/node@22.15.2)(terser@5.37.0))': + dependencies: + '@vitest/spy': 3.1.3 + estree-walker: 3.0.3 + magic-string: 0.30.17 + optionalDependencies: + vite: 5.4.11(@types/node@22.15.2)(terser@5.37.0) '@vitest/pretty-format@2.0.5': dependencies: @@ -19127,17 +20713,32 @@ snapshots: dependencies: tinyrainbow: 1.2.0 + '@vitest/pretty-format@3.1.3': + dependencies: + tinyrainbow: 2.0.0 + '@vitest/runner@2.1.8': dependencies: '@vitest/utils': 2.1.8 pathe: 1.1.2 + '@vitest/runner@3.1.3': + dependencies: + '@vitest/utils': 3.1.3 + pathe: 2.0.3 + '@vitest/snapshot@2.1.8': dependencies: '@vitest/pretty-format': 2.1.8 magic-string: 0.30.17 pathe: 1.1.2 + '@vitest/snapshot@3.1.3': + dependencies: + '@vitest/pretty-format': 3.1.3 + magic-string: 0.30.17 + pathe: 2.0.3 + '@vitest/spy@2.0.5': dependencies: tinyspy: 3.0.2 @@ -19146,6 +20747,10 @@ snapshots: dependencies: tinyspy: 3.0.2 + '@vitest/spy@3.1.3': + dependencies: + tinyspy: 3.0.2 + '@vitest/utils@2.0.5': dependencies: '@vitest/pretty-format': 2.0.5 @@ -19159,6 +20764,12 @@ snapshots: loupe: 3.1.2 tinyrainbow: 1.2.0 + '@vitest/utils@3.1.3': + dependencies: + '@vitest/pretty-format': 3.1.3 + loupe: 3.1.3 + tinyrainbow: 2.0.0 + '@vladfrangu/async_event_emitter@2.4.6': {} '@volar/language-core@1.11.1': @@ -19212,19 +20823,19 @@ snapshots: abbrev@2.0.0: {} - acorn-import-attributes@1.9.5(acorn@8.14.0): + acorn-import-attributes@1.9.5(acorn@8.14.1): dependencies: - acorn: 8.14.0 + acorn: 8.14.1 - acorn-jsx@5.3.2(acorn@8.14.0): + acorn-jsx@5.3.2(acorn@8.14.1): dependencies: - acorn: 8.14.0 + acorn: 8.14.1 acorn-walk@8.3.4: dependencies: - acorn: 8.14.0 + acorn: 8.14.1 - acorn@8.14.0: {} + acorn@8.14.1: {} add-px-to-style@1.0.0: {} @@ -19260,6 +20871,13 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + ajv@8.12.0: + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 @@ -19500,11 +21118,33 @@ snapshots: transitivePeerDependencies: - supports-color + astro-eslint-parser@1.2.2: + dependencies: + '@astrojs/compiler': 2.10.3 + '@typescript-eslint/scope-manager': 8.19.0 + '@typescript-eslint/types': 8.19.0 + astrojs-compiler-sync: 1.1.1(@astrojs/compiler@2.10.3) + debug: 4.4.0 + entities: 6.0.0 + eslint-scope: 8.2.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + astrojs-compiler-sync@0.3.5(@astrojs/compiler@2.10.3): dependencies: '@astrojs/compiler': 2.10.3 synckit: 0.9.2 + astrojs-compiler-sync@1.1.1(@astrojs/compiler@2.10.3): + dependencies: + '@astrojs/compiler': 2.10.3 + synckit: 0.11.6 + async-listen@1.2.0: {} async-listen@3.0.0: {} @@ -19689,6 +21329,13 @@ snapshots: node-releases: 2.0.19 update-browserslist-db: 1.1.1(browserslist@4.24.3) + browserslist@4.24.5: + dependencies: + caniuse-lite: 1.0.30001718 + electron-to-chromium: 1.5.155 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.24.5) + bser@2.1.1: dependencies: node-int64: 0.4.0 @@ -19710,6 +21357,8 @@ snapshots: builtin-modules@3.3.0: {} + builtin-modules@4.0.0: {} + builtins@1.0.3: {} builtins@5.1.0: @@ -19721,6 +21370,11 @@ snapshots: esbuild: 0.24.2 load-tsconfig: 0.2.5 + bundle-require@5.1.0(esbuild@0.25.4): + dependencies: + esbuild: 0.25.4 + load-tsconfig: 0.2.5 + busboy@1.6.0: dependencies: streamsearch: 1.1.0 @@ -19761,6 +21415,11 @@ snapshots: es-errors: 1.3.0 function-bind: 1.1.2 + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + call-bind@1.0.8: dependencies: call-bind-apply-helpers: 1.0.1 @@ -19773,6 +21432,11 @@ snapshots: call-bind-apply-helpers: 1.0.1 get-intrinsic: 1.2.6 + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + callsites@3.1.0: {} camel-case@3.0.0: @@ -19801,6 +21465,8 @@ snapshots: caniuse-lite@1.0.30001690: {} + caniuse-lite@1.0.30001718: {} + caseless@0.12.0: {} catharsis@0.9.0: @@ -19817,6 +21483,14 @@ snapshots: loupe: 3.1.2 pathval: 2.0.0 + chai@5.2.0: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.2 + pathval: 2.0.0 + chalk@1.1.3: dependencies: ansi-styles: 2.2.1 @@ -20140,6 +21814,8 @@ snapshots: consola@3.3.3: {} + consola@3.4.2: {} + console-control-strings@1.1.0: {} constant-case@2.0.0: @@ -20268,15 +21944,19 @@ snapshots: dependencies: browserslist: 4.24.3 + core-js-compat@3.42.0: + dependencies: + browserslist: 4.24.5 + core-js-pure@3.39.0: {} core-util-is@1.0.2: {} core-util-is@1.0.3: {} - cosmiconfig-typescript-loader@6.1.0(@types/node@22.10.2)(cosmiconfig@9.0.0(typescript@5.5.4))(typescript@5.5.4): + cosmiconfig-typescript-loader@6.1.0(@types/node@22.15.2)(cosmiconfig@9.0.0(typescript@5.5.4))(typescript@5.5.4): dependencies: - '@types/node': 22.10.2 + '@types/node': 22.15.2 cosmiconfig: 9.0.0(typescript@5.5.4) jiti: 2.4.2 typescript: 5.5.4 @@ -20567,6 +22247,8 @@ snapshots: discord-api-types@0.37.97: {} + discord-api-types@0.38.8: {} + dlv@1.1.3: {} dmd@6.2.3: @@ -20616,7 +22298,7 @@ snapshots: dts-critic@3.3.11(typescript@5.5.4): dependencies: - '@definitelytyped/header-parser': 0.2.16 + '@definitelytyped/header-parser': 0.2.19 command-exists: 1.2.9 rimraf: 3.0.2 semver: 6.3.1 @@ -20626,8 +22308,8 @@ snapshots: dtslint@4.2.1(typescript@5.5.4): dependencies: - '@definitelytyped/header-parser': 0.2.16 - '@definitelytyped/typescript-versions': 0.1.6 + '@definitelytyped/header-parser': 0.2.19 + '@definitelytyped/typescript-versions': 0.1.8 '@definitelytyped/utils': 0.1.8 dts-critic: 3.3.11(typescript@5.5.4) fs-extra: 6.0.1 @@ -20665,6 +22347,8 @@ snapshots: signal-exit: 4.0.2 time-span: 4.0.0 + electron-to-chromium@1.5.155: {} + electron-to-chromium@1.5.76: {} emittery@0.13.1: {} @@ -20699,6 +22383,8 @@ snapshots: entities@4.5.0: {} + entities@6.0.0: {} + env-cmd@10.1.0: dependencies: commander: 4.1.1 @@ -20805,10 +22491,16 @@ snapshots: es-module-lexer@1.6.0: {} + es-module-lexer@1.7.0: {} + es-object-atoms@1.0.0: dependencies: es-errors: 1.3.0 + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + es-set-tostringtag@2.0.3: dependencies: get-intrinsic: 1.2.6 @@ -20835,7 +22527,7 @@ snapshots: esast-util-from-js@2.0.1: dependencies: '@types/estree-jsx': 1.0.5 - acorn: 8.14.0 + acorn: 8.14.1 esast-util-from-estree: 2.0.0 vfile-message: 4.0.2 @@ -21046,6 +22738,34 @@ snapshots: '@esbuild/win32-ia32': 0.24.2 '@esbuild/win32-x64': 0.24.2 + esbuild@0.25.4: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.4 + '@esbuild/android-arm': 0.25.4 + '@esbuild/android-arm64': 0.25.4 + '@esbuild/android-x64': 0.25.4 + '@esbuild/darwin-arm64': 0.25.4 + '@esbuild/darwin-x64': 0.25.4 + '@esbuild/freebsd-arm64': 0.25.4 + '@esbuild/freebsd-x64': 0.25.4 + '@esbuild/linux-arm': 0.25.4 + '@esbuild/linux-arm64': 0.25.4 + '@esbuild/linux-ia32': 0.25.4 + '@esbuild/linux-loong64': 0.25.4 + '@esbuild/linux-mips64el': 0.25.4 + '@esbuild/linux-ppc64': 0.25.4 + '@esbuild/linux-riscv64': 0.25.4 + '@esbuild/linux-s390x': 0.25.4 + '@esbuild/linux-x64': 0.25.4 + '@esbuild/netbsd-arm64': 0.25.4 + '@esbuild/netbsd-x64': 0.25.4 + '@esbuild/openbsd-arm64': 0.25.4 + '@esbuild/openbsd-x64': 0.25.4 + '@esbuild/sunos-x64': 0.25.4 + '@esbuild/win32-arm64': 0.25.4 + '@esbuild/win32-ia32': 0.25.4 + '@esbuild/win32-x64': 0.25.4 + escalade@3.2.0: {} escape-html@1.0.3: {} @@ -21071,7 +22791,17 @@ snapshots: eslint: 8.57.1 semver: 7.6.3 - eslint-config-neon@0.1.62(eslint@8.57.1)(typescript@5.5.4): + eslint-compat-utils@0.5.1(eslint@9.27.0(jiti@2.4.2)): + dependencies: + eslint: 9.27.0(jiti@2.4.2) + semver: 7.6.3 + + eslint-compat-utils@0.6.5(eslint@9.27.0(jiti@2.4.2)): + dependencies: + eslint: 9.27.0(jiti@2.4.2) + semver: 7.6.3 + + eslint-config-neon@0.1.62(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4): dependencies: '@angular-eslint/eslint-plugin': 17.5.3(eslint@8.57.1)(typescript@5.5.4) '@angular-eslint/eslint-plugin-template': 17.5.3(eslint@8.57.1)(typescript@5.5.4) @@ -21082,11 +22812,11 @@ snapshots: '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.5.4) astro-eslint-parser: 0.16.3 eslint-config-prettier: 9.1.0(eslint@8.57.1) - eslint-import-resolver-typescript: 3.7.0(eslint-plugin-i@2.29.1)(eslint@8.57.1) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-i@2.29.1)(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1) eslint-mdx: 3.1.5(eslint@8.57.1) eslint-plugin-astro: 0.33.1(eslint@8.57.1) eslint-plugin-cypress: 2.15.2(eslint@8.57.1) - eslint-plugin-import: eslint-plugin-i@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.5.4))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) + eslint-plugin-import: eslint-plugin-i@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.5.4))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) eslint-plugin-jsdoc: 48.11.0(eslint@8.57.1) eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) eslint-plugin-mdx: 3.1.5(eslint@8.57.1) @@ -21114,6 +22844,61 @@ snapshots: - svelte - typescript + eslint-config-neon@0.2.7(@typescript-eslint/types@8.32.1)(@typescript-eslint/utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@angular-eslint/eslint-plugin': 19.4.0(@typescript-eslint/utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@angular-eslint/eslint-plugin-template': 19.4.0(@typescript-eslint/types@8.32.1)(@typescript-eslint/utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@angular-eslint/template-parser': 19.4.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint/compat': 1.2.9(eslint@9.27.0(jiti@2.4.2)) + '@next/eslint-plugin-next': 15.3.2 + '@stylistic/eslint-plugin': 4.2.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@stylistic/eslint-plugin-jsx': 4.2.0(eslint@9.27.0(jiti@2.4.2)) + '@stylistic/eslint-plugin-ts': 4.2.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@types/lodash.merge': 4.6.9 + '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + astro-eslint-parser: 1.2.2 + eslint-config-prettier: 10.1.1(eslint@9.27.0(jiti@2.4.2)) + eslint-import-resolver-typescript: 4.3.4(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@9.27.0(jiti@2.4.2)) + eslint-mdx: 3.4.2(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-astro: 1.3.1(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-cypress: 4.3.0(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-import-x: 4.11.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint-plugin-jsdoc: 50.6.17(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-mdx: 3.4.2(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-n: 17.18.0(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-promise: 7.2.1(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-react: 7.37.5(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-react-hooks: 5.2.0(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-react-refresh: 0.4.20(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-rxjs: 5.0.3(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint-plugin-rxjs-angular: 2.0.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint-plugin-sonarjs: 3.0.2(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-svelte3: 4.0.0(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-tsdoc: 0.4.0 + eslint-plugin-typescript-sort-keys: 3.3.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint-plugin-unicorn: 57.0.0(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-vue: 10.1.0(eslint@9.27.0(jiti@2.4.2))(vue-eslint-parser@10.1.3(eslint@9.27.0(jiti@2.4.2))) + globals: 16.1.0 + lodash.merge: 4.6.2 + typescript-eslint: 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + vue-eslint-parser: 10.1.3(eslint@9.27.0(jiti@2.4.2)) + transitivePeerDependencies: + - '@typescript-eslint/types' + - '@typescript-eslint/utils' + - bluebird + - eslint + - eslint-plugin-import + - remark-lint-file-extension + - supports-color + - svelte + - typescript + + eslint-config-prettier@10.1.1(eslint@9.27.0(jiti@2.4.2)): + dependencies: + eslint: 9.27.0(jiti@2.4.2) + eslint-config-prettier@9.1.0(eslint@8.57.1): dependencies: eslint: 8.57.1 @@ -21128,6 +22913,18 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-etc@5.2.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@typescript-eslint/experimental-utils': 5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + tsutils: 3.21.0(typescript@5.8.3) + tsutils-etc: 1.4.2(tsutils@3.21.0(typescript@5.8.3))(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + eslint-formatter-compact@8.40.0: {} + eslint-formatter-pretty@4.1.0: dependencies: '@types/eslint': 7.29.0 @@ -21169,26 +22966,40 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.7.0(eslint-plugin-i@2.29.1)(eslint@8.57.1): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-i@2.29.1)(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.0 - enhanced-resolve: 5.18.0 eslint: 8.57.1 - fast-glob: 3.3.2 - get-tsconfig: 4.8.1 - is-bun-module: 1.3.0 - is-glob: 4.0.3 - stable-hash: 0.0.4 + get-tsconfig: 4.10.0 + is-bun-module: 2.0.0 + stable-hash: 0.0.5 + tinyglobby: 0.2.13 + unrs-resolver: 1.7.2 optionalDependencies: - eslint-plugin-import: eslint-plugin-i@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.5.4))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) + eslint-plugin-import: eslint-plugin-i@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.5.4))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + eslint-plugin-import-x: 4.11.1(eslint@8.57.1)(typescript@5.5.4) + transitivePeerDependencies: + - supports-color + + eslint-import-resolver-typescript@4.3.4(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@9.27.0(jiti@2.4.2)): + dependencies: + debug: 4.4.0 + eslint: 9.27.0(jiti@2.4.2) + get-tsconfig: 4.10.0 + is-bun-module: 2.0.0 + stable-hash: 0.0.5 + tinyglobby: 0.2.13 + unrs-resolver: 1.7.2 + optionalDependencies: + eslint-plugin-import-x: 4.11.1(eslint@8.57.1)(typescript@5.5.4) transitivePeerDependencies: - supports-color eslint-mdx@3.1.5(eslint@8.57.1): dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) eslint: 8.57.1 espree: 9.6.1 estree-util-visit: 2.0.0 @@ -21206,14 +23017,35 @@ snapshots: - bluebird - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1): + eslint-mdx@3.4.2(eslint@9.27.0(jiti@2.4.2)): + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + eslint: 9.27.0(jiti@2.4.2) + espree: 10.3.0 + estree-util-visit: 2.0.0 + remark-mdx: 3.1.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + synckit: 0.11.6 + tslib: 2.8.1 + unified: 11.0.5 + unified-engine: 11.2.2 + unist-util-visit: 5.0.0 + uvu: 0.5.6 + vfile: 6.0.3 + transitivePeerDependencies: + - bluebird + - supports-color + + eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.5.4) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.7.0(eslint-plugin-i@2.29.1)(eslint@8.57.1) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-i@2.29.1)(eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1) transitivePeerDependencies: - supports-color @@ -21231,11 +23063,30 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-plugin-astro@1.3.1(eslint@9.27.0(jiti@2.4.2)): + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.27.0(jiti@2.4.2)) + '@jridgewell/sourcemap-codec': 1.5.0 + '@typescript-eslint/types': 8.19.0 + astro-eslint-parser: 1.2.2 + eslint: 9.27.0(jiti@2.4.2) + eslint-compat-utils: 0.6.5(eslint@9.27.0(jiti@2.4.2)) + globals: 15.14.0 + postcss: 8.4.49 + postcss-selector-parser: 7.0.0 + transitivePeerDependencies: + - supports-color + eslint-plugin-cypress@2.15.2(eslint@8.57.1): dependencies: eslint: 8.57.1 globals: 13.24.0 + eslint-plugin-cypress@4.3.0(eslint@9.27.0(jiti@2.4.2)): + dependencies: + eslint: 9.27.0(jiti@2.4.2) + globals: 15.15.0 + eslint-plugin-es-x@7.8.0(eslint@8.57.1): dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) @@ -21243,13 +23094,20 @@ snapshots: eslint: 8.57.1 eslint-compat-utils: 0.5.1(eslint@8.57.1) - eslint-plugin-i@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.5.4))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1): + eslint-plugin-es-x@7.8.0(eslint@9.27.0(jiti@2.4.2)): + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.27.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + eslint: 9.27.0(jiti@2.4.2) + eslint-compat-utils: 0.5.1(eslint@9.27.0(jiti@2.4.2)) + + eslint-plugin-i@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.5.4))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): dependencies: debug: 4.4.0 doctrine: 3.0.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) get-tsconfig: 4.8.1 is-glob: 4.0.3 minimatch: 3.1.2 @@ -21260,6 +23118,43 @@ snapshots: - eslint-import-resolver-webpack - supports-color + eslint-plugin-import-x@4.11.1(eslint@8.57.1)(typescript@5.5.4): + dependencies: + '@typescript-eslint/utils': 8.32.1(eslint@8.57.1)(typescript@5.5.4) + comment-parser: 1.4.1 + debug: 4.4.0 + eslint: 8.57.1 + eslint-import-resolver-node: 0.3.9 + get-tsconfig: 4.10.0 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.2 + stable-hash: 0.0.5 + tslib: 2.8.1 + unrs-resolver: 1.7.2 + transitivePeerDependencies: + - supports-color + - typescript + optional: true + + eslint-plugin-import-x@4.11.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + comment-parser: 1.4.1 + debug: 4.4.0 + eslint: 9.27.0(jiti@2.4.2) + eslint-import-resolver-node: 0.3.9 + get-tsconfig: 4.10.0 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.2 + stable-hash: 0.0.5 + tslib: 2.8.1 + unrs-resolver: 1.7.2 + transitivePeerDependencies: + - supports-color + - typescript + eslint-plugin-jsdoc@48.11.0(eslint@8.57.1): dependencies: '@es-joy/jsdoccomment': 0.46.0 @@ -21277,6 +23172,22 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-plugin-jsdoc@50.6.17(eslint@9.27.0(jiti@2.4.2)): + dependencies: + '@es-joy/jsdoccomment': 0.50.1 + are-docs-informative: 0.0.2 + comment-parser: 1.4.1 + debug: 4.4.0 + escape-string-regexp: 4.0.0 + eslint: 9.27.0(jiti@2.4.2) + espree: 10.3.0 + esquery: 1.6.0 + parse-imports-exports: 0.2.4 + semver: 7.6.3 + spdx-expression-parse: 4.0.0 + transitivePeerDependencies: + - supports-color + eslint-plugin-jsx-a11y@6.10.2(eslint@8.57.1): dependencies: aria-query: 5.3.2 @@ -21296,6 +23207,25 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 + eslint-plugin-jsx-a11y@6.10.2(eslint@9.27.0(jiti@2.4.2)): + dependencies: + aria-query: 5.3.2 + array-includes: 3.1.8 + array.prototype.flatmap: 1.3.3 + ast-types-flow: 0.0.8 + axe-core: 4.10.2 + axobject-query: 4.1.0 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 9.27.0(jiti@2.4.2) + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + safe-regex-test: 1.1.0 + string.prototype.includes: 2.0.1 + eslint-plugin-markdown@3.0.1(eslint@8.57.1): dependencies: eslint: 8.57.1 @@ -21318,6 +23248,25 @@ snapshots: - bluebird - supports-color + eslint-plugin-mdx@3.4.2(eslint@9.27.0(jiti@2.4.2)): + dependencies: + eslint: 9.27.0(jiti@2.4.2) + eslint-mdx: 3.4.2(eslint@9.27.0(jiti@2.4.2)) + mdast-util-from-markdown: 2.0.2 + mdast-util-mdx: 3.0.0 + micromark-extension-mdxjs: 3.0.0 + remark-mdx: 3.1.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + synckit: 0.11.6 + tslib: 2.8.1 + unified: 11.0.5 + vfile: 6.0.3 + transitivePeerDependencies: + - bluebird + - remark-lint-file-extension + - supports-color + eslint-plugin-n@16.6.2(eslint@8.57.1): dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) @@ -21333,14 +23282,39 @@ snapshots: resolve: 1.22.10 semver: 7.6.3 + eslint-plugin-n@17.18.0(eslint@9.27.0(jiti@2.4.2)): + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) + enhanced-resolve: 5.18.0 + eslint: 9.27.0(jiti@2.4.2) + eslint-plugin-es-x: 7.8.0(eslint@9.27.0(jiti@2.4.2)) + get-tsconfig: 4.8.1 + globals: 15.14.0 + ignore: 5.3.2 + minimatch: 9.0.5 + semver: 7.6.3 + eslint-plugin-promise@6.6.0(eslint@8.57.1): dependencies: eslint: 8.57.1 + eslint-plugin-promise@7.2.1(eslint@9.27.0(jiti@2.4.2)): + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.27.0(jiti@2.4.2)) + eslint: 9.27.0(jiti@2.4.2) + eslint-plugin-react-hooks@4.6.2(eslint@8.57.1): dependencies: eslint: 8.57.1 + eslint-plugin-react-hooks@5.2.0(eslint@9.27.0(jiti@2.4.2)): + dependencies: + eslint: 9.27.0(jiti@2.4.2) + + eslint-plugin-react-refresh@0.4.20(eslint@9.27.0(jiti@2.4.2)): + dependencies: + eslint: 9.27.0(jiti@2.4.2) + eslint-plugin-react@7.37.3(eslint@8.57.1): dependencies: array-includes: 3.1.8 @@ -21363,6 +23337,28 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 + eslint-plugin-react@7.37.5(eslint@9.27.0(jiti@2.4.2)): + dependencies: + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.3 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.2.1 + eslint: 9.27.0(jiti@2.4.2) + estraverse: 5.3.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.9 + object.fromentries: 2.0.8 + object.values: 1.2.1 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.12 + string.prototype.repeat: 1.0.0 + eslint-plugin-rxjs-angular@2.0.1(eslint@8.57.1)(typescript@5.5.4): dependencies: '@typescript-eslint/experimental-utils': 5.62.0(eslint@8.57.1)(typescript@5.5.4) @@ -21375,6 +23371,18 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-plugin-rxjs-angular@2.0.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@typescript-eslint/experimental-utils': 5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + common-tags: 1.8.2 + eslint: 9.27.0(jiti@2.4.2) + eslint-etc: 5.2.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + requireindex: 1.2.0 + tslib: 2.8.1 + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + eslint-plugin-rxjs@5.0.3(eslint@8.57.1)(typescript@5.5.4): dependencies: '@typescript-eslint/experimental-utils': 5.62.0(eslint@8.57.1)(typescript@5.5.4) @@ -21391,19 +23399,57 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-plugin-rxjs@5.0.3(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@typescript-eslint/experimental-utils': 5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + common-tags: 1.8.2 + decamelize: 5.0.1 + eslint: 9.27.0(jiti@2.4.2) + eslint-etc: 5.2.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + requireindex: 1.2.0 + rxjs-report-usage: 1.0.6 + tslib: 2.8.1 + tsutils: 3.21.0(typescript@5.8.3) + tsutils-etc: 1.4.2(tsutils@3.21.0(typescript@5.8.3))(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + eslint-plugin-sonarjs@0.25.1(eslint@8.57.1): dependencies: eslint: 8.57.1 + eslint-plugin-sonarjs@3.0.2(eslint@9.27.0(jiti@2.4.2)): + dependencies: + '@eslint-community/regexpp': 4.12.1 + builtin-modules: 3.3.0 + bytes: 3.1.2 + eslint: 9.27.0(jiti@2.4.2) + functional-red-black-tree: 1.0.1 + jsx-ast-utils: 3.3.5 + minimatch: 9.0.5 + scslre: 0.3.0 + semver: 7.7.1 + typescript: 5.8.3 + eslint-plugin-svelte3@4.0.0(eslint@8.57.1): dependencies: eslint: 8.57.1 + eslint-plugin-svelte3@4.0.0(eslint@9.27.0(jiti@2.4.2)): + dependencies: + eslint: 9.27.0(jiti@2.4.2) + eslint-plugin-tsdoc@0.2.17: dependencies: '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2(patch_hash=35av6rrndvjtr2u2jso66jatbu) + eslint-plugin-tsdoc@0.4.0: + dependencies: + '@microsoft/tsdoc': 0.15.1 + '@microsoft/tsdoc-config': 0.17.1 + eslint-plugin-typescript-sort-keys@3.3.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4): dependencies: '@typescript-eslint/experimental-utils': 5.62.0(eslint@8.57.1)(typescript@5.5.4) @@ -21415,6 +23461,17 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-plugin-typescript-sort-keys@3.3.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@typescript-eslint/experimental-utils': 5.62.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + json-schema: 0.4.0 + natural-compare-lite: 1.4.0 + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + eslint-plugin-unicorn@52.0.0(eslint@8.57.1): dependencies: '@babel/helper-validator-identifier': 7.25.9 @@ -21437,6 +23494,37 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-plugin-unicorn@57.0.0(eslint@9.27.0(jiti@2.4.2)): + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + '@eslint-community/eslint-utils': 4.4.1(eslint@9.27.0(jiti@2.4.2)) + ci-info: 4.1.0 + clean-regexp: 1.0.0 + core-js-compat: 3.42.0 + eslint: 9.27.0(jiti@2.4.2) + esquery: 1.6.0 + globals: 15.15.0 + indent-string: 5.0.0 + is-builtin-module: 4.0.0 + jsesc: 3.1.0 + pluralize: 8.0.0 + read-package-up: 11.0.0 + regexp-tree: 0.1.27 + regjsparser: 0.12.0 + semver: 7.7.2 + strip-indent: 4.0.0 + + eslint-plugin-vue@10.1.0(eslint@9.27.0(jiti@2.4.2))(vue-eslint-parser@10.1.3(eslint@9.27.0(jiti@2.4.2))): + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.27.0(jiti@2.4.2)) + eslint: 9.27.0(jiti@2.4.2) + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.1.2 + semver: 7.6.3 + vue-eslint-parser: 10.1.3(eslint@9.27.0(jiti@2.4.2)) + xml-name-validator: 4.0.0 + eslint-plugin-vue@9.32.0(eslint@8.57.1): dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) @@ -21468,6 +23556,11 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 + eslint-scope@8.3.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + eslint-visitor-keys@3.4.3: {} eslint-visitor-keys@4.2.0: {} @@ -21494,37 +23587,79 @@ snapshots: esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + eslint@9.27.0(jiti@2.4.2): + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.27.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.20.0 + '@eslint/config-helpers': 0.2.2 + '@eslint/core': 0.14.0 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.27.0 + '@eslint/plugin-kit': 0.3.1 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.7 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0 + escape-string-regexp: 4.0.0 + eslint-scope: 8.3.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 - strip-ansi: 6.0.1 - text-table: 0.2.0 + optionalDependencies: + jiti: 2.4.2 transitivePeerDependencies: - supports-color espree@10.3.0: dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) eslint-visitor-keys: 4.2.0 espree@9.6.1: dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) eslint-visitor-keys: 3.4.3 esprima@4.0.1: {} @@ -21543,11 +23678,11 @@ snapshots: estree-util-attach-comments@2.1.1: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 estree-util-attach-comments@3.0.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 estree-util-build-jsx@2.2.2: dependencies: @@ -21570,7 +23705,7 @@ snapshots: estree-util-scope@1.0.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 devlop: 1.1.0 estree-util-to-js@1.2.0: @@ -21603,7 +23738,7 @@ snapshots: estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 esutils@2.0.3: {} @@ -21669,6 +23804,8 @@ snapshots: expect-type@1.1.0: {} + expect-type@1.2.1: {} + expect@29.7.0: dependencies: '@jest/expect-utils': 29.7.0 @@ -21697,6 +23834,14 @@ snapshots: fast-fifo@1.3.2: {} + fast-glob@3.3.1: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -21705,6 +23850,14 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.8 + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + fast-json-stable-stringify@2.1.0: {} fast-levenshtein@2.0.6: {} @@ -21733,6 +23886,10 @@ snapshots: optionalDependencies: picomatch: 4.0.2 + fdir@6.4.4(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + fetch-blob@3.2.0: dependencies: node-domexception: 1.0.0 @@ -21752,6 +23909,10 @@ snapshots: dependencies: flat-cache: 3.2.0 + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + file-set@4.0.2: dependencies: array-back: 5.0.0 @@ -21780,6 +23941,8 @@ snapshots: find-replace@5.0.2: {} + find-up-simple@1.0.1: {} + find-up@4.1.0: dependencies: locate-path: 5.0.0 @@ -21801,12 +23964,23 @@ snapshots: path-exists: 5.0.0 unicorn-magic: 0.1.0 + fix-dts-default-cjs-exports@1.0.1: + dependencies: + magic-string: 0.30.17 + mlly: 1.7.4 + rollup: 4.40.2 + flat-cache@3.2.0: dependencies: flatted: 3.3.2 keyv: 4.5.4 rimraf: 3.0.2 + flat-cache@4.0.1: + dependencies: + flatted: 3.3.2 + keyv: 4.5.4 + flatted@3.3.2: {} for-each@0.3.3: @@ -21923,6 +24097,8 @@ snapshots: hasown: 2.0.2 is-callable: 1.2.7 + functional-red-black-tree@1.0.1: {} + functions-have-names@1.2.3: {} gauge@2.7.4: @@ -21974,10 +24150,28 @@ snapshots: hasown: 2.0.2 math-intrinsics: 1.1.0 + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + get-nonce@1.0.1: {} get-package-type@0.1.0: {} + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + get-stream@5.2.0: dependencies: pump: 3.0.2 @@ -21997,6 +24191,10 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.2.6 + get-tsconfig@4.10.0: + dependencies: + resolve-pkg-maps: 1.0.0 + get-tsconfig@4.8.1: dependencies: resolve-pkg-maps: 1.0.0 @@ -22099,8 +24297,14 @@ snapshots: dependencies: type-fest: 0.20.2 + globals@14.0.0: {} + globals@15.14.0: {} + globals@15.15.0: {} + + globals@16.1.0: {} + globalthis@1.0.4: dependencies: define-properties: 1.2.1 @@ -22259,7 +24463,7 @@ snapshots: hast-util-to-estree@2.3.3: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 '@types/estree-jsx': 1.0.5 '@types/hast': 2.3.10 '@types/unist': 2.0.11 @@ -22279,7 +24483,7 @@ snapshots: hast-util-to-estree@3.1.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 @@ -22328,7 +24532,7 @@ snapshots: hast-util-to-jsx-runtime@2.3.2: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 '@types/hast': 3.0.4 '@types/unist': 3.0.3 comma-separated-tokens: 2.0.3 @@ -22489,6 +24693,8 @@ snapshots: ignore@6.0.2: {} + ignore@7.0.4: {} + imagescript@1.3.0: {} import-fresh@3.3.0: @@ -22522,6 +24728,8 @@ snapshots: indent-string@5.0.0: {} + index-to-position@1.1.0: {} + inflection@2.0.1: {} inflight@1.0.6: @@ -22667,9 +24875,13 @@ snapshots: dependencies: builtin-modules: 3.3.0 - is-bun-module@1.3.0: + is-builtin-module@4.0.0: dependencies: - semver: 7.6.3 + builtin-modules: 4.0.0 + + is-bun-module@2.0.0: + dependencies: + semver: 7.7.2 is-callable@1.2.7: {} @@ -22766,7 +24978,7 @@ snapshots: is-reference@3.0.3: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 is-regex@1.2.1: dependencies: @@ -23322,6 +25534,8 @@ snapshots: jsesc@2.5.2: {} + jsesc@3.0.2: {} + jsesc@3.1.0: {} json-buffer@3.0.1: {} @@ -23565,6 +25779,8 @@ snapshots: loupe@3.1.2: {} + loupe@3.1.3: {} + lower-case-first@1.0.2: dependencies: lower-case: 1.1.4 @@ -24239,7 +26455,7 @@ snapshots: micromark-extension-mdx-expression@1.0.8: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 micromark-factory-mdx-expression: 1.0.9 micromark-factory-space: 1.1.0 micromark-util-character: 1.2.0 @@ -24250,7 +26466,7 @@ snapshots: micromark-extension-mdx-expression@3.0.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 devlop: 1.1.0 micromark-factory-mdx-expression: 2.0.2 micromark-factory-space: 2.0.1 @@ -24262,7 +26478,7 @@ snapshots: micromark-extension-mdx-jsx@1.0.5: dependencies: '@types/acorn': 4.0.6 - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 estree-util-is-identifier-name: 2.1.0 micromark-factory-mdx-expression: 1.0.9 micromark-factory-space: 1.1.0 @@ -24275,7 +26491,7 @@ snapshots: micromark-extension-mdx-jsx@3.0.1: dependencies: '@types/acorn': 4.0.6 - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 micromark-factory-mdx-expression: 2.0.2 @@ -24296,7 +26512,7 @@ snapshots: micromark-extension-mdxjs-esm@1.0.5: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 micromark-core-commonmark: 1.1.0 micromark-util-character: 1.2.0 micromark-util-events-to-acorn: 1.2.3 @@ -24308,7 +26524,7 @@ snapshots: micromark-extension-mdxjs-esm@3.0.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 devlop: 1.1.0 micromark-core-commonmark: 2.0.2 micromark-util-character: 2.1.1 @@ -24320,8 +26536,8 @@ snapshots: micromark-extension-mdxjs@1.0.1: dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) micromark-extension-mdx-expression: 1.0.8 micromark-extension-mdx-jsx: 1.0.5 micromark-extension-mdx-md: 1.0.1 @@ -24331,8 +26547,8 @@ snapshots: micromark-extension-mdxjs@3.0.0: dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) micromark-extension-mdx-expression: 3.0.0 micromark-extension-mdx-jsx: 3.0.1 micromark-extension-mdx-md: 2.0.0 @@ -24368,7 +26584,7 @@ snapshots: micromark-factory-mdx-expression@1.0.9: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 micromark-util-character: 1.2.0 micromark-util-events-to-acorn: 1.2.3 micromark-util-symbol: 1.1.0 @@ -24379,7 +26595,7 @@ snapshots: micromark-factory-mdx-expression@2.0.2: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 devlop: 1.1.0 micromark-factory-space: 2.0.1 micromark-util-character: 2.1.1 @@ -24496,7 +26712,7 @@ snapshots: micromark-util-events-to-acorn@1.2.3: dependencies: '@types/acorn': 4.0.6 - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 '@types/unist': 2.0.11 estree-util-visit: 1.2.1 micromark-util-symbol: 1.1.0 @@ -24507,7 +26723,7 @@ snapshots: micromark-util-events-to-acorn@2.0.2: dependencies: '@types/acorn': 4.0.6 - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 '@types/unist': 3.0.3 devlop: 1.1.0 estree-util-visit: 2.0.0 @@ -24724,11 +26940,18 @@ snapshots: mlly@1.7.3: dependencies: - acorn: 8.14.0 + acorn: 8.14.1 pathe: 1.1.2 pkg-types: 1.3.0 ufo: 1.5.4 + mlly@1.7.4: + dependencies: + acorn: 8.14.1 + pathe: 2.0.3 + pkg-types: 1.3.0 + ufo: 1.5.4 + mock-socket@9.3.1: {} mri@1.2.0: {} @@ -24753,6 +26976,8 @@ snapshots: nanoid@3.3.8: {} + napi-postinstall@0.2.4: {} + natural-compare-lite@1.4.0: {} natural-compare@1.4.0: {} @@ -24778,10 +27003,10 @@ snapshots: - markdown-wasm - supports-color - next-mdx-remote-client@1.0.3(@types/react@18.3.18)(acorn@8.14.0)(react-dom@19.0.0-rc-f994737d14-20240522(react@19.0.0-rc-f994737d14-20240522))(react@19.0.0-rc-f994737d14-20240522): + next-mdx-remote-client@1.0.3(@types/react@18.3.18)(acorn@8.14.1)(react-dom@19.0.0-rc-f994737d14-20240522(react@19.0.0-rc-f994737d14-20240522))(react@19.0.0-rc-f994737d14-20240522): dependencies: '@babel/code-frame': 7.26.2 - '@mdx-js/mdx': 3.1.0(acorn@8.14.0) + '@mdx-js/mdx': 3.1.0(acorn@8.14.1) '@mdx-js/react': 3.1.0(@types/react@18.3.18)(react@19.0.0-rc-f994737d14-20240522) '@types/mdx': 2.0.13 react: 19.0.0-rc-f994737d14-20240522 @@ -25065,6 +27290,13 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.0.0 + object.entries@1.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + object.fromentries@2.0.8: dependencies: call-bind: 1.0.8 @@ -25287,6 +27519,10 @@ snapshots: is-decimal: 2.0.1 is-hexadecimal: 2.0.1 + parse-imports-exports@0.2.4: + dependencies: + parse-statements: 1.0.11 + parse-imports@2.2.1: dependencies: es-module-lexer: 1.6.0 @@ -25307,10 +27543,18 @@ snapshots: lines-and-columns: 2.0.4 type-fest: 3.13.1 + parse-json@8.3.0: + dependencies: + '@babel/code-frame': 7.26.2 + index-to-position: 1.1.0 + type-fest: 4.41.0 + parse-ms@2.1.0: {} parse-ms@4.0.0: {} + parse-statements@1.0.11: {} + parse5@6.0.1: {} pascal-case@2.0.1: @@ -25363,6 +27607,8 @@ snapshots: pathe@1.1.2: {} + pathe@2.0.3: {} + pathval@2.0.0: {} pend@1.2.0: {} @@ -25373,7 +27619,7 @@ snapshots: periscopic@3.1.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 estree-walker: 3.0.3 is-reference: 3.0.3 @@ -25420,7 +27666,7 @@ snapshots: pkg-types@1.3.0: dependencies: confbox: 0.1.8 - mlly: 1.7.3 + mlly: 1.7.4 pathe: 1.1.2 plur@4.0.0: @@ -25556,6 +27802,8 @@ snapshots: prettier@3.4.2: {} + prettier@3.5.3: {} + pretty-format@24.9.0: dependencies: '@jest/types': 24.9.0 @@ -25933,6 +28181,12 @@ snapshots: json-parse-even-better-errors: 3.0.2 npm-normalize-package-bin: 3.0.1 + read-package-up@11.0.0: + dependencies: + find-up-simple: 1.0.1 + read-pkg: 9.0.1 + type-fest: 4.31.0 + read-pkg-up@10.1.0: dependencies: find-up: 6.3.0 @@ -25959,6 +28213,14 @@ snapshots: parse-json: 7.1.1 type-fest: 4.31.0 + read-pkg@9.0.1: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 6.0.2 + parse-json: 8.3.0 + type-fest: 4.31.0 + unicorn-magic: 0.1.0 + readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 @@ -25996,13 +28258,13 @@ snapshots: recma-build-jsx@1.0.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 estree-util-build-jsx: 3.0.1 vfile: 6.0.3 - recma-jsx@1.0.0(acorn@8.14.0): + recma-jsx@1.0.0(acorn@8.14.1): dependencies: - acorn-jsx: 5.3.2(acorn@8.14.0) + acorn-jsx: 5.3.2(acorn@8.14.1) estree-util-to-js: 2.0.0 recma-parse: 1.0.0 recma-stringify: 1.0.0 @@ -26012,14 +28274,14 @@ snapshots: recma-parse@1.0.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 esast-util-from-js: 2.0.1 unified: 11.0.5 vfile: 6.0.3 recma-stringify@1.0.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 estree-util-to-js: 2.0.0 unified: 11.0.5 vfile: 6.0.3 @@ -26045,6 +28307,10 @@ snapshots: dependencies: test-value: 2.1.0 + refa@0.12.1: + dependencies: + '@eslint-community/regexpp': 4.12.1 + reflect.getprototypeof@1.0.9: dependencies: call-bind: 1.0.8 @@ -26071,6 +28337,11 @@ snapshots: dependencies: regex-utilities: 2.3.0 + regexp-ast-analysis@0.7.1: + dependencies: + '@eslint-community/regexpp': 4.12.1 + refa: 0.12.1 + regexp-tree@0.1.27: {} regexp.prototype.flags@1.5.3: @@ -26093,6 +28364,10 @@ snapshots: dependencies: jsesc: 0.5.0 + regjsparser@0.12.0: + dependencies: + jsesc: 3.0.2 + rehype-autolink-headings@6.1.1: dependencies: '@types/hast': 2.3.10 @@ -26105,7 +28380,7 @@ snapshots: rehype-recma@1.0.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 '@types/hast': 3.0.4 hast-util-to-estree: 3.1.0 transitivePeerDependencies: @@ -26346,6 +28621,32 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.29.1 fsevents: 2.3.3 + rollup@4.40.2: + dependencies: + '@types/estree': 1.0.7 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.40.2 + '@rollup/rollup-android-arm64': 4.40.2 + '@rollup/rollup-darwin-arm64': 4.40.2 + '@rollup/rollup-darwin-x64': 4.40.2 + '@rollup/rollup-freebsd-arm64': 4.40.2 + '@rollup/rollup-freebsd-x64': 4.40.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.40.2 + '@rollup/rollup-linux-arm-musleabihf': 4.40.2 + '@rollup/rollup-linux-arm64-gnu': 4.40.2 + '@rollup/rollup-linux-arm64-musl': 4.40.2 + '@rollup/rollup-linux-loongarch64-gnu': 4.40.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.40.2 + '@rollup/rollup-linux-riscv64-gnu': 4.40.2 + '@rollup/rollup-linux-riscv64-musl': 4.40.2 + '@rollup/rollup-linux-s390x-gnu': 4.40.2 + '@rollup/rollup-linux-x64-gnu': 4.40.2 + '@rollup/rollup-linux-x64-musl': 4.40.2 + '@rollup/rollup-win32-arm64-msvc': 4.40.2 + '@rollup/rollup-win32-ia32-msvc': 4.40.2 + '@rollup/rollup-win32-x64-msvc': 4.40.2 + fsevents: 2.3.3 + run-async@2.4.1: {} run-parallel@1.2.0: @@ -26426,6 +28727,12 @@ snapshots: scheduler@0.25.0-rc-f994737d14-20240522: {} + scslre@0.3.0: + dependencies: + '@eslint-community/regexpp': 4.12.1 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + section-matter@1.0.0: dependencies: extend-shallow: 2.0.1 @@ -26447,6 +28754,10 @@ snapshots: semver@7.6.3: {} + semver@7.7.1: {} + + semver@7.7.2: {} + sentence-case@2.1.1: dependencies: no-case: 2.3.2 @@ -26691,7 +29002,7 @@ snapshots: dependencies: minipass: 3.3.6 - stable-hash@0.0.4: {} + stable-hash@0.0.5: {} stack-utils@2.0.6: dependencies: @@ -26707,6 +29018,8 @@ snapshots: std-env@3.8.0: {} + std-env@3.9.0: {} + stop-iteration-iterator@1.1.0: dependencies: es-errors: 1.3.0 @@ -26976,6 +29289,10 @@ snapshots: synchronous-promise@2.0.17: {} + synckit@0.11.6: + dependencies: + '@pkgr/core': 0.2.4 + synckit@0.9.2: dependencies: '@pkgr/core': 0.1.1 @@ -27067,7 +29384,7 @@ snapshots: terser@5.37.0: dependencies: '@jridgewell/source-map': 0.3.6 - acorn: 8.14.0 + acorn: 8.14.1 commander: 2.20.3 source-map-support: 0.5.21 @@ -27130,6 +29447,11 @@ snapshots: fdir: 6.4.2(picomatch@4.0.2) picomatch: 4.0.2 + tinyglobby@0.2.13: + dependencies: + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + tinygradient@1.1.5: dependencies: '@types/tinycolor2': 1.4.6 @@ -27139,6 +29461,8 @@ snapshots: tinyrainbow@1.2.0: {} + tinyrainbow@2.0.0: {} + tinyspy@3.0.2: {} title-case@2.1.1: @@ -27199,6 +29523,15 @@ snapshots: dependencies: typescript: 5.5.4 + ts-api-utils@2.1.0(typescript@5.5.4): + dependencies: + typescript: 5.5.4 + optional: true + + ts-api-utils@2.1.0(typescript@5.8.3): + dependencies: + typescript: 5.8.3 + ts-dedent@2.2.0: {} ts-interface-checker@0.1.13: {} @@ -27218,7 +29551,7 @@ snapshots: '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 16.18.11 - acorn: 8.14.0 + acorn: 8.14.1 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 @@ -27236,7 +29569,7 @@ snapshots: '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 20.17.10 - acorn: 8.14.0 + acorn: 8.14.1 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 @@ -27360,7 +29693,7 @@ snapshots: - tsx - yaml - tsup@8.3.5(@microsoft/api-extractor@7.43.0(@types/node@22.10.2))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.5.4)(yaml@2.7.0): + tsup@8.3.5(@microsoft/api-extractor@7.43.0(@types/node@22.15.2))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.5.4)(yaml@2.7.0): dependencies: bundle-require: 5.1.0(esbuild@0.24.2) cac: 6.7.14 @@ -27379,7 +29712,36 @@ snapshots: tinyglobby: 0.2.10 tree-kill: 1.2.2 optionalDependencies: - '@microsoft/api-extractor': 7.43.0(@types/node@22.10.2) + '@microsoft/api-extractor': 7.43.0(@types/node@22.15.2) + postcss: 8.4.49 + typescript: 5.5.4 + transitivePeerDependencies: + - jiti + - supports-color + - tsx + - yaml + + tsup@8.5.0(@microsoft/api-extractor@7.43.0(@types/node@20.17.10))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.5.4)(yaml@2.7.0): + dependencies: + bundle-require: 5.1.0(esbuild@0.25.4) + cac: 6.7.14 + chokidar: 4.0.3 + consola: 3.4.2 + debug: 4.4.0 + esbuild: 0.25.4 + fix-dts-default-cjs-exports: 1.0.1 + joycon: 3.1.1 + picocolors: 1.1.1 + postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(yaml@2.7.0) + resolve-from: 5.0.0 + rollup: 4.40.2 + source-map: 0.8.0-beta.0 + sucrase: 3.35.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.13 + tree-kill: 1.2.2 + optionalDependencies: + '@microsoft/api-extractor': 7.43.0(@types/node@20.17.10) postcss: 8.4.49 typescript: 5.5.4 transitivePeerDependencies: @@ -27388,6 +29750,35 @@ snapshots: - tsx - yaml + tsup@8.5.0(@microsoft/api-extractor@7.43.0(@types/node@22.15.2))(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.8.3)(yaml@2.7.0): + dependencies: + bundle-require: 5.1.0(esbuild@0.25.4) + cac: 6.7.14 + chokidar: 4.0.3 + consola: 3.4.2 + debug: 4.4.0 + esbuild: 0.25.4 + fix-dts-default-cjs-exports: 1.0.1 + joycon: 3.1.1 + picocolors: 1.1.1 + postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(yaml@2.7.0) + resolve-from: 5.0.0 + rollup: 4.40.2 + source-map: 0.8.0-beta.0 + sucrase: 3.35.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.13 + tree-kill: 1.2.2 + optionalDependencies: + '@microsoft/api-extractor': 7.43.0(@types/node@22.15.2) + postcss: 8.4.49 + typescript: 5.8.3 + transitivePeerDependencies: + - jiti + - supports-color + - tsx + - yaml + tsutils-etc@1.4.2(tsutils@3.21.0(typescript@5.5.4))(typescript@5.5.4): dependencies: '@types/yargs': 17.0.33 @@ -27395,6 +29786,13 @@ snapshots: typescript: 5.5.4 yargs: 17.7.2 + tsutils-etc@1.4.2(tsutils@3.21.0(typescript@5.8.3))(typescript@5.8.3): + dependencies: + '@types/yargs': 17.0.33 + tsutils: 3.21.0(typescript@5.8.3) + typescript: 5.8.3 + yargs: 17.7.2 + tsutils@2.29.0(typescript@5.5.4): dependencies: tslib: 1.14.1 @@ -27405,6 +29803,11 @@ snapshots: tslib: 1.14.1 typescript: 5.5.4 + tsutils@3.21.0(typescript@5.8.3): + dependencies: + tslib: 1.14.1 + typescript: 5.8.3 + tsx@4.19.2: dependencies: esbuild: 0.23.1 @@ -27471,6 +29874,8 @@ snapshots: type-fest@4.31.0: {} + type-fest@4.41.0: {} + typed-array-buffer@1.0.3: dependencies: call-bound: 1.0.3 @@ -27535,12 +29940,24 @@ snapshots: transitivePeerDependencies: - supports-color + typescript-eslint@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + typescript@4.9.5: {} typescript@5.4.2: {} typescript@5.5.4: {} + typescript@5.8.3: {} + typical@2.6.1: {} typical@4.0.0: {} @@ -27583,7 +30000,7 @@ snapshots: undici-types@6.19.8: {} - undici-types@6.20.0: {} + undici-types@6.21.0: {} undici@5.28.4: dependencies: @@ -27605,7 +30022,7 @@ snapshots: '@types/concat-stream': 2.0.3 '@types/debug': 4.1.12 '@types/is-empty': 1.2.3 - '@types/node': 22.10.2 + '@types/node': 22.15.2 '@types/unist': 3.0.3 concat-stream: 2.0.0 debug: 4.4.0 @@ -27736,10 +30153,10 @@ snapshots: universalify@2.0.1: {} - unocss@0.60.4(postcss@8.4.49)(rollup@4.29.1)(vite@5.4.11(@types/node@18.19.68)(terser@5.37.0)): + unocss@0.60.4(postcss@8.4.49)(rollup@4.40.2)(vite@5.4.11(@types/node@18.19.68)(terser@5.37.0)): dependencies: - '@unocss/astro': 0.60.4(rollup@4.29.1)(vite@5.4.11(@types/node@18.19.68)(terser@5.37.0)) - '@unocss/cli': 0.60.4(rollup@4.29.1) + '@unocss/astro': 0.60.4(rollup@4.40.2)(vite@5.4.11(@types/node@18.19.68)(terser@5.37.0)) + '@unocss/cli': 0.60.4(rollup@4.40.2) '@unocss/core': 0.60.4 '@unocss/extractor-arbitrary-variants': 0.60.4 '@unocss/postcss': 0.60.4(postcss@8.4.49) @@ -27757,7 +30174,7 @@ snapshots: '@unocss/transformer-compile-class': 0.60.4 '@unocss/transformer-directives': 0.60.4 '@unocss/transformer-variant-group': 0.60.4 - '@unocss/vite': 0.60.4(rollup@4.29.1)(vite@5.4.11(@types/node@18.19.68)(terser@5.37.0)) + '@unocss/vite': 0.60.4(rollup@4.40.2)(vite@5.4.11(@types/node@18.19.68)(terser@5.37.0)) optionalDependencies: vite: 5.4.11(@types/node@18.19.68)(terser@5.37.0) transitivePeerDependencies: @@ -27765,10 +30182,10 @@ snapshots: - rollup - supports-color - unocss@0.60.4(postcss@8.4.49)(rollup@4.29.1)(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0)): + unocss@0.60.4(postcss@8.4.49)(rollup@4.40.2)(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0)): dependencies: - '@unocss/astro': 0.60.4(rollup@4.29.1)(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0)) - '@unocss/cli': 0.60.4(rollup@4.29.1) + '@unocss/astro': 0.60.4(rollup@4.40.2)(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0)) + '@unocss/cli': 0.60.4(rollup@4.40.2) '@unocss/core': 0.60.4 '@unocss/extractor-arbitrary-variants': 0.60.4 '@unocss/postcss': 0.60.4(postcss@8.4.49) @@ -27786,7 +30203,7 @@ snapshots: '@unocss/transformer-compile-class': 0.60.4 '@unocss/transformer-directives': 0.60.4 '@unocss/transformer-variant-group': 0.60.4 - '@unocss/vite': 0.60.4(rollup@4.29.1)(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0)) + '@unocss/vite': 0.60.4(rollup@4.40.2)(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0)) optionalDependencies: vite: 5.4.11(@types/node@20.17.10)(terser@5.37.0) transitivePeerDependencies: @@ -27794,10 +30211,10 @@ snapshots: - rollup - supports-color - unocss@0.65.3(rollup@4.29.1)(vite@5.4.11(@types/node@22.10.2)(terser@5.37.0)): + unocss@0.65.3(rollup@4.40.2)(vite@5.4.11(@types/node@22.15.2)(terser@5.37.0)): dependencies: - '@unocss/astro': 0.65.3(rollup@4.29.1)(vite@5.4.11(@types/node@22.10.2)(terser@5.37.0)) - '@unocss/cli': 0.65.3(rollup@4.29.1) + '@unocss/astro': 0.65.3(rollup@4.40.2)(vite@5.4.11(@types/node@22.15.2)(terser@5.37.0)) + '@unocss/cli': 0.65.3(rollup@4.40.2) '@unocss/core': 0.65.3 '@unocss/postcss': 0.65.3 '@unocss/preset-attributify': 0.65.3 @@ -27812,9 +30229,9 @@ snapshots: '@unocss/transformer-compile-class': 0.65.3 '@unocss/transformer-directives': 0.65.3 '@unocss/transformer-variant-group': 0.65.3 - '@unocss/vite': 0.65.3(rollup@4.29.1)(vite@5.4.11(@types/node@22.10.2)(terser@5.37.0)) + '@unocss/vite': 0.65.3(rollup@4.40.2)(vite@5.4.11(@types/node@22.15.2)(terser@5.37.0)) optionalDependencies: - vite: 5.4.11(@types/node@22.10.2)(terser@5.37.0) + vite: 5.4.11(@types/node@22.15.2)(terser@5.37.0) transitivePeerDependencies: - rollup - supports-color @@ -27824,15 +30241,43 @@ snapshots: unplugin@1.16.0: dependencies: - acorn: 8.14.0 + acorn: 8.14.1 webpack-virtual-modules: 0.6.2 + unrs-resolver@1.7.2: + dependencies: + napi-postinstall: 0.2.4 + optionalDependencies: + '@unrs/resolver-binding-darwin-arm64': 1.7.2 + '@unrs/resolver-binding-darwin-x64': 1.7.2 + '@unrs/resolver-binding-freebsd-x64': 1.7.2 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.7.2 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.7.2 + '@unrs/resolver-binding-linux-arm64-gnu': 1.7.2 + '@unrs/resolver-binding-linux-arm64-musl': 1.7.2 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.7.2 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.7.2 + '@unrs/resolver-binding-linux-riscv64-musl': 1.7.2 + '@unrs/resolver-binding-linux-s390x-gnu': 1.7.2 + '@unrs/resolver-binding-linux-x64-gnu': 1.7.2 + '@unrs/resolver-binding-linux-x64-musl': 1.7.2 + '@unrs/resolver-binding-wasm32-wasi': 1.7.2 + '@unrs/resolver-binding-win32-arm64-msvc': 1.7.2 + '@unrs/resolver-binding-win32-ia32-msvc': 1.7.2 + '@unrs/resolver-binding-win32-x64-msvc': 1.7.2 + update-browserslist-db@1.1.1(browserslist@4.24.3): dependencies: browserslist: 4.24.3 escalade: 3.2.0 picocolors: 1.1.1 + update-browserslist-db@1.1.3(browserslist@4.24.5): + dependencies: + browserslist: 4.24.5 + escalade: 3.2.0 + picocolors: 1.1.1 + update-check@1.5.4: dependencies: registry-auth-token: 3.3.2 @@ -28113,13 +30558,31 @@ snapshots: - supports-color - terser - vite-node@2.1.8(@types/node@22.10.2)(terser@5.37.0): + vite-node@2.1.8(@types/node@22.15.2)(terser@5.37.0): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 1.1.2 - vite: 5.4.11(@types/node@22.10.2)(terser@5.37.0) + vite: 5.4.11(@types/node@22.15.2)(terser@5.37.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vite-node@3.1.3(@types/node@22.15.2)(terser@5.37.0): + dependencies: + cac: 6.7.14 + debug: 4.4.0 + es-module-lexer: 1.7.0 + pathe: 2.0.3 + vite: 5.4.11(@types/node@22.15.2)(terser@5.37.0) transitivePeerDependencies: - '@types/node' - less @@ -28131,10 +30594,10 @@ snapshots: - supports-color - terser - vite-plugin-dts@3.9.1(@types/node@20.17.10)(rollup@4.29.1)(typescript@5.5.4)(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0)): + vite-plugin-dts@3.9.1(@types/node@20.17.10)(rollup@4.40.2)(typescript@5.5.4)(vite@5.4.11(@types/node@20.17.10)(terser@5.37.0)): dependencies: '@microsoft/api-extractor': 7.43.0(@types/node@20.17.10) - '@rollup/pluginutils': 5.1.4(rollup@4.29.1) + '@rollup/pluginutils': 5.1.4(rollup@4.40.2) '@vue/language-core': 1.8.27(typescript@5.5.4) debug: 4.4.0 kolorist: 1.8.0 @@ -28178,13 +30641,13 @@ snapshots: fsevents: 2.3.3 terser: 5.37.0 - vite@5.4.11(@types/node@22.10.2)(terser@5.37.0): + vite@5.4.11(@types/node@22.15.2)(terser@5.37.0): dependencies: esbuild: 0.21.5 postcss: 8.4.49 rollup: 4.29.1 optionalDependencies: - '@types/node': 22.10.2 + '@types/node': 22.15.2 fsevents: 2.3.3 terser: 5.37.0 @@ -28197,7 +30660,7 @@ snapshots: vitest@2.1.8(@edge-runtime/vm@3.2.0)(@types/node@18.17.9)(happy-dom@14.12.3)(terser@5.37.0): dependencies: '@vitest/expect': 2.1.8 - '@vitest/mocker': 2.1.8(vite@5.4.11(@types/node@22.10.2)(terser@5.37.0)) + '@vitest/mocker': 2.1.8(vite@5.4.11(@types/node@22.15.2)(terser@5.37.0)) '@vitest/pretty-format': 2.1.8 '@vitest/runner': 2.1.8 '@vitest/snapshot': 2.1.8 @@ -28305,10 +30768,10 @@ snapshots: - supports-color - terser - vitest@2.1.8(@edge-runtime/vm@3.2.0)(@types/node@22.10.2)(happy-dom@14.12.3)(terser@5.37.0): + vitest@2.1.8(@edge-runtime/vm@3.2.0)(@types/node@22.15.2)(happy-dom@14.12.3)(terser@5.37.0): dependencies: '@vitest/expect': 2.1.8 - '@vitest/mocker': 2.1.8(vite@5.4.11(@types/node@22.10.2)(terser@5.37.0)) + '@vitest/mocker': 2.1.8(vite@5.4.11(@types/node@22.15.2)(terser@5.37.0)) '@vitest/pretty-format': 2.1.8 '@vitest/runner': 2.1.8 '@vitest/snapshot': 2.1.8 @@ -28324,12 +30787,51 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 1.2.0 - vite: 5.4.11(@types/node@22.10.2)(terser@5.37.0) - vite-node: 2.1.8(@types/node@22.10.2)(terser@5.37.0) + vite: 5.4.11(@types/node@22.15.2)(terser@5.37.0) + vite-node: 2.1.8(@types/node@22.15.2)(terser@5.37.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@edge-runtime/vm': 3.2.0 + '@types/node': 22.15.2 + happy-dom: 14.12.3 + transitivePeerDependencies: + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vitest@3.1.3(@edge-runtime/vm@3.2.0)(@types/debug@4.1.12)(@types/node@22.15.2)(happy-dom@14.12.3)(terser@5.37.0): + dependencies: + '@vitest/expect': 3.1.3 + '@vitest/mocker': 3.1.3(vite@5.4.11(@types/node@22.15.2)(terser@5.37.0)) + '@vitest/pretty-format': 3.1.3 + '@vitest/runner': 3.1.3 + '@vitest/snapshot': 3.1.3 + '@vitest/spy': 3.1.3 + '@vitest/utils': 3.1.3 + chai: 5.2.0 + debug: 4.4.0 + expect-type: 1.2.1 + magic-string: 0.30.17 + pathe: 2.0.3 + std-env: 3.9.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.13 + tinypool: 1.0.2 + tinyrainbow: 2.0.0 + vite: 5.4.11(@types/node@22.15.2)(terser@5.37.0) + vite-node: 3.1.3(@types/node@22.15.2)(terser@5.37.0) why-is-node-running: 2.3.0 optionalDependencies: '@edge-runtime/vm': 3.2.0 - '@types/node': 22.10.2 + '@types/debug': 4.1.12 + '@types/node': 22.15.2 happy-dom: 14.12.3 transitivePeerDependencies: - less @@ -28346,6 +30848,19 @@ snapshots: vscode-textmate@8.0.0: {} + vue-eslint-parser@10.1.3(eslint@9.27.0(jiti@2.4.2)): + dependencies: + debug: 4.4.0 + eslint: 9.27.0(jiti@2.4.2) + eslint-scope: 8.2.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + lodash: 4.17.21 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + vue-eslint-parser@9.4.3(eslint@8.57.1): dependencies: debug: 4.4.0 @@ -28609,7 +31124,7 @@ snapshots: optionalDependencies: commander: 9.5.0 - zlib-sync@0.1.9: + zlib-sync@0.1.10: dependencies: nan: 2.22.0