trivious 2.3.2 → 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.
- package/dist/features/commands/registry.commands.js +1 -0
- package/dist/features/commands/registry.commands.js.map +1 -1
- package/dist/features/components/registry.components.js +4 -2
- package/dist/features/components/registry.components.js.map +1 -1
- package/dist/features/events/registry.events.js +4 -2
- package/dist/features/events/registry.events.js.map +1 -1
- package/dist/features/modules/registry.modules.js +2 -1
- package/dist/features/modules/registry.modules.js.map +1 -1
- package/dist/features/permissions/methods.permissions.js +15 -14
- package/dist/features/permissions/methods.permissions.js.map +1 -1
- package/dist/features/permissions/permissions.types.d.ts +8 -0
- package/dist/features/structure/index.structure.d.ts +1 -1
- package/dist/features/structure/index.structure.js +9 -5
- package/dist/features/structure/index.structure.js.map +1 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.js +0 -2
- package/dist/index.js.map +1 -1
- package/dist/utility/functions.d.ts +2 -1
- package/dist/utility/functions.js +31 -17
- package/dist/utility/functions.js.map +1 -1
- package/package.json +1 -1
- package/dist/features/events/builders.events.d.ts +0 -20
- package/dist/features/events/builders.events.js +0 -14
- package/dist/features/events/builders.events.js.map +0 -1
- package/dist/features/modules/builders.modules.d.ts +0 -14
- package/dist/features/modules/builders.modules.js +0 -7
- package/dist/features/modules/builders.modules.js.map +0 -1
|
@@ -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
|
|
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, "
|
|
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, \"
|
|
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,
|
|
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":[]}
|
|
@@ -1,29 +1,28 @@
|
|
|
1
|
+
import { PermissionFlagsBits } from "discord.js";
|
|
1
2
|
function canMemberRunCommand(client, command, member) {
|
|
2
3
|
const { permissions } = command;
|
|
3
4
|
if (!permissions) return [true, "No permissions set"];
|
|
4
|
-
if (client.trivious.ownerUserIds && client.trivious.ownerUserIds.includes(member.user.id))
|
|
5
|
-
return [true, "User can run command"];
|
|
5
|
+
if (client.trivious.ownerUserIds && client.trivious.ownerUserIds.includes(member.user.id) || member.permissions.has(PermissionFlagsBits.Administrator))
|
|
6
|
+
return [true, "User can run command; Administrator privileges"];
|
|
6
7
|
const { requiredMemberPermissions, requiredRoleIds, userIds } = permissions;
|
|
7
8
|
if (userIds) return canUserRunCommand(client, command, member.user);
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
if (
|
|
11
|
-
for (const bit of
|
|
9
|
+
const permissionFlags = requiredMemberPermissions || permissions.permissionFlags;
|
|
10
|
+
const roleIds = requiredRoleIds || permissions.roleIds;
|
|
11
|
+
if (permissionFlags) {
|
|
12
|
+
for (const bit of permissionFlags) {
|
|
12
13
|
if (member.permissions.has(bit)) {
|
|
13
|
-
|
|
14
|
-
break;
|
|
14
|
+
return [true, "User can run command; Has required permission(s)"];
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
if (
|
|
19
|
-
for (const roleId of
|
|
18
|
+
if (roleIds) {
|
|
19
|
+
for (const roleId of roleIds) {
|
|
20
20
|
if (member.roles.cache.has(roleId)) {
|
|
21
|
-
|
|
22
|
-
break;
|
|
21
|
+
return [true, "User can run command; Has required role(s)"];
|
|
23
22
|
}
|
|
24
23
|
}
|
|
25
24
|
}
|
|
26
|
-
return
|
|
25
|
+
return [false, "User cannot run command; Meets zero requirements"];
|
|
27
26
|
}
|
|
28
27
|
function canUserRunCommand(client, command, user) {
|
|
29
28
|
const { permissions } = command;
|
|
@@ -31,7 +30,9 @@ function canUserRunCommand(client, command, user) {
|
|
|
31
30
|
if (client.trivious.ownerUserIds && client.trivious.ownerUserIds.includes(user.id))
|
|
32
31
|
return [true, "User can run command"];
|
|
33
32
|
const { requiredMemberPermissions, requiredRoleIds, userIds } = permissions;
|
|
34
|
-
|
|
33
|
+
const permissionFlags = requiredMemberPermissions || permissions.permissionFlags;
|
|
34
|
+
const roleIds = requiredRoleIds || permissions.roleIds;
|
|
35
|
+
if (!userIds && (permissionFlags || roleIds))
|
|
35
36
|
return [false, "Cannot validate permissions; use canMemberRunCommand instead"];
|
|
36
37
|
if (!userIds) return [true, "No permissions set"];
|
|
37
38
|
return userIds.includes(user.id) ? [true, "User can run command"] : [false, "User cannot run command"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/features/permissions/methods.permissions.ts"],"sourcesContent":["import { BaseCommandData, Component, TriviousClient } from \"@typings\";\nimport { GuildMember, User } from \"discord.js\";\n\nexport function canMemberRunCommand(\n\tclient: TriviousClient,\n\tcommand: BaseCommandData | Component,\n\tmember: GuildMember\n): [boolean, string] {\n\tconst { permissions } = command;\n\tif (!permissions) return [true, \"No permissions set\"];\n\n\tif (client.trivious.ownerUserIds && client.trivious.ownerUserIds.includes(member.user.id))\n\t\treturn [true, \"User can run command\"];\n\n\tconst { requiredMemberPermissions, requiredRoleIds, userIds } = permissions;\n\tif (userIds) return canUserRunCommand(client, command, member.user);\n\
|
|
1
|
+
{"version":3,"sources":["../../../src/features/permissions/methods.permissions.ts"],"sourcesContent":["import { BaseCommandData, Component, TriviousClient } from \"@typings\";\nimport { GuildMember, PermissionFlagsBits, User } from \"discord.js\";\n\nexport function canMemberRunCommand(\n\tclient: TriviousClient,\n\tcommand: BaseCommandData | Component,\n\tmember: GuildMember\n): [boolean, string] {\n\tconst { permissions } = command;\n\tif (!permissions) return [true, \"No permissions set\"];\n\n\t// If the member is a bot owner or has Administrator permissions\n\tif (\n\t\t(client.trivious.ownerUserIds && client.trivious.ownerUserIds.includes(member.user.id)) ||\n\t\tmember.permissions.has(PermissionFlagsBits.Administrator)\n\t)\n\t\treturn [true, \"User can run command; Administrator privileges\"];\n\n\tconst { requiredMemberPermissions, requiredRoleIds, userIds } = permissions;\n\tif (userIds) return canUserRunCommand(client, command, member.user);\n\tconst permissionFlags = requiredMemberPermissions || permissions.permissionFlags;\n\tconst roleIds = requiredRoleIds || permissions.roleIds;\n\n\tif (permissionFlags) {\n\t\tfor (const bit of permissionFlags) {\n\t\t\tif (member.permissions.has(bit)) {\n\t\t\t\treturn [true, \"User can run command; Has required permission(s)\"];\n\t\t\t}\n\t\t}\n\t}\n\n\tif (roleIds) {\n\t\tfor (const roleId of roleIds) {\n\t\t\tif (member.roles.cache.has(roleId)) {\n\t\t\t\treturn [true, \"User can run command; Has required role(s)\"];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn [false, \"User cannot run command; Meets zero requirements\"];\n}\n\nexport function canUserRunCommand(\n\tclient: TriviousClient,\n\tcommand: BaseCommandData | Component,\n\tuser: User\n): [boolean, string] {\n\tconst { permissions } = command;\n\tif (!permissions) return [true, \"No permissions set\"];\n\n\tif (client.trivious.ownerUserIds && client.trivious.ownerUserIds.includes(user.id))\n\t\treturn [true, \"User can run command\"];\n\n\tconst { requiredMemberPermissions, requiredRoleIds, userIds } = permissions;\n\tconst permissionFlags = requiredMemberPermissions || permissions.permissionFlags;\n\tconst roleIds = requiredRoleIds || permissions.roleIds;\n\n\tif (!userIds && (permissionFlags || roleIds))\n\t\treturn [false, \"Cannot validate permissions; use canMemberRunCommand instead\"];\n\n\tif (!userIds) return [true, \"No permissions set\"];\n\treturn userIds.includes(user.id)\n\t\t? [true, \"User can run command\"]\n\t\t: [false, \"User cannot run command\"];\n}\n"],"mappings":"AACA,SAAsB,2BAAiC;AAEhD,SAAS,oBACf,QACA,SACA,QACoB;AACpB,QAAM,EAAE,YAAY,IAAI;AACxB,MAAI,CAAC,YAAa,QAAO,CAAC,MAAM,oBAAoB;AAGpD,MACE,OAAO,SAAS,gBAAgB,OAAO,SAAS,aAAa,SAAS,OAAO,KAAK,EAAE,KACrF,OAAO,YAAY,IAAI,oBAAoB,aAAa;AAExD,WAAO,CAAC,MAAM,gDAAgD;AAE/D,QAAM,EAAE,2BAA2B,iBAAiB,QAAQ,IAAI;AAChE,MAAI,QAAS,QAAO,kBAAkB,QAAQ,SAAS,OAAO,IAAI;AAClE,QAAM,kBAAkB,6BAA6B,YAAY;AACjE,QAAM,UAAU,mBAAmB,YAAY;AAE/C,MAAI,iBAAiB;AACpB,eAAW,OAAO,iBAAiB;AAClC,UAAI,OAAO,YAAY,IAAI,GAAG,GAAG;AAChC,eAAO,CAAC,MAAM,kDAAkD;AAAA,MACjE;AAAA,IACD;AAAA,EACD;AAEA,MAAI,SAAS;AACZ,eAAW,UAAU,SAAS;AAC7B,UAAI,OAAO,MAAM,MAAM,IAAI,MAAM,GAAG;AACnC,eAAO,CAAC,MAAM,4CAA4C;AAAA,MAC3D;AAAA,IACD;AAAA,EACD;AAEA,SAAO,CAAC,OAAO,kDAAkD;AAClE;AAEO,SAAS,kBACf,QACA,SACA,MACoB;AACpB,QAAM,EAAE,YAAY,IAAI;AACxB,MAAI,CAAC,YAAa,QAAO,CAAC,MAAM,oBAAoB;AAEpD,MAAI,OAAO,SAAS,gBAAgB,OAAO,SAAS,aAAa,SAAS,KAAK,EAAE;AAChF,WAAO,CAAC,MAAM,sBAAsB;AAErC,QAAM,EAAE,2BAA2B,iBAAiB,QAAQ,IAAI;AAChE,QAAM,kBAAkB,6BAA6B,YAAY;AACjE,QAAM,UAAU,mBAAmB,YAAY;AAE/C,MAAI,CAAC,YAAY,mBAAmB;AACnC,WAAO,CAAC,OAAO,8DAA8D;AAE9E,MAAI,CAAC,QAAS,QAAO,CAAC,MAAM,oBAAoB;AAChD,SAAO,QAAQ,SAAS,KAAK,EAAE,IAC5B,CAAC,MAAM,sBAAsB,IAC7B,CAAC,OAAO,yBAAyB;AACrC;","names":[]}
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
interface CommandPermissionValues {
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated Use roleIds instead
|
|
4
|
+
*/
|
|
2
5
|
requiredRoleIds?: string[];
|
|
6
|
+
/**
|
|
7
|
+
* @deprecated Use permissionFlags instead
|
|
8
|
+
*/
|
|
3
9
|
requiredMemberPermissions?: bigint[];
|
|
10
|
+
permissionFlags?: bigint[];
|
|
11
|
+
roleIds?: string[];
|
|
4
12
|
userIds?: string[];
|
|
5
13
|
}
|
|
6
14
|
|
|
@@ -3,7 +3,7 @@ import { Collection } from 'discord.js';
|
|
|
3
3
|
type ClientStores = "commands" | "components" | "events" | "modules";
|
|
4
4
|
declare const structure: {
|
|
5
5
|
getPackageRoot(): string;
|
|
6
|
-
resolveRelativePath(relativePath: string): string;
|
|
6
|
+
resolveRelativePath(relativePath: string, considerPackageFiles?: boolean): string;
|
|
7
7
|
resolveTypeBasedStructure(corePath: string): Collection<ClientStores, string>;
|
|
8
8
|
};
|
|
9
9
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { Collection } from "discord.js";
|
|
1
2
|
import { existsSync } from "fs";
|
|
2
3
|
import { dirname, join, resolve } from "path";
|
|
3
4
|
import { fileURLToPath } from "url";
|
|
4
|
-
import { Collection } from "discord.js";
|
|
5
5
|
const __filename = fileURLToPath(import.meta.url);
|
|
6
6
|
const __dirname = dirname(__filename);
|
|
7
7
|
const structure = {
|
|
@@ -15,17 +15,21 @@ const structure = {
|
|
|
15
15
|
}
|
|
16
16
|
return __dirname;
|
|
17
17
|
},
|
|
18
|
-
resolveRelativePath(relativePath) {
|
|
18
|
+
resolveRelativePath(relativePath, considerPackageFiles = false) {
|
|
19
19
|
const workingDir = process.cwd();
|
|
20
20
|
const packageRoot = this.getPackageRoot();
|
|
21
21
|
const candidates = [
|
|
22
22
|
join(workingDir, "lib", relativePath),
|
|
23
23
|
join(workingDir, "dist", relativePath),
|
|
24
|
-
join(packageRoot, "lib", relativePath),
|
|
25
|
-
join(packageRoot, "dist", relativePath),
|
|
26
|
-
join(packageRoot, relativePath),
|
|
27
24
|
join(workingDir, relativePath)
|
|
28
25
|
];
|
|
26
|
+
if (considerPackageFiles) {
|
|
27
|
+
candidates.push(
|
|
28
|
+
join(packageRoot, "lib", relativePath),
|
|
29
|
+
join(packageRoot, "dist", relativePath),
|
|
30
|
+
join(packageRoot, relativePath)
|
|
31
|
+
);
|
|
32
|
+
}
|
|
29
33
|
for (const candidate of candidates) {
|
|
30
34
|
const full = resolve(candidate);
|
|
31
35
|
if (existsSync(full)) return full;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/features/structure/index.structure.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../../src/features/structure/index.structure.ts"],"sourcesContent":["import { Collection } from \"discord.js\";\nimport { existsSync } from \"fs\";\nimport { dirname, join, resolve } from \"path\";\nimport { fileURLToPath } from \"url\";\n\ntype ClientStores = \"commands\" | \"components\" | \"events\" | \"modules\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\nconst structure = {\n\tgetPackageRoot() {\n\t\tlet dir = __dirname;\n\n\t\twhile (dir !== dirname(dir)) {\n\t\t\tif (existsSync(join(dir, \"package.json\")) || existsSync(join(dir, \"node_modules\"))) {\n\t\t\t\treturn dir;\n\t\t\t}\n\n\t\t\tdir = dirname(dir);\n\t\t}\n\n\t\treturn __dirname;\n\t},\n\n\tresolveRelativePath(relativePath: string, considerPackageFiles = false) {\n\t\tconst workingDir = process.cwd();\n\t\tconst packageRoot = this.getPackageRoot();\n\n\t\tconst candidates = [\n\t\t\tjoin(workingDir, \"lib\", relativePath),\n\t\t\tjoin(workingDir, \"dist\", relativePath),\n\t\t\tjoin(workingDir, relativePath),\n\t\t];\n\n\t\tif (considerPackageFiles) {\n\t\t\tcandidates.push(\n\t\t\t\tjoin(packageRoot, \"lib\", relativePath),\n\t\t\t\tjoin(packageRoot, \"dist\", relativePath),\n\t\t\t\tjoin(packageRoot, relativePath)\n\t\t\t);\n\t\t}\n\n\t\tfor (const candidate of candidates) {\n\t\t\tconst full = resolve(candidate);\n\t\t\tif (existsSync(full)) return full;\n\t\t}\n\n\t\treturn join(workingDir, relativePath);\n\t},\n\n\tresolveTypeBasedStructure(corePath: string) {\n\t\tconst resolved = new Collection<ClientStores, string>();\n\t\tconst directoriesToCheck: ClientStores[] = [\"commands\", \"components\", \"events\", \"modules\"];\n\n\t\tfor (const dir of directoriesToCheck) {\n\t\t\tconst fullPath = structure.resolveRelativePath(join(corePath, dir));\n\t\t\tif (!existsSync(fullPath)) continue;\n\t\t\tresolved.set(dir, fullPath);\n\t\t}\n\n\t\treturn resolved;\n\t},\n};\n\nexport default structure;\n"],"mappings":"AAAA,SAAS,kBAAkB;AAC3B,SAAS,kBAAkB;AAC3B,SAAS,SAAS,MAAM,eAAe;AACvC,SAAS,qBAAqB;AAI9B,MAAM,aAAa,cAAc,YAAY,GAAG;AAChD,MAAM,YAAY,QAAQ,UAAU;AAEpC,MAAM,YAAY;AAAA,EACjB,iBAAiB;AAChB,QAAI,MAAM;AAEV,WAAO,QAAQ,QAAQ,GAAG,GAAG;AAC5B,UAAI,WAAW,KAAK,KAAK,cAAc,CAAC,KAAK,WAAW,KAAK,KAAK,cAAc,CAAC,GAAG;AACnF,eAAO;AAAA,MACR;AAEA,YAAM,QAAQ,GAAG;AAAA,IAClB;AAEA,WAAO;AAAA,EACR;AAAA,EAEA,oBAAoB,cAAsB,uBAAuB,OAAO;AACvE,UAAM,aAAa,QAAQ,IAAI;AAC/B,UAAM,cAAc,KAAK,eAAe;AAExC,UAAM,aAAa;AAAA,MAClB,KAAK,YAAY,OAAO,YAAY;AAAA,MACpC,KAAK,YAAY,QAAQ,YAAY;AAAA,MACrC,KAAK,YAAY,YAAY;AAAA,IAC9B;AAEA,QAAI,sBAAsB;AACzB,iBAAW;AAAA,QACV,KAAK,aAAa,OAAO,YAAY;AAAA,QACrC,KAAK,aAAa,QAAQ,YAAY;AAAA,QACtC,KAAK,aAAa,YAAY;AAAA,MAC/B;AAAA,IACD;AAEA,eAAW,aAAa,YAAY;AACnC,YAAM,OAAO,QAAQ,SAAS;AAC9B,UAAI,WAAW,IAAI,EAAG,QAAO;AAAA,IAC9B;AAEA,WAAO,KAAK,YAAY,YAAY;AAAA,EACrC;AAAA,EAEA,0BAA0B,UAAkB;AAC3C,UAAM,WAAW,IAAI,WAAiC;AACtD,UAAM,qBAAqC,CAAC,YAAY,cAAc,UAAU,SAAS;AAEzF,eAAW,OAAO,oBAAoB;AACrC,YAAM,WAAW,UAAU,oBAAoB,KAAK,UAAU,GAAG,CAAC;AAClE,UAAI,CAAC,WAAW,QAAQ,EAAG;AAC3B,eAAS,IAAI,KAAK,QAAQ;AAAA,IAC3B;AAEA,WAAO;AAAA,EACR;AACD;AAEA,IAAO,0BAAQ;","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\";\
|
|
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,31 +1,45 @@
|
|
|
1
1
|
import { promises as fs } from "fs";
|
|
2
|
+
import path from "path";
|
|
2
3
|
import { pathToFileURL } from "url";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (
|
|
13
|
-
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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();
|
|
19
32
|
}
|
|
20
|
-
async function exists(
|
|
33
|
+
async function exists(path2) {
|
|
21
34
|
try {
|
|
22
|
-
await fs.access(
|
|
35
|
+
await fs.access(path2);
|
|
23
36
|
return true;
|
|
24
37
|
} catch {
|
|
25
38
|
return false;
|
|
26
39
|
}
|
|
27
40
|
}
|
|
28
41
|
export {
|
|
42
|
+
clearFileImportsCache,
|
|
29
43
|
exists,
|
|
30
44
|
importFile
|
|
31
45
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utility/functions.ts"],"sourcesContent":["import { promises as fs } from \"fs\";\nimport { pathToFileURL } from \"url\";\n\nexport
|
|
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,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 +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 +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":[]}
|