@gjsify/os 0.3.12 → 0.3.14

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,137 +1,138 @@
1
+ //#region src/constants.ts
1
2
  var constants_default = {
2
- "UV_UDP_REUSEADDR": 4,
3
- "errno": {
4
- "E2BIG": 7,
5
- "EACCES": 13,
6
- "EADDRINUSE": 98,
7
- "EADDRNOTAVAIL": 99,
8
- "EAFNOSUPPORT": 97,
9
- "EAGAIN": 11,
10
- "EALREADY": 114,
11
- "EBADF": 9,
12
- "EBADMSG": 74,
13
- "EBUSY": 16,
14
- "ECANCELED": 125,
15
- "ECHILD": 10,
16
- "ECONNABORTED": 103,
17
- "ECONNREFUSED": 111,
18
- "ECONNRESET": 104,
19
- "EDEADLK": 35,
20
- "EDESTADDRREQ": 89,
21
- "EDOM": 33,
22
- "EDQUOT": 122,
23
- "EEXIST": 17,
24
- "EFAULT": 14,
25
- "EFBIG": 27,
26
- "EHOSTUNREACH": 113,
27
- "EIDRM": 43,
28
- "EILSEQ": 84,
29
- "EINPROGRESS": 115,
30
- "EINTR": 4,
31
- "EINVAL": 22,
32
- "EIO": 5,
33
- "EISCONN": 106,
34
- "EISDIR": 21,
35
- "ELOOP": 40,
36
- "EMFILE": 24,
37
- "EMLINK": 31,
38
- "EMSGSIZE": 90,
39
- "EMULTIHOP": 72,
40
- "ENAMETOOLONG": 36,
41
- "ENETDOWN": 100,
42
- "ENETRESET": 102,
43
- "ENETUNREACH": 101,
44
- "ENFILE": 23,
45
- "ENOBUFS": 105,
46
- "ENODATA": 61,
47
- "ENODEV": 19,
48
- "ENOENT": 2,
49
- "ENOEXEC": 8,
50
- "ENOLCK": 37,
51
- "ENOLINK": 67,
52
- "ENOMEM": 12,
53
- "ENOMSG": 42,
54
- "ENOPROTOOPT": 92,
55
- "ENOSPC": 28,
56
- "ENOSR": 63,
57
- "ENOSTR": 60,
58
- "ENOSYS": 38,
59
- "ENOTCONN": 107,
60
- "ENOTDIR": 20,
61
- "ENOTEMPTY": 39,
62
- "ENOTSOCK": 88,
63
- "ENOTSUP": 95,
64
- "ENOTTY": 25,
65
- "ENXIO": 6,
66
- "EOPNOTSUPP": 95,
67
- "EOVERFLOW": 75,
68
- "EPERM": 1,
69
- "EPIPE": 32,
70
- "EPROTO": 71,
71
- "EPROTONOSUPPORT": 93,
72
- "EPROTOTYPE": 91,
73
- "ERANGE": 34,
74
- "EROFS": 30,
75
- "ESPIPE": 29,
76
- "ESRCH": 3,
77
- "ESTALE": 116,
78
- "ETIME": 62,
79
- "ETIMEDOUT": 110,
80
- "ETXTBSY": 26,
81
- "EWOULDBLOCK": 11,
82
- "EXDEV": 18
83
- },
84
- "signals": {
85
- "SIGHUP": 1,
86
- "SIGINT": 2,
87
- "SIGQUIT": 3,
88
- "SIGILL": 4,
89
- "SIGTRAP": 5,
90
- "SIGABRT": 6,
91
- "SIGIOT": 6,
92
- "SIGBUS": 7,
93
- "SIGFPE": 8,
94
- "SIGKILL": 9,
95
- "SIGUSR1": 10,
96
- "SIGSEGV": 11,
97
- "SIGUSR2": 12,
98
- "SIGPIPE": 13,
99
- "SIGALRM": 14,
100
- "SIGTERM": 15,
101
- "SIGCHLD": 17,
102
- "SIGSTKFLT": 16,
103
- "SIGCONT": 18,
104
- "SIGSTOP": 19,
105
- "SIGTSTP": 20,
106
- "SIGTTIN": 21,
107
- "SIGTTOU": 22,
108
- "SIGURG": 23,
109
- "SIGXCPU": 24,
110
- "SIGXFSZ": 25,
111
- "SIGVTALRM": 26,
112
- "SIGPROF": 27,
113
- "SIGWINCH": 28,
114
- "SIGIO": 29,
115
- "SIGPOLL": 29,
116
- "SIGPWR": 30,
117
- "SIGSYS": 31
118
- },
119
- "priority": {
120
- "PRIORITY_LOW": 19,
121
- "PRIORITY_BELOW_NORMAL": 10,
122
- "PRIORITY_NORMAL": 0,
123
- "PRIORITY_ABOVE_NORMAL": -7,
124
- "PRIORITY_HIGH": -14,
125
- "PRIORITY_HIGHEST": -20
126
- },
127
- "dlopen": {
128
- "RTLD_LAZY": 1,
129
- "RTLD_NOW": 2,
130
- "RTLD_GLOBAL": 256,
131
- "RTLD_LOCAL": 0,
132
- "RTLD_DEEPBIND": 8
133
- }
134
- };
135
- export {
136
- constants_default as default
3
+ "UV_UDP_REUSEADDR": 4,
4
+ "errno": {
5
+ "E2BIG": 7,
6
+ "EACCES": 13,
7
+ "EADDRINUSE": 98,
8
+ "EADDRNOTAVAIL": 99,
9
+ "EAFNOSUPPORT": 97,
10
+ "EAGAIN": 11,
11
+ "EALREADY": 114,
12
+ "EBADF": 9,
13
+ "EBADMSG": 74,
14
+ "EBUSY": 16,
15
+ "ECANCELED": 125,
16
+ "ECHILD": 10,
17
+ "ECONNABORTED": 103,
18
+ "ECONNREFUSED": 111,
19
+ "ECONNRESET": 104,
20
+ "EDEADLK": 35,
21
+ "EDESTADDRREQ": 89,
22
+ "EDOM": 33,
23
+ "EDQUOT": 122,
24
+ "EEXIST": 17,
25
+ "EFAULT": 14,
26
+ "EFBIG": 27,
27
+ "EHOSTUNREACH": 113,
28
+ "EIDRM": 43,
29
+ "EILSEQ": 84,
30
+ "EINPROGRESS": 115,
31
+ "EINTR": 4,
32
+ "EINVAL": 22,
33
+ "EIO": 5,
34
+ "EISCONN": 106,
35
+ "EISDIR": 21,
36
+ "ELOOP": 40,
37
+ "EMFILE": 24,
38
+ "EMLINK": 31,
39
+ "EMSGSIZE": 90,
40
+ "EMULTIHOP": 72,
41
+ "ENAMETOOLONG": 36,
42
+ "ENETDOWN": 100,
43
+ "ENETRESET": 102,
44
+ "ENETUNREACH": 101,
45
+ "ENFILE": 23,
46
+ "ENOBUFS": 105,
47
+ "ENODATA": 61,
48
+ "ENODEV": 19,
49
+ "ENOENT": 2,
50
+ "ENOEXEC": 8,
51
+ "ENOLCK": 37,
52
+ "ENOLINK": 67,
53
+ "ENOMEM": 12,
54
+ "ENOMSG": 42,
55
+ "ENOPROTOOPT": 92,
56
+ "ENOSPC": 28,
57
+ "ENOSR": 63,
58
+ "ENOSTR": 60,
59
+ "ENOSYS": 38,
60
+ "ENOTCONN": 107,
61
+ "ENOTDIR": 20,
62
+ "ENOTEMPTY": 39,
63
+ "ENOTSOCK": 88,
64
+ "ENOTSUP": 95,
65
+ "ENOTTY": 25,
66
+ "ENXIO": 6,
67
+ "EOPNOTSUPP": 95,
68
+ "EOVERFLOW": 75,
69
+ "EPERM": 1,
70
+ "EPIPE": 32,
71
+ "EPROTO": 71,
72
+ "EPROTONOSUPPORT": 93,
73
+ "EPROTOTYPE": 91,
74
+ "ERANGE": 34,
75
+ "EROFS": 30,
76
+ "ESPIPE": 29,
77
+ "ESRCH": 3,
78
+ "ESTALE": 116,
79
+ "ETIME": 62,
80
+ "ETIMEDOUT": 110,
81
+ "ETXTBSY": 26,
82
+ "EWOULDBLOCK": 11,
83
+ "EXDEV": 18
84
+ },
85
+ "signals": {
86
+ "SIGHUP": 1,
87
+ "SIGINT": 2,
88
+ "SIGQUIT": 3,
89
+ "SIGILL": 4,
90
+ "SIGTRAP": 5,
91
+ "SIGABRT": 6,
92
+ "SIGIOT": 6,
93
+ "SIGBUS": 7,
94
+ "SIGFPE": 8,
95
+ "SIGKILL": 9,
96
+ "SIGUSR1": 10,
97
+ "SIGSEGV": 11,
98
+ "SIGUSR2": 12,
99
+ "SIGPIPE": 13,
100
+ "SIGALRM": 14,
101
+ "SIGTERM": 15,
102
+ "SIGCHLD": 17,
103
+ "SIGSTKFLT": 16,
104
+ "SIGCONT": 18,
105
+ "SIGSTOP": 19,
106
+ "SIGTSTP": 20,
107
+ "SIGTTIN": 21,
108
+ "SIGTTOU": 22,
109
+ "SIGURG": 23,
110
+ "SIGXCPU": 24,
111
+ "SIGXFSZ": 25,
112
+ "SIGVTALRM": 26,
113
+ "SIGPROF": 27,
114
+ "SIGWINCH": 28,
115
+ "SIGIO": 29,
116
+ "SIGPOLL": 29,
117
+ "SIGPWR": 30,
118
+ "SIGSYS": 31
119
+ },
120
+ "priority": {
121
+ "PRIORITY_LOW": 19,
122
+ "PRIORITY_BELOW_NORMAL": 10,
123
+ "PRIORITY_NORMAL": 0,
124
+ "PRIORITY_ABOVE_NORMAL": -7,
125
+ "PRIORITY_HIGH": -14,
126
+ "PRIORITY_HIGHEST": -20
127
+ },
128
+ "dlopen": {
129
+ "RTLD_LAZY": 1,
130
+ "RTLD_NOW": 2,
131
+ "RTLD_GLOBAL": 256,
132
+ "RTLD_LOCAL": 0,
133
+ "RTLD_DEEPBIND": 8
134
+ }
137
135
  };
