/
NoConflict.js
34 lines (31 loc) · 942 Bytes
/
NoConflict.js
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
const {
globalVars,
nativeExstensions,
nativeExstensionsNames,
noConflictMode
} = require("./AddConflict");
const noConflict = function() {
if (noConflictMode.value)
throw new Error("You can call noConflict only once!");
if (typeof window !== "undefined") {
// only browser - remove global vars
for (let t of globalVars) window[t.name] = t.value;
globalVars.length = 0;
}
// NODE & browser - remove native extensions
for (let t of nativeExstensions) {
if (t.descriptor === undefined) {
delete t.type.prototype[t.methodName];
} else {
Object.defineProperty(t.type.prototype, t.methodName, t.descriptor);
}
}
nativeExstensions.length = 0;
nativeExstensionsNames.clear();
noConflictMode.value = true;
let linqObjects = require("../linqifyObjects");
let lq = linqObjects.Enumerable.From;
for (let [key, value] of Object.entries(linqObjects)) lq[key] = value;
return lq;
};
module.exports = { noConflict };