trivious 2.3.3 → 2.3.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.
@@ -108,6 +108,7 @@ async function registerCommands(client, directory) {
108
108
  client.logger.warn(
109
109
  `Command '${slashCommand.data.name}' has been overridden by a command with the same name`
110
110
  );
111
+ client.logger.debug("Registered slash command:", slashCommand.data.name);
111
112
  client.stores.commands.chatInput.set(slashCommand.data.name, slashCommand);
112
113
  }
113
114
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/commands/registry.commands.ts"],"sourcesContent":["import {\n\tCollatedCommandData,\n\tCommandSetData,\n\tSlashCommandData,\n\tSlashSubcommandData,\n\tSlashSubcommandGroupData,\n\tTriviousClient,\n} from \"@typings\";\nimport { TriviousError } from \"@utility/errors.js\";\nimport { importFile } from \"@utility/functions.js\";\nimport { Collection } from \"discord.js\";\nimport { existsSync, promises as fs } from \"fs\";\nimport path from \"path\";\n\nasync function parseBase<T>(input: string | T, expects?: (base: Partial<T>) => boolean) {\n\tlet base: T | null = null;\n\tif (typeof input === \"string\") {\n\t\tbase = await importFile<T>(input);\n\t} else base = input;\n\tif (!base) return null;\n\tif (expects && !expects(base)) return null;\n\treturn base;\n}\n\nasync function parseDirectory(data: CollatedCommandData, directory: string): Promise<void> {\n\tconst files = fs.glob(path.join(directory, \"*.{js,ts}\"));\n\tfor await (const file of files) {\n\t\tconst base = await parseBase<SlashCommandData | SlashSubcommandData | SlashSubcommandGroupData>(\n\t\t\tfile,\n\t\t\t(base) => \"context\" in base && !!base.context\n\t\t);\n\t\tif (!base) continue;\n\t\tconst targetSet = data[base.context];\n\t\tif (targetSet) (targetSet as Set<[typeof base, string]>).add([base, directory]);\n\t}\n}\n\nfunction isSubdirectoryOf(directory: string, subdirectory: string) {\n\tconst relative = path.relative(path.resolve(directory), path.resolve(subdirectory));\n\treturn !!relative && !relative.startsWith(\"..\") && !path.isAbsolute(relative);\n}\n\nfunction getDataFromCommandSet<Data>(\n\tset: Set<CommandSetData<Data>>,\n\toptions: { matchParentDirectory?: string; matchData?: Partial<Data> }\n) {\n\tconst { matchData, matchParentDirectory } = options;\n\tif (!matchData && !matchParentDirectory) return undefined;\n\tconst array = Array.from(set.entries());\n\tlet bestMatch: CommandSetData<Data> | undefined;\n\tlet bestDepth = -1;\n\n\tfor (const entry of array) {\n\t\tconst [key, [data, directory]] = entry;\n\t\tif (matchData && data === matchData) return key[0];\n\t\tif (!matchParentDirectory) continue;\n\t\tconst isExact = directory === matchParentDirectory;\n\t\tconst isParent = isSubdirectoryOf(directory, matchParentDirectory);\n\t\tif (isExact || isParent) {\n\t\t\tconst depth = directory.split(/\\\\|\\//).length;\n\t\t\tif (depth > bestDepth) {\n\t\t\t\tbestDepth = depth;\n\t\t\t\tbestMatch = entry[0];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn bestMatch?.[0];\n}\n\nasync function setChildrenToParents(data: CollatedCommandData) {\n\tfor (const [group, directory] of data.SlashSubcommandGroup) {\n\t\tconst slashCommand =\n\t\t\tgroup.parent || getDataFromCommandSet(data.SlashCommand, { matchParentDirectory: directory });\n\n\t\tif (!slashCommand || !(\"addSubcommandGroup\" in slashCommand.data)) {\n\t\t\tconsole.warn(\"[Trivious] Could not find parent for subcommand group\", group.data.name);\n\t\t\tcontinue;\n\t\t}\n\t\tif (!slashCommand.subcommandGroups) slashCommand.subcommandGroups = new Collection();\n\t\tif (slashCommand.subcommandGroups.has(group.data.name))\n\t\t\tconsole.warn(\n\t\t\t\t`[Trivious] SubcommandGroup '${group.data.name}' under SlashCommand '${slashCommand.data.name}' has been overridden by a group with the same name`\n\t\t\t);\n\t\tgroup.parent = slashCommand;\n\t\tslashCommand.subcommandGroups.set(group.data.name, group);\n\t\tslashCommand.data.addSubcommandGroup(group.data);\n\t}\n\n\tfor (const [subcommand, directory] of data.SlashSubcommand) {\n\t\tconst parent =\n\t\t\tsubcommand.parent ||\n\t\t\tgetDataFromCommandSet(data.SlashSubcommandGroup, { matchParentDirectory: directory }) ||\n\t\t\tgetDataFromCommandSet(data.SlashCommand, { matchParentDirectory: directory });\n\n\t\tif (!parent || !(\"addSubcommand\" in parent.data)) {\n\t\t\tconsole.warn(\"[Trivious] Could not find parent for subcommand\", subcommand.data.name);\n\t\t\tcontinue;\n\t\t}\n\t\tif (!parent.subcommands) parent.subcommands = new Collection();\n\t\tif (parent.subcommands.has(subcommand.data.name))\n\t\t\tconsole.warn(\n\t\t\t\t`[Trivious] Subcommand '${subcommand.data.name}' under SlashCommand/SubcommandGroup '${parent.data.name}' has been overridden by a subcommand with the same name`\n\t\t\t);\n\t\tsubcommand.parent = parent;\n\t\tparent.subcommands.set(subcommand.data.name, subcommand);\n\t\tparent.data.addSubcommand(subcommand.data);\n\t}\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 regsiter commands; passed directory ${directory} does not exist`,\n\t\t\t\"Nonexistant directory passed\"\n\t\t);\n\tconst processedDirectories = new Set<string>();\n\tconst files = fs.glob(path.join(directory, \"**/*.{js,ts}\"));\n\tconst data: CollatedCommandData = {\n\t\tSlashCommand: new Set<CommandSetData<SlashCommandData>>(),\n\t\tSlashSubcommand: new Set<CommandSetData<SlashSubcommandData>>(),\n\t\tSlashSubcommandGroup: new Set<CommandSetData<SlashSubcommandGroupData>>(),\n\t};\n\tclient.logger.debug(\"Starting command registration in:\", directory);\n\tfor await (const file of files) {\n\t\tconst parentDir = path.dirname(file);\n\t\tif (processedDirectories.has(parentDir)) continue;\n\t\tprocessedDirectories.add(parentDir);\n\t\tawait parseDirectory(data, parentDir);\n\t}\n\tawait setChildrenToParents(data);\n\tfor (const [slashCommand] of data.SlashCommand) {\n\t\tif (client.stores.commands.chatInput.get(slashCommand.data.name))\n\t\t\tclient.logger.warn(\n\t\t\t\t`Command '${slashCommand.data.name}' has been overridden by a command with the same name`\n\t\t\t);\n\t\tclient.stores.commands.chatInput.set(slashCommand.data.name, slashCommand);\n\t}\n}\n"],"mappings":"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","names":["base"]}
1
+ {"version":3,"sources":["../../../src/features/commands/registry.commands.ts"],"sourcesContent":["import {\n\tCollatedCommandData,\n\tCommandSetData,\n\tSlashCommandData,\n\tSlashSubcommandData,\n\tSlashSubcommandGroupData,\n\tTriviousClient,\n} from \"@typings\";\nimport { TriviousError } from \"@utility/errors.js\";\nimport { importFile } from \"@utility/functions.js\";\nimport { Collection } from \"discord.js\";\nimport { existsSync, promises as fs } from \"fs\";\nimport path from \"path\";\n\nasync function parseBase<T>(input: string | T, expects?: (base: Partial<T>) => boolean) {\n\tlet base: T | null = null;\n\tif (typeof input === \"string\") {\n\t\tbase = await importFile<T>(input);\n\t} else base = input;\n\tif (!base) return null;\n\tif (expects && !expects(base)) return null;\n\treturn base;\n}\n\nasync function parseDirectory(data: CollatedCommandData, directory: string): Promise<void> {\n\tconst files = fs.glob(path.join(directory, \"*.{js,ts}\"));\n\tfor await (const file of files) {\n\t\tconst base = await parseBase<SlashCommandData | SlashSubcommandData | SlashSubcommandGroupData>(\n\t\t\tfile,\n\t\t\t(base) => \"context\" in base && !!base.context\n\t\t);\n\t\tif (!base) continue;\n\t\tconst targetSet = data[base.context];\n\t\tif (targetSet) (targetSet as Set<[typeof base, string]>).add([base, directory]);\n\t}\n}\n\nfunction isSubdirectoryOf(directory: string, subdirectory: string) {\n\tconst relative = path.relative(path.resolve(directory), path.resolve(subdirectory));\n\treturn !!relative && !relative.startsWith(\"..\") && !path.isAbsolute(relative);\n}\n\nfunction getDataFromCommandSet<Data>(\n\tset: Set<CommandSetData<Data>>,\n\toptions: { matchParentDirectory?: string; matchData?: Partial<Data> }\n) {\n\tconst { matchData, matchParentDirectory } = options;\n\tif (!matchData && !matchParentDirectory) return undefined;\n\tconst array = Array.from(set.entries());\n\tlet bestMatch: CommandSetData<Data> | undefined;\n\tlet bestDepth = -1;\n\n\tfor (const entry of array) {\n\t\tconst [key, [data, directory]] = entry;\n\t\tif (matchData && data === matchData) return key[0];\n\t\tif (!matchParentDirectory) continue;\n\t\tconst isExact = directory === matchParentDirectory;\n\t\tconst isParent = isSubdirectoryOf(directory, matchParentDirectory);\n\t\tif (isExact || isParent) {\n\t\t\tconst depth = directory.split(/\\\\|\\//).length;\n\t\t\tif (depth > bestDepth) {\n\t\t\t\tbestDepth = depth;\n\t\t\t\tbestMatch = entry[0];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn bestMatch?.[0];\n}\n\nasync function setChildrenToParents(data: CollatedCommandData) {\n\tfor (const [group, directory] of data.SlashSubcommandGroup) {\n\t\tconst slashCommand =\n\t\t\tgroup.parent || getDataFromCommandSet(data.SlashCommand, { matchParentDirectory: directory });\n\n\t\tif (!slashCommand || !(\"addSubcommandGroup\" in slashCommand.data)) {\n\t\t\tconsole.warn(\"[Trivious] Could not find parent for subcommand group\", group.data.name);\n\t\t\tcontinue;\n\t\t}\n\t\tif (!slashCommand.subcommandGroups) slashCommand.subcommandGroups = new Collection();\n\t\tif (slashCommand.subcommandGroups.has(group.data.name))\n\t\t\tconsole.warn(\n\t\t\t\t`[Trivious] SubcommandGroup '${group.data.name}' under SlashCommand '${slashCommand.data.name}' has been overridden by a group with the same name`\n\t\t\t);\n\t\tgroup.parent = slashCommand;\n\t\tslashCommand.subcommandGroups.set(group.data.name, group);\n\t\tslashCommand.data.addSubcommandGroup(group.data);\n\t}\n\n\tfor (const [subcommand, directory] of data.SlashSubcommand) {\n\t\tconst parent =\n\t\t\tsubcommand.parent ||\n\t\t\tgetDataFromCommandSet(data.SlashSubcommandGroup, { matchParentDirectory: directory }) ||\n\t\t\tgetDataFromCommandSet(data.SlashCommand, { matchParentDirectory: directory });\n\n\t\tif (!parent || !(\"addSubcommand\" in parent.data)) {\n\t\t\tconsole.warn(\"[Trivious] Could not find parent for subcommand\", subcommand.data.name);\n\t\t\tcontinue;\n\t\t}\n\t\tif (!parent.subcommands) parent.subcommands = new Collection();\n\t\tif (parent.subcommands.has(subcommand.data.name))\n\t\t\tconsole.warn(\n\t\t\t\t`[Trivious] Subcommand '${subcommand.data.name}' under SlashCommand/SubcommandGroup '${parent.data.name}' has been overridden by a subcommand with the same name`\n\t\t\t);\n\t\tsubcommand.parent = parent;\n\t\tparent.subcommands.set(subcommand.data.name, subcommand);\n\t\tparent.data.addSubcommand(subcommand.data);\n\t}\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 regsiter commands; passed directory ${directory} does not exist`,\n\t\t\t\"Nonexistant directory passed\"\n\t\t);\n\tconst processedDirectories = new Set<string>();\n\tconst files = fs.glob(path.join(directory, \"**/*.{js,ts}\"));\n\tconst data: CollatedCommandData = {\n\t\tSlashCommand: new Set<CommandSetData<SlashCommandData>>(),\n\t\tSlashSubcommand: new Set<CommandSetData<SlashSubcommandData>>(),\n\t\tSlashSubcommandGroup: new Set<CommandSetData<SlashSubcommandGroupData>>(),\n\t};\n\tclient.logger.debug(\"Starting command registration in:\", directory);\n\tfor await (const file of files) {\n\t\tconst parentDir = path.dirname(file);\n\t\tif (processedDirectories.has(parentDir)) continue;\n\t\tprocessedDirectories.add(parentDir);\n\t\tawait parseDirectory(data, parentDir);\n\t}\n\tawait setChildrenToParents(data);\n\tfor (const [slashCommand] of data.SlashCommand) {\n\t\tif (client.stores.commands.chatInput.get(slashCommand.data.name))\n\t\t\tclient.logger.warn(\n\t\t\t\t`Command '${slashCommand.data.name}' has been overridden by a command with the same name`\n\t\t\t);\n\t\tclient.logger.debug(\"Registered slash command:\", slashCommand.data.name);\n\t\tclient.stores.commands.chatInput.set(slashCommand.data.name, slashCommand);\n\t}\n}\n"],"mappings":"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","names":["base"]}
@@ -4,20 +4,22 @@ import { importFile } from "../../utility/functions.js";
4
4
  import { existsSync, promises as fs } from "fs";