136
+
137
+ //#endregion
138
+ export { constants_default as default };
@@ -1,17 +1,17 @@
1
+ //#region src/createSubnet.ts
1
2
  function createSubnet(size, segment, base, sep) {
2
- const empty = "0".repeat(size);
3
- return (mask) => {
4
- const str = ("1".repeat(parseInt(mask, 10)) + empty).slice(0, size);
5
- const out = [];
6
- for (let i = 0; i < size; i += segment) {
7
- out.push(parseInt(str.substr(i, segment), 2).toString(base));
8
- }
9
- return out.join(sep);
10
- };
3
+ const empty = "0".repeat(size);
4
+ return (mask) => {
5
+ const str = ("1".repeat(parseInt(mask, 10)) + empty).slice(0, size);
6
+ const out = [];
7
+ for (let i = 0; i < size; i += segment) {
8
+ out.push(parseInt(str.substr(i, segment), 2).toString(base));
9
+ }
10
+ return out.join(sep);
11
+ };
11
12
  }
12
13
  ;
13
14
  var createSubnet_default = { createSubnet };
14
- export {
15
- createSubnet,
16
- createSubnet_default as default
17
- };
15
+
16
+ //#endregion
17
+ export { createSubnet, createSubnet_default as default };
package/lib/esm/darwin.js CHANGED
@@ -1,151 +1,150 @@
1
1
  import { createSubnet } from "./createSubnet.js";
