mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
* start rewrite * converted guilds * more changes * convert GuildMember * convert User and remove friend methods which kill people * convert more stuff * even more stuff * make things nicer * speed and fixes and stuff * almost finished * fix * Update Client.js * uwu * Update RESTMethods.js * message editing * fix router * fix issue with references * message delete reason * move message sending * fix dm * message splitting * NO MORE REST METHODS * Update Client.js * Update WebhookClient.js * remove all those endpoints from the constants * Update ClientUser.js * Update ClientUser.js * fixes * Update ClientUser.js * complaiancy * all sort of fixes * merge master (#1) * Fix Permissions now that member is deprecated (#1491) * removing more deprecation leftovers (#1492) * Fix MessageCollectors * Fix awaitMessages (#1493) * Fix MessageCollector#cleanup * Fix MessageCollector#postCheck * Add max option back for safety * Update Invite.js (#1496) * guild setPosition missing docs (#1498) * missing docs * update return docs * indent * switched .invites for the apirouter and invite.js * make multiple options an object * Update ClientUser.js * fix nicks * Update WebhookClient.js
40 lines
1.4 KiB
JavaScript
40 lines
1.4 KiB
JavaScript
const util = require('util');
|
|
|
|
const methods = ['get', 'post', 'delete', 'patch', 'put'];
|
|
// Paramable exists so we don't return a function unless we actually need one #savingmemory
|
|
const paramable = [
|
|
'channels', 'users', 'guilds', 'members',
|
|
'bans', 'emojis', 'pins', 'permissions',
|
|
'reactions', 'webhooks', 'messages',
|
|
'notes', 'roles', 'applications',
|
|
'invites',
|
|
];
|
|
const reflectors = ['toString', 'valueOf', 'inspect', Symbol.toPrimitive, util.inspect.custom];
|
|
|
|
module.exports = restManager => {
|
|
const handler = {
|
|
get(list, name) {
|
|
if (reflectors.includes(name)) return () => list.join('/');
|
|
if (paramable.includes(name)) {
|
|
function toReturn(...args) { // eslint-disable-line no-inner-declarations
|
|
list = list.concat(name);
|
|
for (const arg of args) {
|
|
if (arg !== null && typeof arg !== 'undefined') list = list.concat(arg);
|
|
}
|
|
return new Proxy(list, handler);
|
|
}
|
|
const directJoin = () => `${list.join('/')}/${name}`;
|
|
for (const r of reflectors) toReturn[r] = directJoin;
|
|
for (const method of methods) {
|
|
toReturn[method] = options => restManager.request(method, `${list.join('/')}/${name}`, options);
|
|
}
|
|
return toReturn;
|
|
}
|
|
if (methods.includes(name)) return options => restManager.request(name, list.join('/'), options);
|
|
return new Proxy(list.concat(name), handler);
|
|
},
|
|
};
|
|
|
|
return new Proxy([''], handler);
|
|
};
|