56 lines
1.3 KiB
JavaScript
56 lines
1.3 KiB
JavaScript
|
|
if (!globalThis.requestIdleCallback) {
|
||
|
|
globalThis.requestIdleCallback = (callback) =>
|
||
|
|
window.setTimeout(() => callback({ didTimeout: false, timeRemaining: () => 0 }), 0);
|
||
|
|
}
|
||
|
|
|
||
|
|
if (!globalThis.cancelIdleCallback) {
|
||
|
|
globalThis.cancelIdleCallback = (handle) => window.clearTimeout(handle);
|
||
|
|
}
|
||
|
|
|
||
|
|
if (!globalThis.Headers) {
|
||
|
|
class SimpleHeaders {
|
||
|
|
constructor(init = {}) {
|
||
|
|
this.map = new Map();
|
||
|
|
const entries = init instanceof SimpleHeaders ? init.entries() : Object.entries(init || {});
|
||
|
|
for (const [key, value] of entries) {
|
||
|
|
this.set(key, value);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
get(name) {
|
||
|
|
return this.map.get(String(name).toLowerCase()) ?? null;
|
||
|
|
}
|
||
|
|
|
||
|
|
set(name, value) {
|
||
|
|
this.map.set(String(name).toLowerCase(), String(value));
|
||
|
|
}
|
||
|
|
|
||
|
|
entries() {
|
||
|
|
return this.map.entries();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
globalThis.Headers = SimpleHeaders;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (!globalThis.Response) {
|
||
|
|
class SimpleResponse {
|
||
|
|
constructor(body = "", init = {}) {
|
||
|
|
this.body = body;
|
||
|
|
this.status = Number(init.status ?? 200);
|
||
|
|
this.ok = this.status >= 200 && this.status < 300;
|
||
|
|
this.headers = new Headers(init.headers || {});
|
||
|
|
}
|
||
|
|
|
||
|
|
async text() {
|
||
|
|
return String(this.body);
|
||
|
|
}
|
||
|
|
|
||
|
|
async json() {
|
||
|
|
return JSON.parse(String(this.body));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
globalThis.Response = SimpleResponse;
|
||
|
|
}
|