5
5
  import { join } from "path";
6
6
  async function registerComponents(client, directory) {
7
+ client.logger.debug("Starting component registration in:", directory);
7
8
  if (!existsSync(directory))
8
9
  throw new TriviousError(
9
10
  `Could not register components; passed directory '${directory} does not exist!'`,
10
11
  "Nonexistant directory passed"
11
12
  );
12
- const files = fs.glob(join(directory, "**/*.js"));
13
+ const files = fs.glob(join(directory, "**/*.{js,ts}"));
13
14
  for await (const file of files) {
14
15
  const component = await importFile(file);
15
- if (!component || !("component" in component && "identifier" in component && "execute" in component))
16
+ if (!component || !(("component" in component || "context" in component) && "identifier" in component && "execute" in component))
16
17
  continue;
17
18
  if (client.stores.components.get(component.identifier))
18
19
  console.warn(
19
20
  `[Trivious] Component identifier '${component.identifier}' with the context '${ComponentContext[component.context]}' has a duplicate and has been overridden`
20
21
  );
22
+ client.logger.debug("Registered component:", component.identifier);
21
23
  client.stores.components.set(component.identifier, component);
22
24
  }
23
25
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/components/registry.components.ts"],"sourcesContent":["import { Component, ComponentContext, 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\tif (client.stores.components.get(component.identifier))\n\t\t\tconsole.warn(\n\t\t\t\t`[Trivious] Component identifier '${component.identifier}' with the context '${ComponentContext[component.context]}' has a duplicate and has been overridden`\n\t\t\t);\n\n\t\tclient.stores.components.set(component.identifier, component);\n\t}\n}\n"],"mappings":"AAAA,SAAoB,wBAAwC;AAC5D,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAC3B,SAAS,YAAY,YAAY,UAAU;AAC3C,SAAS,YAAY;AAErB,eAAO,mBAA0C,QAAwB,WAAmB;AAC3F,MAAI,CAAC,WAAW,SAAS;AACxB,UAAM,IAAI;AAAA,MACT,oDAAoD,SAAS;AAAA,MAC7D;AAAA,IACD;AAED,QAAM,QAAQ,GAAG,KAAK,KAAK,WAAW,SAAS,CAAC;AAChD,mBAAiB,QAAQ,OAAO;AAC/B,UAAM,YAAY,MAAM,WAAsB,IAAI;AAClD,QACC,CAAC,aACD,EAAE,eAAe,aAAa,gBAAgB,aAAa,aAAa;AAExE;AAED,QAAI,OAAO,OAAO,WAAW,IAAI,UAAU,UAAU;AACpD,cAAQ;AAAA,QACP,oCAAoC,UAAU,UAAU,uBAAuB,iBAAiB,UAAU,OAAO,CAAC;AAAA,MACnH;AAED,WAAO,OAAO,WAAW,IAAI,UAAU,YAAY,SAAS;AAAA,EAC7D;AACD;","names":[]}
1
+ {"version":3,"sources":["../../../src/features/components/registry.components.ts"],"sourcesContent":["import { Component, ComponentContext, 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\tclient.logger.debug(\"Starting component registration in:\", directory);\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,ts}\"));\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!(\n\t\t\t\t(\"component\" in component || \"context\" in component) &&\n\t\t\t\t\"identifier\" in component &&\n\t\t\t\t\"execute\" in component\n\t\t\t)\n\t\t)\n\t\t\tcontinue;\n\n\t\tif (client.stores.components.get(component.identifier))\n\t\t\tconsole.warn(\n\t\t\t\t`[Trivious] Component identifier '${component.identifier}' with the context '${ComponentContext[component.context]}' has a duplicate and has been overridden`\n\t\t\t);\n\n\t\tclient.logger.debug(\"Registered component:\", component.identifier);\n\t\tclient.stores.components.set(component.identifier, component);\n\t}\n}\n"],"mappings":"AAAA,SAAoB,wBAAwC;AAC5D,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAC3B,SAAS,YAAY,YAAY,UAAU;AAC3C,SAAS,YAAY;AAErB,eAAO,mBAA0C,QAAwB,WAAmB;AAC3F,SAAO,OAAO,MAAM,uCAAuC,SAAS;AACpE,MAAI,CAAC,WAAW,SAAS;AACxB,UAAM,IAAI;AAAA,MACT,oDAAoD,SAAS;AAAA,MAC7D;AAAA,IACD;AAED,QAAM,QAAQ,GAAG,KAAK,KAAK,WAAW,cAAc,CAAC;AACrD,mBAAiB,QAAQ,OAAO;AAC/B,UAAM,YAAY,MAAM,WAAsB,IAAI;AAClD,QACC,CAAC,aACD,GACE,eAAe,aAAa,aAAa,cAC1C,gBAAgB,aAChB,aAAa;AAGd;AAED,QAAI,OAAO,OAAO,WAAW,IAAI,UAAU,UAAU;AACpD,cAAQ;AAAA,QACP,oCAAoC,UAAU,UAAU,uBAAuB,iBAAiB,UAAU,OAAO,CAAC;AAAA,MACnH;AAED,WAAO,OAAO,MAAM,yBAAyB,UAAU,UAAU;AACjE,WAAO,OAAO,WAAW,IAAI,UAAU,YAAY,SAAS;AAAA,EAC7D;AACD;","names":[]}
@@ -5,7 +5,7 @@ import path, { join } from "path";
5
5
  async function loadPresetEvents(client) {
6
6
  const directory = path.resolve(import.meta.dirname, "presets");
7
7
  if (!existsSync(directory)) return;
8
- const files = fs.glob(join(directory, "*.js"));
8
+ const files = fs.glob(join(directory, "*.{js,ts}"));
9
9
  for await (const file of files) {
10
10
  const event = await parseEvent(file);
11
11
  if (!event) continue;
@@ -25,18 +25,20 @@ async function bindEvents(client) {
25
25
  }
26
26
  }
27
27
  async function registerEvents(client, directory) {
28
+ client.logger.debug("Starting event registration in:", directory);
28
29
  if (!existsSync(directory))
29
30
  throw new TriviousError(
30
31
  `Could not register events; passed directory '${directory}' does not exist!`,
31
32
  "Nonexistant directory passed"
32
33
  );
33
34
  await loadPresetEvents(client);
34
- const files = fs.glob(join(directory, "**/*.js"));
35
+ const files = fs.glob(join(directory, "**/*.{js,ts}"));
35
36
  for await (const file of files) {
36
37
  const event = await parseEvent(file);
37
38
  if (!event) continue;
38
39
  if (client.stores.events.get(event.name))
39
40
  console.warn(`[Trivious] Event '${event.name}' has a duplicate and has been overridden`);
41
+ client.logger.debug("Registered event:", event.name);
40
42
  client.stores.events.set(event.name, event);
41
43
  }
42
44
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/events/registry.events.ts"],"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\tif (client.stores.events.get(event.name))\n\t\t\tconsole.warn(`[Trivious] Event '${event.name}' has a duplicate and has been overridden`);\n\n\t\tclient.stores.events.set(event.name, event);\n\t}\n}\n"],"mappings":"AACA,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAE3B,SAAS,YAAY,YAAY,UAAU;AAC3C,OAAO,QAAQ,YAAY;AAE3B,eAAe,iBAAiB,QAAwB;AACvD,QAAM,YAAY,KAAK,QAAQ,YAAY,SAAS,SAAS;AAC7D,MAAI,CAAC,WAAW,SAAS,EAAG;AAE5B,QAAM,QAAQ,GAAG,KAAK,KAAK,WAAW,MAAM,CAAC;AAC7C,mBAAiB,QAAQ,OAAO;AAC/B,UAAM,QAAQ,MAAM,WAAW,IAAI;AACnC,QAAI,CAAC,MAAO;AAEZ,WAAO,OAAO,OAAO,IAAI,MAAM,MAAM,KAAK;AAAA,EAC3C;AACD;AAEA,eAAe,WAAW,MAAc;AACvC,QAAM,QAAQ,MAAM,WAAkB,IAAI;AAC1C,MAAI,CAAC,SAAS,EAAE,UAAU,SAAS,aAAa,OAAQ,QAAO;AAE/D,SAAO;AACR;AAEA,eAAsB,WAAW,QAAwB;AACxD,aAAW,SAAS,OAAO,OAAO,OAAO,OAAO,GAAG;AAClD,UAAM,UAAU,IAAI,SACnB,KAAK,MAAM,QAAQ,QAAQ,GAAG,IAAI;AAEnC,QAAI,MAAM,KAAM,QAAO,KAAK,MAAM,MAAM,OAAO;AAAA,QAC1C,QAAO,GAAG,MAAM,MAAM,OAAO;AAAA,EACnC;AACD;AAEA,eAAO,eAAsC,QAAwB,WAAmB;AACvF,MAAI,CAAC,WAAW,SAAS;AACxB,UAAM,IAAI;AAAA,MACT,gDAAgD,SAAS;AAAA,MACzD;AAAA,IACD;AAED,QAAM,iBAAiB,MAAM;AAE7B,QAAM,QAAQ,GAAG,KAAK,KAAK,WAAW,SAAS,CAAC;AAChD,mBAAiB,QAAQ,OAAO;AAC/B,UAAM,QAAQ,MAAM,WAAW,IAAI;AACnC,QAAI,CAAC,MAAO;AAEZ,QAAI,OAAO,OAAO,OAAO,IAAI,MAAM,IAAI;AACtC,cAAQ,KAAK,qBAAqB,MAAM,IAAI,2CAA2C;AAExF,WAAO,OAAO,OAAO,IAAI,MAAM,MAAM,KAAK;AAAA,EAC3C;AACD;","names":[]}
1
+ {"version":3,"sources":["../../../src/features/events/registry.events.ts"],"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,ts}\"));\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\tclient.logger.debug(\"Starting event registration in:\", directory);\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\tconst files = fs.glob(join(directory, \"**/*.{js,ts}\"));\n\tfor await (const file of files) {\n\t\tconst event = await parseEvent(file);\n\t\tif (!event) continue;\n\n\t\tif (client.stores.events.get(event.name))\n\t\t\tconsole.warn(`[Trivious] Event '${event.name}' has a duplicate and has been overridden`);\n\n\t\tclient.logger.debug(\"Registered event:\", event.name);\n\t\tclient.stores.events.set(event.name, event);\n\t}\n}\n"],"mappings":"AACA,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAE3B,SAAS,YAAY,YAAY,UAAU;AAC3C,OAAO,QAAQ,YAAY;AAE3B,eAAe,iBAAiB,QAAwB;AACvD,QAAM,YAAY,KAAK,QAAQ,YAAY,SAAS,SAAS;AAC7D,MAAI,CAAC,WAAW,SAAS,EAAG;AAE5B,QAAM,QAAQ,GAAG,KAAK,KAAK,WAAW,WAAW,CAAC;AAClD,mBAAiB,QAAQ,OAAO;AAC/B,UAAM,QAAQ,MAAM,WAAW,IAAI;AACnC,QAAI,CAAC,MAAO;AAEZ,WAAO,OAAO,OAAO,IAAI,MAAM,MAAM,KAAK;AAAA,EAC3C;AACD;AAEA,eAAe,WAAW,MAAc;AACvC,QAAM,QAAQ,MAAM,WAAkB,IAAI;AAC1C,MAAI,CAAC,SAAS,EAAE,UAAU,SAAS,aAAa,OAAQ,QAAO;AAE/D,SAAO;AACR;AAEA,eAAsB,WAAW,QAAwB;AACxD,aAAW,SAAS,OAAO,OAAO,OAAO,OAAO,GAAG;AAClD,UAAM,UAAU,IAAI,SACnB,KAAK,MAAM,QAAQ,QAAQ,GAAG,IAAI;AAEnC,QAAI,MAAM,KAAM,QAAO,KAAK,MAAM,MAAM,OAAO;AAAA,QAC1C,QAAO,GAAG,MAAM,MAAM,OAAO;AAAA,EACnC;AACD;AAEA,eAAO,eAAsC,QAAwB,WAAmB;AACvF,SAAO,OAAO,MAAM,mCAAmC,SAAS;AAChE,MAAI,CAAC,WAAW,SAAS;AACxB,UAAM,IAAI;AAAA,MACT,gDAAgD,SAAS;AAAA,MACzD;AAAA,IACD;AAED,QAAM,iBAAiB,MAAM;AAC7B,QAAM,QAAQ,GAAG,KAAK,KAAK,WAAW,cAAc,CAAC;AACrD,mBAAiB,QAAQ,OAAO;AAC/B,UAAM,QAAQ,MAAM,WAAW,IAAI;AACnC,QAAI,CAAC,MAAO;AAEZ,QAAI,OAAO,OAAO,OAAO,IAAI,MAAM,IAAI;AACtC,cAAQ,KAAK,qBAAqB,MAAM,IAAI,2CAA2C;AAExF,WAAO,OAAO,MAAM,qBAAqB,MAAM,IAAI;AACnD,WAAO,OAAO,OAAO,IAAI,MAAM,MAAM,KAAK;AAAA,EAC3C;AACD;","names":[]}
@@ -11,12 +11,13 @@ async function bindModules(client) {
11
11
  }
