@worktile/planet 19.0.0-next.1 → 19.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/fesm2022/worktile-planet.mjs +32 -32
  3. package/fesm2022/worktile-planet.mjs.map +1 -1
  4. package/package.json +1 -3
  5. package/esm2022/application/ng-planet-application-ref.mjs +0 -116
  6. package/esm2022/application/planet-application-loader.mjs +0 -459
  7. package/esm2022/application/planet-application-ref.mjs +0 -2
  8. package/esm2022/application/planet-application.service.mjs +0 -86
  9. package/esm2022/application/portal-application.mjs +0 -25
  10. package/esm2022/assets-loader.mjs +0 -332
  11. package/esm2022/component/planet-component-loader.mjs +0 -213
  12. package/esm2022/component/planet-component-outlet.mjs +0 -72
  13. package/esm2022/component/planet-component-types.mjs +0 -3
  14. package/esm2022/component/plant-component.config.mjs +0 -7
  15. package/esm2022/debug.mjs +0 -33
  16. package/esm2022/empty/empty.component.mjs +0 -17
  17. package/esm2022/global-event-dispatcher.mjs +0 -70
  18. package/esm2022/global-planet.mjs +0 -63
  19. package/esm2022/helpers.mjs +0 -187
  20. package/esm2022/inner-types.mjs +0 -2
  21. package/esm2022/module.mjs +0 -33
  22. package/esm2022/planet.class.mjs +0 -9
  23. package/esm2022/planet.mjs +0 -97
  24. package/esm2022/public-api.mjs +0 -19
  25. package/esm2022/router/route-redirect.mjs +0 -63
  26. package/esm2022/sandbox/constants.mjs +0 -7
  27. package/esm2022/sandbox/exec.mjs +0 -15
  28. package/esm2022/sandbox/index.mjs +0 -20
  29. package/esm2022/sandbox/proxy/patches/document.mjs +0 -12
  30. package/esm2022/sandbox/proxy/patches/eventListener.mjs +0 -41
  31. package/esm2022/sandbox/proxy/patches/index.mjs +0 -11
  32. package/esm2022/sandbox/proxy/patches/storage.mjs +0 -40
  33. package/esm2022/sandbox/proxy/patches/timer.mjs +0 -43
  34. package/esm2022/sandbox/proxy/proxies/common.mjs +0 -132
  35. package/esm2022/sandbox/proxy/proxies/document.mjs +0 -126
  36. package/esm2022/sandbox/proxy/proxies/window.mjs +0 -158
  37. package/esm2022/sandbox/proxy/proxy-sandbox.mjs +0 -49
  38. package/esm2022/sandbox/proxy/types.mjs +0 -2
  39. package/esm2022/sandbox/sandbox.mjs +0 -7
  40. package/esm2022/sandbox/snapshot/snapshot-sandbox.mjs +0 -12
  41. package/esm2022/sandbox/types.mjs +0 -2
  42. package/esm2022/worktile-planet.mjs +0 -5
