-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy path4.api.js
More file actions
44 lines (38 loc) · 968 Bytes
/
4.api.js
File metadata and controls
44 lines (38 loc) · 968 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import {
scriptVersion,
window,
} from './1.variables.js';
const underscript = {
version: scriptVersion,
};
const modules = {};
export function register(name, val, module = false) {
// if (underscript.ready) throw new Error(`Registering module (${name}) too late!`);
if (underscript[name]) {
if (!module) throw new Error(`${name} already exists`);
console.error(`Module [${name}] skipped, variable exists`);
return;
}
underscript[name] = val;
}
export const mod = new Proxy(modules, {
get(o, key, r) {
if (!(key in o)) {
const ob = {};
Reflect.set(o, key, ob, r);
register(key, ob, true);
}
return Reflect.get(o, key, r);
},
set(o, key, val, r) {
if (key in o) return false;
register(key, val, true);
return Reflect.set(o, key, val, r);
},
});
window.underscript = new Proxy(underscript, {
get(...args) {
return new Proxy(Reflect.get(...args), { set() {} });
},
set() {},
});