snowflakify
Version:
The most complete Snowflake ID generator in TypeScript
56 lines (55 loc) • 1.54 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
exports.getMacAddress =
exports.getIPv4Address =
exports.isEmpty =
exports.isPowerOfTwo =
void 0;
const os_1 = require('os');
/**
* @internal
*/
const isPowerOfTwo = (num) => num > 0 && (num & (num - 1)) === 0;
exports.isPowerOfTwo = isPowerOfTwo;
/**
* @internal
*/
const isEmpty = (obj) =>
[Object, Array].includes((obj || {}).constructor) &&
!Object.entries(obj || {}).length;
exports.isEmpty = isEmpty;
/**
* @internal
*/
const getIPv4Address = (callback) => {
let err = null;
const ip =
Object.values((0, os_1.networkInterfaces)())
.flat()
.find((addr) => ['IPv4', 4].includes(addr?.family ?? '') && !addr?.internal)
?.address ?? '';
// (!/^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)(\.(?!$)|$)){4}$/.test(ip))
if (!ip)
err = new Error('[IPV4_ADDR_NOT_FOUND]: Could not find a valid IPv4 address.');
return callback(err, ip);
};
exports.getIPv4Address = getIPv4Address;
/**
* @internal
*/
const getMacAddress = (callback) => {
let err = null;
const mac =
Object.values((0, os_1.networkInterfaces)())
.flat()
.find(
(addr) =>
['IPv6', 'IPv4', 6, 4].includes(addr?.family ?? '') && !addr?.internal,
)?.mac ?? '';
// (!/([0-9a-fA-F]{2}[:]){5}([0-9a-fA-F]{2})/.test(mac))
if (!mac)
err = new Error('[MAC_ADDR_NOT_FOUND]: Could not find a valid MAC address.');
return callback(err, mac);
};
exports.getMacAddress = getMacAddress;
//# sourceMappingURL=Util.js.map