@axium/sysadmin 0.2.4 → 0.2.5
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/dist/client/info.js +29 -21
- package/dist/common.d.ts +14 -14
- package/package.json +1 -1
package/dist/client/info.js
CHANGED
|
@@ -111,31 +111,19 @@ function storage() {
|
|
|
111
111
|
}
|
|
112
112
|
return result;
|
|
113
113
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
if (
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
if (!match)
|
|
121
|
-
continue;
|
|
122
|
-
const [, key, value] = match;
|
|
123
|
-
info[key] = BigInt(value) * (line.endsWith('kB') ? 1024n : 1n);
|
|
124
|
-
}
|
|
125
|
-
const total = info.MemTotal ?? BigInt(os.totalmem());
|
|
126
|
-
const available = info.MemAvailable ?? BigInt(os.freemem());
|
|
127
|
-
const memory = {
|
|
128
|
-
speed: 0,
|
|
129
|
-
total,
|
|
130
|
-
used: total - available,
|
|
131
|
-
};
|
|
114
|
+
let dmiMemory;
|
|
115
|
+
/** Static memory hardware details from DMI. */
|
|
116
|
+
function memoryHardware() {
|
|
117
|
+
if (dmiMemory)
|
|
118
|
+
return dmiMemory;
|
|
119
|
+
dmiMemory = { speed: 0 };
|
|
132
120
|
try {
|
|
133
121
|
const dmiMemoryInfo = execFileSync('sudo', ['-n', 'dmidecode', '-t', '17'], {
|
|
134
122
|
encoding: 'utf8',
|
|
135
123
|
stdio: ['ignore', 'pipe', 'ignore'],
|
|
136
124
|
});
|
|
137
125
|
for (const match of dmiMemoryInfo.matchAll(/^\s*(?:Configured Memory|Configured Clock)?\s*Speed:\s*(\d+)\s*MT\/s/gim)) {
|
|
138
|
-
|
|
126
|
+
dmiMemory.speed = Math.max(dmiMemory.speed, Number(match[1]));
|
|
139
127
|
}
|
|
140
128
|
const populated = (field) => {
|
|
141
129
|
for (const [, match] of dmiMemoryInfo.matchAll(new RegExp(`^[ \\t]*${field}:[ \\t]*(.+)$`, 'gim'))) {
|
|
@@ -144,12 +132,32 @@ function memory() {
|
|
|
144
132
|
return value;
|
|
145
133
|
}
|
|
146
134
|
};
|
|
147
|
-
|
|
148
|
-
|
|
135
|
+
dmiMemory.formFactor = populated('Form Factor');
|
|
136
|
+
dmiMemory.type = populated('Type');
|
|
149
137
|
}
|
|
150
138
|
catch {
|
|
151
139
|
// dmidecode missing, not root, or sudo needs a password
|
|
152
140
|
}
|
|
141
|
+
return dmiMemory;
|
|
142
|
+
}
|
|
143
|
+
function memory() {
|
|
144
|
+
const info = {};
|
|
145
|
+
const content = read('/proc/meminfo');
|
|
146
|
+
if (content)
|
|
147
|
+
for (const line of content.split('\n')) {
|
|
148
|
+
const match = /^(\w+):\s+(\d+)(?:\s+kB)?$/.exec(line.trim());
|
|
149
|
+
if (!match)
|
|
150
|
+
continue;
|
|
151
|
+
const [, key, value] = match;
|
|
152
|
+
info[key] = BigInt(value) * (line.endsWith('kB') ? 1024n : 1n);
|
|
153
|
+
}
|
|
154
|
+
const total = info.MemTotal ?? BigInt(os.totalmem());
|
|
155
|
+
const available = info.MemAvailable ?? BigInt(os.freemem());
|
|
156
|
+
const memory = {
|
|
157
|
+
...memoryHardware(),
|
|
158
|
+
total,
|
|
159
|
+
used: total - available,
|
|
160
|
+
};
|
|
153
161
|
const swapTotal = info.SwapTotal ?? 0n;
|
|
154
162
|
if (swapTotal > 0n)
|
|
155
163
|
memory.swap = { total: swapTotal, used: swapTotal - (info.SwapFree ?? 0n) };
|
package/dist/common.d.ts
CHANGED
|
@@ -26,8 +26,8 @@ export declare const System: z.ZodObject<{
|
|
|
26
26
|
user: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
27
27
|
id: z.ZodUUID;
|
|
28
28
|
name: z.ZodString;
|
|
29
|
-
username: z.
|
|
30
|
-
email: z.ZodOptional<z.ZodEmail
|
|
29
|
+
username: z.ZodString;
|
|
30
|
+
email: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodEmail>>>;
|
|
31
31
|
emailVerified: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>>;
|
|
32
32
|
preferences: z.ZodOptional<z.ZodLazy<z.ZodObject<{
|
|
33
33
|
debug: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -81,8 +81,8 @@ declare const SysadminAPI: {
|
|
|
81
81
|
user: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
82
82
|
id: z.ZodUUID;
|
|
83
83
|
name: z.ZodString;
|
|
84
|
-
username: z.
|
|
85
|
-
email: z.ZodOptional<z.ZodEmail
|
|
84
|
+
username: z.ZodString;
|
|
85
|
+
email: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodEmail>>>;
|
|
86
86
|
emailVerified: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>>;
|
|
87
87
|
preferences: z.ZodOptional<z.ZodLazy<z.ZodObject<{
|
|
88
88
|
debug: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -117,8 +117,8 @@ declare const SysadminAPI: {
|
|
|
117
117
|
user: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
118
118
|
id: z.ZodUUID;
|
|
119
119
|
name: z.ZodString;
|
|
120
|
-
username: z.
|
|
121
|
-
email: z.ZodOptional<z.ZodEmail
|
|
120
|
+
username: z.ZodString;
|
|
121
|
+
email: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodEmail>>>;
|
|
122
122
|
emailVerified: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>>;
|
|
123
123
|
preferences: z.ZodOptional<z.ZodLazy<z.ZodObject<{
|
|
124
124
|
debug: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -167,8 +167,8 @@ declare const SysadminAPI: {
|
|
|
167
167
|
user: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
168
168
|
id: z.ZodUUID;
|
|
169
169
|
name: z.ZodString;
|
|
170
|
-
username: z.
|
|
171
|
-
email: z.ZodOptional<z.ZodEmail
|
|
170
|
+
username: z.ZodString;
|
|
171
|
+
email: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodEmail>>>;
|
|
172
172
|
emailVerified: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>>;
|
|
173
173
|
preferences: z.ZodOptional<z.ZodLazy<z.ZodObject<{
|
|
174
174
|
debug: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -203,8 +203,8 @@ declare const SysadminAPI: {
|
|
|
203
203
|
user: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
204
204
|
id: z.ZodUUID;
|
|
205
205
|
name: z.ZodString;
|
|
206
|
-
username: z.
|
|
207
|
-
email: z.ZodOptional<z.ZodEmail
|
|
206
|
+
username: z.ZodString;
|
|
207
|
+
email: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodEmail>>>;
|
|
208
208
|
emailVerified: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>>;
|
|
209
209
|
preferences: z.ZodOptional<z.ZodLazy<z.ZodObject<{
|
|
210
210
|
debug: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -234,8 +234,8 @@ declare const SysadminAPI: {
|
|
|
234
234
|
user: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
235
235
|
id: z.ZodUUID;
|
|
236
236
|
name: z.ZodString;
|
|
237
|
-
username: z.
|
|
238
|
-
email: z.ZodOptional<z.ZodEmail
|
|
237
|
+
username: z.ZodString;
|
|
238
|
+
email: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodEmail>>>;
|
|
239
239
|
emailVerified: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>>;
|
|
240
240
|
preferences: z.ZodOptional<z.ZodLazy<z.ZodObject<{
|
|
241
241
|
debug: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -290,8 +290,8 @@ declare const SysadminAPI: {
|
|
|
290
290
|
user: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
291
291
|
id: z.ZodUUID;
|
|
292
292
|
name: z.ZodString;
|
|
293
|
-
username: z.
|
|
294
|
-
email: z.ZodOptional<z.ZodEmail
|
|
293
|
+
username: z.ZodString;
|
|
294
|
+
email: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodEmail>>>;
|
|
295
295
|
emailVerified: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>>;
|
|
296
296
|
preferences: z.ZodOptional<z.ZodLazy<z.ZodObject<{
|
|
297
297
|
debug: z.ZodDefault<z.ZodBoolean>;
|