@meowpanel/api 0.3.0 → 0.4.0
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/esm/mod.d.ts +37 -16
- package/esm/mod.d.ts.map +1 -1
- package/esm/mod.js +25 -7
- package/esm/src/client.d.ts +48 -11
- package/esm/src/client.d.ts.map +1 -1
- package/esm/src/client.js +53 -12
- package/esm/src/http.d.ts +2 -2
- package/esm/src/http.d.ts.map +1 -1
- package/esm/src/http.js +5 -2
- package/esm/src/namespace.d.ts +1 -1
- package/esm/src/namespace.js +1 -1
- package/esm/src/resources/account.d.ts +50 -19
- package/esm/src/resources/account.d.ts.map +1 -1
- package/esm/src/resources/account.js +51 -13
- package/esm/src/resources/api-keys.d.ts +16 -24
- package/esm/src/resources/api-keys.d.ts.map +1 -1
- package/esm/src/resources/api-keys.js +16 -20
- package/esm/src/resources/auth.d.ts +70 -4
- package/esm/src/resources/auth.d.ts.map +1 -1
- package/esm/src/resources/auth.js +47 -4
- package/esm/src/resources/eggs.d.ts +261 -22
- package/esm/src/resources/eggs.d.ts.map +1 -1
- package/esm/src/resources/eggs.js +261 -25
- package/esm/src/resources/features.d.ts +35 -0
- package/esm/src/resources/features.d.ts.map +1 -0
- package/esm/src/resources/features.js +21 -0
- package/esm/src/resources/hosts.d.ts +143 -18
- package/esm/src/resources/hosts.d.ts.map +1 -1
- package/esm/src/resources/hosts.js +145 -10
- package/esm/src/resources/logs.d.ts +39 -0
- package/esm/src/resources/logs.d.ts.map +1 -0
- package/esm/src/resources/logs.js +38 -0
- package/esm/src/resources/nodes.d.ts +92 -17
- package/esm/src/resources/nodes.d.ts.map +1 -1
- package/esm/src/resources/nodes.js +108 -16
- package/esm/src/resources/permissions.d.ts +45 -0
- package/esm/src/resources/permissions.d.ts.map +1 -0
- package/esm/src/resources/permissions.js +26 -0
- package/esm/src/resources/request-logs.d.ts +91 -0
- package/esm/src/resources/request-logs.d.ts.map +1 -0
- package/esm/src/resources/request-logs.js +70 -0
- package/esm/src/resources/roles.d.ts +128 -0
- package/esm/src/resources/roles.d.ts.map +1 -0
- package/esm/src/resources/roles.js +142 -0
- package/esm/src/resources/server-groups.d.ts +141 -7
- package/esm/src/resources/server-groups.d.ts.map +1 -1
- package/esm/src/resources/server-groups.js +157 -8
- package/esm/src/resources/servers/activity.d.ts +50 -8
- package/esm/src/resources/servers/activity.d.ts.map +1 -1
- package/esm/src/resources/servers/activity.js +54 -13
- package/esm/src/resources/servers/allocations.d.ts +3 -3
- package/esm/src/resources/servers/allocations.d.ts.map +1 -1
- package/esm/src/resources/servers/allocations.js +7 -7
- package/esm/src/resources/servers/backups.d.ts +46 -0
- package/esm/src/resources/servers/backups.d.ts.map +1 -0
- package/esm/src/resources/servers/backups.js +43 -0
- package/esm/src/resources/servers/connection.d.ts +27 -7
- package/esm/src/resources/servers/connection.d.ts.map +1 -1
- package/esm/src/resources/servers/connection.js +28 -7
- package/esm/src/resources/servers/features.d.ts +81 -0
- package/esm/src/resources/servers/features.d.ts.map +1 -0
- package/esm/src/resources/servers/features.js +60 -0
- package/esm/src/resources/servers/files.d.ts +41 -53
- package/esm/src/resources/servers/files.d.ts.map +1 -1
- package/esm/src/resources/servers/files.js +74 -116
- package/esm/src/resources/servers/index.d.ts +46 -27
- package/esm/src/resources/servers/index.d.ts.map +1 -1
- package/esm/src/resources/servers/index.js +26 -12
- package/esm/src/resources/servers/jobs.d.ts +88 -0
- package/esm/src/resources/servers/jobs.d.ts.map +1 -0
- package/esm/src/resources/servers/jobs.js +115 -0
- package/esm/src/resources/servers/node-client.d.ts +33 -0
- package/esm/src/resources/servers/node-client.d.ts.map +1 -0
- package/esm/src/resources/servers/node-client.js +61 -0
- package/esm/src/resources/servers/profiles.d.ts +45 -1
- package/esm/src/resources/servers/profiles.d.ts.map +1 -1
- package/esm/src/resources/servers/profiles.js +55 -2
- package/esm/src/resources/servers/server.d.ts +10 -25
- package/esm/src/resources/servers/server.d.ts.map +1 -1
- package/esm/src/resources/servers/server.js +18 -34
- package/esm/src/resources/servers/sftp.d.ts +12 -19
- package/esm/src/resources/servers/sftp.d.ts.map +1 -1
- package/esm/src/resources/servers/sftp.js +10 -14
- package/esm/src/resources/servers/sub-users.d.ts +99 -0
- package/esm/src/resources/servers/sub-users.d.ts.map +1 -0
- package/esm/src/resources/servers/sub-users.js +94 -0
- package/esm/src/resources/servers/types.d.ts +27 -25
- package/esm/src/resources/servers/types.d.ts.map +1 -1
- package/esm/src/resources/systems.d.ts +124 -0
- package/esm/src/resources/systems.d.ts.map +1 -0
- package/esm/src/resources/systems.js +139 -0
- package/esm/src/resources/users.d.ts +330 -0
- package/esm/src/resources/users.d.ts.map +1 -0
- package/esm/src/resources/users.js +280 -0
- package/esm/src/types.d.ts +18 -1
- package/esm/src/types.d.ts.map +1 -1
- package/esm/src/types.js +11 -0
- package/package.json +1 -1
- package/script/mod.d.ts +37 -16
- package/script/mod.d.ts.map +1 -1
- package/script/mod.js +50 -5
- package/script/src/client.d.ts +48 -11
- package/script/src/client.d.ts.map +1 -1
- package/script/src/client.js +53 -12
- package/script/src/http.d.ts +2 -2
- package/script/src/http.d.ts.map +1 -1
- package/script/src/http.js +5 -2
- package/script/src/namespace.d.ts +1 -1
- package/script/src/namespace.js +1 -1
- package/script/src/resources/account.d.ts +50 -19
- package/script/src/resources/account.d.ts.map +1 -1
- package/script/src/resources/account.js +50 -12
- package/script/src/resources/api-keys.d.ts +16 -24
- package/script/src/resources/api-keys.d.ts.map +1 -1
- package/script/src/resources/api-keys.js +15 -19
- package/script/src/resources/auth.d.ts +70 -4
- package/script/src/resources/auth.d.ts.map +1 -1
- package/script/src/resources/auth.js +47 -4
- package/script/src/resources/eggs.d.ts +261 -22
- package/script/src/resources/eggs.d.ts.map +1 -1
- package/script/src/resources/eggs.js +267 -26
- package/script/src/resources/features.d.ts +35 -0
- package/script/src/resources/features.d.ts.map +1 -0
- package/script/src/resources/features.js +25 -0
- package/script/src/resources/hosts.d.ts +143 -18
- package/script/src/resources/hosts.d.ts.map +1 -1
- package/script/src/resources/hosts.js +146 -10
- package/script/src/resources/logs.d.ts +39 -0
- package/script/src/resources/logs.d.ts.map +1 -0
- package/script/src/resources/logs.js +42 -0
- package/script/src/resources/nodes.d.ts +92 -17
- package/script/src/resources/nodes.d.ts.map +1 -1
- package/script/src/resources/nodes.js +109 -16
- package/script/src/resources/permissions.d.ts +45 -0
- package/script/src/resources/permissions.d.ts.map +1 -0
- package/script/src/resources/permissions.js +31 -0
- package/script/src/resources/request-logs.d.ts +91 -0
- package/script/src/resources/request-logs.d.ts.map +1 -0
- package/script/src/resources/request-logs.js +75 -0
- package/script/src/resources/roles.d.ts +128 -0
- package/script/src/resources/roles.d.ts.map +1 -0
- package/script/src/resources/roles.js +148 -0
- package/script/src/resources/server-groups.d.ts +141 -7
- package/script/src/resources/server-groups.d.ts.map +1 -1
- package/script/src/resources/server-groups.js +158 -8
- package/script/src/resources/servers/activity.d.ts +50 -8
- package/script/src/resources/servers/activity.d.ts.map +1 -1
- package/script/src/resources/servers/activity.js +54 -12
- package/script/src/resources/servers/allocations.d.ts +3 -3
- package/script/src/resources/servers/allocations.d.ts.map +1 -1
- package/script/src/resources/servers/allocations.js +7 -7
- package/script/src/resources/servers/backups.d.ts +46 -0
- package/script/src/resources/servers/backups.d.ts.map +1 -0
- package/script/src/resources/servers/backups.js +47 -0
- package/script/src/resources/servers/connection.d.ts +27 -7
- package/script/src/resources/servers/connection.d.ts.map +1 -1
- package/script/src/resources/servers/connection.js +28 -7
- package/script/src/resources/servers/features.d.ts +81 -0
- package/script/src/resources/servers/features.d.ts.map +1 -0
- package/script/src/resources/servers/features.js +64 -0
- package/script/src/resources/servers/files.d.ts +41 -53
- package/script/src/resources/servers/files.d.ts.map +1 -1
- package/script/src/resources/servers/files.js +74 -116
- package/script/src/resources/servers/index.d.ts +46 -27
- package/script/src/resources/servers/index.d.ts.map +1 -1
- package/script/src/resources/servers/index.js +26 -12
- package/script/src/resources/servers/jobs.d.ts +88 -0
- package/script/src/resources/servers/jobs.d.ts.map +1 -0
- package/script/src/resources/servers/jobs.js +120 -0
- package/script/src/resources/servers/node-client.d.ts +33 -0
- package/script/src/resources/servers/node-client.d.ts.map +1 -0
- package/script/src/resources/servers/node-client.js +65 -0
- package/script/src/resources/servers/profiles.d.ts +45 -1
- package/script/src/resources/servers/profiles.d.ts.map +1 -1
- package/script/src/resources/servers/profiles.js +55 -2
- package/script/src/resources/servers/server.d.ts +10 -25
- package/script/src/resources/servers/server.d.ts.map +1 -1
- package/script/src/resources/servers/server.js +18 -34
- package/script/src/resources/servers/sftp.d.ts +12 -19
- package/script/src/resources/servers/sftp.d.ts.map +1 -1
- package/script/src/resources/servers/sftp.js +10 -14
- package/script/src/resources/servers/sub-users.d.ts +99 -0
- package/script/src/resources/servers/sub-users.d.ts.map +1 -0
- package/script/src/resources/servers/sub-users.js +99 -0
- package/script/src/resources/servers/types.d.ts +27 -25
- package/script/src/resources/servers/types.d.ts.map +1 -1
- package/script/src/resources/systems.d.ts +124 -0
- package/script/src/resources/systems.d.ts.map +1 -0
- package/script/src/resources/systems.js +145 -0
- package/script/src/resources/users.d.ts +330 -0
- package/script/src/resources/users.d.ts.map +1 -0
- package/script/src/resources/users.js +287 -0
- package/script/src/types.d.ts +18 -1
- package/script/src/types.d.ts.map +1 -1
- package/script/src/types.js +12 -0
- package/esm/src/resources/members.d.ts +0 -138
- package/esm/src/resources/members.d.ts.map +0 -1
- package/esm/src/resources/members.js +0 -122
- package/script/src/resources/members.d.ts +0 -138
- package/script/src/resources/members.d.ts.map +0 -1
- package/script/src/resources/members.js +0 -127
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ServerUserManager = exports.ServerUser = void 0;
|
|
4
|
+
const users_js_1 = require("../users.js");
|
|
5
|
+
/**
|
|
6
|
+
* A user granted access to a server (or server group), with their scoped grants.
|
|
7
|
+
*
|
|
8
|
+
* Retrieved via {@link ServerUserManager.list} or {@link ServerUserManager.get}.
|
|
9
|
+
*/
|
|
10
|
+
class ServerUser {
|
|
11
|
+
/** The underlying user. */
|
|
12
|
+
user;
|
|
13
|
+
/** The permissions granted to this user at the resource scope. */
|
|
14
|
+
permissions;
|
|
15
|
+
/** How this user is attached. See {@link ServerUserKind}. */
|
|
16
|
+
kind;
|
|
17
|
+
/** @internal */
|
|
18
|
+
constructor(data) {
|
|
19
|
+
this.user = new users_js_1.User(data.user);
|
|
20
|
+
this.permissions = data.permissions.map((g) => ({
|
|
21
|
+
name: g.name,
|
|
22
|
+
grantedAt: new Date(g.granted_at),
|
|
23
|
+
expiresAt: g.expires_at ? new Date(g.expires_at) : null,
|
|
24
|
+
}));
|
|
25
|
+
this.kind = data.kind;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.ServerUser = ServerUser;
|
|
29
|
+
function expiresAtBody(expiresAt) {
|
|
30
|
+
if (expiresAt === undefined)
|
|
31
|
+
return undefined;
|
|
32
|
+
return expiresAt === null ? null : expiresAt.toISOString();
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Manages the sub-users of a server or server group.
|
|
36
|
+
*
|
|
37
|
+
* Access via `server.subUsers`.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts ignore
|
|
41
|
+
* await server.subUsers.add({ email: 'teammate@example.com', permissions: ['server.console.read'] });
|
|
42
|
+
* const subUsers = await server.subUsers.list();
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
class ServerUserManager {
|
|
46
|
+
basePath;
|
|
47
|
+
http;
|
|
48
|
+
/** @internal */
|
|
49
|
+
constructor(basePath, http) {
|
|
50
|
+
this.basePath = basePath;
|
|
51
|
+
this.http = http;
|
|
52
|
+
}
|
|
53
|
+
/** List the resource's sub-users. */
|
|
54
|
+
async list() {
|
|
55
|
+
const data = await this.http.get(`${this.basePath}/users`);
|
|
56
|
+
return data.map((d) => new ServerUser(d));
|
|
57
|
+
}
|
|
58
|
+
/** Fetch a single sub-user by user ID. */
|
|
59
|
+
async get(userId) {
|
|
60
|
+
const data = await this.http.get(`${this.basePath}/users/${userId}`);
|
|
61
|
+
return new ServerUser(data);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Add a sub-user, or add permissions to an existing one.
|
|
65
|
+
*
|
|
66
|
+
* Identify the user by `userId`, or by `email` (an unknown email invites a new user,
|
|
67
|
+
* which requires `user.manage` and a configured email transport). Existing grants are kept.
|
|
68
|
+
*/
|
|
69
|
+
async add(input) {
|
|
70
|
+
const body = {
|
|
71
|
+
permissions: input.permissions,
|
|
72
|
+
expires_at: expiresAtBody(input.expiresAt),
|
|
73
|
+
};
|
|
74
|
+
if ('userId' in input)
|
|
75
|
+
body['user_id'] = input.userId;
|
|
76
|
+
else
|
|
77
|
+
body['email'] = input.email;
|
|
78
|
+
const data = await this.http.post(`${this.basePath}/users`, body);
|
|
79
|
+
return new ServerUser(data);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Replace a sub-user's permission set. Grants not listed are revoked.
|
|
83
|
+
*
|
|
84
|
+
* @param userId The sub-user's NanoID.
|
|
85
|
+
* @param payload The exact permission set to grant, and an optional expiry.
|
|
86
|
+
*/
|
|
87
|
+
async update(userId, payload) {
|
|
88
|
+
const data = await this.http.patch(`${this.basePath}/users/${userId}`, {
|
|
89
|
+
permissions: payload.permissions,
|
|
90
|
+
expires_at: expiresAtBody(payload.expiresAt),
|
|
91
|
+
});
|
|
92
|
+
return new ServerUser(data);
|
|
93
|
+
}
|
|
94
|
+
/** Remove a sub-user, revoking all their grants at the resource scope. */
|
|
95
|
+
async remove(userId) {
|
|
96
|
+
await this.http.delete(`${this.basePath}/users/${userId}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
exports.ServerUserManager = ServerUserManager;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ISODate, NanoID, PowerState, ServerRestrictedState, SftpPermission } from '../../types.js';
|
|
2
2
|
import type { EggData } from '../eggs.js';
|
|
3
|
-
import type {
|
|
3
|
+
import type { UserData } from '../users.js';
|
|
4
4
|
import type { ServerGroupData } from '../server-groups.js';
|
|
5
5
|
/** A single egg environment variable and its value for a server. @internal */
|
|
6
6
|
export interface StartupVariableData {
|
|
@@ -22,7 +22,7 @@ export interface ServerStatusData {
|
|
|
22
22
|
rx_bytes: number;
|
|
23
23
|
tx_bytes: number;
|
|
24
24
|
};
|
|
25
|
-
|
|
25
|
+
uptime: number;
|
|
26
26
|
disk_bytes: number;
|
|
27
27
|
} | null;
|
|
28
28
|
}
|
|
@@ -46,7 +46,7 @@ export interface ServerBuildData {
|
|
|
46
46
|
export interface ServerAllocationPortData {
|
|
47
47
|
id: string;
|
|
48
48
|
description?: string | null;
|
|
49
|
-
|
|
49
|
+
meta_id?: string;
|
|
50
50
|
meta?: {
|
|
51
51
|
id: string;
|
|
52
52
|
ip: string;
|
|
@@ -73,6 +73,21 @@ export interface ServerProfileData {
|
|
|
73
73
|
name: string;
|
|
74
74
|
description?: string | null;
|
|
75
75
|
notes?: string | null;
|
|
76
|
+
/** Requires `server.egg.read`. Populated with `?include=egg`. */
|
|
77
|
+
egg_id?: string;
|
|
78
|
+
egg?: EggData;
|
|
79
|
+
egg_image_id?: string;
|
|
80
|
+
egg_image?: {
|
|
81
|
+
id: string;
|
|
82
|
+
image: string;
|
|
83
|
+
};
|
|
84
|
+
egg_image_override?: string | null;
|
|
85
|
+
skip_install_scripts?: boolean;
|
|
86
|
+
/** Requires `server.startup.read`. Populated with `?include=startup`. */
|
|
87
|
+
startup?: {
|
|
88
|
+
command: string;
|
|
89
|
+
variables: Record<string, StartupVariableData>;
|
|
90
|
+
} | null;
|
|
76
91
|
folder?: string | null;
|
|
77
92
|
is_active: boolean;
|
|
78
93
|
created_at: ISODate;
|
|
@@ -80,7 +95,7 @@ export interface ServerProfileData {
|
|
|
80
95
|
}
|
|
81
96
|
/** Raw API shape for an activity log job log entry. @internal */
|
|
82
97
|
export interface ActivityJobLogData {
|
|
83
|
-
|
|
98
|
+
event: string;
|
|
84
99
|
metadata: Record<string, unknown>;
|
|
85
100
|
created_at: ISODate;
|
|
86
101
|
}
|
|
@@ -99,8 +114,14 @@ export interface ActivityLogData {
|
|
|
99
114
|
event: string;
|
|
100
115
|
server_id?: string | null;
|
|
101
116
|
node_id?: string | null;
|
|
117
|
+
group_id?: string | null;
|
|
118
|
+
host_id?: string | null;
|
|
102
119
|
issuer_id?: string | null;
|
|
103
|
-
issuer?:
|
|
120
|
+
issuer?: UserData | null;
|
|
121
|
+
/** The user an action was performed on, when applicable. */
|
|
122
|
+
subject_id?: string | null;
|
|
123
|
+
subject?: UserData | null;
|
|
124
|
+
/** Requires `application.activities.ip.read`. */
|
|
104
125
|
ip?: string | null;
|
|
105
126
|
metadata: Record<string, unknown>;
|
|
106
127
|
job_id?: string | null;
|
|
@@ -116,7 +137,7 @@ export interface SftpUserData {
|
|
|
116
137
|
password?: string;
|
|
117
138
|
paths: Record<string, SftpPermission[]>;
|
|
118
139
|
owner_id: string;
|
|
119
|
-
owner?:
|
|
140
|
+
owner?: UserData | null;
|
|
120
141
|
last_login_at: ISODate | null;
|
|
121
142
|
created_at: ISODate;
|
|
122
143
|
updated_at: ISODate;
|
|
@@ -157,20 +178,8 @@ export interface ServerData {
|
|
|
157
178
|
restricted_state: ServerRestrictedState;
|
|
158
179
|
group_id: string;
|
|
159
180
|
group?: ServerGroupData;
|
|
160
|
-
egg_id: string;
|
|
161
|
-
egg?: EggData;
|
|
162
|
-
egg_image_id?: string;
|
|
163
|
-
egg_image?: {
|
|
164
|
-
id: string;
|
|
165
|
-
image: string;
|
|
166
|
-
};
|
|
167
|
-
egg_image_override?: string | null;
|
|
168
181
|
status?: ServerStatusData | null;
|
|
169
182
|
build?: ServerBuildData | null;
|
|
170
|
-
startup?: {
|
|
171
|
-
command: string;
|
|
172
|
-
variables: Record<string, StartupVariableData>;
|
|
173
|
-
} | null;
|
|
174
183
|
allocations?: ServerAllocationsData | null;
|
|
175
184
|
profiles?: ServerProfileData[] | null;
|
|
176
185
|
created_at: ISODate;
|
|
@@ -189,13 +198,6 @@ export interface UpdateServerPayload {
|
|
|
189
198
|
ip: string;
|
|
190
199
|
port: number;
|
|
191
200
|
};
|
|
192
|
-
/** Update startup command and/or environment variables. */
|
|
193
|
-
startup?: {
|
|
194
|
-
/** New startup command override, or `null` to reset to the egg default. */
|
|
195
|
-
command?: string | null;
|
|
196
|
-
/** Map of env variable keys to new values (or `null` to reset to default). */
|
|
197
|
-
variables?: Record<string, string | null>;
|
|
198
|
-
};
|
|
199
201
|
}
|
|
200
202
|
export type { ISODate, NanoID, PowerState, ServerRestrictedState, SftpPermission };
|
|
201
203
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/src/resources/servers/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACzG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/src/resources/servers/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import type { HttpClient } from '../http.js';
|
|
2
|
+
import { ResourceNamespace } from '../namespace.js';
|
|
3
|
+
import { ReactiveResource } from '../reactive.js';
|
|
4
|
+
import { type ISODate, type NanoID, type Paginated } from '../types.js';
|
|
5
|
+
import { ApiKey, type CreateApiKeyPayload } from './api-keys.js';
|
|
6
|
+
/** Raw API shape for a system. @internal */
|
|
7
|
+
export interface SystemData {
|
|
8
|
+
id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
description: string | null;
|
|
11
|
+
permissions?: string[];
|
|
12
|
+
created_at: ISODate;
|
|
13
|
+
updated_at: ISODate;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* A non-user identity (bootstrap or automation) that owns API keys.
|
|
17
|
+
*
|
|
18
|
+
* API keys owned by a system inherit the system's permissions.
|
|
19
|
+
*
|
|
20
|
+
* Retrieved via {@link SystemsNamespace.get} or {@link SystemsNamespace.list}.
|
|
21
|
+
*/
|
|
22
|
+
export declare class System extends ReactiveResource {
|
|
23
|
+
/** The system's unique NanoID. */
|
|
24
|
+
readonly id: NanoID;
|
|
25
|
+
/** Display name. */
|
|
26
|
+
name: string;
|
|
27
|
+
/** Optional description. */
|
|
28
|
+
description: string | null;
|
|
29
|
+
/** The system's permission scopes. Requires `?include=permissions`. */
|
|
30
|
+
permissions: string[] | undefined;
|
|
31
|
+
/** When this system was created. */
|
|
32
|
+
createdAt: Date;
|
|
33
|
+
/** When this system was last updated. */
|
|
34
|
+
updatedAt: Date;
|
|
35
|
+
/** @internal */
|
|
36
|
+
constructor(data: SystemData);
|
|
37
|
+
/** Apply raw API data to this system instance, updating all mutable fields. */
|
|
38
|
+
applyData(data: SystemData): void;
|
|
39
|
+
}
|
|
40
|
+
/** Valid include keys for system endpoints. */
|
|
41
|
+
export type SystemInclude = 'permissions';
|
|
42
|
+
/** Fields accepted when creating a system. */
|
|
43
|
+
export interface CreateSystemPayload {
|
|
44
|
+
name: string;
|
|
45
|
+
description?: string;
|
|
46
|
+
}
|
|
47
|
+
/** Fields accepted when updating a system. All optional. */
|
|
48
|
+
export interface UpdateSystemPayload {
|
|
49
|
+
name?: string;
|
|
50
|
+
description?: string;
|
|
51
|
+
}
|
|
52
|
+
/** The one-time result of creating a system API key. */
|
|
53
|
+
export interface SystemApiKeyResult {
|
|
54
|
+
name: string;
|
|
55
|
+
description: string | null;
|
|
56
|
+
/** The one-time bearer token. Returned only here. */
|
|
57
|
+
token: string;
|
|
58
|
+
}
|
|
59
|
+
/** Typed events emitted by {@link SystemsNamespace}. */
|
|
60
|
+
export interface SystemEvents {
|
|
61
|
+
created: System;
|
|
62
|
+
updated: System;
|
|
63
|
+
deleted: NanoID;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Manages the API keys owned by a specific system.
|
|
67
|
+
*
|
|
68
|
+
* Access via `api.systems.keys(systemId)`.
|
|
69
|
+
*/
|
|
70
|
+
export declare class SystemKeysManager {
|
|
71
|
+
private readonly systemId;
|
|
72
|
+
private readonly http;
|
|
73
|
+
/** @internal */
|
|
74
|
+
constructor(systemId: NanoID, http: HttpClient);
|
|
75
|
+
/** List the system's active API keys. */
|
|
76
|
+
list(): Promise<ApiKey[]>;
|
|
77
|
+
/**
|
|
78
|
+
* Create an API key owned by the system.
|
|
79
|
+
*
|
|
80
|
+
* The returned `token` is the only time the bearer token is available. Store it securely.
|
|
81
|
+
*/
|
|
82
|
+
create(payload: CreateApiKeyPayload): Promise<SystemApiKeyResult>;
|
|
83
|
+
/** Revoke a system API key. */
|
|
84
|
+
revoke(keyId: NanoID): Promise<void>;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Namespace for system (non-user identity) management.
|
|
88
|
+
*
|
|
89
|
+
* Access via `api.systems`.
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* ```ts ignore
|
|
93
|
+
* const system = await api.systems.create({ name: 'CI deploy' });
|
|
94
|
+
* const { token } = await api.systems.keys(system.id).create({ name: 'pipeline', permissions: ['server.read'] });
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
export declare class SystemsNamespace extends ResourceNamespace<System, SystemEvents> {
|
|
98
|
+
/** @internal */
|
|
99
|
+
constructor(http: HttpClient);
|
|
100
|
+
/**
|
|
101
|
+
* Fetch a paginated list of systems.
|
|
102
|
+
*
|
|
103
|
+
* @param opts Pagination, search, and include options.
|
|
104
|
+
*/
|
|
105
|
+
list(opts?: {
|
|
106
|
+
page?: number;
|
|
107
|
+
perPage?: number;
|
|
108
|
+
search?: string;
|
|
109
|
+
include?: SystemInclude[];
|
|
110
|
+
}): Promise<Paginated<System>>;
|
|
111
|
+
/** Fetch a single system by ID. */
|
|
112
|
+
get(id: NanoID, opts?: {
|
|
113
|
+
include?: SystemInclude[];
|
|
114
|
+
}): Promise<System>;
|
|
115
|
+
/** Create a new system. */
|
|
116
|
+
create(payload: CreateSystemPayload): Promise<System>;
|
|
117
|
+
/** Update a system's name or description. */
|
|
118
|
+
update(id: NanoID, payload: UpdateSystemPayload): Promise<System>;
|
|
119
|
+
/** Delete a system. Fails if it still owns active API keys. */
|
|
120
|
+
delete(id: NanoID): Promise<void>;
|
|
121
|
+
/** Manage the API keys owned by a system. */
|
|
122
|
+
keys(systemId: NanoID): SystemKeysManager;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=systems.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"systems.d.ts","sourceRoot":"","sources":["../../../src/src/resources/systems.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SystemsNamespace = exports.SystemKeysManager = exports.System = void 0;
|
|
4
|
+
const namespace_js_1 = require("../namespace.js");
|
|
5
|
+
const reactive_js_1 = require("../reactive.js");
|
|
6
|
+
const types_js_1 = require("../types.js");
|
|
7
|
+
const api_keys_js_1 = require("./api-keys.js");
|
|
8
|
+
/**
|
|
9
|
+
* A non-user identity (bootstrap or automation) that owns API keys.
|
|
10
|
+
*
|
|
11
|
+
* API keys owned by a system inherit the system's permissions.
|
|
12
|
+
*
|
|
13
|
+
* Retrieved via {@link SystemsNamespace.get} or {@link SystemsNamespace.list}.
|
|
14
|
+
*/
|
|
15
|
+
class System extends reactive_js_1.ReactiveResource {
|
|
16
|
+
/** The system's unique NanoID. */
|
|
17
|
+
id;
|
|
18
|
+
/** Display name. */
|
|
19
|
+
name;
|
|
20
|
+
/** Optional description. */
|
|
21
|
+
description;
|
|
22
|
+
/** The system's permission scopes. Requires `?include=permissions`. */
|
|
23
|
+
permissions;
|
|
24
|
+
/** When this system was created. */
|
|
25
|
+
createdAt;
|
|
26
|
+
/** When this system was last updated. */
|
|
27
|
+
updatedAt;
|
|
28
|
+
/** @internal */
|
|
29
|
+
constructor(data) {
|
|
30
|
+
super();
|
|
31
|
+
this.id = (0, types_js_1.toNanoID)(data.id);
|
|
32
|
+
this.applyData(data);
|
|
33
|
+
}
|
|
34
|
+
/** Apply raw API data to this system instance, updating all mutable fields. */
|
|
35
|
+
applyData(data) {
|
|
36
|
+
this.name = data.name;
|
|
37
|
+
this.description = data.description;
|
|
38
|
+
this.permissions = data.permissions;
|
|
39
|
+
this.createdAt = new Date(data.created_at);
|
|
40
|
+
this.updatedAt = new Date(data.updated_at);
|
|
41
|
+
this.notify();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.System = System;
|
|
45
|
+
/**
|
|
46
|
+
* Manages the API keys owned by a specific system.
|
|
47
|
+
*
|
|
48
|
+
* Access via `api.systems.keys(systemId)`.
|
|
49
|
+
*/
|
|
50
|
+
class SystemKeysManager {
|
|
51
|
+
systemId;
|
|
52
|
+
http;
|
|
53
|
+
/** @internal */
|
|
54
|
+
constructor(systemId, http) {
|
|
55
|
+
this.systemId = systemId;
|
|
56
|
+
this.http = http;
|
|
57
|
+
}
|
|
58
|
+
/** List the system's active API keys. */
|
|
59
|
+
async list() {
|
|
60
|
+
const data = await this.http.get(`/systems/${this.systemId}/api-keys`);
|
|
61
|
+
return data.map((d) => new api_keys_js_1.ApiKey(d));
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Create an API key owned by the system.
|
|
65
|
+
*
|
|
66
|
+
* The returned `token` is the only time the bearer token is available. Store it securely.
|
|
67
|
+
*/
|
|
68
|
+
async create(payload) {
|
|
69
|
+
const data = await this.http.post(`/systems/${this.systemId}/api-keys`, payload);
|
|
70
|
+
return { name: data.name, description: data.description, token: data.key };
|
|
71
|
+
}
|
|
72
|
+
/** Revoke a system API key. */
|
|
73
|
+
async revoke(keyId) {
|
|
74
|
+
await this.http.delete(`/systems/${this.systemId}/api-keys/${keyId}`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.SystemKeysManager = SystemKeysManager;
|
|
78
|
+
/**
|
|
79
|
+
* Namespace for system (non-user identity) management.
|
|
80
|
+
*
|
|
81
|
+
* Access via `api.systems`.
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```ts ignore
|
|
85
|
+
* const system = await api.systems.create({ name: 'CI deploy' });
|
|
86
|
+
* const { token } = await api.systems.keys(system.id).create({ name: 'pipeline', permissions: ['server.read'] });
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
class SystemsNamespace extends namespace_js_1.ResourceNamespace {
|
|
90
|
+
/** @internal */
|
|
91
|
+
constructor(http) {
|
|
92
|
+
super(http);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Fetch a paginated list of systems.
|
|
96
|
+
*
|
|
97
|
+
* @param opts Pagination, search, and include options.
|
|
98
|
+
*/
|
|
99
|
+
async list(opts = {}) {
|
|
100
|
+
const extra = {};
|
|
101
|
+
const include = (0, types_js_1.joinIncludes)(opts);
|
|
102
|
+
if (include)
|
|
103
|
+
extra['include'] = include;
|
|
104
|
+
const result = await this.http.list('/systems', opts, extra);
|
|
105
|
+
const systems = result.data.map((d) => new System(d));
|
|
106
|
+
this.setCache(systems);
|
|
107
|
+
return { ...result, data: systems };
|
|
108
|
+
}
|
|
109
|
+
/** Fetch a single system by ID. */
|
|
110
|
+
async get(id, opts = {}) {
|
|
111
|
+
const params = {};
|
|
112
|
+
const include = (0, types_js_1.joinIncludes)(opts);
|
|
113
|
+
if (include)
|
|
114
|
+
params['include'] = include;
|
|
115
|
+
const data = await this.http.get(`/systems/${id}`, { params });
|
|
116
|
+
return new System(data);
|
|
117
|
+
}
|
|
118
|
+
/** Create a new system. */
|
|
119
|
+
async create(payload) {
|
|
120
|
+
const data = await this.http.post('/systems', payload);
|
|
121
|
+
const system = new System(data);
|
|
122
|
+
this.addToCache(system);
|
|
123
|
+
this.emit('created', system);
|
|
124
|
+
return system;
|
|
125
|
+
}
|
|
126
|
+
/** Update a system's name or description. */
|
|
127
|
+
async update(id, payload) {
|
|
128
|
+
const data = await this.http.patch(`/systems/${id}`, payload);
|
|
129
|
+
const system = new System(data);
|
|
130
|
+
this.upsertCache(system);
|
|
131
|
+
this.emit('updated', system);
|
|
132
|
+
return system;
|
|
133
|
+
}
|
|
134
|
+
/** Delete a system. Fails if it still owns active API keys. */
|
|
135
|
+
async delete(id) {
|
|
136
|
+
await this.http.delete(`/systems/${id}`);
|
|
137
|
+
this.removeFromCache(id);
|
|
138
|
+
this.emit('deleted', id);
|
|
139
|
+
}
|
|
140
|
+
/** Manage the API keys owned by a system. */
|
|
141
|
+
keys(systemId) {
|
|
142
|
+
return new SystemKeysManager(systemId, this.http);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
exports.SystemsNamespace = SystemsNamespace;
|