2
2
  import { cli } from "@gjsify/utils";
3
+
4
+ //#region src/darwin.ts
3
5
  const NOMAC = "00:00:00:00:00:00";
4
6
  const getIPv6Subnet = createSubnet(128, 16, 16, ":");
5
7
  const parseInterfaces = function(info) {
6
- info = info.trim();
7
- if (info.length < 1 || !/\binet\b/.test(info)) return;
8
- const lines = info.split("\n");
9
- const iface = [];
10
- const length = lines.length;
11
- let mac = NOMAC;
12
- for (let line, i = 0; i < length; i++) {
13
- line = lines[i];
14
- switch (true) {
15
- case /ether\s+((?:\S{2}:)+\S{2})/.test(line):
16
- mac = RegExp.$1;
17
- break;
18
- case /inet\s+(\d+\.\d+\.\d+\.\d+)\s+netmask\s+0x(.{2})(.{2})(.{2})(.{2})/.test(line):
19
- iface.push({
20
- address: RegExp.$1,
21
- netmask: [
22
- parseInt(RegExp.$2, 16),
23
- parseInt(RegExp.$3, 16),
24
- parseInt(RegExp.$4, 16),
25
- parseInt(RegExp.$5, 16)
26
- ].join("."),
27
- family: "IPv4",
28
- mac,
29
- internal: RegExp.$1 === "127.0.0.1"
30
- });
31
- break;
32
- case /inet6\s+((?:\S{0,4}:)+\S{1,4}).+?prefixlen\s+(\d+)/.test(line):
33
- iface.push({
34
- address: RegExp.$1,
35
- netmask: getIPv6Subnet(RegExp.$2),
36
- family: "IPv6",
37
- mac,
38
- internal: mac !== NOMAC
39
- });
40
- break;
41
- }
42
- }
43
- this[info.slice(0, info.indexOf(":"))] = iface;
8
+ info = info.trim();
9
+ if (info.length < 1 || !/\binet\b/.test(info)) return;
10
+ const lines = info.split("\n");
11
+ const iface = [];
12
+ const length = lines.length;
13
+ let mac = NOMAC;
14
+ for (let line, i = 0; i < length; i++) {
15
+ line = lines[i];
16
+ switch (true) {
17
+ case /ether\s+((?:\S{2}:)+\S{2})/.test(line):
18
+ mac = RegExp.$1;
19
+ break;
20
+ case /inet\s+(\d+\.\d+\.\d+\.\d+)\s+netmask\s+0x(.{2})(.{2})(.{2})(.{2})/.test(line):
21
+ iface.push({
22
+ address: RegExp.$1,
23
+ netmask: [
24
+ parseInt(RegExp.$2, 16),
25
+ parseInt(RegExp.$3, 16),
26
+ parseInt(RegExp.$4, 16),
27
+ parseInt(RegExp.$5, 16)
28
+ ].join("."),
29
+ family: "IPv4",
30
+ mac,
31
+ internal: RegExp.$1 === "127.0.0.1"
32
+ });
33
+ break;
34
+ case /inet6\s+((?:\S{0,4}:)+\S{1,4}).+?prefixlen\s+(\d+)/.test(line):
35
+ iface.push({
36
+ address: RegExp.$1,
37
+ netmask: getIPv6Subnet(RegExp.$2),
38
+ family: "IPv6",
39
+ mac,
40
+ internal: mac !== NOMAC
41
+ });
42
+ break;
43
+ }
44
+ }
45
+ this[info.slice(0, info.indexOf(":"))] = iface;
44
46
  };
