@gjsify/os 0.3.20 → 0.3.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- function e(e,t,n,r){let i=`0`.repeat(e);return a=>{let o=(`1`.repeat(parseInt(a,10))+i).slice(0,e),s=[];for(let r=0;r<e;r+=t)s.push(parseInt(o.substr(r,t),2).toString(n));return s.join(r)}}var t={createSubnet:e};export{e as createSubnet,t as default};
1
+ function createSubnet(e,t,n,r){let i=`0`.repeat(e);return a=>{let o=(`1`.repeat(parseInt(a,10))+i).slice(0,e),s=[];for(let r=0;r<e;r+=t)s.push(parseInt(o.substr(r,t),2).toString(n));return s.join(r)}}var e={createSubnet};export{createSubnet,e as default};
package/lib/esm/darwin.js CHANGED
@@ -1,3 +1,3 @@
1
- import{createSubnet as e}from"./createSubnet.js";import{cli as t}from"@gjsify/utils";const n=`00:00:00:00:00:00`,r=e(128,16,16,`:`),i=function(e){if(e=e.trim(),e.length<1||!/\binet\b/.test(e))return;let t=e.split(`
2
- `),i=[],a=t.length,o=n;for(let e,s=0;s<a;s++)switch(e=t[s],!0){case/ether\s+((?:\S{2}:)+\S{2})/.test(e):o=RegExp.$1;break;case/inet\s+(\d+\.\d+\.\d+\.\d+)\s+netmask\s+0x(.{2})(.{2})(.{2})(.{2})/.test(e):i.push({address:RegExp.$1,netmask:[parseInt(RegExp.$2,16),parseInt(RegExp.$3,16),parseInt(RegExp.$4,16),parseInt(RegExp.$5,16)].join(`.`),family:`IPv4`,mac:o,internal:RegExp.$1===`127.0.0.1`});break;case/inet6\s+((?:\S{0,4}:)+\S{1,4}).+?prefixlen\s+(\d+)/.test(e):i.push({address:RegExp.$1,netmask:r(RegExp.$2),family:`IPv6`,mac:o,internal:o!==n});break}this[e.slice(0,e.indexOf(`:`))]=i},a=()=>{let e=parseFloat(t(`sysctl -n hw.ncpu`)),n=[];for(;e--;)n.push({model:t(`sysctl -n machdep.cpu.brand_string`).replace(/\s+/g,` `),speed:parseFloat(t(`sysctl -n hw.cpufrequency`))/1e3/1e3,get times(){return console.warn(`cpus.times is not supported`),{}}});return n},o=()=>`LE`,s=()=>{try{let e=t(`vm_stat`),n=/page size of (\d+) bytes/.exec(e),r=n?parseInt(n[1],10):16384,i=0,a=/Pages free:\s+(\d+)/.exec(e);a&&(i+=parseInt(a[1],10));let o=/Pages speculative:\s+(\d+)/.exec(e);o&&(i+=parseInt(o[1],10));let s=/Pages purgeable:\s+(\d+)/.exec(e);if(s&&(i+=parseInt(s[1],10)),i>0)return i*r}catch{}try{return parseFloat(t(`sysctl -n hw.memsize`))-parseFloat(t(`sysctl -n hw.physmem`))}catch{return 0}},c=()=>/load\s+averages:\s+(\d+(?:\.\d+))\s+(\d+(?:\.\d+))\s+(\d+(?:\.\d+))/.test(t(`uptime`))&&[parseFloat(RegExp.$1),parseFloat(RegExp.$2),parseFloat(RegExp.$3)],l=()=>{let e={},n=[],r=t(`ifconfig`).split(/\r\n|\n/),a=r.length;for(let e=[],t=/^\S+?:/,i=0;i<a;i++){if(t.test(r[i])){for(e=[r[i]];++i<a&&!t.test(r[i]);)e.push(r[i]);--i}n.push(e.join(`
3
- `))}return n.forEach(i,e),e},u=()=>{try{return parseFloat(t(`sysctl -n hw.memsize`))}catch{return 0}},d=()=>{try{let e=t(`sysctl -n kern.boottime`),n=/sec\s*=\s*(\d+)/.exec(e);if(n){let e=parseInt(n[1],10);return Math.floor(Date.now()/1e3)-e}}catch{}let e=t(`uptime`),n=/up\s+([^,]+)?,/.test(e)&&RegExp.$1;switch(!0){case/^(\d+):(\d+)$/.test(n):return(parseInt(RegExp.$1,10)*60+parseInt(RegExp.$2,10))*60;case/^(\d+)\s+mins?$/.test(n):return parseInt(RegExp.$1,10)*60;case/^(\d+)\s+days?$/.test(n):{let t=parseInt(RegExp.$1,10)*86400,n=/days?,\s+(\d+):(\d+)/.exec(e);return n?t+(parseInt(n[1],10)*60+parseInt(n[2],10))*60:t}}return 0};export{a as cpus,o as endianness,s as freemem,c as loadavg,l as networkInterfaces,u as totalmem,d as uptime};
1
+ import{createSubnet as e}from"./createSubnet.js";import{cli as t}from"@gjsify/utils";const n=`00:00:00:00:00:00`,r=e(128,16,16,`:`),parseInterfaces=function(e){if(e=e.trim(),e.length<1||!/\binet\b/.test(e))return;let t=e.split(`
2
+ `),i=[],a=t.length,o=n;for(let e,s=0;s<a;s++)switch(e=t[s],!0){case/ether\s+((?:\S{2}:)+\S{2})/.test(e):o=RegExp.$1;break;case/inet\s+(\d+\.\d+\.\d+\.\d+)\s+netmask\s+0x(.{2})(.{2})(.{2})(.{2})/.test(e):i.push({address:RegExp.$1,netmask:[parseInt(RegExp.$2,16),parseInt(RegExp.$3,16),parseInt(RegExp.$4,16),parseInt(RegExp.$5,16)].join(`.`),family:`IPv4`,mac:o,internal:RegExp.$1===`127.0.0.1`});break;case/inet6\s+((?:\S{0,4}:)+\S{1,4}).+?prefixlen\s+(\d+)/.test(e):i.push({address:RegExp.$1,netmask:r(RegExp.$2),family:`IPv6`,mac:o,internal:o!==n});break}this[e.slice(0,e.indexOf(`:`))]=i},cpus=()=>{let e=parseFloat(t(`sysctl -n hw.ncpu`)),n=[];for(;e--;)n.push({model:t(`sysctl -n machdep.cpu.brand_string`).replace(/\s+/g,` `),speed:parseFloat(t(`sysctl -n hw.cpufrequency`))/1e3/1e3,get times(){return console.warn(`cpus.times is not supported`),{}}});return n},endianness=()=>`LE`,freemem=()=>{try{let e=t(`vm_stat`),n=/page size of (\d+) bytes/.exec(e),r=n?parseInt(n[1],10):16384,i=0,a=/Pages free:\s+(\d+)/.exec(e);a&&(i+=parseInt(a[1],10));let o=/Pages speculative:\s+(\d+)/.exec(e);o&&(i+=parseInt(o[1],10));let s=/Pages purgeable:\s+(\d+)/.exec(e);if(s&&(i+=parseInt(s[1],10)),i>0)return i*r}catch{}try{return parseFloat(t(`sysctl -n hw.memsize`))-parseFloat(t(`sysctl -n hw.physmem`))}catch{return 0}},loadavg=()=>/load\s+averages:\s+(\d+(?:\.\d+))\s+(\d+(?:\.\d+))\s+(\d+(?:\.\d+))/.test(t(`uptime`))&&[parseFloat(RegExp.$1),parseFloat(RegExp.$2),parseFloat(RegExp.$3)],networkInterfaces=()=>{let e={},n=[],r=t(`ifconfig`).split(/\r\n|\n/),i=r.length;for(let e=[],t=/^\S+?:/,a=0;a<i;a++){if(t.test(r[a])){for(e=[r[a]];++a<i&&!t.test(r[a]);)e.push(r[a]);--a}n.push(e.join(`
3
+ `))}return n.forEach(parseInterfaces,e),e},totalmem=()=>{try{return parseFloat(t(`sysctl -n hw.memsize`))}catch{return 0}},uptime=()=>{try{let e=t(`sysctl -n kern.boottime`),n=/sec\s*=\s*(\d+)/.exec(e);if(n){let e=parseInt(n[1],10);return Math.floor(Date.now()/1e3)-e}}catch{}let e=t(`uptime`),n=/up\s+([^,]+)?,/.test(e)&&RegExp.$1;switch(!0){case/^(\d+):(\d+)$/.test(n):return(parseInt(RegExp.$1,10)*60+parseInt(RegExp.$2,10))*60;case/^(\d+)\s+mins?$/.test(n):return parseInt(RegExp.$1,10)*60;case/^(\d+)\s+days?$/.test(n):{let t=parseInt(RegExp.$1,10)*86400,n=/days?,\s+(\d+):(\d+)/.exec(e);return n?t+(parseInt(n[1],10)*60+parseInt(n[2],10))*60:t}}return 0};export{cpus,endianness,freemem,loadavg,networkInterfaces,totalmem,uptime};
package/lib/esm/index.js CHANGED
@@ -1,3 +1,3 @@
1
- import e from"./constants.js";import{cpus as t,endianness as n,freemem as r,loadavg as i,networkInterfaces as a,totalmem as o,uptime as s}from"./darwin.js";import{cpus as c,endianness as l,freemem as u,loadavg as d,networkInterfaces as f,totalmem as p,uptime as m}from"./linux.js";import{cli as h,getPathSeparator as g}from"@gjsify/utils";import _ from"@girs/gio-2.0";import v from"@girs/glib-2.0";let y=``;const b=()=>{if(y)return y;let e=h(`uname -o`).trim();return/\bDarwin\b/i.test(e)?(y=`darwin`,y):/\bLinux\b/i.test(e)?(y=`linux`,y):(y=`win32`,y)};let x=0;const S=()=>(x||=new _.Credentials().get_unix_pid(),x),C=g()===`/`?`
1
+ import e from"./constants.js";import{cpus as t,endianness as n,freemem as r,loadavg as i,networkInterfaces as a,totalmem as o,uptime as s}from"./darwin.js";import{cpus as c,endianness as l,freemem as u,loadavg as d,networkInterfaces as f,totalmem as p,uptime as m}from"./linux.js";import{cli as h,getPathSeparator as g}from"@gjsify/utils";import _ from"@girs/gio-2.0";import v from"@girs/glib-2.0";let y=``;const getOs=()=>{if(y)return y;let e=h(`uname -o`).trim();return/\bDarwin\b/i.test(e)?(y=`darwin`,y):/\bLinux\b/i.test(e)?(y=`linux`,y):(y=`win32`,y)};let b=0;const getPid=()=>(b||=new _.Credentials().get_unix_pid(),b),x=g()===`/`?`
2
2
  `:`\r
