simple wrapper for making osu related sequential web requests
当前为 
        此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greatest.deepsurf.us/scripts/441005/1024922/OsuWebRequests.js
      
class Request {
    constructor(url, params, callback) {
        this.url = new URL(url);
        this.url.search = new URLSearchParams(params).toString();
        this.callback = callback;
    }
    send(cb) {
        fetch(this.url).then(res => {
            cb();
            this.callback(res);
        }).catch(err => {
            cb();
            console.log(err);
        });
    }
}
class Web {
    base = "https://osu.ppy.sh";
    constructor(apiKey = null) {
        this.key = apiKey;
        this.requests = [];
    }
    get(path, params, cb) {
        const req = new Request(`${this.base}${path}`, params, cb);
        this.queue(req);
    }
    api(path, params, cb) {
        params.k = this.key;
        const req = new Request(`${this.base}/api${path}`, params, cb);
        this.queue(req);
    }
    queue(req) {
        this.requests.push(req);
        if (this.requests.length === 1) {
            this.next();
        }
    }
    next() {
        if (this.requests.length === 0) {
            return;
        }
        const req = this.requests[0];
        req.send(() => {
            this.requests.shift();
            this.next();
        });
    }
}