@@ -1,40 +0,0 @@
1
- const PLANET_STORAGE_PREFIX = '__planet-storage-';
2
- export class RewriteStorage {
3
- constructor(app, rawStorage) {
4
- this.rawStorage = rawStorage;
5
- this.prefix = `${PLANET_STORAGE_PREFIX}${app}__:`;
6
- }
7
- get length() {
8
- return this.getKeys().length;
9
- }
10
- getKeys() {
11
- return Object.keys(this.rawStorage).filter(key => key.startsWith(this.prefix));
12
- }
13
- key(n) {
14
- const key = this.getKeys()[n];
15
- return key ? key.substring(this.prefix.length) : null;
16
- }
17
- getItem(key) {
18
- return this.rawStorage.getItem(`${this.prefix + key}`);
19
- }
20
- setItem(key, value) {
21
- this.rawStorage.setItem(`${this.prefix + key}`, value);
22
- }
23
- removeItem(key) {
24
- this.rawStorage.removeItem(`${this.prefix + key}`);
25
- }
26
- clear() {
27
- this.getKeys().forEach(key => {
28
- this.rawStorage.removeItem(key);
29
- });
30
- }
31
- }
32
- export function storagePatch(sandbox) {
33
- return {
34
- rewrite: {
35
- localStorage: new RewriteStorage(sandbox.app, localStorage),
36
- sessionStorage: new RewriteStorage(sandbox.app, sessionStorage)
37
- }
38
- };
39
- }
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldC9zcmMvc2FuZGJveC9wcm94eS9wYXRjaGVzL3N0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxxQkFBcUIsR0FBRyxtQkFBbUIsQ0FBQztBQUVsRCxNQUFNLE9BQU8sY0FBYztJQUl2QixZQUFZLEdBQVcsRUFBRSxVQUFtQjtRQUN4QyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcscUJBQXFCLEdBQUcsR0FBRyxLQUFLLENBQUM7SUFDdEQsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztJQUNqQyxDQUFDO0lBRU8sT0FBTztRQUNYLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsR0FBRyxDQUFDLENBQVM7UUFDVCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzFELENBQUM7SUFFRCxPQUFPLENBQUMsR0FBVztRQUNmLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFXLEVBQUUsS0FBYTtRQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFXO1FBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxLQUFLO1FBQ0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSjtBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsT0FBNkI7SUFDdEQsT0FBTztRQUNILE9BQU8sRUFBRTtZQUNMLFlBQVksRUFBRSxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQztZQUMzRCxjQUFjLEVBQUUsSUFBSSxjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUM7U0FDbEU7S0FDSixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3h5U2FuZGJveEluc3RhbmNlLCBTYW5kYm94UGF0Y2hIYW5kbGVyIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5jb25zdCBQTEFORVRfU1RPUkFHRV9QUkVGSVggPSAnX19wbGFuZXQtc3RvcmFnZS0nO1xuXG5leHBvcnQgY2xhc3MgUmV3cml0ZVN0b3JhZ2Uge1xuICAgIHByZWZpeDogc3RyaW5nO1xuICAgIHJhd1N0b3JhZ2U6IFN0b3JhZ2U7XG5cbiAgICBjb25zdHJ1Y3RvcihhcHA6IHN0cmluZywgcmF3U3RvcmFnZTogU3RvcmFnZSkge1xuICAgICAgICB0aGlzLnJhd1N0b3JhZ2UgPSByYXdTdG9yYWdlO1xuICAgICAgICB0aGlzLnByZWZpeCA9IGAke1BMQU5FVF9TVE9SQUdFX1BSRUZJWH0ke2FwcH1fXzpgO1xuICAgIH1cblxuICAgIGdldCBsZW5ndGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEtleXMoKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRLZXlzKCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5yYXdTdG9yYWdlKS5maWx0ZXIoa2V5ID0+IGtleS5zdGFydHNXaXRoKHRoaXMucHJlZml4KSk7XG4gICAgfVxuXG4gICAga2V5KG46IG51bWJlcikge1xuICAgICAgICBjb25zdCBrZXkgPSB0aGlzLmdldEtleXMoKVtuXTtcbiAgICAgICAgcmV0dXJuIGtleSA/IGtleS5zdWJzdHJpbmcodGhpcy5wcmVmaXgubGVuZ3RoKSA6IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0SXRlbShrZXk6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5yYXdTdG9yYWdlLmdldEl0ZW0oYCR7dGhpcy5wcmVmaXggKyBrZXl9YCk7XG4gICAgfVxuXG4gICAgc2V0SXRlbShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLnJhd1N0b3JhZ2Uuc2V0SXRlbShgJHt0aGlzLnByZWZpeCArIGtleX1gLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlSXRlbShrZXk6IHN0cmluZykge1xuICAgICAgICB0aGlzLnJhd1N0b3JhZ2UucmVtb3ZlSXRlbShgJHt0aGlzLnByZWZpeCArIGtleX1gKTtcbiAgICB9XG5cbiAgICBjbGVhcigpIHtcbiAgICAgICAgdGhpcy5nZXRLZXlzKCkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yYXdTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RvcmFnZVBhdGNoKHNhbmRib3g6IFByb3h5U2FuZGJveEluc3RhbmNlKTogU2FuZGJveFBhdGNoSGFuZGxlciB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcmV3cml0ZToge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlOiBuZXcgUmV3cml0ZVN0b3JhZ2Uoc2FuZGJveC5hcHAsIGxvY2FsU3RvcmFnZSksXG4gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZTogbmV3IFJld3JpdGVTdG9yYWdlKHNhbmRib3guYXBwLCBzZXNzaW9uU3RvcmFnZSlcbiAgICAgICAgfVxuICAgIH07XG59XG4iXX0=
@@ -1,43 +0,0 @@
1
- const rawSetTimeout = window.setTimeout;
2
- const rawClearTimeout = window.clearTimeout;
3
- const rawSetInterval = window.setInterval;
4
- const rawClearInterval = window.clearInterval;
5
- export function timerPatch() {
6
- const timeout = new Set();
7
- const interval = new Set();
8
- function rewriteSetTimeout(handler, ms, ...args) {
9
- const timeoutId = rawSetTimeout(handler, ms, ...args);
10
- timeout.add(timeoutId);
11
- return timeoutId;
12
- }
13
- function rewriteClearTimeout(timeoutId) {
14
- timeout.delete(timeoutId);
15
- rawClearTimeout(timeoutId);
16
- }
17
- function rewriteSetInterval(handler, ms, ...args) {
18
- const intervalId = rawSetInterval(handler, ms, ...args);
19
- interval.add(intervalId);
20
- return intervalId;
21
- }
22
- function rewriteClearInterval(intervalId) {
23
- interval.delete(intervalId);
24
- rawClearInterval(intervalId);
25
- }
26
- return {
27
- rewrite: {
28
- setTimeout: rewriteSetTimeout,
29
- clearTimeout: rewriteClearTimeout,
30
- setInterval: rewriteSetInterval,
31
- clearInterval: rewriteClearInterval
32
- },
33
- destroy: () => {
34
- timeout.forEach(timeoutId => {
35
- rawClearTimeout(timeoutId);
36
- });
37
- interval.forEach(intervalId => {
38
- rawClearInterval(intervalId);
39
- });
40
- }
41
- };
42
- }
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFuZXQvc3JjL3NhbmRib3gvcHJveHkvcGF0Y2hlcy90aW1lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO0FBQ3hDLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7QUFDNUMsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztBQUMxQyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7QUFFOUMsTUFBTSxVQUFVLFVBQVU7SUFDdEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBRW5DLFNBQVMsaUJBQWlCLENBQUMsT0FBcUIsRUFBRSxFQUFXLEVBQUUsR0FBRyxJQUFXO1FBQ3pFLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDdEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2QixPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUQsU0FBUyxtQkFBbUIsQ0FBQyxTQUFpQjtRQUMxQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFCLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsU0FBUyxrQkFBa0IsQ0FBQyxPQUFxQixFQUFFLEVBQVUsRUFBRSxHQUFHLElBQVc7UUFDekUsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN4RCxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pCLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxTQUFTLG9CQUFvQixDQUFDLFVBQWtCO1FBQzVDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUIsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELE9BQU87UUFDSCxPQUFPLEVBQUU7WUFDTCxVQUFVLEVBQUUsaUJBQWlCO1lBQzdCLFlBQVksRUFBRSxtQkFBbUI7WUFDakMsV0FBVyxFQUFFLGtCQUFrQjtZQUMvQixhQUFhLEVBQUUsb0JBQW9CO1NBQ3RDO1FBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUNWLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3hCLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMvQixDQUFDLENBQUMsQ0FBQztZQUNILFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQzFCLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztLQUNKLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2FuZGJveFBhdGNoSGFuZGxlciB9IGZyb20gJy4uL3R5cGVzJztcblxuY29uc3QgcmF3U2V0VGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0O1xuY29uc3QgcmF3Q2xlYXJUaW1lb3V0ID0gd2luZG93LmNsZWFyVGltZW91dDtcbmNvbnN0IHJhd1NldEludGVydmFsID0gd2luZG93LnNldEludGVydmFsO1xuY29uc3QgcmF3Q2xlYXJJbnRlcnZhbCA9IHdpbmRvdy5jbGVhckludGVydmFsO1xuXG5leHBvcnQgZnVuY3Rpb24gdGltZXJQYXRjaCgpOiBTYW5kYm94UGF0Y2hIYW5kbGVyIHtcbiAgICBjb25zdCB0aW1lb3V0ID0gbmV3IFNldDxudW1iZXI+KCk7XG4gICAgY29uc3QgaW50ZXJ2YWwgPSBuZXcgU2V0PG51bWJlcj4oKTtcblxuICAgIGZ1bmN0aW9uIHJld3JpdGVTZXRUaW1lb3V0KGhhbmRsZXI6IFRpbWVySGFuZGxlciwgbXM/OiBudW1iZXIsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHJhd1NldFRpbWVvdXQoaGFuZGxlciwgbXMsIC4uLmFyZ3MpO1xuICAgICAgICB0aW1lb3V0LmFkZCh0aW1lb3V0SWQpO1xuICAgICAgICByZXR1cm4gdGltZW91dElkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJld3JpdGVDbGVhclRpbWVvdXQodGltZW91dElkOiBudW1iZXIpIHtcbiAgICAgICAgdGltZW91dC5kZWxldGUodGltZW91dElkKTtcbiAgICAgICAgcmF3Q2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmV3cml0ZVNldEludGVydmFsKGhhbmRsZXI6IFRpbWVySGFuZGxlciwgbXM6IG51bWJlciwgLi4uYXJnczogYW55W10pIHtcbiAgICAgICAgY29uc3QgaW50ZXJ2YWxJZCA9IHJhd1NldEludGVydmFsKGhhbmRsZXIsIG1zLCAuLi5hcmdzKTtcbiAgICAgICAgaW50ZXJ2YWwuYWRkKGludGVydmFsSWQpO1xuICAgICAgICByZXR1cm4gaW50ZXJ2YWxJZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZXdyaXRlQ2xlYXJJbnRlcnZhbChpbnRlcnZhbElkOiBudW1iZXIpIHtcbiAgICAgICAgaW50ZXJ2YWwuZGVsZXRlKGludGVydmFsSWQpO1xuICAgICAgICByYXdDbGVhckludGVydmFsKGludGVydmFsSWQpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIHJld3JpdGU6IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQ6IHJld3JpdGVTZXRUaW1lb3V0LFxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0OiByZXdyaXRlQ2xlYXJUaW1lb3V0LFxuICAgICAgICAgICAgc2V0SW50ZXJ2YWw6IHJld3JpdGVTZXRJbnRlcnZhbCxcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWw6IHJld3JpdGVDbGVhckludGVydmFsXG4gICAgICAgIH0sXG4gICAgICAgIGRlc3Ryb3k6ICgpID0+IHtcbiAgICAgICAgICAgIHRpbWVvdXQuZm9yRWFjaCh0aW1lb3V0SWQgPT4ge1xuICAgICAgICAgICAgICAgIHJhd0NsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpbnRlcnZhbC5mb3JFYWNoKGludGVydmFsSWQgPT4ge1xuICAgICAgICAgICAgICAgIHJhd0NsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG59XG4iXX0=
@@ -1,132 +0,0 @@
1
- import { isObject } from '../../../helpers';
2
- import { RAW_NODE } from '../../constants';
3
- const rawHasOwnProperty = Object.prototype.hasOwnProperty;
4
- export function hasOwnProp(obj, key) {
5
- return rawHasOwnProperty.call(obj, key);
6
- }
7
- export function isValueDescriptor(desc) {
8
- if (desc === undefined) {
9
- return false;
10
- }
11
- return 'value' in desc || 'writable' in desc;
12
- }
13
- export function isAccessorDescriptor(desc) {
14
- if (desc === undefined) {
15
- return false;
16
- }
17
- return 'get' in desc || 'set' in desc;
18
- }
19
- export function isNonWriteableValue(desc) {
20
- return desc && desc.configurable === false && 'value' in desc && desc.writable === false;
21
- }
22
- export function isInvalidSetAccessor(desc) {
23
- if (desc && desc.configurable === false && 'set' in desc && desc.set === undefined) {
24
- return true;
25
- }
26
- else {
27
- return false;
28
- }
29
- }
30
- export function isInvalidGetAccessor(desc) {
31
- if (desc && desc.configurable === false && 'get' in desc && desc.get === undefined) {
32
- return true;
33
- }
34
- else {
35
- return false;
36
- }
37
- }
38
- function transferParams(args) {
39
- args = Array.isArray(args) ? args : Array.from(args);
40
- return args.map(arg => {
41
- return arg[RAW_NODE] ? arg[RAW_NODE] : arg;
42
- });
43
- }
44
- const buildInProps = ['length', 'caller', 'callee', 'arguments', 'prototype', Symbol.hasInstance];
45
- function transferProps(o, n) {
46
- for (const key of Reflect.ownKeys(o)) {
47
- if (buildInProps.includes(key)) {
48
- continue;
49
- }
50
- const desc = Object.getOwnPropertyDescriptor(n, key);
51
- if (desc && desc.writable) {
52
- n[key] = o[key];
53
- }
54
- }
55
- }
56
- export function bind(fn, context) {
57
- const fNOP = function () { };
58
- function bound() {
59
- const args = transferParams(arguments);
60
- if (this instanceof bound) {
61
- const obj = new fn(...args);
62
- Object.setPrototypeOf(obj, bound.prototype);
63
- return obj;
64
- }
65
- else {
66
- return fn.apply(context, args);
67
- }
68
- }
69
- bound.$native = fn;
70
- transferProps(fn, bound);
71
- if (fn.prototype) {
72
- fNOP.prototype = fn.prototype;
73
- }
74
- bound.prototype = new fNOP();
75
- if (Symbol.hasInstance) {
76
- Object.defineProperty(bound, Symbol.hasInstance, {
77
- configurable: true,
78
- value(instance) {
79
- const op = fn.prototype;
80
- return isObject(op) || typeof op === 'function' ? instance instanceof fn : false;
81
- }
82
- });
83
- }
84
- return bound;
85
- }
86
- export function createFakeObject(target, writableKeys) {
87
- const fakeObject = {};
88
- const propertyMap = {};
89
- const storageBox = Object.create(null);
90
- const propertyNames = Object.getOwnPropertyNames(target);
91
- const def = (p) => {
92
- const descriptor = Object.getOwnPropertyDescriptor(target, p);
93
- if (descriptor?.configurable) {
94
- const hasGetter = hasOwnProp(descriptor, 'get');
95
- const hasSetter = hasOwnProp(descriptor, 'set');
96
- const canWritable = writableKeys && writableKeys.length > 0 && writableKeys.includes(p);
97
- if (hasGetter) {
98
- descriptor.get = () => (hasOwnProp(storageBox, p) ? storageBox[p] : target[p]);
99
- }
100
- if (hasSetter) {
101
- descriptor.set = val => {
102
- storageBox[p] = val;
103
- return true;
104
- };
105
- }
106
- if (canWritable) {
107
- if (descriptor.writable === false) {
108
- descriptor.writable = true;
109
- }
110
- else if (hasGetter) {
111
- descriptor.set = val => {
112
- storageBox[p] = val;
113
- return true;
114
- };
115
- }
116
- }
117
- Object.defineProperty(fakeObject, p, Object.freeze(descriptor));
118
- }
119
- };
120
- propertyNames.forEach(p => {
121
- propertyMap[p] = true;
122
- def(p);
123
- });
124
- // 再次循环是为了处理原型链中的属性
125
- for (const prop in target) {
126
- if (!propertyMap[prop]) {
127
- def(prop);
128
- }
129
- }
130
- return fakeObject;
131
- }
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhbmV0L3NyYy9zYW5kYm94L3Byb3h5L3Byb3hpZXMvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0MsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQztBQUMxRCxNQUFNLFVBQVUsVUFBVSxDQUFDLEdBQVEsRUFBRSxHQUFnQjtJQUNqRCxPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxJQUF5QjtJQUN2RCxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUNyQixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBQ0QsT0FBTyxPQUFPLElBQUksSUFBSSxJQUFJLFVBQVUsSUFBSSxJQUFJLENBQUM7QUFDakQsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxJQUF5QjtJQUMxRCxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUNyQixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBQ0QsT0FBTyxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUM7QUFDMUMsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxJQUF5QjtJQUN6RCxPQUFPLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLEtBQUssSUFBSSxPQUFPLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDO0FBQzdGLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQUMs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QUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQyxDQUFDLENBQUM7SUFDSCxtQkFBbUI7SUFDbkIsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDckIsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2QsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLFVBQWlCLENBQUM7QUFDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzT2JqZWN0IH0gZnJvbSAnLi4vLi4vLi4vaGVscGVycyc7XG5pbXBvcnQgeyBSQVdfTk9ERSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5cbmNvbnN0IHJhd0hhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbmV4cG9ydCBmdW5jdGlvbiBoYXNPd25Qcm9wKG9iajogYW55LCBrZXk6IFByb3BlcnR5S2V5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJhd0hhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNWYWx1ZURlc2NyaXB0b3IoZGVzYz86IFByb3BlcnR5RGVzY3JpcHRvcikge1xuICAgIGlmIChkZXNjID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gJ3ZhbHVlJyBpbiBkZXNjIHx8ICd3cml0YWJsZScgaW4gZGVzYztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQWNjZXNzb3JEZXNjcmlwdG9yKGRlc2M/OiBQcm9wZXJ0eURlc2NyaXB0b3IpIHtcbiAgICBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuICdnZXQnIGluIGRlc2MgfHwgJ3NldCcgaW4gZGVzYztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9uV3JpdGVhYmxlVmFsdWUoZGVzYz86IFByb3BlcnR5RGVzY3JpcHRvcikge1xuICAgIHJldHVybiBkZXNjICYmIGRlc2MuY29uZmlndXJhYmxlID09PSBmYWxzZSAmJiAndmFsdWUnIGluIGRlc2MgJiYgZGVzYy53cml0YWJsZSA9PT0gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ludmFsaWRTZXRBY2Nlc3NvcihkZXNjPzogUHJvcGVydHlEZXNjcmlwdG9yKSB7XG4gICAgaWYgKGRlc2MgJiYgZGVzYy5jb25maWd1cmFibGUgPT09IGZhbHNlICYmICdzZXQnIGluIGRlc2MgJiYgZGVzYy5zZXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNJbnZhbGlkR2V0QWNjZXNzb3IoZGVzYz86IFByb3BlcnR5RGVzY3JpcHRvcikge1xuICAgIGlmIChkZXNjICYmIGRlc2MuY29uZmlndXJhYmxlID09PSBmYWxzZSAmJiAnZ2V0JyBpbiBkZXNjICYmIGRlc2MuZ2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdHJhbnNmZXJQYXJhbXMoYXJnczogSUFyZ3VtZW50cyB8IEFycmF5PGFueT4pIHtcbiAgICBhcmdzID0gQXJyYXkuaXNBcnJheShhcmdzKSA/IGFyZ3MgOiBBcnJheS5mcm9tKGFyZ3MpO1xuICAgIHJldHVybiBhcmdzLm1hcChhcmcgPT4ge1xuICAgICAgICByZXR1cm4gYXJnW1JBV19OT0RFXSA/IGFyZ1tSQVdfTk9ERV0gOiBhcmc7XG4gICAgfSk7XG59XG5cbmNvbnN0IGJ1aWxkSW5Qcm9wczogUHJvcGVydHlLZXlbXSA9IFsnbGVuZ3RoJywgJ2NhbGxlcicsICdjYWxsZWUnLCAnYXJndW1lbnRzJywgJ3Byb3RvdHlwZScsIFN5bWJvbC5oYXNJbnN0YW5jZV07XG5mdW5jdGlvbiB0cmFuc2ZlclByb3BzKG86IEZ1bmN0aW9uLCBuOiBGdW5jdGlvbikge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIFJlZmxlY3Qub3duS2V5cyhvKSkge1xuICAgICAgICBpZiAoYnVpbGRJblByb3BzLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sIGtleSk7XG4gICAgICAgIGlmIChkZXNjICYmIGRlc2Mud3JpdGFibGUpIHtcbiAgICAgICAgICAgIG5ba2V5XSA9IG9ba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmQoZm46IGFueSwgY29udGV4dDogYW55KSB7XG4gICAgY29uc3QgZk5PUCA9IGZ1bmN0aW9uKCkge307XG4gICAgZnVuY3Rpb24gYm91bmQoKSB7XG4gICAgICAgIGNvbnN0IGFyZ3MgPSB0cmFuc2ZlclBhcmFtcyhhcmd1bWVudHMpO1xuICAgICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIGJvdW5kKSB7XG4gICAgICAgICAgICBjb25zdCBvYmogPSBuZXcgZm4oLi4uYXJncyk7XG4gICAgICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqLCBib3VuZC5wcm90b3R5cGUpO1xuICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmbi5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBib3VuZC4kbmF0aXZlID0gZm47XG4gICAgdHJhbnNmZXJQcm9wcyhmbiwgYm91bmQpO1xuICAgIGlmIChmbi5wcm90b3R5cGUpIHtcbiAgICAgICAgZk5PUC5wcm90b3R5cGUgPSBmbi5wcm90b3R5cGU7XG4gICAgfVxuICAgIGJvdW5kLnByb3RvdHlwZSA9IG5ldyBmTk9QKCk7XG4gICAgaWYgKFN5bWJvbC5oYXNJbnN0YW5jZSkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYm91bmQsIFN5bWJvbC5oYXNJbnN0YW5jZSwge1xuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWUoaW5zdGFuY2U6IGFueSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wID0gZm4ucHJvdG90eXBlO1xuICAgICAgICAgICAgICAgIHJldHVybiBpc09iamVjdChvcCkgfHwgdHlwZW9mIG9wID09PSAnZnVuY3Rpb24nID8gaW5zdGFuY2UgaW5zdGFuY2VvZiBmbiA6IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGJvdW5kO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRmFrZU9iamVjdCh0YXJnZXQ6IFJlY29yZDxQcm9wZXJ0eUtleSwgYW55Piwgd3JpdGFibGVLZXlzPzogUHJvcGVydHlLZXlbXSkge1xuICAgIGNvbnN0IGZha2VPYmplY3QgPSB7fTtcbiAgICBjb25zdCBwcm9wZXJ0eU1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgYm9vbGVhbj4gPSB7fTtcbiAgICBjb25zdCBzdG9yYWdlQm94ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICBjb25zdCBkZWYgPSAocDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcCk7XG4gICAgICAgIGlmIChkZXNjcmlwdG9yPy5jb25maWd1cmFibGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhc0dldHRlciA9IGhhc093blByb3AoZGVzY3JpcHRvciwgJ2dldCcpO1xuICAgICAgICAgICAgY29uc3QgaGFzU2V0dGVyID0gaGFzT3duUHJvcChkZXNjcmlwdG9yLCAnc2V0Jyk7XG4gICAgICAgICAgICBjb25zdCBjYW5Xcml0YWJsZSA9IHdyaXRhYmxlS2V5cyAmJiB3cml0YWJsZUtleXMubGVuZ3RoID4gMCAmJiB3cml0YWJsZUtleXMuaW5jbHVkZXMocCk7XG4gICAgICAgICAgICBpZiAoaGFzR2V0dGVyKSB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRvci5nZXQgPSAoKSA9PiAoaGFzT3duUHJvcChzdG9yYWdlQm94LCBwKSA/IHN0b3JhZ2VCb3hbcF0gOiB0YXJnZXRbcF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGhhc1NldHRlcikge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gdmFsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc3RvcmFnZUJveFtwXSA9IHZhbDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjYW5Xcml0YWJsZSkge1xuICAgICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLndyaXRhYmxlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGhhc0dldHRlcikge1xuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLnNldCA9IHZhbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlQm94W3BdID0gdmFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZha2VPYmplY3QsIHAsIE9iamVjdC5mcmVlemUoZGVzY3JpcHRvcikpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBwcm9wZXJ0eU5hbWVzLmZvckVhY2gocCA9PiB7XG4gICAgICAgIHByb3BlcnR5TWFwW3BdID0gdHJ1ZTtcbiAgICAgICAgZGVmKHApO1xuICAgIH0pO1xuICAgIC8vIOWGjeasoeW+queOr+aYr+S4uuS6huWkhOeQhuWOn+Wei+mTvuS4reeahOWxnuaAp1xuICAgIGZvciAoY29uc3QgcHJvcCBpbiB0YXJnZXQpIHtcbiAgICAgICAgaWYgKCFwcm9wZXJ0eU1hcFtwcm9wXSkge1xuICAgICAgICAgICAgZGVmKHByb3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWtlT2JqZWN0IGFzIGFueTtcbn1cbiJdfQ==
@@ -1,126 +0,0 @@
1
- import { isFunction } from '../../../helpers';
2
- import { DOCUMENT_BIND_FN, PLANET_SANDBOX_DOCUMENT_WHITELIST, RAW_NODE } from '../../constants';
3
- import { hasOwnProp, createFakeObject, isInvalidSetAccessor, isNonWriteableValue, bind, isInvalidGetAccessor } from './common';
4
- const rawDocument = Document;
5
- const whitelist = ['cookie', 'title', 'location', ...(PLANET_SANDBOX_DOCUMENT_WHITELIST || [])];
6
- export class ProxyDocument {
7
- constructor() { }
8
- createGetter() {
9
- return (target, p, receiver) => {
10
- const value = hasOwnProp(target, p) ? Reflect.get(target, p, receiver) : Reflect.get(document, p);
11
- if (p === 'activeElement') {
12
- return Reflect.get(document, p);
13
- }
14
- // TODO: 处理动态节点
15
- // if (p === 'createElement') {
16
- // return function(tagName: string, options: ElementCreationOptions) {
17
- // const created = value.call(document, tagName, options);
18
- // if (isObject(created)) {
19
- // created[SANDBOX_INSTANCE] = sandbox;
20
- // }
21
- // return created;
22
- // };
23
- // }
24
- if (isFunction(value)) {
25
- let newValue = hasOwnProp(value, DOCUMENT_BIND_FN) ? value[DOCUMENT_BIND_FN] : null;
26
- if (!newValue) {
27
- newValue = bind(value, document);
28
- }
29
- const desc = Object.getOwnPropertyDescriptor(target, p);
30
- if (desc && isNonWriteableValue(desc)) {
31
- if (!Object.is(newValue, desc.value)) {
32
- return value;
33
- }
34
- }
35
- if (isInvalidGetAccessor(desc)) {
36
- return undefined;
37
- }
38
- value[DOCUMENT_BIND_FN] = newValue;
39
- return newValue;
40
- }
41
- return value;
42
- };
43
- }
44
- createSetter() {
45
- return (target, p, value, receiver) => {
46
- const desc = Object.getOwnPropertyDescriptor(whitelist.includes(p) ? document : receiver || target, p);
47
- if (desc && isNonWriteableValue(desc)) {
48
- if (Object.is(value, desc.value)) {
49
- return true;
50
- }
51
- else {
52
- return false;
53
- }
54
- }
55
- if (isInvalidSetAccessor(desc)) {
56
- return false;
57
- }
58
- return whitelist.includes(p) ? Reflect.set(document, p, value) : Reflect.set(target, p, value, receiver);
59
- };
60
- }
61
- createDefineProperty() {
62
- return (target, p, descriptor) => {
63
- return whitelist.includes(p)
64
- ? Reflect.defineProperty(document, p, descriptor)
65
- : Reflect.defineProperty(target, p, descriptor);
66
- };
67
- }
68
- create() {
69
- let proxyDocument = null;
70
- const fakeDocument = createFakeObject(document);
71
- const getter = this.createGetter();
72
- const fakeDocumentProto = new Proxy(fakeDocument, {
73
- get: (...args) => {
74
- return getter(...args);
75
- }
76
- });
77
- const fakeDocumentCtor = function Document() {
78
- if (!(this instanceof fakeDocumentCtor)) {
79
- throw new TypeError(`Failed to construct 'Document': Please use the 'new' operator.`);
80
- }
81
- const docInstance = new rawDocument();
82
- Object.setPrototypeOf(docInstance, fakeDocument);
83
- return docInstance;
84
- };
85
- fakeDocumentCtor.prototype = fakeDocumentProto;
86
- fakeDocumentCtor.prototype.constructor = fakeDocumentCtor;
87
- if (Symbol.hasInstance) {
88
- Object.defineProperty(fakeDocumentCtor, Symbol.hasInstance, {
89
- configurable: true,
90
- value(value) {
91
- let proto = value;
92
- if (proto === document) {
93
- return true;
94
- }
95
- while ((proto = Object.getPrototypeOf(proto))) {
96
- if (proto === fakeDocumentProto) {
97
- return true;
98
- }
99
- }
100
- const cloned = function () { };
101
- cloned.prototype = fakeDocument;
102
- return value instanceof cloned;
103
- }
104
- });
105
- }
106
- proxyDocument = new Proxy(Object.create(fakeDocumentProto, {
107
- currentScript: {
108
- value: null,
109
- writable: true
110
- },
111
- [RAW_NODE]: {
112
- writable: false,
113
- configurable: false,
114
- value: document
115
- }
116
- }), {
117
- set: this.createSetter(),
118
- defineProperty: this.createDefineProperty()
119
- });
120
- return {
121
- document: proxyDocument,
122
- Document: fakeDocumentCtor
123
- };
124
- }
125
- }
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFuZXQvc3JjL3NhbmRib3gvcHJveHkvcHJveGllcy9kb2N1bWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlDQUFpQyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hHLE9BQU8sRUFDSCxVQUFVLEVBQ1YsZ0JBQWdCLEVBQ2hCLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDbkIsSUFBSSxFQUNKLG9CQUFvQixFQUN2QixNQUFNLFVBQVUsQ0FBQztBQUVsQixNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUM7QUFDN0IsTUFBTSxTQUFTLEdBQWtCLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxDQUFDLGlDQUFpQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFL0csTUFBTSxPQUFPLGFBQWE7SUFDdEIsZ0JBQWUsQ0FBQztJQUVSLFlBQVk7UUFDaEIsT0FBTyxDQUFDLE1BQVcsRUFBRSxDQUFjLEVBQUUsUUFBYyxFQUFFLEVBQUU7WUFDbkQsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsRyxJQUFJLENBQUMsS0FBSyxlQUFlLEVBQUUsQ0FBQztnQkFDeEIsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBQ0QsZUFBZTtZQUNmLCtCQUEr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QWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQzVDLElBQUksS0FBSyxLQUFLLGlCQUFpQixFQUFFLENBQUM7NEJBQzlCLE9BQU8sSUFBSSxDQUFDO3dCQUNoQixDQUFDO29CQUNMLENBQUM7b0JBQ0QsTUFBTSxNQUFNLEdBQUcsY0FBWSxDQUFDLENBQUM7b0JBQzdCLE1BQU0sQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDO29CQUNoQyxPQUFPLEtBQUssWUFBWSxNQUFNLENBQUM7Z0JBQ25DLENBQUM7YUFDSixDQUFDLENBQUM7UUFDUCxDQUFDO1FBQ0QsYUFBYSxHQUFHLElBQUksS0FBSyxDQUNyQixNQUFNLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFO1lBQzdCLGFBQWEsRUFBRTtnQkFDWCxLQUFLLEVBQUUsSUFBSTtnQkFDWCxRQUFRLEVBQUUsSUFBSTthQUNqQjtZQUNELENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ1IsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsWUFBWSxFQUFFLEtBQUs7Z0JBQ25CLEtBQUssRUFBRSxRQUFRO2FBQ2xCO1NBQ0osQ0FBQyxFQUNGO1lBQ0ksR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDeEIsY0FBYyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtTQUM5QyxDQUNKLENBQUM7UUFDRixPQUFPO1lBQ0gsUUFBUSxFQUFFLGFBQWE7WUFDdkIsUUFBUSxFQUFFLGdCQUFnQjtTQUM3QixDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNGdW5jdGlvbiB9IGZyb20gJy4uLy4uLy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgRE9DVU1FTlRfQklORF9GTiwgUExBTkVUX1NBTkRCT1hfRE9DVU1FTlRfV0hJVEVMSVNULCBSQVdfTk9ERSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICAgIGhhc093blByb3AsXG4gICAgY3JlYXRlRmFrZU9iamVjdCxcbiAgICBpc0ludmFsaWRTZXRBY2Nlc3NvcixcbiAgICBpc05vbldyaXRlYWJsZVZhbHVlLFxuICAgIGJpbmQsXG4gICAgaXNJbnZhbGlkR2V0QWNjZXNzb3Jcbn0gZnJvbSAnLi9jb21tb24nO1xuXG5jb25zdCByYXdEb2N1bWVudCA9IERvY3VtZW50O1xuY29uc3Qgd2hpdGVsaXN0OiBQcm9wZXJ0eUtleVtdID0gWydjb29raWUnLCAndGl0bGUnLCAnbG9jYXRpb24nLCAuLi4oUExBTkVUX1NBTkRCT1hfRE9DVU1FTlRfV0hJVEVMSVNUIHx8IFtdKV07XG5cbmV4cG9ydCBjbGFzcyBQcm94eURvY3VtZW50IHtcbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUdldHRlcigpIHtcbiAgICAgICAgcmV0dXJuICh0YXJnZXQ6IGFueSwgcDogUHJvcGVydHlLZXksIHJlY2VpdmVyPzogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGhhc093blByb3AodGFyZ2V0LCBwKSA/IFJlZmxlY3QuZ2V0KHRhcmdldCwgcCwgcmVjZWl2ZXIpIDogUmVmbGVjdC5nZXQoZG9jdW1lbnQsIHApO1xuICAgICAgICAgICAgaWYgKHAgPT09ICdhY3RpdmVFbGVtZW50Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldChkb2N1bWVudCwgcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBUT0RPOiDlpITnkIbliqjmgIHoioLngrlcbiAgICAgICAgICAgIC8vIGlmIChwID09PSAnY3JlYXRlRWxlbWVudCcpIHtcbiAgICAgICAgICAgIC8vICAgICByZXR1cm4gZnVuY3Rpb24odGFnTmFtZTogc3RyaW5nLCBvcHRpb25zOiBFbGVtZW50Q3JlYXRpb25PcHRpb25zKSB7XG4gICAgICAgICAgICAvLyAgICAgICAgIGNvbnN0IGNyZWF0ZWQgPSB2YWx1ZS5jYWxsKGRvY3VtZW50LCB0YWdOYW1lLCBvcHRpb25zKTtcbiAgICAgICAgICAgIC8vICAgICAgICAgaWYgKGlzT2JqZWN0KGNyZWF0ZWQpKSB7XG4gICAgICAgICAgICAvLyAgICAgICAgICAgICBjcmVhdGVkW1NBTkRCT1hfSU5TVEFOQ0VdID0gc2FuZGJveDtcbiAgICAgICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAgICAgLy8gICAgICAgICByZXR1cm4gY3JlYXRlZDtcbiAgICAgICAgICAgIC8vICAgICB9O1xuICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1ZhbHVlID0gaGFzT3duUHJvcCh2YWx1ZSwgRE9DVU1FTlRfQklORF9GTikgPyB2YWx1ZVtET0NVTUVOVF9CSU5EX0ZOXSA6IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKCFuZXdWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IGJpbmQodmFsdWUsIGRvY3VtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBwKTtcbiAgICAgICAgICAgICAgICBpZiAoZGVzYyAmJiBpc05vbldyaXRlYWJsZVZhbHVlKGRlc2MpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghT2JqZWN0LmlzKG5ld1ZhbHVlLCBkZXNjLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpc0ludmFsaWRHZXRBY2Nlc3NvcihkZXNjKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YWx1ZVtET0NVTUVOVF9CSU5EX0ZOXSA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXdWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVNldHRlcigpIHtcbiAgICAgICAgcmV0dXJuICh0YXJnZXQ6IGFueSwgcDogUHJvcGVydHlLZXksIHZhbHVlOiBhbnksIHJlY2VpdmVyOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdoaXRlbGlzdC5pbmNsdWRlcyhwKSA/IGRvY3VtZW50IDogcmVjZWl2ZXIgfHwgdGFyZ2V0LCBwKTtcbiAgICAgICAgICAgIGlmIChkZXNjICYmIGlzTm9uV3JpdGVhYmxlVmFsdWUoZGVzYykpIHtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmlzKHZhbHVlLCBkZXNjLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzSW52YWxpZFNldEFjY2Vzc29yKGRlc2MpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHdoaXRlbGlzdC5pbmNsdWRlcyhwKSA/IFJlZmxlY3Quc2V0KGRvY3VtZW50LCBwLCB2YWx1ZSkgOiBSZWZsZWN0LnNldCh0YXJnZXQsIHAsIHZhbHVlLCByZWNlaXZlcik7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVEZWZpbmVQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuICh0YXJnZXQ6IGFueSwgcDogUHJvcGVydHlLZXksIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHdoaXRlbGlzdC5pbmNsdWRlcyhwKVxuICAgICAgICAgICAgICAgID8gUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudCwgcCwgZGVzY3JpcHRvcilcbiAgICAgICAgICAgICAgICA6IFJlZmxlY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwLCBkZXNjcmlwdG9yKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjcmVhdGUoKSB7XG4gICAgICAgIGxldCBwcm94eURvY3VtZW50ID0gbnVsbDtcbiAgICAgICAgY29uc3QgZmFrZURvY3VtZW50ID0gY3JlYXRlRmFrZU9iamVjdChkb2N1bWVudCk7XG4gICAgICAgIGNvbnN0IGdldHRlciA9IHRoaXMuY3JlYXRlR2V0dGVyKCk7XG4gICAgICAgIGNvbnN0IGZha2VEb2N1bWVudFByb3RvID0gbmV3IFByb3h5KGZha2VEb2N1bWVudCwge1xuICAgICAgICAgICAgZ2V0OiAoLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXR0ZXIoLi4uYXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBmYWtlRG9jdW1lbnRDdG9yID0gZnVuY3Rpb24gRG9jdW1lbnQoKSB7XG4gICAgICAgICAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgZmFrZURvY3VtZW50Q3RvcikpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBGYWlsZWQgdG8gY29uc3RydWN0ICdEb2N1bWVudCc6IFBsZWFzZSB1c2UgdGhlICduZXcnIG9wZXJhdG9yLmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZG9jSW5zdGFuY2UgPSBuZXcgcmF3RG9jdW1lbnQoKTtcbiAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihkb2NJbnN0YW5jZSwgZmFrZURvY3VtZW50KTtcbiAgICAgICAgICAgIHJldHVybiBkb2NJbnN0YW5jZTtcbiAgICAgICAgfTtcbiAgICAgICAgZmFrZURvY3VtZW50Q3Rvci5wcm90b3R5cGUgPSBmYWtlRG9jdW1lbnRQcm90bztcbiAgICAgICAgZmFrZURvY3VtZW50Q3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBmYWtlRG9jdW1lbnRDdG9yO1xuICAgICAgICBpZiAoU3ltYm9sLmhhc0luc3RhbmNlKSB7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZmFrZURvY3VtZW50Q3RvciwgU3ltYm9sLmhhc0luc3RhbmNlLCB7XG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHByb3RvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm90byA9PT0gZG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlICgocHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3RvID09PSBmYWtlRG9jdW1lbnRQcm90bykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsb25lZCA9IGZ1bmN0aW9uKCkge307XG4gICAgICAgICAgICAgICAgICAgIGNsb25lZC5wcm90b3R5cGUgPSBmYWtlRG9jdW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIGNsb25lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBwcm94eURvY3VtZW50ID0gbmV3IFByb3h5KFxuICAgICAgICAgICAgT2JqZWN0LmNyZWF0ZShmYWtlRG9jdW1lbnRQcm90bywge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRTY3JpcHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbUkFXX05PREVdOiB7XG4gICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGRvY3VtZW50XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2V0OiB0aGlzLmNyZWF0ZVNldHRlcigpLFxuICAgICAgICAgICAgICAgIGRlZmluZVByb3BlcnR5OiB0aGlzLmNyZWF0ZURlZmluZVByb3BlcnR5KClcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRvY3VtZW50OiBwcm94eURvY3VtZW50LFxuICAgICAgICAgICAgRG9jdW1lbnQ6IGZha2VEb2N1bWVudEN0b3JcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=
@@ -1,158 +0,0 @@
1
- import { hasOwnProp, createFakeObject, bind, isInvalidSetAccessor, isNonWriteableValue, isInvalidGetAccessor } from './common';
2
- import { PLANET_SANDBOX_WINDOW_WHITELIST, SANDBOX_INSTANCE, WINDOW_BIND_FN } from '../../constants';
3
- import { isFunction } from '../../../helpers';
4
- const esGlobalFunctions = ('eval,isFinite,isNaN,parseFloat,parseInt,' +
5
- // URL handling functions
6
- 'decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +
7
- // Constructor properties of the global object
8
- 'Array,ArrayBuffer,BigInt,BigInt64Array,BigUint64Array,Boolean,DataView,Date,Error,EvalError,' +
9
- 'FinalizationRegistry,Float32Array,Float64Array,Function,Int8Array,Int16Array,Int32Array,Map,Number,' +
10
- 'Object,Promise,Proxy,RangeError,ReferenceError,RegExp,Set,SharedArrayBuffer,String,Symbol,SyntaxError,' +
11
- 'TypeError,Uint8Array,Uint8ClampedArray,Uint16Array,Uint32Array,URIError,WeakMap,WeakRef,WeakSet,' +
12
- // Other Properties of the Global Object
13
- 'Atomics,JSON,Math,Reflect').split(',');
14
- const whitelistVariables = PLANET_SANDBOX_WINDOW_WHITELIST || [];
15
- function isConstructor(fn) {
16
- const fp = fn.prototype;
17
- const hasConstructor = fp && fp.constructor === fn && Object.getOwnPropertyNames(fp).length > 1;
18
- const functionStr = !hasConstructor && fn.toString();
19
- return hasConstructor || /^function\s+[A-Z]/.test(functionStr) || /^class\b/.test(functionStr);
20
- }
21
- const unscopables = {
22
- undefined: true,
23
- Array: true,
24
- Object: true,
25
- String: true,
26
- Boolean: true,
27
- Math: true,
28
- Number: true,
29
- Symbol: true,
30
- parseFloat: true,
31
- Float32Array: true
32
- };
33
- export class ProxyWindow {
34
- constructor(sandbox) {
35
- this.sandbox = sandbox;
36
- this.definedVariables = new Set();
37
- }
38
- createGetter() {
39
- return (target, key, receiver) => {
40
- if (key === Symbol.unscopables) {
41
- return unscopables;
42
- }
43
- if (key === SANDBOX_INSTANCE) {
44
- return this.sandbox;
45
- }
46
- let value = null;
47
- if (whitelistVariables.includes(key)) {
48
- return Reflect.get(window, key);
49
- }
50
- else {
51
- value = hasOwnProp(target, key) ? Reflect.get(target, key, receiver) : Reflect.get(window, key);
52
- }
53
- if (isFunction(value)) {
54
- if (esGlobalFunctions.includes(key) ||
55
- whitelistVariables.includes(key) ||
56
- this.sandbox.rewriteVariables.includes(key) ||
57
- this.definedVariables.has(key) ||
58
- isConstructor(value)) {
59
- return value;
60
- }
61
- else {
62
- const newValue = hasOwnProp(value, WINDOW_BIND_FN) ? value[WINDOW_BIND_FN] : bind(value, window);
63
- const desc = Object.getOwnPropertyDescriptor(target, key);
64
- if (isNonWriteableValue(desc)) {
65
- return value;
66
- }
67
- if (isInvalidGetAccessor(desc)) {
68
- return undefined;
69
- }
70
- value[WINDOW_BIND_FN] = newValue;
71
- return newValue;
72
- }
73
- }
74
- else {
75
- return value;
76
- }
77
- };
78
- }
79
- createSetter() {
80
- return (target, key, value, receiver) => {
81
- const desc = Object.getOwnPropertyDescriptor(whitelistVariables.includes(key) ? window : receiver ? receiver : target, key);
82
- if (desc && isNonWriteableValue(desc)) {
83
- if (!Object.is(value, desc.value)) {
84
- return false;
85
- }
86
- else {
87
- return true;
88
- }
89
- }
90
- if (isInvalidSetAccessor(desc)) {
91
- return false;
92
- }
93
- if (whitelistVariables.includes(key)) {
94
- return Reflect.set(window, key, value);
95
- }
96
- else {
97
- const success = Reflect.set(target, key, value, receiver);
98
- if (success) {
99
- if (this.sandbox.running) {
100
- this.definedVariables.add(key);
101
- }
102
- }
103
- return success;
104
- }
105
- };
106
- }
107
- createDefineProperty() {
108
- return (target, p, descriptor) => {
109
- if (whitelistVariables.includes(p)) {
110
- return Reflect.defineProperty(window, p, descriptor);
111
- }
112
- else {
113
- const success = Reflect.defineProperty(target, p, descriptor);
114
- if (this.sandbox.running && success) {
115
- this.definedVariables.add(p);
116
- }
117
- return success;
118
- }
119
- };
120
- }
121
- createDeleteProperty() {
122
- return (target, p) => {
123
- if (hasOwnProp(target, p)) {
124
- delete target[p];
125
- if (this.sandbox.running && this.definedVariables.has(p)) {
126
- this.definedVariables.delete(p);
127
- }
128
- }
129
- return true;
130
- };
131
- }
132
- createHas() {
133
- return (_target, key) => {
134
- return !whitelistVariables.includes(key);
135
- };
136
- }
137
- create() {
138
- const fakeWindow = createFakeObject(window, this.sandbox.rewriteVariables);
139
- const baseHandlers = {
140
- get: this.createGetter(),
141
- set: this.createSetter(),
142
- defineProperty: this.createDefineProperty(),
143
- deleteProperty: this.createDeleteProperty()
144
- };
145
- const proxy = new Proxy(fakeWindow, {
146
- ...baseHandlers,
147
- has: this.createHas()
148
- });
149
- const subProxy = new Proxy(fakeWindow, baseHandlers);
150
- proxy.self = subProxy;
151
- proxy.window = subProxy;
152
- proxy.globalThis = subProxy;
153
- proxy.top = window.top === window ? subProxy : window.top;
154
- proxy.parent = window.parent === window ? subProxy : window.top;
155
- return proxy;
156
- }
157
- }
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhbmV0L3NyYy9zYW5kYm94L3Byb3h5L3Byb3hpZXMvd2luZG93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBQ1YsZ0JBQWdCLEVBQ2hCLElBQUksRUFDSixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUN2QixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsK0JBQStCLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRzlDLE1BQU0saUJBQWlCLEdBQWtCLENBQ3JDLDBDQUEwQztJQUMxQyx5QkFBeUI7SUFDekIsNERBQTREO0lBQzVELDhDQUE4QztJQUM5Qyw4RkFBOEY7SUFDOUYscUdBQXFHO0lBQ3JHLHdHQUF3RztJQUN4RyxrR0FBa0c7SUFDbEcsd0NBQXdDO0lBQ3hDLDJCQUEyQixDQUM5QixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUViLE1BQU0sa0JBQWtCLEdBQUcsK0JBQStCLElBQUksRUFBRSxDQUFDO0FBRWpFLFNBQVMsYUFBYSxDQUFDLEVBQW9DO0lBQ3ZELE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUM7SUFDeEIsTUFBTSxjQUFjLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEtBQUssRUFBRSxJQUFJLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2hHLE1BQU0sV0FBVyxHQUFHLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyRCxPQUFPLGNBQWMsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsV0FBcUIsQ0FB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Q2pCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgaGFzT3duUHJvcCxcbiAgICBjcmVhdGVGYWtlT2JqZWN0LFxuICAgIGJpbmQsXG4gICAgaXNJbnZhbGlkU2V0QWNjZXNzb3IsXG4gICAgaXNOb25Xcml0ZWFibGVWYWx1ZSxcbiAgICBpc0ludmFsaWRHZXRBY2Nlc3NvclxufSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgeyBQTEFORVRfU0FOREJPWF9XSU5ET1dfV0hJVEVMSVNULCBTQU5EQk9YX0lOU1RBTkNFLCBXSU5ET1dfQklORF9GTiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vaGVscGVycyc7XG5pbXBvcnQgeyBQcm94eVNhbmRib3hJbnN0YW5jZSB9IGZyb20gJy4uL3R5cGVzJztcblxuY29uc3QgZXNHbG9iYWxGdW5jdGlvbnM6IFByb3BlcnR5S2V5W10gPSAoXG4gICAgJ2V2YWwsaXNGaW5pdGUsaXNOYU4scGFyc2VGbG9hdCxwYXJzZUludCwnICtcbiAgICAvLyBVUkwgaGFuZGxpbmcgZnVuY3Rpb25zXG4gICAgJ2RlY29kZVVSSSxkZWNvZGVVUklDb21wb25lbnQsZW5jb2RlVVJJLGVuY29kZVVSSUNvbXBvbmVudCwnICtcbiAgICAvLyBDb25zdHJ1Y3RvciBwcm9wZXJ0aWVzIG9mIHRoZSBnbG9iYWwgb2JqZWN0XG4gICAgJ0FycmF5LEFycmF5QnVmZmVyLEJpZ0ludCxCaWdJbnQ2NEFycmF5LEJpZ1VpbnQ2NEFycmF5LEJvb2xlYW4sRGF0YVZpZXcsRGF0ZSxFcnJvcixFdmFsRXJyb3IsJyArXG4gICAgJ0ZpbmFsaXphdGlvblJlZ2lzdHJ5LEZsb2F0MzJBcnJheSxGbG9hdDY0QXJyYXksRnVuY3Rpb24sSW50OEFycmF5LEludDE2QXJyYXksSW50MzJBcnJheSxNYXAsTnVtYmVyLCcgK1xuICAgICdPYmplY3QsUHJvbWlzZSxQcm94eSxSYW5nZUVycm9yLFJlZmVyZW5jZUVycm9yLFJlZ0V4cCxTZXQsU2hhcmVkQXJyYXlCdWZmZXIsU3RyaW5nLFN5bWJvbCxTeW50YXhFcnJvciwnICtcbiAgICAnVHlwZUVycm9yLFVpbnQ4QXJyYXksVWludDhDbGFtcGVkQXJyYXksVWludDE2QXJyYXksVWludDMyQXJyYXksVVJJRXJyb3IsV2Vha01hcCxXZWFrUmVmLFdlYWtTZXQsJyArXG4gICAgLy8gT3RoZXIgUHJvcGVydGllcyBvZiB0aGUgR2xvYmFsIE9iamVjdFxuICAgICdBdG9taWNzLEpTT04sTWF0aCxSZWZsZWN0J1xuKS5zcGxpdCgnLCcpO1xuXG5jb25zdCB3aGl0ZWxpc3RWYXJpYWJsZXMgPSBQTEFORVRfU0FOREJPWF9XSU5ET1dfV0hJVEVMSVNUIHx8IFtdO1xuXG5mdW5jdGlvbiBpc0NvbnN0cnVjdG9yKGZuOiAoKSA9PiB2b2lkIHwgRnVuY3Rpb25Db25zdHJ1Y3Rvcikge1xuICAgIGNvbnN0IGZwID0gZm4ucHJvdG90eXBlO1xuICAgIGNvbnN0IGhhc0NvbnN0cnVjdG9yID0gZnAgJiYgZnAuY29uc3RydWN0b3IgPT09IGZuICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGZwKS5sZW5ndGggPiAxO1xuICAgIGNvbnN0IGZ1bmN0aW9uU3RyID0gIWhhc0NvbnN0cnVjdG9yICYmIGZuLnRvU3RyaW5nKCk7XG4gICAgcmV0dXJuIGhhc0NvbnN0cnVjdG9yIHx8IC9eZnVuY3Rpb25cXHMrW0EtWl0vLnRlc3QoZnVuY3Rpb25TdHIgYXMgc3RyaW5nKSB8fCAvXmNsYXNzXFxiLy50ZXN0KGZ1bmN0aW9uU3RyIGFzIHN0cmluZyk7XG59XG5cbmNvbnN0IHVuc2NvcGFibGVzID0ge1xuICAgIHVuZGVmaW5lZDogdHJ1ZSxcbiAgICBBcnJheTogdHJ1ZSxcbiAgICBPYmplY3Q6IHRydWUsXG4gICAgU3RyaW5nOiB0cnVlLFxuICAgIEJvb2xlYW46IHRydWUsXG4gICAgTWF0aDogdHJ1ZSxcbiAgICBOdW1iZXI6IHRydWUsXG4gICAgU3ltYm9sOiB0cnVlLFxuICAgIHBhcnNlRmxvYXQ6IHRydWUsXG4gICAgRmxvYXQzMkFycmF5OiB0cnVlXG59O1xuXG5leHBvcnQgY2xhc3MgUHJveHlXaW5kb3cge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuZGJveDogUHJveHlTYW5kYm94SW5zdGFuY2UpIHt9XG5cbiAgICBwcml2YXRlIGRlZmluZWRWYXJpYWJsZXMgPSBuZXcgU2V0KCk7XG5cbiAgICBwcml2YXRlIGNyZWF0ZUdldHRlcigpIHtcbiAgICAgICAgcmV0dXJuICh0YXJnZXQ6IFdpbmRvdywga2V5OiBQcm9wZXJ0eUtleSwgcmVjZWl2ZXI6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gU3ltYm9sLnVuc2NvcGFibGVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuc2NvcGFibGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGtleSA9PT0gU0FOREJPWF9JTlNUQU5DRSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNhbmRib3g7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgaWYgKHdoaXRlbGlzdFZhcmlhYmxlcy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0KHdpbmRvdywga2V5KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBoYXNPd25Qcm9wKHRhcmdldCwga2V5KSA/IFJlZmxlY3QuZ2V0KHRhcmdldCwga2V5LCByZWNlaXZlcikgOiBSZWZsZWN0LmdldCh3aW5kb3csIGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNGdW5jdGlvbih2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGVzR2xvYmFsRnVuY3Rpb25zLmluY2x1ZGVzKGtleSkgfHxcbiAgICAgICAgICAgICAgICAgICAgd2hpdGVsaXN0VmFyaWFibGVzLmluY2x1ZGVzKGtleSkgfHxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zYW5kYm94LnJld3JpdGVWYXJpYWJsZXMuaW5jbHVkZXMoa2V5KSB8fFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmluZWRWYXJpYWJsZXMuaGFzKGtleSkgfHxcbiAgICAgICAgICAgICAgICAgICAgaXNDb25zdHJ1Y3Rvcih2YWx1ZSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gaGFzT3duUHJvcCh2YWx1ZSwgV0lORE9XX0JJTkRfRk4pID8gdmFsdWVbV0lORE9XX0JJTkRfRk5dIDogYmluZCh2YWx1ZSwgd2luZG93KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNOb25Xcml0ZWFibGVWYWx1ZShkZXNjKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0ludmFsaWRHZXRBY2Nlc3NvcihkZXNjKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZVtXSU5ET1dfQklORF9GTl0gPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ld1ZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlU2V0dGVyKCkge1xuICAgICAgICByZXR1cm4gKHRhcmdldDogV2luZG93LCBrZXk6IFByb3BlcnR5S2V5LCB2YWx1ZTogdW5rbm93biwgcmVjZWl2ZXI6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoXG4gICAgICAgICAgICAgICAgd2hpdGVsaXN0VmFyaWFibGVzLmluY2x1ZGVzKGtleSkgPyB3aW5kb3cgOiByZWNlaXZlciA/IHJlY2VpdmVyIDogdGFyZ2V0LFxuICAgICAgICAgICAgICAgIGtleVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChkZXNjICYmIGlzTm9uV3JpdGVhYmxlVmFsdWUoZGVzYykpIHtcbiAgICAgICAgICAgICAgICBpZiAoIU9iamVjdC5pcyh2YWx1ZSwgZGVzYy52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0ludmFsaWRTZXRBY2Nlc3NvcihkZXNjKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh3aGl0ZWxpc3RWYXJpYWJsZXMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LnNldCh3aW5kb3csIGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWNjZXNzID0gUmVmbGVjdC5zZXQodGFyZ2V0LCBrZXksIHZhbHVlLCByZWNlaXZlcik7XG4gICAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2FuZGJveC5ydW5uaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmluZWRWYXJpYWJsZXMuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVEZWZpbmVQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuICh0YXJnZXQ6IFdpbmRvdywgcDogUHJvcGVydHlLZXksIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgICAgICAgICAgaWYgKHdoaXRlbGlzdFZhcmlhYmxlcy5pbmNsdWRlcyhwKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdywgcCwgZGVzY3JpcHRvcik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBSZWZsZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcCwgZGVzY3JpcHRvcik7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2FuZGJveC5ydW5uaW5nICYmIHN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZpbmVkVmFyaWFibGVzLmFkZChwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVEZWxldGVQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuICh0YXJnZXQ6IFdpbmRvdywgcDogUHJvcGVydHlLZXkpID0+IHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKHRhcmdldCwgcCkpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgKHRhcmdldCBhcyBhbnkpW3BdO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNhbmRib3gucnVubmluZyAmJiB0aGlzLmRlZmluZWRWYXJpYWJsZXMuaGFzKHApKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5lZFZhcmlhYmxlcy5kZWxldGUocCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVIYXMoKSB7XG4gICAgICAgIHJldHVybiAoX3RhcmdldDogV2luZG93LCBrZXk6IFByb3BlcnR5S2V5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gIXdoaXRlbGlzdFZhcmlhYmxlcy5pbmNsdWRlcyhrZXkpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGNyZWF0ZSgpIHtcbiAgICAgICAgY29uc3QgZmFrZVdpbmRvdyA9IGNyZWF0ZUZha2VPYmplY3Qod2luZG93LCB0aGlzLnNhbmRib3gucmV3cml0ZVZhcmlhYmxlcyk7XG4gICAgICAgIGNvbnN0IGJhc2VIYW5kbGVycyA9IHtcbiAgICAgICAgICAgIGdldDogdGhpcy5jcmVhdGVHZXR0ZXIoKSxcbiAgICAgICAgICAgIHNldDogdGhpcy5jcmVhdGVTZXR0ZXIoKSxcbiAgICAgICAgICAgIGRlZmluZVByb3BlcnR5OiB0aGlzLmNyZWF0ZURlZmluZVByb3BlcnR5KCksXG4gICAgICAgICAgICBkZWxldGVQcm9wZXJ0eTogdGhpcy5jcmVhdGVEZWxldGVQcm9wZXJ0eSgpXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHByb3h5ID0gbmV3IFByb3h5KGZha2VXaW5kb3csIHtcbiAgICAgICAgICAgIC4uLmJhc2VIYW5kbGVycyxcbiAgICAgICAgICAgIGhhczogdGhpcy5jcmVhdGVIYXMoKVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgc3ViUHJveHkgPSBuZXcgUHJveHkoZmFrZVdpbmRvdywgYmFzZUhhbmRsZXJzKTtcbiAgICAgICAgcHJveHkuc2VsZiA9IHN1YlByb3h5O1xuICAgICAgICBwcm94eS53aW5kb3cgPSBzdWJQcm94eTtcbiAgICAgICAgcHJveHkuZ2xvYmFsVGhpcyA9IHN1YlByb3h5O1xuICAgICAgICBwcm94eS50b3AgPSB3aW5kb3cudG9wID09PSB3aW5kb3cgPyBzdWJQcm94eSA6IHdpbmRvdy50b3A7XG4gICAgICAgIHByb3h5LnBhcmVudCA9IHdpbmRvdy5wYXJlbnQgPT09IHdpbmRvdyA/IHN1YlByb3h5IDogd2luZG93LnRvcDtcbiAgICAgICAgcmV0dXJuIHByb3h5O1xuICAgIH1cbn1cbiJdfQ==
@@ -1,49 +0,0 @@
1
- import { ProxyWindow } from './proxies/window';
2
- import { getSandboxPatchHandlers } from './patches';
3
- import { Sandbox } from '../sandbox';
4
- export class ProxySandbox extends Sandbox {
5
- constructor(app, options) {
6
- super();
7
- this.app = app;
8
- this.options = options;
9
- this.running = false;
10
- this.patchHandlers = [];
11
- this.patchHandlers = getSandboxPatchHandlers(this);
12
- this.start();
13
- }
14
- start() {
15
- this.running = true;
16
- this.rewriteVariables = this.getPatchRewriteVariables();
17
- const proxyWindow = new ProxyWindow(this);
18
- this.global = proxyWindow.create();
19
- this.execPatchHandlers();
20
- }
21
- destroy() {
22
- this.running = false;
23
- this.patchHandlers.forEach(handler => {
24
- if (handler.destroy) {
25
- handler.destroy();
26
- }
27
- });
28
- }
29
- getPatchRewriteVariables() {
30
- return this.patchHandlers.reduce((pre, cur) => {
31
- return [...pre, ...(cur.rewrite ? Object.keys(cur.rewrite) : [])];
32
- }, []);
33
- }
34
- execPatchHandlers() {
35
- this.patchHandlers.forEach(handler => {
36
- if (handler.rewrite) {
37
- for (const key in handler.rewrite) {
38
- if (handler.rewrite[key]) {
39
- this.global[key] = handler.rewrite[key];
40
- }
41
- }
42
- }
43
- if (handler.init) {
44
- handler?.init();
45
- }
46
- });
47
- }
48
- }
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHktc2FuZGJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldC9zcmMvc2FuZGJveC9wcm94eS9wcm94eS1zYW5kYm94LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHcEQsT0FBTyxFQUFFLE9BQU8sRUFBa0IsTUFBTSxZQUFZLENBQUM7QUFFckQsTUFBTSxPQUFPLFlBQWEsU0FBUSxPQUFPO0lBU3JDLFlBQ1csR0FBVyxFQUNGLE9BQXVCO1FBRXZDLEtBQUssRUFBRSxDQUFDO1FBSEQsUUFBRyxHQUFILEdBQUcsQ0FBUTtRQUNGLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBVnBDLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFNZixrQkFBYSxHQUEwQixFQUFFLENBQUM7UUFPOUMsSUFBSSxDQUFDLGFBQWEsR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELEtBQUs7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDeEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNqQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDbEIsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3RCLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyx3QkFBd0I7UUFDNUIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNwRCxPQUFPLENBQUMsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFTyxpQkFBaUI7UUFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDakMsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2xCLEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNoQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUM1QyxDQUFDO2dCQUNMLENBQUM7WUFDTCxDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3BCLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3h5V2luZG93IH0gZnJvbSAnLi9wcm94aWVzL3dpbmRvdyc7XG5pbXBvcnQgeyBnZXRTYW5kYm94UGF0Y2hIYW5kbGVycyB9IGZyb20gJy4vcGF0Y2hlcyc7XG5pbXBvcnQgeyBTYW5kYm94UGF0Y2hIYW5kbGVyIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBHbG9iYWwgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBTYW5kYm94LCBTYW5kYm94T3B0aW9ucyB9IGZyb20gJy4uL3NhbmRib3gnO1xuXG5leHBvcnQgY2xhc3MgUHJveHlTYW5kYm94IGV4dGVuZHMgU2FuZGJveCB7XG4gICAgcHVibGljIHJ1bm5pbmcgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBvdmVycmlkZSBnbG9iYWwhOiBHbG9iYWw7XG5cbiAgICBwdWJsaWMgcmV3cml0ZVZhcmlhYmxlcyE6IFByb3BlcnR5S2V5W107XG5cbiAgICBwcml2YXRlIHBhdGNoSGFuZGxlcnM6IFNhbmRib3hQYXRjaEhhbmRsZXJbXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBhcHA6IHN0cmluZyxcbiAgICAgICAgcHVibGljIG92ZXJyaWRlIG9wdGlvbnM6IFNhbmRib3hPcHRpb25zXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMucGF0Y2hIYW5kbGVycyA9IGdldFNhbmRib3hQYXRjaEhhbmRsZXJzKHRoaXMpO1xuICAgICAgICB0aGlzLnN0YXJ0KCk7XG4gICAgfVxuXG4gICAgc3RhcnQoKSB7XG4gICAgICAgIHRoaXMucnVubmluZyA9IHRydWU7XG4gICAgICAgIHRoaXMucmV3cml0ZVZhcmlhYmxlcyA9IHRoaXMuZ2V0UGF0Y2hSZXdyaXRlVmFyaWFibGVzKCk7XG4gICAgICAgIGNvbnN0IHByb3h5V2luZG93ID0gbmV3IFByb3h5V2luZG93KHRoaXMpO1xuICAgICAgICB0aGlzLmdsb2JhbCA9IHByb3h5V2luZG93LmNyZWF0ZSgpO1xuICAgICAgICB0aGlzLmV4ZWNQYXRjaEhhbmRsZXJzKCk7XG4gICAgfVxuXG4gICAgZGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5ydW5uaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMucGF0Y2hIYW5kbGVycy5mb3JFYWNoKGhhbmRsZXIgPT4ge1xuICAgICAgICAgICAgaWYgKGhhbmRsZXIuZGVzdHJveSkge1xuICAgICAgICAgICAgICAgIGhhbmRsZXIuZGVzdHJveSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFBhdGNoUmV3cml0ZVZhcmlhYmxlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF0Y2hIYW5kbGVycy5yZWR1Y2U8c3RyaW5nW10+KChwcmUsIGN1cikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIFsuLi5wcmUsIC4uLihjdXIucmV3cml0ZSA/IE9iamVjdC5rZXlzKGN1ci5yZXdyaXRlKSA6IFtdKV07XG4gICAgICAgIH0sIFtdKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4ZWNQYXRjaEhhbmRsZXJzKCkge1xuICAgICAgICB0aGlzLnBhdGNoSGFuZGxlcnMuZm9yRWFjaChoYW5kbGVyID0+IHtcbiAgICAgICAgICAgIGlmIChoYW5kbGVyLnJld3JpdGUpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBoYW5kbGVyLnJld3JpdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhbmRsZXIucmV3cml0ZVtrZXldKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdsb2JhbFtrZXldID0gaGFuZGxlci5yZXdyaXRlW2tleV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaGFuZGxlci5pbml0KSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlcj8uaW5pdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=