DuyTa's picture
Upload folder using huggingface_hub
bc20498 verified
// a bit terser code than I usually write but it's 10 LOC within 80 cols
// if you are struggling to follow the code you can replace 1-char
// references around with the following one, hoping that helps :-)
// d => descriptors
// k => key
// p => promise
// r => response
const d = Object.getOwnPropertyDescriptors(Response.prototype);
const isFunction = value => typeof value === 'function';
const bypass = (p, k, { get, value }) => get || !isFunction(value) ?
p.then(r => r[k]) :
(...args) => p.then(r => r[k](...args));
const direct = (p, value) => isFunction(value) ? value.bind(p) : value;
const handler = {
get: (p, k) => d.hasOwnProperty(k) ? bypass(p, k, d[k]) : direct(p, p[k])
};
/**
* @param {RequestInfo | URL} input
* @param {...RequestInit} init
* @returns {Promise<Response> & Response}
*/
export default (input, ...init) => new Proxy(fetch(input, ...init), handler);