trivious 2.0.3 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/client/trivious.client.ts"],"names":[],"mappings":";;;;;;AAeA,MAAO,uBAAqC,MAAA,CAAO;AAAA,EAClD,QAAA;AAAA,EACS,MAAA;AAAA,EAUT,YAAY,OAAA,EAAgC;AAC3C,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,QAAA,GAAW,OAAA;AAEhB,IAAA,IAAA,CAAK,MAAA,GAAS;AAAA,MACb,QAAA,EAAU;AAAA,QACT,SAAA,EAAW,IAAI,UAAA,EAAW;AAAA,QAC1B,OAAA,EAAS,IAAI,UAAA;AAAW,OACzB;AAAA,MACA,UAAA,EAAY,IAAI,UAAA,EAAW;AAAA,MAC3B,MAAA,EAAQ,IAAI,UAAA,EAAW;AAAA,MACvB,OAAA,EAAS,IAAI,UAAA;AAAW,KACzB;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,KAAA,GAAQ;AACb,IAAA,MAAM,QAAQ,OAAA,CAAQ,GAAA,CAAI,IAAA,CAAK,QAAA,CAAS,YAAY,cAAc,CAAA;AAClE,IAAA,IAAI,CAAC,KAAA,EAAO;AACX,MAAA,MAAM,IAAI,aAAA;AAAA,QACT,CAAA,gCAAA,EAAmC,IAAA,CAAK,QAAA,CAAS,WAAA,CAAY,cAAc,CAAA,iBAAA,CAAA;AAAA,QAC3E;AAAA,OACD;AAAA,IACD;AAEA,IAAA,MAAM,KAAK,QAAA,EAAS;AACpB,IAAA,MAAM,KAAK,MAAA,EAAO;AAElB,IAAA,IAAI;AACH,MAAA,MAAM,UAAA,CAAW,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA;AACjC,MAAA,MAAM,UAAA,CAAW,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAA;AAAA,IACnC,SAAS,GAAA,EAAU;AAClB,MAAA,MAAM,KAAA,GAAQ,IAAI,aAAA,CAAc,GAAA,CAAI,SAAS,uCAAuC,CAAA;AACpF,MAAA,OAAA,CAAQ,MAAM,KAAK,CAAA;AAAA,IACpB;AAEA,IAAA,MAAM,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,EACvB;AAAA,EAEA,MAAM,QAAA,GAAW;AAChB,IAAA,MAAM,GAAA,GAAM,SAAA,CAAU,mBAAA,CAAoB,IAAA,CAAK,SAAS,QAAQ,CAAA;AAEhE,IAAA,MAAM,UAAA,CAAW,MAAA,CAAO,QAAA,CAAS,IAAA,EAAM,GAAG,CAAA;AAC1C,IAAA,MAAM,UAAA,CAAW,OAAA,CAAQ,QAAA,CAAS,IAAA,EAAM,GAAG,CAAA;AAC3C,IAAA,MAAM,UAAA,CAAW,QAAA,CAAS,QAAA,CAAS,IAAA,EAAM,GAAG,CAAA;AAC5C,IAAA,MAAM,UAAA,CAAW,UAAA,CAAW,QAAA,CAAS,IAAA,EAAM,GAAG,CAAA;AAAA,EAC/C;AAAA,EAEA,MAAM,MAAA,GAAS;AACd,IAAA,MAAM,cAAc,IAAI,CAAA;AAAA,EACzB;AACD","file":"trivious.client.js","sourcesContent":["import { Client, Collection } from \"discord.js\";\nimport registries from \"src/shared/registries.js\";\nimport structure from \"../structure/index.structure.js\";\n\nimport type {\n\tBaseContextCommandData,\n\tComponent,\n\tEvent,\n\tModule,\n\tSlashCommandData,\n\tTriviousClientOptions,\n} from \"#typings\";\nimport { TriviousError } from \"#utility/errors.js\";\nimport commandDeploy from \"./deploy.client.js\";\n\nexport default class TriviousClient extends Client {\n\ttrivious: TriviousClientOptions;\n\treadonly stores: {\n\t\tcommands: {\n\t\t\tchatInput: Collection<string, SlashCommandData>;\n\t\t\tcontext: Collection<string, BaseContextCommandData>;\n\t\t};\n\t\tcomponents: Collection<string, Component>;\n\t\tevents: Collection<string, Event>;\n\t\tmodules: Collection<string, Module>;\n\t};\n\n\tconstructor(options: TriviousClientOptions) {\n\t\tsuper(options);\n\t\tthis.trivious = options;\n\n\t\tthis.stores = {\n\t\t\tcommands: {\n\t\t\t\tchatInput: new Collection(),\n\t\t\t\tcontext: new Collection(),\n\t\t\t},\n\t\t\tcomponents: new Collection(),\n\t\t\tevents: new Collection(),\n\t\t\tmodules: new Collection(),\n\t\t};\n\t}\n\n\t/**\n\t * Register, deploy and log into the bot.\n\t *\n\t * @throws {TriviousError} If invalid bot token\n\t */\n\tasync start() {\n\t\tconst token = process.env[this.trivious.credentials.tokenReference];\n\t\tif (!token) {\n\t\t\tthrow new TriviousError(\n\t\t\t\t`Bot token environment variable '${this.trivious.credentials.tokenReference}' does not exist!`,\n\t\t\t\t\"Null environment variable\"\n\t\t\t);\n\t\t}\n\n\t\tawait this.register();\n\t\tawait this.deploy();\n\n\t\ttry {\n\t\t\tawait registries.events.bind(this);\n\t\t\tawait registries.modules.bind(this);\n\t\t} catch (err: any) {\n\t\t\tconst error = new TriviousError(err.message, \"Error during events and modules binds\");\n\t\t\tconsole.error(error);\n\t\t}\n\n\t\tawait this.login(token);\n\t}\n\n\tasync register() {\n\t\tconst dir = structure.resolveRelativePath(this.trivious.corePath);\n\n\t\tawait registries.events.register(this, dir);\n\t\tawait registries.modules.register(this, dir);\n\t\tawait registries.commands.register(this, dir);\n\t\tawait registries.components.register(this, dir);\n\t}\n\n\tasync deploy() {\n\t\tawait commandDeploy(this);\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../src/features/client/trivious.client.ts"],"names":[],"mappings":";;;;;;AAeA,MAAO,uBAAqC,MAAA,CAAO;AAAA,EAClD,QAAA;AAAA,EACS,MAAA;AAAA,EAUT,YAAY,OAAA,EAAgC;AAC3C,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,QAAA,GAAW,OAAA;AAEhB,IAAA,IAAA,CAAK,MAAA,GAAS;AAAA,MACb,QAAA,EAAU;AAAA,QACT,SAAA,EAAW,IAAI,UAAA,EAAW;AAAA,QAC1B,OAAA,EAAS,IAAI,UAAA;AAAW,OACzB;AAAA,MACA,UAAA,EAAY,IAAI,UAAA,EAAW;AAAA,MAC3B,MAAA,EAAQ,IAAI,UAAA,EAAW;AAAA,MACvB,OAAA,EAAS,IAAI,UAAA;AAAW,KACzB;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,KAAA,GAAQ;AACb,IAAA,MAAM,QAAQ,OAAA,CAAQ,GAAA,CAAI,IAAA,CAAK,QAAA,CAAS,YAAY,cAAc,CAAA;AAClE,IAAA,IAAI,CAAC,KAAA,EAAO;AACX,MAAA,MAAM,IAAI,aAAA;AAAA,QACT,CAAA,gCAAA,EAAmC,IAAA,CAAK,QAAA,CAAS,WAAA,CAAY,cAAc,CAAA,iBAAA,CAAA;AAAA,QAC3E;AAAA,OACD;AAAA,IACD;AAEA,IAAA,MAAM,KAAK,QAAA,EAAS;AACpB,IAAA,MAAM,KAAK,MAAA,EAAO;AAElB,IAAA,IAAI;AACH,MAAA,MAAM,UAAA,CAAW,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA;AACjC,MAAA,MAAM,UAAA,CAAW,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAA;AAAA,IACnC,SAAS,GAAA,EAAU;AAClB,MAAA,MAAM,KAAA,GAAQ,IAAI,aAAA,CAAc,GAAA,CAAI,SAAS,uCAAuC,CAAA;AACpF,MAAA,OAAA,CAAQ,MAAM,KAAK,CAAA;AAAA,IACpB;AAEA,IAAA,MAAM,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,EACvB;AAAA,EAEA,MAAM,QAAA,GAAW;AAChB,IAAA,MAAM,GAAA,GAAM,SAAA,CAAU,mBAAA,CAAoB,IAAA,CAAK,SAAS,QAAQ,CAAA;AAEhE,IAAA,MAAM,UAAA,CAAW,MAAA,CAAO,QAAA,CAAS,IAAA,EAAM,GAAG,CAAA;AAC1C,IAAA,MAAM,UAAA,CAAW,OAAA,CAAQ,QAAA,CAAS,IAAA,EAAM,GAAG,CAAA;AAC3C,IAAA,MAAM,UAAA,CAAW,QAAA,CAAS,QAAA,CAAS,IAAA,EAAM,GAAG,CAAA;AAC5C,IAAA,MAAM,UAAA,CAAW,UAAA,CAAW,QAAA,CAAS,IAAA,EAAM,GAAG,CAAA;AAAA,EAC/C;AAAA,EAEA,MAAM,MAAA,GAAS;AACd,IAAA,MAAM,cAAc,IAAI,CAAA;AAAA,EACzB;AACD","file":"trivious.client.js","sourcesContent":["import { Client, Collection } from \"discord.js\";\nimport registries from \"src/shared/registries.js\";\nimport structure from \"../structure/index.structure.js\";\n\nimport {\n\tBaseContextCommandData,\n\tComponent,\n\tEvent,\n\tModule,\n\tSlashCommandData,\n\tTriviousClientOptions,\n} from \"#typings\";\nimport { TriviousError } from \"#utility/errors.js\";\nimport commandDeploy from \"./deploy.client.js\";\n\nexport default class TriviousClient extends Client {\n\ttrivious: TriviousClientOptions;\n\treadonly stores: {\n\t\tcommands: {\n\t\t\tchatInput: Collection<string, SlashCommandData>;\n\t\t\tcontext: Collection<string, BaseContextCommandData>;\n\t\t};\n\t\tcomponents: Collection<string, Component>;\n\t\tevents: Collection<string, Event>;\n\t\tmodules: Collection<string, Module>;\n\t};\n\n\tconstructor(options: TriviousClientOptions) {\n\t\tsuper(options);\n\t\tthis.trivious = options;\n\n\t\tthis.stores = {\n\t\t\tcommands: {\n\t\t\t\tchatInput: new Collection(),\n\t\t\t\tcontext: new Collection(),\n\t\t\t},\n\t\t\tcomponents: new Collection(),\n\t\t\tevents: new Collection(),\n\t\t\tmodules: new Collection(),\n\t\t};\n\t}\n\n\t/**\n\t * Register, deploy and log into the bot.\n\t *\n\t * @throws {TriviousError} If invalid bot token\n\t */\n\tasync start() {\n\t\tconst token = process.env[this.trivious.credentials.tokenReference];\n\t\tif (!token) {\n\t\t\tthrow new TriviousError(\n\t\t\t\t`Bot token environment variable '${this.trivious.credentials.tokenReference}' does not exist!`,\n\t\t\t\t\"Null environment variable\"\n\t\t\t);\n\t\t}\n\n\t\tawait this.register();\n\t\tawait this.deploy();\n\n\t\ttry {\n\t\t\tawait registries.events.bind(this);\n\t\t\tawait registries.modules.bind(this);\n\t\t} catch (err: any) {\n\t\t\tconst error = new TriviousError(err.message, \"Error during events and modules binds\");\n\t\t\tconsole.error(error);\n\t\t}\n\n\t\tawait this.login(token);\n\t}\n\n\tasync register() {\n\t\tconst dir = structure.resolveRelativePath(this.trivious.corePath);\n\n\t\tawait registries.events.register(this, dir);\n\t\tawait registries.modules.register(this, dir);\n\t\tawait registries.commands.register(this, dir);\n\t\tawait registries.components.register(this, dir);\n\t}\n\n\tasync deploy() {\n\t\tawait commandDeploy(this);\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/commands/methods.commands.ts"],"names":[],"mappings":"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","file":"methods.commands.js","sourcesContent":["import type {\n\tCacheType,\n\tChatInputCommandInteraction,\n\tInteraction,\n\tInteractionEditReplyOptions,\n\tInteractionReplyOptions,\n\tMessagePayload,\n} from \"discord.js\";\nimport type { CommandFlags, SlashCommandData, TriviousClient } from \"#typings\";\n\nexport async function interactionReply(options: {\n\tinteraction: Interaction<CacheType>;\n\treplyPayload: InteractionReplyOptions | InteractionEditReplyOptions | MessagePayload;\n\tflags?: (CommandFlags | \"FollowUp\")[];\n}) {\n\tconst { interaction, replyPayload, flags } = options;\n\tif (!(\"reply\" in interaction)) return;\n\n\tconst payload = replyPayload as InteractionReplyOptions;\n\tif (flags?.includes(\"EphemeralReply\")) payload.flags = [\"Ephemeral\"];\n\n\tif (interaction.deferred || interaction.replied) {\n\t\tif (flags?.includes(\"FollowUp\")) return await interaction.followUp(payload);\n\t\treturn await interaction.editReply(payload as InteractionEditReplyOptions);\n\t}\n\n\treturn await interaction.reply(payload);\n}\n\nexport async function handleSlashCommand(\n\tclient: TriviousClient,\n\tcommand: SlashCommandData,\n\tinteraction: ChatInputCommandInteraction\n) {\n\tconst { options } = interaction;\n\n\tif (command.flags?.includes(\"Cached\") && !interaction.inCachedGuild()) return;\n\tif (command.flags?.includes(\"ExpectModal\")) return;\n\tif (command.flags?.includes(\"DeferReply\")) {\n\t\tawait interactionReply({\n\t\t\tinteraction,\n\t\t\tflags: command.flags,\n\t\t\treplyPayload: { content: \"Processing command...\" },\n\t\t});\n\t}\n\n\tif (\"run\" in command && command.run) {\n\t\ttry {\n\t\t\tawait command.run(client, interaction);\n\t\t} catch (err: any) {\n\t\t\tconsole.error(err);\n\t\t}\n\t}\n\n\tconst subcommandGroup = options.getSubcommandGroup(false);\n\tconst subcommand = options.getSubcommand(false);\n\n\tif (subcommandGroup && command.subcommandGroups && subcommand) {\n\t\tconst foundGroup = command.subcommandGroups.get(subcommandGroup);\n\t\tif (!foundGroup) {\n\t\t\tawait interactionReply({\n\t\t\t\tinteraction,\n\t\t\t\tflags: [\"EphemeralReply\"],\n\t\t\t\treplyPayload: {\n\t\t\t\t\tcontent: \"Subcommand group is outdated, inactive, or does not have a handler!\",\n\t\t\t\t},\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst foundSubcommand = foundGroup.subcommands.get(subcommand);\n\t\tif (!foundSubcommand) {\n\t\t\tawait interactionReply({\n\t\t\t\tinteraction,\n\t\t\t\tflags: [\"EphemeralReply\"],\n\t\t\t\treplyPayload: { content: \"Subcommand is outdated, inactive, or does not have a handler!\" },\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\treturn await foundSubcommand.execute(client, interaction);\n\t} else if (subcommand && command.subcommands) {\n\t\tconst foundSubcommand = command.subcommands.get(subcommand);\n\t\tif (!foundSubcommand) {\n\t\t\tawait interactionReply({\n\t\t\t\tinteraction,\n\t\t\t\tflags: [\"EphemeralReply\"],\n\t\t\t\treplyPayload: { content: \"Subcommand is outdated, inactive, or does not have a handler!\" },\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\treturn await foundSubcommand.execute(client, interaction);\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../src/features/commands/methods.commands.ts"],"names":[],"mappings":"AAUA,eAAsB,iBAAiB,OAAA,EAIpC;AACF,EAAA,MAAM,EAAE,WAAA,EAAa,YAAA,EAAc,KAAA,EAAM,GAAI,OAAA;AAC7C,EAAA,IAAI,EAAE,WAAW,WAAA,CAAA,EAAc;AAE/B,EAAA,MAAM,OAAA,GAAU,YAAA;AAChB,EAAA,IAAI,OAAO,QAAA,CAAS,gBAAgB,GAAG,OAAA,CAAQ,KAAA,GAAQ,CAAC,WAAW,CAAA;AAEnE,EAAA,IAAI,WAAA,CAAY,QAAA,IAAY,WAAA,CAAY,OAAA,EAAS;AAChD,IAAA,IAAI,KAAA,EAAO,SAAS,UAAU,CAAA,SAAU,MAAM,WAAA,CAAY,SAAS,OAAO,CAAA;AAC1E,IAAA,OAAO,MAAM,WAAA,CAAY,SAAA,CAAU,OAAsC,CAAA;AAAA,EAC1E;AAEA,EAAA,OAAO,MAAM,WAAA,CAAY,KAAA,CAAM,OAAO,CAAA;AACvC;AAEA,eAAsB,kBAAA,CACrB,MAAA,EACA,OAAA,EACA,WAAA,EACC;AACD,EAAA,MAAM,EAAE,SAAQ,GAAI,WAAA;AAEpB,EAAA,IAAI,OAAA,CAAQ,OAAO,QAAA,CAAS,QAAQ,KAAK,CAAC,WAAA,CAAY,eAAc,EAAG;AACvE,EAAA,IAAI,OAAA,CAAQ,KAAA,EAAO,QAAA,CAAS,aAAa,CAAA,EAAG;AAC5C,EAAA,IAAI,OAAA,CAAQ,KAAA,EAAO,QAAA,CAAS,YAAY,CAAA,EAAG;AAC1C,IAAA,MAAM,gBAAA,CAAiB;AAAA,MACtB,WAAA;AAAA,MACA,OAAO,OAAA,CAAQ,KAAA;AAAA,MACf,YAAA,EAAc,EAAE,OAAA,EAAS,uBAAA;AAAwB,KACjD,CAAA;AAAA,EACF;AAEA,EAAA,IAAI,KAAA,IAAS,OAAA,IAAW,OAAA,CAAQ,GAAA,EAAK;AACpC,IAAA,IAAI;AACH,MAAA,MAAM,OAAA,CAAQ,GAAA,CAAI,MAAA,EAAQ,WAAW,CAAA;AAAA,IACtC,SAAS,GAAA,EAAU;AAClB,MAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAAA,IAClB;AAAA,EACD;AAEA,EAAA,MAAM,eAAA,GAAkB,OAAA,CAAQ,kBAAA,CAAmB,KAAK,CAAA;AACxD,EAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,aAAA,CAAc,KAAK,CAAA;AAE9C,EAAA,IAAI,eAAA,IAAmB,OAAA,CAAQ,gBAAA,IAAoB,UAAA,EAAY;AAC9D,IAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,gBAAA,CAAiB,GAAA,CAAI,eAAe,CAAA;AAC/D,IAAA,IAAI,CAAC,UAAA,EAAY;AAChB,MAAA,MAAM,gBAAA,CAAiB;AAAA,QACtB,WAAA;AAAA,QACA,KAAA,EAAO,CAAC,gBAAgB,CAAA;AAAA,QACxB,YAAA,EAAc;AAAA,UACb,OAAA,EAAS;AAAA;AACV,OACA,CAAA;AACD,MAAA;AAAA,IACD;AAEA,IAAA,MAAM,eAAA,GAAkB,UAAA,CAAW,WAAA,CAAY,GAAA,CAAI,UAAU,CAAA;AAC7D,IAAA,IAAI,CAAC,eAAA,EAAiB;AACrB,MAAA,MAAM,gBAAA,CAAiB;AAAA,QACtB,WAAA;AAAA,QACA,KAAA,EAAO,CAAC,gBAAgB,CAAA;AAAA,QACxB,YAAA,EAAc,EAAE,OAAA,EAAS,+DAAA;AAAgE,OACzF,CAAA;AACD,MAAA;AAAA,IACD;AAEA,IAAA,OAAO,MAAM,eAAA,CAAgB,OAAA,CAAQ,MAAA,EAAQ,WAAW,CAAA;AAAA,EACzD,CAAA,MAAA,IAAW,UAAA,IAAc,OAAA,CAAQ,WAAA,EAAa;AAC7C,IAAA,MAAM,eAAA,GAAkB,OAAA,CAAQ,WAAA,CAAY,GAAA,CAAI,UAAU,CAAA;AAC1D,IAAA,IAAI,CAAC,eAAA,EAAiB;AACrB,MAAA,MAAM,gBAAA,CAAiB;AAAA,QACtB,WAAA;AAAA,QACA,KAAA,EAAO,CAAC,gBAAgB,CAAA;AAAA,QACxB,YAAA,EAAc,EAAE,OAAA,EAAS,+DAAA;AAAgE,OACzF,CAAA;AACD,MAAA;AAAA,IACD;AAEA,IAAA,OAAO,MAAM,eAAA,CAAgB,OAAA,CAAQ,MAAA,EAAQ,WAAW,CAAA;AAAA,EACzD;AACD","file":"methods.commands.js","sourcesContent":["import { CommandFlags, SlashCommandData, TriviousClient } from \"#typings\";\nimport {\n\tCacheType,\n\tChatInputCommandInteraction,\n\tInteraction,\n\tInteractionEditReplyOptions,\n\tInteractionReplyOptions,\n\tMessagePayload,\n} from \"discord.js\";\n\nexport async function interactionReply(options: {\n\tinteraction: Interaction<CacheType>;\n\treplyPayload: InteractionReplyOptions | InteractionEditReplyOptions | MessagePayload;\n\tflags?: (CommandFlags | \"FollowUp\")[];\n}) {\n\tconst { interaction, replyPayload, flags } = options;\n\tif (!(\"reply\" in interaction)) return;\n\n\tconst payload = replyPayload as InteractionReplyOptions;\n\tif (flags?.includes(\"EphemeralReply\")) payload.flags = [\"Ephemeral\"];\n\n\tif (interaction.deferred || interaction.replied) {\n\t\tif (flags?.includes(\"FollowUp\")) return await interaction.followUp(payload);\n\t\treturn await interaction.editReply(payload as InteractionEditReplyOptions);\n\t}\n\n\treturn await interaction.reply(payload);\n}\n\nexport async function handleSlashCommand(\n\tclient: TriviousClient,\n\tcommand: SlashCommandData,\n\tinteraction: ChatInputCommandInteraction\n) {\n\tconst { options } = interaction;\n\n\tif (command.flags?.includes(\"Cached\") && !interaction.inCachedGuild()) return;\n\tif (command.flags?.includes(\"ExpectModal\")) return;\n\tif (command.flags?.includes(\"DeferReply\")) {\n\t\tawait interactionReply({\n\t\t\tinteraction,\n\t\t\tflags: command.flags,\n\t\t\treplyPayload: { content: \"Processing command...\" },\n\t\t});\n\t}\n\n\tif (\"run\" in command && command.run) {\n\t\ttry {\n\t\t\tawait command.run(client, interaction);\n\t\t} catch (err: any) {\n\t\t\tconsole.error(err);\n\t\t}\n\t}\n\n\tconst subcommandGroup = options.getSubcommandGroup(false);\n\tconst subcommand = options.getSubcommand(false);\n\n\tif (subcommandGroup && command.subcommandGroups && subcommand) {\n\t\tconst foundGroup = command.subcommandGroups.get(subcommandGroup);\n\t\tif (!foundGroup) {\n\t\t\tawait interactionReply({\n\t\t\t\tinteraction,\n\t\t\t\tflags: [\"EphemeralReply\"],\n\t\t\t\treplyPayload: {\n\t\t\t\t\tcontent: \"Subcommand group is outdated, inactive, or does not have a handler!\",\n\t\t\t\t},\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst foundSubcommand = foundGroup.subcommands.get(subcommand);\n\t\tif (!foundSubcommand) {\n\t\t\tawait interactionReply({\n\t\t\t\tinteraction,\n\t\t\t\tflags: [\"EphemeralReply\"],\n\t\t\t\treplyPayload: { content: \"Subcommand is outdated, inactive, or does not have a handler!\" },\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\treturn await foundSubcommand.execute(client, interaction);\n\t} else if (subcommand && command.subcommands) {\n\t\tconst foundSubcommand = command.subcommands.get(subcommand);\n\t\tif (!foundSubcommand) {\n\t\t\tawait interactionReply({\n\t\t\t\tinteraction,\n\t\t\t\tflags: [\"EphemeralReply\"],\n\t\t\t\treplyPayload: { content: \"Subcommand is outdated, inactive, or does not have a handler!\" },\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\treturn await foundSubcommand.execute(client, interaction);\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/commands/registry.commands.ts"],"names":["fs"],"mappings":"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","file":"registry.commands.js","sourcesContent":["import type {\n\tBaseChatInputCommandData,\n\tBaseContextCommandData,\n\tMessageCommandData,\n\tSlashCommandData,\n\tSlashSubcommandData,\n\tSlashSubcommandGroupData,\n\tTriviousClient,\n\tUserCommandData,\n} from \"#typings\";\nimport { TriviousError } from \"#utility/errors.js\";\nimport { importFile } from \"#utility/functions.js\";\nimport { ApplicationCommandType, Collection } from \"discord.js\";\nimport { Dirent, existsSync, promises as fs } from \"fs\";\nimport path, { join } from \"path\";\n\nfunction validateCommand<T extends BaseChatInputCommandData | BaseContextCommandData>(\n\tcommand: T,\n\texpects: (command: Partial<T>) => boolean\n): boolean {\n\tif (!(\"active\" in command && \"commandType\" in command)) return false;\n\tif (!command.active) return false;\n\treturn expects(command);\n}\n\nasync function parseSlashSubcommands(\n\tdirectory: string,\n\tdata: SlashCommandData | SlashSubcommandGroupData<boolean>\n) {\n\tconst _parentType = \"context\" in data ? \"command\" : \"group\";\n\tconst subcommands = new Collection<string, SlashSubcommandData<true, typeof _parentType>>();\n\n\tif (!(\"addSubcommand\" in data.data)) return subcommands;\n\n\tconst files = fs.glob(join(directory, \"./*.js\"));\n\tfor await (const file of files) {\n\t\tconst subcommand = await importFile<SlashSubcommandData<true, typeof _parentType>>(file);\n\t\tif (\n\t\t\t!subcommand ||\n\t\t\t!validateCommand(subcommand, (subcmd) => subcmd.context === \"SlashSubcommand\")\n\t\t)\n\t\t\tcontinue;\n\n\t\tsubcommand.parent = data;\n\t\tdata.data.addSubcommand(subcommand.data);\n\t\tsubcommands.set(subcommand.data.name, subcommand);\n\t}\n\n\tif (subcommands.size > 0) data.subcommands = subcommands;\n\treturn subcommands;\n}\n\nasync function parseSlashCommand(\n\tfile: string,\n\tparentDir: string,\n\tsubdirectories: Dirent<string>[]\n) {\n\tif (!existsSync(file)) return;\n\n\tconst command = await importFile<SlashCommandData>(file);\n\tif (\n\t\t!command ||\n\t\t!validateCommand(command, (cmd) => cmd.context === \"SlashCommand\") ||\n\t\t!(\"addSubcommand\" in command.data)\n\t)\n\t\treturn;\n\n\tawait parseSlashSubcommands(parentDir, command);\n\n\tfor (const subdir of subdirectories) {\n\t\tconst indexFile = path.resolve(subdir.parentPath, subdir.name, \"index.js\");\n\t\tif (!existsSync(indexFile)) continue;\n\n\t\tconst group = await importFile<SlashSubcommandGroupData<true>>(indexFile);\n\t\tif (!group || !(\"context\" in group) || group.context !== \"SlashSubcommandGroup\") continue;\n\n\t\tgroup.parent = command;\n\t\tif (!command.subcommandGroups) command.subcommandGroups = new Collection();\n\t\tawait parseSlashSubcommands(join(subdir.parentPath, subdir.name), group);\n\n\t\tif (group.subcommands.size > 0) {\n\t\t\tcommand.data.addSubcommandGroup(group.data);\n\t\t\tcommand.subcommandGroups.set(group.data.name, group);\n\t\t}\n\t}\n\n\treturn command;\n}\n\nasync function parseContextCommands(parentDir: string) {\n\tconst collection = new Collection<string, MessageCommandData | UserCommandData>();\n\tconst files = fs.glob(join(parentDir, \"**/*.js\"));\n\tfor await (const file of files) {\n\t\tconst contextCommand = await importFile<MessageCommandData | UserCommandData>(file);\n\t\tif (\n\t\t\t!contextCommand ||\n\t\t\t!validateCommand(\n\t\t\t\tcontextCommand,\n\t\t\t\t(cmd) =>\n\t\t\t\t\tcmd.commandType === ApplicationCommandType.Message ||\n\t\t\t\t\tcmd.commandType === ApplicationCommandType.User\n\t\t\t)\n\t\t)\n\t\t\tcontinue;\n\n\t\tcontextCommand.data.setType(contextCommand.commandType);\n\t\tcollection.set(contextCommand.data.name, contextCommand);\n\t}\n\n\treturn collection;\n}\n\nasync function registerDirectory(client: TriviousClient, parentDir: string) {\n\tconst entries = await fs.readdir(parentDir, { withFileTypes: true });\n\tconst subdirectories = entries.filter((entry) => entry.isDirectory());\n\n\tconst indexFile = path.resolve(parentDir, \"index.js\");\n\tconst slashCommand = await parseSlashCommand(indexFile, parentDir, subdirectories);\n\tif (slashCommand) client.stores.commands.chatInput.set(slashCommand.data.name, slashCommand);\n\n\tconst contextCommands = await parseContextCommands(parentDir);\n\tcontextCommands.forEach((cmd) => client.stores.commands.context.set(cmd.data.name, cmd));\n}\n\nexport default async function registerCommands(client: TriviousClient, directory: string) {\n\tif (!existsSync(directory))\n\t\tthrow new TriviousError(\n\t\t\t`Could not register commands; passed directory '${directory}' does not exist!`,\n\t\t\t\"Nonexistant directory passed\"\n\t\t);\n\n\tconst processedDirectories = new Set<string>();\n\n\tconst files = fs.glob(join(directory, \"**/*.js\"));\n\tfor await (const file of files) {\n\t\tconst parentDir = path.dirname(file);\n\n\t\tif (processedDirectories.has(parentDir)) continue;\n\t\tprocessedDirectories.add(parentDir);\n\n\t\tawait registerDirectory(client, parentDir);\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../src/features/commands/registry.commands.ts"],"names":["fs"],"mappings":"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","file":"registry.commands.js","sourcesContent":["import {\n\tBaseChatInputCommandData,\n\tBaseContextCommandData,\n\tMessageCommandData,\n\tSlashCommandData,\n\tSlashSubcommandData,\n\tSlashSubcommandGroupData,\n\tTriviousClient,\n\tUserCommandData,\n} from \"#typings\";\nimport { TriviousError } from \"#utility/errors.js\";\nimport { importFile } from \"#utility/functions.js\";\nimport { ApplicationCommandType, Collection } from \"discord.js\";\nimport { Dirent, existsSync, promises as fs } from \"fs\";\nimport path, { join } from \"path\";\n\nfunction validateCommand<T extends BaseChatInputCommandData | BaseContextCommandData>(\n\tcommand: T,\n\texpects: (command: Partial<T>) => boolean\n): boolean {\n\tif (!(\"active\" in command && \"commandType\" in command)) return false;\n\tif (!command.active) return false;\n\treturn expects(command);\n}\n\nasync function parseSlashSubcommands(\n\tdirectory: string,\n\tdata: SlashCommandData | SlashSubcommandGroupData<boolean>\n) {\n\tconst _parentType = \"context\" in data ? \"command\" : \"group\";\n\tconst subcommands = new Collection<string, SlashSubcommandData<true, typeof _parentType>>();\n\n\tif (!(\"addSubcommand\" in data.data)) return subcommands;\n\n\tconst files = fs.glob(join(directory, \"./*.js\"));\n\tfor await (const file of files) {\n\t\tconst subcommand = await importFile<SlashSubcommandData<true, typeof _parentType>>(file);\n\t\tif (\n\t\t\t!subcommand ||\n\t\t\t!validateCommand(subcommand, (subcmd) => subcmd.context === \"SlashSubcommand\")\n\t\t)\n\t\t\tcontinue;\n\n\t\tsubcommand.parent = data;\n\t\tdata.data.addSubcommand(subcommand.data);\n\t\tsubcommands.set(subcommand.data.name, subcommand);\n\t}\n\n\tif (subcommands.size > 0) data.subcommands = subcommands;\n\treturn subcommands;\n}\n\nasync function parseSlashCommand(\n\tfile: string,\n\tparentDir: string,\n\tsubdirectories: Dirent<string>[]\n) {\n\tif (!existsSync(file)) return;\n\n\tconst command = await importFile<SlashCommandData>(file);\n\tif (\n\t\t!command ||\n\t\t!validateCommand(command, (cmd) => cmd.context === \"SlashCommand\") ||\n\t\t!(\"addSubcommand\" in command.data)\n\t)\n\t\treturn;\n\n\tawait parseSlashSubcommands(parentDir, command);\n\n\tfor (const subdir of subdirectories) {\n\t\tconst indexFile = path.resolve(subdir.parentPath, subdir.name, \"index.js\");\n\t\tif (!existsSync(indexFile)) continue;\n\n\t\tconst group = await importFile<SlashSubcommandGroupData<true>>(indexFile);\n\t\tif (!group || !(\"context\" in group) || group.context !== \"SlashSubcommandGroup\") continue;\n\n\t\tgroup.parent = command;\n\t\tif (!command.subcommandGroups) command.subcommandGroups = new Collection();\n\t\tawait parseSlashSubcommands(join(subdir.parentPath, subdir.name), group);\n\n\t\tif (group.subcommands.size > 0) {\n\t\t\tcommand.data.addSubcommandGroup(group.data);\n\t\t\tcommand.subcommandGroups.set(group.data.name, group);\n\t\t}\n\t}\n\n\treturn command;\n}\n\nasync function parseContextCommands(parentDir: string) {\n\tconst collection = new Collection<string, MessageCommandData | UserCommandData>();\n\tconst files = fs.glob(join(parentDir, \"**/*.js\"));\n\tfor await (const file of files) {\n\t\tconst contextCommand = await importFile<MessageCommandData | UserCommandData>(file);\n\t\tif (\n\t\t\t!contextCommand ||\n\t\t\t!validateCommand(\n\t\t\t\tcontextCommand,\n\t\t\t\t(cmd) =>\n\t\t\t\t\tcmd.commandType === ApplicationCommandType.Message ||\n\t\t\t\t\tcmd.commandType === ApplicationCommandType.User\n\t\t\t)\n\t\t)\n\t\t\tcontinue;\n\n\t\tcontextCommand.data.setType(contextCommand.commandType);\n\t\tcollection.set(contextCommand.data.name, contextCommand);\n\t}\n\n\treturn collection;\n}\n\nasync function registerDirectory(client: TriviousClient, parentDir: string) {\n\tconst entries = await fs.readdir(parentDir, { withFileTypes: true });\n\tconst subdirectories = entries.filter((entry) => entry.isDirectory());\n\n\tconst indexFile = path.resolve(parentDir, \"index.js\");\n\tconst slashCommand = await parseSlashCommand(indexFile, parentDir, subdirectories);\n\tif (slashCommand) client.stores.commands.chatInput.set(slashCommand.data.name, slashCommand);\n\n\tconst contextCommands = await parseContextCommands(parentDir);\n\tcontextCommands.forEach((cmd) => client.stores.commands.context.set(cmd.data.name, cmd));\n}\n\nexport default async function registerCommands(client: TriviousClient, directory: string) {\n\tif (!existsSync(directory))\n\t\tthrow new TriviousError(\n\t\t\t`Could not register commands; passed directory '${directory}' does not exist!`,\n\t\t\t\"Nonexistant directory passed\"\n\t\t);\n\n\tconst processedDirectories = new Set<string>();\n\n\tconst files = fs.glob(join(directory, \"**/*.js\"));\n\tfor await (const file of files) {\n\t\tconst parentDir = path.dirname(file);\n\n\t\tif (processedDirectories.has(parentDir)) continue;\n\t\tprocessedDirectories.add(parentDir);\n\n\t\tawait registerDirectory(client, parentDir);\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/components/components.types.ts"],"names":["ComponentContext"],"mappings":"AAaO,IAAK,gBAAA,qBAAAA,iBAAAA,KAAL;AACN,EAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AACA,EAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA;AACA,EAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AAHW,EAAA,OAAAA,iBAAAA;AAAA,CAAA,EAAA,gBAAA,IAAA,EAAA","file":"components.types.js","sourcesContent":["import type {\n\tAnySelectMenuInteraction,\n\tButtonInteraction,\n\tModalSubmitInteraction,\n} from \"discord.js\";\nimport type { TriviousClient } from \"#typings\";\n\nexport type ComponentFlags = \"Cached\" | \"DeferReply\" | \"EphemeralReply\" | \"ExpectModal\";\nexport type ComponentInteraction =\n\t| AnySelectMenuInteraction\n\t| ButtonInteraction\n\t| ModalSubmitInteraction;\n\nexport enum ComponentContext {\n\tButton,\n\tSelectMenu,\n\tModal,\n}\n\n/**\n * Trivious component\n * @param component The component type\n * @param identifier The unique identifier inside the custom id\n * @param flags The component flags\n * @param execute Component handler\n */\nexport interface Component {\n\tcomponent: ComponentContext;\n\tidentifier: string;\n\tflags?: ComponentFlags[];\n\texecute: (client: TriviousClient, interaction: ComponentInteraction) => Promise<void>;\n}\n"]}
1
+ {"version":3,"sources":["../../../src/features/components/components.types.ts"],"names":["ComponentContext"],"mappings":"AASO,IAAK,gBAAA,qBAAAA,iBAAAA,KAAL;AACN,EAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AACA,EAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA;AACA,EAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AAHW,EAAA,OAAAA,iBAAAA;AAAA,CAAA,EAAA,gBAAA,IAAA,EAAA","file":"components.types.js","sourcesContent":["import { TriviousClient } from \"#typings\";\nimport { AnySelectMenuInteraction, ButtonInteraction, ModalSubmitInteraction } from \"discord.js\";\n\nexport type ComponentFlags = \"Cached\" | \"DeferReply\" | \"EphemeralReply\" | \"ExpectModal\";\nexport type ComponentInteraction =\n\t| AnySelectMenuInteraction\n\t| ButtonInteraction\n\t| ModalSubmitInteraction;\n\nexport enum ComponentContext {\n\tButton,\n\tSelectMenu,\n\tModal,\n}\n\n/**\n * Trivious component\n * @param component The component type\n * @param identifier The unique identifier inside the custom id\n * @param flags The component flags\n * @param execute Component handler\n */\nexport interface Component {\n\tcomponent: ComponentContext;\n\tidentifier: string;\n\tflags?: ComponentFlags[];\n\texecute: (client: TriviousClient, interaction: ComponentInteraction) => Promise<void>;\n}\n"]}
@@ -1,7 +1,7 @@
1
- import { existsSync, promises } from 'fs';
2
- import { join } from 'path';
3
1
  import { TriviousError } from '../../utility/errors.js';
