@sapphire/framework
Version:
Discord bot framework built for advanced and amazing bots.
1 lines • 8.66 kB
Source Map (JSON)
{"version":3,"file":"normalizeInputs.cjs","names":["SlashCommandBuilder","ApplicationCommandType","finalObject: RESTPostAPIChatInputApplicationCommandsJSONBody","PermissionsBitField","ApplicationCommand","ContextMenuCommandBuilder","finalObject: RESTPostAPIContextMenuApplicationCommandsJSONBody"],"sources":["../../../../../src/lib/utils/application-commands/normalizeInputs.ts"],"sourcesContent":["import {\n\tContextMenuCommandBuilder,\n\tSlashCommandBuilder,\n\ttype SlashCommandOptionsOnlyBuilder,\n\ttype SlashCommandSubcommandsOnlyBuilder\n} from '@discordjs/builders';\nimport { isFunction } from '@sapphire/utilities';\nimport {\n\tApplicationCommandType,\n\ttype APIApplicationCommandOption,\n\ttype RESTPostAPIApplicationCommandsJSONBody,\n\ttype RESTPostAPIChatInputApplicationCommandsJSONBody,\n\ttype RESTPostAPIContextMenuApplicationCommandsJSONBody\n} from 'discord-api-types/v10';\nimport {\n\tApplicationCommand,\n\tPermissionsBitField,\n\ttype ApplicationIntegrationType,\n\ttype ChatInputApplicationCommandData,\n\ttype InteractionContextType,\n\ttype MessageApplicationCommandData,\n\ttype UserApplicationCommandData\n} from 'discord.js';\n\nfunction isBuilder(\n\tcommand: unknown\n): command is\n\t| SlashCommandBuilder\n\t| SlashCommandSubcommandsOnlyBuilder\n\t| SlashCommandOptionsOnlyBuilder\n\t| Omit<SlashCommandBuilder, 'addSubcommand' | 'addSubcommandGroup'> {\n\treturn command instanceof SlashCommandBuilder;\n}\n\nfunction addDefaultsToChatInputJSON(data: RESTPostAPIChatInputApplicationCommandsJSONBody): RESTPostAPIChatInputApplicationCommandsJSONBody {\n\tdata.dm_permission ??= true;\n\tdata.type ??= ApplicationCommandType.ChatInput;\n\tdata.default_member_permissions ??= null;\n\n\treturn data;\n}\n\nfunction addDefaultsToContextMenuJSON(data: RESTPostAPIContextMenuApplicationCommandsJSONBody): RESTPostAPIContextMenuApplicationCommandsJSONBody {\n\tdata.dm_permission ??= true;\n\tdata.default_member_permissions ??= null;\n\n\treturn data;\n}\n\nexport function normalizeChatInputCommand(\n\tcommand:\n\t\t| ChatInputApplicationCommandData\n\t\t| SlashCommandBuilder\n\t\t| SlashCommandSubcommandsOnlyBuilder\n\t\t| SlashCommandOptionsOnlyBuilder\n\t\t| Omit<SlashCommandBuilder, 'addSubcommand' | 'addSubcommandGroup'>\n\t\t| ((builder: SlashCommandBuilder) => unknown)\n): RESTPostAPIChatInputApplicationCommandsJSONBody {\n\tif (isFunction(command)) {\n\t\tconst builder = new SlashCommandBuilder();\n\t\tcommand(builder);\n\t\treturn addDefaultsToChatInputJSON(builder.toJSON() as RESTPostAPIChatInputApplicationCommandsJSONBody);\n\t}\n\n\tif (isBuilder(command)) {\n\t\treturn addDefaultsToChatInputJSON(command.toJSON() as RESTPostAPIChatInputApplicationCommandsJSONBody);\n\t}\n\n\tconst finalObject: RESTPostAPIChatInputApplicationCommandsJSONBody = {\n\t\tname: command.name,\n\t\tname_localizations: command.nameLocalizations,\n\t\tdescription: command.description,\n\t\tdescription_localizations: command.descriptionLocalizations,\n\t\ttype: ApplicationCommandType.ChatInput,\n\t\tdm_permission: command.dmPermission,\n\t\tnsfw: command.nsfw,\n\t\tintegration_types: command.integrationTypes as ApplicationIntegrationType[] | undefined,\n\t\tcontexts: command.contexts as InteractionContextType[] | undefined\n\t};\n\n\tif (typeof command.defaultMemberPermissions !== 'undefined') {\n\t\tfinalObject.default_member_permissions =\n\t\t\tcommand.defaultMemberPermissions === null ? null : new PermissionsBitField(command.defaultMemberPermissions).bitfield.toString();\n\t}\n\n\tif (command.options?.length) {\n\t\tfinalObject.options = command.options.map((option) => ApplicationCommand['transformOption'](option) as APIApplicationCommandOption);\n\t}\n\n\treturn addDefaultsToChatInputJSON(finalObject);\n}\n\nexport function normalizeContextMenuCommand(\n\tcommand:\n\t\t| UserApplicationCommandData\n\t\t| MessageApplicationCommandData\n\t\t| ContextMenuCommandBuilder\n\t\t| ((builder: ContextMenuCommandBuilder) => unknown)\n): RESTPostAPIContextMenuApplicationCommandsJSONBody {\n\tif (isFunction(command)) {\n\t\tconst builder = new ContextMenuCommandBuilder();\n\t\tcommand(builder);\n\t\treturn addDefaultsToContextMenuJSON(builder.toJSON() as RESTPostAPIContextMenuApplicationCommandsJSONBody);\n\t}\n\n\tif (command instanceof ContextMenuCommandBuilder) {\n\t\treturn addDefaultsToContextMenuJSON(command.toJSON() as RESTPostAPIContextMenuApplicationCommandsJSONBody);\n\t}\n\n\tconst finalObject: RESTPostAPIContextMenuApplicationCommandsJSONBody = {\n\t\tname: command.name,\n\t\tname_localizations: command.nameLocalizations,\n\t\t// TODO (favna 2024-10-19): Remove this line after discord.js has been updated past 14.16.3\n\t\t// @ts-ignore temporarily ignore the error because discord.js broke types\n\t\ttype: command.type,\n\t\tdm_permission: command.dmPermission,\n\t\tnsfw: command.nsfw,\n\t\tintegration_types: command.integrationTypes as ApplicationIntegrationType[] | undefined,\n\t\tcontexts: command.contexts as InteractionContextType[] | undefined\n\t};\n\n\tif (typeof command.defaultMemberPermissions !== 'undefined') {\n\t\tfinalObject.default_member_permissions =\n\t\t\tcommand.defaultMemberPermissions === null ? null : new PermissionsBitField(command.defaultMemberPermissions).bitfield.toString();\n\t}\n\n\treturn addDefaultsToContextMenuJSON(finalObject);\n}\n\nexport function convertApplicationCommandToApiData(command: ApplicationCommand): RESTPostAPIApplicationCommandsJSONBody {\n\tconst returnData = {\n\t\tname: command.name,\n\t\tname_localizations: command.nameLocalizations,\n\t\tdm_permission: command.dmPermission,\n\t\tnsfw: command.nsfw,\n\t\tdefault_member_permissions: command.defaultMemberPermissions?.bitfield.toString() ?? null,\n\t\tintegration_types: command.integrationTypes,\n\t\tcontexts: command.contexts\n\t} as RESTPostAPIApplicationCommandsJSONBody;\n\n\tif (command.type === ApplicationCommandType.ChatInput) {\n\t\treturnData.type = ApplicationCommandType.ChatInput;\n\t\t(returnData as RESTPostAPIChatInputApplicationCommandsJSONBody).description = command.description;\n\t\t// TODO (favna): Remove this line after website rewrite is done\n\t\t// @ts-ignore this is currently ignored for the website\n\t\t(returnData as RESTPostAPIChatInputApplicationCommandsJSONBody).description_localizations = command.descriptionLocalizations;\n\t} else if (command.type === ApplicationCommandType.Message) {\n\t\treturnData.type = ApplicationCommandType.Message;\n\t} else if (command.type === ApplicationCommandType.User) {\n\t\treturnData.type = ApplicationCommandType.User;\n\t} else {\n\t\tthrow new Error(`Unknown command type received: ${command.type}`);\n\t}\n\n\tif (command.options.length) {\n\t\treturnData.options = command.options.map((option) => ApplicationCommand['transformOption'](option as any) as APIApplicationCommandOption);\n\t}\n\n\treturn returnData;\n}\n"],"mappings":";;;;;;;AAwBA,SAAS,UACR,SAKoE;AACpE,QAAO,mBAAmBA;;AAG3B,SAAS,2BAA2B,MAAwG;AAC3I,MAAK,kBAAkB;AACvB,MAAK,SAASC,6CAAuB;AACrC,MAAK,+BAA+B;AAEpC,QAAO;;AAGR,SAAS,6BAA6B,MAA4G;AACjJ,MAAK,kBAAkB;AACvB,MAAK,+BAA+B;AAEpC,QAAO;;AAGR,SAAgB,0BACf,SAOkD;AAClD,0CAAe,QAAQ,EAAE;EACxB,MAAM,UAAU,IAAID,0CAAqB;AACzC,UAAQ,QAAQ;AAChB,SAAO,2BAA2B,QAAQ,QAAQ,CAAoD;;AAGvG,KAAI,UAAU,QAAQ,CACrB,QAAO,2BAA2B,QAAQ,QAAQ,CAAoD;CAGvG,MAAME,cAA+D;EACpE,MAAM,QAAQ;EACd,oBAAoB,QAAQ;EAC5B,aAAa,QAAQ;EACrB,2BAA2B,QAAQ;EACnC,MAAMD,6CAAuB;EAC7B,eAAe,QAAQ;EACvB,MAAM,QAAQ;EACd,mBAAmB,QAAQ;EAC3B,UAAU,QAAQ;EAClB;AAED,KAAI,OAAO,QAAQ,6BAA6B,YAC/C,aAAY,6BACX,QAAQ,6BAA6B,OAAO,OAAO,IAAIE,+BAAoB,QAAQ,yBAAyB,CAAC,SAAS,UAAU;AAGlI,KAAI,QAAQ,SAAS,OACpB,aAAY,UAAU,QAAQ,QAAQ,KAAK,WAAWC,8BAAmB,mBAAmB,OAAO,CAAgC;AAGpI,QAAO,2BAA2B,YAAY;;AAG/C,SAAgB,4BACf,SAKoD;AACpD,0CAAe,QAAQ,EAAE;EACxB,MAAM,UAAU,IAAIC,gDAA2B;AAC/C,UAAQ,QAAQ;AAChB,SAAO,6BAA6B,QAAQ,QAAQ,CAAsD;;AAG3G,KAAI,mBAAmBA,+CACtB,QAAO,6BAA6B,QAAQ,QAAQ,CAAsD;CAG3G,MAAMC,cAAiE;EACtE,MAAM,QAAQ;EACd,oBAAoB,QAAQ;EAG5B,MAAM,QAAQ;EACd,eAAe,QAAQ;EACvB,MAAM,QAAQ;EACd,mBAAmB,QAAQ;EAC3B,UAAU,QAAQ;EAClB;AAED,KAAI,OAAO,QAAQ,6BAA6B,YAC/C,aAAY,6BACX,QAAQ,6BAA6B,OAAO,OAAO,IAAIH,+BAAoB,QAAQ,yBAAyB,CAAC,SAAS,UAAU;AAGlI,QAAO,6BAA6B,YAAY;;AAGjD,SAAgB,mCAAmC,SAAqE;CACvH,MAAM,aAAa;EAClB,MAAM,QAAQ;EACd,oBAAoB,QAAQ;EAC5B,eAAe,QAAQ;EACvB,MAAM,QAAQ;EACd,4BAA4B,QAAQ,0BAA0B,SAAS,UAAU,IAAI;EACrF,mBAAmB,QAAQ;EAC3B,UAAU,QAAQ;EAClB;AAED,KAAI,QAAQ,SAASF,6CAAuB,WAAW;AACtD,aAAW,OAAOA,6CAAuB;AACzC,EAAC,WAA+D,cAAc,QAAQ;AAGtF,EAAC,WAA+D,4BAA4B,QAAQ;YAC1F,QAAQ,SAASA,6CAAuB,QAClD,YAAW,OAAOA,6CAAuB;UAC/B,QAAQ,SAASA,6CAAuB,KAClD,YAAW,OAAOA,6CAAuB;KAEzC,OAAM,IAAI,MAAM,kCAAkC,QAAQ,OAAO;AAGlE,KAAI,QAAQ,QAAQ,OACnB,YAAW,UAAU,QAAQ,QAAQ,KAAK,WAAWG,8BAAmB,mBAAmB,OAAc,CAAgC;AAG1I,QAAO"}