mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-10 08:33:30 +01:00
* tinify webpack * meme * fix long version * more changes * even smoler * fix up logic * fix build * undo changes to user agent manager because its not webpack'd anymore * the heck * fix stupid * clean up browser rules * typo
34 lines
1.1 KiB
JavaScript
34 lines
1.1 KiB
JavaScript
const noop = () => {}; // eslint-disable-line no-empty-function
|
|
const methods = ['get', 'post', 'delete', 'patch', 'put'];
|
|
const reflectors = [
|
|
'toString', 'valueOf', 'inspect', 'constructor',
|
|
Symbol.toPrimitive, Symbol.for('util.inspect.custom'),
|
|
];
|
|
|
|
function buildRoute(manager) {
|
|
const route = [''];
|
|
const handler = {
|
|
get(target, name) {
|
|
if (reflectors.includes(name)) return () => route.join('/');
|
|
if (methods.includes(name)) {
|
|
return options => manager.request(name, route.join('/'), Object.assign({
|
|
versioned: manager.versioned,
|
|
route: route.map((r, i) => {
|
|
if (/\d{16,19}/g.test(r)) return /channels|guilds/.test(route[i - 1]) ? r : ':id';
|
|
return r;
|
|
}).join('/'),
|
|
}, options));
|
|
}
|
|
route.push(name);
|
|
return new Proxy(noop, handler);
|
|
},
|
|
apply(target, _, args) {
|
|
route.push(...args.filter(x => x != null)); // eslint-disable-line eqeqeq
|
|
return new Proxy(noop, handler);
|
|
},
|
|
};
|
|
return new Proxy(noop, handler);
|
|
}
|
|
|
|
module.exports = buildRoute;
|