4
2
  import { importFile } from '../../utility/functions.js';
3
+ import { existsSync, promises } from 'fs';
4
+ import { join } from 'path';
5
5
 
6
6
  async function registerComponents(client, directory) {
7
7
  if (!existsSync(directory))
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/components/registry.components.ts"],"names":["fs"],"mappings":";;;;;AAMA,eAAO,kBAAA,CAA0C,QAAwB,SAAA,EAAmB;AAC3F,EAAA,IAAI,CAAC,WAAW,SAAS,CAAA;AACxB,IAAA,MAAM,IAAI,aAAA;AAAA,MACT,oDAAoD,SAAS,CAAA,iBAAA,CAAA;AAAA,MAC7D;AAAA,KACD;AAED,EAAA,MAAM,QAAQA,QAAA,CAAG,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW,SAAS,CAAC,CAAA;AAChD,EAAA,WAAA,MAAiB,QAAQ,KAAA,EAAO;AAC/B,IAAA,MAAM,SAAA,GAAY,MAAM,UAAA,CAAsB,IAAI,CAAA;AAClD,IAAA,IACC,CAAC,SAAA,IACD,EAAE,eAAe,SAAA,IAAa,YAAA,IAAgB,aAAa,SAAA,IAAa,SAAA,CAAA;AAExE,MAAA;AAED,IAAA,MAAA,CAAO,MAAA,CAAO,UAAA,CAAW,GAAA,CAAI,SAAA,CAAU,YAAY,SAAS,CAAA;AAAA,EAC7D;AACD","file":"registry.components.js","sourcesContent":["import { existsSync, promises as fs } from \"fs\";\nimport { join } from \"path\";\nimport type { Component, TriviousClient } from \"#typings\";\nimport { TriviousError } from \"#utility/errors.js\";\nimport { importFile } from \"#utility/functions.js\";\n\nexport default async function registerComponents(client: TriviousClient, directory: string) {\n\tif (!existsSync(directory))\n\t\tthrow new TriviousError(\n\t\t\t`Could not register components; passed directory '${directory} does not exist!'`,\n\t\t\t\"Nonexistant directory passed\"\n\t\t);\n\n\tconst files = fs.glob(join(directory, \"**/*.js\"));\n\tfor await (const file of files) {\n\t\tconst component = await importFile<Component>(file);\n\t\tif (\n\t\t\t!component ||\n\t\t\t!(\"component\" in component && \"identifier\" in component && \"execute\" in component)\n\t\t)\n\t\t\tcontinue;\n\n\t\tclient.stores.components.set(component.identifier, component);\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../src/features/components/registry.components.ts"],"names":["fs"],"mappings":";;;;;AAMA,eAAO,kBAAA,CAA0C,QAAwB,SAAA,EAAmB;AAC3F,EAAA,IAAI,CAAC,WAAW,SAAS,CAAA;AACxB,IAAA,MAAM,IAAI,aAAA;AAAA,MACT,oDAAoD,SAAS,CAAA,iBAAA,CAAA;AAAA,MAC7D;AAAA,KACD;AAED,EAAA,MAAM,QAAQA,QAAA,CAAG,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW,SAAS,CAAC,CAAA;AAChD,EAAA,WAAA,MAAiB,QAAQ,KAAA,EAAO;AAC/B,IAAA,MAAM,SAAA,GAAY,MAAM,UAAA,CAAsB,IAAI,CAAA;AAClD,IAAA,IACC,CAAC,SAAA,IACD,EAAE,eAAe,SAAA,IAAa,YAAA,IAAgB,aAAa,SAAA,IAAa,SAAA,CAAA;AAExE,MAAA;AAED,IAAA,MAAA,CAAO,MAAA,CAAO,UAAA,CAAW,GAAA,CAAI,SAAA,CAAU,YAAY,SAAS,CAAA;AAAA,EAC7D;AACD","file":"registry.components.js","sourcesContent":["import { Component, TriviousClient } from \"#typings\";\nimport { TriviousError } from \"#utility/errors.js\";\nimport { importFile } from \"#utility/functions.js\";\nimport { existsSync, promises as fs } from \"fs\";\nimport { join } from \"path\";\n\nexport default async function registerComponents(client: TriviousClient, directory: string) {\n\tif (!existsSync(directory))\n\t\tthrow new TriviousError(\n\t\t\t`Could not register components; passed directory '${directory} does not exist!'`,\n\t\t\t\"Nonexistant directory passed\"\n\t\t);\n\n\tconst files = fs.glob(join(directory, \"**/*.js\"));\n\tfor await (const file of files) {\n\t\tconst component = await importFile<Component>(file);\n\t\tif (\n\t\t\t!component ||\n\t\t\t!(\"component\" in component && \"identifier\" in component && \"execute\" in component)\n\t\t)\n\t\t\tcontinue;\n\n\t\tclient.stores.components.set(component.identifier, component);\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/customId/methods.customid.ts"],"names":[],"mappings":";;AAQO,MAAM,cAAA,GAAiB,CAAC,QAAA,KAAqB;AACnD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAA,EAAY,IAAI,CAAA,GAAI,QAAA,CAAS,MAAM,GAAG,CAAA;AAKtD,EAAA,MAAM,CAAC,IAAA,EAAM,GAAG,IAAI,CAAA,GAAI,IAAA,EAAM,MAAM,GAAG,CAAA;AAEvC,EAAA,OAAO;AAAA,IACN,OAAA;AAAA,IACA,UAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,GACD;AACD;AAQO,MAAM,cAAA,GAAiB,CAAC,OAAA,KAA+B;AAC7D,EAAA,MAAM,EAAE,OAAA,EAAS,UAAA,EAAY,IAAA,EAAM,MAAK,GAAI,OAAA;AAC5C,EAAA,IAAI,QAAA,GAAW,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,UAAU,CAAA,CAAA;AAEvC,EAAA,IAAI,IAAA,EAAM,QAAA,IAAY,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA;AAC9B,EAAA,IAAI,MAAM,QAAA,IAAY,CAAA,CAAA,EAAI,IAAA,CAAK,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AAExC,EAAA,IAAI,SAAS,MAAA,GAAS,GAAA,EAAK,MAAM,IAAI,cAAc,0CAA0C,CAAA;AAC7F,EAAA,OAAO,QAAA;AACR","file":"methods.customid.js","sourcesContent":["import type { ComponentContext, ComponentCustomId, ComponentTag } from \"#typings\";\nimport { TriviousError } from \"#utility/errors.js\";\n\n/**\n * Decode a customId into its parts\n * @param customId The custom id\n * @returns Decoded customId\n */\nexport const decodeCustomId = (customId: string) => {\n\tconst [context, identifier, info] = customId.split(\":\") as [\n\t\tComponentContext,\n\t\tstring,\n\t\tstring | undefined,\n\t];\n\tconst [data, ...tags] = info?.split(\".\") as [string | undefined, ...ComponentTag[]];\n\n\treturn {\n\t\tcontext,\n\t\tidentifier,\n\t\tdata,\n\t\ttags,\n\t} as ComponentCustomId;\n};\n\n/**\n * Encode a customId\n * @param options Custom id parts\n * @returns Encoded customId\n * @throws {TriviousError} If encoded length exceeds 100 characters\n */\nexport const encodeCustomId = (options: ComponentCustomId) => {\n\tconst { context, identifier, data, tags } = options;\n\tlet customId = `${context}:${identifier}`;\n\n\tif (data) customId += `:${data}`;\n\tif (tags) customId += `.${tags.join(\".\")}`;\n\n\tif (customId.length > 100) throw new TriviousError(\"Encoded customId exceeds 100 characters.\");\n\treturn customId;\n};\n"]}
1
+ {"version":3,"sources":["../../../src/features/customId/methods.customid.ts"],"names":[],"mappings":";;AAQO,MAAM,cAAA,GAAiB,CAAC,QAAA,KAAqB;AACnD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAA,EAAY,IAAI,CAAA,GAAI,QAAA,CAAS,MAAM,GAAG,CAAA;AAKtD,EAAA,MAAM,CAAC,IAAA,EAAM,GAAG,IAAI,CAAA,GAAI,IAAA,EAAM,MAAM,GAAG,CAAA;AAEvC,EAAA,OAAO;AAAA,IACN,OAAA;AAAA,IACA,UAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,GACD;AACD;AAQO,MAAM,cAAA,GAAiB,CAAC,OAAA,KAA+B;AAC7D,EAAA,MAAM,EAAE,OAAA,EAAS,UAAA,EAAY,IAAA,EAAM,MAAK,GAAI,OAAA;AAC5C,EAAA,IAAI,QAAA,GAAW,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,UAAU,CAAA,CAAA;AAEvC,EAAA,IAAI,IAAA,EAAM,QAAA,IAAY,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA;AAC9B,EAAA,IAAI,MAAM,QAAA,IAAY,CAAA,CAAA,EAAI,IAAA,CAAK,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AAExC,EAAA,IAAI,SAAS,MAAA,GAAS,GAAA,EAAK,MAAM,IAAI,cAAc,0CAA0C,CAAA;AAC7F,EAAA,OAAO,QAAA;AACR","file":"methods.customid.js","sourcesContent":["import { ComponentContext, ComponentCustomId, ComponentTag } from \"#typings\";\nimport { TriviousError } from \"#utility/errors.js\";\n\n/**\n * Decode a customId into its parts\n * @param customId The custom id\n * @returns Decoded customId\n */\nexport const decodeCustomId = (customId: string) => {\n\tconst [context, identifier, info] = customId.split(\":\") as [\n\t\tComponentContext,\n\t\tstring,\n\t\tstring | undefined,\n\t];\n\tconst [data, ...tags] = info?.split(\".\") as [string | undefined, ...ComponentTag[]];\n\n\treturn {\n\t\tcontext,\n\t\tidentifier,\n\t\tdata,\n\t\ttags,\n\t} as ComponentCustomId;\n};\n\n/**\n * Encode a customId\n * @param options Custom id parts\n * @returns Encoded customId\n * @throws {TriviousError} If encoded length exceeds 100 characters\n */\nexport const encodeCustomId = (options: ComponentCustomId) => {\n\tconst { context, identifier, data, tags } = options;\n\tlet customId = `${context}:${identifier}`;\n\n\tif (data) customId += `:${data}`;\n\tif (tags) customId += `.${tags.join(\".\")}`;\n\n\tif (customId.length > 100) throw new TriviousError(\"Encoded customId exceeds 100 characters.\");\n\treturn customId;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/features/events/presets/clientReady.ts"],"names":[],"mappings":"AAEA,IAAO,mBAAA,GAAQ;AAAA,EACd,IAAA,EAAM,aAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,MAAM,QAAQ,MAAA,EAAQ;AACrB,IAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,yBAAA,EAA4B,MAAA,CAAO,IAAA,EAAM,QAAQ,CAAA,CAAE,CAAA;AAAA,EAChE;AACD","file":"clientReady.js","sourcesContent":["import type { Event } from \"#typings\";\n\nexport default {\n\tname: \"clientReady\",\n\tonce: true,\n\tasync execute(client) {\n\t\tconsole.log(`Successfully logged into ${client.user?.username}`);\n\t},\n} satisfies Event<\"clientReady\">;\n"]}
1
+ {"version":3,"sources":["../../../../src/features/events/presets/clientReady.ts"],"names":[],"mappings":"AAEA,IAAO,mBAAA,GAAQ;AAAA,EACd,IAAA,EAAM,aAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,MAAM,QAAQ,MAAA,EAAQ;AACrB,IAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,yBAAA,EAA4B,MAAA,CAAO,IAAA,EAAM,QAAQ,CAAA,CAAE,CAAA;AAAA,EAChE;AACD","file":"clientReady.js","sourcesContent":["import { Event } from \"#typings\";\n\nexport default {\n\tname: \"clientReady\",\n\tonce: true,\n\tasync execute(client) {\n\t\tconsole.log(`Successfully logged into ${client.user?.username}`);\n\t},\n} satisfies Event<\"clientReady\">;\n"]}
@@ -1,7 +1,7 @@
1
- import { existsSync, promises } from 'fs';
2
- import path, { join } from 'path';
3
1
  import { TriviousError } from '../../utility/errors.js';
