Implement options for

- getByProps() methods
- getByPrototypes() methods
- getByString() methods
This commit is contained in:
Strencher 2023-01-26 00:00:16 +01:00
parent 97138afb7d
commit 68c6b81ed7
1 changed files with 30 additions and 6 deletions

View File

@ -1,6 +1,18 @@
import Logger from "common/logger"; import Logger from "common/logger";
import WebpackModules, {Filters} from "../webpackmodules"; import WebpackModules, {Filters} from "../webpackmodules";
const getOptions = (args, defaultOptions = {}) => {
if (args.length > 1 &&
typeof(args[args.length - 1]) === "object" &&
!Array.isArray(args[args.length - 1]) &&
args[args.length - 1] !== null
) {
Object.assign(defaultOptions, args.pop());
}
return defaultOptions;
};
/** /**
* `Webpack` is a utility class for getting internal webpack modules. Instance is accessible through the {@link BdApi}. * `Webpack` is a utility class for getting internal webpack modules. Instance is accessible through the {@link BdApi}.
* This is extremely useful for interacting with the internals of Discord. * This is extremely useful for interacting with the internals of Discord.
@ -162,7 +174,9 @@ const Webpack = {
* @return {Any} * @return {Any}
*/ */
getByPrototypes(...prototypes) { getByPrototypes(...prototypes) {
return WebpackModules.getModule(Filters.byPrototypeFields(prototypes)); const options = getOptions(prototypes);
return WebpackModules.getModule(Filters.byPrototypeFields(prototypes), options);
}, },
/** /**
@ -171,7 +185,9 @@ const Webpack = {
* @return {Any[]} * @return {Any[]}
*/ */
getAllByPrototypes(...prototypes) { getAllByPrototypes(...prototypes) {
return WebpackModules.getModule(Filters.byPrototypeFields(prototypes), {first: false}); const options = getOptions(prototypes, {first: false});
return WebpackModules.getModule(Filters.byPrototypeFields(prototypes), options);
}, },
/** /**
@ -180,7 +196,9 @@ const Webpack = {
* @return {Any} * @return {Any}
*/ */
getByProps(...props) { getByProps(...props) {
return WebpackModules.getModule(Filters.byProps(props)); const options = getOptions(props);
return this.getModule(Filters.byProps(props), options);
}, },
/** /**
@ -189,7 +207,9 @@ const Webpack = {
* @return {Any[]} * @return {Any[]}
*/ */
getAllByProps(...props) { getAllByProps(...props) {
return WebpackModules.getModule(Filters.byProps(props), {first: false}); const options = getOptions(props, {first: false});
return WebpackModules.getModule(Filters.byProps(props), options);
}, },
/** /**
@ -198,7 +218,9 @@ const Webpack = {
* @return {Any} * @return {Any}
*/ */
getByString(...strings) { getByString(...strings) {
return WebpackModules.getModule(Filters.byStrings(...strings)); const options = getOptions(strings);
return WebpackModules.getModule(Filters.byStrings(...strings), options);
}, },
/** /**
@ -207,7 +229,9 @@ const Webpack = {
* @return {Any[]} * @return {Any[]}
*/ */
getAllByString(...strings) { getAllByString(...strings) {
return WebpackModules.getModule(Filters.byStrings(...strings), {first: false}); const options = getOptions(strings, {first: false});
return WebpackModules.getModule(Filters.byStrings(...strings), options);
}, },
}; };