12
12
  }
13
13
  async function registerModules(client, directory) {
14
+ client.logger.debug("Starting module registration in:", directory);
14
15
  if (!existsSync(directory))
15
16
  throw new TriviousError(
16
17
  `Could not register modules; passed directory '${directory}' does not exist!`,
17
18
  "Nonexistant directory passed"
18
19
  );
19
- const files = fs.glob(join(directory, "**/*.js"));
20
+ const files = fs.glob(join(directory, "**/*.{js,ts}"));
20
21
  for await (const file of files) {
21
22
  const moduleData = await importFile(file);
22
23
  if (!moduleData || !("name" in moduleData && "events" in moduleData)) continue;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/modules/registry.modules.ts"],"sourcesContent":["import { Module, 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 async function bindModules(client: TriviousClient) {\n\tfor (const moduleData of client.stores.modules.values()) {\n\t\tfor (const [name, handler] of Object.entries(moduleData.events)) {\n\t\t\tconst listener = (...args: unknown[]) =>\n\t\t\t\tvoid (handler as (client: TriviousClient, ...args: unknown[]) => any)(client, ...args);\n\n\t\t\tclient.on(name, listener);\n\t\t}\n\t}\n}\n\nexport default async function registerModules(client: TriviousClient, directory: string) {\n\tif (!existsSync(directory))\n\t\tthrow new TriviousError(\n\t\t\t`Could not register modules; 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 moduleData = await importFile<Module>(file);\n\t\tif (!moduleData || !(\"name\" in moduleData && \"events\" in moduleData)) continue;\n\n\t\tif (client.stores.events.get(moduleData.name))\n\t\t\tconsole.warn(\n\t\t\t\t`[Trivious] Module '${moduleData.name}' has a duplicate and has been overridden`\n\t\t\t);\n\n\t\tclient.stores.modules.set(moduleData.name, moduleData);\n\t}\n}\n"],"mappings":"AACA,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAC3B,SAAS,YAAY,YAAY,UAAU;AAC3C,SAAS,YAAY;AAErB,eAAsB,YAAY,QAAwB;AACzD,aAAW,cAAc,OAAO,OAAO,QAAQ,OAAO,GAAG;AACxD,eAAW,CAAC,MAAM,OAAO,KAAK,OAAO,QAAQ,WAAW,MAAM,GAAG;AAChE,YAAM,WAAW,IAAI,SACpB,KAAM,QAAgE,QAAQ,GAAG,IAAI;AAEtF,aAAO,GAAG,MAAM,QAAQ;AAAA,IACzB;AAAA,EACD;AACD;AAEA,eAAO,gBAAuC,QAAwB,WAAmB;AACxF,MAAI,CAAC,WAAW,SAAS;AACxB,UAAM,IAAI;AAAA,MACT,iDAAiD,SAAS;AAAA,MAC1D;AAAA,IACD;AAED,QAAM,QAAQ,GAAG,KAAK,KAAK,WAAW,SAAS,CAAC;AAChD,mBAAiB,QAAQ,OAAO;AAC/B,UAAM,aAAa,MAAM,WAAmB,IAAI;AAChD,QAAI,CAAC,cAAc,EAAE,UAAU,cAAc,YAAY,YAAa;AAEtE,QAAI,OAAO,OAAO,OAAO,IAAI,WAAW,IAAI;AAC3C,cAAQ;AAAA,QACP,sBAAsB,WAAW,IAAI;AAAA,MACtC;AAED,WAAO,OAAO,QAAQ,IAAI,WAAW,MAAM,UAAU;AAAA,EACtD;AACD;","names":[]}
1
+ {"version":3,"sources":["../../../src/features/modules/registry.modules.ts"],"sourcesContent":["import { Module, 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 async function bindModules(client: TriviousClient) {\n\tfor (const moduleData of client.stores.modules.values()) {\n\t\tfor (const [name, handler] of Object.entries(moduleData.events)) {\n\t\t\tconst listener = (...args: unknown[]) =>\n\t\t\t\tvoid (handler as (client: TriviousClient, ...args: unknown[]) => any)(client, ...args);\n\n\t\t\tclient.on(name, listener);\n\t\t}\n\t}\n}\n\nexport default async function registerModules(client: TriviousClient, directory: string) {\n\tclient.logger.debug(\"Starting module registration in:\", directory);\n\tif (!existsSync(directory))\n\t\tthrow new TriviousError(\n\t\t\t`Could not register modules; 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,ts}\"));\n\tfor await (const file of files) {\n\t\tconst moduleData = await importFile<Module>(file);\n\t\tif (!moduleData || !(\"name\" in moduleData && \"events\" in moduleData)) continue;\n\n\t\tif (client.stores.events.get(moduleData.name))\n\t\t\tconsole.warn(\n\t\t\t\t`[Trivious] Module '${moduleData.name}' has a duplicate and has been overridden`\n\t\t\t);\n\n\t\tclient.stores.modules.set(moduleData.name, moduleData);\n\t}\n}\n"],"mappings":"AACA,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAC3B,SAAS,YAAY,YAAY,UAAU;AAC3C,SAAS,YAAY;AAErB,eAAsB,YAAY,QAAwB;AACzD,aAAW,cAAc,OAAO,OAAO,QAAQ,OAAO,GAAG;AACxD,eAAW,CAAC,MAAM,OAAO,KAAK,OAAO,QAAQ,WAAW,MAAM,GAAG;AAChE,YAAM,WAAW,IAAI,SACpB,KAAM,QAAgE,QAAQ,GAAG,IAAI;AAEtF,aAAO,GAAG,MAAM,QAAQ;AAAA,IACzB;AAAA,EACD;AACD;AAEA,eAAO,gBAAuC,QAAwB,WAAmB;AACxF,SAAO,OAAO,MAAM,oCAAoC,SAAS;AACjE,MAAI,CAAC,WAAW,SAAS;AACxB,UAAM,IAAI;AAAA,MACT,iDAAiD,SAAS;AAAA,MAC1D;AAAA,IACD;AAED,QAAM,QAAQ,GAAG,KAAK,KAAK,WAAW,cAAc,CAAC;AACrD,mBAAiB,QAAQ,OAAO;AAC/B,UAAM,aAAa,MAAM,WAAmB,IAAI;AAChD,QAAI,CAAC,cAAc,EAAE,UAAU,cAAc,YAAY,YAAa;AAEtE,QAAI,OAAO,OAAO,OAAO,IAAI,WAAW,IAAI;AAC3C,cAAQ;AAAA,QACP,sBAAsB,WAAW,IAAI;AAAA,MACtC;AAED,WAAO,OAAO,QAAQ,IAAI,WAAW,MAAM,UAAU;AAAA,EACtD;AACD;","names":[]}
package/dist/index.d.ts CHANGED
@@ -7,7 +7,5 @@ export { handleSlashCommand, interactionReply } from './features/commands/method
7
7
  export { default as customId } from './features/customId/methods.customid.js';
8
8
  export { createMessageContextCommand, createSlashCommand, createSlashSubcommand, createSlashSubcommandGroup, createSubcommand, createSubcommandGroup, createUserContextCommand } from './features/commands/builders.commands.js';
9
9
  export { createButtonComponent, createComponent, createModalComponent, createSelectMenuComponent } from './features/components/builders.components.js';
10
- export { createEvent, createOnceEvent } from './features/events/builders.events.js';
11
- export { createModule } from './features/modules/builders.modules.js';
12
10
  import 'discord.js';
13
11
  import './features/client/logger.js';
package/dist/index.js CHANGED
@@ -4,8 +4,6 @@ export * from "./features/commands/methods.commands.js";
4
4
  import { default as default2 } from "./features/customId/methods.customid.js";
5
5
  export * from "./features/commands/builders.commands.js";
6
6
  export * from "./features/components/builders.components.js";
7
- export * from "./features/events/builders.events.js";
8
- export * from "./features/modules/builders.modules.js";
9
7
  export {
10
8
  default2 as customId
11
9
  };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// Types\nexport * from \"@typings\";\n\n// Methods\nexport * from \"@feature/builders/utility.builders.js\";\nexport * from \"@feature/commands/methods.commands.js\";\nexport { default as customId } from \"@feature/customId/methods.customid.js\";\n\n// Builders\nexport * from \"@feature/commands/builders.commands.js\";\nexport * from \"@feature/components/builders.components.js\";\nexport * from \"@feature/events/builders.events.js\";\nexport * from \"@feature/modules/builders.modules.js\";\n"],"mappings":"AACA,cAAc;AAGd,cAAc;AACd,cAAc;AACd,SAAoB,WAAXA,gBAA2B;AAGpC,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":["default"]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// Types\nexport * from \"@typings\";\n\n// Methods\nexport * from \"@feature/builders/utility.builders.js\";\nexport * from \"@feature/commands/methods.commands.js\";\nexport { default as customId } from \"@feature/customId/methods.customid.js\";\n\n// Builders\nexport * from \"@feature/commands/builders.commands.js\";\nexport * from \"@feature/components/builders.components.js\";\n"],"mappings":"AACA,cAAc;AAGd,cAAc;AACd,cAAc;AACd,SAAoB,WAAXA,gBAA2B;AAGpC,cAAc;AACd,cAAc;","names":["default"]}
@@ -1,4 +1,5 @@
1
1
  declare function importFile<T>(filePath: string): Promise<T | null>;
2
+ declare function clearFileImportsCache(): void;
2
3
  declare function exists(path: string): Promise<boolean>;
3
4
 
4
- export { exists, importFile };
5
+ export { clearFileImportsCache, exists, importFile };
@@ -1,32 +1,45 @@
1
1
  import { promises as fs } from "fs";
2
+ import path from "path";
2
3
  import { pathToFileURL } from "url";
3
- async function importFile(filePath) {
4
- try {
5
- const { default: file } = await import(pathToFileURL(filePath).href);
6
- if (!file) return null;
7
- const imports = file.default || file;
8
- if (typeof imports === "function" && imports.prototype) {
9
- return new imports();
10
- }
11
- if (typeof imports == "object") {
12
- if (Object.keys(imports).length === 0) return null;
13
- return imports;
4
+ const fileCache = /* @__PURE__ */ new Map();
5
+ function importFile(filePath) {
6
+ const absolutePath = path.resolve(filePath);
7
+ if (fileCache.has(absolutePath)) return fileCache.get(absolutePath);
8
+ const processPromise = (async () => {
9
+ try {
10
+ const { default: file } = await import(pathToFileURL(absolutePath).href);
11
+ if (!file) return null;
12
+ const imports = file.default || file;
13
+ if (typeof imports === "function" && imports.prototype) return new imports();
14
+ if (typeof imports === "object" && imports !== null) {
15
+ if (Object.keys(imports).length === 0) return null;
16
+ return imports;
17
+ }
18
+ return null;
19
+ } catch (err) {
20
+ console.warn(`[Trivious] Error while import file ${filePath}`, err);
21
+ return null;
14
22
  }
15
- return null;
16
- } catch (err) {
17
- console.warn(`[Trivious] Error while importing file ${filePath}`, err);
18
- return null;
19
- }
23
+ })();
24
+ fileCache.set(absolutePath, processPromise);
25
+ processPromise.then((result) => {
26
+ if (result === null) fileCache.delete(absolutePath);
27
+ });
28
+ return processPromise;
29
+ }
30
+ function clearFileImportsCache() {
31
+ fileCache.clear();
20
32
  }
21
- async function exists(path) {
33
+ async function exists(path2) {
22
34
  try {
23
- await fs.access(path);
35
+ await fs.access(path2);
24
36
  return true;
25
37
  } catch {
26
38
  return false;
27
39
  }
28
40
  }
29
41
  export {
42
+ clearFileImportsCache,
30
43
  exists,
31
44
  importFile
32
45
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utility/functions.ts"],"sourcesContent":["import { promises as fs } from \"fs\";\nimport { pathToFileURL } from \"url\";\n\nexport async function importFile<T>(filePath: string): Promise<T | null> {\n\ttry {\n\t\tconst { default: file } = await import(pathToFileURL(filePath).href);\n\t\tif (!file) return null;\n\n\t\tconst imports = file.default || file;\n\n\t\tif (typeof imports === \"function\" && imports.prototype) {\n\t\t\treturn new imports() as T;\n\t\t}\n\n\t\tif (typeof imports == \"object\") {\n\t\t\tif (Object.keys(imports).length === 0) return null;\n\t\t\treturn imports as T;\n\t\t}\n\n\t\treturn null;\n\t} catch (err: any) {\n\t\tconsole.warn(`[Trivious] Error while importing file ${filePath}`, err);\n\t\treturn null;\n\t}\n}\n\nexport async function exists(path: string) {\n\ttry {\n\t\tawait fs.access(path);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n"],"mappings":"AAAA,SAAS,YAAY,UAAU;AAC/B,SAAS,qBAAqB;AAE9B,eAAsB,WAAc,UAAqC;AACxE,MAAI;AACH,UAAM,EAAE,SAAS,KAAK,IAAI,MAAM,OAAO,cAAc,QAAQ,EAAE;AAC/D,QAAI,CAAC,KAAM,QAAO;AAElB,UAAM,UAAU,KAAK,WAAW;AAEhC,QAAI,OAAO,YAAY,cAAc,QAAQ,WAAW;AACvD,aAAO,IAAI,QAAQ;AAAA,IACpB;AAEA,QAAI,OAAO,WAAW,UAAU;AAC/B,UAAI,OAAO,KAAK,OAAO,EAAE,WAAW,EAAG,QAAO;AAC9C,aAAO;AAAA,IACR;AAEA,WAAO;AAAA,EACR,SAAS,KAAU;AAClB,YAAQ,KAAK,yCAAyC,QAAQ,IAAI,GAAG;AACrE,WAAO;AAAA,EACR;AACD;AAEA,eAAsB,OAAO,MAAc;AAC1C,MAAI;AACH,UAAM,GAAG,OAAO,IAAI;AACpB,WAAO;AAAA,EACR,QAAQ;AACP,WAAO;AAAA,EACR;AACD;","names":[]}
1
+ {"version":3,"sources":["../../src/utility/functions.ts"],"sourcesContent":["import { promises as fs } from \"fs\";\nimport path from \"path\";\nimport { pathToFileURL } from \"url\";\n\nconst fileCache = new Map<string, Promise<any | null>>();\nexport function importFile<T>(filePath: string): Promise<T | null> {\n\tconst absolutePath = path.resolve(filePath);\n\tif (fileCache.has(absolutePath)) return fileCache.get(absolutePath)!;\n\n\tconst processPromise = (async () => {\n\t\ttry {\n\t\t\tconst { default: file } = await import(pathToFileURL(absolutePath).href);\n\t\t\tif (!file) return null;\n\n\t\t\tconst imports = file.default || file;\n\t\t\tif (typeof imports === \"function\" && imports.prototype) return new imports();\n\t\t\tif (typeof imports === \"object\" && imports !== null) {\n\t\t\t\tif (Object.keys(imports).length === 0) return null;\n\t\t\t\treturn imports;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t} catch (err: any) {\n\t\t\tconsole.warn(`[Trivious] Error while import file ${filePath}`, err);\n\t\t\treturn null;\n\t\t}\n\t})();\n\n\tfileCache.set(absolutePath, processPromise);\n\tprocessPromise.then((result) => {\n\t\tif (result === null) fileCache.delete(absolutePath);\n\t});\n\treturn processPromise;\n}\n\nexport function clearFileImportsCache() {\n\tfileCache.clear();\n}\n\nexport async function exists(path: string) {\n\ttry {\n\t\tawait fs.access(path);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n"],"mappings":"AAAA,SAAS,YAAY,UAAU;AAC/B,OAAO,UAAU;AACjB,SAAS,qBAAqB;AAE9B,MAAM,YAAY,oBAAI,IAAiC;AAChD,SAAS,WAAc,UAAqC;AAClE,QAAM,eAAe,KAAK,QAAQ,QAAQ;AAC1C,MAAI,UAAU,IAAI,YAAY,EAAG,QAAO,UAAU,IAAI,YAAY;AAElE,QAAM,kBAAkB,YAAY;AACnC,QAAI;AACH,YAAM,EAAE,SAAS,KAAK,IAAI,MAAM,OAAO,cAAc,YAAY,EAAE;AACnE,UAAI,CAAC,KAAM,QAAO;AAElB,YAAM,UAAU,KAAK,WAAW;AAChC,UAAI,OAAO,YAAY,cAAc,QAAQ,UAAW,QAAO,IAAI,QAAQ;AAC3E,UAAI,OAAO,YAAY,YAAY,YAAY,MAAM;AACpD,YAAI,OAAO,KAAK,OAAO,EAAE,WAAW,EAAG,QAAO;AAC9C,eAAO;AAAA,MACR;AAEA,aAAO;AAAA,IACR,SAAS,KAAU;AAClB,cAAQ,KAAK,sCAAsC,QAAQ,IAAI,GAAG;AAClE,aAAO;AAAA,IACR;AAAA,EACD,GAAG;AAEH,YAAU,IAAI,cAAc,cAAc;AAC1C,iBAAe,KAAK,CAAC,WAAW;AAC/B,QAAI,WAAW,KAAM,WAAU,OAAO,YAAY;AAAA,EACnD,CAAC;AACD,SAAO;AACR;AAEO,SAAS,wBAAwB;AACvC,YAAU,MAAM;AACjB;AAEA,eAAsB,OAAOA,OAAc;AAC1C,MAAI;AACH,UAAM,GAAG,OAAOA,KAAI;AACpB,WAAO;AAAA,EACR,QAAQ;AACP,WAAO;AAAA,EACR;AACD;","names":["path"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trivious",
3
- "version": "2.3.3",
3
+ "version": "2.3.4",
4
4
  "type": "module",
5
5
  "keywords": [
6
6
  "discord-bot",
@@ -1,20 +0,0 @@
1
- import { E as Event } from '../../modules.types-hjAYMYut.js';
2
- import 'discord.js';
3
- import '../client/client.types.js';
4
- import '../permissions/permissions.types.js';
5
- import '../client/logger.js';
6
-
7
- /**
8
- * Create an event handler
9
- * @param data Event data
10
- * @returns Event
11
- */
12
- declare function createEvent(data: Event): Event;
13
- /**
14
- * Create an event handler that runs once
15
- * @param data Event data
16
- * @returns Event
17
- */
18
- declare function createOnceEvent(data: Omit<Event, "once">): Event;
19
-
20
- export { createEvent, createOnceEvent };
@@ -1,14 +0,0 @@
1
- function createEvent(data) {
2
- return data;
3
- }
4
- function createOnceEvent(data) {
5
- return {
6
- once: true,
7
- ...data
8
- };
9
- }
10
- export {
11
- createEvent,
12
- createOnceEvent
13
- };
14
- //# sourceMappingURL=builders.events.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/features/events/builders.events.ts"],"sourcesContent":["import { Event } from \"@typings\";\n\n/**\n * Create an event handler\n * @param data Event data\n * @returns Event\n */\nexport function createEvent(data: Event): Event {\n\treturn data;\n}\n\n/**\n * Create an event handler that runs once\n * @param data Event data\n * @returns Event\n */\nexport function createOnceEvent(data: Omit<Event, \"once\">): Event {\n\treturn {\n\t\tonce: true,\n\t\t...data,\n\t} satisfies Event;\n}\n"],"mappings":"AAOO,SAAS,YAAY,MAAoB;AAC/C,SAAO;AACR;AAOO,SAAS,gBAAgB,MAAkC;AACjE,SAAO;AAAA,IACN,MAAM;AAAA,IACN,GAAG;AAAA,EACJ;AACD;","names":[]}
@@ -1,14 +0,0 @@
1
- import { M as Module } from '../../modules.types-hjAYMYut.js';
2
- import 'discord.js';
3
- import '../client/client.types.js';
4
- import '../permissions/permissions.types.js';
5
- import '../client/logger.js';
6
-
7
- /**
8
- * Create a module
9
- * @param data Module data
10
- * @returns Module
11
- */
12
- declare function createModule(data: Module): Module;
13
-
14
- export { createModule };
@@ -1,7 +0,0 @@
1
- function createModule(data) {
2
- return data;
3
- }
4
- export {
5
- createModule
6
- };
7
- //# sourceMappingURL=builders.modules.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/features/modules/builders.modules.ts"],"sourcesContent":["import { Module } from \"@typings\";\n\n/**\n * Create a module\n * @param data Module data\n * @returns Module\n */\nexport function createModule(data: Module) {\n\treturn data;\n}\n"],"mappings":"AAOO,SAAS,aAAa,MAAc;AAC1C,SAAO;AACR;","names":[]}