4
2
  import { importFile } from '../../utility/functions.js';
3
+ import { existsSync, promises } from 'fs';
4
+ import path, { join } from 'path';
5
5
 
6
6
  async function loadPresetEvents(client) {
7
7
  const directory = path.resolve(import.meta.dirname, "presets");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/events/registry.events.ts"],"names":["fs"],"mappings":";;;;;AAOA,eAAe,iBAAiB,MAAA,EAAwB;AACvD,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAA,IAAA,CAAY,SAAS,SAAS,CAAA;AAC7D,EAAA,IAAI,CAAC,UAAA,CAAW,SAAS,CAAA,EAAG;AAE5B,EAAA,MAAM,QAAQA,QAAA,CAAG,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW,QAAQ,CAAC,CAAA;AAC/C,EAAA,WAAA,MAAiB,QAAQ,KAAA,EAAO;AAC/B,IAAA,MAAM,KAAA,GAAQ,MAAM,UAAA,CAAW,IAAI,CAAA;AACnC,IAAA,IAAI,CAAC,KAAA,EAAO;AAEZ,IAAA,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,KAAA,CAAM,MAAM,KAAK,CAAA;AAAA,EAC3C;AACD;AAEA,eAAe,WAAW,IAAA,EAAc;AACvC,EAAA,MAAM,KAAA,GAAQ,MAAM,UAAA,CAAkB,IAAI,CAAA;AAC1C,EAAA,IAAI,CAAC,KAAA,IAAS,EAAE,UAAU,KAAA,IAAS,SAAA,IAAa,QAAQ,OAAO,IAAA;AAE/D,EAAA,OAAO,KAAA;AACR;AAEA,eAAsB,WAAW,MAAA,EAAwB;AACxD,EAAA,KAAA,MAAW,KAAA,IAAS,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,QAAO,EAAG;AAClD,IAAA,MAAM,OAAA,GAAU,IAAI,IAAA,KACnB,KAAK,MAAM,OAAA,CAAQ,MAAA,EAAQ,GAAG,IAAI,CAAA;AAEnC,IAAA,IAAI,MAAM,IAAA,EAAM,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,MAAM,OAAO,CAAA;AAAA,SAC1C,MAAA,CAAO,EAAA,CAAG,KAAA,CAAM,IAAA,EAAM,OAAO,CAAA;AAAA,EACnC;AACD;AAEA,eAAO,cAAA,CAAsC,QAAwB,SAAA,EAAmB;AACvF,EAAA,IAAI,CAAC,WAAW,SAAS,CAAA;AACxB,IAAA,MAAM,IAAI,aAAA;AAAA,MACT,gDAAgD,SAAS,CAAA,iBAAA,CAAA;AAAA,MACzD;AAAA,KACD;AAED,EAAA,MAAM,iBAAiB,MAAM,CAAA;AAE7B,EAAA,MAAM,QAAQA,QAAA,CAAG,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW,SAAS,CAAC,CAAA;AAChD,EAAA,WAAA,MAAiB,QAAQ,KAAA,EAAO;AAC/B,IAAA,MAAM,KAAA,GAAQ,MAAM,UAAA,CAAW,IAAI,CAAA;AACnC,IAAA,IAAI,CAAC,KAAA,EAAO;AAEZ,IAAA,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,KAAA,CAAM,MAAM,KAAK,CAAA;AAAA,EAC3C;AACD","file":"registry.events.js","sourcesContent":["import { existsSync, promises as fs } from \"fs\";\nimport path, { join } from \"path\";\nimport type { ClientEvents } from \"discord.js\";\nimport type { Event, TriviousClient } from \"#typings\";\nimport { TriviousError } from \"#utility/errors.js\";\nimport { importFile } from \"#utility/functions.js\";\n\nasync function loadPresetEvents(client: TriviousClient) {\n\tconst directory = path.resolve(import.meta.dirname, \"presets\");\n\tif (!existsSync(directory)) return;\n\n\tconst files = fs.glob(join(directory, \"./*.js\"));\n\tfor await (const file of files) {\n\t\tconst event = await parseEvent(file);\n\t\tif (!event) continue;\n\n\t\tclient.stores.events.set(event.name, event);\n\t}\n}\n\nasync function parseEvent(file: string) {\n\tconst event = await importFile<Event>(file);\n\tif (!event || !(\"name\" in event && \"execute\" in event)) return null;\n\n\treturn event;\n}\n\nexport async function bindEvents(client: TriviousClient) {\n\tfor (const event of client.stores.events.values()) {\n\t\tconst handler = (...args: ClientEvents[typeof event.name]) =>\n\t\t\tvoid event.execute(client, ...args);\n\n\t\tif (event.once) client.once(event.name, handler);\n\t\telse client.on(event.name, handler);\n\t}\n}\n\nexport default async function registerEvents(client: TriviousClient, directory: string) {\n\tif (!existsSync(directory))\n\t\tthrow new TriviousError(\n\t\t\t`Could not register events; passed directory '${directory}' does not exist!`,\n\t\t\t\"Nonexistant directory passed\"\n\t\t);\n\n\tawait loadPresetEvents(client);\n\n\tconst files = fs.glob(join(directory, \"**/*.js\"));\n\tfor await (const file of files) {\n\t\tconst event = await parseEvent(file);\n\t\tif (!event) continue;\n\n\t\tclient.stores.events.set(event.name, event);\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../src/features/events/registry.events.ts"],"names":["fs"],"mappings":";;;;;AAOA,eAAe,iBAAiB,MAAA,EAAwB;AACvD,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAA,IAAA,CAAY,SAAS,SAAS,CAAA;AAC7D,EAAA,IAAI,CAAC,UAAA,CAAW,SAAS,CAAA,EAAG;AAE5B,EAAA,MAAM,QAAQA,QAAA,CAAG,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW,QAAQ,CAAC,CAAA;AAC/C,EAAA,WAAA,MAAiB,QAAQ,KAAA,EAAO;AAC/B,IAAA,MAAM,KAAA,GAAQ,MAAM,UAAA,CAAW,IAAI,CAAA;AACnC,IAAA,IAAI,CAAC,KAAA,EAAO;AAEZ,IAAA,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,KAAA,CAAM,MAAM,KAAK,CAAA;AAAA,EAC3C;AACD;AAEA,eAAe,WAAW,IAAA,EAAc;AACvC,EAAA,MAAM,KAAA,GAAQ,MAAM,UAAA,CAAkB,IAAI,CAAA;AAC1C,EAAA,IAAI,CAAC,KAAA,IAAS,EAAE,UAAU,KAAA,IAAS,SAAA,IAAa,QAAQ,OAAO,IAAA;AAE/D,EAAA,OAAO,KAAA;AACR;AAEA,eAAsB,WAAW,MAAA,EAAwB;AACxD,EAAA,KAAA,MAAW,KAAA,IAAS,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,QAAO,EAAG;AAClD,IAAA,MAAM,OAAA,GAAU,IAAI,IAAA,KACnB,KAAK,MAAM,OAAA,CAAQ,MAAA,EAAQ,GAAG,IAAI,CAAA;AAEnC,IAAA,IAAI,MAAM,IAAA,EAAM,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,MAAM,OAAO,CAAA;AAAA,SAC1C,MAAA,CAAO,EAAA,CAAG,KAAA,CAAM,IAAA,EAAM,OAAO,CAAA;AAAA,EACnC;AACD;AAEA,eAAO,cAAA,CAAsC,QAAwB,SAAA,EAAmB;AACvF,EAAA,IAAI,CAAC,WAAW,SAAS,CAAA;AACxB,IAAA,MAAM,IAAI,aAAA;AAAA,MACT,gDAAgD,SAAS,CAAA,iBAAA,CAAA;AAAA,MACzD;AAAA,KACD;AAED,EAAA,MAAM,iBAAiB,MAAM,CAAA;AAE7B,EAAA,MAAM,QAAQA,QAAA,CAAG,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW,SAAS,CAAC,CAAA;AAChD,EAAA,WAAA,MAAiB,QAAQ,KAAA,EAAO;AAC/B,IAAA,MAAM,KAAA,GAAQ,MAAM,UAAA,CAAW,IAAI,CAAA;AACnC,IAAA,IAAI,CAAC,KAAA,EAAO;AAEZ,IAAA,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,KAAA,CAAM,MAAM,KAAK,CAAA;AAAA,EAC3C;AACD","file":"registry.events.js","sourcesContent":["import { Event, TriviousClient } from \"#typings\";\nimport { TriviousError } from \"#utility/errors.js\";\nimport { importFile } from \"#utility/functions.js\";\nimport { ClientEvents } from \"discord.js\";\nimport { existsSync, promises as fs } from \"fs\";\nimport path, { join } from \"path\";\n\nasync function loadPresetEvents(client: TriviousClient) {\n\tconst directory = path.resolve(import.meta.dirname, \"presets\");\n\tif (!existsSync(directory)) return;\n\n\tconst files = fs.glob(join(directory, \"./*.js\"));\n\tfor await (const file of files) {\n\t\tconst event = await parseEvent(file);\n\t\tif (!event) continue;\n\n\t\tclient.stores.events.set(event.name, event);\n\t}\n}\n\nasync function parseEvent(file: string) {\n\tconst event = await importFile<Event>(file);\n\tif (!event || !(\"name\" in event && \"execute\" in event)) return null;\n\n\treturn event;\n}\n\nexport async function bindEvents(client: TriviousClient) {\n\tfor (const event of client.stores.events.values()) {\n\t\tconst handler = (...args: ClientEvents[typeof event.name]) =>\n\t\t\tvoid event.execute(client, ...args);\n\n\t\tif (event.once) client.once(event.name, handler);\n\t\telse client.on(event.name, handler);\n\t}\n}\n\nexport default async function registerEvents(client: TriviousClient, directory: string) {\n\tif (!existsSync(directory))\n\t\tthrow new TriviousError(\n\t\t\t`Could not register events; passed directory '${directory}' does not exist!`,\n\t\t\t\"Nonexistant directory passed\"\n\t\t);\n\n\tawait loadPresetEvents(client);\n\n\tconst files = fs.glob(join(directory, \"**/*.js\"));\n\tfor await (const file of files) {\n\t\tconst event = await parseEvent(file);\n\t\tif (!event) continue;\n\n\t\tclient.stores.events.set(event.name, event);\n\t}\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trivious",
3
- "version": "2.0.3",
3
+ "version": "2.0.4",
4
4
  "type": "module",
5
5
  "keywords": [
6
6
  "discord-bot",