UNPKG

queen

Version:

A platform for running scripts on many browsers

59 lines (49 loc) 1.35 kB
var noop = exports.noop = function(){}; var each = exports.each = function(obj, func, context){ for(var key in obj){ if(obj.hasOwnProperty(key)){ func.call(context, obj[key], key, obj); } } }; var filter = exports.filter = function(obj, func, context){ var results = []; each(obj, function(value, key){ if(func.call(context, value, key, obj)) results.push(value); }); return results; }; var values = exports.values = function(obj){ var results = []; each(obj, function(value){ results.push(value); }); return results; }; var isArray = exports.isArray = function(obj){ return toString.call(obj) === '[object Array]'; }; var toString = Object.prototype.toString; // From underscore: https://github.com/documentcloud/underscore var once = exports.once = function(func){ var ran = false, result; return function(){ if(ran) return result; ran = true; result = func.apply(this, arguments); func = null; return result; }; }; var getExternalIpAddress = exports.getExternalIpAddress = function(){ var interfaces = require('os').networkInterfaces(); var addresses = []; each(interfaces, function(iface, name){ addresses = addresses.concat( filter(iface, function(node){ return node.family === 'IPv4' && node.internal === false; }) ); }); if(addresses.length > 0){ return addresses[0].address; } };