You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nodebb/test/mocks/newXhr.js

48 lines
1.2 KiB
JavaScript

// see https://gist.github.com/jfromaniello/4087861#gistcomment-1447029
// XMLHttpRequest to override.
var npm2Path = '../../node_modules/socket.io-client/node_modules/engine.io-client/node_modules/xmlhttprequest-ssl';
var npm3Path = '../../node_modules/xmlhttprequest-ssl';
var filePath;
var winston = require('winston');
// Make initial call to require so module is cached.
try {
require(npm2Path);
filePath = require.resolve(npm2Path);
} catch (err) {
if (err) {
winston.info('Couldn\'t find ' + npm2Path);
}
try {
require(npm3Path);
filePath = require.resolve(npm3Path);
} catch (err) {
if (err) {
winston.info('Couldn\'t find ' + npm3Path);
}
}
}
winston.info('xmlhttprequest-ssl path: ' + filePath);
// Get cached version.
var cachedXhr = require.cache[filePath];
var stdXhr = cachedXhr.exports;
// Callbacks exposes an object that callback functions can be added to.
var callbacks = {};
var newXhr = function () {
stdXhr.apply(this, arguments);
for (var method in callbacks) {
if (typeof callbacks[method] == "function") {
callbacks[method].apply(this, arguments);
}
}
};
newXhr.XMLHttpRequest = newXhr;
cachedXhr.exports = newXhr;
module.exports = newXhr;
module.exports.callbacks = callbacks;