From 3da66e12cc5b5bfe7a1d10f199993a1cf054de8d Mon Sep 17 00:00:00 2001 From: Skillz Date: Tue, 20 Dec 2022 14:24:05 -0600 Subject: [PATCH 1/3] fix: remove transformers from rest package --- packages/rest/src/transformers/activity.ts | 45 ---- packages/rest/src/transformers/application.ts | 44 ---- .../src/transformers/applicationCommand.ts | 35 --- .../transformers/applicationCommandOption.ts | 67 ------ .../applicationCommandOptionChoice.ts | 24 --- .../applicationCommandPermission.ts | 29 --- packages/rest/src/transformers/attachment.ts | 25 --- .../rest/src/transformers/auditLogEntry.ts | 158 -------------- .../transformers/automodActionExecution.ts | 44 ---- packages/rest/src/transformers/automodRule.ts | 48 ----- packages/rest/src/transformers/channel.ts | 103 --------- packages/rest/src/transformers/component.ts | 99 --------- packages/rest/src/transformers/embed.ts | 59 ----- packages/rest/src/transformers/emoji.ts | 18 -- packages/rest/src/transformers/gatewayBot.ts | 22 -- packages/rest/src/transformers/guild.ts | 144 ------------- packages/rest/src/transformers/index.ts | 37 ---- packages/rest/src/transformers/integration.ts | 53 ----- packages/rest/src/transformers/interaction.ts | 204 ------------------ packages/rest/src/transformers/invite.ts | 51 ----- packages/rest/src/transformers/member.ts | 60 ------ packages/rest/src/transformers/message.ts | 148 ------------- packages/rest/src/transformers/presence.ts | 40 ---- .../rest/src/transformers/reverse/activity.ts | 55 ----- .../transformers/reverse/allowedMentions.ts | 17 -- .../src/transformers/reverse/application.ts | 36 ---- .../reverse/applicationCommand.ts | 29 --- .../reverse/applicationCommandOption.ts | 29 --- .../reverse/applicationCommandOptionChoice.ts | 14 -- .../reverse/applicationCommandPermission.ts | 19 -- .../src/transformers/reverse/attachment.ts | 21 -- .../src/transformers/reverse/auditLogEntry.ts | 176 --------------- .../src/transformers/reverse/component.ts | 47 ---- .../reverse/createApplicationCommand.ts | 39 ---- .../rest/src/transformers/reverse/embed.ts | 60 ------ .../rest/src/transformers/reverse/emoji.ts | 23 -- .../src/transformers/reverse/gatewayBot.ts | 16 -- .../rest/src/transformers/reverse/index.ts | 19 -- .../reverse/interactionResponse.ts | 42 ---- .../rest/src/transformers/reverse/member.ts | 49 ----- .../rest/src/transformers/reverse/presence.ts | 31 --- .../rest/src/transformers/reverse/team.ts | 25 --- .../transformers/reverse/widgetSettings.ts | 13 -- packages/rest/src/transformers/role.ts | 33 --- .../rest/src/transformers/scheduledEvent.ts | 44 ---- .../rest/src/transformers/stageInstance.ts | 23 -- packages/rest/src/transformers/sticker.ts | 53 ----- packages/rest/src/transformers/team.ts | 26 --- packages/rest/src/transformers/template.ts | 23 -- .../rest/src/transformers/threadMember.ts | 40 ---- packages/rest/src/transformers/voiceRegion.ts | 22 -- packages/rest/src/transformers/voiceState.ts | 34 --- packages/rest/src/transformers/webhook.ts | 46 ---- .../rest/src/transformers/welcomeScreen.ts | 25 --- packages/rest/src/transformers/widget.ts | 33 --- .../rest/src/transformers/widgetSettings.ts | 21 -- 56 files changed, 2740 deletions(-) delete mode 100644 packages/rest/src/transformers/activity.ts delete mode 100644 packages/rest/src/transformers/application.ts delete mode 100644 packages/rest/src/transformers/applicationCommand.ts delete mode 100644 packages/rest/src/transformers/applicationCommandOption.ts delete mode 100644 packages/rest/src/transformers/applicationCommandOptionChoice.ts delete mode 100644 packages/rest/src/transformers/applicationCommandPermission.ts delete mode 100644 packages/rest/src/transformers/attachment.ts delete mode 100644 packages/rest/src/transformers/auditLogEntry.ts delete mode 100644 packages/rest/src/transformers/automodActionExecution.ts delete mode 100644 packages/rest/src/transformers/automodRule.ts delete mode 100644 packages/rest/src/transformers/channel.ts delete mode 100644 packages/rest/src/transformers/component.ts delete mode 100644 packages/rest/src/transformers/embed.ts delete mode 100644 packages/rest/src/transformers/emoji.ts delete mode 100644 packages/rest/src/transformers/gatewayBot.ts delete mode 100644 packages/rest/src/transformers/guild.ts delete mode 100644 packages/rest/src/transformers/index.ts delete mode 100644 packages/rest/src/transformers/integration.ts delete mode 100644 packages/rest/src/transformers/interaction.ts delete mode 100644 packages/rest/src/transformers/invite.ts delete mode 100644 packages/rest/src/transformers/member.ts delete mode 100644 packages/rest/src/transformers/message.ts delete mode 100644 packages/rest/src/transformers/presence.ts delete mode 100644 packages/rest/src/transformers/reverse/activity.ts delete mode 100644 packages/rest/src/transformers/reverse/allowedMentions.ts delete mode 100644 packages/rest/src/transformers/reverse/application.ts delete mode 100644 packages/rest/src/transformers/reverse/applicationCommand.ts delete mode 100644 packages/rest/src/transformers/reverse/applicationCommandOption.ts delete mode 100644 packages/rest/src/transformers/reverse/applicationCommandOptionChoice.ts delete mode 100644 packages/rest/src/transformers/reverse/applicationCommandPermission.ts delete mode 100644 packages/rest/src/transformers/reverse/attachment.ts delete mode 100644 packages/rest/src/transformers/reverse/auditLogEntry.ts delete mode 100644 packages/rest/src/transformers/reverse/component.ts delete mode 100644 packages/rest/src/transformers/reverse/createApplicationCommand.ts delete mode 100644 packages/rest/src/transformers/reverse/embed.ts delete mode 100644 packages/rest/src/transformers/reverse/emoji.ts delete mode 100644 packages/rest/src/transformers/reverse/gatewayBot.ts delete mode 100644 packages/rest/src/transformers/reverse/index.ts delete mode 100644 packages/rest/src/transformers/reverse/interactionResponse.ts delete mode 100644 packages/rest/src/transformers/reverse/member.ts delete mode 100644 packages/rest/src/transformers/reverse/presence.ts delete mode 100644 packages/rest/src/transformers/reverse/team.ts delete mode 100644 packages/rest/src/transformers/reverse/widgetSettings.ts delete mode 100644 packages/rest/src/transformers/role.ts delete mode 100644 packages/rest/src/transformers/scheduledEvent.ts delete mode 100644 packages/rest/src/transformers/stageInstance.ts delete mode 100644 packages/rest/src/transformers/sticker.ts delete mode 100644 packages/rest/src/transformers/team.ts delete mode 100644 packages/rest/src/transformers/template.ts delete mode 100644 packages/rest/src/transformers/threadMember.ts delete mode 100644 packages/rest/src/transformers/voiceRegion.ts delete mode 100644 packages/rest/src/transformers/voiceState.ts delete mode 100644 packages/rest/src/transformers/webhook.ts delete mode 100644 packages/rest/src/transformers/welcomeScreen.ts delete mode 100644 packages/rest/src/transformers/widget.ts delete mode 100644 packages/rest/src/transformers/widgetSettings.ts diff --git a/packages/rest/src/transformers/activity.ts b/packages/rest/src/transformers/activity.ts deleted file mode 100644 index b957b8d6f..000000000 --- a/packages/rest/src/transformers/activity.ts +++ /dev/null @@ -1,45 +0,0 @@ -import type { DiscordActivity, Optionalize } from '@discordeno/types' -import type { RestManager } from '../restManager.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformActivity (rest: RestManager, payload: DiscordActivity) { - const activity = { - name: payload.name, - type: payload.type, - url: payload.url ?? undefined, - createdAt: payload.created_at, - startedAt: payload.timestamps?.start, - endedAt: payload.timestamps?.end, - applicationId: payload.application_id - ? rest.transformers.snowflake(payload.application_id) - : undefined, - details: payload.details ?? undefined, - state: payload.state ?? undefined, - emoji: payload.emoji - ? { - name: payload.emoji.name, - animated: payload.emoji.animated, - id: payload.emoji.id - ? rest.transformers.snowflake(payload.emoji.id) - : undefined - } - : undefined, - partyId: payload.party?.id, - partyCurrentSize: payload.party?.size?.[0], - partyMaxSize: payload.party?.size?.[1], - largeImage: payload.assets?.large_image, - largeText: payload.assets?.large_text, - smallImage: payload.assets?.small_image, - smallText: payload.assets?.small_text, - join: payload.secrets?.join, - spectate: payload.secrets?.spectate, - match: payload.secrets?.match, - instance: payload.instance, - flags: payload.flags, - buttons: payload.buttons - } - - return activity as Optionalize -} - -export interface Activity extends ReturnType {} diff --git a/packages/rest/src/transformers/application.ts b/packages/rest/src/transformers/application.ts deleted file mode 100644 index d669e3728..000000000 --- a/packages/rest/src/transformers/application.ts +++ /dev/null @@ -1,44 +0,0 @@ -import type { - DiscordApplication, - DiscordUser, - Optionalize -} from '@discordeno/types' -import { iconHashToBigInt } from '@discordeno/utils' -import type { RestManager } from '../restManager.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformApplication ( - rest: RestManager, - payload: DiscordApplication -) { - const application = { - name: payload.name, - description: payload.description, - rpcOrigins: payload.rpc_origins, - botPublic: payload.bot_public, - botRequireCodeGrant: payload.bot_require_code_grant, - termsOfServiceUrl: payload.terms_of_service_url, - privacyPolicyUrl: payload.privacy_policy_url, - verifyKey: payload.verify_key, - primarySkuId: payload.primary_sku_id, - slug: payload.slug, - coverImage: payload.cover_image - ? iconHashToBigInt(payload.cover_image) - : undefined, - flags: payload.flags, - - id: rest.transformers.snowflake(payload.id), - icon: payload.icon ? iconHashToBigInt(payload.icon) : undefined, - owner: payload.owner - ? rest.transformers.user(rest, payload.owner as DiscordUser) - : undefined, - team: payload.team ? rest.transformers.team(rest, payload.team) : undefined, - guildId: payload.guild_id - ? rest.transformers.snowflake(payload.guild_id) - : undefined - } - - return application as Optionalize -} - -export interface Application extends ReturnType {} diff --git a/packages/rest/src/transformers/applicationCommand.ts b/packages/rest/src/transformers/applicationCommand.ts deleted file mode 100644 index 6747b6e85..000000000 --- a/packages/rest/src/transformers/applicationCommand.ts +++ /dev/null @@ -1,35 +0,0 @@ -import type { DiscordApplicationCommand, Optionalize } from '@discordeno/types' -import type { RestManager } from '../restManager.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformApplicationCommand ( - rest: RestManager, - payload: DiscordApplicationCommand -) { - const applicationCommand = { - id: rest.transformers.snowflake(payload.id), - applicationId: rest.transformers.snowflake(payload.application_id), - guildId: payload.guild_id - ? rest.transformers.snowflake(payload.guild_id) - : undefined, - name: payload.name, - nameLocalizations: payload.name_localizations ?? undefined, - description: payload.description, - descriptionLocalizations: payload.description_localizations ?? undefined, - defaultMemberPermissions: payload.default_member_permissions - ? rest.transformers.snowflake(payload.default_member_permissions) - : undefined, - dmPermission: payload.dm_permission ?? false, - type: payload.type, - version: payload.version, - - options: payload.options?.map((option) => - rest.transformers.applicationCommandOption(rest, option) - ) - } - - return applicationCommand as Optionalize -} - -export interface ApplicationCommand - extends ReturnType {} diff --git a/packages/rest/src/transformers/applicationCommandOption.ts b/packages/rest/src/transformers/applicationCommandOption.ts deleted file mode 100644 index 95b18443f..000000000 --- a/packages/rest/src/transformers/applicationCommandOption.ts +++ /dev/null @@ -1,67 +0,0 @@ -import type { - ApplicationCommandOptionTypes, - ChannelTypes, - DiscordApplicationCommandOption, - Localization -} from '@discordeno/types' -import type { RestManager } from '../restManager.js' -import type { ApplicationCommandOptionChoice } from './applicationCommandOptionChoice.js' - -export function transformApplicationCommandOption ( - rest: RestManager, - payload: DiscordApplicationCommandOption -): ApplicationCommandOption { - return { - type: payload.type, - name: payload.name, - nameLocalizations: payload.name_localizations ?? undefined, - description: payload.description, - descriptionLocalizations: payload.description_localizations ?? undefined, - required: payload.required ?? false, - choices: payload.choices?.map((choice) => - rest.transformers.applicationCommandOptionChoice(rest, choice) - ), - autocomplete: payload.autocomplete, - channelTypes: payload.channel_types, - minValue: payload.min_value, - maxValue: payload.max_value, - minLength: payload.min_length, - maxLength: payload.max_length, - options: payload.options?.map((option) => - rest.transformers.applicationCommandOption(rest, option) - ) - } -} - -// THIS TRANSFORMER HAS A CIRCULAR REFERENCE TO CALL ITSELF FOR OPTIONS SO AN AUTOMATED TYPE CAN NOT BE CREATED! - -export interface ApplicationCommandOption { - /** Value of Application Command Option Type */ - type: ApplicationCommandOptionTypes - /** 1-32 character name matching lowercase `^[\w-]{1,32}$` */ - name: string - /** Localization object for the `name` field. Values follow the same restrictions as `name` */ - nameLocalizations?: Localization - /** 1-100 character description */ - description: string - /** Localization object for the `description` field. Values follow the same restrictions as `description` */ - descriptionLocalizations?: Localization - /** If the parameter is required or optional--default `false` */ - required?: boolean - /** Choices for `string` and `int` types for the user to pick from */ - choices?: ApplicationCommandOptionChoice[] - /** If the option is a subcommand or subcommand group type, this nested options will be the parameters */ - options?: ApplicationCommandOption[] - /** If the option is a channel type, the channels shown will be restricted to these types */ - channelTypes?: ChannelTypes[] - /** Minimum number desired. */ - minValue?: number - /** Maximum number desired. */ - maxValue?: number - /** Minimum length desired. */ - minLength?: number - /** Maximum length desired. */ - maxLength?: number - /** if autocomplete interactions are enabled for this `String`, `Integer`, or `Number` type option */ - autocomplete?: boolean -} diff --git a/packages/rest/src/transformers/applicationCommandOptionChoice.ts b/packages/rest/src/transformers/applicationCommandOptionChoice.ts deleted file mode 100644 index 15764c7b9..000000000 --- a/packages/rest/src/transformers/applicationCommandOptionChoice.ts +++ /dev/null @@ -1,24 +0,0 @@ -import type { - DiscordApplicationCommandOptionChoice, - Optionalize -} from '@discordeno/types' -import type { RestManager } from '../restManager.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformApplicationCommandOptionChoice ( - rest: RestManager, - payload: DiscordApplicationCommandOptionChoice -) { - const applicationCommandChoice = { - name: payload.name, - nameLocalizations: payload.name_localizations ?? undefined, - value: payload.value - } - - return applicationCommandChoice as Optionalize< - typeof applicationCommandChoice - > -} - -export interface ApplicationCommandOptionChoice - extends ReturnType {} diff --git a/packages/rest/src/transformers/applicationCommandPermission.ts b/packages/rest/src/transformers/applicationCommandPermission.ts deleted file mode 100644 index b65bf8c2d..000000000 --- a/packages/rest/src/transformers/applicationCommandPermission.ts +++ /dev/null @@ -1,29 +0,0 @@ -import type { - DiscordGuildApplicationCommandPermissions, - Optionalize -} from '@discordeno/types' -import type { RestManager } from '../restManager.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformApplicationCommandPermission ( - rest: RestManager, - payload: DiscordGuildApplicationCommandPermissions -) { - const applicationCommandPermission = { - id: rest.transformers.snowflake(payload.id), - applicationId: rest.transformers.snowflake(payload.application_id), - guildId: rest.transformers.snowflake(payload.guild_id), - permissions: payload.permissions.map((perm) => ({ - id: rest.transformers.snowflake(perm.id), - type: perm.type, - permission: perm.permission - })) - } - - return applicationCommandPermission as Optionalize< - typeof applicationCommandPermission - > -} - -export interface ApplicationCommandPermission - extends ReturnType {} diff --git a/packages/rest/src/transformers/attachment.ts b/packages/rest/src/transformers/attachment.ts deleted file mode 100644 index 0b5f1fc79..000000000 --- a/packages/rest/src/transformers/attachment.ts +++ /dev/null @@ -1,25 +0,0 @@ -import type { DiscordAttachment, Optionalize } from '@discordeno/types' -import type { RestManager } from '../restManager.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformAttachment ( - rest: RestManager, - payload: DiscordAttachment -) { - const attachment = { - id: rest.transformers.snowflake(payload.id), - filename: payload.filename, - contentType: payload.content_type, - size: payload.size, - url: payload.url, - proxyUrl: payload.proxy_url, - height: payload.height ?? undefined, - width: payload.width ?? undefined, - ephemeral: payload.ephemeral, - description: payload.description - } - - return attachment as Optionalize -} - -export interface Attachment extends ReturnType {} diff --git a/packages/rest/src/transformers/auditLogEntry.ts b/packages/rest/src/transformers/auditLogEntry.ts deleted file mode 100644 index c3685717b..000000000 --- a/packages/rest/src/transformers/auditLogEntry.ts +++ /dev/null @@ -1,158 +0,0 @@ -import type { DiscordAuditLogEntry, Optionalize } from '@discordeno/types' -import type { RestManager } from '../restManager.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformAuditLogEntry ( - rest: RestManager, - payload: DiscordAuditLogEntry -) { - const auditLogEntry = { - id: rest.transformers.snowflake(payload.id), - changes: payload.changes?.map((change) => { - switch (change.key) { - case '$add': - case '$remove': - return { - key: change.key, - new: change.new_value?.map((val) => ({ - id: val.id ? rest.transformers.snowflake(val.id) : undefined, - name: val.name - })), - old: change.old_value?.map((val) => ({ - id: val?.id ? rest.transformers.snowflake(val.id) : undefined, - name: val?.name - })) - } - case 'discovery_splash_hash': - case 'banner_hash': - case 'rules_channel_id': - case 'public_updates_channel_id': - case 'icon_hash': - case 'image_hash': - case 'splash_hash': - case 'owner_id': - case 'widget_channel_id': - case 'system_channel_id': - case 'application_id': - case 'permissions': - case 'allow': - case 'deny': - case 'channel_id': - case 'inviter_id': - case 'avatar_hash': - case 'id': - return { - key: change.key, - old: change.old_value - ? rest.transformers.snowflake(change.old_value) - : undefined, - new: change.new_value - ? rest.transformers.snowflake(change.new_value) - : undefined - } - case 'name': - case 'description': - case 'preferred_locale': - case 'region': - case 'afk_channel_id': - case 'vanity_url_code': - case 'topic': - case 'code': - case 'nick': - case 'location': - return { - key: change.key, - old: change.old_value, - new: change.new_value - } - case 'afk_timeout': - case 'mfa_level': - case 'verification_level': - case 'explicit_content_filter': - case 'default_message_notifications': - case 'prune_delete_days': - case 'position': - case 'bitrate': - case 'rate_limit_per_user': - case 'color': - case 'max_uses': - case 'uses': - case 'max_age': - case 'expire_behavior': - case 'expire_grace_period': - case 'user_limit': - case 'privacy_level': - case 'entity_type': - case 'status': - return { - key: change.key, - old: change.old_value ? Number(change.old_value) : undefined, - new: change.new_value ? Number(change.new_value) : undefined - } - case 'widget_enabled': - case 'nsfw': - case 'hoist': - case 'mentionable': - case 'temporary': - case 'deaf': - case 'mute': - case 'enable_emoticons': - return { - key: change.key, - old: change.old_value ?? false, - new: change.new_value ?? false - } - case 'permission_overwrites': - return { - key: change.key, - old: change.old_value, - new: change.new_value - } - default: - return { - key: change.key, - old: change.old_value, - new: change.new_value - } - } - }), - userId: payload.user_id - ? rest.transformers.snowflake(payload.user_id) - : undefined, - targetId: payload.target_id - ? rest.transformers.snowflake(payload.target_id) - : undefined, - actionType: payload.action_type, - options: payload.options - ? { - autoModerationRuleName: payload.options.auto_moderation_rule_name, - autoModerationRuleTriggerType: - payload.options.auto_moderation_rule_trigger_type, - deleteMemberDays: payload.options.delete_member_days - ? Number(payload.options.delete_member_days) - : 0, - membersRemoved: payload.options.members_removed - ? Number(payload.options.members_removed) - : 0, - channelId: payload.options.channel_id - ? rest.transformers.snowflake(payload.options.channel_id) - : undefined, - messageId: payload.options.message_id - ? rest.transformers.snowflake(payload.options.message_id) - : undefined, - count: payload.options.count ? Number(payload.options.count) : 0, - id: payload.options.id - ? rest.transformers.snowflake(payload.options.id) - : undefined, - type: Number(payload.options.type), - roleName: payload.options.role_name - } - : undefined, - reason: payload.reason - } - - return auditLogEntry as Optionalize -} - -export interface AuditLogEntry - extends ReturnType {} diff --git a/packages/rest/src/transformers/automodActionExecution.ts b/packages/rest/src/transformers/automodActionExecution.ts deleted file mode 100644 index cd235d167..000000000 --- a/packages/rest/src/transformers/automodActionExecution.ts +++ /dev/null @@ -1,44 +0,0 @@ -import type { - DiscordAutoModerationActionExecution, - Optionalize -} from '@discordeno/types' -import type { RestManager } from '../restManager.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformAutoModerationActionExecution ( - rest: RestManager, - payload: DiscordAutoModerationActionExecution -) { - const rule = { - content: payload.content, - ruleTriggerType: payload.rule_trigger_type, - guildId: rest.transformers.snowflake(payload.guild_id), - ruleId: rest.transformers.snowflake(payload.rule_id), - userId: rest.transformers.snowflake(payload.user_id), - channelId: payload.channel_id - ? rest.transformers.snowflake(payload.channel_id) - : undefined, - messageId: payload.message_id - ? rest.transformers.snowflake(payload.message_id) - : undefined, - alertSystemMessageId: payload.alert_system_message_id - ? rest.transformers.snowflake(payload.alert_system_message_id) - : undefined, - matchedKeyword: payload.matched_keyword ?? '', - matchedContent: payload.matched_content ?? '', - action: { - type: payload.action.type, - metadata: { - durationSeconds: payload.action.metadata.duration_seconds, - channelId: payload.action.metadata.channel_id - ? rest.transformers.snowflake(payload.action.metadata.channel_id) - : undefined - } - } - } - - return rule as Optionalize -} - -export interface AutoModerationActionExecution - extends ReturnType {} diff --git a/packages/rest/src/transformers/automodRule.ts b/packages/rest/src/transformers/automodRule.ts deleted file mode 100644 index d633c284c..000000000 --- a/packages/rest/src/transformers/automodRule.ts +++ /dev/null @@ -1,48 +0,0 @@ -import type { DiscordAutoModerationRule, Optionalize } from '@discordeno/types' -import type { RestManager } from '../restManager.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformAutoModerationRule ( - rest: RestManager, - payload: DiscordAutoModerationRule -) { - const rule = { - name: payload.name, - eventType: payload.event_type, - triggerType: payload.trigger_type, - enabled: payload.enabled, - id: rest.transformers.snowflake(payload.id), - guildId: rest.transformers.snowflake(payload.guild_id), - creatorId: rest.transformers.snowflake(payload.creator_id), - exemptRoles: payload.exempt_roles.map((id) => - rest.transformers.snowflake(id) - ), - exemptChannels: payload.exempt_channels.map((id) => - rest.transformers.snowflake(id) - ), - triggerMetadata: payload.trigger_metadata - ? { - keywordFilter: payload.trigger_metadata.keyword_filter, - presets: payload.trigger_metadata.presets, - allowList: payload.trigger_metadata.allow_list, - mentionTotalLimit: payload.trigger_metadata.mention_total_limit - } - : undefined, - actions: payload.actions.map((action) => ({ - type: action.type, - metadata: action.metadata - ? { - channelId: action.metadata.channel_id - ? rest.transformers.snowflake(action.metadata.channel_id) - : undefined, - durationSeconds: action.metadata.duration_seconds - } - : undefined - })) - } - - return rule as Optionalize -} - -export interface AutoModerationRule - extends ReturnType {} diff --git a/packages/rest/src/transformers/channel.ts b/packages/rest/src/transformers/channel.ts deleted file mode 100644 index ebc67af14..000000000 --- a/packages/rest/src/transformers/channel.ts +++ /dev/null @@ -1,103 +0,0 @@ -import type { DiscordChannel, Optionalize } from '@discordeno/types' -import type { RestManager } from '../restManager.js' - -const Mask = (1n << 64n) - 1n - -export function packOverwrites ( - allow: string, - deny: string, - id: string, - type: number -): bigint { - return pack64(allow, 0) | pack64(deny, 1) | pack64(id, 2) | pack64(type, 3) -} -function unpack64 (v: bigint, shift: number): bigint { - return (v >> BigInt(shift * 64)) & Mask -} -function pack64 (v: string | number, shift: number): bigint { - const b = BigInt(v) - if (b < 0 || b > Mask) { - throw new Error(`should have been a 64 bit unsigned integer: ${v}`) - } - return b << BigInt(shift * 64) -} -export function separateOverwrites ( - v: bigint -): [number, bigint, bigint, bigint] { - return [ - Number(unpack64(v, 3)), - unpack64(v, 2), - unpack64(v, 0), - unpack64(v, 1) - ] as [number, bigint, bigint, bigint] -} - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformChannel ( - rest: RestManager, - payload: { channel: DiscordChannel } & { guildId?: bigint } -) { - const channel = { - // UNTRANSFORMED STUFF HERE - type: payload.channel.type, - position: payload.channel.position, - name: payload.channel.name, - topic: payload.channel.topic ?? undefined, - nsfw: payload.channel.nsfw, - bitrate: payload.channel.bitrate, - userLimit: payload.channel.user_limit, - rateLimitPerUser: payload.channel.rate_limit_per_user, - // recipients: payload.channel.recipients?.map((r) => rest.transformers.user(rest, r)), - rtcRegion: payload.channel.rtc_region ?? undefined, - videoQualityMode: payload.channel.video_quality_mode, - guildId: - payload.guildId ?? - (payload.channel.guild_id - ? rest.transformers.snowflake(payload.channel.guild_id) - : 0n), - lastPinTimestamp: payload.channel.last_pin_timestamp - ? Date.parse(payload.channel.last_pin_timestamp) - : undefined, - permissionOverwrites: payload.channel.permission_overwrites - ? payload.channel.permission_overwrites.map((o) => - packOverwrites(o.allow ?? '0', o.deny ?? '0', o.id, o.type) - ) - : [], - - id: rest.transformers.snowflake(payload.channel.id), - permissions: payload.channel.permissions - ? rest.transformers.snowflake(payload.channel.permissions) - : undefined, - lastMessageId: payload.channel.last_message_id - ? rest.transformers.snowflake(payload.channel.last_message_id) - : undefined, - ownerId: payload.channel.owner_id - ? rest.transformers.snowflake(payload.channel.owner_id) - : undefined, - applicationId: payload.channel.application_id - ? rest.transformers.snowflake(payload.channel.application_id) - : undefined, - parentId: payload.channel.parent_id - ? rest.transformers.snowflake(payload.channel.parent_id) - : undefined, - memberCount: payload.channel.member_count, - messageCount: payload.channel.message_count, - archiveTimestamp: payload.channel.thread_metadata?.archive_timestamp - ? Date.parse(payload.channel.thread_metadata.archive_timestamp) - : undefined, - autoArchiveDuration: payload.channel.thread_metadata?.auto_archive_duration, - botIsMember: Boolean(payload.channel.member), - archived: payload.channel.thread_metadata?.archived, - locked: payload.channel.thread_metadata?.locked, - invitable: payload.channel.thread_metadata?.invitable, - createTimestamp: payload.channel.thread_metadata?.create_timestamp - ? Date.parse(payload.channel.thread_metadata.create_timestamp) - : undefined, - newlyCreated: payload.channel.newly_created, - flags: payload.channel.flags - } - - return channel as Optionalize -} - -export interface Channel extends ReturnType {} diff --git a/packages/rest/src/transformers/component.ts b/packages/rest/src/transformers/component.ts deleted file mode 100644 index b7b6834a4..000000000 --- a/packages/rest/src/transformers/component.ts +++ /dev/null @@ -1,99 +0,0 @@ -import type { - ButtonStyles, - DiscordComponent, - MessageComponentTypes, - SelectOption, - TextStyles -} from '@discordeno/types' -import type { RestManager } from '../restManager.js' - -export function transformComponent ( - rest: RestManager, - payload: DiscordComponent -): Component { - return { - type: payload.type, - customId: payload.custom_id, - disabled: payload.disabled, - style: payload.style, - label: payload.label, - emoji: payload.emoji - ? { - id: payload.emoji.id - ? rest.transformers.snowflake(payload.emoji.id) - : undefined, - name: payload.emoji.name, - animated: payload.emoji.animated - } - : undefined, - url: payload.url, - options: payload.options?.map((option) => ({ - label: option.label, - value: option.value, - description: option.description, - emoji: option.emoji - ? { - id: option.emoji.id - ? rest.transformers.snowflake(option.emoji.id) - : undefined, - name: option.emoji.name, - animated: option.emoji.animated - } - : undefined, - default: option.default - })), - placeholder: payload.placeholder, - minValues: payload.min_values, - maxValues: payload.max_values, - minLength: payload.min_length, - maxLength: payload.max_length, - value: payload.value, - components: payload.components?.map((component) => - rest.transformers.component(rest, component) - ) - } -} - -// THIS TRANSFORMER HAS A CIRCULAR REFERENCE TO CALL ITSELF FOR COMPONENTS SO AN AUTOMATED TYPE CAN NOT BE CREATED! - -export interface Component { - /** component type */ - type: MessageComponentTypes - /** a developer-defined identifier for the component, max 100 characters */ - customId?: string - /** whether this component is required to be filled, default true */ - required?: boolean - /** whether the component is disabled, default false */ - disabled?: boolean - /** For different styles/colors of the buttons */ - style?: ButtonStyles | TextStyles - /** text that appears on the button (max 80 characters) */ - label?: string - /** the dev-define value of the option, max 100 characters for select or 4000 for input. */ - value?: string - /** Emoji object that includes fields of name, id, and animated supporting unicode and custom emojis. */ - emoji?: { - /** Emoji id */ - id?: bigint - /** Emoji name */ - name?: string - /** Whether this emoji is animated */ - animated?: boolean - } - /** optional url for link-style buttons that can navigate a user to the web. Only type 5 Link buttons can have a url */ - url?: string - /** The choices! Maximum of 25 items. */ - options?: SelectOption[] - /** A custom placeholder text if nothing is selected. Maximum 150 characters. */ - placeholder?: string - /** The minimum number of items that must be selected. Default 1. Between 1-25. */ - minValues?: number - /** The maximum number of items that can be selected. Default 1. Between 1-25. */ - maxValues?: number - /** The minimum input length for a text input. Between 0-4000. */ - minLength?: number - /** The maximum input length for a text input. Between 1-4000. */ - maxLength?: number - /** a list of child components */ - components?: Component[] -} diff --git a/packages/rest/src/transformers/embed.ts b/packages/rest/src/transformers/embed.ts deleted file mode 100644 index 86fe965bb..000000000 --- a/packages/rest/src/transformers/embed.ts +++ /dev/null @@ -1,59 +0,0 @@ -import type { DiscordEmbed, Optionalize } from '@discordeno/types' -import type { RestManager } from '../restManager.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformEmbed (rest: RestManager, payload: DiscordEmbed) { - const embed = { - title: payload.title, - type: payload.type, - description: payload.description, - url: payload.url, - timestamp: payload.timestamp ? Date.parse(payload.timestamp) : undefined, - color: payload.color, - footer: payload.footer - ? { - text: payload.footer.text, - iconUrl: payload.footer.icon_url, - proxyIconUrl: payload.footer.proxy_icon_url - } - : undefined, - image: payload.image - ? { - url: payload.image.url, - proxyUrl: payload.image.proxy_url, - height: payload.image.height, - width: payload.image.width - } - : undefined, - thumbnail: payload.thumbnail - ? { - url: payload.thumbnail.url, - proxyUrl: payload.thumbnail.proxy_url, - height: payload.thumbnail.height, - width: payload.thumbnail.width - } - : undefined, - video: payload.video - ? { - url: payload.video.url, - proxyUrl: payload.video.proxy_url, - height: payload.video.height, - width: payload.video.width - } - : undefined, - provider: payload.provider, - author: payload.author - ? { - name: payload.author.name, - url: payload.author.url, - iconUrl: payload.author.icon_url, - proxyIconUrl: payload.author.proxy_icon_url - } - : undefined, - fields: payload.fields - } - - return embed as Optionalize -} - -export interface Embed extends ReturnType {} diff --git a/packages/rest/src/transformers/emoji.ts b/packages/rest/src/transformers/emoji.ts deleted file mode 100644 index 6b08be64d..000000000 --- a/packages/rest/src/transformers/emoji.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type { DiscordEmoji, Optionalize } from '@discordeno/types' -import type { RestManager } from '../restManager.js' -import { EmojiToggles } from './toggles/emoji.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformEmoji (rest: RestManager, payload: DiscordEmoji) { - const emoji = { - id: payload.id ? rest.transformers.snowflake(payload.id) : undefined, - name: payload.name, - roles: payload.roles?.map((id) => rest.transformers.snowflake(id)), - user: payload.user ? rest.transformers.user(rest, payload.user) : undefined, - toggles: new EmojiToggles(payload) - } - - return emoji as Optionalize -} - -export interface Emoji extends ReturnType {} diff --git a/packages/rest/src/transformers/gatewayBot.ts b/packages/rest/src/transformers/gatewayBot.ts deleted file mode 100644 index bcc789ee8..000000000 --- a/packages/rest/src/transformers/gatewayBot.ts +++ /dev/null @@ -1,22 +0,0 @@ -import type { - DiscordGetGatewayBot, - GetGatewayBot, - Optionalize -} from '@discordeno/types' - -export function transformGatewayBot ( - payload: DiscordGetGatewayBot -): GetGatewayBot { - const gatewayBot = { - url: payload.url, - shards: payload.shards, - sessionStartLimit: { - total: payload.session_start_limit.total, - remaining: payload.session_start_limit.remaining, - resetAfter: payload.session_start_limit.reset_after, - maxConcurrency: payload.session_start_limit.max_concurrency - } - } - - return gatewayBot as Optionalize -} diff --git a/packages/rest/src/transformers/guild.ts b/packages/rest/src/transformers/guild.ts deleted file mode 100644 index 49feedc5f..000000000 --- a/packages/rest/src/transformers/guild.ts +++ /dev/null @@ -1,144 +0,0 @@ -import type { DiscordGuild, Optionalize } from '@discordeno/types' -import { Collection, iconHashToBigInt } from '@discordeno/utils' -import type { RestManager } from '../restManager.js' -import type { Emoji } from '../transformers/emoji.js' -import { GuildToggles } from './toggles/guild.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformGuild ( - rest: RestManager, - payload: { guild: DiscordGuild } & { shardId: number } -) { - const guildId = rest.transformers.snowflake(payload.guild.id) - - const guild = { - afkTimeout: payload.guild.afk_timeout, - approximateMemberCount: payload.guild.approximate_member_count, - approximatePresenceCount: payload.guild.approximate_presence_count, - defaultMessageNotifications: payload.guild.default_message_notifications, - description: payload.guild.description, - explicitContentFilter: payload.guild.explicit_content_filter, - toggles: new GuildToggles(payload.guild), - maxMembers: payload.guild.max_members, - maxPresences: payload.guild.max_presences ?? undefined, - maxVideoChannelUsers: payload.guild.max_video_channel_users, - mfaLevel: payload.guild.mfa_level, - name: payload.guild.name, - nsfwLevel: payload.guild.nsfw_level, - preferredLocale: payload.guild.preferred_locale, - premiumSubscriptionCount: payload.guild.premium_subscription_count, - premiumTier: payload.guild.premium_tier, - stageInstances: payload.guild.stage_instances?.map((si) => ({ - /** The id of this Stage instance */ - id: rest.transformers.snowflake(si.id), - /** The guild id of the associated Stage channel */ - guildId, - /** The id of the associated Stage channel */ - channelId: rest.transformers.snowflake(si.channel_id), - /** The topic of the Stage instance (1-120 characters) */ - topic: si.topic - })), - systemChannelFlags: payload.guild.system_channel_flags, - vanityUrlCode: payload.guild.vanity_url_code, - verificationLevel: payload.guild.verification_level, - welcomeScreen: payload.guild.welcome_screen - ? { - description: payload.guild.welcome_screen.description ?? undefined, - welcomeChannels: payload.guild.welcome_screen.welcome_channels.map( - (wc) => ({ - channelId: rest.transformers.snowflake(wc.channel_id), - description: wc.description, - emojiId: wc.emoji_id - ? rest.transformers.snowflake(wc.emoji_id) - : undefined, - emojiName: wc.emoji_name ?? undefined - }) - ) - } - : undefined, - discoverySplash: payload.guild.discovery_splash - ? iconHashToBigInt(payload.guild.discovery_splash) - : undefined, - - joinedAt: payload.guild.joined_at - ? Date.parse(payload.guild.joined_at) - : undefined, - memberCount: payload.guild.member_count ?? 0, - shardId: payload.shardId, - icon: payload.guild.icon ? iconHashToBigInt(payload.guild.icon) : undefined, - banner: payload.guild.banner - ? iconHashToBigInt(payload.guild.banner) - : undefined, - splash: payload.guild.splash - ? iconHashToBigInt(payload.guild.splash) - : undefined, - channels: new Collection( - payload.guild.channels?.map((channel) => { - const result = rest.transformers.channel(rest, { channel, guildId }) - return [result.id, result] - }) - ), - members: new Collection( - payload.guild.members?.map((member) => { - const result = rest.transformers.member( - rest, - member, - guildId, - rest.transformers.snowflake(member.user!.id) - ) - return [result.id, result] - }) - ), - roles: new Collection( - payload.guild.roles?.map((role) => { - const result = rest.transformers.role(rest, { role, guildId }) - return [result.id, result] - }) - ), - emojis: new Collection( - (payload.guild.emojis ?? []).map((emoji) => { - const em: Emoji = rest.transformers.emoji(rest, emoji) - return [em.id!, em] - }) - ), - voiceStates: new Collection( - (payload.guild.voice_states ?? []) - .map((vs) => - rest.transformers.voiceState(rest, { voiceState: vs, guildId }) - ) - .map((vs) => [vs.userId, vs]) - ), - - id: guildId, - // WEIRD EDGE CASE WITH BOT CREATED SERVERS - ownerId: payload.guild.owner_id - ? rest.transformers.snowflake(payload.guild.owner_id) - : 0n, - permissions: payload.guild.permissions - ? rest.transformers.snowflake(payload.guild.permissions) - : 0n, - afkChannelId: payload.guild.afk_channel_id - ? rest.transformers.snowflake(payload.guild.afk_channel_id) - : undefined, - widgetChannelId: payload.guild.widget_channel_id - ? rest.transformers.snowflake(payload.guild.widget_channel_id) - : undefined, - applicationId: payload.guild.application_id - ? rest.transformers.snowflake(payload.guild.application_id) - : undefined, - systemChannelId: payload.guild.system_channel_id - ? rest.transformers.snowflake(payload.guild.system_channel_id) - : undefined, - rulesChannelId: payload.guild.rules_channel_id - ? rest.transformers.snowflake(payload.guild.rules_channel_id) - : undefined, - publicUpdatesChannelId: payload.guild.public_updates_channel_id - ? rest.transformers.snowflake(payload.guild.public_updates_channel_id) - : undefined, - premiumProgressBarEnabled: payload.guild.premium_progress_bar_enabled - } - - return guild as Optionalize -} - -export interface Guild extends ReturnType {} diff --git a/packages/rest/src/transformers/index.ts b/packages/rest/src/transformers/index.ts deleted file mode 100644 index ecc68e01f..000000000 --- a/packages/rest/src/transformers/index.ts +++ /dev/null @@ -1,37 +0,0 @@ -export * from './activity.js' -export * from './application.js' -export * from './applicationCommand.js' -export * from './applicationCommandOption.js' -export * from './applicationCommandOptionChoice.js' -export * from './applicationCommandPermission.js' -export * from './attachment.js' -export * from './auditLogEntry.js' -export * from './automodActionExecution.js' -export * from './automodRule.js' -export * from './channel.js' -export * from './component.js' -export * from './embed.js' -export * from './emoji.js' -export * from './gatewayBot.js' -export * from './guild.js' -export * from './integration.js' -export * from './interaction.js' -export * from './invite.js' -export * from './member.js' -export * from './message.js' -export * from './presence.js' -export * from './reverse/index.js' -export * from './role.js' -export * from './scheduledEvent.js' -export * from './stageInstance.js' -export * from './sticker.js' -export * from './team.js' -export * from './template.js' -export * from './threadMember.js' -export * from './toggles/index.js' -export * from './voiceRegion.js' -export * from './voiceState.js' -export * from './webhook.js' -export * from './welcomeScreen.js' -export * from './widget.js' -export * from './widgetSettings.js' diff --git a/packages/rest/src/transformers/integration.ts b/packages/rest/src/transformers/integration.ts deleted file mode 100644 index 87e88d8be..000000000 --- a/packages/rest/src/transformers/integration.ts +++ /dev/null @@ -1,53 +0,0 @@ -import type { - DiscordIntegrationCreateUpdate, - Optionalize -} from '@discordeno/types' -import { iconHashToBigInt } from '@discordeno/utils' -import type { RestManager } from '../restManager.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformIntegration ( - rest: RestManager, - payload: DiscordIntegrationCreateUpdate -) { - const integration = { - guildId: rest.transformers.snowflake(payload.guild_id), - id: rest.transformers.snowflake(payload.id), - name: payload.name, - type: payload.type, - enabled: payload.enabled, - syncing: payload.syncing, - roleId: payload.role_id - ? rest.transformers.snowflake(payload.role_id) - : undefined, - enableEmoticons: payload.enable_emoticons, - expireBehavior: payload.expire_behavior, - expireGracePeriod: payload.expire_grace_period, - user: payload.user ? rest.transformers.user(rest, payload.user) : undefined, - account: { - id: rest.transformers.snowflake(payload.account.id), - name: payload.account.name - }, - syncedAt: payload.synced_at ? Date.parse(payload.synced_at) : undefined, - subscriberCount: payload.subscriber_count, - revoked: payload.revoked, - application: payload.application - ? { - id: rest.transformers.snowflake(payload.application.id), - name: payload.application.name, - icon: payload.application.icon - ? iconHashToBigInt(payload.application.icon) - : undefined, - description: payload.application.description, - bot: payload.application.bot - ? rest.transformers.user(rest, payload.application.bot) - : undefined - } - : undefined, - scopes: payload.scopes - } - - return integration as Optionalize -} - -export interface Integration extends ReturnType {} diff --git a/packages/rest/src/transformers/interaction.ts b/packages/rest/src/transformers/interaction.ts deleted file mode 100644 index 224f976ea..000000000 --- a/packages/rest/src/transformers/interaction.ts +++ /dev/null @@ -1,204 +0,0 @@ -import type { - ChannelTypes, - DiscordInteraction, - DiscordInteractionDataOption, - DiscordInteractionDataResolved, - Optionalize -} from '@discordeno/types' -import { Collection } from '@discordeno/utils' -import type { RestManager } from '../restManager.js' -import type { Attachment } from './attachment.js' -import type { Member, User } from './member.js' -import type { Message } from './message.js' -import type { Role } from './role.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformInteraction ( - rest: RestManager, - payload: DiscordInteraction -) { - const guildId = payload.guild_id - ? rest.transformers.snowflake(payload.guild_id) - : undefined - const user = rest.transformers.user( - rest, - payload.member?.user ?? payload.user! - ) - - const interaction = { - // UNTRANSFORMED STUFF HERE - type: payload.type, - token: payload.token, - version: payload.version, - locale: payload.locale, - guildLocale: payload.guild_locale, - - // TRANSFORMED STUFF BELOW - guildId, - user, - id: rest.transformers.snowflake(payload.id), - applicationId: rest.transformers.snowflake(payload.application_id), - appPermissions: payload.app_permissions - ? rest.transformers.snowflake(payload.app_permissions) - : undefined, - message: payload.message - ? rest.transformers.message(rest, payload.message) - : undefined, - channelId: payload.channel_id - ? rest.transformers.snowflake(payload.channel_id) - : undefined, - member: - payload.member && guildId - ? rest.transformers.member(rest, payload.member, guildId, user.id) - : undefined, - - data: payload.data - ? { - componentType: payload.data.component_type, - customId: payload.data.custom_id, - components: payload.data.components?.map((component) => - rest.transformers.component(rest, component) - ), - values: payload.data.values, - id: payload.data.id - ? rest.transformers.snowflake(payload.data.id) - : undefined, - name: payload.data.name, - resolved: payload.data.resolved - ? transformInteractionDataResolved( - rest, - payload.data.resolved, - guildId - ) - : undefined, - options: payload.data.options?.map((opt) => - rest.transformers.interactionDataOptions(rest, opt) - ), - targetId: payload.data.target_id - ? rest.transformers.snowflake(payload.data.target_id) - : undefined, - guildId: payload.data.guild_id - ? rest.transformers.snowflake(payload.data.guild_id) - : undefined - } - : undefined - } - - return interaction -} - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformInteractionDataOption ( - rest: RestManager, - option: DiscordInteractionDataOption -) { - const opt = { - name: option.name, - type: option.type, - value: option.value, - options: option.options, - focused: option.focused - } - - return opt as Optionalize -} - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformInteractionDataResolved ( - rest: RestManager, - resolved: DiscordInteractionDataResolved, - guildId?: bigint -) { - const transformed: { - messages?: Collection - users?: Collection - members?: Collection - roles?: Collection - channels?: Collection< - bigint, - { id: bigint, name: string, type: ChannelTypes, permissions: bigint } - > - attachments?: Collection - } = {} - - if (resolved.messages) { - transformed.messages = new Collection( - Object.entries(resolved.messages).map(([id, value]) => { - const message: Message = rest.transformers.message(rest, value) - return [message.id, message] - }) - ) - } - - if (resolved.users) { - transformed.users = new Collection( - Object.entries(resolved.users).map(([id, value]) => { - const user = rest.transformers.user(rest, value) - return [user.id, user] - }) - ) - } - - if (guildId && resolved.members) { - transformed.members = new Collection( - Object.entries(resolved.members).map(([id, value]) => { - const member: Member = rest.transformers.member( - rest, - value, - guildId, - rest.transformers.snowflake(id) - ) - return [member.id, member] - }) - ) - } - - if (guildId && resolved.roles) { - transformed.roles = new Collection( - Object.entries(resolved.roles).map(([id, value]) => { - const role = rest.transformers.role(rest, { role: value, guildId }) - return [role.id, role] - }) - ) - } - - if (resolved.channels) { - transformed.channels = new Collection( - Object.entries(resolved.channels).map(([key, value]) => { - const id = rest.transformers.snowflake(key) - const channel = value as { - id: string - name: string - type: ChannelTypes - permissions: string - } - return [ - id, - { - id, - name: channel.name, - type: channel.type, - permissions: rest.transformers.snowflake(channel.permissions) - } - ] - }) - ) - } - - if (resolved.attachments) { - transformed.attachments = new Collection( - Object.entries(resolved.attachments).map(([key, value]) => { - const id = rest.transformers.snowflake(key) - return [id, rest.transformers.attachment(rest, value)] - }) - ) - } - - return transformed -} - -export interface Interaction extends ReturnType {} -export interface InteractionDataResolved - extends ReturnType {} -export interface InteractionDataOption - extends ReturnType {} diff --git a/packages/rest/src/transformers/invite.ts b/packages/rest/src/transformers/invite.ts deleted file mode 100644 index c09520eee..000000000 --- a/packages/rest/src/transformers/invite.ts +++ /dev/null @@ -1,51 +0,0 @@ -import type { DiscordInviteCreate, Optionalize } from '@discordeno/types' -import type { RestManager } from '../restManager.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformInvite ( - rest: RestManager, - invite: DiscordInviteCreate -) { - const transformedInvite = { - /** The channel the invite is for */ - channelId: rest.transformers.snowflake(invite.channel_id), - /** The unique invite code */ - code: invite.code, - /** The time at which the invite was created */ - createdAt: Date.parse(invite.created_at), - /** The guild of the invite */ - guildId: invite.guild_id - ? rest.transformers.snowflake(invite.guild_id) - : undefined, - /** The user that created the invite */ - inviter: invite.inviter - ? rest.transformers.user(rest, invite.inviter) - : undefined, - /** How long the invite is valid for (in seconds) */ - maxAge: invite.max_age, - /** The maximum number of times the invite can be used */ - maxUses: invite.max_uses, - /** The type of target for this voice channel invite */ - targetType: invite.target_type, - /** The target user for this invite */ - targetUser: invite.target_user - ? rest.transformers.user(rest, invite.target_user) - : undefined, - /** The embedded application to open for this voice channel embedded application invite */ - targetApplication: invite.target_application - ? rest.transformers.application( - rest, - // @ts-expect-error should not break anything even though its partial. if it does blame wolf :) - invite.target_application - ) - : undefined, - /** Whether or not the invite is temporary (invited users will be kicked on disconnect unless they're assigned a role) */ - temporary: invite.temporary, - /** How many times the invite has been used (always will be 0) */ - uses: invite.uses - } - - return transformedInvite as Optionalize -} - -export interface Invite extends ReturnType {} diff --git a/packages/rest/src/transformers/member.ts b/packages/rest/src/transformers/member.ts deleted file mode 100644 index d138940e4..000000000 --- a/packages/rest/src/transformers/member.ts +++ /dev/null @@ -1,60 +0,0 @@ -import type { - DiscordMember, - DiscordUser, - Optionalize -} from '@discordeno/types' -import { iconHashToBigInt } from '@discordeno/utils' -import type { RestManager } from '../restManager.js' -import { MemberToggles } from './toggles/member.js' -import { UserToggles } from './toggles/user.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformUser (rest: RestManager, payload: DiscordUser) { - const user = { - id: rest.transformers.snowflake(payload.id || ''), - username: payload.username, - discriminator: payload.discriminator, - avatar: payload.avatar ? iconHashToBigInt(payload.avatar) : undefined, - locale: payload.locale, - email: payload.email ?? undefined, - flags: payload.flags, - premiumType: payload.premium_type, - publicFlags: payload.public_flags, - toggles: new UserToggles(payload) - } - - return user as Optionalize -} - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformMember ( - rest: RestManager, - payload: DiscordMember, - guildId: bigint, - userId: bigint -) { - const member = { - id: userId, - guildId, - user: payload.user ? rest.transformers.user(rest, payload.user) : undefined, - nick: payload.nick ?? undefined, - roles: payload.roles.map((id) => rest.transformers.snowflake(id)), - joinedAt: Date.parse(payload.joined_at), - premiumSince: payload.premium_since - ? Date.parse(payload.premium_since) - : undefined, - avatar: payload.avatar ? iconHashToBigInt(payload.avatar) : undefined, - permissions: payload.permissions - ? rest.transformers.snowflake(payload.permissions) - : undefined, - communicationDisabledUntil: payload.communication_disabled_until - ? Date.parse(payload.communication_disabled_until) - : undefined, - toggles: new MemberToggles(payload) - } - - return member as Optionalize -} - -export interface Member extends ReturnType {} -export interface User extends ReturnType {} diff --git a/packages/rest/src/transformers/message.ts b/packages/rest/src/transformers/message.ts deleted file mode 100644 index f12c51338..000000000 --- a/packages/rest/src/transformers/message.ts +++ /dev/null @@ -1,148 +0,0 @@ -import type { DiscordMessage, Optionalize } from '@discordeno/types' -import { CHANNEL_MENTION_REGEX, iconHashToBigInt } from '@discordeno/utils' -import type { RestManager } from '../restManager.js' -import { MemberToggles } from './toggles/member.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformMessage (rest: RestManager, payload: DiscordMessage) { - const guildId = payload.guild_id - ? rest.transformers.snowflake(payload.guild_id) - : undefined - const userId = rest.transformers.snowflake(payload.author.id) - - const message = { - // UNTRANSFORMED STUFF HERE - content: payload.content ?? '', - isFromBot: payload.author.bot ?? false, - tag: `${payload.author.username}#${payload.author.discriminator}`, - timestamp: Date.parse(payload.timestamp), - editedTimestamp: payload.edited_timestamp - ? Date.parse(payload.edited_timestamp) - : undefined, - bitfield: - (payload.tts ? 1n : 0n) | - (payload.mention_everyone ? 2n : 0n) | - (payload.pinned ? 4n : 0n), - attachments: payload.attachments?.map((attachment) => - rest.transformers.attachment(rest, attachment) - ), - embeds: payload.embeds?.map((embed) => - rest.transformers.embed(rest, embed) - ), - reactions: payload.reactions?.map((reaction) => ({ - me: reaction.me, - count: reaction.count, - emoji: rest.transformers.emoji(rest, reaction.emoji) - })), - type: payload.type, - activity: payload.activity - ? { - type: payload.activity.type, - partyId: payload.activity.party_id - } - : undefined, - application: payload.application, - flags: payload.flags, - interaction: payload.interaction - ? { - id: rest.transformers.snowflake(payload.interaction.id), - type: payload.interaction.type, - name: payload.interaction.name, - user: rest.transformers.user(rest, payload.interaction.user), - member: payload.interaction.member - ? { - id: userId, - guildId, - nick: payload.interaction.member.nick ?? undefined, - roles: payload.interaction.member.roles?.map((id) => - rest.transformers.snowflake(id) - ), - joinedAt: payload.interaction.member.joined_at - ? Date.parse(payload.interaction.member.joined_at) - : undefined, - premiumSince: payload.interaction.member.premium_since - ? Date.parse(payload.interaction.member.premium_since) - : undefined, - toggles: new MemberToggles(payload.interaction.member), - avatar: payload.interaction.member.avatar - ? iconHashToBigInt(payload.interaction.member.avatar) - : undefined, - permissions: payload.interaction.member.permissions - ? rest.transformers.snowflake( - payload.interaction.member.permissions - ) - : undefined, - communicationDisabledUntil: payload.interaction.member - .communication_disabled_until - ? Date.parse( - payload.interaction.member.communication_disabled_until - ) - : undefined - } - : undefined - } - : undefined, - thread: payload.thread - ? rest.transformers.channel(rest, { channel: payload.thread, guildId }) - : undefined, - components: payload.components?.map((component) => - rest.transformers.component(rest, component) - ), - stickerItems: payload.sticker_items?.map((sticker) => ({ - id: rest.transformers.snowflake(sticker.id), - name: sticker.name, - formatType: sticker.format_type - })), - - // TRANSFORMED STUFF BELOW - id: rest.transformers.snowflake(payload.id), - guildId, - channelId: rest.transformers.snowflake(payload.channel_id), - webhookId: payload.webhook_id - ? rest.transformers.snowflake(payload.webhook_id) - : undefined, - authorId: userId, - applicationId: payload.application_id - ? rest.transformers.snowflake(payload.application_id) - : undefined, - messageReference: payload.message_reference - ? { - messageId: payload.message_reference.message_id - ? rest.transformers.snowflake(payload.message_reference.message_id) - : undefined, - channelId: payload.message_reference.channel_id - ? rest.transformers.snowflake(payload.message_reference.channel_id) - : undefined, - guildId: payload.message_reference.guild_id - ? rest.transformers.snowflake(payload.message_reference.guild_id) - : undefined - } - : undefined, - mentionedUserIds: payload.mentions - ? payload.mentions.map((m) => rest.transformers.snowflake(m.id)) - : [], - mentionedRoleIds: payload.mention_roles - ? payload.mention_roles.map((id) => rest.transformers.snowflake(id)) - : [], - mentionedChannelIds: [ - // Keep any ids tht discord sends - ...(payload.mention_channels ?? []).map((m) => - rest.transformers.snowflake(m.id) - ), - // Add any other ids that can be validated in a channel mention format - ...(payload.content?.match(CHANNEL_MENTION_REGEX) ?? []).map((text) => - // converts the <#123> into 123 - rest.transformers.snowflake(text.substring(2, text.length - 1)) - ) - ], - member: - payload.member && guildId - ? rest.transformers.member(rest, payload.member, guildId, userId) - : undefined, - nonce: payload.nonce - } - - return message as Optionalize -} - -export interface Message extends ReturnType {} diff --git a/packages/rest/src/transformers/presence.ts b/packages/rest/src/transformers/presence.ts deleted file mode 100644 index af34e28d3..000000000 --- a/packages/rest/src/transformers/presence.ts +++ /dev/null @@ -1,40 +0,0 @@ -import type { DiscordPresenceUpdate, Optionalize } from '@discordeno/types' -import { PresenceStatus } from '@discordeno/types' -import { iconHashToBigInt } from '@discordeno/utils' -import type { RestManager } from '../restManager.js' -import { UserToggles } from './toggles/user.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformPresence ( - rest: RestManager, - payload: DiscordPresenceUpdate -) { - const presence = { - user: { - id: rest.transformers.snowflake(payload.user.id || ''), - username: payload.user.username ?? undefined, - discriminator: payload.user.discriminator ?? undefined, - avatar: payload.user.avatar - ? iconHashToBigInt(payload.user.avatar) - : undefined, - locale: payload.user.locale ?? undefined, - email: payload.user.email ?? undefined, - flags: payload.user.flags ?? undefined, - premiumType: payload.user.premium_type ?? undefined, - publicFlags: payload.user.public_flags ?? undefined, - toggles: new UserToggles(payload.user) - }, - guildId: rest.transformers.snowflake(payload.guild_id), - status: PresenceStatus[payload.status], - activities: payload.activities.map((activity) => - rest.transformers.activity(rest, activity) - ), - desktop: payload.client_status.desktop, - mobile: payload.client_status.mobile, - web: payload.client_status.web - } - - return presence as Optionalize -} - -export interface PresenceUpdate extends ReturnType {} diff --git a/packages/rest/src/transformers/reverse/activity.ts b/packages/rest/src/transformers/reverse/activity.ts deleted file mode 100644 index a43d5651e..000000000 --- a/packages/rest/src/transformers/reverse/activity.ts +++ /dev/null @@ -1,55 +0,0 @@ -import type { DiscordActivity } from '@discordeno/types' -import { bigintToSnowflake } from '@discordeno/utils' -import type { RestManager } from '../../restManager.js' -import type { Activity } from '../activity.js' - -export function transformActivityToDiscordActivity ( - rest: RestManager, - payload: Activity -): DiscordActivity { - return { - name: payload.name, - type: payload.type, - url: payload.url ?? undefined, - created_at: payload.createdAt, - timestamps: { - start: payload.startedAt, - end: payload.endedAt - }, - application_id: payload.applicationId - ? bigintToSnowflake(payload.applicationId) - : undefined, - details: payload.details ?? undefined, - state: payload.state ?? undefined, - emoji: payload.emoji - ? { - name: payload.emoji.name, - animated: payload.emoji.animated, - id: payload.emoji.id - ? bigintToSnowflake(payload.emoji.id) - : undefined - } - : undefined, - party: { - id: payload.partyId, - size: - payload.partyCurrentSize && payload.partyMaxSize - ? [payload.partyCurrentSize, payload.partyMaxSize] - : undefined - }, - assets: { - large_image: payload.largeImage, - large_text: payload.largeText, - small_image: payload.largeImage, - small_text: payload.largeText - }, - secrets: { - join: payload.join, - spectate: payload.spectate, - match: payload.match - }, - instance: payload.instance, - flags: payload.flags, - buttons: payload.buttons - } -} diff --git a/packages/rest/src/transformers/reverse/allowedMentions.ts b/packages/rest/src/transformers/reverse/allowedMentions.ts deleted file mode 100644 index 19547bb4f..000000000 --- a/packages/rest/src/transformers/reverse/allowedMentions.ts +++ /dev/null @@ -1,17 +0,0 @@ -import type { - AllowedMentions, - DiscordAllowedMentions -} from '@discordeno/types' -import type { RestManager } from '../../restManager' - -export function transformAllowedMentionsToDiscordAllowedMentions ( - rest: RestManager, - mentions: AllowedMentions -): DiscordAllowedMentions { - return { - parse: mentions.parse, - replied_user: mentions.repliedUser, - users: mentions.users?.map((id) => id.toString()), - roles: mentions.roles?.map((id) => id.toString()) - } -} diff --git a/packages/rest/src/transformers/reverse/application.ts b/packages/rest/src/transformers/reverse/application.ts deleted file mode 100644 index 21c751e6f..000000000 --- a/packages/rest/src/transformers/reverse/application.ts +++ /dev/null @@ -1,36 +0,0 @@ -import type { DiscordApplication } from '@discordeno/types' -import { bigintToSnowflake, iconBigintToHash } from '@discordeno/utils' -import type { RestManager } from '../../restManager.js' -import type { Application } from '../application.js' - -export function transformApplicationToDiscordApplication ( - rest: RestManager, - payload: Application -): DiscordApplication { - return { - name: payload.name, - description: payload.description, - rpc_origins: payload.rpcOrigins, - bot_public: payload.botPublic, - bot_require_code_grant: payload.botRequireCodeGrant, - terms_of_service_url: payload.termsOfServiceUrl, - privacy_policy_url: payload.privacyPolicyUrl, - verify_key: payload.verifyKey, - primary_sku_id: payload.primarySkuId, - slug: payload.slug, - cover_image: payload.coverImage - ? iconBigintToHash(payload.coverImage) - : undefined, - flags: payload.flags, - - id: bigintToSnowflake(payload.id), - icon: payload.icon ? iconBigintToHash(payload.icon) : null, - owner: payload.owner - ? rest.transformers.reverse.user(rest, payload.owner) - : undefined, - team: payload.team - ? rest.transformers.reverse.team(rest, payload.team) - : null, - guild_id: payload.guildId ? bigintToSnowflake(payload.guildId) : undefined - } -} diff --git a/packages/rest/src/transformers/reverse/applicationCommand.ts b/packages/rest/src/transformers/reverse/applicationCommand.ts deleted file mode 100644 index 5edc367ff..000000000 --- a/packages/rest/src/transformers/reverse/applicationCommand.ts +++ /dev/null @@ -1,29 +0,0 @@ -import type { DiscordApplicationCommand } from '@discordeno/types' -import type { RestManager } from '../../restManager.js' -import type { ApplicationCommand } from '../applicationCommand.js' - -export function transformApplicationCommandToDiscordApplicationCommand ( - rest: RestManager, - payload: ApplicationCommand -): DiscordApplicationCommand { - return { - id: rest.transformers.reverse.snowflake(payload.id), - type: payload.type, - application_id: rest.transformers.reverse.snowflake(payload.applicationId), - guild_id: payload.guildId - ? rest.transformers.reverse.snowflake(payload.guildId) - : undefined, - name: payload.name, - name_localizations: payload.nameLocalizations, - description: payload.description, - description_localizations: payload.descriptionLocalizations, - options: payload.options?.map((option) => - rest.transformers.applicationCommandOption(rest, option) - ), - default_member_permissions: payload.defaultMemberPermissions - ? rest.transformers.reverse.snowflake(payload.defaultMemberPermissions) - : null, - dm_permission: payload.dmPermission, - version: payload.version - } -} diff --git a/packages/rest/src/transformers/reverse/applicationCommandOption.ts b/packages/rest/src/transformers/reverse/applicationCommandOption.ts deleted file mode 100644 index 830e6dea3..000000000 --- a/packages/rest/src/transformers/reverse/applicationCommandOption.ts +++ /dev/null @@ -1,29 +0,0 @@ -import type { DiscordApplicationCommandOption } from '@discordeno/types' -import type { RestManager } from '../../restManager.js' -import type { ApplicationCommandOption } from '../applicationCommandOption.js' - -export function transformApplicationCommandOptionToDiscordApplicationCommandOption ( - rest: RestManager, - payload: ApplicationCommandOption -): DiscordApplicationCommandOption { - return { - type: payload.type, - name: payload.name, - name_localizations: payload.nameLocalizations, - description: payload.description, - description_localizations: payload.descriptionLocalizations, - required: payload.required, - choices: payload.choices?.map((choice) => - rest.transformers.reverse.applicationCommandOptionChoice(rest, choice) - ), - options: payload.options?.map((option) => - rest.transformers.reverse.applicationCommandOption(rest, option) - ), - channel_types: payload.channelTypes, - min_value: payload.minValue, - max_value: payload.maxValue, - min_length: payload.minLength, - max_length: payload.maxLength, - autocomplete: payload.autocomplete - } -} diff --git a/packages/rest/src/transformers/reverse/applicationCommandOptionChoice.ts b/packages/rest/src/transformers/reverse/applicationCommandOptionChoice.ts deleted file mode 100644 index fa1f2b042..000000000 --- a/packages/rest/src/transformers/reverse/applicationCommandOptionChoice.ts +++ /dev/null @@ -1,14 +0,0 @@ -import type { DiscordApplicationCommandOptionChoice } from '@discordeno/types' -import type { RestManager } from '../../restManager.js' -import type { ApplicationCommandOptionChoice } from '../applicationCommandOptionChoice.js' - -export function transformApplicationCommandOptionChoiceToDiscordApplicationCommandOptionChoice ( - rest: RestManager, - payload: ApplicationCommandOptionChoice -): DiscordApplicationCommandOptionChoice { - return { - name: payload.name, - name_localizations: payload.nameLocalizations, - value: payload.value - } -} diff --git a/packages/rest/src/transformers/reverse/applicationCommandPermission.ts b/packages/rest/src/transformers/reverse/applicationCommandPermission.ts deleted file mode 100644 index 9206c844e..000000000 --- a/packages/rest/src/transformers/reverse/applicationCommandPermission.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type { DiscordGuildApplicationCommandPermissions } from '@discordeno/types' -import type { RestManager } from '../../restManager.js' -import type { ApplicationCommandPermission } from '../applicationCommandPermission.js' - -export function transformApplicationCommandPermissionToDiscordApplicationCommandPermission ( - rest: RestManager, - payload: ApplicationCommandPermission -): DiscordGuildApplicationCommandPermissions { - return { - id: rest.transformers.reverse.snowflake(payload.id), - application_id: rest.transformers.reverse.snowflake(payload.applicationId), - guild_id: rest.transformers.reverse.snowflake(payload.guildId), - permissions: payload.permissions.map((perm) => ({ - id: rest.transformers.reverse.snowflake(perm.id), - type: perm.type, - permission: perm.permission - })) - } -} diff --git a/packages/rest/src/transformers/reverse/attachment.ts b/packages/rest/src/transformers/reverse/attachment.ts deleted file mode 100644 index 1f85e757e..000000000 --- a/packages/rest/src/transformers/reverse/attachment.ts +++ /dev/null @@ -1,21 +0,0 @@ -import type { DiscordAttachment } from '@discordeno/types' -import type { RestManager } from '../../restManager.js' -import type { Attachment } from '../attachment.js' - -export function transformAttachmentToDiscordAttachment ( - rest: RestManager, - payload: Attachment -): DiscordAttachment { - return { - id: rest.transformers.reverse.snowflake(payload.id), - filename: payload.filename, - content_type: payload.contentType, - size: payload.size, - url: payload.url, - proxy_url: payload.proxyUrl, - height: payload.height, - width: payload.width, - ephemeral: payload.ephemeral, - description: payload.description - } -} diff --git a/packages/rest/src/transformers/reverse/auditLogEntry.ts b/packages/rest/src/transformers/reverse/auditLogEntry.ts deleted file mode 100644 index 059660415..000000000 --- a/packages/rest/src/transformers/reverse/auditLogEntry.ts +++ /dev/null @@ -1,176 +0,0 @@ -import type { DiscordAuditLogEntry } from '@discordeno/types' -import type { RestManager } from '../../restManager.js' -import type { AuditLogEntry } from '../auditLogEntry.js' - -export function transformAuditLogEntryToDiscordAuditLogEntry ( - rest: RestManager, - payload: AuditLogEntry -): DiscordAuditLogEntry { - return { - id: rest.transformers.reverse.snowflake(payload.id), - // @ts-expect-error: ts can't identify return type of switch case - changes: payload.changes?.map((change) => { - switch (change.key) { - case '$add': - case '$remove': - return { - key: change.key, - new_value: ( - change.new as Array<{ - id: bigint | undefined - name: string | undefined - }> - )?.map((val) => ({ - id: val.id - ? rest.transformers.reverse.snowflake(val.id) - : undefined, - name: val.name - })), - old_value: ( - change.old as - | Array<{ - id: bigint | undefined - name: string | undefined - }> - | undefined - )?.map((val) => ({ - id: val?.id - ? rest.transformers.reverse.snowflake(val.id) - : undefined, - name: val?.name - })) - } - case 'discovery_splash_hash': - case 'banner_hash': - case 'rules_channel_id': - case 'public_updates_channel_id': - case 'icon_hash': - case 'image_hash': - case 'splash_hash': - case 'owner_id': - case 'widget_channel_id': - case 'system_channel_id': - case 'application_id': - case 'permissions': - case 'allow': - case 'deny': - case 'channel_id': - case 'inviter_id': - case 'avatar_hash': - case 'id': - return { - key: change.key, - old_value: change.old - ? rest.transformers.reverse.snowflake(change.old as bigint) - : '', - new_value: change.new - ? rest.transformers.reverse.snowflake(change.new as bigint) - : '' - } - case 'name': - case 'description': - case 'preferred_locale': - case 'region': - case 'afk_channel_id': - case 'vanity_url_code': - case 'topic': - case 'code': - case 'nick': - case 'location': - return { - key: change.key, - old_value: change.old, - new_value: change.new - } - case 'afk_timeout': - case 'mfa_level': - case 'verification_level': - case 'explicit_content_filter': - case 'default_message_notifications': - case 'prune_delete_days': - case 'position': - case 'bitrate': - case 'rate_limit_per_user': - case 'color': - case 'max_uses': - case 'uses': - case 'max_age': - case 'expire_behavior': - case 'expire_grace_period': - case 'user_limit': - case 'privacy_level': - case 'entity_type': - case 'status': - return { - key: change.key, - old_value: change.old ? Number(change.old) : '', - new_value: change.new ? Number(change.new) : '' - } - case 'widget_enabled': - case 'nsfw': - case 'hoist': - case 'mentionable': - case 'temporary': - case 'deaf': - case 'mute': - case 'enable_emoticons': - return { - key: change.key, - old_value: change.old, - new_value: change.new - } - case 'permission_overwrites': - return { - key: change.key, - old_value: change.old, - new_value: change.new - } - default: - return { - key: change.key, - old_value: change.old, - new_value: change.new - } - } - }), - user_id: payload.userId - ? rest.transformers.reverse.snowflake(payload.userId) - : null, - target_id: payload.targetId - ? rest.transformers.reverse.snowflake(payload.targetId) - : null, - action_type: payload.actionType, - options: payload.options - ? { - // respect transformer as reference than type - auto_moderation_rule_name: payload.options.autoModerationRuleName, - auto_moderation_rule_trigger_type: - payload.options.autoModerationRuleTriggerType, - delete_member_days: - payload.options.deleteMemberDays === 0 - ? payload.options.deleteMemberDays.toString() - : '', - members_removed: - payload.options.membersRemoved === 0 - ? payload.options.membersRemoved.toString() - : '', - channel_id: payload.options.channelId - ? rest.transformers.reverse.snowflake(payload.options.channelId) - : '', - message_id: payload.options.messageId - ? rest.transformers.reverse.snowflake(payload.options.messageId) - : '', - count: - payload.options.count === 0 ? payload.options.count.toString() : '', - id: payload.options.id - ? rest.transformers.reverse.snowflake(payload.options.id) - : '', - type: payload.options.type.toString(), - role_name: payload.options.roleName, - // make up value to make ts shut up, the orginal value do not persevere in transformer - application_id: '' - } - : undefined, - reason: payload.reason - } -} diff --git a/packages/rest/src/transformers/reverse/component.ts b/packages/rest/src/transformers/reverse/component.ts deleted file mode 100644 index 707167c4c..000000000 --- a/packages/rest/src/transformers/reverse/component.ts +++ /dev/null @@ -1,47 +0,0 @@ -import type { DiscordComponent } from '@discordeno/types' -import type { RestManager } from '../../restManager.js' -import type { Component } from '../component.js' - -export function transformComponentToDiscordComponent ( - rest: RestManager, - payload: Component -): DiscordComponent { - return { - type: payload.type, - custom_id: payload.customId, - disabled: payload.disabled, - required: payload.required, - style: payload.style, - label: payload.label, - emoji: payload.emoji - ? { - id: payload.emoji.id?.toString(), - name: payload.emoji.name, - animated: payload.emoji.animated - } - : undefined, - url: payload.url, - options: payload.options?.map((option) => ({ - label: option.label, - value: option.value, - description: option.description, - emoji: option.emoji - ? { - id: option.emoji.id?.toString(), - name: option.emoji.name, - animated: option.emoji.animated - } - : undefined, - default: option.default - })), - placeholder: payload.placeholder, - min_values: payload.minValues, - max_values: payload.maxValues, - min_length: payload.minLength, - max_length: payload.maxLength, - value: payload.value, - components: payload.components?.map((component) => - rest.transformers.reverse.component(rest, component) - ) - } -} diff --git a/packages/rest/src/transformers/reverse/createApplicationCommand.ts b/packages/rest/src/transformers/reverse/createApplicationCommand.ts deleted file mode 100644 index 3e734c8d9..000000000 --- a/packages/rest/src/transformers/reverse/createApplicationCommand.ts +++ /dev/null @@ -1,39 +0,0 @@ -import type { DiscordCreateApplicationCommand } from '@discordeno/types' -import { calculateBits } from '@discordeno/utils' -import type { RestManager } from '../../restManager.js' -import type { CreateApplicationCommand } from '../../types.js' -import { isContextApplicationCommand } from '../../types.js' - -export function transformCreateApplicationCommandToDiscordCreateApplicationCommand ( - rest: RestManager, - payload: CreateApplicationCommand -): DiscordCreateApplicationCommand { - if (isContextApplicationCommand(payload)) { - return { - name: payload.name, - name_localizations: payload.nameLocalizations, - description: '', - description_localizations: {}, - type: payload.type, - default_member_permissions: payload.defaultMemberPermissions - ? calculateBits(payload.defaultMemberPermissions) - : null, - dm_permission: payload.dmPermission - } - } - - return { - name: payload.name, - name_localizations: payload.nameLocalizations, - description: payload.description, - description_localizations: payload.descriptionLocalizations, - type: payload.type, - options: payload.options?.map((option) => - rest.transformers.reverse.applicationCommandOption(rest, option) - ), - default_member_permissions: payload.defaultMemberPermissions - ? calculateBits(payload.defaultMemberPermissions) - : null, - dm_permission: payload.dmPermission - } -} diff --git a/packages/rest/src/transformers/reverse/embed.ts b/packages/rest/src/transformers/reverse/embed.ts deleted file mode 100644 index ab394d1ae..000000000 --- a/packages/rest/src/transformers/reverse/embed.ts +++ /dev/null @@ -1,60 +0,0 @@ -import type { DiscordEmbed } from '@discordeno/types' -import type { RestManager } from '../../restManager.js' -import type { Embed } from '../embed.js' - -export function transformEmbedToDiscordEmbed ( - rest: RestManager, - payload: Embed -): DiscordEmbed { - return { - title: payload.title, - type: payload.type, - description: payload.description, - url: payload.url, - timestamp: payload.timestamp - ? new Date(payload.timestamp).toISOString() - : undefined, - color: payload.color, - footer: payload.footer - ? { - text: payload.footer.text, - icon_url: payload.footer.iconUrl, - proxy_icon_url: payload.footer.proxyIconUrl - } - : undefined, - image: payload.image - ? { - url: payload.image.url, - proxy_url: payload.image.proxyUrl, - height: payload.image.height, - width: payload.image.width - } - : undefined, - thumbnail: payload.thumbnail - ? { - url: payload.thumbnail.url, - proxy_url: payload.thumbnail.proxyUrl, - height: payload.thumbnail.height, - width: payload.thumbnail.width - } - : undefined, - video: payload.video - ? { - url: payload.video.url, - proxy_url: payload.video.proxyUrl, - height: payload.video.height, - width: payload.video.width - } - : undefined, - provider: payload.provider, - author: payload.author - ? { - name: payload.author.name, - url: payload.author.url, - icon_url: payload.author.iconUrl, - proxy_icon_url: payload.author.proxyIconUrl - } - : undefined, - fields: payload.fields - } -} diff --git a/packages/rest/src/transformers/reverse/emoji.ts b/packages/rest/src/transformers/reverse/emoji.ts deleted file mode 100644 index a0dea2a64..000000000 --- a/packages/rest/src/transformers/reverse/emoji.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { DiscordEmoji } from '@discordeno/types' -import type { RestManager } from '../../restManager.js' -import type { Emoji } from '../emoji.js' - -export function transformEmojiToDiscordEmoji ( - rest: RestManager, - payload: Emoji -): DiscordEmoji { - return { - id: payload.id - ? rest.transformers.reverse.snowflake(payload.id) - : undefined, - name: payload.name, - roles: payload.roles?.map((id) => rest.transformers.reverse.snowflake(id)), - user: payload.user - ? rest.transformers.reverse.user(rest, payload.user) - : undefined, - require_colons: payload.toggles.requireColons, - managed: payload.toggles.managed, - animated: payload.toggles.animated, - available: payload.toggles.available - } -} diff --git a/packages/rest/src/transformers/reverse/gatewayBot.ts b/packages/rest/src/transformers/reverse/gatewayBot.ts deleted file mode 100644 index 6b478cda1..000000000 --- a/packages/rest/src/transformers/reverse/gatewayBot.ts +++ /dev/null @@ -1,16 +0,0 @@ -import type { DiscordGetGatewayBot, GetGatewayBot } from '@discordeno/types' - -export function transformGatewayBotToDiscordGatewayBot ( - payload: GetGatewayBot -): DiscordGetGatewayBot { - return { - url: payload.url, - shards: payload.shards, - session_start_limit: { - total: payload.sessionStartLimit.total, - remaining: payload.sessionStartLimit.remaining, - reset_after: payload.sessionStartLimit.resetAfter, - max_concurrency: payload.sessionStartLimit.maxConcurrency - } - } -} diff --git a/packages/rest/src/transformers/reverse/index.ts b/packages/rest/src/transformers/reverse/index.ts deleted file mode 100644 index f6e9be5a3..000000000 --- a/packages/rest/src/transformers/reverse/index.ts +++ /dev/null @@ -1,19 +0,0 @@ -export * from './activity.js' -export * from './allowedMentions.js' -export * from './application.js' -export * from './applicationCommand.js' -export * from './applicationCommandOption.js' -export * from './applicationCommandOptionChoice.js' -export * from './applicationCommandPermission.js' -export * from './attachment.js' -export * from './auditLogEntry.js' -export * from './component.js' -export * from './createApplicationCommand.js' -export * from './embed.js' -export * from './emoji.js' -export * from './gatewayBot.js' -export * from './interactionResponse.js' -export * from './member.js' -export * from './presence.js' -export * from './team.js' -export * from './widgetSettings.js' diff --git a/packages/rest/src/transformers/reverse/interactionResponse.ts b/packages/rest/src/transformers/reverse/interactionResponse.ts deleted file mode 100644 index 882201164..000000000 --- a/packages/rest/src/transformers/reverse/interactionResponse.ts +++ /dev/null @@ -1,42 +0,0 @@ -import type { DiscordInteractionResponse } from '@discordeno/types' -import type { RestManager } from '../../restManager.js' -import type { InteractionResponse } from '../../types' - -export function transformInteractionResponseToDiscordInteractionResponse ( - rest: RestManager, - payload: InteractionResponse -): DiscordInteractionResponse { - // If no mentions are provided, force disable mentions - if (payload.data && payload.data?.allowedMentions == null) { - payload.data.allowedMentions = { parse: [] } - } - - return { - type: payload.type, - data: payload.data - ? { - tts: payload.data.tts, - title: payload.data.title, - flags: payload.data.flags, - content: payload.data.content, - choices: payload.data.choices?.map((choice) => - rest.transformers.reverse.applicationCommandOptionChoice( - rest, - choice - ) - ), - custom_id: payload.data.customId, - embeds: payload.data.embeds?.map((embed) => - rest.transformers.reverse.embed(rest, embed) - ), - allowed_mentions: rest.transformers.reverse.allowedMentions( - rest, - payload.data.allowedMentions! - ), - components: payload.data.components?.map((component) => - rest.transformers.reverse.component(rest, component) - ) - } - : undefined - } -} diff --git a/packages/rest/src/transformers/reverse/member.ts b/packages/rest/src/transformers/reverse/member.ts deleted file mode 100644 index 390e05b51..000000000 --- a/packages/rest/src/transformers/reverse/member.ts +++ /dev/null @@ -1,49 +0,0 @@ -import type { DiscordMember, DiscordUser } from '@discordeno/types' -import { bigintToSnowflake, iconBigintToHash } from '@discordeno/utils' -import type { RestManager } from '../../restManager.js' -import type { Member, User } from '../member.js' - -export function transformUserToDiscordUser ( - rest: RestManager, - payload: User -): DiscordUser { - return { - id: bigintToSnowflake(payload.id), - username: payload.username, - discriminator: payload.discriminator, - avatar: payload.avatar ? iconBigintToHash(payload.avatar) : null, - locale: payload.locale, - email: payload.email ?? undefined, - flags: payload.flags, - premium_type: payload.premiumType, - public_flags: payload.publicFlags, - bot: payload.toggles.bot, - system: payload.toggles.system, - mfa_enabled: payload.toggles.mfaEnabled, - verified: payload.toggles.verified - } -} - -export function transformMemberToDiscordMember ( - rest: RestManager, - payload: Member -): DiscordMember { - return { - nick: payload.nick ?? undefined, - roles: payload.roles.map((id) => bigintToSnowflake(id)), - joined_at: new Date(payload.joinedAt).toISOString(), - premium_since: payload.premiumSince - ? new Date(payload.premiumSince).toISOString() - : undefined, - avatar: payload.avatar ? iconBigintToHash(payload.avatar) : undefined, - permissions: payload.permissions - ? bigintToSnowflake(payload.permissions) - : undefined, - communication_disabled_until: payload.communicationDisabledUntil - ? new Date(payload.communicationDisabledUntil).toISOString() - : undefined, - deaf: payload.toggles.deaf, - mute: payload.toggles.mute, - pending: payload.toggles.pending - } -} diff --git a/packages/rest/src/transformers/reverse/presence.ts b/packages/rest/src/transformers/reverse/presence.ts deleted file mode 100644 index 71251f12c..000000000 --- a/packages/rest/src/transformers/reverse/presence.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type { DiscordPresenceUpdate } from '@discordeno/types' -import { PresenceStatus } from '@discordeno/types' -import type { RestManager } from '../../restManager.js' -import type { PresenceUpdate } from '../presence.js' - -export const reverseStatusTypes = Object.freeze({ - 0: 'online', - 1: 'dnd', - 2: 'idle', - 4: 'offline' -} as const) - -export function transformPresenceToDiscordPresence ( - rest: RestManager, - payload: PresenceUpdate -): DiscordPresenceUpdate { - return { - user: rest.transformers.reverse.user(rest, payload.user), - guild_id: rest.transformers.reverse.snowflake(payload.guildId), - // TODO: find better way - status: (PresenceStatus[payload.status] ?? 'offline') as 'offline', - activities: payload.activities.map((activity) => - rest.transformers.reverse.activity(rest, activity) - ), - client_status: { - desktop: payload.desktop, - mobile: payload.mobile, - web: payload.web - } - } -} diff --git a/packages/rest/src/transformers/reverse/team.ts b/packages/rest/src/transformers/reverse/team.ts deleted file mode 100644 index 03f2d4da2..000000000 --- a/packages/rest/src/transformers/reverse/team.ts +++ /dev/null @@ -1,25 +0,0 @@ -import type { DiscordTeam } from '@discordeno/types' -import { bigintToSnowflake, iconBigintToHash } from '@discordeno/utils' -import type { RestManager } from '../../restManager.js' -import type { Team } from '../team.js' - -export function transformTeamToDiscordTeam ( - rest: RestManager, - payload: Team -): DiscordTeam { - const id = bigintToSnowflake(payload.id) - - return { - name: payload.name, - - id, - icon: payload.icon ? iconBigintToHash(payload.icon) : null, - owner_user_id: bigintToSnowflake(payload.ownerUserId), - members: payload.members.map((member) => ({ - membership_state: member.membershipState, - permissions: member.permissions, - team_id: id, - user: rest.transformers.reverse.user(rest, member.user) - })) - } -} diff --git a/packages/rest/src/transformers/reverse/widgetSettings.ts b/packages/rest/src/transformers/reverse/widgetSettings.ts deleted file mode 100644 index 9ad43e5ed..000000000 --- a/packages/rest/src/transformers/reverse/widgetSettings.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { DiscordGuildWidgetSettings } from '@discordeno/types' -import type { RestManager } from '../../restManager.js' -import type { GuildWidgetSettings } from '../widgetSettings.js' - -export function transformWidgetSettingsToDiscordWidgetSettings ( - bot: RestManager, - payload: GuildWidgetSettings -): DiscordGuildWidgetSettings { - return { - enabled: payload.enabled, - channel_id: payload.channelId ?? null - } -} diff --git a/packages/rest/src/transformers/role.ts b/packages/rest/src/transformers/role.ts deleted file mode 100644 index a05d0f6b8..000000000 --- a/packages/rest/src/transformers/role.ts +++ /dev/null @@ -1,33 +0,0 @@ -import type { DiscordRole, Optionalize } from '@discordeno/types' -import { iconHashToBigInt } from '@discordeno/utils' -import type { RestManager } from '../restManager.js' -import { RoleToggles } from './toggles/role.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformRole ( - rest: RestManager, - payload: { role: DiscordRole } & { guildId: bigint } -) { - const role = { - name: payload.role.name, - guildId: payload.guildId, - position: payload.role.position, - color: payload.role.color, - toggles: new RoleToggles(payload.role), - - id: rest.transformers.snowflake(payload.role.id), - botId: payload.role.tags?.bot_id - ? rest.transformers.snowflake(payload.role.tags.bot_id) - : undefined, - integrationId: payload.role.tags?.integration_id - ? rest.transformers.snowflake(payload.role.tags.integration_id) - : undefined, - permissions: rest.transformers.snowflake(payload.role.permissions), - icon: payload.role.icon ? iconHashToBigInt(payload.role.icon) : undefined, - unicodeEmoji: payload.role.unicode_emoji - } - - return role as Optionalize -} - -export interface Role extends ReturnType {} diff --git a/packages/rest/src/transformers/scheduledEvent.ts b/packages/rest/src/transformers/scheduledEvent.ts deleted file mode 100644 index 8cb6f4ccc..000000000 --- a/packages/rest/src/transformers/scheduledEvent.ts +++ /dev/null @@ -1,44 +0,0 @@ -import type { DiscordScheduledEvent, Optionalize } from '@discordeno/types' -import { iconHashToBigInt } from '@discordeno/utils' -import type { RestManager } from '../restManager.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformScheduledEvent ( - rest: RestManager, - payload: DiscordScheduledEvent -) { - const scheduledEvent = { - id: rest.transformers.snowflake(payload.id), - guildId: rest.transformers.snowflake(payload.guild_id), - channelId: payload.channel_id - ? rest.transformers.snowflake(payload.channel_id) - : undefined, - creatorId: payload.creator_id - ? rest.transformers.snowflake(payload.creator_id) - : 0n, - scheduledStartTime: Date.parse(payload.scheduled_start_time), - scheduledEndTime: payload.scheduled_end_time - ? Date.parse(payload.scheduled_end_time) - : undefined, - entityId: payload.entity_id - ? rest.transformers.snowflake(payload.entity_id) - : undefined, - creator: payload.creator - ? rest.transformers.user(rest, payload.creator) - : undefined, - - name: payload.name, - description: payload.description, - privacyLevel: payload.privacy_level, - status: payload.status, - entityType: payload.entity_type, - userCount: payload.user_count ?? 0, - location: payload.entity_metadata?.location, - image: payload.image ? iconHashToBigInt(payload.image) : undefined - } - - return scheduledEvent as Optionalize -} - -export interface ScheduledEvent - extends ReturnType {} diff --git a/packages/rest/src/transformers/stageInstance.ts b/packages/rest/src/transformers/stageInstance.ts deleted file mode 100644 index ce962b6cd..000000000 --- a/packages/rest/src/transformers/stageInstance.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { DiscordStageInstance, Optionalize } from '@discordeno/types' -import type { RestManager } from '../restManager.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformStageInstance ( - rest: RestManager, - payload: DiscordStageInstance -) { - const stageInstance = { - id: rest.transformers.snowflake(payload.id), - guildId: rest.transformers.snowflake(payload.guild_id), - channelId: rest.transformers.snowflake(payload.channel_id), - topic: payload.topic, - guildScheduledEventId: payload.guild_scheduled_event_id - ? rest.transformers.snowflake(payload.guild_scheduled_event_id) - : undefined - } - - return stageInstance as Optionalize -} - -export interface StageInstance - extends ReturnType {} diff --git a/packages/rest/src/transformers/sticker.ts b/packages/rest/src/transformers/sticker.ts deleted file mode 100644 index c69a59720..000000000 --- a/packages/rest/src/transformers/sticker.ts +++ /dev/null @@ -1,53 +0,0 @@ -import type { - DiscordSticker, - DiscordStickerPack, - Optionalize -} from '@discordeno/types' -import { snowflakeToBigint } from '@discordeno/utils' -import type { RestManager } from '../restManager.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformSticker (rest: RestManager, payload: DiscordSticker) { - const sticker = { - id: snowflakeToBigint(payload.id), - packId: payload.pack_id ? snowflakeToBigint(payload.pack_id) : undefined, - name: payload.name, - description: payload.description, - tags: payload.tags, - type: payload.type, - formatType: payload.format_type, - available: payload.available, - guildId: payload.guild_id ? snowflakeToBigint(payload.guild_id) : undefined, - user: payload.user ? rest.transformers.user(rest, payload.user) : undefined, - sortValue: payload.sort_value - } - - return sticker as Optionalize -} - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformStickerPack ( - rest: RestManager, - payload: DiscordStickerPack -) { - const pack = { - id: rest.transformers.snowflake(payload.id), - stickers: payload.stickers.map((sticker) => - rest.transformers.sticker(rest, sticker) - ), - name: payload.name, - skuId: rest.transformers.snowflake(payload.sku_id), - coverStickerId: payload.cover_sticker_id - ? rest.transformers.snowflake(payload.cover_sticker_id) - : undefined, - description: payload.description, - bannerAssetId: payload.banner_asset_id - ? rest.transformers.snowflake(payload.banner_asset_id) - : undefined - } - - return pack as Optionalize -} - -export interface Sticker extends ReturnType {} -export interface StickerPack extends ReturnType {} diff --git a/packages/rest/src/transformers/team.ts b/packages/rest/src/transformers/team.ts deleted file mode 100644 index a88206179..000000000 --- a/packages/rest/src/transformers/team.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { DiscordTeam, Optionalize } from '@discordeno/types' -import { iconHashToBigInt } from '@discordeno/utils' -import type { RestManager } from '../restManager.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformTeam (rest: RestManager, payload: DiscordTeam) { - const id = rest.transformers.snowflake(payload.id) - - const team = { - name: payload.name, - - id, - icon: payload.icon ? iconHashToBigInt(payload.icon) : undefined, - ownerUserId: rest.transformers.snowflake(payload.owner_user_id), - members: payload.members.map((member) => ({ - membershipState: member.membership_state, - permissions: member.permissions, - teamId: id, - user: rest.transformers.user(rest, member.user) - })) - } - - return team as Optionalize -} - -export interface Team extends ReturnType {} diff --git a/packages/rest/src/transformers/template.ts b/packages/rest/src/transformers/template.ts deleted file mode 100644 index a94ebb592..000000000 --- a/packages/rest/src/transformers/template.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { DiscordTemplate, Optionalize } from '@discordeno/types' -import type { RestManager } from '../restManager.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformTemplate (rest: RestManager, payload: DiscordTemplate) { - const template = { - code: payload.code, - name: payload.name, - description: payload.description, - usageCount: payload.usage_count, - creatorId: rest.transformers.snowflake(payload.creator_id), - creator: rest.transformers.user(rest, payload.creator), - createdAt: Date.parse(payload.created_at), - updatedAt: Date.parse(payload.updated_at), - sourceGuildId: rest.transformers.snowflake(payload.source_guild_id), - serializedSourceGuild: payload.serialized_source_guild, - isDirty: payload.is_dirty ?? undefined - } - - return template as Optionalize -} - -export interface Template extends ReturnType {} diff --git a/packages/rest/src/transformers/threadMember.ts b/packages/rest/src/transformers/threadMember.ts deleted file mode 100644 index a5b4049b4..000000000 --- a/packages/rest/src/transformers/threadMember.ts +++ /dev/null @@ -1,40 +0,0 @@ -import type { - DiscordThreadMember, - DiscordThreadMemberGuildCreate, - Optionalize -} from '@discordeno/types' -import type { RestManager } from '../restManager.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformThreadMember ( - rest: RestManager, - payload: DiscordThreadMember -) { - const threadMember = { - id: payload.id ? rest.transformers.snowflake(payload.id) : undefined, - userId: payload.user_id - ? rest.transformers.snowflake(payload.user_id) - : undefined, - joinTimestamp: Date.parse(payload.join_timestamp), - flags: payload.flags - } - - return threadMember as Optionalize -} - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformThreadMemberGuildCreate ( - rest: RestManager, - payload: DiscordThreadMemberGuildCreate -) { - const threadMember = { - joinTimestamp: Date.parse(payload.join_timestamp) - } - - return threadMember as Optionalize -} - -export interface ThreadMember - extends ReturnType {} -export interface ThreadMemberGuildCreate - extends ReturnType {} diff --git a/packages/rest/src/transformers/voiceRegion.ts b/packages/rest/src/transformers/voiceRegion.ts deleted file mode 100644 index 8cad36b41..000000000 --- a/packages/rest/src/transformers/voiceRegion.ts +++ /dev/null @@ -1,22 +0,0 @@ -import type { DiscordVoiceRegion, Optionalize } from '@discordeno/types' -import type { RestManager } from '../restManager.js' - -// TODO: Rename `VoiceRegions` to `VoiceRegion`. - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformVoiceRegion ( - rest: RestManager, - payload: DiscordVoiceRegion -) { - const voiceRegion = { - id: payload.id, - name: payload.name, - optimal: payload.optimal, - deprecated: payload.deprecated, - custom: payload.custom - } - - return voiceRegion as Optionalize -} - -export interface VoiceRegions extends ReturnType {} diff --git a/packages/rest/src/transformers/voiceState.ts b/packages/rest/src/transformers/voiceState.ts deleted file mode 100644 index 48d325883..000000000 --- a/packages/rest/src/transformers/voiceState.ts +++ /dev/null @@ -1,34 +0,0 @@ -import type { DiscordVoiceState, Optionalize } from '@discordeno/types' -import type { RestManager } from '../restManager.js' -import { VoiceStateToggles } from './toggles/voice.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformVoiceState ( - rest: RestManager, - payload: { voiceState: DiscordVoiceState } & { guildId: bigint } -) { - const voiceState = { - toggles: new VoiceStateToggles(payload.voiceState), - - requestToSpeakTimestamp: payload.voiceState.request_to_speak_timestamp - ? Date.parse(payload.voiceState.request_to_speak_timestamp) - : undefined, - sessionId: payload.voiceState.session_id, - - channelId: payload.voiceState.channel_id - ? rest.transformers.snowflake(payload.voiceState.channel_id) - : undefined, - guildId: - payload.guildId || - (payload.voiceState.guild_id - ? rest.transformers.snowflake(payload.voiceState.guild_id) - : 0n), - userId: payload.voiceState.user_id - ? rest.transformers.snowflake(payload.voiceState.user_id) - : 0n - } - - return voiceState as Optionalize -} - -export interface VoiceState extends ReturnType {} diff --git a/packages/rest/src/transformers/webhook.ts b/packages/rest/src/transformers/webhook.ts deleted file mode 100644 index 070fbc1ce..000000000 --- a/packages/rest/src/transformers/webhook.ts +++ /dev/null @@ -1,46 +0,0 @@ -import type { DiscordWebhook, Optionalize } from '@discordeno/types' -import { iconHashToBigInt } from '@discordeno/utils' -import type { RestManager } from '../restManager.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformWebhook (rest: RestManager, payload: DiscordWebhook) { - const webhook = { - id: rest.transformers.snowflake(payload.id), - type: payload.type, - guildId: payload.guild_id - ? rest.transformers.snowflake(payload.guild_id) - : undefined, - channelId: payload.channel_id - ? rest.transformers.snowflake(payload.channel_id) - : undefined, - user: payload.user ? rest.transformers.user(rest, payload.user) : undefined, - name: payload.name ?? '', - avatar: payload.avatar ? iconHashToBigInt(payload.avatar) : undefined, - token: payload.token, - applicationId: payload.application_id - ? rest.transformers.snowflake(payload.application_id) - : undefined, - sourceGuild: payload.source_guild - ? { - id: rest.transformers.snowflake(payload.source_guild.id!), - name: payload.source_guild.name!, - icon: payload.source_guild.icon - ? iconHashToBigInt(payload.source_guild.icon) - : undefined - } - : undefined, - /** The channel that this webhook is following (returned for Channel Follower Webhooks) */ - sourceChannel: payload.source_channel - ? { - id: rest.transformers.snowflake(payload.source_channel.id!), - name: payload.source_channel.name ?? '' - } - : undefined, - /** The url used for executing the webhook (returned by the webhooks OAuth2 flow) */ - url: payload.url - } - - return webhook as Optionalize -} - -export interface Webhook extends ReturnType {} diff --git a/packages/rest/src/transformers/welcomeScreen.ts b/packages/rest/src/transformers/welcomeScreen.ts deleted file mode 100644 index 4ef71a374..000000000 --- a/packages/rest/src/transformers/welcomeScreen.ts +++ /dev/null @@ -1,25 +0,0 @@ -import type { DiscordWelcomeScreen, Optionalize } from '@discordeno/types' -import type { RestManager } from '../restManager.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformWelcomeScreen ( - rest: RestManager, - payload: DiscordWelcomeScreen -) { - const welcomeScreen = { - description: payload.description ?? undefined, - welcomeChannels: payload.welcome_channels.map((channel) => ({ - channelId: rest.transformers.snowflake(channel.channel_id), - description: channel.description, - emojiId: channel.emoji_id - ? rest.transformers.snowflake(channel.emoji_id) - : undefined, - emojiName: channel.emoji_name ?? undefined - })) - } - - return welcomeScreen as Optionalize -} - -export interface WelcomeScreen - extends ReturnType {} diff --git a/packages/rest/src/transformers/widget.ts b/packages/rest/src/transformers/widget.ts deleted file mode 100644 index c612eaa2e..000000000 --- a/packages/rest/src/transformers/widget.ts +++ /dev/null @@ -1,33 +0,0 @@ -import type { DiscordGuildWidget, Optionalize } from '@discordeno/types' -import { iconHashToBigInt } from '@discordeno/utils' -import type { RestManager } from '../restManager.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformWidget ( - rest: RestManager, - payload: DiscordGuildWidget -) { - const widget = { - id: rest.transformers.snowflake(payload.id), - name: payload.name, - instant_invite: payload.instant_invite, - channels: payload.channels.map((channel) => ({ - id: rest.transformers.snowflake(channel.id), - name: channel.name, - position: channel.position - })), - members: payload.members.map((member) => ({ - id: rest.transformers.snowflake(member.id), - username: member.username, - discriminator: member.discriminator, - avatar: member.avatar ? iconHashToBigInt(member.avatar) : undefined, - status: member.status, - avatarUrl: member.avatar_url - })), - presenceCount: payload.presence_count - } - - return widget as Optionalize -} - -export interface GuildWidget extends ReturnType {} diff --git a/packages/rest/src/transformers/widgetSettings.ts b/packages/rest/src/transformers/widgetSettings.ts deleted file mode 100644 index 5c5d5c181..000000000 --- a/packages/rest/src/transformers/widgetSettings.ts +++ /dev/null @@ -1,21 +0,0 @@ -import type { - DiscordGuildWidgetSettings, - Optionalize -} from '@discordeno/types' -import type { RestManager } from '../restManager.js' - -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export function transformWidgetSettings ( - rest: RestManager, - payload: DiscordGuildWidgetSettings -) { - const widget = { - enabled: payload.enabled, - channelId: payload.channel_id ?? undefined - } - - return widget as Optionalize -} - -export interface GuildWidgetSettings - extends ReturnType {} From a1d5a95dd7b32d63fd7c89c3a3596f8a35d7157d Mon Sep 17 00:00:00 2001 From: Skillz Date: Tue, 20 Dec 2022 14:25:12 -0600 Subject: [PATCH 2/3] fix: move toggle transformers to bot pkg --- packages/{rest/src => bot}/transformers/toggles/ToggleBitfield.ts | 0 packages/{rest/src => bot}/transformers/toggles/emoji.ts | 0 packages/{rest/src => bot}/transformers/toggles/guild.ts | 0 packages/{rest/src => bot}/transformers/toggles/index.ts | 0 packages/{rest/src => bot}/transformers/toggles/member.ts | 0 packages/{rest/src => bot}/transformers/toggles/role.ts | 0 packages/{rest/src => bot}/transformers/toggles/user.ts | 0 packages/{rest/src => bot}/transformers/toggles/voice.ts | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename packages/{rest/src => bot}/transformers/toggles/ToggleBitfield.ts (100%) rename packages/{rest/src => bot}/transformers/toggles/emoji.ts (100%) rename packages/{rest/src => bot}/transformers/toggles/guild.ts (100%) rename packages/{rest/src => bot}/transformers/toggles/index.ts (100%) rename packages/{rest/src => bot}/transformers/toggles/member.ts (100%) rename packages/{rest/src => bot}/transformers/toggles/role.ts (100%) rename packages/{rest/src => bot}/transformers/toggles/user.ts (100%) rename packages/{rest/src => bot}/transformers/toggles/voice.ts (100%) diff --git a/packages/rest/src/transformers/toggles/ToggleBitfield.ts b/packages/bot/transformers/toggles/ToggleBitfield.ts similarity index 100% rename from packages/rest/src/transformers/toggles/ToggleBitfield.ts rename to packages/bot/transformers/toggles/ToggleBitfield.ts diff --git a/packages/rest/src/transformers/toggles/emoji.ts b/packages/bot/transformers/toggles/emoji.ts similarity index 100% rename from packages/rest/src/transformers/toggles/emoji.ts rename to packages/bot/transformers/toggles/emoji.ts diff --git a/packages/rest/src/transformers/toggles/guild.ts b/packages/bot/transformers/toggles/guild.ts similarity index 100% rename from packages/rest/src/transformers/toggles/guild.ts rename to packages/bot/transformers/toggles/guild.ts diff --git a/packages/rest/src/transformers/toggles/index.ts b/packages/bot/transformers/toggles/index.ts similarity index 100% rename from packages/rest/src/transformers/toggles/index.ts rename to packages/bot/transformers/toggles/index.ts diff --git a/packages/rest/src/transformers/toggles/member.ts b/packages/bot/transformers/toggles/member.ts similarity index 100% rename from packages/rest/src/transformers/toggles/member.ts rename to packages/bot/transformers/toggles/member.ts diff --git a/packages/rest/src/transformers/toggles/role.ts b/packages/bot/transformers/toggles/role.ts similarity index 100% rename from packages/rest/src/transformers/toggles/role.ts rename to packages/bot/transformers/toggles/role.ts diff --git a/packages/rest/src/transformers/toggles/user.ts b/packages/bot/transformers/toggles/user.ts similarity index 100% rename from packages/rest/src/transformers/toggles/user.ts rename to packages/bot/transformers/toggles/user.ts diff --git a/packages/rest/src/transformers/toggles/voice.ts b/packages/bot/transformers/toggles/voice.ts similarity index 100% rename from packages/rest/src/transformers/toggles/voice.ts rename to packages/bot/transformers/toggles/voice.ts From ea8b958e1e1446453be4a4172ad3a62894649f8a Mon Sep 17 00:00:00 2001 From: Skillz Date: Tue, 20 Dec 2022 21:38:14 -0600 Subject: [PATCH 3/3] fix: move out gw helpers to gw package --- .../{rest => gateway}/src/noCheckHelpers/guilds/getGuild.ts | 4 ++-- .../src/noCheckHelpers/guilds/voice/connectToVoiceChannel.ts | 2 +- .../src/noCheckHelpers/guilds/voice/leaveVoiceChannel.ts | 2 +- .../src/noCheckHelpers/members/fetchMembers.ts | 2 +- .../src/noCheckHelpers/misc/editBotStatus.ts | 2 +- .../src/noCheckHelpers/misc/editShardStatus.ts | 4 ++-- .../src/noCheckHelpers/templates/createGuildFromTemplate.ts | 4 ++-- 7 files changed, 10 insertions(+), 10 deletions(-) rename packages/{rest => gateway}/src/noCheckHelpers/guilds/getGuild.ts (87%) rename packages/{rest => gateway}/src/noCheckHelpers/guilds/voice/connectToVoiceChannel.ts (96%) rename packages/{rest => gateway}/src/noCheckHelpers/guilds/voice/leaveVoiceChannel.ts (94%) rename packages/{rest => gateway}/src/noCheckHelpers/members/fetchMembers.ts (97%) rename packages/{rest => gateway}/src/noCheckHelpers/misc/editBotStatus.ts (81%) rename packages/{rest => gateway}/src/noCheckHelpers/misc/editShardStatus.ts (94%) rename packages/{rest => gateway}/src/noCheckHelpers/templates/createGuildFromTemplate.ts (91%) diff --git a/packages/rest/src/noCheckHelpers/guilds/getGuild.ts b/packages/gateway/src/noCheckHelpers/guilds/getGuild.ts similarity index 87% rename from packages/rest/src/noCheckHelpers/guilds/getGuild.ts rename to packages/gateway/src/noCheckHelpers/guilds/getGuild.ts index f9a95fd7c..476f06c73 100644 --- a/packages/rest/src/noCheckHelpers/guilds/getGuild.ts +++ b/packages/gateway/src/noCheckHelpers/guilds/getGuild.ts @@ -2,8 +2,8 @@ import type { BigString, DiscordGuild } from '@discordeno/types' import { calculateShardId } from '@discordeno/utils' -import type { RestManager } from '../../restManager.js' -import type { Guild } from '../../transformers/guild.js' +import type { Guild } from '../../../../bot/transformers/guild.js' +import type { RestManager } from '../../../../rest/src/restManager.js' /** * Gets a guild by its ID. diff --git a/packages/rest/src/noCheckHelpers/guilds/voice/connectToVoiceChannel.ts b/packages/gateway/src/noCheckHelpers/guilds/voice/connectToVoiceChannel.ts similarity index 96% rename from packages/rest/src/noCheckHelpers/guilds/voice/connectToVoiceChannel.ts rename to packages/gateway/src/noCheckHelpers/guilds/voice/connectToVoiceChannel.ts index 31a1e7843..efc38416b 100644 --- a/packages/rest/src/noCheckHelpers/guilds/voice/connectToVoiceChannel.ts +++ b/packages/gateway/src/noCheckHelpers/guilds/voice/connectToVoiceChannel.ts @@ -4,7 +4,7 @@ import type { AtLeastOne, BigString } from '@discordeno/types' import { GatewayOpcodes } from '@discordeno/types' import { calculateShardId } from '@discordeno/utils' -import type { RestManager } from '../../../restManager.js' +import type { RestManager } from '../../../../../rest/src/restManager.js' /** * Connects the bot user to a voice or stage channel. diff --git a/packages/rest/src/noCheckHelpers/guilds/voice/leaveVoiceChannel.ts b/packages/gateway/src/noCheckHelpers/guilds/voice/leaveVoiceChannel.ts similarity index 94% rename from packages/rest/src/noCheckHelpers/guilds/voice/leaveVoiceChannel.ts rename to packages/gateway/src/noCheckHelpers/guilds/voice/leaveVoiceChannel.ts index 16935a8be..0ee402ff5 100644 --- a/packages/rest/src/noCheckHelpers/guilds/voice/leaveVoiceChannel.ts +++ b/packages/gateway/src/noCheckHelpers/guilds/voice/leaveVoiceChannel.ts @@ -4,7 +4,7 @@ import type { BigString } from '@discordeno/types' import { GatewayOpcodes } from '@discordeno/types' import { calculateShardId } from '@discordeno/utils' -import type { RestManager } from '../../../restManager.js' +import type { RestManager } from '../../../../../rest/src/restManager.js' /** * Leaves the voice channel the bot user is currently in. * diff --git a/packages/rest/src/noCheckHelpers/members/fetchMembers.ts b/packages/gateway/src/noCheckHelpers/members/fetchMembers.ts similarity index 97% rename from packages/rest/src/noCheckHelpers/members/fetchMembers.ts rename to packages/gateway/src/noCheckHelpers/members/fetchMembers.ts index 9111703ea..8327b6832 100644 --- a/packages/rest/src/noCheckHelpers/members/fetchMembers.ts +++ b/packages/gateway/src/noCheckHelpers/members/fetchMembers.ts @@ -4,7 +4,7 @@ import type { BigString } from '@discordeno/types' import { GatewayOpcodes } from '@discordeno/types' import { calculateShardId } from '@discordeno/utils' -import type { RestManager } from '../../restManager.js' +import type { RestManager } from '../../../../rest/src/restManager.js' /** * Fetches the list of members for a guild over the gateway. diff --git a/packages/rest/src/noCheckHelpers/misc/editBotStatus.ts b/packages/gateway/src/noCheckHelpers/misc/editBotStatus.ts similarity index 81% rename from packages/rest/src/noCheckHelpers/misc/editBotStatus.ts rename to packages/gateway/src/noCheckHelpers/misc/editBotStatus.ts index 0aadff53a..1c362a024 100644 --- a/packages/rest/src/noCheckHelpers/misc/editBotStatus.ts +++ b/packages/gateway/src/noCheckHelpers/misc/editBotStatus.ts @@ -1,6 +1,6 @@ // @ts-nocheck -import type { RestManager } from '../../restManager.js' +import type { RestManager } from '../../../../rest/src/restManager.js' import type { StatusUpdate } from './editShardStatus.js' export async function editBotStatus ( diff --git a/packages/rest/src/noCheckHelpers/misc/editShardStatus.ts b/packages/gateway/src/noCheckHelpers/misc/editShardStatus.ts similarity index 94% rename from packages/rest/src/noCheckHelpers/misc/editShardStatus.ts rename to packages/gateway/src/noCheckHelpers/misc/editShardStatus.ts index 07c66bc4d..41156863c 100644 --- a/packages/rest/src/noCheckHelpers/misc/editShardStatus.ts +++ b/packages/gateway/src/noCheckHelpers/misc/editShardStatus.ts @@ -2,8 +2,8 @@ import type { PresenceStatus } from '@discordeno/types' import { GatewayOpcodes } from '@discordeno/types' -import type { RestManager } from '../../restManager.js' -import type { Activity } from '../../transformers/activity.js' +import type { Activity } from '../../../../bot/transformers/activity.js' +import type { RestManager } from '../../../../rest/src/restManager.js' export async function editShardStatus ( rest: RestManager, shardId: number, diff --git a/packages/rest/src/noCheckHelpers/templates/createGuildFromTemplate.ts b/packages/gateway/src/noCheckHelpers/templates/createGuildFromTemplate.ts similarity index 91% rename from packages/rest/src/noCheckHelpers/templates/createGuildFromTemplate.ts rename to packages/gateway/src/noCheckHelpers/templates/createGuildFromTemplate.ts index 854f3debe..a564b8fcd 100644 --- a/packages/rest/src/noCheckHelpers/templates/createGuildFromTemplate.ts +++ b/packages/gateway/src/noCheckHelpers/templates/createGuildFromTemplate.ts @@ -1,8 +1,8 @@ import { routes } from '@discordeno/constant' import type { DiscordGuild } from '@discordeno/types' import { calculateShardId } from '@discordeno/utils' -import type { RestManager } from '../../restManager.js' -import type { Guild } from '../../transformers/guild.js' +import type { Guild } from '../../../../bot/transformers/guild.js' +import type { RestManager } from '../../../../rest/src/restManager.js' /** * Creates a guild from a template.