@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.
- package/.vscode/settings.json +3 -0
- package/dist/DBI.d.ts +12 -2
- package/dist/DBI.d.ts.map +1 -1
- package/dist/DBI.js +8 -2
- package/dist/DBI.js.map +1 -1
- package/dist/methods/handleMessageCommands.js +2 -2
- package/dist/methods/handleMessageCommands.js.map +1 -1
- package/dist/methods/hookEventListeners.js +1 -1
- package/dist/methods/hookEventListeners.js.map +1 -1
- package/dist/methods/hookInteractionListeners.js +2 -2
- package/dist/methods/hookInteractionListeners.js.map +1 -1
- package/dist/types/Builders/ButtonBuilder.d.ts +4 -4
- package/dist/types/Builders/ButtonBuilder.d.ts.map +1 -1
- package/dist/types/Builders/ButtonBuilder.js.map +1 -1
- package/dist/types/Builders/ChannelSelectMenuBuilder.d.ts +4 -4
- package/dist/types/Builders/ChannelSelectMenuBuilder.d.ts.map +1 -1
- package/dist/types/Builders/ChannelSelectMenuBuilder.js.map +1 -1
- package/dist/types/Builders/MentionableSelectMenuBuilder.d.ts +4 -4
- package/dist/types/Builders/MentionableSelectMenuBuilder.d.ts.map +1 -1
- package/dist/types/Builders/MentionableSelectMenuBuilder.js.map +1 -1
- package/dist/types/Builders/ModalBuilder.d.ts +4 -4
- package/dist/types/Builders/ModalBuilder.d.ts.map +1 -1
- package/dist/types/Builders/ModalBuilder.js.map +1 -1
- package/dist/types/Builders/RoleSelectMenuBuilder.d.ts +4 -4
- package/dist/types/Builders/RoleSelectMenuBuilder.d.ts.map +1 -1
- package/dist/types/Builders/RoleSelectMenuBuilder.js.map +1 -1
- package/dist/types/Builders/StringSelectMenuBuilder.d.ts +4 -4
- package/dist/types/Builders/StringSelectMenuBuilder.d.ts.map +1 -1
- package/dist/types/Builders/StringSelectMenuBuilder.js.map +1 -1
- package/dist/types/Builders/UserSelectMenuBuilder.d.ts +4 -4
- package/dist/types/Builders/UserSelectMenuBuilder.d.ts.map +1 -1
- package/dist/types/Builders/UserSelectMenuBuilder.js.map +1 -1
- package/dist/types/other/FakeMessageInteraction.js +2 -2
- package/dist/types/other/FakeMessageInteraction.js.map +1 -1
- package/dist/types/other/Locale.d.ts +4 -2
- package/dist/types/other/Locale.d.ts.map +1 -1
- package/dist/types/other/Locale.js +30 -14
- package/dist/types/other/Locale.js.map +1 -1
- package/dist/utils/UtilTypes.d.ts +1 -1
- package/dist/utils/UtilTypes.d.ts.map +1 -1
- package/dist/utils/UtilTypes.js.map +1 -1
- package/package.json +3 -3
- package/readme.md +3 -1
- package/src/DBI.ts +22 -4
- package/src/methods/handleMessageCommands.ts +2 -2
- package/src/methods/hookEventListeners.ts +1 -1
- package/src/methods/hookInteractionListeners.ts +2 -2
- package/src/types/Builders/ButtonBuilder.ts +4 -4
- package/src/types/Builders/ChannelSelectMenuBuilder.ts +5 -5
- package/src/types/Builders/MentionableSelectMenuBuilder.ts +5 -5
- package/src/types/Builders/ModalBuilder.ts +4 -4
- package/src/types/Builders/RoleSelectMenuBuilder.ts +5 -5
- package/src/types/Builders/StringSelectMenuBuilder.ts +5 -5
- package/src/types/Builders/UserSelectMenuBuilder.ts +5 -5
- package/src/types/other/FakeMessageInteraction.ts +2 -2
- package/src/types/other/Locale.ts +29 -16
- 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 =
|
|
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 =
|
|
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
|
-
|
|
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 =
|
|
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
|
|
43
|
-
return
|
|
44
|
-
|
|
45
|
-
return [
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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
|
+
}
|