@axium/sysadmin 0.0.1

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.
Files changed (50) hide show
  1. package/LICENSE.md +157 -0
  2. package/README.md +3 -0
  3. package/db.json +77 -0
  4. package/dist/_probe.d.ts +1 -0
  5. package/dist/_probe.js +4 -0
  6. package/dist/client/.info.js +38 -0
  7. package/dist/client/cli.d.ts +1 -0
  8. package/dist/client/cli.js +109 -0
  9. package/dist/client/hooks.d.ts +1 -0
  10. package/dist/client/hooks.js +1 -0
  11. package/dist/client/info.d.ts +2 -0
  12. package/dist/client/info.js +171 -0
  13. package/dist/client/socket.d.ts +1 -0
  14. package/dist/client/socket.js +9 -0
  15. package/dist/common.d.ts +371 -0
  16. package/dist/common.js +65 -0
  17. package/dist/index.d.ts +2 -0
  18. package/dist/index.js +2 -0
  19. package/dist/info.d.ts +95 -0
  20. package/dist/info.js +58 -0
  21. package/dist/server/api.d.ts +1 -0
  22. package/dist/server/api.js +136 -0
  23. package/dist/server/db.d.ts +7 -0
  24. package/dist/server/db.js +1 -0
  25. package/dist/server/hooks.d.ts +3 -0
  26. package/dist/server/hooks.js +3 -0
  27. package/dist/server/socket.d.ts +1 -0
  28. package/dist/server/socket.js +9 -0
  29. package/dist/web_hook.d.ts +8 -0
  30. package/dist/web_hook.js +4 -0
  31. package/lib/SystemCard.svelte +133 -0
  32. package/lib/SystemInitDialog.svelte +59 -0
  33. package/lib/UserCard.svelte +108 -0
  34. package/lib/UserInitDialog.svelte +49 -0
  35. package/lib/index.ts +4 -0
  36. package/lib/tsconfig.json +12 -0
  37. package/locales/en.json +79 -0
  38. package/package.json +71 -0
  39. package/routes/sysadmin/+layout.ts +22 -0
  40. package/routes/sysadmin/+page.svelte +115 -0
  41. package/routes/sysadmin/+page.ts +14 -0
  42. package/routes/sysadmin/systems/+page.svelte +92 -0
  43. package/routes/sysadmin/systems/+page.ts +11 -0
  44. package/routes/sysadmin/systems/[id]/+page.svelte +290 -0
  45. package/routes/sysadmin/systems/[id]/+page.ts +11 -0
  46. package/routes/sysadmin/users/+page.svelte +85 -0
  47. package/routes/sysadmin/users/+page.ts +11 -0
  48. package/routes/sysadmin/users/[id]/+page.svelte +82 -0
  49. package/routes/sysadmin/users/[id]/+page.ts +11 -0
  50. package/routes/tsconfig.json +12 -0
