-
Notifications
You must be signed in to change notification settings - Fork 0
/
api-polyfill.ts
37 lines (33 loc) · 916 Bytes
/
api-polyfill.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// allow Edge to overwrite methods
// (avoid "SCRIPT5045: Assignment to read-only properties is not allowed in strict mode")
try {
// @ts-ignore
if (window.browser) {
browser.storage.local.get = browser.storage.local.get;
}
} catch (error) {
function cloneDeep (original: any) {
if (typeof original !== "object" || original === null) {
return original;
}
return Object.keys(original).reduce((obj: any, prop) => {
obj[prop] = cloneDeep(original[prop]);
return obj;
}, {});
}
// allow overwrite
// @ts-ignore
window.chrome = cloneDeep(window.browser);
// pretend Chrome
// @ts-ignore
window.browser = undefined;
// add missing polyfill
// @ts-ignore
window.chrome.runtime.openOptionsPage = () => {
// @ts-ignore
const { options_page } = browser.runtime.getManifest();
browser.tabs.create({
url: `/${options_page}`,
});
};
}