polyfill.js 968 B

1234567891011121314151617181920212223242526272829303132333435
  1. import tldRules from 'tldjs/rules.json';
  2. import { JSDOM } from 'jsdom';
  3. global.window = new JSDOM('').window;
  4. global.chrome = {};
  5. global.browser = {
  6. storage: {
  7. local: {
  8. get() {
  9. return Promise.resolve({
  10. 'dat:tldRules': tldRules,
  11. });
  12. },
  13. set() {
  14. return Promise.resolve();
  15. },
  16. },
  17. },
  18. runtime: {
  19. getURL: path => path,
  20. },
  21. };
  22. const domProps = Object.getOwnPropertyDescriptors(window);
  23. for (const k of Object.keys(domProps)) {
  24. if (k.endsWith('Storage') || k in global) delete domProps[k];
  25. }
  26. delete domProps.performance;
  27. Object.defineProperties(global, domProps);
  28. global.Response = { prototype: {} };
  29. global.__VAULT_ID__ = false;
  30. Object.assign(global, require('#/common/safe-globals'));
  31. Object.assign(global, require('#/injected/safe-globals-injected'));
  32. Object.assign(global, require('#/injected/content/safe-globals-content'));
  33. Object.assign(global, require('#/injected/web/safe-globals-web'));