diff --git a/.gitignore b/.gitignore index 35ef9a7..0af708e 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ out .eslintcache *.log* .idea +resources/hardware_monitor diff --git a/electron-builder.yml b/electron-builder.yml index b172983..ccbc906 100644 --- a/electron-builder.yml +++ b/electron-builder.yml @@ -2,6 +2,11 @@ appId: com.electron.app productName: hardware_monitorndefinedndefined directories: buildResources: build +extraResources: + - 'resources/hardware_monitor/hardware_monitor.node' + - 'resources/hardware_monitor/HidSharp.dll' + - 'resources/hardware_monitor/LibreHardwareManagerManaged2.dll' + - 'resources/hardware_monitor/LibreHardwareMonitorLib.dll' files: - '!**/.vscode/*' - '!src/*' diff --git a/electron.vite.config.ts b/electron.vite.config.ts index 2183198..4b77b4a 100644 --- a/electron.vite.config.ts +++ b/electron.vite.config.ts @@ -1,10 +1,35 @@ import { resolve } from 'path' import { defineConfig, externalizeDepsPlugin } from 'electron-vite' import vue from '@vitejs/plugin-vue' +import * as fs from 'node:fs' export default defineConfig({ main: { - plugins: [externalizeDepsPlugin()] + plugins: [externalizeDepsPlugin(), + { + name: 'preserve-native-modules', closeBundle:() => { + const libDir=resolve('hardware_monitor_wrapper/build/Release/hardware_monitor.node') + const sourceDir = resolve('resources/hardware_monitor'); // node-gyp 编译生成的路径 + const destDir = resolve( 'out'); + fs.mkdirSync(destDir, { recursive: true }); + fs.copyFileSync( + resolve(libDir), + resolve(destDir, "hardware_monitor.node") + ); + let files=fs.readdirSync(resolve(sourceDir)); + for(let i=0;i +#include +#include +#include "include.h" +#include + +//回调函数,在C#版本的DLL中,我们需要实现IVisitor接口,并将其引用传给Computer。 +//由于没有办法在C++里实现C#接口,考虑到IVisitor接口只包含函数,因此我提供了IVisitor的默认实现, +//其实现为调用以下四个回调函数,它们的指针会被转换为C#委托供IVisitor的C#实现调用。 +//注意!!哪怕提供空实现也要提供,要不然就不保证不出问题了。 +void VisitComputerCallBack(IComputer& computer, Visitor* visitor) +{ + computer.Traverse(visitor); +} +void VisitHardwareCallBack(Hardware& hardware, Visitor* visitor) +{ + hardware.Update(); + std::vector subHardwares = hardware.getSubHardware(); + for (int i = 0; i < subHardwares.size(); i++) { + subHardwares[i].Accept(visitor); + } +} +void VisitSensorCallBack(Sensor& sensor, Visitor* visitor) +{ +} +void VisitParameterCallBack(Parameter& parameter, Visitor* visitor) +{ +} +void destroy(const Napi::CallbackInfo& info){ + computer->Close(); + computer=nullptr; + CoUninitialize(); + +} + +// 使用智能指针管理资源 +std::shared_ptr computer; +std::shared_ptr visitor; + +// 封装 COM 初始化/卸载 +struct ComInitializer { + HRESULT hr; + ComInitializer() { + hr = CoInitializeEx(nullptr, COINIT_MULTITHREADED); + } + ~ComInitializer() { + if (SUCCEEDED(hr)) { + CoUninitialize(); + } + } +}; +void log(std::string log) { + std::ofstream logfile; + logfile.open("native_module.log", std::ios::app); + logfile << log << std::endl; + logfile.close(); +} + +// 安全的初始化函数 +Napi::Object init(Napi::Env env, Napi::Object exports) { + log("Com initing"); + + ComInitializer comInit; // RAII 管理 COM 生命周期 + + // 检查 COM 初始化结果 + if (FAILED(comInit.hr)) { + log("Com init fail"); + + _com_error err(comInit.hr); + Napi::Error::New(env, err.ErrorMessage()).ThrowAsJavaScriptException(); + return exports; + } + log("Com inited"); + computer = std::make_shared(); + computer->setCpuEnabled(true); + computer->setGpuEnabled(true); + computer.setGpuEnabled(true); + computer.setMotherboardEnabled(true); + computer.setStorageEnabled(true); + computer.setBatteryEnabled(true); + computer.setControllerEnabled(true); + computer.setMemoryEnabled(true); + computer.setNetworkEnabled(true); + computer.setPsuEnabled(true); + + computer->Open(); + log("Computer inited"); + + visitor = std::make_shared(); + visitor->setVisitComputerCallBack(VisitComputerCallBack); + visitor->setVisitHardwareCallBack(VisitHardwareCallBack); + visitor->setVisitParameterCallBack(VisitParameterCallBack); + visitor->setVisitSensorCallBack(VisitSensorCallBack); + visitor->commit(); + + computer->Accept(visitor.get()); // 传递原始指针 + log("Visitor inited"); + + // 导出函数 + exports.Set(Napi::String::New(env,"cpu_name"), Napi::Function::New(env, cpu_name)); + exports.Set(Napi::String::New(env,"cpu_load"), Napi::Function::New(env, cpu_load)); + exports.Set(Napi::String::New(env,"cpu_power"), Napi::Function::New(env, cpu_power)); + exports.Set(Napi::String::New(env,"cpu_speed"), Napi::Function::New(env, cpu_speed)); + exports.Set(Napi::String::New(env,"cpu_temperature"), Napi::Function::New(env, cpu_temperature)); + exports.Set(Napi::String::New(env,"cpu_voltage"), Napi::Function::New(env, cpu_voltage)); + + exports.Set(Napi::String::New(env,"current_gpu_status"), Napi::Function::New(env, current_gpu_status)); + exports.Set(Napi::String::New(env,"mem_clock"), Napi::Function::New(env, mem_clock)); + exports.Set(Napi::String::New(env,"mem_free_size"), Napi::Function::New(env, mem_free_size)); + exports.Set(Napi::String::New(env,"mem_used_size"), Napi::Function::New(env, mem_used_size)); + exports.Set(Napi::String::New(env,"mem_name"), Napi::Function::New(env, mem_name)); + exports.Set(Napi::String::New(env,"mem_size"), Napi::Function::New(env, mem_size)); + exports.Set(Napi::String::New(env,"vmem_free_size"), Napi::Function::New(env, vmem_free_size)); + exports.Set(Napi::String::New(env,"vmem_used_size"), Napi::Function::New(env, vmem_used_size)); + exports.Set(Napi::String::New(env,"current_disk_used"), Napi::Function::New(env, current_disk_used)); + exports.Set(Napi::String::New(env,"disk_name"), Napi::Function::New(env, disk_name)); + exports.Set(Napi::String::New(env,"monitor_info"), Napi::Function::New(env, monitor_info)); + exports.Set(Napi::String::New(env,"destroy"), Napi::Function::New(env, destroy)); + + log("Export inited"); + + return exports; +} + +NODE_API_MODULE(hardware_monitor, init) diff --git a/hardware_monitor_wrapper/native/cpu.cpp b/hardware_monitor_wrapper/native/cpu.cpp new file mode 100644 index 0000000..e0f2ec8 --- /dev/null +++ b/hardware_monitor_wrapper/native/cpu.cpp @@ -0,0 +1,70 @@ +#define NODE_ADDON_API_DISABLE_CPP_EXCEPTIONS +#include "include.h" + +Napi::Value cpu_name(const Napi::CallbackInfo& info){ + Napi::Env env = info.Env(); + for (Hardware hardware:computer->getHardware()){ + + if(hardware.getHardwareType()==HardwareType::Cpu){ + Napi::String str2= Napi::String::New(env, hardware.Name()); + return str2; + } + } + return env.Null(); +} + +Napi::Array _cpu_data(const Napi::CallbackInfo& info,SensorType type){ + Napi::Env env = info.Env(); + Napi::Array vec; + int i=0; + for (Hardware hardware:computer->getHardware()){ + if(hardware.getHardwareType()==HardwareType::Cpu){ + for(Hardware sub:hardware.getSubHardware()){ + for(Sensor sen:sub.getSensors()){ + if(sen.getType()==type){ + vec.Set(i,Napi::Number::New(env, sen.getValue())); + } + } + i++; + } + } + } + return vec; +} +Napi::Array cpu_speed(const Napi::CallbackInfo& info){ + return _cpu_data(info,SensorType::Clock); +} +Napi::Value cpu_power(const Napi::CallbackInfo& info){ + Napi::Env env = info.Env(); + for (Hardware hardware:computer->getHardware()){ + if(hardware.getHardwareType()==HardwareType::Cpu){ + for(Sensor sen:hardware.getSensors()){ + if(sen.getType()==SensorType::Power){ + return Napi::Number::New(env, sen.getValue()); + } + } + } + } + return env.Null(); +} +Napi::Value cpu_voltage(const Napi::CallbackInfo& info){ + Napi::Env env = info.Env(); + for (Hardware hardware:computer->getHardware()){ + if(hardware.getHardwareType()==HardwareType::Cpu){ + for(Sensor sen:hardware.getSensors()){ + if(sen.getType()==SensorType::Voltage){ + return Napi::Number::New(env, sen.getValue()); + } + } + } + } + return env.Null(); +} +Napi::Value cpu_load(const Napi::CallbackInfo& info){ + return _cpu_data(info,SensorType::Load); +} + + +Napi::Value cpu_temperature(const Napi::CallbackInfo& info){ + return _cpu_data(info,SensorType::Temperature); +} diff --git a/hardware_monitor_wrapper/native/gpu.cpp b/hardware_monitor_wrapper/native/gpu.cpp new file mode 100644 index 0000000..588cf06 --- /dev/null +++ b/hardware_monitor_wrapper/native/gpu.cpp @@ -0,0 +1,30 @@ +#include "include.h" + +#include + +Napi::Array current_gpu_status(const Napi::CallbackInfo& info){ + Napi::Env env = info.Env(); + Napi::Array myarray=Napi::Array::New(env); + std::vector hardwares=computer->getHardware(); + for (int i=0;i("name", Napi::String::New(env, hardwares[i].Name())); + for(Sensor sen:hardwares[i].getSensors()){ + if(sen.getType()==SensorType::Power){ + object.Set("power", sen.getValue()); + } + else if(sen.getType()==SensorType::Load && (strcmp(sen.getName(),"GPU Core")==0)){ + object.Set("load", sen.getValue()); + } + else if(sen.getType()==SensorType::Clock){ + object.Set("freq", sen.getValue()); + } + } + myarray.Set(i,object); + } + } + return myarray; +} \ No newline at end of file diff --git a/hardware_monitor_wrapper/native/include.h b/hardware_monitor_wrapper/native/include.h new file mode 100644 index 0000000..ab56b49 --- /dev/null +++ b/hardware_monitor_wrapper/native/include.h @@ -0,0 +1,27 @@ +#define NODE_ADDON_API_DISABLE_CPP_EXCEPTIONS +#include +#include "Computer.h" +#include "Hardware.h" +#include "HardwareType.h" +#include "Sensor.h" +#include +#include +extern std::shared_ptr computer; +Napi::Value cpu_name(const Napi::CallbackInfo& info); +Napi::Array cpu_speed(const Napi::CallbackInfo& info); +Napi::Value cpu_power(const Napi::CallbackInfo& info); +Napi::Value cpu_voltage(const Napi::CallbackInfo& info); +Napi::Value cpu_load(const Napi::CallbackInfo& info); +Napi::Value cpu_temperature(const Napi::CallbackInfo& info); +Napi::Array current_gpu_status(const Napi::CallbackInfo& info); +Napi::Value mem_used_size(const Napi::CallbackInfo& info); +Napi::Value vmem_used_size(const Napi::CallbackInfo& info); +Napi::Value mem_free_size(const Napi::CallbackInfo& info); +Napi::Value vmem_free_size(const Napi::CallbackInfo& info); +Napi::Value mem_clock(const Napi::CallbackInfo& info); +Napi::Value mem_size(const Napi::CallbackInfo& info); +Napi::String mem_name(const Napi::CallbackInfo& info); +Napi::Array disk_name(const Napi::CallbackInfo& info); +Napi::Array current_disk_used(const Napi::CallbackInfo& info); +Napi::Array monitor_info(const Napi::CallbackInfo& info); +Napi::Object init(Napi::Env env, Napi::Object exports); diff --git a/hardware_monitor_wrapper/native/include/Computer.h b/hardware_monitor_wrapper/native/include/Computer.h new file mode 100644 index 0000000..4808333 --- /dev/null +++ b/hardware_monitor_wrapper/native/include/Computer.h @@ -0,0 +1,65 @@ +#pragma once +#include "Settings.h" +#include "SMBios.h" +#include "Visitor.h" +#include "IComputer.h" +#include "Hardware.h" +#include +#include +#include "dll_macro.h" +struct innerComputer; +struct innerComputerInterface; + +class DLL_API Computer : public IComputer{ +public: + Computer(); + Computer(Settings &settigs); + + Computer(std::shared_ptr inner); + ~Computer() override; + + bool isNull() const; + + bool operator==(const Computer&) const; + std::vector getHardware() override; + + bool isBatteryEnabled() override; + void setBatteryEnabled(bool); + + bool isControllerEnabled() override; + void setControllerEnabled(bool); + + bool isCpuEnabled() override; + void setCpuEnabled(bool); + + bool isGpuEnabled() override; + void setGpuEnabled(bool); + + bool isMemoryEnabled() override; + void setMemoryEnabled(bool); + + bool isMotherboardEnabled() override; + void setMotherboardEnabled(bool); + + bool isNetworkEnabled() override; + void setNetworkEnabled(bool); + + bool isPsuEnabled() override; + void setPsuEnabled(bool); + + bool isStorageEnabled() override; + void setStorageEnabled(bool); + + SMBios getSMBios(); + + std::string GetReport() override; + + void Accept(Visitor* visitor) override; + void Traverse(Visitor* visitor) override; + + void Open(); + void Close(); + void Reset(); +private: + std::shared_ptr inner; +}; diff --git a/hardware_monitor_wrapper/native/include/Control.h b/hardware_monitor_wrapper/native/include/Control.h new file mode 100644 index 0000000..5c35d8e --- /dev/null +++ b/hardware_monitor_wrapper/native/include/Control.h @@ -0,0 +1,30 @@ +#pragma once +struct innerCsControl; +class Sensor; +#include "Identifier.h" +#include "dll_macro.h" +#include +enum CsControlMode +{ + Undefined, + Software, + Default, + ObjectIsNull +}; +class DLL_API CsControl +{ +public: + CsControl(std::shared_ptr inner); + ~CsControl(); + bool isNull() const; + CsControlMode getCsControlMode(); + Identifier getIdentifier(); + float getMaxSoftwareValue(); + float getMinSoftwareValue(); + Sensor getSensor(); + float getSoftwareValue(); + void SetDefault(); + void SetSoftware(float value); +private: + std::shared_ptr inner; +}; diff --git a/hardware_monitor_wrapper/native/include/Group.cpp b/hardware_monitor_wrapper/native/include/Group.cpp new file mode 100644 index 0000000..6daf0ed --- /dev/null +++ b/hardware_monitor_wrapper/native/include/Group.cpp @@ -0,0 +1,25 @@ +#include "pch.h" +#include "Group.h" +#include +#include "internals.h" +bool Group::isNull() const +{ + if (inner == nullptr) + return true; + return ((inner->getInner()->Equals(nullptr))) ? false : true; +} +std::string Group::GetReport() +{ + if (isNull()) { + return ""; + } + return msclr::interop::marshal_as(inner->getInner()->GetReport()); +} + +void Group::Close() +{ + if (isNull()) { + return; + } + inner->getInner()->Close(); +} diff --git a/hardware_monitor_wrapper/native/include/Group.h b/hardware_monitor_wrapper/native/include/Group.h new file mode 100644 index 0000000..37e9ed8 --- /dev/null +++ b/hardware_monitor_wrapper/native/include/Group.h @@ -0,0 +1,15 @@ +#pragma once +#include "dll_macro.h" +#include +struct innerGroup; +class DLL_API Group { +public: + Group(std::shared_ptr inner):inner(inner){} + virtual ~Group() { + } + bool isNull() const; + virtual std::string GetReport(); + virtual void Close(); +protected: + std::shared_ptr inner; +}; diff --git a/hardware_monitor_wrapper/native/include/GroupAffinity.h b/hardware_monitor_wrapper/native/include/GroupAffinity.h new file mode 100644 index 0000000..d851fc9 --- /dev/null +++ b/hardware_monitor_wrapper/native/include/GroupAffinity.h @@ -0,0 +1,29 @@ +#pragma once +#include "Hardware.h" +#include "dll_macro.h" +struct innerGroupAffinity; +namespace mikesolar { + template + class List; +} +class DLL_API GroupAffinity +{ +public: + + GroupAffinity(unsigned short group, unsigned long mask); + GroupAffinity(std::shared_ptr inner); + + bool isNull() const; + static GroupAffinity Undifined(); + static GroupAffinity Single(unsigned short group, int index); + unsigned short Group(); + unsigned long Mask(); + //public override bool Equals(object o) + int GetHashCode(); + bool operator==(const GroupAffinity &other) const; + //static bool operator !=(GroupAffinity a1, GroupAffinity a2); + ~GroupAffinity(); +private: + std::shared_ptr inner; +}; + diff --git a/hardware_monitor_wrapper/native/include/Hardware.h b/hardware_monitor_wrapper/native/include/Hardware.h new file mode 100644 index 0000000..ce51714 --- /dev/null +++ b/hardware_monitor_wrapper/native/include/Hardware.h @@ -0,0 +1,33 @@ +#pragma once +#include "dll_macro.h" +#include "HardwareType.h" +#include "Identifier.h" +#include +#include +#include +class Sensor; +class Visitor; +struct innerHardware; +class DLL_API Hardware { +public: + Hardware(std::shared_ptr inner); + Hardware(const Hardware& src); + bool isNull() const; + Hardware operator=(const Hardware& src) const{ + return Hardware(src); + } + bool operator==(const Hardware& other) const; + HardwareType getHardwareType(); + std::vector getSensors(); + Hardware getParent(); + std::vector getSubHardware(); + void Update(); + std::string Name(); + std::string GetReport(); + void Accept(Visitor* visitor); + void Traverse(Visitor* visitor); + Identifier getIdenifier(); + ~Hardware(); +private: + std::shared_ptr inner; +}; diff --git a/hardware_monitor_wrapper/native/include/HardwareType.h b/hardware_monitor_wrapper/native/include/HardwareType.h new file mode 100644 index 0000000..6436495 --- /dev/null +++ b/hardware_monitor_wrapper/native/include/HardwareType.h @@ -0,0 +1,19 @@ +#pragma once + +enum class HardwareType { + Motherboard, + SuperIO, + Cpu, + Memory, + GpuNvidia, + GpuAmd, + GpuIntel, + Storage, + Network, + Cooler, + EmbeddedController, + Psu, + Battery, + Other, + ObjectIsNull +}; diff --git a/hardware_monitor_wrapper/native/include/IComputer.h b/hardware_monitor_wrapper/native/include/IComputer.h new file mode 100644 index 0000000..23c0707 --- /dev/null +++ b/hardware_monitor_wrapper/native/include/IComputer.h @@ -0,0 +1,63 @@ +#pragma once +#pragma once +#include "Settings.h" +#include "SMBios.h" +#include +#include "Hardware.h" +#include "IComputer.h" +#include "dll_macro.h" +class Visitor; +struct innerComputerInterface; +/** + * ȻIͷֻΪ˺C#ౣһ£dz + * ӦñֶʵֻԴӱлȡ + */ +class DLL_API IComputer { +public: + + //ȷҲinnerComputerInterfaceʵֵģҪҵ͸ñˡ + //ӦñֶʵֻԴӱлȡ + IComputer(std::shared_ptr inner); + + virtual bool operator==(const IComputer& other) const; + + bool isNull() const; + + virtual ~IComputer(); + + virtual std::vector getHardware(); + + virtual bool isBatteryEnabled(); + + virtual bool isControllerEnabled(); + + virtual bool isCpuEnabled(); + + virtual bool isGpuEnabled(); + + virtual bool isMemoryEnabled(); + + virtual bool isMotherboardEnabled(); + + virtual bool isNetworkEnabled(); + + virtual bool isPsuEnabled(); + + virtual bool isStorageEnabled(); + + virtual std::string GetReport(); + + virtual void Accept(Visitor* visitor); + virtual void Traverse(Visitor* visitor); + +protected: + std::shared_ptr inner; + + //ӦⲿinnergettersetterǷ㶨ͬ + void setIComputerInner(std::shared_ptr inner) { + this->inner = inner; + } + std::shared_ptr getIComputerInner() const { + return inner; + } +}; diff --git a/hardware_monitor_wrapper/native/include/Identifier.h b/hardware_monitor_wrapper/native/include/Identifier.h new file mode 100644 index 0000000..4c7617a --- /dev/null +++ b/hardware_monitor_wrapper/native/include/Identifier.h @@ -0,0 +1,26 @@ +#pragma once +#include "dll_macro.h" +#include +#include +struct innerIdentifier; +class DLL_API Identifier { +public: + Identifier(std::shared_ptr inner); + //Identifier(params string[] identifiers); + //Identifier(Identifier identifier, params string[] extensions) + int CompareTo(Identifier other); + //static void CheckIdentifiers(IEnumerable identifiers) + std::string ToString(); + int GetHashCode(); + bool operator==(const Identifier& other) const; + bool operator!=(const Identifier& other) const; + bool operator<(const Identifier& id) const; + bool operator>(const Identifier& id) const; + bool isNull() const; + + +private: + std::shared_ptr inner; + +}; + diff --git a/hardware_monitor_wrapper/native/include/Parameter.h b/hardware_monitor_wrapper/native/include/Parameter.h new file mode 100644 index 0000000..55f29ca --- /dev/null +++ b/hardware_monitor_wrapper/native/include/Parameter.h @@ -0,0 +1,26 @@ +#pragma once +#include +class Visitor; +#include "Identifier.h" +class Sensor; +#include "dll_macro.h" + +struct innerParameter; +class DLL_API Parameter { +public: + Parameter(innerParameter* inner); + ~Parameter(); + bool isNull() const; + bool operator==(const Parameter& other) const; + float getDefaultValue(); + std::string getDescription(); + Identifier getIdentifier(); + bool isDefault(); + std::string getName(); + Sensor getSensor(); + float getValue(); + void Accept(Visitor* visitor); + void Traverse(Visitor* visitor); +private: + innerParameter* inner; +}; diff --git a/hardware_monitor_wrapper/native/include/ParameterDescription.h b/hardware_monitor_wrapper/native/include/ParameterDescription.h new file mode 100644 index 0000000..eb5e6bf --- /dev/null +++ b/hardware_monitor_wrapper/native/include/ParameterDescription.h @@ -0,0 +1,14 @@ +#pragma once +#include "dll_macro.h" +#include +struct innerParameterDescription; +class DLL_API ParameterDescription +{ +public: + ParameterDescription(char* name, char* description, float defaultValue); + bool isNull() const; + std::string getName(); + float getDefaultValue(); +private: + std::shared_ptr inner; +}; diff --git a/hardware_monitor_wrapper/native/include/SMBios.h b/hardware_monitor_wrapper/native/include/SMBios.h new file mode 100644 index 0000000..99d7607 --- /dev/null +++ b/hardware_monitor_wrapper/native/include/SMBios.h @@ -0,0 +1,195 @@ +#pragma once +#ifdef DLL_EXPORT +#define DLL_API __declspec(dllexport) +#else +#define DLL_API __declspec(dllimport) +#endif +#include +#include +#include +#include "SMBiosEnums.h" +struct innerBiosInformation; +struct innerSystemEnclosure; +struct innerSMBios; +struct innerSystemInformation; +struct innerBaseBoardInformation; +struct innerProcessorInformation; +struct innerCacheInformation; +struct innerMemoryDevice; +struct innerSMBios; + +class DLL_API BiosInformation { +public: + BiosInformation(std::shared_ptr inner); + ~BiosInformation(); + + bool isNull() const; + time_t getDate(); + std::string getVendor(); + std::string getVersion(); + unsigned long long getSize(); +private: + std::shared_ptr inner; +}; + +class DLL_API SystemInformation { +public: + SystemInformation(std::shared_ptr inner); + ~SystemInformation(); + bool isNull() const; + std::string getFamily(); + std::string getManufacturerName(); + std::string getProductName(); + std::string getSerialNumber(); + std::string getVersion(); + SystemWakeUp WakeUp(); +private: + std::shared_ptr inner; +}; + +class DLL_API SystemEnclosure { +public: + SystemEnclosure(std::shared_ptr inner); + ~SystemEnclosure(); + + bool isNull() const; + + + std::string getAssetTag(); + + SystemEnclosureState getBootUpState(); + + bool getLockDetected(); + void setLockDetected(bool locked); + + std::string getManufacturerName(); + + + unsigned char getPowerCords(); + + SystemEnclosureState getPowerSupplyState(); + + unsigned char getRackHeight(); + + SystemEnclosureSecurityStatus getSecurityStatus(); + void setSecurityStatus(SystemEnclosureSecurityStatus status); + + std::string getSerialNumber(); + + std::string getSKU(); + + SystemEnclosureState getThermalState(); + + SystemEnclosureType getType(); + + std::string Version(); +private: + std::shared_ptr inner; +}; + +class DLL_API BaseBoardInformation { +public: + BaseBoardInformation(std::shared_ptr inner); + ~BaseBoardInformation(); + + bool isNull() const; + + std::string getManufacturerName(); + std::string getProductName(); + std::string getSerialNumber(); + std::string getVersion(); +private: + std::shared_ptr inner; +}; + +class DLL_API CSProcessorInformation { +public: + CSProcessorInformation(std::shared_ptr inner); + ~CSProcessorInformation(); + + bool isNull() const; + + ProcessorCharacteristics getCharacteristics(); + unsigned short getCoreCount(); + unsigned short getCoreEnabled(); + unsigned short getCurrentSpeed(); + unsigned short getExternalClock(); + ProcessorFamily getFamily(); + unsigned short getHandle(); + unsigned long long getId(); + unsigned short getL1CacheHandle(); + unsigned short getL2CacheHandle(); + unsigned short getL3CacheHandle(); + std::string getManufacturerName(); + unsigned short getMaxSpeed(); + ProcessorType getProcessorType(); + std::string getSerial(); + ProcessorSocket getSocket(); + std::string getSocketDesignation(); + unsigned short getThreadCount(); + std::string getVersion(); + +private: + std::shared_ptr inner; +}; +class DLL_API CacheInformation +{ +public: + CacheInformation(std::shared_ptr inner); + ~CacheInformation(); + + bool isNull() const; + + CacheAssociativity getAssociativity(); + CacheDesignation getDesignation(); + unsigned short getHandle(); + unsigned short getSize(); + +private: + std::shared_ptr inner; +}; +class DLL_API MemoryDevice +{ +public: + MemoryDevice(std::shared_ptr inner); + ~MemoryDevice(); + + bool isNull() const; + + std::string getBankLocator(); + std::string getDeviceLocator(); + std::string getManufacturerName(); + std::string getPartNumber(); + std::string getSerialNumber(); + unsigned int getSize(); + unsigned short getSpeed(); + unsigned short getConfiguredSpeed(); + unsigned short getConfiguredVoltage(); + MemoryType getType(); + +private: + std::shared_ptr inner; + +}; + +class DLL_API SMBios +{ +public: + SMBios(); + ~SMBios(); + + bool isNull() const; + + SMBios(std::shared_ptr); + bool operator==(const SMBios& other) const; + BiosInformation getBios(); + BaseBoardInformation getBoard(); + std::vector getMemoryDevice(); + std::vector getProcessorCaches(); + std::vector getProcessors(); + SystemInformation getSystem(); + SystemEnclosure getSystemEnclosure(); + std::string getGetReport(); +private: + std::shared_ptr inner; +}; diff --git a/hardware_monitor_wrapper/native/include/SMBiosEnums.h b/hardware_monitor_wrapper/native/include/SMBiosEnums.h new file mode 100644 index 0000000..1d7a2be --- /dev/null +++ b/hardware_monitor_wrapper/native/include/SMBiosEnums.h @@ -0,0 +1,460 @@ +#pragma once +enum class SystemEnclosureSecurityStatus +{ + Other = 1, + Unknown, + None, + ExternalInterfaceLockedOut, + ExternalInterfaceEnabled, + ObjectIsNull +}; +enum class SystemEnclosureState +{ + Other = 1, + Unknown, + Safe, + Warning, + Critical, + NonRecoverable, + ObjectIsNull +}; +enum class SystemEnclosureType +{ + Other = 1, + Unknown, + Desktop, + LowProfileDesktop, + PizzaBox, + MiniTower, + Tower, + Portable, + Laptop, + Notebook, + HandHeld, + DockingStation, + AllInOne, + SubNotebook, + SpaceSaving, + LunchBox, + MainServerChassis, + ExpansionChassis, + SubChassis, + BusExpansionChassis, + PeripheralChassis, + RaidChassis, + RackMountChassis, + SealedCasePc, + MultiSystemChassis, + CompactPci, + AdvancedTca, + Blade, + BladeEnclosure, + Tablet, + Convertible, + Detachable, + IoTGateway, + EmbeddedPc, + MiniPc, + StickPc, + ObjectIsNull +}; +enum class ProcessorFamily +{ + Other = 1, + Intel8086 = 3, + Intel80286 = 4, + Intel386, + Intel486, + Intel8087, + Intel80287, + Intel80387, + Intel80487, + IntelPentium, + IntelPentiumPro, + IntelPentiumII, + IntelPentiumMMX, + IntelCeleron, + IntelPentiumIIXeon, + IntelPentiumIII, + M1, + M2, + IntelCeleronM, + IntelPentium4HT, + AmdDuron = 24, + AmdK5, + AmdK6, + AmdK62, + AmdK63, + AmdAthlon, + Amd2900, + AmdK62Plus, + PowerPc, + PowerPc601, + PowerPc603, + PowerPc603Plus, + PowerPc604, + PowerPc620, + PowerPcx704, + PowerPc750, + IntelCoreDuo, + IntelCoreDuoMobile, + IntelCoreSoloMobile, + IntelAtom, + IntelCoreM, + IntelCoreM3, + IntelCoreM5, + IntelCoreM7, + Alpha, + Alpha21064, + Alpha21066, + Alpha21164, + Alpha21164Pc, + Alpha21164a, + Alpha21264, + Alpha21364, + AmdTurionIIUltraDualCoreMobileM, + AmdTurionDualCoreMobileM, + AmdAthlonIIDualCoreM, + AmdOpteron6100Series, + AmdOpteron4100Series, + AmdOpteron6200Series, + AmdOpteron4200Series, + AmdFxSeries, + Mips, + MipsR4000, + MipsR4200, + MipsR4400, + MipsR4600, + MipsR10000, + AmdCSeries, + AmdESeries, + AmdASeries, + AmdGSeries, + AmdZSeries, + AmdRSeries, + AmdOpteron4300Series, + AmdOpteron6300Series, + AmdOpteron3300Series, + AmdFireProSeries, + Sparc, + SuperSparc, + MicroSparcII, + MicroSparcIIep, + UltraSparc, + UltraSparcII, + UltraSparcIIi, + UltraSparcIII, + UltraSparcIIIi, + Motorola68040 = 96, + Motorola68xxx, + Motorola68000, + Motorola68010, + Motorola68020, + Motorola68030, + AmdAthlonX4QuadCore, + AmdOpteronX1000Series, + AmdOpteronX2000Series, + AmdOpteronASeries, + AmdOpteronX3000Series, + AmdZen, + Hobbit = 112, + CrusoeTm5000 = 120, + CrusoeTm3000, + EfficeonTm8000, + Weitek = 128, + IntelItanium = 130, + AmdAthlon64, + AmdOpteron, + AmdSempron, + AmdTurio64Mobile, + AmdOpteronDualCore, + AmdAthlon64X2DualCore, + AmdTurion64X2Mobile, + AmdOpteronQuadCore, + AmdOpteronThirdGen, + AmdPhenomFXQuadCore, + AmdPhenomX4QuadCore, + AmdPhenomX2DualCore, + AmdAthlonX2DualCore, + PaRisc, + PaRisc8500, + PaRisc8000, + PaRisc7300LC, + PaRisc7200, + PaRisc7100LC, + PaRisc7100, + V30 = 160, + IntelXeon3200QuadCoreSeries, + IntelXeon3000DualCoreSeries, + IntelXeon5300QuadCoreSeries, + IntelXeon5100DualCoreSeries, + IntelXeon5000DualCoreSeries, + IntelXeonLVDualCore, + IntelXeonULVDualCore, + IntelXeon7100Series, + IntelXeon5400Series, + IntelXeonQuadCore, + IntelXeon5200DualCoreSeries, + IntelXeon7200DualCoreSeries, + IntelXeon7300QuadCoreSeries, + IntelXeon7400QuadCoreSeries, + IntelXeon7400MultiCoreSeries, + IntelPentiumIIIXeon, + IntelPentiumIIISpeedStep, + IntelPentium4, + IntelXeon, + As400, + IntelXeonMP, + AmdAthlonXP, + AmdAthlonMP, + IntelItanium2, + IntelPentiumM, + IntelCeleronD, + IntelPentiumD, + IntelPentiumExtreme, + IntelCoreSolo, + IntelCore2Duo = 191, + IntelCore2Solo, + IntelCore2Extreme, + IntelCore2Quad, + IntelCore2ExtremeMobile, + IntelCore2DuoMobile, + IntelCore2SoloMobile, + IntelCoreI7, + IntelCeleronDualCore, + Ibm390, + PowerPcG4, + PowerPcG5, + Esa390G6, + ZArchitecture, + IntelCoreI5, + IntelCoreI3, + IntelCoreI9, + ViaC7M = 210, + ViaC7D, + ViaC7, + ViaEden, + IntelXeonMultiCore, + IntelXeon3xxxDualCoreSeries, + IntelXeon3xxxQuadCoreSeries, + ViaNano, + IntelXeon5xxxDualCoreSeries, + IntelXeon5xxxQuadCoreSeries, + IntelXeon7xxxDualCoreSeries = 221, + IntelXeon7xxxQuadCoreSeries, + IntelXeon7xxxMultiCoreSeries, + IntelXeon3400MultiCoreSeries, + AmdOpteron3000Series = 228, + AmdSempronII, + AmdOpteronQuadCoreEmbedded, + AmdPhenomTripleCore, + AmdTurionUltraDualCoreMobile, + AmdTurionDualCoreMobile, + AmdTurionDualCore, + AmdAthlonDualCore, + AmdSempronSI, + AmdPhenomII, + AmdAthlonII, + AmdOpteronSixCore, + AmdSempronM, + IntelI860 = 250, + IntelI960, + ArmV7 = 256, + ArmV8, + HitachiSh3, + HitachiSh4, + Arm, + StrongArm, + _686, + MediaGX, + MII, + WinChip, + Dsp, + VideoProcessor, + ObjectIsNull +}; + + +/// +/// Processor characteristics based on DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.5.9. +/// +enum class ProcessorCharacteristics +{ + None = 0, + _64BitCapable = 1, + MultiCore = 2, + HardwareThread = 4, + ExecuteProtection = 8, + EnhancedVirtualization = 16, + PowerPerformanceControl = 32, + _128BitCapable = 64, + ObjectIsNull +}; + +/// +/// Processor type based on DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.5.1. +/// +enum class ProcessorType +{ + Other = 1, + Unknown, + CentralProcessor, + MathProcessor, + DspProcessor, + VideoProcessor, + ObjectIsNull +}; + +/// +/// Processor socket based on DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.5.5. +/// +enum class ProcessorSocket +{ + Other = 1, + Unknown, + DaughterBoard, + ZifSocket, + PiggyBack, + None, + LifSocket, + Zif423 = 13, + A, + Zif478, + Zif754, + Zif940, + Zif939, + MPga604, + Lga771, + Lga775, + S1, + AM2, + F, + Lga1366, + G34, + AM3, + C32, + Lga1156, + Lga1567, + Pga988A, + Bga1288, + RPga088B, + Bga1023, + Bga1224, + Lga1155, + Lga1356, + Lga2011, + FS1, + FS2, + FM1, + FM2, + Lga20113, + Lga13563, + Lga1150, + Bga1168, + Bga1234, + Bga1364, + AM4, + Lga1151, + Bga1356, + Bga1440, + Bga1515, + Lga36471, + SP3, + SP3R2, + Lga2066, + Bga1510, + Bga1528, + Lga4189, + ObjectIsNull +}; + +/// +/// System wake-up type based on DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.2.2. +/// +enum class SystemWakeUp +{ + Reserved, + Other, + Unknown, + ApmTimer, + ModemRing, + LanRemote, + PowerSwitch, + PciPme, + AcPowerRestored, + ObjectIsNull +}; + +/// +/// Cache associativity based on DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.8.5. +/// +enum class CacheAssociativity +{ + Other = 1, + Unknown, + DirectMapped, + _2Way, + _4Way, + FullyAssociative, + _8Way, + _16Way, + _12Way, + _24Way, + _32Way, + _48Way, + _64Way, + _20Way, + ObjectIsNull +}; + +/// +/// Processor cache level. +/// +enum class CacheDesignation +{ + Other, + L1, + L2, + L3, + ObjectIsNull +}; + +/// +/// Memory type. +/// +enum class MemoryType +{ + Other = 0x01, + Unknown = 0x02, + DRAM = 0x03, + EDRAM = 0x04, + VRAM = 0x05, + SRAM = 0x06, + RAM = 0x07, + ROM = 0x08, + FLASH = 0x09, + EEPROM = 0x0a, + FEPROM = 0x0b, + EPROM = 0x0c, + CDRAM = 0x0d, + _3DRAM = 0x0e, + SDRAM = 0x0f, + SGRAM = 0x10, + RDRAM = 0x11, + DDR = 0x12, + DDR2 = 0x13, + DDR2_FBDIMM = 0x14, + DDR3 = 0x18, + FBD2 = 0x19, + DDR4 = 0x1a, + LPDDR = 0x1b, + LPDDR2 = 0x1c, + LPDDR3 = 0x1d, + LPDDR4 = 0x1e, + LogicalNonVolatileDevice = 0x1f, + HBM = 0x20, + HBM2 = 0x21, + DDR5 = 0x22, + LPDDR5 = 0x23, + ObjectIsNull +}; diff --git a/hardware_monitor_wrapper/native/include/Sensor.h b/hardware_monitor_wrapper/native/include/Sensor.h new file mode 100644 index 0000000..4c58633 --- /dev/null +++ b/hardware_monitor_wrapper/native/include/Sensor.h @@ -0,0 +1,83 @@ +#pragma once +#include +#include "Hardware.h" +#include "Identifier.h" +#include "Parameter.h" +#include +#include "Control.h" +#include "dll_macro.h" +class Visitor; +struct innerSensor; +class DLL_API SensorValue { +public: + SensorValue(float value, time_t time) { + this->value = value; + this->timestamp = time; + } + time_t getTimestamp() { + return timestamp; + } + bool operator==(const SensorValue& other) const { + return (this->value == other.value) && (this->timestamp == other.timestamp); + } + float getValue() { + return value; + } +private: + time_t timestamp; + float value; +}; +enum class SensorType +{ + Voltage, // V + Current, // A + Power, // W + Clock, // MHz + Temperature, // °C + Load, // % + Frequency, // Hz + Fan, // RPM + Flow, // L/h + Control, // % + Level, // % + Factor, // 1 + Data, // GB = 2^30 Bytes + SmallData, // MB = 2^20 Bytes + Throughput, // B/s + TimeSpan, // Seconds + Energy, // milliwatt-hour (mWh) + Noise, // dBA + Conductivity, // µS/cm + Humidity, // % + ObjectIsNull +}; +class DLL_API Sensor { +public: + Sensor(std::shared_ptr inner); + ~Sensor(); + + bool isNull() const; + bool operator==(const Sensor& other) const; + float getMax();//如果是null返回FLT_MIN即float最小值 + float getMin();//如果是null返回FLT_MAX即float最大值 + std::vector getValues(); + SensorType getType(); + float getValue(); + //需自行delete[] + char* getName(); + std::vector getParameters(); + time_t getTimeSpan(); + void resetMin(); + void resetMax(); + void clearValues(); + void Accept(Visitor* visitor); + void Traverse(Visitor* visitor); + Hardware getHardware(); + Identifier getIdentifier(); + bool isDefaultHidden(); + int getIndex(); + CsControl getControl(); +private: + std::shared_ptr inner; +}; + diff --git a/hardware_monitor_wrapper/native/include/Settings.h b/hardware_monitor_wrapper/native/include/Settings.h new file mode 100644 index 0000000..50abed3 --- /dev/null +++ b/hardware_monitor_wrapper/native/include/Settings.h @@ -0,0 +1,24 @@ +#pragma once +#ifdef DLL_EXPORT +#define DLL_API __declspec(dllexport) +#else +#define DLL_API __declspec(dllimport) +#endif +#include +#include +struct innerSettings; + +class DLL_API Settings { + +public: + Settings(std::shared_ptr); + virtual bool isNull() const; + virtual bool Contains(char*); + virtual void SetValue(char*, char*); + virtual std::string GetValue(char*, char*); + virtual void Remove(char*); + virtual std::shared_ptr getInner(); + virtual void setInner(std::shared_ptr); +private: + std::shared_ptr inner=nullptr; +}; diff --git a/hardware_monitor_wrapper/native/include/Visitor.h b/hardware_monitor_wrapper/native/include/Visitor.h new file mode 100644 index 0000000..f18408e --- /dev/null +++ b/hardware_monitor_wrapper/native/include/Visitor.h @@ -0,0 +1,36 @@ +#pragma once + +#include "dll_macro.h" +#include "IComputer.h" +#include "Hardware.h" +class Sensor; +#include "Parameter.h" +struct innerVisitor; +class VisitorCallBacks; +typedef void (*VisitComputerDelegate)(IComputer& computer, Visitor* visitor); +typedef void (*VisitHardwareDelegate)(Hardware& hardware, Visitor* visitor); +typedef void (*VisitSensorDelegate)(Sensor& sensor, Visitor* visitor); +typedef void (*VisitParameterDelegate)(Parameter& parameter, Visitor* visitor); +class DLL_API Visitor { +public: + Visitor(); + + void setVisitComputerCallBack(VisitComputerDelegate); + void setVisitHardwareCallBack(VisitHardwareDelegate); + void setVisitSensorCallBack(VisitSensorDelegate); + void setVisitParameterCallBack(VisitParameterDelegate); + + void commit(); + VisitComputerDelegate getVisitComputerCallBack(); + VisitHardwareDelegate getVisitHardwareCallBack(); + VisitSensorDelegate getVisitSensorCallBack(); + VisitParameterDelegate getVisitParameterCallBack(); + innerVisitor* getInner(); +protected: + innerVisitor* inner; + VisitComputerDelegate visitComputerCallBack; + VisitHardwareDelegate visitHardwareCallBack; + VisitSensorDelegate visitSensorCallBack; + VisitParameterDelegate visitParameterCallBack; + +}; diff --git a/hardware_monitor_wrapper/native/include/dll_macro.h b/hardware_monitor_wrapper/native/include/dll_macro.h new file mode 100644 index 0000000..5d43dbe --- /dev/null +++ b/hardware_monitor_wrapper/native/include/dll_macro.h @@ -0,0 +1,6 @@ +#pragma once +#ifdef DLL_EXPORT +#define DLL_API __declspec(dllexport) +#else +#define DLL_API __declspec(dllimport) +#endif diff --git a/hardware_monitor_wrapper/native/libs/Aga.Controls.dll b/hardware_monitor_wrapper/native/libs/Aga.Controls.dll new file mode 100644 index 0000000..9cfec0f Binary files /dev/null and b/hardware_monitor_wrapper/native/libs/Aga.Controls.dll differ diff --git a/hardware_monitor_wrapper/native/libs/Aga.Controls.pdb b/hardware_monitor_wrapper/native/libs/Aga.Controls.pdb new file mode 100644 index 0000000..39490ae Binary files /dev/null and b/hardware_monitor_wrapper/native/libs/Aga.Controls.pdb differ diff --git a/hardware_monitor_wrapper/native/libs/Demo.sys b/hardware_monitor_wrapper/native/libs/Demo.sys new file mode 100644 index 0000000..197c255 Binary files /dev/null and b/hardware_monitor_wrapper/native/libs/Demo.sys differ diff --git a/hardware_monitor_wrapper/native/libs/HidSharp.dll b/hardware_monitor_wrapper/native/libs/HidSharp.dll new file mode 100644 index 0000000..895c318 Binary files /dev/null and b/hardware_monitor_wrapper/native/libs/HidSharp.dll differ diff --git a/hardware_monitor_wrapper/native/libs/LibreHardwareManagerManaged2.dll b/hardware_monitor_wrapper/native/libs/LibreHardwareManagerManaged2.dll new file mode 100644 index 0000000..221244e Binary files /dev/null and b/hardware_monitor_wrapper/native/libs/LibreHardwareManagerManaged2.dll differ diff --git a/hardware_monitor_wrapper/native/libs/LibreHardwareManagerManaged2.dll.metagen b/hardware_monitor_wrapper/native/libs/LibreHardwareManagerManaged2.dll.metagen new file mode 100644 index 0000000..76cecbd --- /dev/null +++ b/hardware_monitor_wrapper/native/libs/LibreHardwareManagerManaged2.dll.metagen @@ -0,0 +1,17 @@ +ImageRuntimeVersion: v4.0.30319 +Assembly LibreHardwareManagerManaged2, Version=1.0.*, Culture=固定语言(固定国家/地区): + hash=SHA1, flags=PublicKey +Assembly mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089: + hash=None, flags=None +Assembly Aga.Controls, Version=1.7.*, Culture=固定语言(固定国家/地区): + hash=None, flags=None +Assembly LibreHardwareMonitorLib, Version=0.9.*, Culture=固定语言(固定国家/地区): + hash=None, flags=None +Assembly System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089: + hash=None, flags=None +Assembly System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089: + hash=None, flags=None +Assembly System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089: + hash=None, flags=None +Class LibreHardwareManagerManaged2.Class1: AutoLayout, AnsiClass, Class, Public, BeforeFieldInit + Void .ctor(): PrivateScope, Public, HideBySig, SpecialName, RTSpecialName diff --git a/hardware_monitor_wrapper/native/libs/LibreHardwareManagerManaged2.exp b/hardware_monitor_wrapper/native/libs/LibreHardwareManagerManaged2.exp new file mode 100644 index 0000000..b1e18ed Binary files /dev/null and b/hardware_monitor_wrapper/native/libs/LibreHardwareManagerManaged2.exp differ diff --git a/hardware_monitor_wrapper/native/libs/LibreHardwareManagerManaged2.lib b/hardware_monitor_wrapper/native/libs/LibreHardwareManagerManaged2.lib new file mode 100644 index 0000000..ba60e1f Binary files /dev/null and b/hardware_monitor_wrapper/native/libs/LibreHardwareManagerManaged2.lib differ diff --git a/hardware_monitor_wrapper/native/libs/LibreHardwareManagerManaged2.pdb b/hardware_monitor_wrapper/native/libs/LibreHardwareManagerManaged2.pdb new file mode 100644 index 0000000..4248837 Binary files /dev/null and b/hardware_monitor_wrapper/native/libs/LibreHardwareManagerManaged2.pdb differ diff --git a/hardware_monitor_wrapper/native/libs/LibreHardwareMonitorLib.dll b/hardware_monitor_wrapper/native/libs/LibreHardwareMonitorLib.dll new file mode 100644 index 0000000..d26009f Binary files /dev/null and b/hardware_monitor_wrapper/native/libs/LibreHardwareMonitorLib.dll differ diff --git a/hardware_monitor_wrapper/native/libs/LibreHardwareMonitorLib.pdb b/hardware_monitor_wrapper/native/libs/LibreHardwareMonitorLib.pdb new file mode 100644 index 0000000..36a602e Binary files /dev/null and b/hardware_monitor_wrapper/native/libs/LibreHardwareMonitorLib.pdb differ diff --git a/hardware_monitor_wrapper/native/libs/LibreHardwareMonitorLib.xml b/hardware_monitor_wrapper/native/libs/LibreHardwareMonitorLib.xml new file mode 100644 index 0000000..79051d0 --- /dev/null +++ b/hardware_monitor_wrapper/native/libs/LibreHardwareMonitorLib.xml @@ -0,0 +1,2508 @@ + + + + LibreHardwareMonitorLib + + + + + + + + + + + + + + Stores all hardware groups and decides which devices should be enabled and updated. + + + + + Creates a new instance with basic initial . + + + + + Creates a new instance with additional . + + Computer settings that will be transferred to each . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Contains computer information table read in accordance with System Management BIOS (SMBIOS) Reference Specification. + + + + + Triggers the method for the given observer. + + Observer who call to devices. + + + + Triggers the method with the given visitor for each device in each group. + + Observer who call to devices. + + + + If hasn't been opened before, opens , , and triggers the private method depending on which categories are + enabled. + + + + + If opened before, removes all and triggers , and . + + + + + If opened before, removes all and recreates it. + + + + + specific additional settings passed to its . + + + + + Support for the NZXT GRID+ V3 devices. + + + + Support for the KrakenZ devices from NZXT + + + + Initializes a new instance of the class. + + The group. + The thread. + The affinity. + + + + Gets the specified . + + The group. + The thread. + . + + + + Gets the CPUID. + + + + + Gets the CPU index. + + + + + + + + Sets the default fan speed. + + + + + Gets the OverdriveN temperature. + + The type. + The sensor. + The minimum temperature. + The scale. + If set to true, resets the sensor value to null. + + + + Gets a PMLog sensor value. + + The data. + Type of the sensor. + The sensor. + The factor. + If set to true, resets the sensor value to null. + + + + Gets the Overdrive6 power. + + The type. + The sensor. + + + + Initializes a new instance of the class. + + Component name. + Identifier that will be assigned to the device. Based on + Additional settings passed by the . + + + + Gets the device identifier. + + + + + + + + + + + This structure describes a group-specific affinity. + + + + + Initializes a new instance of the struct. + + The group. + The mask. + + + + Gets a single group affinity. + + The group. + The index. + . + + + + Gets the group. + + + + + Gets the mask. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + true if the specified is equal to this instance; otherwise, false. + + + + Returns a hash code for this instance. + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + Implements the == operator. + + The a1. + The a2. + The result of the operator. + + + + Implements the != operator. + + The a1. + The a2. + The result of the operator. + + + + Object representing a component of the computer. + + Individual information can be read from the . + + + + + + Creates a new instance based on the data provided. + + Component name. + Identifier that will be assigned to the device. Based on + Additional settings passed by the . + + + + Event triggered when is closing. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Collection of identifiers representing the purpose of the hardware. + + + + + Handler that will trigger the actions assigned to it when the event occurs. + + Component returned to the assigned action(s). + + + + Basic abstract with methods for the class which can store all hardware and decides which devices are to be checked and updated. + + + + + Triggered when a new is registered. + + + + + Triggered when a is removed. + + + + + Gets a list of all known . + Can be updated by . + + List of all enabled devices. + + + + Gets or sets a value indicating whether collecting information about devices should be enabled and updated. + + if a given category of devices is already enabled. + + + + Gets or sets a value indicating whether collecting information about: + + + + + + + + + + + + + + + + + + devices should be enabled and updated. + + if a given category of devices is already enabled. + + + + Gets or sets a value indicating whether collecting information about devices should be enabled and updated. + + if a given category of devices is already enabled. + + + + Gets or sets a value indicating whether collecting information about or devices should be enabled and updated. + + if a given category of devices is already enabled. + + + + Gets or sets a value indicating whether collecting information about devices should be enabled and updated. + + if a given category of devices is already enabled. + + + + Gets or sets a value indicating whether collecting information about devices should be enabled and updated. + + if a given category of devices is already enabled. + + + + Gets or sets a value indicating whether collecting information about devices should be enabled and updated. + + if a given category of devices is already enabled. + + + + Gets or sets a value indicating whether collecting information about devices should be enabled and updated. + + if a given category of devices is already enabled. + + + + Gets or sets a value indicating whether collecting information about devices should be enabled and updated. + + if a given category of devices is already enabled. + + + + Generates full LibreHardwareMonitor report for devices that have been enabled. + + A formatted text string with library, OS and hardware information. + + + + Represents a unique / identifier in text format with a / separator. + + + + + Creates a new identifier instance based on the base and additional elements. + + Base identifier being the beginning of the new one. + Additional parts by which the base will be extended. + + + + + + + + + + + + + + + + Abstract parent with logic for the abstract class that stores data. + + + + + Accepts the observer for this instance. + + Computer observer making the calls. + + + + Call the method for all child instances (called only from visitors). + + Computer observer making the calls. + + + + A group of devices from one category in one list. + + + + + Gets a list that stores information about in a given group. + + + + + Report containing most of the known information about all in this . + + A formatted text string with hardware information. + + + + Stop updating this group in the future. + + + + + Handler that will trigger the actions assigned to it when the event occurs. + + Component returned to the assigned action(s). + + + + Abstract object that stores information about a device. All sensors are available as an array of . + + Can contain . + Type specified in . + + + + + + + + + + + Gets a unique hardware ID that represents its location. + + + + + Gets or sets device name. + + + + + Gets the device that is the parent of the current hardware. For example, the motherboard is the parent of SuperIO. + + + + + Gets an array of all sensors such as , , etc. + + + + + Gets child devices, e.g. of the . + + + + + Report containing most of the known information about the current device. + + A formatted text string with hardware information. + + + + Refreshes the information stored in array. + + + + + An that will be triggered when a new sensor appears. + + + + + An that will be triggered when one of the sensors is removed. + + + + + Gets rarely changed hardware properties that can't be represented as sensors. + + + + + Abstract object that represents additional parameters included in . + + + + + Gets a parameter default value defined by library. + + + + + Gets a parameter description defined by library. + + + + + Gets a unique parameter ID that represents its location. + + + + + Gets or sets information whether the given is the default for . + + + + + Gets a parameter name defined by library. + + + + + Gets the sensor that is the data container for the given parameter. + + + + + Gets or sets the current value. + + + + + Category of what type the selected sensor is. + + + + + Stores the readed value and the time in which it was recorded. + + + + of the sensor. + The time code during which the was recorded. + + + + Gets the value of the sensor + + + + + Gets the time code during which the was recorded. + + + + + Stores information about the readed values and the time in which they were collected. + + + + + + + + + + Gets the unique identifier of this sensor for a given . + + + + + Gets a maximum value recorded for the given sensor. + + + + + Gets a minimum value recorded for the given sensor. + + + + + Gets or sets a sensor name. + By default determined by the library. + + + + + + + + + + Gets the last recorded value for the given sensor. + + + + + Gets a list of recorded values for the given sensor. + + + + + Resets a value stored in . + + + + + Resets a value stored in . + + + + + Clears the values stored in . + + + + + Abstract object that stores information about the limits of . + + + + + Upper limit of value. + + + + + Lower limit of value. + + + + + Abstract object that stores information about the critical limits of . + + + + + Critical upper limit of value. + + + + + Critical lower limit of value. + + + + + Abstract object that stores settings passed to , and . + + + + + Returns information whether the given collection of settings contains a value assigned to the given key. + + Key to which the setting value is assigned. + + + + Assigns a setting option to a given key. + + Key to which the setting value is assigned. + Text setting value. + + + + Gets a setting option assigned to the given key. + + Key to which the setting value is assigned. + Default value. + + + + Removes a setting with the specified key from the settings collection. + + Key to which the setting value is assigned. + + + + Base interface for creating observers who call to devices. + + + + + Refreshes the values of all in all on selected . + + Instance of the computer to be revisited. + + + + Refreshes the values of all on selected . + + Instance of the hardware to be revisited. + + + + Refreshes the values on selected . + + Instance of the sensor to be revisited. + + + + Refreshes the values on selected . + + Instance of the parameter to be revisited. + + + Chipset temperature [℃] + + + CPU temperature [℃] + + + motherboard temperature [℃] + + + "T_Sensor" temperature sensor reading [℃] + + + VRM temperature [℃] + + + CPU Core voltage [mV] + + + CPU_Opt fan [RPM] + + + VRM heat sink fan [RPM] + + + Chipset fan [RPM] + + + Water Pump [RPM] + + + Water flow sensor reading [RPM] + + + CPU current [A] + + + "Water_In" temperature sensor reading [℃] + + + "Water_Out" temperature sensor reading [℃] + + + Water block temperature sensor reading [℃] + + + + An unsafe but universal implementation for the ACPI Embedded Controller IO interface for Windows + + + It is unsafe because of possible race condition between this application and the PC firmware when + writing to the EC registers. For a safe approach ACPI/WMI methods have to be used, but those are + different for each motherboard model. + + + + + This is a controller present on some Gigabyte motherboards for both Intel and AMD, that is in custom firmware + loaded onto the 2nd ITE EC. + It can be accessed by using memory mapped IO, mapping its internal RAM onto main RAM via the ISA Bridge. + This class can disable it so that the regular IT87XX code can drive the fans. + + + + + Base address in PCI RAM that maps to the EC's RAM + + + + + Enable/Disable Fan Control + + + true on success + + + + Restore settings back to initial values + + + + + Selects another bank. Memory from 0x10-0xAF swaps to data from new bank. + Beware to select the default bank 0 after changing. + Bank selection is reset after power cycle. + + New bank index. Can be a value of 0-3. + + + + Represents the motherboard of a computer with its and as . + + + + + Creates motherboard instance by retrieving information from and creates a new based on data from + and . + + table containing motherboard data. + Additional settings passed by . + + + + + + + + + + + + + + + + Gets the . + + + + + Gets the . + + + + + Gets the name obtained from . + + + + + Always + + + + + + + + + + Gets the information. + + + + + + + + + + + Motherboard itself cannot be updated. Update instead. + + + + + + + + + + + Closes using . + + + + + Opens the mutexes. + + + + + Closes the mutexes. + + + + + Composite class containing information about the selected . + + + + + Creates a new instance and assigns values. + + Name of the selected component. + Description of the selected component. + Default value of the selected component. + + + + Gets a name of the parent . + + + + + Gets a description of the parent . + + + + + Gets a default value of the parent . + + + + + Observer making calls to selected component 's. + + + + + Creates a new observer instance. + + Instance of the that triggers events during visiting the . + + + + Goes through all the components of the specified with its . + + Computer class instance that is derived from the interface. + + + + Goes through all the components of the specified with its . + + Hardware class instance that is derived from the interface. + + + + Goes through all the components of the specified using . + + Sensor class instance that is derived from the interface. + + + + Goes through all the components of the specified . + + + + + Parameter class instance that is derived from the interface. + + + + System enclosure security status based on DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.4.3. + + + + + System enclosure state based on DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.4.2. + + + + + System enclosure type based on DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.4.1. + + + + + Processor family based on DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.5.2. + + + + + Processor characteristics based on DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.5.9. + + + + + Processor type based on DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.5.1. + + + + + Processor socket based on DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.5.5. + + + + + System wake-up type based on DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.2.2. + + + + + Cache associativity based on DMTF SMBIOS Reference Specification v.3.3.0, Chapter 7.8.5. + + + + + Processor cache level. + + + + + Memory type. + + + + + Initializes a new instance of the class. + + The data. + The strings. + + + + Gets the byte. + + The offset. + . + + + + Gets the word. + + The offset. + . + + + + Gets the dword. + + The offset. + . + + + + Gets the qword. + + The offset. + . + + + + Gets the string. + + The offset. + . + + + + Motherboard BIOS information obtained from the SMBIOS table. + + + + + Gets the BIOS release date. + + + + + Gets the size of the physical device containing the BIOS. + + + + + Gets the string number of the BIOS Vendor’s Name. + + + + + Gets the string number of the BIOS Version. This value is a free-form string that may contain Core and OEM version information. + + + + + Gets the size. + + . + + + + Gets the date. + + The bios date. + . + + + + System information obtained from the SMBIOS table. + + + + + Gets the family associated with system. + + This text string identifies the family to which a particular computer belongs. A family refers to a set of computers that are similar but not identical from a hardware or software point of + view. Typically, a family is composed of different computer models, which have different configurations and pricing points. Computers in the same family often have similar branding and cosmetic + features. + + + + + + Gets the manufacturer name associated with system. + + + + + Gets the product name associated with system. + + + + + Gets the serial number string associated with system. + + + + + Gets the version string associated with system. + + + + + Gets + + + + + System enclosure obtained from the SMBIOS table. + + + + + Gets the asset tag associated with the enclosure or chassis. + + + + + Gets + + + + + Gets or sets the system enclosure lock. + + System enclosure lock is present if . Otherwise, either a lock is not present or it is unknown if the enclosure has a lock. + + + + Gets the string describing the chassis or enclosure manufacturer name. + + + + + Gets the number of power cords associated with the enclosure or chassis. + + + + + Gets the state of the enclosure’s power supply (or supplies) when last booted. + + + + + Gets the height of the enclosure, in 'U's. A U is a standard unit of measure for the height of a rack or rack-mountable component and is equal to 1.75 inches or 4.445 cm. A value of 0 + indicates that the enclosure height is unspecified. + + + + + Gets the physical security status of the enclosure when last booted. + + + + + Gets the string describing the chassis or enclosure serial number. + + + + + Gets the string describing the chassis or enclosure SKU number. + + + + + Gets the thermal state of the enclosure when last booted. + + + + + Gets + + + + + Gets the number of null-terminated string representing the chassis or enclosure version. + + + + + Motherboard information obtained from the SMBIOS table. + + + + + Gets the value that represents the manufacturer's name. + + + + + Gets the value that represents the motherboard's name. + + + + + Gets the value that represents the motherboard's serial number. + + + + + Gets the value that represents the motherboard's revision number. + + + + + Processor information obtained from the SMBIOS table. + + + + + Gets the characteristics of the processor. + + + + + Gets the value that represents the number of cores per processor socket. + + + + + Gets the value that represents the number of enabled cores per processor socket. + + + + + Gets the value that represents the current processor speed (in MHz). + + + + + Gets the external Clock Frequency, in MHz. If the value is unknown, the field is set to 0. + + + + + Gets + + + + + Gets the handle. + + The handle. + + + + Gets the identifier. + + + + + Gets the L1 cache handle. + + + + + Gets the L2 cache handle. + + + + + Gets the L3 cache handle. + + + + + Gets the string number of Processor Manufacturer. + + + + + Gets the value that represents the maximum processor speed (in MHz) supported by the system for this processor socket. + + + + + Gets + + + + + Gets the value that represents the string number for the serial number of this processor. + This value is set by the manufacturer and normally not changeable. + + + + + Gets + + + + + Gets the string number for Reference Designation. + + + + + Gets the value that represents the number of threads per processor socket. + + + + + Gets the value that represents the string number describing the Processor. + + + + + Cache information obtained from the SMBIOS table. + + + + + Gets + + + + + Gets + + + + + Gets the handle. + + + + + Gets the value that represents the installed cache size. + + + + + Gets the cache designation. + + . + + + + Memory information obtained from the SMBIOS table. + + + + + Gets the string number of the string that identifies the physically labeled bank where the memory device is located. + + + + + Gets the string number of the string that identifies the physically-labeled socket or board position where the memory device is located. + + + + + Gets the string number for the manufacturer of this memory device. + + + + + Gets the string number for the part number of this memory device. + + + + + Gets the string number for the serial number of this memory device. + + + + + Gets the size of the memory device. If the value is 0, no memory device is installed in the socket. + + + + + Gets the value that identifies the maximum capable speed of the device, in mega transfers per second (MT/s). + + + + + Gets the configured speed of the device, in mega transfers per second (MT/s). + + + + + Gets the configured voltage of this memory device, in millivolts (mV). + + + + + Gets the type of this memory device. + + The type. + + + + Reads and processes information encoded in an SMBIOS table. + + + + + Initializes a new instance of the class. + + + + + Gets + + + + + Gets + + + + + Gets + + + + + Gets + + + + + Gets + + + + + Gets + + + + + Gets + + + + + Report containing most of the information that could be read from the SMBIOS table. + + A formatted text string with computer information and the entire SMBIOS table. + + + + + + + Helper to calculate the disk performance with base timestamps + https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/win32-perfrawdata + + + + + Gets the SMART data. + + + + + Gets the SMART attributes. + + + + + Gets the SMART data. + + + + + Initializes a new instance of the class. + + The SMART id of the attribute. + The name of the attribute. + + + + Initializes a new instance of the class. + + The SMART id of the attribute. + The name of the attribute. + + A delegate for converting the raw byte + array into a value (or null to use the attribute value). + + + + + Initializes a new instance of the class. + + The SMART id of the attribute. + The name of the attribute. + + A delegate for converting the raw byte + array into a value (or null to use the attribute value). + + + Type of the sensor or null if no sensor is to + be created. + + + If there exists more than one attribute with + the same sensor channel and type, then a sensor is created only for the + first attribute. + + + The name to be used for the sensor, or null if + no sensor is created. + + True to hide the sensor initially. + + Description for the parameters of the sensor + (or null). + + + + + Gets the SMART identifier. + + + + + Localization class for SMART attribute names. + + + + + + + + Adds the hardware. + + The settings. + The storage space disk to physical disk map. + + + + Maps each StorageSpace to the PhysicalDisks it is composed of. + + + + + Maps a disk to a physical disk. + + The disk. + The scope. + + + + Reads Smart health status of the drive + + True, if drive is healthy; False, if unhealthy; Null, if it cannot be read + + + + Initializes static members of the class. + + + + + Gets the processor group count. + + + + + Sets the processor group affinity for the current thread. + + The processor group affinity. + The previous processor group affinity. + + + + All OK, but need to wait. + + + + + All OK, but need restart. + + + + + All OK but need mode change. + + + + + All OK, but with warning. + + + + + ADL function completed successfully. + + + + + Generic Error. Most likely one or more of the Escape calls to the driver + failed! + + + + + ADL not initialized. + + + + + One of the parameter passed is invalid. + + + + + One of the parameter size is invalid. + + + + + Invalid ADL index passed. + + + + + Invalid controller index passed. + + + + + Invalid display index passed. + + + + + Function not supported by the driver. + + + + + Null Pointer error. + + + + + Call can't be made due to disabled adapter. + + + + + Invalid Callback. + + + + + Display Resource conflict. + + + + + Failed to update some of the values. Can be returned by set request that + include multiple values if not all values were successfully committed. + + + + + There's no Linux XDisplay in Linux Console environment. + + + + + If set to 1, then the available spare space has fallen below the threshold. + + + + + If set to 1, then a temperature is above an over temperature threshold or below an under temperature threshold. + + + + + If set to 1, then the device reliability has been degraded due to significant media related errors or any internal error that degrades device reliability. + + + + + If set to 1, then the media has been placed in read only mode + + + + + If set to 1, then the volatile memory backup device has failed. This field is only valid if the controller has a volatile memory backup solution. + + + + + Create a instance from a struct with zero initialized memory arrays + no need to init every inner array with the correct sizes + + type of struct that is needed + + + + + SMART data requested. + + + + + Identify data is requested. + + + + + Read SMART data. + + + + + Read SMART thresholds. + obsolete + + + + + Autosave SMART data. + + + + + Save SMART attributes. + + + + + Set SMART to offline immediately. + + + + + Read SMART log. + + + + + Write SMART log. + + + + + Write SMART thresholds. + obsolete + + + + + Enable SMART. + + + + + Disable SMART. + + + + + Get SMART status. + + + + + Set SMART to offline automatically. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bit 0:15 Maximum Power (MP) in centiwatts + + + + + bit 16:23 + + + + + bit 24 Max Power Scale (MPS), bit 25 Non-Operational State (NOPS) + + + + + bit 32:63 Entry Latency (ENLAT) in microseconds + + + + + bit 64:95 Exit Latency (EXLAT) in microseconds + + + + + bit 96:100 Relative Read Throughput (RRT) + + + + + bit 104:108 Relative Read Latency (RRL) + + + + + bit 112:116 Relative Write Throughput (RWT) + + + + + bit 120:124 Relative Write Latency (RWL) + + + + + bit 128:143 Idle Power (IDLP) + + + + + bit 150:151 Idle Power Scale (IPS) + + + + + bit 152:159 + + + + + bit 160:175 Active Power (ACTP) + + + + + bit 176:178 Active Power Workload (APW), bit 182:183 Active Power Scale (APS) + + + + + bit 184:255. + + + + + byte 0:1 M - PCI Vendor ID (VID) + + + + + byte 2:3 M - PCI Subsystem Vendor ID (SSVID) + + + + + byte 4: 23 M - Serial Number (SN) + + + + + byte 24:63 M - Model Number (MN) + + + + + byte 64:71 M - Firmware Revision (FR) + + + + + byte 72 M - Recommended Arbitration Burst (RAB) + + + + + byte 73:75 M - IEEE OUI Identifier (IEEE). Controller Vendor code. + + + + + byte 76 O - Controller Multi-Path I/O and Namespace Sharing Capabilities (CMIC) + + + + + byte 77 M - Maximum Data Transfer Size (MDTS) + + + + + byte 78:79 M - Controller ID (CNTLID) + + + + + byte 80:83 M - Version (VER) + + + + + byte 84:87 M - RTD3 Resume Latency (RTD3R) + + + + + byte 88:91 M - RTD3 Entry Latency (RTD3E) + + + + + byte 92:95 M - Optional Asynchronous Events Supported (OAES) + + + + + byte 96:239. + + + + + byte 240:255. Refer to the NVMe Management Interface Specification for definition. + + + + + byte 256:257 M - Optional Admin Command Support (OACS) + + + + + byte 258 M - Abort Command Limit (ACL) + + + + + byte 259 M - Asynchronous Event Request Limit (AERL) + + + + + byte 260 M - Firmware Updates (FRMW) + + + + + byte 261 M - Log Page Attributes (LPA) + + + + + byte 262 M - Error Log Page Entries (ELPE) + + + + + byte 263 M - Number of Power States Support (NPSS) + + + + + byte 264 M - Admin Vendor Specific Command Configuration (AVSCC) + + + + + byte 265 O - Autonomous Power State Transition Attributes (APSTA) + + + + + byte 266:267 M - Warning Composite Temperature Threshold (WCTEMP) + + + + + byte 268:269 M - Critical Composite Temperature Threshold (CCTEMP) + + + + + byte 270:271 O - Maximum Time for Firmware Activation (MTFA) + + + + + byte 272:275 O - Host Memory Buffer Preferred Size (HMPRE) + + + + + byte 276:279 O - Host Memory Buffer Minimum Size (HMMIN) + + + + + byte 280:295 O - Total NVM Capacity (TNVMCAP) + + + + + byte 296:311 O - Unallocated NVM Capacity (UNVMCAP) + + + + + byte 312:315 O - Replay Protected Memory Block Support (RPMBS) + + + + + byte 316:511 + + + + + byte 512 M - Submission Queue Entry Size (SQES) + + + + + byte 513 M - Completion Queue Entry Size (CQES) + + + + + byte 514:515 + + + + + byte 516:519 M - Number of Namespaces (NN) + + + + + byte 520:521 M - Optional NVM Command Support (ONCS) + + + + + byte 522:523 M - Fused Operation Support (FUSES) + + + + + byte 524 M - Format NVM Attributes (FNA) + + + + + byte 525 M - Volatile Write Cache (VWC) + + + + + byte 526:527 M - Atomic Write Unit Normal (AWUN) + + + + + byte 528:529 M - Atomic Write Unit Power Fail (AWUPF) + + + + + byte 530 M - NVM Vendor Specific Command Configuration (NVSCC) + + + + + byte 531 + + + + + byte 532:533 O - Atomic Compare and Write Unit (ACWU) + + + + + byte 534:535 + + + + + byte 536:539 O - SGL Support (SGLS) + + + + + byte 540:703 + + + + + byte 704:2047 + + + + + byte 2048:3071 Power State Descriptors + + + + + byte 3072:4095 Vendor Specific + + + + + This field indicates critical warnings for the state of the controller. + Each bit corresponds to a critical warning type; multiple bits may be set. + + + + + Composite Temperature: Contains the temperature of the overall device (controller and NVM included) in units of Kelvin. + + + + + Available Spare: Contains a normalized percentage (0 to 100%) of the remaining spare capacity available + + + + + Available Spare Threshold: When the Available Spare falls below the threshold indicated in this field, + an asynchronous event completion may occur. The value is indicated as a normalized percentage (0 to 100%). + + + + + Percentage Used: Contains a vendor specific estimate of the percentage of NVM subsystem life used based on + the actual usage and the manufacturer’s prediction of NVM life. A value of 100 indicates that the estimated endurance of + the NVM in the NVM subsystem has been consumed, but may not indicate an NVM subsystem failure. The value is allowed to exceed 100. + + + + + Data Units Read: Contains the number of 512 byte data units the host has read from the controller; + this value does not include metadata. This value is reported in thousands + (i.e., a value of 1 corresponds to 1000 units of 512 bytes read) and is rounded up. + + + + + Data Units Written: Contains the number of 512 byte data units the host has written to the controller; + this value does not include metadata. This value is reported in thousands + (i.e., a value of 1 corresponds to 1000 units of 512 bytes written) and is rounded up. + + + + + Host Read Commands: Contains the number of read commands completed by the controller. + For the NVM command set, this is the number of Compare and Read commands. + + + + + Host Write Commands: Contains the number of write commands completed by the controller. + For the NVM command set, this is the number of Write commands. + + + + + Controller Busy Time: Contains the amount of time the controller is busy with I/O commands. + + + + + Power Cycles: Contains the number of power cycles. + + + + + Power On Hours: Contains the number of power-on hours. + This does not include time that the controller was powered and in a low power state condition. + + + + + Unsafe Shutdowns: Contains the number of unsafe shutdowns. + This count is incremented when a shutdown notification is not received prior to loss of power. + + + + + Media Errors: Contains the number of occurrences where the controller detected an unrecoverable data integrity error. + Errors such as uncorrectable ECC, CRC checksum failure, or LBA tag mismatch are included in this field. + + + + + Number of Error Information Log Entries: Contains the number of Error Information log entries over the life of the controller + + + + + Warning Composite Temperature Time: Contains the amount of time in minutes that the controller is operational and the Composite Temperature is greater than or equal to the Warning Composite + Temperature Threshold. + + + + + Critical Composite Temperature Time: Contains the amount of time in minutes that the controller is operational and the Composite Temperature is greater than the Critical Composite Temperature + Threshold. + + + + + Contains the current temperature reported by temperature sensor 1-8. + + + + + Gets the resulting IO control code. + + + + + Initializes a new instance of the struct. + + Type of the device. + The function. + The access. + + + + Initializes a new instance of the struct. + + Type of the device. + The function. + The method. + The access. + + + + The operation was successful + + + + + NvidiaML was not first initialized with nvmlInit() + + + + + A supplied argument is invalid + + + + + The requested operation is not available on target device + + + + + The current user does not have permission for operation + + + + + A query to find an object was unsuccessful + + + + + An input argument is not large enough + + + + + A device's external power cables are not properly attached + + + + + NVIDIA driver is not loaded + + + + + User provided timeout passed + + + + + NVIDIA Kernel detected an interrupt issue with a GPU + + + + + NvidiaML Shared Library couldn't be found or loaded + + + + + Local version of NvidiaML doesn't implement this function + + + + + infoROM is corrupted + + + + + The GPU has fallen off the bus or has otherwise become inaccessible + + + + + The GPU requires a reset before it can be used again + + + + + The GPU control device has been blocked by the operating system/cgroups + + + + + RM detects a driver/library version mismatch + + + + + An operation cannot be performed because the GPU is currently in use + + + + + An public driver error occurred + + + + + Driver with access at kernel level. + + + + + Contains Win32 definitions for Windows NT. + + + + + Describes a local identifier for an adapter. + + + + + Represents a 64-bit signed integer value. + + + + + Contains basic information about the operating system. + + + + + Statically checks if the current system and . + + + + + Gets information about whether the current system is 64 bit. + + + + + Gets information about whether the current system is Unix based. + + + + + Returns true if the current system is Windows 8 or a more recent Windows version + + + + diff --git a/hardware_monitor_wrapper/native/libs/Microsoft.Win32.TaskScheduler.dll b/hardware_monitor_wrapper/native/libs/Microsoft.Win32.TaskScheduler.dll new file mode 100644 index 0000000..b60ba70 Binary files /dev/null and b/hardware_monitor_wrapper/native/libs/Microsoft.Win32.TaskScheduler.dll differ diff --git a/hardware_monitor_wrapper/native/libs/Newtonsoft.Json.dll b/hardware_monitor_wrapper/native/libs/Newtonsoft.Json.dll new file mode 100644 index 0000000..341d08f Binary files /dev/null and b/hardware_monitor_wrapper/native/libs/Newtonsoft.Json.dll differ diff --git a/hardware_monitor_wrapper/native/libs/OxyPlot.WindowsForms.dll b/hardware_monitor_wrapper/native/libs/OxyPlot.WindowsForms.dll new file mode 100644 index 0000000..a7834aa Binary files /dev/null and b/hardware_monitor_wrapper/native/libs/OxyPlot.WindowsForms.dll differ diff --git a/hardware_monitor_wrapper/native/libs/OxyPlot.dll b/hardware_monitor_wrapper/native/libs/OxyPlot.dll new file mode 100644 index 0000000..a9dc07c Binary files /dev/null and b/hardware_monitor_wrapper/native/libs/OxyPlot.dll differ diff --git a/hardware_monitor_wrapper/native/libs/System.CodeDom.dll b/hardware_monitor_wrapper/native/libs/System.CodeDom.dll new file mode 100644 index 0000000..27e74c8 Binary files /dev/null and b/hardware_monitor_wrapper/native/libs/System.CodeDom.dll differ diff --git a/hardware_monitor_wrapper/native/libs/System.IO.Ports.dll b/hardware_monitor_wrapper/native/libs/System.IO.Ports.dll new file mode 100644 index 0000000..bca861d Binary files /dev/null and b/hardware_monitor_wrapper/native/libs/System.IO.Ports.dll differ diff --git a/hardware_monitor_wrapper/native/libs/System.Management.dll b/hardware_monitor_wrapper/native/libs/System.Management.dll new file mode 100644 index 0000000..70fda59 Binary files /dev/null and b/hardware_monitor_wrapper/native/libs/System.Management.dll differ diff --git a/hardware_monitor_wrapper/native/libs/System.Security.AccessControl.dll b/hardware_monitor_wrapper/native/libs/System.Security.AccessControl.dll new file mode 100644 index 0000000..c3a9766 Binary files /dev/null and b/hardware_monitor_wrapper/native/libs/System.Security.AccessControl.dll differ diff --git a/hardware_monitor_wrapper/native/libs/System.Security.Principal.Windows.dll b/hardware_monitor_wrapper/native/libs/System.Security.Principal.Windows.dll new file mode 100644 index 0000000..54f7829 Binary files /dev/null and b/hardware_monitor_wrapper/native/libs/System.Security.Principal.Windows.dll differ diff --git a/resources/icon.png b/hardware_monitor_wrapper/native/libs/icon.png similarity index 100% rename from resources/icon.png rename to hardware_monitor_wrapper/native/libs/icon.png diff --git a/hardware_monitor_wrapper/native/memory.cpp b/hardware_monitor_wrapper/native/memory.cpp new file mode 100644 index 0000000..751a0df --- /dev/null +++ b/hardware_monitor_wrapper/native/memory.cpp @@ -0,0 +1,134 @@ +#include "include.h" +#pragma comment(lib, "wbemuuid.lib") + +Napi::Value mem_used_size(const Napi::CallbackInfo& info){ + Napi::Env env = info.Env(); + + for (Hardware hardware:computer->getHardware()){ + if(hardware.getHardwareType()==HardwareType::Memory){ + for(Sensor sen:hardware.getSensors()){ + char *name=sen.getName(); + if(sen.getType()==SensorType::Data && (strcmp(name, "Memory Used")==0)){ + delete[] name; + return Napi::Number::New(env, sen.getValue()); + } + delete[] name; + } + } + } + return env.Null(); + +} +Napi::Value vmem_used_size(const Napi::CallbackInfo& info){ + Napi::Env env = info.Env(); + + for (Hardware hardware:computer->getHardware()){ + if(hardware.getHardwareType()==HardwareType::Memory){ + for(Sensor sen:hardware.getSensors()){ + char *name=sen.getName(); + if(sen.getType()==SensorType::Data && (strcmp(name, "Virtual Memory Used")==0)){ + delete[] name; + return Napi::Number::New(env, sen.getValue()); + } + delete[] name; + } + } + } + return env.Null(); + +} +Napi::Value mem_free_size(const Napi::CallbackInfo& info){ + Napi::Env env = info.Env(); + + for (Hardware hardware:computer->getHardware()){ + if(hardware.getHardwareType()==HardwareType::Memory){ + for(Sensor sen:hardware.getSensors()){ + char *name=sen.getName(); + if(sen.getType()==SensorType::Data && (strcmp(name, "Memory Available")==0)){ + delete[] name; + return Napi::Number::New(env, sen.getValue()); + } + delete[] name; + } + } + } + return env.Null(); + +} +Napi::Value vmem_free_size(const Napi::CallbackInfo& info){ + Napi::Env env = info.Env(); + + for (Hardware hardware:computer->getHardware()){ + if(hardware.getHardwareType()==HardwareType::Memory){ + for(Sensor sen:hardware.getSensors()){ + char *name=sen.getName(); + if(sen.getType()==SensorType::Data && (strcmp(name, "Virtual Memory Available")==0)){ + delete[] name; + return Napi::Number::New(env, sen.getValue()); + } + delete[] name; + } + } + } + return env.Null(); + +} + +Napi::Value mem_clock(const Napi::CallbackInfo& info){ + Napi::Env env = info.Env(); + + for (Hardware hardware:computer->getHardware()){ + if(hardware.getHardwareType()==HardwareType::Memory){ + for(Sensor sen:hardware.getSensors()){ + if(sen.getType()==SensorType::Clock){ + return Napi::Number::New(env, sen.getValue()); + } + } + } + } + return env.Null(); +} + + + +Napi::Value mem_size(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + HRESULT hr; + IWbemLocator* pLoc = nullptr; + hr = CoCreateInstance(CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID*)&pLoc); + IWbemServices* pSvc = nullptr; + hr = pLoc->ConnectServer(_bstr_t(L"ROOT\\CIMV2"), nullptr, nullptr, 0, NULL, 0, 0, &pSvc); + hr = CoSetProxyBlanket(pSvc, RPC_C_AUTHN_WINNT, RPC_C_AUTHZ_NONE, nullptr, RPC_C_AUTHN_LEVEL_CALL, RPC_C_IMP_LEVEL_IMPERSONATE, nullptr, EOAC_NONE); + + // 查询总容量 + IEnumWbemClassObject* pEnumerator = nullptr; + hr = pSvc->ExecQuery(_bstr_t(L"WQL"), _bstr_t(L"SELECT Capacity FROM Win32_PhysicalMemory"), WBEM_FLAG_FORWARD_ONLY, nullptr, &pEnumerator); + + ULONG uReturn = 0; + IWbemClassObject* pObj = nullptr; + DWORD totalCapacity = 0; + while (pEnumerator->Next(WBEM_INFINITE, 1, &pObj, &uReturn) == S_OK) { + VARIANT vtCapacity; + hr = pObj->Get(L"Capacity", 0, &vtCapacity, nullptr, nullptr); + totalCapacity += vtCapacity.ullVal / (1024 * 1024 * 1024); // 转换为GB + VariantClear(&vtCapacity); + pObj->Release(); + } + + pSvc->Release(); + pLoc->Release(); + return Napi::Number::New(env, totalCapacity); + +} +Napi::String mem_name(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + + for (Hardware hardware:computer->getHardware()){ + if(hardware.getHardwareType()==HardwareType::Memory){ + return Napi::String::New(env, hardware.Name()); + + } + } + return Napi::String::New(env, ""); + +} \ No newline at end of file diff --git a/hardware_monitor_wrapper/native/monitor.cpp b/hardware_monitor_wrapper/native/monitor.cpp new file mode 100644 index 0000000..f942363 --- /dev/null +++ b/hardware_monitor_wrapper/native/monitor.cpp @@ -0,0 +1,22 @@ +#include "include.h" +#include +#include + +Napi::Array monitor_info(const Napi::CallbackInfo& info){ + Napi::Env env=info.Env(); + int i=0; + DISPLAY_DEVICE device; + Napi::Array array; + for(int i=0;i("pixWidth",settings.dmPelsWidth); + deviceObj.Set("pixHeight",settings.dmPelsHeight); + deviceObj.Set("colorDepth",settings.dmBitsPerPel); + deviceObj.Set("freq",settings.dmDisplayFrequency); + array.Set(i, deviceObj); + } + i++; + return array; +} \ No newline at end of file diff --git a/hardware_monitor_wrapper/native/storage.cpp b/hardware_monitor_wrapper/native/storage.cpp new file mode 100644 index 0000000..2047c4b --- /dev/null +++ b/hardware_monitor_wrapper/native/storage.cpp @@ -0,0 +1,31 @@ +#include "include.h" +Napi::Array disk_name(const Napi::CallbackInfo& info){ + Napi::Env env = info.Env(); + Napi::Array array; + int i=0; + for (Hardware hardware:computer->getHardware()){ + if(hardware.getHardwareType()==HardwareType::Storage){ + Napi::String str2= Napi::String::New(env,hardware.Name()); + array.Set(i, str2); + i++; + } + } + return array; +} +Napi::Array current_disk_used(const Napi::CallbackInfo& info){ + Napi::Env env = info.Env(); + Napi::Array myarray=Napi::Array::New(env); + std::vector hardwares=computer->getHardware(); + for (int i=0;i(i, sen.getValue()); + } + } + } + } + return myarray; +} \ No newline at end of file diff --git a/hardware_monitor_wrapper/package.json b/hardware_monitor_wrapper/package.json new file mode 100644 index 0000000..869337a --- /dev/null +++ b/hardware_monitor_wrapper/package.json @@ -0,0 +1,18 @@ +{ + "name": "hardwaremonitor", + "version": "1.0.0", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "install": "node-gyp configure && node-gyp build" + }, + "private": true, + "keywords": [], + "author": "", + "license": "ISC", + "gypfile": true, + "description": "", + "dependencies": { + "node-addon-api": "^8.3.1" + } +} diff --git a/icon.png b/icon.png new file mode 100644 index 0000000..cf9e8b2 Binary files /dev/null and b/icon.png differ diff --git a/index.js b/index.js new file mode 100644 index 0000000..4f42db2 --- /dev/null +++ b/index.js @@ -0,0 +1,51 @@ +"use strict"; +const electron = require("electron"); +const path = require("path"); +const utils = require("@electron-toolkit/utils"); +const hardware_monitor = require("./hardware_monitor.node"); +const icon = path.join(__dirname, "../../resources/hardware_monitor/icon.png"); +function handleQueryCpuName() { + return hardware_monitor.cpu_temperature(); +} +function createWindow() { + const mainWindow = new electron.BrowserWindow({ + width: 900, + height: 670, + show: false, + autoHideMenuBar: true, + ...process.platform === "linux" ? { icon } : {}, + webPreferences: { + preload: path.join(__dirname, "../preload/index.js"), + sandbox: false + } + }); + mainWindow.on("ready-to-show", () => { + mainWindow.show(); + }); + mainWindow.webContents.setWindowOpenHandler((details) => { + electron.shell.openExternal(details.url); + return { action: "deny" }; + }); + if (utils.is.dev && process.env["ELECTRON_RENDERER_URL"]) { + mainWindow.loadURL(process.env["ELECTRON_RENDERER_URL"]); + } else { + mainWindow.loadFile(path.join(__dirname, "../renderer/index.html")); + } +} +electron.app.whenReady().then(() => { + electron.ipcMain.handle("queryCpuName", handleQueryCpuName); + utils.electronApp.setAppUserModelId("com.electron"); + electron.app.on("browser-window-created", (_, window) => { + utils.optimizer.watchWindowShortcuts(window); + }); + electron.ipcMain.on("ping", () => console.log("pong")); + createWindow(); + electron.app.on("activate", function() { + if (electron.BrowserWindow.getAllWindows().length === 0) createWindow(); + }); +}); +electron.app.on("window-all-closed", () => { + if (process.platform !== "darwin") { + electron.app.quit(); + } +}); diff --git a/package-lock.json b/package-lock.json index bcf6749..5347858 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,8 @@ "dependencies": { "@electron-toolkit/preload": "^3.0.1", "@electron-toolkit/utils": "^4.0.0", + "@electron/rebuild": "^4.0.1", + "electron-log": "^5.4.0", "vue-router": "^4.5.1" }, "devDependencies": { @@ -581,21 +583,20 @@ } }, "node_modules/@electron/rebuild": { - "version": "3.6.1", - "resolved": "https://registry.npmmirror.com/@electron/rebuild/-/rebuild-3.6.1.tgz", - "integrity": "sha512-f6596ZHpEq/YskUd8emYvOUne89ij8mQgjYFA5ru25QwbrRO+t1SImofdDv7kKOuWCmVOuU5tvfkbgGxIl3E/w==", - "dev": true, + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/@electron/rebuild/-/rebuild-4.0.1.tgz", + "integrity": "sha512-iMGXb6Ib7H/Q3v+BKZJoETgF9g6KMNZVbsO4b7Dmpgb5qTFqyFTzqW9F3TOSHdybv2vKYKzSS9OiZL+dcJb+1Q==", "license": "MIT", "dependencies": { "@malept/cross-spawn-promise": "^2.0.0", "chalk": "^4.0.0", "debug": "^4.1.1", "detect-libc": "^2.0.1", - "fs-extra": "^10.0.0", "got": "^11.7.0", - "node-abi": "^3.45.0", - "node-api-version": "^0.2.0", - "node-gyp": "^9.0.0", + "graceful-fs": "^4.2.11", + "node-abi": "^4.2.0", + "node-api-version": "^0.2.1", + "node-gyp": "^11.2.0", "ora": "^5.1.0", "read-binary-file-arch": "^1.0.6", "semver": "^7.3.5", @@ -606,42 +607,321 @@ "electron-rebuild": "lib/cli.js" }, "engines": { - "node": ">=12.13.0" + "node": ">=22.12.0" } }, - "node_modules/@electron/rebuild/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "license": "MIT", + "node_modules/@electron/rebuild/node_modules/@npmcli/fs": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@npmcli/fs/-/fs-4.0.0.tgz", + "integrity": "sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==", + "license": "ISC", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "semver": "^7.3.5" }, "engines": { - "node": ">=12" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/@electron/rebuild/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, + "node_modules/@electron/rebuild/node_modules/abbrev": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/abbrev/-/abbrev-3.0.1.tgz", + "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==", + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@electron/rebuild/node_modules/cacache": { + "version": "19.0.1", + "resolved": "https://registry.npmmirror.com/cacache/-/cacache-19.0.1.tgz", + "integrity": "sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==", + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^4.0.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^7.0.2", + "ssri": "^12.0.0", + "tar": "^7.4.3", + "unique-filename": "^4.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@electron/rebuild/node_modules/cacache/node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmmirror.com/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "license": "ISC", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@electron/rebuild/node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@electron/rebuild/node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@electron/rebuild/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmmirror.com/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@electron/rebuild/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/@electron/rebuild/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/@electron/rebuild/node_modules/make-fetch-happen": { + "version": "14.0.3", + "resolved": "https://registry.npmmirror.com/make-fetch-happen/-/make-fetch-happen-14.0.3.tgz", + "integrity": "sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==", + "license": "ISC", + "dependencies": { + "@npmcli/agent": "^3.0.0", + "cacache": "^19.0.1", + "http-cache-semantics": "^4.1.1", + "minipass": "^7.0.2", + "minipass-fetch": "^4.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^1.0.0", + "proc-log": "^5.0.0", + "promise-retry": "^2.0.1", + "ssri": "^12.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@electron/rebuild/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@electron/rebuild/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@electron/rebuild/node_modules/minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@electron/rebuild/node_modules/minipass-fetch": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/minipass-fetch/-/minipass-fetch-4.0.1.tgz", + "integrity": "sha512-j7U11C5HXigVuutxebFadoYBbd7VSdZWggSe64NVdvWNBqGAiXPL2QVCehjmw7lY1oF9gOllYbORh+hiNgfPgQ==", "license": "MIT", "dependencies": { - "universalify": "^2.0.0" + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^3.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" }, "optionalDependencies": { - "graceful-fs": "^4.1.6" + "encoding": "^0.1.13" + } + }, + "node_modules/@electron/rebuild/node_modules/minizlib": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-3.0.2.tgz", + "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@electron/rebuild/node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@electron/rebuild/node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@electron/rebuild/node_modules/node-abi": { + "version": "4.9.0", + "resolved": "https://registry.npmmirror.com/node-abi/-/node-abi-4.9.0.tgz", + "integrity": "sha512-0isb3h+AXUblx5Iv0mnYy2WsErH+dk2e9iXJXdKAtS076Q5hP+scQhp6P4tvDeVlOBlG3ROKvkpQHtbORllq2A==", + "license": "MIT", + "dependencies": { + "semver": "^7.6.3" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@electron/rebuild/node_modules/node-gyp": { + "version": "11.2.0", + "resolved": "https://registry.npmmirror.com/node-gyp/-/node-gyp-11.2.0.tgz", + "integrity": "sha512-T0S1zqskVUSxcsSTkAsLc7xCycrRYmtDHadDinzocrThjyQCn5kMlEBSj6H4qDbgsIOSLmmlRIeb0lZXj+UArA==", + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^14.0.3", + "nopt": "^8.0.0", + "proc-log": "^5.0.0", + "semver": "^7.3.5", + "tar": "^7.4.3", + "tinyglobby": "^0.2.12", + "which": "^5.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@electron/rebuild/node_modules/node-gyp/node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmmirror.com/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "license": "ISC", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@electron/rebuild/node_modules/nopt": { + "version": "8.1.0", + "resolved": "https://registry.npmmirror.com/nopt/-/nopt-8.1.0.tgz", + "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==", + "license": "ISC", + "dependencies": { + "abbrev": "^3.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@electron/rebuild/node_modules/p-map": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-7.0.3.tgz", + "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@electron/rebuild/node_modules/semver": { "version": "7.7.2", "resolved": "https://registry.npmmirror.com/semver/-/semver-7.7.2.tgz", "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -650,14 +930,64 @@ "node": ">=10" } }, - "node_modules/@electron/rebuild/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", + "node_modules/@electron/rebuild/node_modules/ssri": { + "version": "12.0.0", + "resolved": "https://registry.npmmirror.com/ssri/-/ssri-12.0.0.tgz", + "integrity": "sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, "engines": { - "node": ">= 10.0.0" + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@electron/rebuild/node_modules/unique-filename": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/unique-filename/-/unique-filename-4.0.0.tgz", + "integrity": "sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==", + "license": "ISC", + "dependencies": { + "unique-slug": "^5.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@electron/rebuild/node_modules/unique-slug": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/unique-slug/-/unique-slug-5.0.0.tgz", + "integrity": "sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==", + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@electron/rebuild/node_modules/which": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@electron/rebuild/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" } }, "node_modules/@electron/universal": { @@ -1437,7 +1767,6 @@ "version": "8.0.2", "resolved": "https://registry.npmmirror.com/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, "license": "ISC", "dependencies": { "string-width": "^5.1.2", @@ -1455,7 +1784,6 @@ "version": "6.1.0", "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.1.0.tgz", "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -1468,7 +1796,6 @@ "version": "6.2.1", "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -1481,14 +1808,12 @@ "version": "9.2.2", "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, "license": "MIT" }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", @@ -1506,7 +1831,6 @@ "version": "7.1.0", "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" @@ -1522,7 +1846,6 @@ "version": "8.1.0", "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", @@ -1536,6 +1859,27 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@isaacs/fs-minipass/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.8", "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", @@ -1592,7 +1936,6 @@ "version": "2.0.0", "resolved": "https://registry.npmmirror.com/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", - "dev": true, "funding": [ { "type": "individual", @@ -1704,6 +2047,42 @@ "node": ">= 8" } }, + "node_modules/@npmcli/agent": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/@npmcli/agent/-/agent-3.0.0.tgz", + "integrity": "sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==", + "license": "ISC", + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/@npmcli/agent/node_modules/socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://registry.npmmirror.com/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/@npmcli/fs": { "version": "2.1.2", "resolved": "https://registry.npmmirror.com/@npmcli/fs/-/fs-2.1.2.tgz", @@ -1750,7 +2129,6 @@ "version": "0.11.0", "resolved": "https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, "license": "MIT", "optional": true, "engines": { @@ -2712,7 +3090,6 @@ "version": "7.1.3", "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-7.1.3.tgz", "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", - "dev": true, "license": "MIT", "engines": { "node": ">= 14" @@ -2783,7 +3160,6 @@ "version": "5.0.1", "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2793,7 +3169,6 @@ "version": "4.3.0", "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -2860,6 +3235,35 @@ "electron-builder-squirrel-windows": "25.1.8" } }, + "node_modules/app-builder-lib/node_modules/@electron/rebuild": { + "version": "3.6.1", + "resolved": "https://registry.npmmirror.com/@electron/rebuild/-/rebuild-3.6.1.tgz", + "integrity": "sha512-f6596ZHpEq/YskUd8emYvOUne89ij8mQgjYFA5ru25QwbrRO+t1SImofdDv7kKOuWCmVOuU5tvfkbgGxIl3E/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@malept/cross-spawn-promise": "^2.0.0", + "chalk": "^4.0.0", + "debug": "^4.1.1", + "detect-libc": "^2.0.1", + "fs-extra": "^10.0.0", + "got": "^11.7.0", + "node-abi": "^3.45.0", + "node-api-version": "^0.2.0", + "node-gyp": "^9.0.0", + "ora": "^5.1.0", + "read-binary-file-arch": "^1.0.6", + "semver": "^7.3.5", + "tar": "^6.0.5", + "yargs": "^17.0.1" + }, + "bin": { + "electron-rebuild": "lib/cli.js" + }, + "engines": { + "node": ">=12.13.0" + } + }, "node_modules/app-builder-lib/node_modules/fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz", @@ -3079,14 +3483,12 @@ "version": "1.0.2", "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, "license": "MIT" }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, "funding": [ { "type": "github", @@ -3107,7 +3509,6 @@ "version": "4.1.0", "resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, "license": "MIT", "dependencies": { "buffer": "^5.5.0", @@ -3151,7 +3552,6 @@ "version": "2.0.1", "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -3207,7 +3607,6 @@ "version": "5.7.1", "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, "funding": [ { "type": "github", @@ -3481,7 +3880,6 @@ "version": "4.1.2", "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3498,7 +3896,6 @@ "version": "2.0.0", "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, "license": "ISC", "engines": { "node": ">=10" @@ -3541,7 +3938,6 @@ "version": "3.1.0", "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" @@ -3554,7 +3950,6 @@ "version": "2.9.2", "resolved": "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.9.2.tgz", "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -3585,7 +3980,6 @@ "version": "8.0.1", "resolved": "https://registry.npmmirror.com/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -3600,7 +3994,6 @@ "version": "1.0.4", "resolved": "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz", "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.8" @@ -3622,7 +4015,6 @@ "version": "2.0.1", "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3635,7 +4027,6 @@ "version": "1.1.4", "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, "license": "MIT" }, "node_modules/color-support": { @@ -3828,7 +4219,6 @@ "version": "7.0.6", "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -3920,7 +4310,6 @@ "version": "1.0.4", "resolved": "https://registry.npmmirror.com/defaults/-/defaults-1.0.4.tgz", "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, "license": "MIT", "dependencies": { "clone": "^1.0.2" @@ -3995,7 +4384,6 @@ "version": "2.0.4", "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-2.0.4.tgz", "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", - "dev": true, "license": "Apache-2.0", "engines": { "node": ">=8" @@ -4174,7 +4562,6 @@ "version": "0.2.0", "resolved": "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, "license": "MIT" }, "node_modules/ejs": { @@ -4330,6 +4717,15 @@ "node": ">= 10.0.0" } }, + "node_modules/electron-log": { + "version": "5.4.0", + "resolved": "https://registry.npmmirror.com/electron-log/-/electron-log-5.4.0.tgz", + "integrity": "sha512-AXI5OVppskrWxEAmCxuv8ovX+s2Br39CpCAgkGMNHQtjYT3IiVbSQTncEjFVGPgoH35ZygRm/mvUMBDWwhRxgg==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, "node_modules/electron-publish": { "version": "25.1.7", "resolved": "https://registry.npmmirror.com/electron-publish/-/electron-publish-25.1.7.tgz", @@ -4425,14 +4821,12 @@ "version": "8.0.0", "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, "license": "MIT" }, "node_modules/encoding": { "version": "0.1.13", "resolved": "https://registry.npmmirror.com/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -4473,7 +4867,6 @@ "version": "2.0.3", "resolved": "https://registry.npmmirror.com/err-code/-/err-code-2.0.3.tgz", "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true, "license": "MIT" }, "node_modules/es-define-property": { @@ -4577,7 +4970,6 @@ "version": "3.2.0", "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -4867,7 +5259,6 @@ "version": "3.1.2", "resolved": "https://registry.npmmirror.com/exponential-backoff/-/exponential-backoff-3.1.2.tgz", "integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==", - "dev": true, "license": "Apache-2.0" }, "node_modules/extract-zip": { @@ -5069,7 +5460,6 @@ "version": "3.3.1", "resolved": "https://registry.npmmirror.com/foreground-child/-/foreground-child-3.3.1.tgz", "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, "license": "ISC", "dependencies": { "cross-spawn": "^7.0.6", @@ -5086,7 +5476,6 @@ "version": "4.1.0", "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, "license": "ISC", "engines": { "node": ">=14" @@ -5138,7 +5527,6 @@ "version": "2.1.0", "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, "license": "ISC", "dependencies": { "minipass": "^3.0.0" @@ -5214,7 +5602,6 @@ "version": "2.0.5", "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" @@ -5449,7 +5836,6 @@ "version": "4.0.0", "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -5570,7 +5956,6 @@ "version": "7.0.2", "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, "license": "MIT", "dependencies": { "agent-base": "^7.1.0", @@ -5597,7 +5982,6 @@ "version": "7.0.6", "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, "license": "MIT", "dependencies": { "agent-base": "^7.1.2", @@ -5639,7 +6023,7 @@ "version": "0.6.3", "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -5652,7 +6036,6 @@ "version": "1.2.1", "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, "funding": [ { "type": "github", @@ -5700,7 +6083,6 @@ "version": "0.1.4", "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.8.19" @@ -5739,14 +6121,12 @@ "version": "2.0.4", "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, "license": "ISC" }, "node_modules/ip-address": { "version": "9.0.5", "resolved": "https://registry.npmmirror.com/ip-address/-/ip-address-9.0.5.tgz", "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", - "dev": true, "license": "MIT", "dependencies": { "jsbn": "1.1.0", @@ -5783,7 +6163,6 @@ "version": "3.0.0", "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -5806,7 +6185,6 @@ "version": "1.0.0", "resolved": "https://registry.npmmirror.com/is-interactive/-/is-interactive-1.0.0.tgz", "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -5833,7 +6211,6 @@ "version": "0.1.0", "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -5867,14 +6244,12 @@ "version": "2.0.0", "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, "license": "ISC" }, "node_modules/jackspeak": { "version": "3.4.3", "resolved": "https://registry.npmmirror.com/jackspeak/-/jackspeak-3.4.3.tgz", "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" @@ -5953,7 +6328,6 @@ "version": "1.1.0", "resolved": "https://registry.npmmirror.com/jsbn/-/jsbn-1.1.0.tgz", "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "dev": true, "license": "MIT" }, "node_modules/jsesc": { @@ -6172,7 +6546,6 @@ "version": "4.1.0", "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.1.0", @@ -6380,7 +6753,6 @@ "version": "2.1.0", "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -6425,7 +6797,6 @@ "version": "3.3.6", "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -6469,7 +6840,6 @@ "version": "1.0.5", "resolved": "https://registry.npmmirror.com/minipass-flush/-/minipass-flush-1.0.5.tgz", "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, "license": "ISC", "dependencies": { "minipass": "^3.0.0" @@ -6482,7 +6852,6 @@ "version": "1.2.4", "resolved": "https://registry.npmmirror.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, "license": "ISC", "dependencies": { "minipass": "^3.0.0" @@ -6495,7 +6864,6 @@ "version": "1.0.3", "resolved": "https://registry.npmmirror.com/minipass-sized/-/minipass-sized-1.0.3.tgz", "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "dev": true, "license": "ISC", "dependencies": { "minipass": "^3.0.0" @@ -6508,14 +6876,12 @@ "version": "4.0.0", "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, "license": "ISC" }, "node_modules/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, "license": "MIT", "dependencies": { "minipass": "^3.0.0", @@ -6529,14 +6895,12 @@ "version": "4.0.0", "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, "license": "ISC" }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" @@ -6631,7 +6995,6 @@ "version": "0.2.1", "resolved": "https://registry.npmmirror.com/node-api-version/-/node-api-version-0.2.1.tgz", "integrity": "sha512-2xP/IGGMmmSQpI1+O/k72jF/ykvZ89JeuKX3TLJAYPDVLUalrshrLHkeVcCCZqG/eEa635cr8IBYzgnDvM2O8Q==", - "dev": true, "license": "MIT", "dependencies": { "semver": "^7.3.5" @@ -6641,7 +7004,6 @@ "version": "7.7.2", "resolved": "https://registry.npmmirror.com/semver/-/semver-7.7.2.tgz", "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -6788,7 +7150,6 @@ "version": "5.1.2", "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" @@ -6822,7 +7183,6 @@ "version": "5.4.1", "resolved": "https://registry.npmmirror.com/ora/-/ora-5.4.1.tgz", "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, "license": "MIT", "dependencies": { "bl": "^4.1.0", @@ -6903,7 +7263,6 @@ "version": "1.0.1", "resolved": "https://registry.npmmirror.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true, "license": "BlueOak-1.0.0" }, "node_modules/parent-module": { @@ -6950,7 +7309,6 @@ "version": "3.1.1", "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -6960,7 +7318,6 @@ "version": "1.11.1", "resolved": "https://registry.npmmirror.com/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^10.2.0", @@ -6977,14 +7334,12 @@ "version": "10.4.3", "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, "license": "ISC" }, "node_modules/path-scurry/node_modules/minipass": { "version": "7.1.2", "resolved": "https://registry.npmmirror.com/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" @@ -7126,6 +7481,15 @@ "node": ">=6.0.0" } }, + "node_modules/proc-log": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/proc-log/-/proc-log-5.0.0.tgz", + "integrity": "sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==", + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -7154,7 +7518,6 @@ "version": "2.0.1", "resolved": "https://registry.npmmirror.com/promise-retry/-/promise-retry-2.0.1.tgz", "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "dev": true, "license": "MIT", "dependencies": { "err-code": "^2.0.2", @@ -7221,7 +7584,6 @@ "version": "1.0.6", "resolved": "https://registry.npmmirror.com/read-binary-file-arch/-/read-binary-file-arch-1.0.6.tgz", "integrity": "sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==", - "dev": true, "license": "MIT", "dependencies": { "debug": "^4.3.4" @@ -7234,7 +7596,6 @@ "version": "3.6.2", "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, "license": "MIT", "dependencies": { "inherits": "^2.0.3", @@ -7274,7 +7635,6 @@ "version": "2.1.1", "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -7330,7 +7690,6 @@ "version": "3.1.0", "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, "license": "MIT", "dependencies": { "onetime": "^5.1.0", @@ -7344,7 +7703,6 @@ "version": "0.12.0", "resolved": "https://registry.npmmirror.com/retry/-/retry-0.12.0.tgz", "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true, "license": "MIT", "engines": { "node": ">= 4" @@ -7471,7 +7829,6 @@ "version": "5.2.1", "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, "funding": [ { "type": "github", @@ -7492,7 +7849,7 @@ "version": "2.1.2", "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/sanitize-filename": { @@ -7555,7 +7912,6 @@ "version": "2.0.0", "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" @@ -7568,7 +7924,6 @@ "version": "3.0.0", "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -7578,7 +7933,6 @@ "version": "3.0.7", "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, "license": "ISC" }, "node_modules/simple-update-notifier": { @@ -7627,7 +7981,6 @@ "version": "4.2.0", "resolved": "https://registry.npmmirror.com/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 6.0.0", @@ -7638,7 +7991,6 @@ "version": "2.8.4", "resolved": "https://registry.npmmirror.com/socks/-/socks-2.8.4.tgz", "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", - "dev": true, "license": "MIT", "dependencies": { "ip-address": "^9.0.5", @@ -7711,7 +8063,6 @@ "version": "1.1.3", "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.1.3.tgz", "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "devOptional": true, "license": "BSD-3-Clause" }, "node_modules/ssri": { @@ -7741,7 +8092,6 @@ "version": "1.3.0", "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" @@ -7751,7 +8101,6 @@ "version": "4.2.3", "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -7767,7 +8116,6 @@ "version": "4.2.3", "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -7782,7 +8130,6 @@ "version": "6.0.1", "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -7796,7 +8143,6 @@ "version": "6.0.1", "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -7834,7 +8180,6 @@ "version": "7.2.0", "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -7863,7 +8208,6 @@ "version": "6.2.1", "resolved": "https://registry.npmmirror.com/tar/-/tar-6.2.1.tgz", "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", - "dev": true, "license": "ISC", "dependencies": { "chownr": "^2.0.0", @@ -7899,7 +8243,6 @@ "version": "5.0.0", "resolved": "https://registry.npmmirror.com/minipass/-/minipass-5.0.0.tgz", "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, "license": "ISC", "engines": { "node": ">=8" @@ -7909,7 +8252,6 @@ "version": "4.0.0", "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, "license": "ISC" }, "node_modules/temp-file": { @@ -7965,7 +8307,6 @@ "version": "0.2.14", "resolved": "https://registry.npmmirror.com/tinyglobby/-/tinyglobby-0.2.14.tgz", "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", - "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.4.4", @@ -7982,7 +8323,6 @@ "version": "6.4.5", "resolved": "https://registry.npmmirror.com/fdir/-/fdir-6.4.5.tgz", "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==", - "dev": true, "license": "MIT", "peerDependencies": { "picomatch": "^3 || ^4" @@ -7997,7 +8337,6 @@ "version": "4.0.2", "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.2.tgz", "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -8218,7 +8557,6 @@ "version": "1.0.2", "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, "license": "MIT" }, "node_modules/verror": { @@ -8442,7 +8780,6 @@ "version": "1.0.1", "resolved": "https://registry.npmmirror.com/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, "license": "MIT", "dependencies": { "defaults": "^1.0.3" @@ -8452,7 +8789,6 @@ "version": "2.0.2", "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -8488,7 +8824,6 @@ "version": "7.0.0", "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -8507,7 +8842,6 @@ "version": "7.0.0", "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -8551,7 +8885,6 @@ "version": "5.0.8", "resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, "license": "ISC", "engines": { "node": ">=10" @@ -8568,7 +8901,6 @@ "version": "17.7.2", "resolved": "https://registry.npmmirror.com/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, "license": "MIT", "dependencies": { "cliui": "^8.0.1", @@ -8587,7 +8919,6 @@ "version": "21.1.1", "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, "license": "ISC", "engines": { "node": ">=12" diff --git a/package.json b/package.json index 3b6d5d9..e110824 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "typecheck:web": "vue-tsc --noEmit -p tsconfig.web.json --composite false", "typecheck": "npm run typecheck:node && npm run typecheck:web", "start": "electron-vite preview", - "dev": "electron-vite dev", + "dev": "cd hardware_monitor_wrapper && npx electron-rebuild -v 35.1.5 && cd .. && electron-vite dev", "build": "npm run typecheck && electron-vite build", "postinstall": "electron-builder install-app-deps", "build:unpack": "npm run build && electron-builder --dir", @@ -23,6 +23,8 @@ "dependencies": { "@electron-toolkit/preload": "^3.0.1", "@electron-toolkit/utils": "^4.0.0", + "@electron/rebuild": "^4.0.1", + "electron-log": "^5.4.0", "vue-router": "^4.5.1" }, "devDependencies": { diff --git a/resources/hardware_monitor/Aga.Controls.dll b/resources/hardware_monitor/Aga.Controls.dll new file mode 100644 index 0000000..9cfec0f Binary files /dev/null and b/resources/hardware_monitor/Aga.Controls.dll differ diff --git a/resources/hardware_monitor/Aga.Controls.pdb b/resources/hardware_monitor/Aga.Controls.pdb new file mode 100644 index 0000000..39490ae Binary files /dev/null and b/resources/hardware_monitor/Aga.Controls.pdb differ diff --git a/resources/hardware_monitor/Demo.sys b/resources/hardware_monitor/Demo.sys new file mode 100644 index 0000000..197c255 Binary files /dev/null and b/resources/hardware_monitor/Demo.sys differ diff --git a/resources/hardware_monitor/LibreHardwareManagerManaged2.dll b/resources/hardware_monitor/LibreHardwareManagerManaged2.dll index 7610a6d..221244e 100644 Binary files a/resources/hardware_monitor/LibreHardwareManagerManaged2.dll and b/resources/hardware_monitor/LibreHardwareManagerManaged2.dll differ diff --git a/resources/hardware_monitor/LibreHardwareManagerManaged2.dll.metagen b/resources/hardware_monitor/LibreHardwareManagerManaged2.dll.metagen index 4ece22c..76cecbd 100644 --- a/resources/hardware_monitor/LibreHardwareManagerManaged2.dll.metagen +++ b/resources/hardware_monitor/LibreHardwareManagerManaged2.dll.metagen @@ -3,6 +3,8 @@ Assembly LibreHardwareManagerManaged2, Version=1.0.*, Culture=固定语言(固 hash=SHA1, flags=PublicKey Assembly mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089: hash=None, flags=None +Assembly Aga.Controls, Version=1.7.*, Culture=固定语言(固定国家/地区): + hash=None, flags=None Assembly LibreHardwareMonitorLib, Version=0.9.*, Culture=固定语言(固定国家/地区): hash=None, flags=None Assembly System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089: diff --git a/resources/hardware_monitor/LibreHardwareManagerManaged2.exp b/resources/hardware_monitor/LibreHardwareManagerManaged2.exp index 9bff154..b1e18ed 100644 Binary files a/resources/hardware_monitor/LibreHardwareManagerManaged2.exp and b/resources/hardware_monitor/LibreHardwareManagerManaged2.exp differ diff --git a/resources/hardware_monitor/LibreHardwareManagerManaged2.lib b/resources/hardware_monitor/LibreHardwareManagerManaged2.lib index 7890dce..ba60e1f 100644 Binary files a/resources/hardware_monitor/LibreHardwareManagerManaged2.lib and b/resources/hardware_monitor/LibreHardwareManagerManaged2.lib differ diff --git a/resources/hardware_monitor/LibreHardwareManagerManaged2.pdb b/resources/hardware_monitor/LibreHardwareManagerManaged2.pdb index 46549bd..4248837 100644 Binary files a/resources/hardware_monitor/LibreHardwareManagerManaged2.pdb and b/resources/hardware_monitor/LibreHardwareManagerManaged2.pdb differ diff --git a/resources/hardware_monitor/LibreHardwareMonitorLib.dll b/resources/hardware_monitor/LibreHardwareMonitorLib.dll index 7135d35..d26009f 100644 Binary files a/resources/hardware_monitor/LibreHardwareMonitorLib.dll and b/resources/hardware_monitor/LibreHardwareMonitorLib.dll differ diff --git a/resources/hardware_monitor/LibreHardwareMonitorLib.pdb b/resources/hardware_monitor/LibreHardwareMonitorLib.pdb index 9bc9cae..36a602e 100644 Binary files a/resources/hardware_monitor/LibreHardwareMonitorLib.pdb and b/resources/hardware_monitor/LibreHardwareMonitorLib.pdb differ diff --git a/resources/hardware_monitor/LibreHardwareMonitorLib.xml b/resources/hardware_monitor/LibreHardwareMonitorLib.xml index 96bc133..79051d0 100644 --- a/resources/hardware_monitor/LibreHardwareMonitorLib.xml +++ b/resources/hardware_monitor/LibreHardwareMonitorLib.xml @@ -108,15 +108,8 @@ Support for the NZXT GRID+ V3 devices. - - - Support for the Kraken X (X42, X52, X62 or X72) devices. - - - - Support for the KrakenZ devices. - + Support for the KrakenZ devices from NZXT @@ -152,19 +145,6 @@ Sets the default fan speed. - - - Gets a sensor value. - - - Current pmlog struct, used with pmlog-support/start. - Legacy pmlogdataoutput struct, used with ADL2_New_QueryPMLogData_Get. - Type of the sensor. - The sensor. - The factor. - If set to true, resets the sensor value to null. - true if sensor is supported, false otherwise - Gets the OverdriveN temperature. @@ -175,6 +155,16 @@ The scale. If set to true, resets the sensor value to null. + + + Gets a PMLog sensor value. + + The data. + Type of the sensor. + The sensor. + The factor. + If set to true, resets the sensor value to null. + Gets the Overdrive6 power. @@ -446,14 +436,6 @@ Base identifier being the beginning of the new one. Additional parts by which the base will be extended. - - - Creates a new identifier instance based on the supplied . - If available the identifier will consist of the vendor-id, product-id and serial number of the HidDevice. - Alternatively a platform dependent identifier based on the usb device-path is generated. - - The this identifier will be created for. - @@ -802,9 +784,6 @@ "T_Sensor" temperature sensor reading [℃] - - "T_Sensor 2" temperature sensor reading [℃] - VRM temperature [℃] @@ -848,7 +827,7 @@ different for each motherboard model. - + This is a controller present on some Gigabyte motherboards for both Intel and AMD, that is in custom firmware loaded onto the 2nd ITE EC. @@ -856,19 +835,19 @@ This class can disable it so that the regular IT87XX code can drive the fans. - + Base address in PCI RAM that maps to the EC's RAM - + Enable/Disable Fan Control true on success - + Restore settings back to initial values @@ -1471,9 +1450,7 @@ - Gets the size of the memory device. - If the value is 0, no memory device is installed in the socket. - If the value is 0xFFFF, the size is unknown. + Gets the size of the memory device. If the value is 0, no memory device is installed in the socket. @@ -1771,63 +1748,6 @@ There's no Linux XDisplay in Linux Console environment. - - list of sensors defined by ADL_PMLOG_SENSORS - - - Reserved - - - list of sensors defined by ADL_PMLOG_SENSORS - - - Sample rate in milliseconds - - - Reserved - - - Pointer to memory address containing logging data - - - Structure version - - - Current driver sample rate - - - Timestamp of last update - - - Reserved - - - Memory size in bytes. - - - Memory type in string. - - - Highest default performance level Memory bandwidth in Mbytes/s - - - HyperMemory size in bytes. - - - Invisible Memory size in bytes. - - - Visible Memory size in bytes. - - - Vram vendor ID - - - Memory Bandiwidth that is calculated and finalized on the driver side, grab and go. - - - Memory Bit Rate that is calculated and finalized on the driver side, grab and go. - If set to 1, then the available spare space has fallen below the threshold. diff --git a/resources/hardware_monitor/Microsoft.Win32.TaskScheduler.dll b/resources/hardware_monitor/Microsoft.Win32.TaskScheduler.dll new file mode 100644 index 0000000..b60ba70 Binary files /dev/null and b/resources/hardware_monitor/Microsoft.Win32.TaskScheduler.dll differ diff --git a/resources/hardware_monitor/Newtonsoft.Json.dll b/resources/hardware_monitor/Newtonsoft.Json.dll new file mode 100644 index 0000000..341d08f Binary files /dev/null and b/resources/hardware_monitor/Newtonsoft.Json.dll differ diff --git a/resources/hardware_monitor/OxyPlot.WindowsForms.dll b/resources/hardware_monitor/OxyPlot.WindowsForms.dll new file mode 100644 index 0000000..a7834aa Binary files /dev/null and b/resources/hardware_monitor/OxyPlot.WindowsForms.dll differ diff --git a/resources/hardware_monitor/OxyPlot.dll b/resources/hardware_monitor/OxyPlot.dll new file mode 100644 index 0000000..a9dc07c Binary files /dev/null and b/resources/hardware_monitor/OxyPlot.dll differ diff --git a/resources/hardware_monitor/System.CodeDom.dll b/resources/hardware_monitor/System.CodeDom.dll new file mode 100644 index 0000000..27e74c8 Binary files /dev/null and b/resources/hardware_monitor/System.CodeDom.dll differ diff --git a/resources/hardware_monitor/System.IO.Ports.dll b/resources/hardware_monitor/System.IO.Ports.dll new file mode 100644 index 0000000..bca861d Binary files /dev/null and b/resources/hardware_monitor/System.IO.Ports.dll differ diff --git a/resources/hardware_monitor/System.Management.dll b/resources/hardware_monitor/System.Management.dll new file mode 100644 index 0000000..70fda59 Binary files /dev/null and b/resources/hardware_monitor/System.Management.dll differ diff --git a/resources/hardware_monitor/System.Security.AccessControl.dll b/resources/hardware_monitor/System.Security.AccessControl.dll new file mode 100644 index 0000000..c3a9766 Binary files /dev/null and b/resources/hardware_monitor/System.Security.AccessControl.dll differ diff --git a/resources/hardware_monitor/System.Security.Principal.Windows.dll b/resources/hardware_monitor/System.Security.Principal.Windows.dll new file mode 100644 index 0000000..54f7829 Binary files /dev/null and b/resources/hardware_monitor/System.Security.Principal.Windows.dll differ diff --git a/resources/hardware_monitor/hardware_monitor.iobj b/resources/hardware_monitor/hardware_monitor.iobj index a36f556..666985e 100644 Binary files a/resources/hardware_monitor/hardware_monitor.iobj and b/resources/hardware_monitor/hardware_monitor.iobj differ diff --git a/resources/hardware_monitor/hardware_monitor.ipdb b/resources/hardware_monitor/hardware_monitor.ipdb index 7792fdb..7cf2843 100644 Binary files a/resources/hardware_monitor/hardware_monitor.ipdb and b/resources/hardware_monitor/hardware_monitor.ipdb differ diff --git a/resources/hardware_monitor/hardware_monitor.node b/resources/hardware_monitor/hardware_monitor.node index 98944f2..2bf133b 100644 Binary files a/resources/hardware_monitor/hardware_monitor.node and b/resources/hardware_monitor/hardware_monitor.node differ diff --git a/resources/hardware_monitor/hardware_monitor.pdb b/resources/hardware_monitor/hardware_monitor.pdb index 23a1ec9..163254a 100644 Binary files a/resources/hardware_monitor/hardware_monitor.pdb and b/resources/hardware_monitor/hardware_monitor.pdb differ diff --git a/resources/hardware_monitor/icon.png b/resources/hardware_monitor/icon.png new file mode 100644 index 0000000..cf9e8b2 Binary files /dev/null and b/resources/hardware_monitor/icon.png differ diff --git a/src/main/index.ts b/src/main/index.ts index 7a35fa8..a75d0ab 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -1,11 +1,17 @@ import { app, shell, BrowserWindow, ipcMain } from 'electron' import { join } from 'path' import { electronApp, optimizer, is } from '@electron-toolkit/utils' -import icon from '../../resources/icon.png?asset' -import hardware_monitor from '../../resources/hardware_monitor/hardware_monitor.node' +import icon from '../../resources/hardware_monitor/icon.png?asset' +const log = require('electron-log'); +console.log(log.transports.file.getFile().path); +log.transports.console.level = 'debug' +import hardware_monitor from '../hardware_monitor.node' function handleQueryCpuName () { - hardware_monitor.cpu_name() + return hardware_monitor.name() } +process.on('uncaughtException', (error) => { + log.error('未捕获异常:', error); +}); function createWindow(): void { // Create the browser window. const mainWindow = new BrowserWindow({ @@ -42,7 +48,7 @@ function createWindow(): void { // initialization and is ready to create browser windows. // Some APIs can only be used after this event occurs. app.whenReady().then(() => { - //ipcMain.handle('queryCpuName', handleQueryCpuName) + ipcMain.handle('queryCpuName', handleQueryCpuName) // Set app user model id for windows electronApp.setAppUserModelId('com.electron')