3
- `,w=g()===`/`?`/dev/null`:`\\\\.\\nul`,T=()=>v.get_home_dir(),E=()=>v.get_host_name(),D=()=>h(`uname -r`).trim(),O=()=>v.get_tmp_dir(),k=()=>h(`uname`).trim(),A=()=>h(`uname -s`).trim().toLowerCase(),j=()=>{let e=h(`uname -m`).trim();return e===`x86_64`||e===`amd64`?`x64`:e===`aarch64`||e===`arm64`?`arm64`:e===`i686`||e===`i386`?`ia32`:e.startsWith(`arm`)?`arm`:e},M=()=>h(`uname -m`).trim(),N=()=>h(`uname -v`).trim(),P=()=>{switch(b()){case`darwin`:return s();case`linux`:return m();default:return 0}},F=()=>{switch(b()){case`darwin`:return o();case`linux`:return p();default:return 0}},I=()=>{let e=R();return e?e.length:1},L=()=>{let e=1e3,t=100,n=``;try{e=parseInt(h(`id -u`),10),t=parseInt(h(`id -g`),10),n=v.getenv(`SHELL`)||``}catch{}return{uid:e,gid:t,username:v.get_user_name(),homedir:v.get_home_dir(),shell:n}},R=()=>{let e=b();switch(e){case`darwin`:return t();case`linux`:return c();default:console.warn(`${e} is not supported!`);break}},z=()=>{let e=b();switch(e){case`darwin`:return n();case`linux`:return l();default:console.warn(`${e} is not supported!`);break}},B=()=>{let e=b();switch(e){case`darwin`:return r();case`linux`:return u();default:console.warn(`${e} is not supported!`);break}},V=()=>{let e=b();switch(e){case`darwin`:return i();case`linux`:return d();default:console.warn(`${e} is not supported!`);break}},H=()=>{let e=b();switch(e){case`darwin`:return a();case`linux`:return f();default:console.warn(`${e} is not supported!`);break}},U=e=>{let t=e===void 0||e===0?S():e;try{let e=h(`ps -o ni= -p ${t}`).trim(),n=parseInt(e,10);if(!isNaN(n))return n}catch{}return 0},W=(e,t)=>{let n,r;if(t===void 0?(r=e,n=0):(n=e,r=t),typeof n!=`number`||!Number.isInteger(n))throw TypeError(`The "pid" argument must be an integer`);if(typeof r!=`number`||!Number.isInteger(r)||r<-20||r>19)throw RangeError(`The "priority" argument must be an integer between -20 and 19`);try{let e=n===0?S():n;h(`renice -n ${r} -p ${e}`)}catch{let e=Error(`A system error occurred: priority could not be set`);throw e.code=`ERR_SYSTEM_ERROR`,e}};var G={EOL:C,arch:j,availableParallelism:I,constants:e,cpus:R,devNull:w,endianness:z,freemem:B,getPriority:U,homedir:T,hostname:E,loadavg:V,machine:M,networkInterfaces:H,platform:A,release:D,setPriority:W,tmpdir:O,totalmem:F,type:k,uptime:P,userInfo:L,version:N};export{C as EOL,j as arch,I as availableParallelism,e as constants,R as cpus,G as default,w as devNull,z as endianness,B as freemem,U as getPriority,T as homedir,E as hostname,V as loadavg,M as machine,H as networkInterfaces,A as platform,D as release,W as setPriority,O as tmpdir,F as totalmem,k as type,P as uptime,L as userInfo,N as version};
3
+ `,S=g()===`/`?`/dev/null`:`\\\\.\\nul`,homedir=()=>v.get_home_dir(),hostname=()=>v.get_host_name(),release=()=>h(`uname -r`).trim(),tmpdir=()=>v.get_tmp_dir(),type=()=>h(`uname`).trim(),platform=()=>h(`uname -s`).trim().toLowerCase(),arch=()=>{let e=h(`uname -m`).trim();return e===`x86_64`||e===`amd64`?`x64`:e===`aarch64`||e===`arm64`?`arm64`:e===`i686`||e===`i386`?`ia32`:e.startsWith(`arm`)?`arm`:e},machine=()=>h(`uname -m`).trim(),version=()=>h(`uname -v`).trim(),uptime=()=>{switch(getOs()){case`darwin`:return s();case`linux`:return m();default:return 0}},totalmem=()=>{switch(getOs()){case`darwin`:return o();case`linux`:return p();default:return 0}},availableParallelism=()=>{let e=cpus();return e?e.length:1},userInfo=()=>{let e=1e3,t=100,n=``;try{e=parseInt(h(`id -u`),10),t=parseInt(h(`id -g`),10),n=v.getenv(`SHELL`)||``}catch{}return{uid:e,gid:t,username:v.get_user_name(),homedir:v.get_home_dir(),shell:n}},cpus=()=>{let e=getOs();switch(e){case`darwin`:return t();case`linux`:return c();default:console.warn(`${e} is not supported!`);break}},endianness=()=>{let e=getOs();switch(e){case`darwin`:return n();case`linux`:return l();default:console.warn(`${e} is not supported!`);break}},freemem=()=>{let e=getOs();switch(e){case`darwin`:return r();case`linux`:return u();default:console.warn(`${e} is not supported!`);break}},loadavg=()=>{let e=getOs();switch(e){case`darwin`:return i();case`linux`:return d();default:console.warn(`${e} is not supported!`);break}},networkInterfaces=()=>{let e=getOs();switch(e){case`darwin`:return a();case`linux`:return f();default:console.warn(`${e} is not supported!`);break}},getPriority=e=>{let t=e===void 0||e===0?getPid():e;try{let e=h(`ps -o ni= -p ${t}`).trim(),n=parseInt(e,10);if(!isNaN(n))return n}catch{}return 0},setPriority=(e,t)=>{let n,r;if(t===void 0?(r=e,n=0):(n=e,r=t),typeof n!=`number`||!Number.isInteger(n))throw TypeError(`The "pid" argument must be an integer`);if(typeof r!=`number`||!Number.isInteger(r)||r<-20||r>19)throw RangeError(`The "priority" argument must be an integer between -20 and 19`);try{let e=n===0?getPid():n;h(`renice -n ${r} -p ${e}`)}catch{let e=Error(`A system error occurred: priority could not be set`);throw e.code=`ERR_SYSTEM_ERROR`,e}};var C={EOL:x,arch,availableParallelism,constants:e,cpus,devNull:S,endianness,freemem,getPriority,homedir,hostname,loadavg,machine,networkInterfaces,platform,release,setPriority,tmpdir,totalmem,type,uptime,userInfo,version};export{x as EOL,arch,availableParallelism,e as constants,cpus,C as default,S as devNull,endianness,freemem,getPriority,homedir,hostname,loadavg,machine,networkInterfaces,platform,release,setPriority,tmpdir,totalmem,type,uptime,userInfo,version};
package/lib/esm/linux.js CHANGED
@@ -1,5 +1,5 @@
1
- import{createSubnet as e}from"./createSubnet.js";import{cli as t}from"@gjsify/utils";import n from"@girs/glib-2.0";const r=imports.byteArray,i=/\r\n|\n/;function a(e){let[t,i]=n.file_get_contents(e);return!t||!i?``:r.toString(i)}const o=e(32,8,10,`.`),s=e(128,16,16,`:`);function c(e){if(e=e.trim(),e.length<1)return;let t=[],n;for(let r,a=e.split(i),c=0;c<a.length;c++)switch(r=a[c],!0){case/link\/\S+\s+((?:\S{2}:)+\S{2})/.test(r):n=RegExp.$1;break;case/inet(\d*)\s+(\S+)/.test(r):let e=RegExp.$2.split(`/`),i=RegExp.$1||`4`;t.push({address:e[0],netmask:(i===`4`?o:s)(e[1]),family:`IPv`+i,mac:n,internal:e[0]===`127.0.0.1`});break}n&&(this[e.slice(0,e.indexOf(`:`))]=t)}const l=()=>{let e=/^processor\s*:\s*(\d+)/i,t=/^model[\s_]+name\s*:([^\r\n]+)/i,n=/^cpu[\s_]+MHz\s*:\s*(\d+)/i,r=[],o;a(`/proc/cpuinfo`).split(i).forEach(i=>{switch(!0){case e.test(i):r[RegExp.$1.trim()]=o={model:``,speed:0,times:{user:0,nice:0,sys:0,idle:0,irq:0}};break;case t.test(i):o.model=RegExp.$1.trim();break;case n.test(i):o.speed=parseFloat(RegExp.$1.trim());break}});try{let e=a(`/proc/stat`).split(i);for(let t of e){let e=/^cpu(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+\d+\s+(\d+)/.exec(t);e&&r[parseInt(e[1],10)]&&(r[parseInt(e[1],10)].times={user:parseInt(e[2],10)*10,nice:parseInt(e[3],10)*10,sys:parseInt(e[4],10)*10,idle:parseInt(e[5],10)*10,irq:parseInt(e[6],10)*10})}}catch{}return r},u=()=>`LE`,d=()=>{let e=a(`/proc/meminfo`),t=0;for(let n of e.split(`
2
- `)){let e=/^MemAvailable:\s+(\d+)\s+kB/.exec(n);if(e)return parseInt(e[1],10)*1024;let r=/^MemFree:\s+(\d+)\s+kB/.exec(n);r&&(t=parseInt(r[1],10)*1024)}return t},f=()=>/(\d+(?:\.\d+))\s+(\d+(?:\.\d+))\s+(\d+(?:\.\d+))/.test(a(`/proc/loadavg`))&&[parseFloat(RegExp.$1),parseFloat(RegExp.$2),parseFloat(RegExp.$3)],p=()=>{try{let e={};return t(`ip addr`).split(/^\d+:\s+/m).forEach(c,e),e}catch{return m()}};function m(){let e={},t={};try{let n=a(`/proc/net/dev`);for(let r of n.split(`
3
- `).slice(2)){let n=r.split(`:`)[0]?.trim();if(n){e[n]=[];try{t[n]=a(`/sys/class/net/${n}/address`).trim()}catch{t[n]=`00:00:00:00:00:00`}}}}catch{return e}try{let n=a(`/proc/net/if_inet6`);for(let r of n.split(`
4
- `)){let n=r.trim().split(/\s+/);if(n.length<6)continue;let[i,,a,,,o]=n,c=i.match(/.{4}/g);!c||!e[o]||e[o].push({address:c.join(`:`),netmask:s(a),family:`IPv6`,mac:t[o]||`00:00:00:00:00:00`,internal:o===`lo`})}}catch{}e.lo&&e.lo.unshift({address:`127.0.0.1`,netmask:`255.0.0.0`,family:`IPv4`,mac:t.lo||`00:00:00:00:00:00`,internal:!0});for(let t of Object.keys(e))e[t].length===0&&delete e[t];return e}const h=()=>{let e=a(`/proc/meminfo`);for(let t of e.split(`
5
- `)){let e=/^MemTotal:\s+(\d+)\s+kB/.exec(t);if(e)return parseInt(e[1],10)*1024}return 0},g=()=>{let e=a(`/proc/uptime`).trim();return parseFloat(e.split(` `)[0])||0};export{l as cpus,u as endianness,d as freemem,f as loadavg,p as networkInterfaces,h as totalmem,g as uptime};
1
+ import{createSubnet as e}from"./createSubnet.js";import{cli as t}from"@gjsify/utils";import n from"@girs/glib-2.0";const r=imports.byteArray,i=/\r\n|\n/;function readTextFile(e){let[t,i]=n.file_get_contents(e);return!t||!i?``:r.toString(i)}const a=e(32,8,10,`.`),o=e(128,16,16,`:`);function parseInterfaces(e){if(e=e.trim(),e.length<1)return;let t=[],n;for(let r,s=e.split(i),c=0;c<s.length;c++)switch(r=s[c],!0){case/link\/\S+\s+((?:\S{2}:)+\S{2})/.test(r):n=RegExp.$1;break;case/inet(\d*)\s+(\S+)/.test(r):let e=RegExp.$2.split(`/`),i=RegExp.$1||`4`;t.push({address:e[0],netmask:(i===`4`?a:o)(e[1]),family:`IPv`+i,mac:n,internal:e[0]===`127.0.0.1`});break}n&&(this[e.slice(0,e.indexOf(`:`))]=t)}const cpus=()=>{let e=/^processor\s*:\s*(\d+)/i,t=/^model[\s_]+name\s*:([^\r\n]+)/i,n=/^cpu[\s_]+MHz\s*:\s*(\d+)/i,r=[],a;readTextFile(`/proc/cpuinfo`).split(i).forEach(i=>{switch(!0){case e.test(i):r[RegExp.$1.trim()]=a={model:``,speed:0,times:{user:0,nice:0,sys:0,idle:0,irq:0}};break;case t.test(i):a.model=RegExp.$1.trim();break;case n.test(i):a.speed=parseFloat(RegExp.$1.trim());break}});try{let e=readTextFile(`/proc/stat`).split(i);for(let t of e){let e=/^cpu(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+\d+\s+(\d+)/.exec(t);e&&r[parseInt(e[1],10)]&&(r[parseInt(e[1],10)].times={user:parseInt(e[2],10)*10,nice:parseInt(e[3],10)*10,sys:parseInt(e[4],10)*10,idle:parseInt(e[5],10)*10,irq:parseInt(e[6],10)*10})}}catch{}return r},endianness=()=>`LE`,freemem=()=>{let e=readTextFile(`/proc/meminfo`),t=0;for(let n of e.split(`
2
+ `)){let e=/^MemAvailable:\s+(\d+)\s+kB/.exec(n);if(e)return parseInt(e[1],10)*1024;let r=/^MemFree:\s+(\d+)\s+kB/.exec(n);r&&(t=parseInt(r[1],10)*1024)}return t},loadavg=()=>/(\d+(?:\.\d+))\s+(\d+(?:\.\d+))\s+(\d+(?:\.\d+))/.test(readTextFile(`/proc/loadavg`))&&[parseFloat(RegExp.$1),parseFloat(RegExp.$2),parseFloat(RegExp.$3)],networkInterfaces=()=>{try{let e={};return t(`ip addr`).split(/^\d+:\s+/m).forEach(parseInterfaces,e),e}catch{return readNetworkInterfacesFromProc()}};function readNetworkInterfacesFromProc(){let e={},t={};try{let n=readTextFile(`/proc/net/dev`);for(let r of n.split(`
3
+ `).slice(2)){let n=r.split(`:`)[0]?.trim();if(n){e[n]=[];try{t[n]=readTextFile(`/sys/class/net/${n}/address`).trim()}catch{t[n]=`00:00:00:00:00:00`}}}}catch{return e}try{let n=readTextFile(`/proc/net/if_inet6`);for(let r of n.split(`
4
+ `)){let n=r.trim().split(/\s+/);if(n.length<6)continue;let[i,,a,,,s]=n,c=i.match(/.{4}/g);!c||!e[s]||e[s].push({address:c.join(`:`),netmask:o(a),family:`IPv6`,mac:t[s]||`00:00:00:00:00:00`,internal:s===`lo`})}}catch{}e.lo&&e.lo.unshift({address:`127.0.0.1`,netmask:`255.0.0.0`,family:`IPv4`,mac:t.lo||`00:00:00:00:00:00`,internal:!0});for(let t of Object.keys(e))e[t].length===0&&delete e[t];return e}const totalmem=()=>{let e=readTextFile(`/proc/meminfo`);for(let t of e.split(`
5
+ `)){let e=/^MemTotal:\s+(\d+)\s+kB/.exec(t);if(e)return parseInt(e[1],10)*1024}return 0},uptime=()=>{let e=readTextFile(`/proc/uptime`).trim();return parseFloat(e.split(` `)[0])||0};export{cpus,endianness,freemem,loadavg,networkInterfaces,totalmem,uptime};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gjsify/os",
3
- "version": "0.3.20",
3
+ "version": "0.3.21",
4
4
  "description": "Node.js os module for Gjs",
5
5
  "module": "lib/esm/index.js",
6
6
  "types": "lib/types/index.d.ts",
@@ -32,11 +32,11 @@
32
32
  "dependencies": {
33
33
  "@girs/gio-2.0": "2.88.0-4.0.0-rc.14",
34
34
  "@girs/glib-2.0": "2.88.0-4.0.0-rc.14",
35
- "@gjsify/utils": "^0.3.20"
35
+ "@gjsify/utils": "^0.3.21"
36
36
  },
37
37
  "devDependencies": {
38
- "@gjsify/cli": "^0.3.20",
39
- "@gjsify/unit": "^0.3.20",
38
+ "@gjsify/cli": "^0.3.21",
39
+ "@gjsify/unit": "^0.3.21",
40
40
  "@types/node": "^25.6.2",
41
41
  "typescript": "^6.0.3"
42
42
  }