UNPKG

te-one-xlog

Version:

the te-one's xlog

49 lines (47 loc) 1.06 kB
import * as os from 'os'; const KEY_REG: RegExp = /[^.,\s\[\]\'\"]+/g; /** * obj 要操作的对象 * path 属性获取规则 * 1、"a.b[0].c[d]" * 2、"[a][b][c]" * 3、"[a,b,c]" * 4、[a,b,c] * deflt 默认值 */ export function safeGet(obj: object, path: string, deflt?) { if (null == obj) return deflt; let keys = JSON .stringify(path) .match(KEY_REG); if (!keys) return deflt; let ret; for (let i = 0, j = keys.length; i < j; i++) { ret = obj[keys[i]]; if (null == ret) return deflt; obj = ret; } return ret; } let serverIp = null const interfaces: any = os.networkInterfaces(); Object .keys(interfaces) .forEach(function (ifname) { interfaces[ifname] .forEach(function (iface) { if ('IPv4' !== iface.family || iface.internal !== false || serverIp) { return; } serverIp = iface.address; }); }); export { serverIp }; export function asyncify(fn: Function): Function { return async function (...params) { return fn.apply(this, params) } }