@worktile/planet 11.0.0 → 12.1.2

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 (93) hide show
  1. package/application/planet-application-loader.d.ts.map +1 -1
  2. package/application/planet-application-loader.ngfactory.d.ts.map +1 -0
  3. package/application/planet-application-ref.d.ts +13 -10
  4. package/application/planet-application-ref.d.ts.map +1 -1
  5. package/application/planet-application.service.d.ts +1 -1
  6. package/application/planet-application.service.d.ts.map +1 -1
  7. package/application/planet-application.service.ngfactory.d.ts.map +1 -0
  8. package/application/portal-application.d.ts +6 -6
  9. package/application/portal-application.d.ts.map +1 -1
  10. package/assets-loader.d.ts +11 -2
  11. package/assets-loader.d.ts.map +1 -1
  12. package/assets-loader.ngfactory.d.ts.map +1 -0
  13. package/bundles/worktile-planet.umd.js +851 -58
  14. package/bundles/worktile-planet.umd.js.map +1 -1
  15. package/component/planet-component-loader.d.ts.map +1 -1
  16. package/component/planet-component-loader.ngfactory.d.ts.map +1 -0
  17. package/empty/empty.component.ngfactory.d.ts.map +1 -0
  18. package/esm2015/application/planet-application-loader.js +15 -10
  19. package/esm2015/application/planet-application-ref.js +29 -18
  20. package/esm2015/application/planet-application.service.js +1 -1
  21. package/esm2015/application/portal-application.js +1 -1
  22. package/esm2015/assets-loader.js +60 -8
  23. package/esm2015/component/planet-component-loader.js +3 -5
  24. package/esm2015/debug.js +2 -2
  25. package/esm2015/global-planet.js +6 -3
  26. package/esm2015/helpers.js +6 -3
  27. package/esm2015/planet.class.js +1 -1
  28. package/esm2015/planet.js +4 -3
  29. package/esm2015/sandbox/constants.js +7 -0
  30. package/esm2015/sandbox/exec.js +15 -0
  31. package/esm2015/sandbox/index.js +20 -0
  32. package/esm2015/sandbox/proxy/patches/document.js +12 -0
  33. package/esm2015/sandbox/proxy/patches/eventListener.js +41 -0
  34. package/esm2015/sandbox/proxy/patches/index.js +11 -0
  35. package/esm2015/sandbox/proxy/patches/storage.js +40 -0
  36. package/esm2015/sandbox/proxy/patches/timer.js +43 -0
  37. package/esm2015/sandbox/proxy/proxies/common.js +132 -0
  38. package/esm2015/sandbox/proxy/proxies/document.js +126 -0
  39. package/esm2015/sandbox/proxy/proxies/window.js +155 -0
  40. package/esm2015/sandbox/proxy/proxy-sandbox.js +49 -0
  41. package/esm2015/sandbox/proxy/types.js +2 -0
  42. package/esm2015/sandbox/sandbox.js +7 -0
  43. package/esm2015/sandbox/snapshot/snapshot-sandbox.js +12 -0
  44. package/esm2015/sandbox/types.js +2 -0
  45. package/fesm2015/worktile-planet.js +763 -45
  46. package/fesm2015/worktile-planet.js.map +1 -1
  47. package/global-event-dispatcher.ngfactory.d.ts.map +1 -0
  48. package/global-planet.d.ts +3 -3
  49. package/global-planet.d.ts.map +1 -1
  50. package/helpers.d.ts +3 -2
  51. package/helpers.d.ts.map +1 -1
  52. package/module.ngfactory.d.ts.map +1 -0
  53. package/package.json +5 -5
  54. package/planet.class.d.ts +1 -0
  55. package/planet.class.d.ts.map +1 -1
  56. package/planet.d.ts +1 -1
  57. package/planet.d.ts.map +1 -1
  58. package/planet.ngfactory.d.ts.map +1 -0
  59. package/sandbox/constants.d.ts +7 -0
  60. package/sandbox/constants.d.ts.map +1 -0
  61. package/sandbox/exec.d.ts +3 -0
  62. package/sandbox/exec.d.ts.map +1 -0
  63. package/sandbox/index.d.ts +7 -0
  64. package/sandbox/index.d.ts.map +1 -0
  65. package/sandbox/proxy/patches/document.d.ts +3 -0
  66. package/sandbox/proxy/patches/document.d.ts.map +1 -0
  67. package/sandbox/proxy/patches/eventListener.d.ts +3 -0
  68. package/sandbox/proxy/patches/eventListener.d.ts.map +1 -0
  69. package/sandbox/proxy/patches/index.d.ts +3 -0
  70. package/sandbox/proxy/patches/index.d.ts.map +1 -0
  71. package/sandbox/proxy/patches/storage.d.ts +15 -0
  72. package/sandbox/proxy/patches/storage.d.ts.map +1 -0
  73. package/sandbox/proxy/patches/timer.d.ts +3 -0
  74. package/sandbox/proxy/patches/timer.d.ts.map +1 -0
  75. package/sandbox/proxy/proxies/common.d.ts +13 -0
  76. package/sandbox/proxy/proxies/common.d.ts.map +1 -0
  77. package/sandbox/proxy/proxies/document.d.ts +14 -0
  78. package/sandbox/proxy/proxies/document.d.ts.map +1 -0
  79. package/sandbox/proxy/proxies/window.d.ts +13 -0
  80. package/sandbox/proxy/proxies/window.d.ts.map +1 -0
  81. package/sandbox/proxy/proxy-sandbox.d.ts +16 -0
  82. package/sandbox/proxy/proxy-sandbox.d.ts.map +1 -0
  83. package/sandbox/proxy/types.d.ts +14 -0
  84. package/sandbox/proxy/types.d.ts.map +1 -0
  85. package/sandbox/sandbox.d.ts +12 -0
  86. package/sandbox/sandbox.d.ts.map +1 -0
  87. package/sandbox/snapshot/snapshot-sandbox.d.ts +9 -0
  88. package/sandbox/snapshot/snapshot-sandbox.d.ts.map +1 -0
  89. package/sandbox/types.d.ts +2 -0
  90. package/sandbox/types.d.ts.map +1 -0
  91. package/worktile-planet.metadata.json +1 -1
  92. package/bundles/worktile-planet.umd.min.js +0 -16
  93. package/bundles/worktile-planet.umd.min.js.map +0 -1
