@gjsify/os 0.0.1 → 0.0.2
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.
- package/README.md +2 -4
- package/lib/cjs/constants.js +141 -0
- package/lib/cjs/createSubnet.js +36 -0
- package/lib/cjs/darwin.js +134 -0
- package/lib/cjs/index.js +121 -0
- package/lib/cjs/linux.js +111 -0
- package/lib/cjs/win32.js +1 -0
- package/lib/esm/constants.js +122 -0
- package/lib/esm/createSubnet.js +17 -0
- package/lib/esm/darwin.js +115 -0
- package/lib/esm/index.js +92 -0
- package/lib/esm/linux.js +92 -0
- package/lib/esm/win32.js +1 -0
- package/package.json +33 -17
- package/src/{constants.js → constants.ts} +1 -1
- package/src/{createSubnet.js → createSubnet.ts} +3 -1
- package/src/{darwin.js → darwin.ts} +65 -59
- package/src/index.spec.ts +9 -0
- package/src/index.ts +103 -0
- package/src/{linux.js → linux.ts} +54 -48
- package/src/test.mts +4 -0
- package/test.gjs.mjs +34720 -0
- package/test.gjs.mjs.meta.json +1 -0
- package/test.node.mjs +307 -0
- package/tsconfig.json +18 -0
- package/tsconfig.types.json +8 -0
- package/index.js +0 -46
- package/src/system.js +0 -3
- /package/src/{win32.js → win32.ts} +0 -0
|
@@ -1,17 +1,51 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { createSubnet } from './createSubnet.js';
|
|
2
|
+
import { cli } from '@gjsify/utils';
|
|
3
|
+
|
|
3
4
|
const EOL = /\r\n|\n/;
|
|
4
5
|
|
|
5
6
|
const getIPv4Subnet = createSubnet(32, 8, 10, '.');
|
|
6
7
|
const getIPv6Subnet = createSubnet(128, 16, 16, ':');
|
|
7
8
|
|
|
8
|
-
|
|
9
|
+
function parseInterfaces(info) {
|
|
10
|
+
info = info.trim();
|
|
11
|
+
if (info.length < 1) return;
|
|
12
|
+
let iface = [], mac;
|
|
13
|
+
for (let
|
|
14
|
+
line,
|
|
15
|
+
lines = info.split(EOL),
|
|
16
|
+
i = 0; i < lines.length; i++
|
|
17
|
+
) {
|
|
18
|
+
line = lines[i];
|
|
19
|
+
switch (true) {
|
|
20
|
+
case /link\/\S+\s+((?:\S{2}:)+\S{2})/.test(line):
|
|
21
|
+
mac = RegExp.$1;
|
|
22
|
+
break;
|
|
23
|
+
case /inet(\d*)\s+(\S+)/.test(line):
|
|
24
|
+
let
|
|
25
|
+
ip = RegExp.$2.split('/'),
|
|
26
|
+
v = RegExp.$1 || '4'
|
|
27
|
+
;
|
|
28
|
+
iface.push({
|
|
29
|
+
address: ip[0],
|
|
30
|
+
netmask: (v === '4' ? getIPv4Subnet : getIPv6Subnet)(ip[1]),
|
|
31
|
+
family: 'IPv' + v,
|
|
32
|
+
mac: mac,
|
|
33
|
+
internal: ip[0] === '127.0.0.1'
|
|
34
|
+
});
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (mac) this[info.slice(0, info.indexOf(':'))] = iface;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
// PORTED TO deno runtime
|
|
42
|
+
export const cpus = () => {
|
|
9
43
|
const PROCESSOR = /^processor\s*:\s*(\d+)/i;
|
|
10
44
|
const NAME = /^model[\s_]+name\s*:([^\r\n]+)/i;
|
|
11
45
|
const FREQ = /^cpu[\s_]+MHz\s*:\s*(\d+)/i;
|
|
12
46
|
const cpus = [];
|
|
13
|
-
let cpu;
|
|
14
|
-
|
|
47
|
+
let cpu: { model: string, speed: number, times: {} };
|
|
48
|
+
cli('cat /proc/cpuinfo').split(EOL).forEach(line => {
|
|
15
49
|
switch (true) {
|
|
16
50
|
case PROCESSOR.test(line):
|
|
17
51
|
cpus[RegExp.$1.trim()] = (cpu = {
|
|
@@ -31,69 +65,41 @@ this.cpus = () => {
|
|
|
31
65
|
return cpus;
|
|
32
66
|
};
|
|
33
67
|
|
|
34
|
-
|
|
68
|
+
export const endianness = () => 'LE';
|
|
35
69
|
|
|
36
|
-
|
|
37
|
-
|
|
70
|
+
// PORTED TO deno runtime
|
|
71
|
+
export const freemem = () => {
|
|
72
|
+
let I, mem = cli('free -b').split(EOL);
|
|
38
73
|
mem[0].split(/\s+/).some((info, i) => info === 'free' && (I = i));
|
|
39
74
|
return parseFloat(mem[1].split(/\s+/)[I + 1]);
|
|
40
75
|
};
|
|
41
76
|
|
|
42
|
-
|
|
77
|
+
// PORTED TO deno runtime
|
|
78
|
+
export const loadavg = () =>
|
|
43
79
|
/(\d+(?:\.\d+))\s+(\d+(?:\.\d+))\s+(\d+(?:\.\d+))/.test(
|
|
44
|
-
|
|
80
|
+
cli('cat /proc/loadavg')
|
|
45
81
|
) && [
|
|
46
82
|
parseFloat(RegExp.$1),
|
|
47
83
|
parseFloat(RegExp.$2),
|
|
48
84
|
parseFloat(RegExp.$3)
|
|
49
85
|
];
|
|
50
86
|
|
|
51
|
-
|
|
87
|
+
export const networkInterfaces = () => {
|
|
52
88
|
const ifaces = {};
|
|
53
|
-
|
|
89
|
+
cli('ip addr').split(/^\d+:\s+/m).forEach(parseInterfaces, ifaces);
|
|
54
90
|
return ifaces;
|
|
55
91
|
};
|
|
56
92
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
let iface = [], mac;
|
|
61
|
-
for (let
|
|
62
|
-
line,
|
|
63
|
-
lines = info.split(EOL),
|
|
64
|
-
i = 0; i < lines.length; i++
|
|
65
|
-
) {
|
|
66
|
-
line = lines[i];
|
|
67
|
-
switch (true) {
|
|
68
|
-
case /link\/\S+\s+((?:\S{2}:)+\S{2})/.test(line):
|
|
69
|
-
mac = RegExp.$1;
|
|
70
|
-
break;
|
|
71
|
-
case /inet(\d*)\s+(\S+)/.test(line):
|
|
72
|
-
let
|
|
73
|
-
ip = RegExp.$2.split('/'),
|
|
74
|
-
v = RegExp.$1 || '4'
|
|
75
|
-
;
|
|
76
|
-
iface.push({
|
|
77
|
-
address: ip[0],
|
|
78
|
-
netmask: (v === '4' ? getIPv4Subnet : getIPv6Subnet)(ip[1]),
|
|
79
|
-
family: 'IPv' + v,
|
|
80
|
-
mac: mac,
|
|
81
|
-
internal: ip[0] === '127.0.0.1'
|
|
82
|
-
});
|
|
83
|
-
break;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
if (mac) this[info.slice(0, info.indexOf(':'))] = iface;
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
this.totalmem = () => {
|
|
90
|
-
let I, mem = system('free -b').split(EOL);
|
|
93
|
+
// PORTED TO deno runtime
|
|
94
|
+
export const totalmem = () => {
|
|
95
|
+
let I, mem = cli('free -b').split(EOL);
|
|
91
96
|
mem[0].split(/\s+/).some((info, i) => info === 'total' && (I = i));
|
|
92
97
|
return parseFloat(mem[1].split(/\s+/)[I + 1]);
|
|
93
98
|
};
|
|
94
99
|
|
|
95
|
-
|
|
100
|
+
// PORTED TO deno runtime
|
|
101
|
+
export const uptime = () => (
|
|
96
102
|
Date.now() -
|
|
97
|
-
Date.parse(
|
|
103
|
+
Date.parse(cli('uptime -s').replace(' ', 'T'))
|
|
98
104
|
) / 1000;
|
|
99
105
|
|
package/src/test.mts
ADDED