UNPKG

1.87 kBJavaScriptView Raw
1const dntGlobals = {};
2export const dntGlobalThis = createMergeProxy(globalThis, dntGlobals);
3// deno-lint-ignore ban-types
4function createMergeProxy(baseObj, extObj) {
5 return new Proxy(baseObj, {
6 get(_target, prop, _receiver) {
7 if (prop in extObj) {
8 return extObj[prop];
9 }
10 else {
11 return baseObj[prop];
12 }
13 },
14 set(_target, prop, value) {
15 if (prop in extObj) {
16 delete extObj[prop];
17 }
18 baseObj[prop] = value;
19 return true;
20 },
21 deleteProperty(_target, prop) {
22 let success = false;
23 if (prop in extObj) {
24 delete extObj[prop];
25 success = true;
26 }
27 if (prop in baseObj) {
28 delete baseObj[prop];
29 success = true;
30 }
31 return success;
32 },
33 ownKeys(_target) {
34 const baseKeys = Reflect.ownKeys(baseObj);
35 const extKeys = Reflect.ownKeys(extObj);
36 const extKeysSet = new Set(extKeys);
37 return [...baseKeys.filter((k) => !extKeysSet.has(k)), ...extKeys];
38 },
39 defineProperty(_target, prop, desc) {
40 if (prop in extObj) {
41 delete extObj[prop];
42 }
43 Reflect.defineProperty(baseObj, prop, desc);
44 return true;
45 },
46 getOwnPropertyDescriptor(_target, prop) {
47 if (prop in extObj) {
48 return Reflect.getOwnPropertyDescriptor(extObj, prop);
49 }
50 else {
51 return Reflect.getOwnPropertyDescriptor(baseObj, prop);
52 }
53 },
54 has(_target, prop) {
55 return prop in extObj || prop in baseObj;
56 },
57 });
58}
59//# sourceMappingURL=_dnt.shims.js.map
\No newline at end of file