trivious 2.3.2 → 2.3.3

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.
@@ -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"));
9
9
  for await (const file of files) {
10
10
  const event = await parseEvent(file);
11
11
  if (!event) continue;
@@ -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,QAAQ,CAAC;AAC/C,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\"));\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,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
- let memberHasPermission = false;
9
- let memberHasRole = false;
10
- if (requiredMemberPermissions) {
11
- for (const bit of requiredMemberPermissions) {
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
- memberHasPermission = true;
14
- break;
14
+ return [true, "User can run command; Has required permission(s)"];
15
15
  }
16
16
  }
17
17
  }
18
- if (requiredRoleIds) {
19
- for (const roleId of requiredRoleIds) {
18
+ if (roleIds) {
19
+ for (const roleId of roleIds) {
20
20
  if (member.roles.cache.has(roleId)) {
21
- memberHasRole = true;
22
- break;
21
+ return [true, "User can run command; Has required role(s)"];
23
22
  }
24
23
  }
25
24
  }
26
- return memberHasPermission || memberHasRole ? [true, "User can run command"] : [false, "User cannot run command"];
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
- if (!userIds && (requiredMemberPermissions || requiredRoleIds))
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\n\tlet memberHasPermission = false;\n\tlet memberHasRole = false;\n\n\tif (requiredMemberPermissions) {\n\t\tfor (const bit of requiredMemberPermissions) {\n\t\t\tif (member.permissions.has(bit)) {\n\t\t\t\tmemberHasPermission = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (requiredRoleIds) {\n\t\tfor (const roleId of requiredRoleIds) {\n\t\t\tif (member.roles.cache.has(roleId)) {\n\t\t\t\tmemberHasRole = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn memberHasPermission || memberHasRole\n\t\t? [true, \"User can run command\"]\n\t\t: [false, \"User cannot run command\"];\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\n\tif (!userIds && (requiredMemberPermissions || requiredRoleIds))\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":"AAGO,SAAS,oBACf,QACA,SACA,QACoB;AACpB,QAAM,EAAE,YAAY,IAAI;AACxB,MAAI,CAAC,YAAa,QAAO,CAAC,MAAM,oBAAoB;AAEpD,MAAI,OAAO,SAAS,gBAAgB,OAAO,SAAS,aAAa,SAAS,OAAO,KAAK,EAAE;AACvF,WAAO,CAAC,MAAM,sBAAsB;AAErC,QAAM,EAAE,2BAA2B,iBAAiB,QAAQ,IAAI;AAChE,MAAI,QAAS,QAAO,kBAAkB,QAAQ,SAAS,OAAO,IAAI;AAElE,MAAI,sBAAsB;AAC1B,MAAI,gBAAgB;AAEpB,MAAI,2BAA2B;AAC9B,eAAW,OAAO,2BAA2B;AAC5C,UAAI,OAAO,YAAY,IAAI,GAAG,GAAG;AAChC,8BAAsB;AACtB;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAEA,MAAI,iBAAiB;AACpB,eAAW,UAAU,iBAAiB;AACrC,UAAI,OAAO,MAAM,MAAM,IAAI,MAAM,GAAG;AACnC,wBAAgB;AAChB;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAEA,SAAO,uBAAuB,gBAC3B,CAAC,MAAM,sBAAsB,IAC7B,CAAC,OAAO,yBAAyB;AACrC;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;AAEhE,MAAI,CAAC,YAAY,6BAA6B;AAC7C,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
+ {"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 { existsSync } from \"fs\";\nimport { dirname, join, resolve } from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { Collection } from \"discord.js\";\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) {\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(packageRoot, \"lib\", relativePath),\n\t\t\tjoin(packageRoot, \"dist\", relativePath),\n\n\t\t\tjoin(packageRoot, relativePath),\n\t\t\tjoin(workingDir, relativePath),\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,SAAS,MAAM,eAAe;AACvC,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAI3B,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;AACzC,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,aAAa,OAAO,YAAY;AAAA,MACrC,KAAK,aAAa,QAAQ,YAAY;AAAA,MAEtC,KAAK,aAAa,YAAY;AAAA,MAC9B,KAAK,YAAY,YAAY;AAAA,IAC9B;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":[]}
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":[]}
@@ -13,7 +13,8 @@ async function importFile(filePath) {
13
13
  return imports;
14
14
  }
15
15
  return null;
16
- } catch {
16
+ } catch (err) {
17
+ console.warn(`[Trivious] Error while importing file ${filePath}`, err);
17
18
  return null;
18
19
  }
19
20
  }
@@ -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 {\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,QAAQ;AACP,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 { 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":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trivious",
3
- "version": "2.3.2",
3
+ "version": "2.3.3",
4
4
  "type": "module",
5
5
  "keywords": [
6
6
  "discord-bot",