@mostfeatured/dbi 0.1.20 → 0.1.22

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.
Files changed (57) hide show
  1. package/.vscode/settings.json +3 -0
  2. package/dist/DBI.d.ts +12 -2
  3. package/dist/DBI.d.ts.map +1 -1
  4. package/dist/DBI.js +8 -2
  5. package/dist/DBI.js.map +1 -1
  6. package/dist/methods/handleMessageCommands.js +2 -2
  7. package/dist/methods/handleMessageCommands.js.map +1 -1
  8. package/dist/methods/hookEventListeners.js +1 -1
  9. package/dist/methods/hookEventListeners.js.map +1 -1
  10. package/dist/methods/hookInteractionListeners.js +2 -2
  11. package/dist/methods/hookInteractionListeners.js.map +1 -1
  12. package/dist/types/Builders/ButtonBuilder.d.ts +4 -4
  13. package/dist/types/Builders/ButtonBuilder.d.ts.map +1 -1
  14. package/dist/types/Builders/ButtonBuilder.js.map +1 -1
  15. package/dist/types/Builders/ChannelSelectMenuBuilder.d.ts +4 -4
  16. package/dist/types/Builders/ChannelSelectMenuBuilder.d.ts.map +1 -1
  17. package/dist/types/Builders/ChannelSelectMenuBuilder.js.map +1 -1
  18. package/dist/types/Builders/MentionableSelectMenuBuilder.d.ts +4 -4
  19. package/dist/types/Builders/MentionableSelectMenuBuilder.d.ts.map +1 -1
  20. package/dist/types/Builders/MentionableSelectMenuBuilder.js.map +1 -1
  21. package/dist/types/Builders/ModalBuilder.d.ts +4 -4
  22. package/dist/types/Builders/ModalBuilder.d.ts.map +1 -1
  23. package/dist/types/Builders/ModalBuilder.js.map +1 -1
  24. package/dist/types/Builders/RoleSelectMenuBuilder.d.ts +4 -4
  25. package/dist/types/Builders/RoleSelectMenuBuilder.d.ts.map +1 -1
  26. package/dist/types/Builders/RoleSelectMenuBuilder.js.map +1 -1
  27. package/dist/types/Builders/StringSelectMenuBuilder.d.ts +4 -4
  28. package/dist/types/Builders/StringSelectMenuBuilder.d.ts.map +1 -1
  29. package/dist/types/Builders/StringSelectMenuBuilder.js.map +1 -1
  30. package/dist/types/Builders/UserSelectMenuBuilder.d.ts +4 -4
  31. package/dist/types/Builders/UserSelectMenuBuilder.d.ts.map +1 -1
  32. package/dist/types/Builders/UserSelectMenuBuilder.js.map +1 -1
  33. package/dist/types/other/FakeMessageInteraction.js +2 -2
  34. package/dist/types/other/FakeMessageInteraction.js.map +1 -1
  35. package/dist/types/other/Locale.d.ts +4 -2
  36. package/dist/types/other/Locale.d.ts.map +1 -1
  37. package/dist/types/other/Locale.js +30 -14
  38. package/dist/types/other/Locale.js.map +1 -1
  39. package/dist/utils/UtilTypes.d.ts +1 -1
  40. package/dist/utils/UtilTypes.d.ts.map +1 -1
  41. package/dist/utils/UtilTypes.js.map +1 -1
  42. package/package.json +3 -3
  43. package/readme.md +3 -1
  44. package/src/DBI.ts +22 -4
  45. package/src/methods/handleMessageCommands.ts +2 -2
  46. package/src/methods/hookEventListeners.ts +1 -1
  47. package/src/methods/hookInteractionListeners.ts +2 -2
  48. package/src/types/Builders/ButtonBuilder.ts +4 -4
  49. package/src/types/Builders/ChannelSelectMenuBuilder.ts +5 -5
  50. package/src/types/Builders/MentionableSelectMenuBuilder.ts +5 -5
  51. package/src/types/Builders/ModalBuilder.ts +4 -4
  52. package/src/types/Builders/RoleSelectMenuBuilder.ts +5 -5
  53. package/src/types/Builders/StringSelectMenuBuilder.ts +5 -5
  54. package/src/types/Builders/UserSelectMenuBuilder.ts +5 -5
  55. package/src/types/other/FakeMessageInteraction.ts +2 -2
  56. package/src/types/other/Locale.ts +29 -16
  57. package/src/utils/UtilTypes.ts +1 -1
@@ -4,13 +4,13 @@ import { NamespaceEnums } from "../../../generated/namespaceData";
4
4
  import { DBIStringSelectMenu } from "../Components/StringSelectMenu";
5
5
  import { RecursivePartial } from "../../utils/UtilTypes";