45
47
  const cpus = () => {
46
- let cores = parseFloat(cli("sysctl -n hw.ncpu"));
47
- const cpus2 = [];
48
- while (cores--) {
49
- cpus2.push({
50
- model: cli("sysctl -n machdep.cpu.brand_string").replace(/\s+/g, " "),
51
- speed: parseFloat(cli("sysctl -n hw.cpufrequency")) / 1e3 / 1e3,
52
- get times() {
53
- console.warn("cpus.times is not supported");
54
- return {};
55
- }
56
- });
57
- }
58
- return cpus2;
48
+ let cores = parseFloat(cli("sysctl -n hw.ncpu"));
49
+ const cpus = [];
50
+ while (cores--) {
51
+ cpus.push({
52
+ model: cli("sysctl -n machdep.cpu.brand_string").replace(/\s+/g, " "),
53
+ speed: parseFloat(cli("sysctl -n hw.cpufrequency")) / 1e3 / 1e3,
54
+ get times() {
55
+ console.warn("cpus.times is not supported");
56
+ return {};
57
+ }
58
+ });
59
+ }
60
+ return cpus;
59
61
  };
60
62
  const endianness = () => "LE";
63
+ /**
64
+ * Get free memory on macOS using vm_stat.
65
+ * vm_stat reports memory pages; multiply by page size to get bytes.
66
+ * "free" pages + "speculative" pages approximate available memory.
67
+ * Falls back to (hw.memsize - hw.physmem) if vm_stat is unavailable.
68
+ */
61
69
  const freemem = () => {
62
- try {
63
- const vmstat = cli("vm_stat");
64
- const pageSizeMatch = /page size of (\d+) bytes/.exec(vmstat);
65
- const pageSize = pageSizeMatch ? parseInt(pageSizeMatch[1], 10) : 16384;
66
- let freePages = 0;
67
- const freeMatch = /Pages free:\s+(\d+)/.exec(vmstat);
68
- if (freeMatch) freePages += parseInt(freeMatch[1], 10);
69
- const specMatch = /Pages speculative:\s+(\d+)/.exec(vmstat);
70
- if (specMatch) freePages += parseInt(specMatch[1], 10);
71
- const purgeMatch = /Pages purgeable:\s+(\d+)/.exec(vmstat);
72
- if (purgeMatch) freePages += parseInt(purgeMatch[1], 10);
73
- if (freePages > 0) return freePages * pageSize;
74
- } catch {
75
- }
76
- try {
77
- return parseFloat(cli("sysctl -n hw.memsize")) - parseFloat(cli("sysctl -n hw.physmem"));
78
- } catch {
79
- return 0;
80
- }
70
+ try {
71
+ const vmstat = cli("vm_stat");
72
+ const pageSizeMatch = /page size of (\d+) bytes/.exec(vmstat);
73
+ const pageSize = pageSizeMatch ? parseInt(pageSizeMatch[1], 10) : 16384;
74
+ let freePages = 0;
75
+ const freeMatch = /Pages free:\s+(\d+)/.exec(vmstat);
76
+ if (freeMatch) freePages += parseInt(freeMatch[1], 10);
77
+ const specMatch = /Pages speculative:\s+(\d+)/.exec(vmstat);
78
+ if (specMatch) freePages += parseInt(specMatch[1], 10);
79
+ const purgeMatch = /Pages purgeable:\s+(\d+)/.exec(vmstat);
80
+ if (purgeMatch) freePages += parseInt(purgeMatch[1], 10);
81
+ if (freePages > 0) return freePages * pageSize;
82
+ } catch {}
83
+ try {
84
+ return parseFloat(cli("sysctl -n hw.memsize")) - parseFloat(cli("sysctl -n hw.physmem"));
85
+ } catch {
86
+ return 0;
87
+ }
81
88
  };
