@vectorx/cloud-toolkit
Version:
VectorX Cloud Toolkit
86 lines (85 loc) • 3.35 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getDeviceInfo = getDeviceInfo;
exports.deviceUA = deviceUA;
exports.machineId = machineId;
const child_process_1 = require("child_process");
const crypto_1 = require("crypto");
const os_1 = __importDefault(require("os"));
const guid = {
darwin: "ioreg -rd1 -c IOPlatformExpertDevice",
win32: "%windir%\\System32\\REG.exe QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid",
linux: "( cat /var/lib/dbus/machine-id /etc/machine-id 2> /dev/null || hostname ) | head -n 1 || :",
};
function hash(guid) {
return (0, crypto_1.createHash)("sha256").update(guid).digest("hex");
}
function expose(result) {
switch (process.platform) {
case "darwin":
return result
.split("IOPlatformUUID")[1]
.split("\n")[0]
.replace(/\=|\s+|\"/gi, "")
.toLowerCase();
case "win32":
return result
.toString()
.split("REG_SZ")[1]
.replace(/\r+|\n+|\s+/gi, "")
.toLowerCase();
case "linux":
return result
.toString()
.replace(/\r+|\n+|\s+/gi, "")
.toLowerCase();
default:
throw new Error(`Unsupported platform: ${process.platform}`);
}
}
function getOsVersion() {
var _a, _b;
try {
if (process.platform === "darwin") {
return (_a = (0, child_process_1.execSync)("sw_vers -productVersion", { encoding: "utf-8" })) === null || _a === void 0 ? void 0 : _a.trim();
}
return (_b = os_1.default.release()) === null || _b === void 0 ? void 0 : _b.trim();
}
catch (error) { }
return "";
}
function formatCupSpeed(speed, arch) {
var _a;
const num = Number(speed);
if (arch === "arm64" && num < 100) {
return Number((_a = (num * 100)) === null || _a === void 0 ? void 0 : _a.toFixed(0));
}
return Number(num === null || num === void 0 ? void 0 : num.toFixed(0));
}
function getDeviceInfo() {
var _a, _b;
const cpus = os_1.default.cpus();
const cpuInfo = cpus === null || cpus === void 0 ? void 0 : cpus[0];
const result = {
os_platform: ((_b = (_a = process.platform) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.toUpperCase()) + process.platform.slice(1),
os_arch: process.arch,
cpu_speed: formatCupSpeed(cpuInfo === null || cpuInfo === void 0 ? void 0 : cpuInfo.speed, process.arch),
cpu_model: cpuInfo === null || cpuInfo === void 0 ? void 0 : cpuInfo.model,
machine_memory: Math.round(os_1.default.totalmem() / 1024 / 1024),
os_version: getOsVersion(),
};
return result;
}
function deviceUA() {
return Object.assign(Object.assign({}, getDeviceInfo()), { login_user: hash(os_1.default.userInfo().username || process.env.username), node_version: process.version });
}
function machineId() {
try {
return expose((0, child_process_1.execSync)(guid[process.platform]).toString());
}
catch (error) { }
return JSON.stringify(deviceUA());
}