te-one-xlog
Version:
the te-one's xlog
49 lines (47 loc) • 1.06 kB
text/typescript
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)
}
}