82
- const loadavg = () => /load\s+averages:\s+(\d+(?:\.\d+))\s+(\d+(?:\.\d+))\s+(\d+(?:\.\d+))/.test(
83
- cli("uptime")
84
- ) && [
85
- parseFloat(RegExp.$1),
86
- parseFloat(RegExp.$2),
87
- parseFloat(RegExp.$3)
89
+ const loadavg = () => /load\s+averages:\s+(\d+(?:\.\d+))\s+(\d+(?:\.\d+))\s+(\d+(?:\.\d+))/.test(cli("uptime")) && [
90
+ parseFloat(RegExp.$1),
91
+ parseFloat(RegExp.$2),
92
+ parseFloat(RegExp.$3)
88
93
  ];
89
94
  const networkInterfaces = () => {
90
- const ifaces = {};
91
- const groups = [];
92
- const lines = cli("ifconfig").split(/\r\n|\n/);
93
- const length = lines.length;
94
- for (let group = [], re = /^\S+?:/, i = 0; i < length; i++) {
95
- if (re.test(lines[i])) {
96
- group = [lines[i]];
97
- while (++i < length && !re.test(lines[i])) {
98
- group.push(lines[i]);
99
- }
100
- --i;
101
- }
102
- groups.push(group.join("\n"));
103
- }
104
- groups.forEach(parseInterfaces, ifaces);
105
- return ifaces;
95
+ const ifaces = {};
96
+ const groups = [];
97
+ const lines = cli("ifconfig").split(/\r\n|\n/);
98
+ const length = lines.length;
99
+ for (let group = [], re = /^\S+?:/, i = 0; i < length; i++) {
100
+ if (re.test(lines[i])) {
101
+ group = [lines[i]];
102
+ while (++i < length && !re.test(lines[i])) {
103
+ group.push(lines[i]);
104
+ }
105
+ --i;
106
+ }
107
+ groups.push(group.join("\n"));
108
+ }
109
+ groups.forEach(parseInterfaces, ifaces);
110
+ return ifaces;
106
111
  };
112
+ /**
113
+ * Get total memory on macOS using sysctl hw.memsize.
114
+ */
107
115
  const totalmem = () => {
108
- try {
109
- return parseFloat(cli("sysctl -n hw.memsize"));
110
- } catch {
111
- return 0;
112
- }
116
+ try {
117
+ return parseFloat(cli("sysctl -n hw.memsize"));
118
+ } catch {
119
+ return 0;
120
+ }
113
121
  };
114
122
  const uptime = () => {
115
- try {
116
- const boottime = cli("sysctl -n kern.boottime");
117
- const secMatch = /sec\s*=\s*(\d+)/.exec(boottime);
118
- if (secMatch) {
119
- const bootSec = parseInt(secMatch[1], 10);
120
- const nowSec = Math.floor(Date.now() / 1e3);
121
- return nowSec - bootSec;
122
- }
123
- } catch {
124
- }
125
- const output = cli("uptime");
126
- const up = /up\s+([^,]+)?,/.test(output) && RegExp.$1;
127
- switch (true) {
128
- case /^(\d+):(\d+)$/.test(up):
129
- return (parseInt(RegExp.$1, 10) * 60 + parseInt(RegExp.$2, 10)) * 60;
130
- case /^(\d+)\s+mins?$/.test(up):
131
- return parseInt(RegExp.$1, 10) * 60;
132
- case /^(\d+)\s+days?$/.test(up): {
133
- const days = parseInt(RegExp.$1, 10) * 86400;
134
- const timeMatch = /days?,\s+(\d+):(\d+)/.exec(output);
135
- if (timeMatch) {
136
- return days + (parseInt(timeMatch[1], 10) * 60 + parseInt(timeMatch[2], 10)) * 60;
137
- }
138
- return days;
139
- }
140
- }
141
- return 0;
142
- };
143
- export {
144
- cpus,
145
- endianness,
146
- freemem,
147
- loadavg,
148
- networkInterfaces,
149
- totalmem,
150
- uptime
123
+ try {
124
+ const boottime = cli("sysctl -n kern.boottime");
125
+ const secMatch = /sec\s*=\s*(\d+)/.exec(boottime);
126
+ if (secMatch) {
127
+ const bootSec = parseInt(secMatch[1], 10);
128
+ const nowSec = Math.floor(Date.now() / 1e3);
129
+ return nowSec - bootSec;
130
+ }
131
+ } catch {}
132
+ const output = cli("uptime");
133
+ const up = /up\s+([^,]+)?,/.test(output) && RegExp.$1;
134
+ switch (true) {
135
+ case /^(\d+):(\d+)$/.test(up): return (parseInt(RegExp.$1, 10) * 60 + parseInt(RegExp.$2, 10)) * 60;
136
+ case /^(\d+)\s+mins?$/.test(up): return parseInt(RegExp.$1, 10) * 60;
137
+ case /^(\d+)\s+days?$/.test(up): {
138
+ const days = parseInt(RegExp.$1, 10) * 86400;
139
+ const timeMatch = /days?,\s+(\d+):(\d+)/.exec(output);
140
+ if (timeMatch) {
141
+ return days + (parseInt(timeMatch[1], 10) * 60 + parseInt(timeMatch[2], 10)) * 60;
142
+ }
143
+ return days;
144
+ }
145
+ }
146
+ return 0;
151
147
  };
148
+
149
+ //#endregion
150
+ export { cpus, endianness, freemem, loadavg, networkInterfaces, totalmem, uptime };