@@ -0,0 +1,155 @@
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, Object.assign(Object.assign({}, baseHandlers), { has: this.createHas() }));
146
+ const subProxy = new Proxy(fakeWindow, baseHandlers);
147
+ proxy.self = subProxy;
148
+ proxy.window = subProxy;
149
+ proxy.globalThis = subProxy;
150
+ proxy.top = window.top === window ? subProxy : window.top;
151
+ proxy.parent = window.parent === window ? subProxy : window.top;
152
+ return proxy;
153
+ }
154
+ }
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhbmV0L3NyYy9zYW5kYm94L3Byb3h5L3Byb3hpZXMvd2luZG93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBQ1YsZ0JBQWdCLEVBQ2hCLElBQUksRUFDSixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUN2QixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsK0JBQStCLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRzlDLE1BQU0saUJBQWlCLEdBQWtCLENBQ3JDLDBDQUEwQztJQUMxQyx5QkFBeUI7SUFDekIsNERBQTREO0lBQzVELDhDQUE4QztJQUM5Qyw4RkFBOEY7SUFDOUYscUdBQXFHO0lBQ3JHLHdHQUF3RztJQUN4RyxrR0FBa0c7SUFDbEcsd0NBQXdDO0lBQ3hDLDJCQUEyQixDQUM5QixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUViLE1BQU0sa0JBQWtCLEdBQUcsK0JBQStCLElBQUksRUFBRSxDQUFDO0FBRWpFLFNBQVMsYUFBYSxDQUFDLEVBQW9DO0lBQ3ZELE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUM7SUFDeEIsTUFBTSxjQUFjLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEtBQUssRUFBRSxJQUFJLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2hHLE1BQU0sV0FBVyxHQUFHLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyRCxPQUFPLGNBQWMsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsV0FBcUIsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBcUIsQ0FBQyxDQUFDO0FBQ3ZILENBQUM7QUFFRCxNQUFNLFdBQVcsR0FBRztJQUNoQixTQUFTLEVBQUUsSUFBSTtJQUNmLEtBQUssRUFBRSxJQUFJO0lBQ1gsTUFBTSxFQUFFLElBQUk7SUFDWixNQUFNLEVBQUUsSUFBSTtJQUNaLE9BQU8sRUFBRSxJQUFJO0lBQ2IsSUFBSSxFQUFFLElBQUk7SUFDVixNQUFNLEVBQUUsSUFBSTtJQUNaLE1BQU0sRUFBRSxJQUFJO0lBQ1osVUFBVSxFQUFFLElBQUk7SUFDaEIsWUFBWSxFQUFFLElBQUk7Q0FDckIsQ0FBQztBQUVGLE1BQU0sT0FBTyxXQUFXO0lBQ3BCLFlBQW9CLE9BQTZCO1FBQTdCLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBRXpDLHFCQUFnQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7SUFGZSxDQUFDO0lBSTdDLFlBQVk7UUFDaEIsT0FBTyxDQUFDLE1BQWMsRUFBRSxHQUFnQixFQUFFLFFBQWEsRUFBRSxFQUFFO1lBQ3ZELElBQUksR0FBRyxLQUFLLE1BQU0sQ0FBQyxXQUFXLEVBQUU7Z0JBQzVCLE9BQU8sV0FBVyxDQUFDO2FBQ3RCO1lBQ0QsSUFBSSxHQUFHLEtBQUssZ0JBQWdCLEVBQUU7Z0JBQzFCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUN2QjtZQUNELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztZQUNqQixJQUFJLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDbEMsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQzthQUNuQztpQkFBTTtnQkFDSCxLQUFLLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQzthQUNuRztZQUNELElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNuQixJQUNJLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7b0JBQy9CLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7b0JBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztvQkFDM0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7b0JBQzlCLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFDdEI7b0JBQ0UsT0FBTyxLQUFLLENBQUM7aUJBQ2hCO3FCQUFNO29CQUNILE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztvQkFDakcsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDMUQsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRTt3QkFDM0IsT0FBTyxLQUFLLENBQUM7cUJBQ2hCO29CQUNELElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUU7d0JBQzVCLE9BQU8sU0FBUyxDQUFDO3FCQUNwQjtvQkFDRCxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsUUFBUSxDQUFDO29CQUNqQyxPQUFPLFFBQVEsQ0FBQztpQkFDbkI7YUFDSjtpQkFBTTtnQkFDSCxPQUFPLEtBQUssQ0FBQzthQUNoQjtRQUNMLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFTyxZQUFZO1FBQ2hCLE9BQU8sQ0FBQyxNQUFjLEVBQUUsR0FBZ0IsRUFBRSxLQUFjLEVBQUUsUUFBYSxFQUFFLEVBQUU7WUFDdkUsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUN4QyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFDeEUsR0FBRyxDQUNOLENBQUM7WUFDRixJQUFJLElBQUksSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDL0IsT0FBTyxLQUFLLENBQUM7aUJBQ2hCO3FCQUFNO29CQUNILE9BQU8sSUFBSSxDQUFDO2lCQUNmO2FBQ0o7WUFDRCxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUM1QixPQUFPLEtBQUssQ0FBQzthQUNoQjtZQUNELElBQUksa0JBQWtCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNsQyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQzthQUMxQztpQkFBTTtnQkFDSCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUMxRCxJQUFJLE9BQU8sRUFBRTtvQkFDVCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO3dCQUN0QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUNsQztpQkFDSjtnQkFDRCxPQUFPLE9BQU8sQ0FBQzthQUNsQjtRQUNMLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFTyxvQkFBb0I7UUFDeEIsT0FBTyxDQUFDLE1BQWMsRUFBRSxDQUFjLEVBQUUsVUFBOEIsRUFBRSxFQUFFO1lBQ3RFLElBQUksa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNoQyxPQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQzthQUN4RDtpQkFBTTtnQkFDSCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQzlELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksT0FBTyxFQUFFO29CQUNqQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNoQztnQkFDRCxPQUFPLE9BQU8sQ0FBQzthQUNsQjtRQUNMLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFTyxvQkFBb0I7UUFDeEIsT0FBTyxDQUFDLE1BQWMsRUFBRSxDQUFjLEVBQUUsRUFBRTtZQUN0QyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3ZCLE9BQVEsTUFBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ3RELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ25DO2FBQ0o7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDLENBQUM7SUFDTixDQUFDO0lBRU8sU0FBUztRQUNiLE9BQU8sQ0FBQyxPQUFlLEVBQUUsR0FBZ0IsRUFBRSxFQUFFO1lBQ3pDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELE1BQU07UUFDRixNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sWUFBWSxHQUFHO1lBQ2pCLEdBQUcsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3hCLEdBQUcsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3hCLGNBQWMsRUFBRSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDM0MsY0FBYyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtTQUM5QyxDQUFDO1FBQ0YsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsVUFBVSxrQ0FDM0IsWUFBWSxLQUNmLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQ3ZCLENBQUM7UUFDSCxNQUFNLFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDckQsS0FBSyxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFDdEIsS0FBSyxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7UUFDeEIsS0FBSyxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7UUFDNUIsS0FBSyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQzFELEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUNoRSxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIGhhc093blByb3AsXG4gICAgY3JlYXRlRmFrZU9iamVjdCxcbiAgICBiaW5kLFxuICAgIGlzSW52YWxpZFNldEFjY2Vzc29yLFxuICAgIGlzTm9uV3JpdGVhYmxlVmFsdWUsXG4gICAgaXNJbnZhbGlkR2V0QWNjZXNzb3Jcbn0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgUExBTkVUX1NBTkRCT1hfV0lORE9XX1dISVRFTElTVCwgU0FOREJPWF9JTlNUQU5DRSwgV0lORE9XX0JJTkRfRk4gfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiB9IGZyb20gJy4uLy4uLy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgUHJveHlTYW5kYm94SW5zdGFuY2UgfSBmcm9tICcuLi90eXBlcyc7XG5cbmNvbnN0IGVzR2xvYmFsRnVuY3Rpb25zOiBQcm9wZXJ0eUtleVtdID0gKFxuICAgICdldmFsLGlzRmluaXRlLGlzTmFOLHBhcnNlRmxvYXQscGFyc2VJbnQsJyArXG4gICAgLy8gVVJMIGhhbmRsaW5nIGZ1bmN0aW9uc1xuICAgICdkZWNvZGVVUkksZGVjb2RlVVJJQ29tcG9uZW50LGVuY29kZVVSSSxlbmNvZGVVUklDb21wb25lbnQsJyArXG4gICAgLy8gQ29uc3RydWN0b3IgcHJvcGVydGllcyBvZiB0aGUgZ2xvYmFsIG9iamVjdFxuICAgICdBcnJheSxBcnJheUJ1ZmZlcixCaWdJbnQsQmlnSW50NjRBcnJheSxCaWdVaW50NjRBcnJheSxCb29sZWFuLERhdGFWaWV3LERhdGUsRXJyb3IsRXZhbEVycm9yLCcgK1xuICAgICdGaW5hbGl6YXRpb25SZWdpc3RyeSxGbG9hdDMyQXJyYXksRmxvYXQ2NEFycmF5LEZ1bmN0aW9uLEludDhBcnJheSxJbnQxNkFycmF5LEludDMyQXJyYXksTWFwLE51bWJlciwnICtcbiAgICAnT2JqZWN0LFByb21pc2UsUHJveHksUmFuZ2VFcnJvcixSZWZlcmVuY2VFcnJvcixSZWdFeHAsU2V0LFNoYXJlZEFycmF5QnVmZmVyLFN0cmluZyxTeW1ib2wsU3ludGF4RXJyb3IsJyArXG4gICAgJ1R5cGVFcnJvcixVaW50OEFycmF5LFVpbnQ4Q2xhbXBlZEFycmF5LFVpbnQxNkFycmF5LFVpbnQzMkFycmF5LFVSSUVycm9yLFdlYWtNYXAsV2Vha1JlZixXZWFrU2V0LCcgK1xuICAgIC8vIE90aGVyIFByb3BlcnRpZXMgb2YgdGhlIEdsb2JhbCBPYmplY3RcbiAgICAnQXRvbWljcyxKU09OLE1hdGgsUmVmbGVjdCdcbikuc3BsaXQoJywnKTtcblxuY29uc3Qgd2hpdGVsaXN0VmFyaWFibGVzID0gUExBTkVUX1NBTkRCT1hfV0lORE9XX1dISVRFTElTVCB8fCBbXTtcblxuZnVuY3Rpb24gaXNDb25zdHJ1Y3RvcihmbjogKCkgPT4gdm9pZCB8IEZ1bmN0aW9uQ29uc3RydWN0b3IpIHtcbiAgICBjb25zdCBmcCA9IGZuLnByb3RvdHlwZTtcbiAgICBjb25zdCBoYXNDb25zdHJ1Y3RvciA9IGZwICYmIGZwLmNvbnN0cnVjdG9yID09PSBmbiAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhmcCkubGVuZ3RoID4gMTtcbiAgICBjb25zdCBmdW5jdGlvblN0ciA9ICFoYXNDb25zdHJ1Y3RvciAmJiBmbi50b1N0cmluZygpO1xuICAgIHJldHVybiBoYXNDb25zdHJ1Y3RvciB8fCAvXmZ1bmN0aW9uXFxzK1tBLVpdLy50ZXN0KGZ1bmN0aW9uU3RyIGFzIHN0cmluZykgfHwgL15jbGFzc1xcYi8udGVzdChmdW5jdGlvblN0ciBhcyBzdHJpbmcpO1xufVxuXG5jb25zdCB1bnNjb3BhYmxlcyA9IHtcbiAgICB1bmRlZmluZWQ6IHRydWUsXG4gICAgQXJyYXk6IHRydWUsXG4gICAgT2JqZWN0OiB0cnVlLFxuICAgIFN0cmluZzogdHJ1ZSxcbiAgICBCb29sZWFuOiB0cnVlLFxuICAgIE1hdGg6IHRydWUsXG4gICAgTnVtYmVyOiB0cnVlLFxuICAgIFN5bWJvbDogdHJ1ZSxcbiAgICBwYXJzZUZsb2F0OiB0cnVlLFxuICAgIEZsb2F0MzJBcnJheTogdHJ1ZVxufTtcblxuZXhwb3J0IGNsYXNzIFByb3h5V2luZG93IHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNhbmRib3g6IFByb3h5U2FuZGJveEluc3RhbmNlKSB7fVxuXG4gICAgcHJpdmF0ZSBkZWZpbmVkVmFyaWFibGVzID0gbmV3IFNldCgpO1xuXG4gICAgcHJpdmF0ZSBjcmVhdGVHZXR0ZXIoKSB7XG4gICAgICAgIHJldHVybiAodGFyZ2V0OiBXaW5kb3csIGtleTogUHJvcGVydHlLZXksIHJlY2VpdmVyOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChrZXkgPT09IFN5bWJvbC51bnNjb3BhYmxlcykge1xuICAgICAgICAgICAgICAgIHJldHVybiB1bnNjb3BhYmxlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChrZXkgPT09IFNBTkRCT1hfSU5TVEFOQ0UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zYW5kYm94O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgIGlmICh3aGl0ZWxpc3RWYXJpYWJsZXMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldCh3aW5kb3csIGtleSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gaGFzT3duUHJvcCh0YXJnZXQsIGtleSkgPyBSZWZsZWN0LmdldCh0YXJnZXQsIGtleSwgcmVjZWl2ZXIpIDogUmVmbGVjdC5nZXQod2luZG93LCBrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBlc0dsb2JhbEZ1bmN0aW9ucy5pbmNsdWRlcyhrZXkpIHx8XG4gICAgICAgICAgICAgICAgICAgIHdoaXRlbGlzdFZhcmlhYmxlcy5pbmNsdWRlcyhrZXkpIHx8XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2FuZGJveC5yZXdyaXRlVmFyaWFibGVzLmluY2x1ZGVzKGtleSkgfHxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZpbmVkVmFyaWFibGVzLmhhcyhrZXkpIHx8XG4gICAgICAgICAgICAgICAgICAgIGlzQ29uc3RydWN0b3IodmFsdWUpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGhhc093blByb3AodmFsdWUsIFdJTkRPV19CSU5EX0ZOKSA/IHZhbHVlW1dJTkRPV19CSU5EX0ZOXSA6IGJpbmQodmFsdWUsIHdpbmRvdyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTm9uV3JpdGVhYmxlVmFsdWUoZGVzYykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbnZhbGlkR2V0QWNjZXNzb3IoZGVzYykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWVbV0lORE9XX0JJTkRfRk5dID0gbmV3VmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXdWYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVNldHRlcigpIHtcbiAgICAgICAgcmV0dXJuICh0YXJnZXQ6IFdpbmRvdywga2V5OiBQcm9wZXJ0eUtleSwgdmFsdWU6IHVua25vd24sIHJlY2VpdmVyOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFxuICAgICAgICAgICAgICAgIHdoaXRlbGlzdFZhcmlhYmxlcy5pbmNsdWRlcyhrZXkpID8gd2luZG93IDogcmVjZWl2ZXIgPyByZWNlaXZlciA6IHRhcmdldCxcbiAgICAgICAgICAgICAgICBrZXlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoZGVzYyAmJiBpc05vbldyaXRlYWJsZVZhbHVlKGRlc2MpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFPYmplY3QuaXModmFsdWUsIGRlc2MudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNJbnZhbGlkU2V0QWNjZXNzb3IoZGVzYykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAod2hpdGVsaXN0VmFyaWFibGVzLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5zZXQod2luZG93LCBrZXksIHZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3VjY2VzcyA9IFJlZmxlY3Quc2V0KHRhcmdldCwga2V5LCB2YWx1ZSwgcmVjZWl2ZXIpO1xuICAgICAgICAgICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNhbmRib3gucnVubmluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZpbmVkVmFyaWFibGVzLmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlRGVmaW5lUHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiAodGFyZ2V0OiBXaW5kb3csIHA6IFByb3BlcnR5S2V5LCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpID0+IHtcbiAgICAgICAgICAgIGlmICh3aGl0ZWxpc3RWYXJpYWJsZXMuaW5jbHVkZXMocCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSh3aW5kb3csIHAsIGRlc2NyaXB0b3IpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWNjZXNzID0gUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHAsIGRlc2NyaXB0b3IpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNhbmRib3gucnVubmluZyAmJiBzdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5lZFZhcmlhYmxlcy5hZGQocCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlRGVsZXRlUHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiAodGFyZ2V0OiBXaW5kb3csIHA6IFByb3BlcnR5S2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAoaGFzT3duUHJvcCh0YXJnZXQsIHApKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlICh0YXJnZXQgYXMgYW55KVtwXTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zYW5kYm94LnJ1bm5pbmcgJiYgdGhpcy5kZWZpbmVkVmFyaWFibGVzLmhhcyhwKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmluZWRWYXJpYWJsZXMuZGVsZXRlKHApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlSGFzKCkge1xuICAgICAgICByZXR1cm4gKF90YXJnZXQ6IFdpbmRvdywga2V5OiBQcm9wZXJ0eUtleSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICF3aGl0ZWxpc3RWYXJpYWJsZXMuaW5jbHVkZXMoa2V5KTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjcmVhdGUoKSB7XG4gICAgICAgIGNvbnN0IGZha2VXaW5kb3cgPSBjcmVhdGVGYWtlT2JqZWN0KHdpbmRvdywgdGhpcy5zYW5kYm94LnJld3JpdGVWYXJpYWJsZXMpO1xuICAgICAgICBjb25zdCBiYXNlSGFuZGxlcnMgPSB7XG4gICAgICAgICAgICBnZXQ6IHRoaXMuY3JlYXRlR2V0dGVyKCksXG4gICAgICAgICAgICBzZXQ6IHRoaXMuY3JlYXRlU2V0dGVyKCksXG4gICAgICAgICAgICBkZWZpbmVQcm9wZXJ0eTogdGhpcy5jcmVhdGVEZWZpbmVQcm9wZXJ0eSgpLFxuICAgICAgICAgICAgZGVsZXRlUHJvcGVydHk6IHRoaXMuY3JlYXRlRGVsZXRlUHJvcGVydHkoKVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBwcm94eSA9IG5ldyBQcm94eShmYWtlV2luZG93LCB7XG4gICAgICAgICAgICAuLi5iYXNlSGFuZGxlcnMsXG4gICAgICAgICAgICBoYXM6IHRoaXMuY3JlYXRlSGFzKClcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHN1YlByb3h5ID0gbmV3IFByb3h5KGZha2VXaW5kb3csIGJhc2VIYW5kbGVycyk7XG4gICAgICAgIHByb3h5LnNlbGYgPSBzdWJQcm94eTtcbiAgICAgICAgcHJveHkud2luZG93ID0gc3ViUHJveHk7XG4gICAgICAgIHByb3h5Lmdsb2JhbFRoaXMgPSBzdWJQcm94eTtcbiAgICAgICAgcHJveHkudG9wID0gd2luZG93LnRvcCA9PT0gd2luZG93ID8gc3ViUHJveHkgOiB3aW5kb3cudG9wO1xuICAgICAgICBwcm94eS5wYXJlbnQgPSB3aW5kb3cucGFyZW50ID09PSB3aW5kb3cgPyBzdWJQcm94eSA6IHdpbmRvdy50b3A7XG4gICAgICAgIHJldHVybiBwcm94eTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,49 @@
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 === null || handler === void 0 ? void 0 : handler.init();
45
+ }
46
+ });
47
+ }
48
+ }
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHktc2FuZGJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldC9zcmMvc2FuZGJveC9wcm94eS9wcm94eS1zYW5kYm94LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHcEQsT0FBTyxFQUFFLE9BQU8sRUFBa0IsTUFBTSxZQUFZLENBQUM7QUFFckQsTUFBTSxPQUFPLFlBQWEsU0FBUSxPQUFPO0lBU3JDLFlBQW1CLEdBQVcsRUFBUyxPQUF1QjtRQUMxRCxLQUFLLEVBQUUsQ0FBQztRQURPLFFBQUcsR0FBSCxHQUFHLENBQVE7UUFBUyxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQVJ2RCxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBTWYsa0JBQWEsR0FBMEIsRUFBRSxDQUFDO1FBSTlDLElBQUksQ0FBQyxhQUFhLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxLQUFLO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ3hELE1BQU0sV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDakMsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO2dCQUNqQixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDckI7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyx3QkFBd0I7UUFDNUIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNwRCxPQUFPLENBQUMsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFTyxpQkFBaUI7UUFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDakMsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO2dCQUNqQixLQUFLLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUU7b0JBQy9CLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTt3QkFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUMzQztpQkFDSjthQUNKO1lBQ0QsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO2dCQUNkLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxJQUFJLEVBQUUsQ0FBQzthQUNuQjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJveHlXaW5kb3cgfSBmcm9tICcuL3Byb3hpZXMvd2luZG93JztcbmltcG9ydCB7IGdldFNhbmRib3hQYXRjaEhhbmRsZXJzIH0gZnJvbSAnLi9wYXRjaGVzJztcbmltcG9ydCB7IFNhbmRib3hQYXRjaEhhbmRsZXIgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IEdsb2JhbCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IFNhbmRib3gsIFNhbmRib3hPcHRpb25zIH0gZnJvbSAnLi4vc2FuZGJveCc7XG5cbmV4cG9ydCBjbGFzcyBQcm94eVNhbmRib3ggZXh0ZW5kcyBTYW5kYm94IHtcbiAgICBwdWJsaWMgcnVubmluZyA9IGZhbHNlO1xuXG4gICAgcHVibGljIGdsb2JhbCE6IEdsb2JhbDtcblxuICAgIHB1YmxpYyByZXdyaXRlVmFyaWFibGVzITogUHJvcGVydHlLZXlbXTtcblxuICAgIHByaXZhdGUgcGF0Y2hIYW5kbGVyczogU2FuZGJveFBhdGNoSGFuZGxlcltdID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgYXBwOiBzdHJpbmcsIHB1YmxpYyBvcHRpb25zOiBTYW5kYm94T3B0aW9ucykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnBhdGNoSGFuZGxlcnMgPSBnZXRTYW5kYm94UGF0Y2hIYW5kbGVycyh0aGlzKTtcbiAgICAgICAgdGhpcy5zdGFydCgpO1xuICAgIH1cblxuICAgIHN0YXJ0KCkge1xuICAgICAgICB0aGlzLnJ1bm5pbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLnJld3JpdGVWYXJpYWJsZXMgPSB0aGlzLmdldFBhdGNoUmV3cml0ZVZhcmlhYmxlcygpO1xuICAgICAgICBjb25zdCBwcm94eVdpbmRvdyA9IG5ldyBQcm94eVdpbmRvdyh0aGlzKTtcbiAgICAgICAgdGhpcy5nbG9iYWwgPSBwcm94eVdpbmRvdy5jcmVhdGUoKTtcbiAgICAgICAgdGhpcy5leGVjUGF0Y2hIYW5kbGVycygpO1xuICAgIH1cblxuICAgIGRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMucnVubmluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnBhdGNoSGFuZGxlcnMuZm9yRWFjaChoYW5kbGVyID0+IHtcbiAgICAgICAgICAgIGlmIChoYW5kbGVyLmRlc3Ryb3kpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVyLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQYXRjaFJld3JpdGVWYXJpYWJsZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhdGNoSGFuZGxlcnMucmVkdWNlPHN0cmluZ1tdPigocHJlLCBjdXIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBbLi4ucHJlLCAuLi4oY3VyLnJld3JpdGUgPyBPYmplY3Qua2V5cyhjdXIucmV3cml0ZSkgOiBbXSldO1xuICAgICAgICB9LCBbXSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleGVjUGF0Y2hIYW5kbGVycygpIHtcbiAgICAgICAgdGhpcy5wYXRjaEhhbmRsZXJzLmZvckVhY2goaGFuZGxlciA9PiB7XG4gICAgICAgICAgICBpZiAoaGFuZGxlci5yZXdyaXRlKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaGFuZGxlci5yZXdyaXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoYW5kbGVyLnJld3JpdGVba2V5XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nbG9iYWxba2V5XSA9IGhhbmRsZXIucmV3cml0ZVtrZXldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGhhbmRsZXIuaW5pdCkge1xuICAgICAgICAgICAgICAgIGhhbmRsZXI/LmluaXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFuZXQvc3JjL3NhbmRib3gvcHJveHkvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdsb2JhbCB9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gU2FuZGJveEluc3RhbmNlICDkuLvopoHmmK/kuLrkuobop6PlhrPlvqrnjq/kvp3otZZcbmV4cG9ydCBpbnRlcmZhY2UgUHJveHlTYW5kYm94SW5zdGFuY2Uge1xuICAgIGFwcDogc3RyaW5nO1xuXG4gICAgcnVubmluZzogYm9vbGVhbjtcblxuICAgIGdsb2JhbDogR2xvYmFsO1xuXG4gICAgcmV3cml0ZVZhcmlhYmxlczogUHJvcGVydHlLZXlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTYW5kYm94UGF0Y2hIYW5kbGVyIHtcbiAgICByZXdyaXRlPzogUmVjb3JkPFByb3BlcnR5S2V5LCBhbnk+O1xuICAgIGluaXQ/OiAoKSA9PiB2b2lkO1xuICAgIGRlc3Ryb3k/OiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBTYW5kYm94UGF0Y2ggPSAoc2FuZGJveD86IFByb3h5U2FuZGJveEluc3RhbmNlKSA9PiBTYW5kYm94UGF0Y2hIYW5kbGVyO1xuIl19
@@ -0,0 +1,7 @@
1
+ import { execScript } from './exec';
2
+ export class Sandbox {
3
+ execScript(code, url = '') {
4
+ execScript(code, url, this.global, !!this.options.strictGlobal);
5
+ }
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FuZGJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldC9zcmMvc2FuZGJveC9zYW5kYm94LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFPcEMsTUFBTSxPQUFnQixPQUFPO0lBU3pCLFVBQVUsQ0FBQyxJQUFZLEVBQUUsR0FBRyxHQUFHLEVBQUU7UUFDN0IsVUFBVSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNwRSxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjU2NyaXB0IH0gZnJvbSAnLi9leGVjJztcbmltcG9ydCB7IEdsb2JhbCB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNhbmRib3hPcHRpb25zIHtcbiAgICBzdHJpY3RHbG9iYWw/OiBib29sZWFuO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2FuZGJveCB7XG4gICAgb3B0aW9ucyE6IFNhbmRib3hPcHRpb25zO1xuXG4gICAgZ2xvYmFsITogR2xvYmFsO1xuXG4gICAgYWJzdHJhY3Qgc3RhcnQoKTogdm9pZDtcblxuICAgIGFic3RyYWN0IGRlc3Ryb3koKTogdm9pZDtcblxuICAgIGV4ZWNTY3JpcHQoY29kZTogc3RyaW5nLCB1cmwgPSAnJykge1xuICAgICAgICBleGVjU2NyaXB0KGNvZGUsIHVybCwgdGhpcy5nbG9iYWwsICEhdGhpcy5vcHRpb25zLnN0cmljdEdsb2JhbCk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,12 @@
1
+ import { Sandbox } from '../sandbox';
2
+ export class SnapshotSandbox extends Sandbox {
3
+ constructor(app, options) {
4
+ super();
5
+ this.app = app;
6
+ this.options = options;
7
+ this.start();
8
+ }
9
+ start() { }
10
+ destroy() { }
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcHNob3Qtc2FuZGJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldC9zcmMvc2FuZGJveC9zbmFwc2hvdC9zbmFwc2hvdC1zYW5kYm94LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQWtCLE1BQU0sWUFBWSxDQUFDO0FBRXJELE1BQU0sT0FBTyxlQUFnQixTQUFRLE9BQU87SUFDeEMsWUFBbUIsR0FBVyxFQUFTLE9BQXVCO1FBQzFELEtBQUssRUFBRSxDQUFDO1FBRE8sUUFBRyxHQUFILEdBQUcsQ0FBUTtRQUFTLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBRTFELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsS0FBSyxLQUFJLENBQUM7SUFFVixPQUFPLEtBQUksQ0FBQztDQUNmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2FuZGJveCwgU2FuZGJveE9wdGlvbnMgfSBmcm9tICcuLi9zYW5kYm94JztcblxuZXhwb3J0IGNsYXNzIFNuYXBzaG90U2FuZGJveCBleHRlbmRzIFNhbmRib3gge1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBhcHA6IHN0cmluZywgcHVibGljIG9wdGlvbnM6IFNhbmRib3hPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICB9XG5cbiAgICBzdGFydCgpIHt9XG5cbiAgICBkZXN0cm95KCkge31cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFuZXQvc3JjL3NhbmRib3gvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEdsb2JhbCA9IFJlY29yZDxQcm9wZXJ0eUtleSwgYW55PjtcbiJdfQ==