Welcome to mirror list, hosted at ThFree Co, Russian Federation.

moduleB.js « testLib - github.com/twbs/rewire.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 62b2d3f7ad5278c8aa12c450919fd17a27a919b4 (plain)
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
"use strict"; // run code in ES5 strict mode

var someOtherModule = require("./someOtherModule.js"),
    myNumber = 0,   // copy by value
    myObj = {},     // copy by reference
    env = "bla",
    fs;

// We need getters and setters for private vars to check if our injected setters and getters actual work
function setMyNumber(newNumber) {
    myNumber = newNumber;
}

function getMyNumber() {
    return myNumber;
}

function setMyObj(newObj) {
    myObj = newObj;
}

function getMyObj() {
    return myObj;
}

function readFileSync() {
    fs.readFileSync("bla.txt", "utf8");
}

function checkSomeGlobals() {
    var isLowerIE,
        typeOfGlobalFunc;

    if (typeof navigator !== "undefined") {
        isLowerIE = /MSIE [6-8]\.[0-9]/g.test(navigator.userAgent);
    }
    if (isLowerIE) {
        typeOfGlobalFunc = "object";
    } else {
        typeOfGlobalFunc = "function";
    }

    if (typeof global !== "object") {
        throw new ReferenceError("global is not an object");
    }
    if (typeof console !== "object") {
        throw new ReferenceError("console is not an object");
    }
    if (typeof require !== "function") {
        throw new ReferenceError("require is not a function");
    }
    if (typeof module !== "object") {
        throw new ReferenceError("module is not an object");
    }
    if (typeof exports !== "object") {
        throw new ReferenceError("exports is not an object");
    }
    if (module.exports === exports) {
        throw new Error("module.exports === exports returns true");
    }
    if (typeof __dirname !== "string") {
        throw new ReferenceError("__dirname is not a string");
    }
    if (typeof __filename !== "string") {
        throw new ReferenceError("__filename is not a string");
    }
    if (typeof setTimeout !== typeOfGlobalFunc) {
        throw new ReferenceError("setTimeout is not a function");
    }
    if (typeof clearTimeout !== typeOfGlobalFunc) {
        throw new ReferenceError("clearTimeout is not a function");
    }
    if (typeof setInterval !== typeOfGlobalFunc) {
        throw new ReferenceError("setInterval is not a function");
    }
    if (typeof clearInterval !== typeOfGlobalFunc) {
        throw new ReferenceError("clearInterval is not a function");
    }
    if (typeof Error !== "function") {
        throw new ReferenceError("Error is not a function");
    }
    if (typeof parseFloat !== "function") {
        throw new ReferenceError("parseFloat is not a function");
    }
    if (typeof parseInt !== "function") {
        throw new ReferenceError("parseInt is not a function");
    }
    if (typeof window === "undefined") {
        if (typeof process !== "object") {
            throw new ReferenceError("process is not an object");
        }
        if (typeof Buffer !== "function") {
            throw new ReferenceError("Buffer is not a function");
        }
    } else {
        if (typeof encodeURIComponent !== "function") {
            throw new ReferenceError("encodeURIComponent is not a function");
        }
        if (typeof decodeURIComponent !== "function") {
            throw new ReferenceError("decodeURIComponent is not a function");
        }
        if (typeof document !== "object") {
            throw new ReferenceError("document is not an object");
        }
    }
}

function getConsole() {
    return console;
}

function getFilename() {
    return __filename;
}

function getBuffer() {
    return Buffer;
}

function getDocument() {
    return document;
}

// different styles of exports in moduleA.js and moduleB.js
module.exports = {
    setMyNumber: setMyNumber,
    getMyNumber: getMyNumber,
    setMyObj: setMyObj,
    getMyObj: getMyObj,
    readFileSync: readFileSync,
    checkSomeGlobals: checkSomeGlobals,
    getConsole: getConsole,
    getFilename: getFilename,
    getBuffer: getBuffer,
    getDocument: getDocument,
    someOtherModule: someOtherModule
};