6
6
 
7
- export type DBIStringSelectMenuOverrides = RecursivePartial<Omit<StringSelectMenuComponentData, "customId" | "type">>
7
+ export type DBIStringSelectMenuOverrides = RecursivePartial<Omit<StringSelectMenuComponentData, "customId" | "type">>
8
8
 
9
9
  export class DBIStringSelectMenuBuilder<TNamespace extends NamespaceEnums> {
10
10
  component: DBIStringSelectMenu<TNamespace>
11
11
  overrides: DBIStringSelectMenuOverrides;
12
- reference: { data: (string | number | object)[], ttl?: number };
13
- constructor(arg: { component: DBIStringSelectMenu<TNamespace>, overrides?: DBIStringSelectMenuOverrides, reference?: { data: (string | number | object)[], ttl?: number } }) {
12
+ reference: { data: (string | number | object | boolean | null | undefined)[], ttl?: number };
13
+ constructor(arg: { component: DBIStringSelectMenu<TNamespace>, overrides?: DBIStringSelectMenuOverrides, reference?: { data: (string | number | object | boolean | null | undefined)[], ttl?: number } }) {
14
14
  this.component = arg.component;
15
15
  this.overrides = arg.overrides ?? {};
16
16
  this.reference = arg.reference ?? { data: [] };
@@ -26,12 +26,12 @@ export class DBIStringSelectMenuBuilder<TNamespace extends NamespaceEnums> {
26
26
  return this;
27
27
  }
28
28
 
29
- setData(...data: (string | number | object)[]): DBIStringSelectMenuBuilder<TNamespace> {
29
+ setData(...data: (string | number | object | boolean | null | undefined)[]): DBIStringSelectMenuBuilder<TNamespace> {
30
30
  this.reference.data = data;
31
31
  return this;
32
32
  }
33
33
 
34
- addData(...data: (string | number | object)[]): DBIStringSelectMenuBuilder<TNamespace> {
34
+ addData(...data: (string | number | object | boolean | null | undefined)[]): DBIStringSelectMenuBuilder<TNamespace> {
35
35
  this.reference.data = [...this.reference.data, ...data];
36
36
  return this;
37
37
  }
@@ -4,13 +4,13 @@ import { NamespaceEnums } from "../../../generated/namespaceData";
4
4
  import { DBIUserSelectMenu } from "../Components/UserSelectMenu";
5
5
  import { RecursivePartial } from "../../utils/UtilTypes";
6
6
 
7
- export type DBIUserSelectMenuOverrides = RecursivePartial<Omit<UserSelectMenuComponentData, "customId" | "type">>
7
+ export type DBIUserSelectMenuOverrides = RecursivePartial<Omit<UserSelectMenuComponentData, "customId" | "type">>
8
8
 
9
9
  export class DBIUserSelectMenuBuilder<TNamespace extends NamespaceEnums> {
10
10
  component: DBIUserSelectMenu<TNamespace>
11
11
  overrides: DBIUserSelectMenuOverrides;
12
- reference: { data: (string | number | object)[], ttl?: number };
13
- constructor(arg: { component: DBIUserSelectMenu<TNamespace>, overrides?: DBIUserSelectMenuOverrides, reference?: { data: (string | number | object)[], ttl?: number } }) {
12
+ reference: { data: (string | number | object | boolean | null | undefined)[], ttl?: number };
13
+ constructor(arg: { component: DBIUserSelectMenu<TNamespace>, overrides?: DBIUserSelectMenuOverrides, reference?: { data: (string | number | object | boolean | null | undefined)[], ttl?: number } }) {
14
14
  this.component = arg.component;
15
15
  this.overrides = arg.overrides ?? {};
16
16
  this.reference = arg.reference ?? { data: [] };
@@ -26,12 +26,12 @@ export class DBIUserSelectMenuBuilder<TNamespace extends NamespaceEnums> {
26
26
  return this;
27
27
  }
28
28
 
29
- setData(...data: (string | number | object)[]): DBIUserSelectMenuBuilder<TNamespace> {
29
+ setData(...data: (string | number | object | boolean | null | undefined)[]): DBIUserSelectMenuBuilder<TNamespace> {
30
30
  this.reference.data = data;
31
31
  return this;
32
32
  }
33
33
 
34
- addData(...data: (string | number | object)[]): DBIUserSelectMenuBuilder<TNamespace> {
34
+ addData(...data: (string | number | object | boolean | null | undefined)[]): DBIUserSelectMenuBuilder<TNamespace> {
35
35
  this.reference.data = [...this.reference.data, ...data];
36
36
  return this;
37
37
  }
@@ -325,11 +325,11 @@ export class FakeMessageInteraction /* implements ChatInputCommandInteraction */
325
325
  interaction: this,
326
326
  locale: {
327
327
  user: this.dbi.data.locales.get(this.locale) ||
328
- this.dbi.data.locales.get(this.dbi.config.defaults.locale),
328
+ this.dbi.data.locales.get(this.dbi.config.defaults.locale.name),
329
329
  guild: this.message.guild?.preferredLocale
330
330
  ? this.dbi.data.locales.get(
331
331
  this.message.guild?.preferredLocale?.split("-")?.at(0)
332
- ) || this.dbi.data.locales.get(this.dbi.config.defaults.locale)
332
+ ) || this.dbi.data.locales.get(this.dbi.config.defaults.locale.name)
333
333
  : null,
334
334
  }
335
335
  })));
@@ -1,7 +1,7 @@
1
1
  import stuffs from "stuffs";
2
2
  import { NamespaceData, NamespaceEnums } from "../../../generated/namespaceData";
3
3
  import { DBI } from "../../DBI";
4
-
4
+ import _ from "lodash";
5
5
 
6
6
  export interface DBILangObject {
7
7
  [property: string]: DBILangObject & ((...args: any[]) => string);
@@ -18,7 +18,7 @@ export type TDBILocaleConstructor<TNamespace extends NamespaceEnums> = Omit<DBIL
18
18
  export class DBILocale<TNamespace extends NamespaceEnums> {
19
19
  name: TDBILocaleString;
20
20
  data: NamespaceData[TNamespace]["contentLocale"];
21
- private _data: DBILangConstructorObject;
21
+ _data: DBILangConstructorObject;
22
22
  dbi: DBI<TNamespace, {}>;
23
23
  flag?: string
24
24
  constructor(dbi: DBI<TNamespace, {}>, cfg: TDBILocaleConstructor<TNamespace>) {
@@ -26,27 +26,40 @@ export class DBILocale<TNamespace extends NamespaceEnums> {
26
26
  this.name = cfg.name;
27
27
  this.flag = cfg.flag;
28
28
  this._data = cfg.data;
29
- this.data = convertLang<TNamespace>(cfg.data);
29
+ this.data = createInfinitePathProxy((path, ...args) => {
30
+ return this.format(path.join("."), ...args);
31
+ });;
30
32
  }
31
33
  mergeLocale(locale: DBILocale<TNamespace>): DBILocale<TNamespace> {
32
34
  this._data = stuffs.defaultify(locale._data, this._data, true) as any;
33
- this.data = convertLang<TNamespace>(this._data);
34
-
35
- locale.data = this.data;
36
35
  locale._data = this._data;
37
36
 
38
37
  return this;
39
38
  }
39
+ get(path: string): string | null {
40
+ return _.get(this._data as any, path) as string || null;
41
+ }
42
+ format(path: string, ...args: any[]): string {
43
+ const value = this.get(path);
44
+ if (!value) {
45
+ const defaultLocale = this.dbi.locale(this.dbi.config.defaults.locale.name);
46
+ if (!defaultLocale) return this.dbi.config.defaults.locale.invalidPath({
47
+ locale: this,
48
+ path,
49
+ });
50
+ return defaultLocale.format(path, ...args);
51
+ }
52
+ return stuffs.mapReplace(value, args.map((t, i) => [new RegExp(`\\{${i}(;[^}]+)?\\}`, "g"), t]));
53
+ }
40
54
  }
41
55
 
42
- export function convertLang<TNamespace extends NamespaceEnums>(data: DBILangConstructorObject): NamespaceData[TNamespace]["contentLocale"] {
43
- return Object.fromEntries(Object.entries(data).map(([key, value]) => {
44
- if (typeof value === "string") {
45
- return [key, (...args: any[]) => {
46
- return stuffs.mapReplace(value, args.map((t, i) => [new RegExp(`\\{${i}(;[^}]+)?\\}`, "g"), t]))
47
- }];
48
- } else {
49
- return [key, convertLang(value)];
56
+ export function createInfinitePathProxy(onApplyPath: (path: string[], ...args: any[]) => string, path: string[] = []): any {
57
+ return new Proxy(() => { }, {
58
+ get(target, key) {
59
+ return createInfinitePathProxy(onApplyPath, [...path, key.toString()]);
60
+ },
61
+ apply(target, thisArg, args) {
62
+ return onApplyPath(path, ...args);
50
63
  }
51
- }))
52
- }
64
+ });
65
+ }
@@ -1,7 +1,7 @@
1
1
  export interface IDBIToJSONArgs<T> {
2
2
  reference?: {
3
3
  ttl?: number;
4
- data: (string | number | object)[];
4
+ data: (string | number | object | boolean | null | undefined)[];
5
5
  };
6
6
  overrides?: RecursivePartial<T>;
7
7
  }