@@ -0,0 +1,371 @@
1
+ import * as z from 'zod';
2
+ export declare const SystemType: z.ZodLiteral<"server" | "pc" | "laptop">;
3
+ export type SystemType = z.infer<typeof SystemType>;
4
+ export declare const systemTypeIcons: Record<SystemType, string>;
5
+ export declare const SystemInit: z.ZodObject<{
6
+ name: z.ZodString;
7
+ hostname: z.ZodString;
8
+ type: z.ZodDefault<z.ZodLiteral<"server" | "pc" | "laptop">>;
9
+ }, z.core.$strip>;
10
+ export interface SystemInit extends z.infer<typeof SystemInit> {
11
+ }
12
+ export declare const System: z.ZodObject<{
13
+ name: z.ZodString;
14
+ hostname: z.ZodString;
15
+ type: z.ZodDefault<z.ZodLiteral<"server" | "pc" | "laptop">>;
16
+ id: z.ZodUUID;
17
+ userId: z.ZodUUID;
18
+ isShared: z.ZodBoolean;
19
+ acl: z.ZodArray<z.ZodObject<{
20
+ itemId: z.ZodUUID;
21
+ userId: z.ZodOptional<z.ZodNullable<z.ZodUUID>>;
22
+ role: z.ZodOptional<z.ZodNullable<z.ZodString>>;
23
+ tag: z.ZodOptional<z.ZodNullable<z.ZodString>>;
24
+ user: z.ZodOptional<z.ZodNullable<z.ZodObject<{
25
+ id: z.ZodUUID;
26
+ name: z.ZodString;
27
+ email: z.ZodOptional<z.ZodEmail>;
28
+ emailVerified: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>>;
29
+ preferences: z.ZodOptional<z.ZodLazy<z.ZodObject<{
30
+ debug: z.ZodDefault<z.ZodBoolean>;
31
+ }, z.core.$strip>>>;
32
+ roles: z.ZodArray<z.ZodString>;
33
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
34
+ registeredAt: z.ZodCoercedDate<unknown>;
35
+ isAdmin: z.ZodOptional<z.ZodBoolean>;
36
+ isSuspended: z.ZodOptional<z.ZodBoolean>;
37
+ }, z.core.$strip>>>;
38
+ createdAt: z.ZodCoercedDate<unknown>;
39
+ }, z.core.$catchall<z.ZodBoolean>>>;
40
+ }, z.core.$strip>;
41
+ export interface System extends z.infer<typeof System> {
42
+ }
43
+ export declare const SystemPing: z.ZodObject<{
44
+ hostname: z.ZodString;
45
+ username: z.ZodString;
46
+ }, z.core.$strip>;
47
+ export interface SystemPing extends z.infer<typeof SystemPing> {
48
+ }
49
+ export declare const SystemUserInit: z.ZodObject<{
50
+ name: z.ZodString;
51
+ username: z.ZodString;
52
+ }, z.core.$strip>;
53
+ export interface SystemUserInit extends z.infer<typeof SystemUserInit> {
54
+ }
55
+ export declare const SystemUser: z.ZodObject<{
56
+ name: z.ZodString;
57
+ username: z.ZodString;
58
+ id: z.ZodUUID;
59
+ userId: z.ZodUUID;
60
+ }, z.core.$strip>;
61
+ export interface SystemUser extends z.infer<typeof SystemUser> {
62
+ }
63
+ declare const SysadminAPI: {
64
+ readonly 'users/:id/sysadmin/systems': {
65
+ readonly GET: z.ZodArray<z.ZodObject<{
66
+ name: z.ZodString;
67
+ hostname: z.ZodString;
68
+ type: z.ZodDefault<z.ZodLiteral<"server" | "pc" | "laptop">>;
69
+ id: z.ZodUUID;
70
+ userId: z.ZodUUID;
71
+ isShared: z.ZodBoolean;
72
+ acl: z.ZodArray<z.ZodObject<{
73
+ itemId: z.ZodUUID;
74
+ userId: z.ZodOptional<z.ZodNullable<z.ZodUUID>>;
75
+ role: z.ZodOptional<z.ZodNullable<z.ZodString>>;
76
+ tag: z.ZodOptional<z.ZodNullable<z.ZodString>>;
77
+ user: z.ZodOptional<z.ZodNullable<z.ZodObject<{
78
+ id: z.ZodUUID;
79
+ name: z.ZodString;
80
+ email: z.ZodOptional<z.ZodEmail>;
81
+ emailVerified: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>>;
82
+ preferences: z.ZodOptional<z.ZodLazy<z.ZodObject<{
83
+ debug: z.ZodDefault<z.ZodBoolean>;
84
+ }, z.core.$strip>>>;
85
+ roles: z.ZodArray<z.ZodString>;
86
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
87
+ registeredAt: z.ZodCoercedDate<unknown>;
88
+ isAdmin: z.ZodOptional<z.ZodBoolean>;
89
+ isSuspended: z.ZodOptional<z.ZodBoolean>;
90
+ }, z.core.$strip>>>;
91
+ createdAt: z.ZodCoercedDate<unknown>;
92
+ }, z.core.$catchall<z.ZodBoolean>>>;
93
+ }, z.core.$strip>>;
94
+ readonly PUT: readonly [z.ZodObject<{
95
+ name: z.ZodString;
96
+ hostname: z.ZodString;
97
+ type: z.ZodDefault<z.ZodLiteral<"server" | "pc" | "laptop">>;
98
+ }, z.core.$strip>, z.ZodObject<{
99
+ name: z.ZodString;
100
+ hostname: z.ZodString;
101
+ type: z.ZodDefault<z.ZodLiteral<"server" | "pc" | "laptop">>;
102
+ id: z.ZodUUID;
103
+ userId: z.ZodUUID;
104
+ isShared: z.ZodBoolean;
105
+ acl: z.ZodArray<z.ZodObject<{
106
+ itemId: z.ZodUUID;
107
+ userId: z.ZodOptional<z.ZodNullable<z.ZodUUID>>;
108
+ role: z.ZodOptional<z.ZodNullable<z.ZodString>>;
109
+ tag: z.ZodOptional<z.ZodNullable<z.ZodString>>;
110
+ user: z.ZodOptional<z.ZodNullable<z.ZodObject<{
111
+ id: z.ZodUUID;
112
+ name: z.ZodString;
113
+ email: z.ZodOptional<z.ZodEmail>;
114
+ emailVerified: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>>;
115
+ preferences: z.ZodOptional<z.ZodLazy<z.ZodObject<{
116
+ debug: z.ZodDefault<z.ZodBoolean>;
117
+ }, z.core.$strip>>>;
118
+ roles: z.ZodArray<z.ZodString>;
119
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
120
+ registeredAt: z.ZodCoercedDate<unknown>;
121
+ isAdmin: z.ZodOptional<z.ZodBoolean>;
122
+ isSuspended: z.ZodOptional<z.ZodBoolean>;
123
+ }, z.core.$strip>>>;
124
+ createdAt: z.ZodCoercedDate<unknown>;
125
+ }, z.core.$catchall<z.ZodBoolean>>>;
126
+ }, z.core.$strip>];
127
+ };
128
+ readonly 'users/:id/sysadmin/users': {
129
+ readonly GET: z.ZodArray<z.ZodObject<{
130
+ name: z.ZodString;
131
+ username: z.ZodString;
132
+ id: z.ZodUUID;
133
+ userId: z.ZodUUID;
134
+ }, z.core.$strip>>;
135
+ readonly PUT: readonly [z.ZodObject<{
136
+ name: z.ZodString;
137
+ username: z.ZodString;
138
+ }, z.core.$strip>, z.ZodObject<{
139
+ name: z.ZodString;
140
+ username: z.ZodString;
141
+ id: z.ZodUUID;
142
+ userId: z.ZodUUID;
143
+ }, z.core.$strip>];
144
+ };
145
+ readonly 'sysadmin/systems/:id': {
146
+ readonly GET: z.ZodObject<{
147
+ name: z.ZodString;
148
+ hostname: z.ZodString;
149
+ type: z.ZodDefault<z.ZodLiteral<"server" | "pc" | "laptop">>;
150
+ id: z.ZodUUID;
151
+ userId: z.ZodUUID;
152
+ isShared: z.ZodBoolean;
153
+ acl: z.ZodArray<z.ZodObject<{
154
+ itemId: z.ZodUUID;
155
+ userId: z.ZodOptional<z.ZodNullable<z.ZodUUID>>;
156
+ role: z.ZodOptional<z.ZodNullable<z.ZodString>>;
157
+ tag: z.ZodOptional<z.ZodNullable<z.ZodString>>;
158
+ user: z.ZodOptional<z.ZodNullable<z.ZodObject<{
159
+ id: z.ZodUUID;
160
+ name: z.ZodString;
161
+ email: z.ZodOptional<z.ZodEmail>;
162
+ emailVerified: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>>;
163
+ preferences: z.ZodOptional<z.ZodLazy<z.ZodObject<{
164
+ debug: z.ZodDefault<z.ZodBoolean>;
165
+ }, z.core.$strip>>>;
166
+ roles: z.ZodArray<z.ZodString>;
167
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
168
+ registeredAt: z.ZodCoercedDate<unknown>;
169
+ isAdmin: z.ZodOptional<z.ZodBoolean>;
170
+ isSuspended: z.ZodOptional<z.ZodBoolean>;
171
+ }, z.core.$strip>>>;
172
+ createdAt: z.ZodCoercedDate<unknown>;
173
+ }, z.core.$catchall<z.ZodBoolean>>>;
174
+ }, z.core.$strip>;
175
+ readonly PATCH: readonly [z.ZodObject<{
176
+ name: z.ZodString;
177
+ hostname: z.ZodString;
178
+ type: z.ZodDefault<z.ZodLiteral<"server" | "pc" | "laptop">>;
179
+ }, z.core.$strip>, z.ZodObject<{
180
+ name: z.ZodString;
181
+ hostname: z.ZodString;
182
+ type: z.ZodDefault<z.ZodLiteral<"server" | "pc" | "laptop">>;
183
+ id: z.ZodUUID;
184
+ userId: z.ZodUUID;
185
+ isShared: z.ZodBoolean;
186
+ acl: z.ZodArray<z.ZodObject<{
187
+ itemId: z.ZodUUID;
188
+ userId: z.ZodOptional<z.ZodNullable<z.ZodUUID>>;
189
+ role: z.ZodOptional<z.ZodNullable<z.ZodString>>;
190
+ tag: z.ZodOptional<z.ZodNullable<z.ZodString>>;
191
+ user: z.ZodOptional<z.ZodNullable<z.ZodObject<{
192
+ id: z.ZodUUID;
193
+ name: z.ZodString;
194
+ email: z.ZodOptional<z.ZodEmail>;
195
+ emailVerified: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>>;
196
+ preferences: z.ZodOptional<z.ZodLazy<z.ZodObject<{
197
+ debug: z.ZodDefault<z.ZodBoolean>;
198
+ }, z.core.$strip>>>;
199
+ roles: z.ZodArray<z.ZodString>;
200
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
201
+ registeredAt: z.ZodCoercedDate<unknown>;
202
+ isAdmin: z.ZodOptional<z.ZodBoolean>;
203
+ isSuspended: z.ZodOptional<z.ZodBoolean>;
204
+ }, z.core.$strip>>>;
205
+ createdAt: z.ZodCoercedDate<unknown>;
206
+ }, z.core.$catchall<z.ZodBoolean>>>;
207
+ }, z.core.$strip>];
208
+ readonly DELETE: z.ZodObject<{
209
+ name: z.ZodString;
210
+ hostname: z.ZodString;
211
+ type: z.ZodDefault<z.ZodLiteral<"server" | "pc" | "laptop">>;
212
+ id: z.ZodUUID;
213
+ userId: z.ZodUUID;
214
+ isShared: z.ZodBoolean;
215
+ acl: z.ZodArray<z.ZodObject<{
216
+ itemId: z.ZodUUID;
217
+ userId: z.ZodOptional<z.ZodNullable<z.ZodUUID>>;
218
+ role: z.ZodOptional<z.ZodNullable<z.ZodString>>;
219
+ tag: z.ZodOptional<z.ZodNullable<z.ZodString>>;
220
+ user: z.ZodOptional<z.ZodNullable<z.ZodObject<{
221
+ id: z.ZodUUID;
222
+ name: z.ZodString;
223
+ email: z.ZodOptional<z.ZodEmail>;
224
+ emailVerified: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>>;
225
+ preferences: z.ZodOptional<z.ZodLazy<z.ZodObject<{
226
+ debug: z.ZodDefault<z.ZodBoolean>;
227
+ }, z.core.$strip>>>;
228
+ roles: z.ZodArray<z.ZodString>;
229
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
230
+ registeredAt: z.ZodCoercedDate<unknown>;
231
+ isAdmin: z.ZodOptional<z.ZodBoolean>;
232
+ isSuspended: z.ZodOptional<z.ZodBoolean>;
233
+ }, z.core.$strip>>>;
234
+ createdAt: z.ZodCoercedDate<unknown>;
235
+ }, z.core.$catchall<z.ZodBoolean>>>;
236
+ }, z.core.$strip>;
237
+ };
238
+ readonly 'sysadmin/users/:id': {
239
+ readonly GET: z.ZodObject<{
240
+ name: z.ZodString;
241
+ username: z.ZodString;
242
+ id: z.ZodUUID;
243
+ userId: z.ZodUUID;
244
+ }, z.core.$strip>;
245
+ readonly PATCH: readonly [z.ZodObject<{
246
+ name: z.ZodString;
247
+ username: z.ZodString;
248
+ }, z.core.$strip>, z.ZodObject<{
249
+ name: z.ZodString;
250
+ username: z.ZodString;
251
+ id: z.ZodUUID;
252
+ userId: z.ZodUUID;
253
+ }, z.core.$strip>];
254
+ readonly DELETE: z.ZodObject<{
255
+ name: z.ZodString;
256
+ username: z.ZodString;
257
+ id: z.ZodUUID;
258
+ userId: z.ZodUUID;
259
+ }, z.core.$strip>;
260
+ };
261
+ };
262
+ type SysadminAPI = typeof SysadminAPI;
263
+ declare module '@axium/core/api' {
264
+ interface $API extends SysadminAPI {
265
+ }
266
+ }
267
+ declare const SysadminClientToServer: {
268
+ readonly 'sysadmin:getSystemInfo': readonly [readonly [z.ZodArray<z.ZodObject<{
269
+ cpus: z.ZodArray<z.ZodObject<{
270
+ model: z.ZodString;
271
+ cores: z.ZodNumber;
272
+ }, z.core.$strip>>;
273
+ gpus: z.ZodArray<z.ZodObject<{
274
+ model: z.ZodString;
275
+ vram: z.ZodOptional<z.ZodObject<{
276
+ total: z.ZodCoercedBigInt<unknown>;
277
+ used: z.ZodCoercedBigInt<unknown>;
278
+ }, z.core.$strip>>;
279
+ }, z.core.$strip>>;
280
+ memory: z.ZodObject<{
281
+ speed: z.ZodInt;
282
+ swap: z.ZodOptional<z.ZodObject<{
283
+ total: z.ZodCoercedBigInt<unknown>;
284
+ used: z.ZodCoercedBigInt<unknown>;
285
+ }, z.core.$strip>>;
286
+ total: z.ZodCoercedBigInt<unknown>;
287
+ used: z.ZodCoercedBigInt<unknown>;
288
+ }, z.core.$strip>;
289
+ storage: z.ZodArray<z.ZodObject<{
290
+ model: z.ZodString;
291
+ total: z.ZodCoercedBigInt<unknown>;
292
+ used: z.ZodCoercedBigInt<unknown>;
293
+ }, z.core.$strip>>;
294
+ networkInterfaces: z.ZodArray<z.ZodObject<{
295
+ name: z.ZodString;
296
+ model: z.ZodString;
297
+ connected: z.ZodBoolean;
298
+ wireless: z.ZodBoolean;
299
+ connection: z.ZodOptional<z.ZodString>;
300
+ speed: z.ZodOptional<z.ZodCoercedBigInt<unknown>>;
301
+ }, z.core.$strip>>;
302
+ arch: z.ZodString;
303
+ machine: z.ZodString;
304
+ platform: z.ZodString;
305
+ release: z.ZodString;
306
+ type: z.ZodString;
307
+ uptime: z.ZodNumber;
308
+ version: z.ZodString;
309
+ hostname: z.ZodString;
310
+ }, z.core.$strip>>]];
311
+ readonly 'sysadmin:ping': readonly [readonly [z.ZodArray<z.ZodObject<{
312
+ hostname: z.ZodString;
313
+ username: z.ZodString;
314
+ }, z.core.$strip>>]];
315
+ };
316
+ declare const SysadminServerToClient: {
317
+ readonly 'sysadmin:getSystemInfo': readonly [readonly [z.ZodObject<{
318
+ cpus: z.ZodArray<z.ZodObject<{
319
+ model: z.ZodString;
320
+ cores: z.ZodNumber;
321
+ }, z.core.$strip>>;
322
+ gpus: z.ZodArray<z.ZodObject<{
323
+ model: z.ZodString;
324
+ vram: z.ZodOptional<z.ZodObject<{
325
+ total: z.ZodCoercedBigInt<unknown>;
326
+ used: z.ZodCoercedBigInt<unknown>;
327
+ }, z.core.$strip>>;
328
+ }, z.core.$strip>>;
329
+ memory: z.ZodObject<{
330
+ speed: z.ZodInt;
331
+ swap: z.ZodOptional<z.ZodObject<{
332
+ total: z.ZodCoercedBigInt<unknown>;
333
+ used: z.ZodCoercedBigInt<unknown>;
334
+ }, z.core.$strip>>;
335
+ total: z.ZodCoercedBigInt<unknown>;
336
+ used: z.ZodCoercedBigInt<unknown>;
337
+ }, z.core.$strip>;
338
+ storage: z.ZodArray<z.ZodObject<{
339
+ model: z.ZodString;
340
+ total: z.ZodCoercedBigInt<unknown>;
341
+ used: z.ZodCoercedBigInt<unknown>;
342
+ }, z.core.$strip>>;
343
+ networkInterfaces: z.ZodArray<z.ZodObject<{
344
+ name: z.ZodString;
345
+ model: z.ZodString;
346
+ connected: z.ZodBoolean;
347
+ wireless: z.ZodBoolean;
348
+ connection: z.ZodOptional<z.ZodString>;
349
+ speed: z.ZodOptional<z.ZodCoercedBigInt<unknown>>;
350
+ }, z.core.$strip>>;
351
+ arch: z.ZodString;
352
+ machine: z.ZodString;
353
+ platform: z.ZodString;
354
+ release: z.ZodString;
355
+ type: z.ZodString;
356
+ uptime: z.ZodNumber;
357
+ version: z.ZodString;
358
+ hostname: z.ZodString;
359
+ }, z.core.$strip>]];
360
+ readonly 'sysadmin:ping': readonly [readonly [z.ZodObject<{
361
+ hostname: z.ZodString;
362
+ username: z.ZodString;
363
+ }, z.core.$strip>]];
364
+ };
365
+ declare module '@axium/core/socket' {
366
+ interface ClientToServer extends ParseTuples<typeof SysadminClientToServer> {
367
+ }
368
+ interface ServerToClient extends ParseFunctions<typeof SysadminServerToClient> {
369
+ }
370
+ }
371
+ export {};
package/dist/common.js ADDED
@@ -0,0 +1,65 @@
1
+ import { AccessControl } from '@axium/core';
2
+ import { $API } from '@axium/core/api';
3
+ import { addClientToServer, addServerToClient } from '@axium/core/socket';
4
+ import * as z from 'zod';
5
+ import { SystemInfo } from './info.js';
6
+ export const SystemType = z.literal(['server', 'pc', 'laptop']);
7
+ export const systemTypeIcons = {
8
+ server: 'server',
9
+ pc: 'computer',
10
+ laptop: 'laptop',
11
+ };
12
+ export const SystemInit = z.object({
13
+ name: z.string().nonempty().max(250),
14
+ hostname: z.string().nonempty().max(250),
15
+ type: SystemType.default('server'),
16
+ });
17
+ export const System = SystemInit.extend({
18
+ id: z.uuid(),
19
+ userId: z.uuid(),
20
+ isShared: z.boolean(),
21
+ acl: AccessControl.array(),
22
+ });
23
+ export const SystemPing = z.object({
24
+ hostname: z.string(),
25
+ username: z.string(),
26
+ });
27
+ export const SystemUserInit = z.object({
28
+ name: z.string().nonempty().max(250),
29
+ username: z.string().nonempty().max(250),
30
+ });
31
+ export const SystemUser = SystemUserInit.extend({
32
+ id: z.uuid(),
33
+ userId: z.uuid(),
34
+ });
35
+ const SysadminAPI = {
36
+ 'users/:id/sysadmin/systems': {
37
+ GET: System.array(),
38
+ PUT: [SystemInit, System],
39
+ },
40
+ 'users/:id/sysadmin/users': {
41
+ GET: SystemUser.array(),
42
+ PUT: [SystemUserInit, SystemUser],
43
+ },
44
+ 'sysadmin/systems/:id': {
45
+ GET: System,
46
+ PATCH: [SystemInit, System],
47
+ DELETE: System,
48
+ },
49
+ 'sysadmin/users/:id': {
50
+ GET: SystemUser,
51
+ PATCH: [SystemUserInit, SystemUser],
52
+ DELETE: SystemUser,
53
+ },
54
+ };
55
+ Object.assign($API, SysadminAPI);
56
+ const SysadminClientToServer = {
57
+ 'sysadmin:getSystemInfo': [[SystemInfo.array()]],
58
+ 'sysadmin:ping': [[SystemPing.array()]],
59
+ };
60
+ const SysadminServerToClient = {
61
+ 'sysadmin:getSystemInfo': [[SystemInfo]],
62
+ 'sysadmin:ping': [[SystemPing]],
63
+ };
64
+ addClientToServer(SysadminClientToServer);
65
+ addServerToClient(SysadminServerToClient);
@@ -0,0 +1,2 @@
1
+ export * from './common.js';
2
+ export * from './info.js';
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from './common.js';
2
+ export * from './info.js';
package/dist/info.d.ts ADDED
@@ -0,0 +1,95 @@
1
+ import * as z from 'zod';
2
+ export declare const TotalUsed: z.ZodObject<{
3
+ total: z.ZodCoercedBigInt<unknown>;
4
+ used: z.ZodCoercedBigInt<unknown>;
5
+ }, z.core.$strip>;
6
+ export interface TotalUsed extends z.infer<typeof TotalUsed> {
7
+ }
8
+ export declare const CPU: z.ZodObject<{
9
+ model: z.ZodString;
10
+ cores: z.ZodNumber;
11
+ }, z.core.$strip>;
12
+ export interface CPU extends z.infer<typeof CPU> {
13
+ }
14
+ export declare const GPU: z.ZodObject<{
15
+ model: z.ZodString;
16
+ vram: z.ZodOptional<z.ZodObject<{
17
+ total: z.ZodCoercedBigInt<unknown>;
18
+ used: z.ZodCoercedBigInt<unknown>;
19
+ }, z.core.$strip>>;
20
+ }, z.core.$strip>;
21
+ export interface GPU extends z.infer<typeof GPU> {
22
+ }
23
+ export declare const Memory: z.ZodObject<{
24
+ speed: z.ZodInt;
25
+ swap: z.ZodOptional<z.ZodObject<{
26
+ total: z.ZodCoercedBigInt<unknown>;
27
+ used: z.ZodCoercedBigInt<unknown>;
28
+ }, z.core.$strip>>;
29
+ total: z.ZodCoercedBigInt<unknown>;
30
+ used: z.ZodCoercedBigInt<unknown>;
31
+ }, z.core.$strip>;
32
+ export interface Memory extends z.infer<typeof Memory> {
33
+ }
34
+ export declare const Storage: z.ZodObject<{
35
+ model: z.ZodString;
36
+ total: z.ZodCoercedBigInt<unknown>;
37
+ used: z.ZodCoercedBigInt<unknown>;
38
+ }, z.core.$strip>;
39
+ export interface Storage extends z.infer<typeof Storage> {
40
+ }
41
+ export declare const NetworkInterface: z.ZodObject<{
42
+ name: z.ZodString;
43
+ model: z.ZodString;
44
+ connected: z.ZodBoolean;
45
+ wireless: z.ZodBoolean;
46
+ connection: z.ZodOptional<z.ZodString>;
47
+ speed: z.ZodOptional<z.ZodCoercedBigInt<unknown>>;
48
+ }, z.core.$strip>;
49
+ export interface NetworkInterface extends z.infer<typeof NetworkInterface> {
50
+ }
51
+ export declare const SystemInfo: z.ZodObject<{
52
+ cpus: z.ZodArray<z.ZodObject<{
53
+ model: z.ZodString;
54
+ cores: z.ZodNumber;
55
+ }, z.core.$strip>>;
56
+ gpus: z.ZodArray<z.ZodObject<{
57
+ model: z.ZodString;
58
+ vram: z.ZodOptional<z.ZodObject<{
59
+ total: z.ZodCoercedBigInt<unknown>;
60
+ used: z.ZodCoercedBigInt<unknown>;
61
+ }, z.core.$strip>>;
62
+ }, z.core.$strip>>;
63
+ memory: z.ZodObject<{
64
+ speed: z.ZodInt;
65
+ swap: z.ZodOptional<z.ZodObject<{
66
+ total: z.ZodCoercedBigInt<unknown>;
67
+ used: z.ZodCoercedBigInt<unknown>;
68
+ }, z.core.$strip>>;
69
+ total: z.ZodCoercedBigInt<unknown>;
70
+ used: z.ZodCoercedBigInt<unknown>;
71
+ }, z.core.$strip>;
72
+ storage: z.ZodArray<z.ZodObject<{
73
+ model: z.ZodString;
74
+ total: z.ZodCoercedBigInt<unknown>;
75
+ used: z.ZodCoercedBigInt<unknown>;
76
+ }, z.core.$strip>>;
77
+ networkInterfaces: z.ZodArray<z.ZodObject<{
78
+ name: z.ZodString;
79
+ model: z.ZodString;
80
+ connected: z.ZodBoolean;
81
+ wireless: z.ZodBoolean;
82
+ connection: z.ZodOptional<z.ZodString>;
83
+ speed: z.ZodOptional<z.ZodCoercedBigInt<unknown>>;
84
+ }, z.core.$strip>>;
85
+ arch: z.ZodString;
86
+ machine: z.ZodString;
87
+ platform: z.ZodString;
88
+ release: z.ZodString;
89
+ type: z.ZodString;
90
+ uptime: z.ZodNumber;
91
+ version: z.ZodString;
92
+ hostname: z.ZodString;
93
+ }, z.core.$strip>;
94
+ export interface SystemInfo extends z.infer<typeof SystemInfo> {
95
+ }
package/dist/info.js ADDED
@@ -0,0 +1,58 @@
1
+ import * as z from 'zod';
2
+ export const TotalUsed = z.object({
3
+ total: z.coerce.bigint(),
4
+ used: z.coerce.bigint(),
5
+ });
6
+ // Hardware + kernel //
7
+ export const CPU = z.object({
8
+ model: z.string(),
9
+ cores: z.number(),
10
+ });
11
+ export const GPU = z.object({
12
+ model: z.string(),
13
+ /** Video memory in bytes; only available for some drivers (e.g. amdgpu) */
14
+ vram: TotalUsed.optional(),
15
+ });
16
+ export const Memory = z.object({
17
+ ...TotalUsed.shape,
18
+ /** Memory speed in MT/s */
19
+ speed: z.int().nonnegative(),
20
+ /** Only available when swap is in use */
21
+ swap: TotalUsed.optional(),
22
+ });
23
+ export const Storage = z.object({
24
+ ...TotalUsed.shape,
25
+ model: z.string(),
26
+ });
27
+ export const NetworkInterface = z.object({
28
+ name: z.string(),
29
+ model: z.string(),
30
+ connected: z.boolean(),
31
+ wireless: z.boolean(),
32
+ connection: z.string().optional(),
33
+ speed: z.coerce.bigint().optional(),
34
+ });
35
+ export const SystemInfo = z.object({
36
+ cpus: CPU.array(),
37
+ gpus: GPU.array(),
38
+ memory: Memory,
39
+ storage: Storage.array(),
40
+ networkInterfaces: NetworkInterface.array(),
41
+ /** e.g. 'arm', 'arm64', 'ia32', 'loong64', 'mips', 'mipsel', 'ppc64', 'riscv64', 's390x', and 'x64' */
42
+ arch: z.string(),
43
+ /** e.g. arm, arm64, aarch64, mips, mips64, ppc64, ppc64le, s390x, i386, i686, x86_64 */
44
+ machine: z.string(),
45
+ /** e.g. 'aix', 'darwin', 'freebsd','linux', 'openbsd', 'sunos', and 'win32' */
46
+ platform: z.string(),
47
+ /** OS/kernel release, e.g. 6.7.0-200.fc40.x86_64 */
48
+ release: z.string(),
49
+ /** e.g. 'Linux' on Linux, 'Darwin' on macOS, and 'Windows_NT' */
50
+ type: z.string(),
51
+ /** Uptime in seconds */
52
+ uptime: z.number(),
53
+ /** Kernel version, e.g. `#1 SMP PREEMPT_DYNAMIC ...` */
54
+ version: z.string(),
55
+ hostname: z.string(),
56
+ });
57
+ // OS //
58
+ // User //
@@ -0,0 +1 @@
1
+ export {};