@meowpanel/api 0.14.0 → 0.16.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/README.md +1 -1
- package/esm/mod.d.ts +3 -3
- package/esm/mod.d.ts.map +1 -1
- package/esm/mod.js +1 -1
- package/esm/src/client.d.ts +1 -1
- package/esm/src/client.js +1 -1
- package/esm/src/http.d.ts +11 -3
- package/esm/src/http.d.ts.map +1 -1
- package/esm/src/http.js +25 -15
- package/esm/src/resources/servers/activity.d.ts +16 -1
- package/esm/src/resources/servers/activity.d.ts.map +1 -1
- package/esm/src/resources/servers/activity.js +10 -1
- package/esm/src/resources/servers/backups.d.ts +7 -7
- package/esm/src/resources/servers/backups.d.ts.map +1 -1
- package/esm/src/resources/servers/backups.js +8 -8
- package/esm/src/resources/servers/connection.d.ts +82 -40
- package/esm/src/resources/servers/connection.d.ts.map +1 -1
- package/esm/src/resources/servers/connection.js +117 -76
- package/esm/src/resources/servers/node-client.d.ts +5 -4
- package/esm/src/resources/servers/node-client.d.ts.map +1 -1
- package/esm/src/resources/servers/node-client.js +6 -10
- package/esm/src/resources/servers/server.d.ts +1 -1
- package/esm/src/resources/servers/server.js +3 -3
- package/esm/src/resources/servers/types.d.ts +6 -1
- package/esm/src/resources/servers/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/script/mod.d.ts +3 -3
- package/script/mod.d.ts.map +1 -1
- package/script/mod.js +1 -1
- package/script/src/client.d.ts +1 -1
- package/script/src/client.js +1 -1
- package/script/src/http.d.ts +11 -3
- package/script/src/http.d.ts.map +1 -1
- package/script/src/http.js +25 -15
- package/script/src/resources/servers/activity.d.ts +16 -1
- package/script/src/resources/servers/activity.d.ts.map +1 -1
- package/script/src/resources/servers/activity.js +9 -0
- package/script/src/resources/servers/backups.d.ts +7 -7
- package/script/src/resources/servers/backups.d.ts.map +1 -1
- package/script/src/resources/servers/backups.js +8 -8
- package/script/src/resources/servers/connection.d.ts +82 -40
- package/script/src/resources/servers/connection.d.ts.map +1 -1
- package/script/src/resources/servers/connection.js +117 -76
- package/script/src/resources/servers/node-client.d.ts +5 -4
- package/script/src/resources/servers/node-client.d.ts.map +1 -1
- package/script/src/resources/servers/node-client.js +6 -10
- package/script/src/resources/servers/server.d.ts +1 -1
- package/script/src/resources/servers/server.js +3 -3
- package/script/src/resources/servers/types.d.ts +6 -1
- package/script/src/resources/servers/types.d.ts.map +1 -1
package/script/src/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/src/http.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/src/http.ts"],"names":[],"mappings":"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"}
|
package/script/src/http.js
CHANGED
|
@@ -151,6 +151,18 @@ class HttpClient {
|
|
|
151
151
|
headers: { ...this.defaultHeaders, ...init.headers },
|
|
152
152
|
}, params);
|
|
153
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* Send a request to a URL outside the API, such as a node daemon, through the configured
|
|
156
|
+
* `fetch` with the current bearer token. Non-2xx responses are returned, not thrown.
|
|
157
|
+
*
|
|
158
|
+
* @internal
|
|
159
|
+
*/
|
|
160
|
+
fetchUrl(url, init = {}) {
|
|
161
|
+
const headers = new Headers(init.headers);
|
|
162
|
+
if (this.token)
|
|
163
|
+
headers.set('Authorization', `Bearer ${this.token}`);
|
|
164
|
+
return this.fetchImpl(url, { ...init, headers });
|
|
165
|
+
}
|
|
154
166
|
/**
|
|
155
167
|
* GET and deserialize a JSON response body.
|
|
156
168
|
*
|
|
@@ -162,7 +174,8 @@ class HttpClient {
|
|
|
162
174
|
return res.json();
|
|
163
175
|
}
|
|
164
176
|
/**
|
|
165
|
-
* POST with an optional JSON body. Returns `undefined` for
|
|
177
|
+
* POST with an optional JSON body. Returns `undefined` for a response without a body, such as
|
|
178
|
+
* `204 No Content` or a bare `202 Accepted`.
|
|
166
179
|
*
|
|
167
180
|
* @param path Path relative to the API base URL.
|
|
168
181
|
* @param body Request body, serialized as JSON.
|
|
@@ -170,12 +183,10 @@ class HttpClient {
|
|
|
170
183
|
*/
|
|
171
184
|
async post(path, body, opts = {}) {
|
|
172
185
|
const res = await this.fetch(path, { method: 'POST', body: body !== undefined ? JSON.stringify(body) : undefined, signal: opts.signal }, opts.params);
|
|
173
|
-
|
|
174
|
-
return undefined;
|
|
175
|
-
return res.json();
|
|
186
|
+
return readBody(res);
|
|
176
187
|
}
|
|
177
188
|
/**
|
|
178
|
-
* PATCH with an optional JSON body. Returns `undefined` for
|
|
189
|
+
* PATCH with an optional JSON body. Returns `undefined` for a response without a body.
|
|
179
190
|
*
|
|
180
191
|
* @param path Path relative to the API base URL.
|
|
181
192
|
* @param body Partial update body, serialized as JSON.
|
|
@@ -183,21 +194,17 @@ class HttpClient {
|
|
|
183
194
|
*/
|
|
184
195
|
async patch(path, body, opts = {}) {
|
|
185
196
|
const res = await this.fetch(path, { method: 'PATCH', body: body !== undefined ? JSON.stringify(body) : undefined, signal: opts.signal }, opts.params);
|
|
186
|
-
|
|
187
|
-
return undefined;
|
|
188
|
-
return res.json();
|
|
197
|
+
return readBody(res);
|
|
189
198
|
}
|
|
190
199
|
/**
|
|
191
|
-
* DELETE a resource. Returns `undefined` for
|
|
200
|
+
* DELETE a resource. Returns `undefined` for a response without a body, otherwise the parsed body.
|
|
192
201
|
*
|
|
193
202
|
* @param path Path relative to the API base URL.
|
|
194
203
|
* @param opts Additional request options.
|
|
195
204
|
*/
|
|
196
205
|
async delete(path, opts = {}) {
|
|
197
206
|
const res = await this.fetch(path, { method: 'DELETE', signal: opts.signal }, opts.params);
|
|
198
|
-
|
|
199
|
-
return undefined;
|
|
200
|
-
return res.json();
|
|
207
|
+
return readBody(res);
|
|
201
208
|
}
|
|
202
209
|
/**
|
|
203
210
|
* PUT raw body content (e.g. for binary or multipart uploads).
|
|
@@ -217,9 +224,7 @@ class HttpClient {
|
|
|
217
224
|
headers,
|
|
218
225
|
signal: opts.signal,
|
|
219
226
|
}, opts.params);
|
|
220
|
-
|
|
221
|
-
return undefined;
|
|
222
|
-
return res.json();
|
|
227
|
+
return readBody(res);
|
|
223
228
|
}
|
|
224
229
|
/**
|
|
225
230
|
* GET a paginated list, parsing the `Content-Range` header for metadata when available.
|
|
@@ -255,3 +260,8 @@ class HttpClient {
|
|
|
255
260
|
}
|
|
256
261
|
}
|
|
257
262
|
exports.HttpClient = HttpClient;
|
|
263
|
+
/** The JSON body of a response, or `undefined` when it has none. */
|
|
264
|
+
async function readBody(res) {
|
|
265
|
+
const text = await res.text();
|
|
266
|
+
return (text === '' ? undefined : JSON.parse(text));
|
|
267
|
+
}
|
|
@@ -34,7 +34,7 @@ export declare class ActivityJob extends ReactiveResource {
|
|
|
34
34
|
/** The operation the job performs, e.g. `"server.install"`. */
|
|
35
35
|
readonly kind: string;
|
|
36
36
|
/** Current job status. */
|
|
37
|
-
status: 'in_progress' | 'completed' | 'failed';
|
|
37
|
+
status: 'in_progress' | 'completed' | 'failed' | 'canceled';
|
|
38
38
|
/** Completion percentage (0-100), or `null` if the job reports none. */
|
|
39
39
|
progress: number | null;
|
|
40
40
|
/** Latest status line, or `null` if the job reports none. */
|
|
@@ -67,6 +67,12 @@ export declare class ActivityJob extends ReactiveResource {
|
|
|
67
67
|
export declare class ActivityLog extends ReactiveResource {
|
|
68
68
|
/** The activity log entry's unique NanoID. */
|
|
69
69
|
readonly id: NanoID;
|
|
70
|
+
/**
|
|
71
|
+
* The id the node daemon gave an entry it reported, which a console entry points at as its
|
|
72
|
+
* `activityId`. `null` for an entry the API recorded, and `undefined` unless the request asked
|
|
73
|
+
* for the `node_entry_id` include.
|
|
74
|
+
*/
|
|
75
|
+
readonly nodeEntryId: string | null | undefined;
|
|
70
76
|
/** The event type identifier, e.g. `"server.power.start"`. */
|
|
71
77
|
event: string;
|
|
72
78
|
/** NanoID of the server this activity is associated with, if any. */
|
|
@@ -124,7 +130,16 @@ export interface ActivityFeedOptions {
|
|
|
124
130
|
nodeId?: NanoID;
|
|
125
131
|
/** Filter by host. */
|
|
126
132
|
hostId?: NanoID;
|
|
133
|
+
/** Only the entries the node daemon reported with these ids. */
|
|
134
|
+
nodeEntryIds?: readonly string[];
|
|
135
|
+
/** Related records to embed in each entry. */
|
|
136
|
+
include?: readonly ActivityInclude[];
|
|
127
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* Extra data an activity entry can carry: `issuer` and `subject` fill those users, `job` the job,
|
|
140
|
+
* and `node_entry_id` the id the node daemon gave the entry.
|
|
141
|
+
*/
|
|
142
|
+
export type ActivityInclude = 'issuer' | 'subject' | 'job' | 'node_entry_id';
|
|
128
143
|
/** Query options for a single server's activity feed. */
|
|
129
144
|
export interface ServerActivityFeedOptions extends ActivityFeedOptions {
|
|
130
145
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../../../src/src/resources/servers/activity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAErE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEjH;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AAE5D;;GAEG;AACH,qBAAa,cAAc;IAC1B,8DAA8D;IAC9D,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,gDAAgD;IAChD,SAAgB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClD,uCAAuC;IACvC,SAAgB,SAAS,EAAE,IAAI,CAAC;IAEhC,gBAAgB;gBACG,IAAI,EAAE,kBAAkB;CAK3C;AAED;;;;;GAKG;AACH,qBAAa,WAAY,SAAQ,gBAAgB;IAChD,+BAA+B;IAC/B,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,+DAA+D;IAC/D,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,0BAA0B;IACnB,MAAM,EAAE,aAAa,GAAG,WAAW,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../../../src/src/resources/servers/activity.ts"],"names":[],"mappings":"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"}
|
|
@@ -87,6 +87,12 @@ exports.ActivityJob = ActivityJob;
|
|
|
87
87
|
class ActivityLog extends reactive_js_1.ReactiveResource {
|
|
88
88
|
/** The activity log entry's unique NanoID. */
|
|
89
89
|
id;
|
|
90
|
+
/**
|
|
91
|
+
* The id the node daemon gave an entry it reported, which a console entry points at as its
|
|
92
|
+
* `activityId`. `null` for an entry the API recorded, and `undefined` unless the request asked
|
|
93
|
+
* for the `node_entry_id` include.
|
|
94
|
+
*/
|
|
95
|
+
nodeEntryId;
|
|
90
96
|
/** The event type identifier, e.g. `"server.power.start"`. */
|
|
91
97
|
event;
|
|
92
98
|
/** NanoID of the server this activity is associated with, if any. */
|
|
@@ -123,6 +129,7 @@ class ActivityLog extends reactive_js_1.ReactiveResource {
|
|
|
123
129
|
constructor(data) {
|
|
124
130
|
super();
|
|
125
131
|
this.id = (0, types_js_1.toNanoID)(data.id);
|
|
132
|
+
this.nodeEntryId = data.node_entry_id;
|
|
126
133
|
this.event = data.event;
|
|
127
134
|
this.serverId = data.server_id ? (0, types_js_1.toNanoID)(data.server_id) : null;
|
|
128
135
|
this.nodeId = data.node_id ? (0, types_js_1.toNanoID)(data.node_id) : null;
|
|
@@ -161,6 +168,8 @@ async function listActivities(http, path, opts = {}, extra = {}) {
|
|
|
161
168
|
group_id: opts.groupId,
|
|
162
169
|
node_id: opts.nodeId,
|
|
163
170
|
host_id: opts.hostId,
|
|
171
|
+
node_entry_id: opts.nodeEntryIds?.length ? opts.nodeEntryIds.join(',') : undefined,
|
|
172
|
+
include: (0, types_js_1.joinIncludes)(opts),
|
|
164
173
|
...extra,
|
|
165
174
|
};
|
|
166
175
|
const result = await http.list(path, { page: opts.page, perPage: opts.perPage }, params);
|
|
@@ -6,8 +6,8 @@ export type BackupAdapter = 'whisker' | 's3';
|
|
|
6
6
|
export interface CreateBackupOptions {
|
|
7
7
|
/** Storage adapter to write the backup to. */
|
|
8
8
|
adapter: BackupAdapter;
|
|
9
|
-
/** Client-chosen
|
|
10
|
-
|
|
9
|
+
/** Client-chosen 12-character nanoid identifying the backup. */
|
|
10
|
+
id: string;
|
|
11
11
|
/** Newline- or glob-separated ignore patterns. */
|
|
12
12
|
ignore?: string;
|
|
13
13
|
}
|
|
@@ -28,7 +28,7 @@ export interface RestoreBackupOptions {
|
|
|
28
28
|
*
|
|
29
29
|
* @example
|
|
30
30
|
* ```ts ignore
|
|
31
|
-
* const job = await server.backups.create({ adapter: 'whisker',
|
|
31
|
+
* const job = await server.backups.create({ adapter: 'whisker', id });
|
|
32
32
|
* await job.wait();
|
|
33
33
|
* ```
|
|
34
34
|
*/
|
|
@@ -38,9 +38,9 @@ export declare class ServerBackupsManager {
|
|
|
38
38
|
constructor(node: NodeClient);
|
|
39
39
|
/** Start a backup. Returns the job to track. */
|
|
40
40
|
create(opts: CreateBackupOptions): Promise<ServerJob>;
|
|
41
|
-
/** Restore a backup by its
|
|
42
|
-
restore(
|
|
43
|
-
/** Delete a backup by its
|
|
44
|
-
delete(
|
|
41
|
+
/** Restore a backup by its nanoid. Returns the job to track. */
|
|
42
|
+
restore(backupId: string, opts: RestoreBackupOptions): Promise<ServerJob>;
|
|
43
|
+
/** Delete a backup by its nanoid. Treats an already-missing backup as success. */
|
|
44
|
+
delete(backupId: string): Promise<void>;
|
|
45
45
|
}
|
|
46
46
|
//# sourceMappingURL=backups.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backups.d.ts","sourceRoot":"","sources":["../../../../src/src/resources/servers/backups.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,+EAA+E;AAC/E,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,IAAI,CAAC;AAE7C,qCAAqC;AACrC,MAAM,WAAW,mBAAmB;IACnC,8CAA8C;IAC9C,OAAO,EAAE,aAAa,CAAC;IACvB,
|
|
1
|
+
{"version":3,"file":"backups.d.ts","sourceRoot":"","sources":["../../../../src/src/resources/servers/backups.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,+EAA+E;AAC/E,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,IAAI,CAAC;AAE7C,qCAAqC;AACrC,MAAM,WAAW,mBAAmB;IACnC,8CAA8C;IAC9C,OAAO,EAAE,aAAa,CAAC;IACvB,gEAAgE;IAChE,EAAE,EAAE,MAAM,CAAC;IACX,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,sCAAsC;AACtC,MAAM,WAAW,oBAAoB;IACpC,2CAA2C;IAC3C,OAAO,EAAE,aAAa,CAAC;IACvB,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,oBAAoB;IAEb,OAAO,CAAC,QAAQ,CAAC,IAAI;IADxC,gBAAgB;gBACoB,IAAI,EAAE,UAAU;IAEpD,gDAAgD;IACnC,MAAM,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC;IASlE,gEAAgE;IACnD,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,SAAS,CAAC;IAStF,kFAAkF;IACrE,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGpD"}
|
|
@@ -10,7 +10,7 @@ const jobs_js_1 = require("./jobs.js");
|
|
|
10
10
|
*
|
|
11
11
|
* @example
|
|
12
12
|
* ```ts ignore
|
|
13
|
-
* const job = await server.backups.create({ adapter: 'whisker',
|
|
13
|
+
* const job = await server.backups.create({ adapter: 'whisker', id });
|
|
14
14
|
* await job.wait();
|
|
15
15
|
* ```
|
|
16
16
|
*/
|
|
@@ -24,24 +24,24 @@ class ServerBackupsManager {
|
|
|
24
24
|
async create(opts) {
|
|
25
25
|
const { data } = await this.node.postJson('/backup', {
|
|
26
26
|
adapter: opts.adapter,
|
|
27
|
-
|
|
27
|
+
id: opts.id,
|
|
28
28
|
ignore: opts.ignore ?? '',
|
|
29
29
|
});
|
|
30
30
|
return new jobs_js_1.ServerJob({ id: data.job_id }, this.node);
|
|
31
31
|
}
|
|
32
|
-
/** Restore a backup by its
|
|
33
|
-
async restore(
|
|
32
|
+
/** Restore a backup by its nanoid. Returns the job to track. */
|
|
33
|
+
async restore(backupId, opts) {
|
|
34
34
|
const body = { adapter: opts.adapter };
|
|
35
35
|
if (opts.truncateDirectory !== undefined)
|
|
36
36
|
body['truncate_directory'] = opts.truncateDirectory;
|
|
37
37
|
if (opts.downloadUrl !== undefined)
|
|
38
38
|
body['download_url'] = opts.downloadUrl;
|
|
39
|
-
const { data } = await this.node.postJson(`/backup/${
|
|
39
|
+
const { data } = await this.node.postJson(`/backup/${backupId}/restore`, body);
|
|
40
40
|
return new jobs_js_1.ServerJob({ id: data.job_id }, this.node);
|
|
41
41
|
}
|
|
42
|
-
/** Delete a backup by its
|
|
43
|
-
async delete(
|
|
44
|
-
await this.node.fetch(`/backup/${
|
|
42
|
+
/** Delete a backup by its nanoid. Treats an already-missing backup as success. */
|
|
43
|
+
async delete(backupId) {
|
|
44
|
+
await this.node.fetch(`/backup/${backupId}`, { method: 'DELETE' });
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
exports.ServerBackupsManager = ServerBackupsManager;
|
|
@@ -1,7 +1,47 @@
|
|
|
1
|
+
import type { HttpClient } from '../../http.js';
|
|
1
2
|
import { ReactiveResource } from '../../reactive.js';
|
|
2
3
|
import { type SseState } from '../../sse.js';
|
|
3
|
-
import type { NanoID, PowerState } from '../../types.js';
|
|
4
|
+
import type { NanoID, PowerAction, PowerState } from '../../types.js';
|
|
4
5
|
import type { JobStatus } from './jobs.js';
|
|
6
|
+
/** What a {@link ConsoleEntry} records. */
|
|
7
|
+
export type ConsoleEntryKind = 'output' | 'command' | 'power' | 'state' | 'daemon' | 'crash';
|
|
8
|
+
declare const transferStatuses: readonly ["pending", "processing", "canceling", "canceled", "failed", "completed"];
|
|
9
|
+
/** Where a server transfer stands. `canceled`, `failed` and `completed` are final. */
|
|
10
|
+
export type TransferStatus = (typeof transferStatuses)[number];
|
|
11
|
+
/**
|
|
12
|
+
* One entry of a server's console timeline: a line of output, a command someone sent, a power
|
|
13
|
+
* action, a state change, a message from the daemon, or a crash.
|
|
14
|
+
*/
|
|
15
|
+
export interface ConsoleEntry {
|
|
16
|
+
/** Orders the server's entries. Each entry's is higher than the one before it. */
|
|
17
|
+
seq: number;
|
|
18
|
+
time: Date;
|
|
19
|
+
kind: ConsoleEntryKind;
|
|
20
|
+
/** The line of output, the command sent, or the daemon's message. */
|
|
21
|
+
text?: string;
|
|
22
|
+
/** The state a `state` entry moved to. */
|
|
23
|
+
state?: PowerState;
|
|
24
|
+
/**
|
|
25
|
+
* The action of a `power` entry. A power action is recorded twice: as it starts, with the
|
|
26
|
+
* `running` status, and as it ends.
|
|
27
|
+
*/
|
|
28
|
+
action?: PowerAction;
|
|
29
|
+
status?: JobStatus;
|
|
30
|
+
/** Why a `failed` power action failed. */
|
|
31
|
+
error?: string;
|
|
32
|
+
/** The power action's job, on its `power` entries and on the `daemon` messages it printed. */
|
|
33
|
+
jobId?: string;
|
|
34
|
+
/**
|
|
35
|
+
* The auth issuer id of whoever sent a command or power action, as in {@link ServerConnection.viewerIssuerId}.
|
|
36
|
+
* Missing when the daemon acted on its own.
|
|
37
|
+
*/
|
|
38
|
+
issuerId?: string;
|
|
39
|
+
/** The `nodeEntryId` of the activity entry a command or power action produced. */
|
|
40
|
+
activityId?: string;
|
|
41
|
+
/** How a crashed process ended. */
|
|
42
|
+
exitCode?: number;
|
|
43
|
+
outOfMemory?: boolean;
|
|
44
|
+
}
|
|
5
45
|
/** Real-time resource utilization reported by the node. */
|
|
6
46
|
export interface ServerUtilization {
|
|
7
47
|
/** CPU usage as an absolute percentage (0–100+). */
|
|
@@ -39,7 +79,7 @@ export interface JobLogEvent {
|
|
|
39
79
|
/** Payload for the `backup_completed` event. */
|
|
40
80
|
export interface BackupCompletedEvent {
|
|
41
81
|
/** The completed backup's id. */
|
|
42
|
-
|
|
82
|
+
id: string;
|
|
43
83
|
isSuccessful: boolean;
|
|
44
84
|
checksum: string;
|
|
45
85
|
checksumType: string;
|
|
@@ -47,8 +87,8 @@ export interface BackupCompletedEvent {
|
|
|
47
87
|
}
|
|
48
88
|
/** Typed events emitted by {@link ServerConnection}. */
|
|
49
89
|
export interface ServerConnectionEvents {
|
|
50
|
-
/** A
|
|
51
|
-
|
|
90
|
+
/** A new entry in the server's console timeline. */
|
|
91
|
+
console_entry: ConsoleEntry;
|
|
52
92
|
/** The server's power state changed. */
|
|
53
93
|
status: PowerState;
|
|
54
94
|
/** New resource utilization stats are available. */
|
|
@@ -66,19 +106,14 @@ export interface ServerConnectionEvents {
|
|
|
66
106
|
install_started: '';
|
|
67
107
|
/** Installation finished. */
|
|
68
108
|
install_completed: '';
|
|
69
|
-
/**
|
|
70
|
-
* A line of installation output.
|
|
71
|
-
* Gated on `server.install.log`, so it never arrives for a viewer who lacks it.
|
|
72
|
-
*/
|
|
73
|
-
install_output: string;
|
|
74
109
|
/** An out-of-band status message from the daemon. */
|
|
75
110
|
daemon_message: string;
|
|
76
|
-
/** A backup finished; the payload's `
|
|
111
|
+
/** A backup finished; the payload's `id` identifies which one. */
|
|
77
112
|
backup_completed: BackupCompletedEvent;
|
|
78
113
|
/** A backup restore finished. */
|
|
79
114
|
backup_restore_completed: '';
|
|
80
|
-
/** The transfer status changed.
|
|
81
|
-
transfer_status:
|
|
115
|
+
/** The transfer status changed. */
|
|
116
|
+
transfer_status: TransferStatus;
|
|
82
117
|
/**
|
|
83
118
|
* A line of transfer output.
|
|
84
119
|
* Gated on `server.transfer.log`, so it never arrives for a viewer who lacks it.
|
|
@@ -90,13 +125,14 @@ export interface ServerConnectionEvents {
|
|
|
90
125
|
/**
|
|
91
126
|
* A real-time SSE connection to a specific server on its Whisker node daemon.
|
|
92
127
|
*
|
|
93
|
-
* Emits typed events for console
|
|
94
|
-
* Also
|
|
95
|
-
*
|
|
128
|
+
* Emits typed events for the console timeline, power state changes, and resource utilization.
|
|
129
|
+
* Also keeps the console timeline in {@link entries}, starting with the history the node holds,
|
|
130
|
+
* fetched on {@link open}.
|
|
96
131
|
*
|
|
97
132
|
* The stream reconnects on its own after the daemon restarts or the network drops. Track it
|
|
98
|
-
* through {@link state} or the `connection_state` event. After a reconnect,
|
|
99
|
-
*
|
|
133
|
+
* through {@link state} or the `connection_state` event. After a reconnect, or when the daemon
|
|
134
|
+
* dropped entries for a viewer that fell behind, the missing entries are fetched and appended to
|
|
135
|
+
* {@link entries} in order, and emitted as `console_entry`.
|
|
100
136
|
*
|
|
101
137
|
* Obtain a connection via `Server.createConnection`.
|
|
102
138
|
*
|
|
@@ -109,8 +145,8 @@ export interface ServerConnectionEvents {
|
|
|
109
145
|
*
|
|
110
146
|
* await conn.open();
|
|
111
147
|
*
|
|
112
|
-
* // Reactive: $conn.
|
|
113
|
-
* // Live
|
|
148
|
+
* // Reactive: $conn.entries is the console timeline
|
|
149
|
+
* // Live entries are appended automatically as they arrive over SSE
|
|
114
150
|
*
|
|
115
151
|
* // Later...
|
|
116
152
|
* conn.close();
|
|
@@ -119,11 +155,9 @@ export interface ServerConnectionEvents {
|
|
|
119
155
|
export declare class ServerConnection extends ReactiveResource {
|
|
120
156
|
private readonly serverId;
|
|
121
157
|
private readonly nodeUrl;
|
|
122
|
-
private readonly
|
|
123
|
-
/**
|
|
124
|
-
private static readonly
|
|
125
|
-
/** Console history lines fetched from the node on open and after each reconnect. */
|
|
126
|
-
private static readonly historyLines;
|
|
158
|
+
private readonly http;
|
|
159
|
+
/** How many entries {@link ServerConnection.entries} keeps, the size of the daemon's timeline. */
|
|
160
|
+
private static readonly maxEntries;
|
|
127
161
|
/**
|
|
128
162
|
* Whisker sends a keepalive every 20 seconds, so a stream silent for this long is dead even
|
|
129
163
|
* if the socket never closed.
|
|
@@ -131,28 +165,32 @@ export declare class ServerConnection extends ReactiveResource {
|
|
|
131
165
|
private static readonly idleTimeoutMs;
|
|
132
166
|
private readonly listeners;
|
|
133
167
|
private sse?;
|
|
134
|
-
/** Live
|
|
135
|
-
private
|
|
168
|
+
/** Live entries held back while the post-reconnect history is merged in. */
|
|
169
|
+
private pendingEntries?;
|
|
136
170
|
/**
|
|
137
|
-
*
|
|
171
|
+
* The console timeline, oldest first, capped at the daemon's timeline size.
|
|
138
172
|
*
|
|
139
|
-
*
|
|
140
|
-
*
|
|
173
|
+
* Starts with the history the node holds when {@link open} is called, then grows as
|
|
174
|
+
* `console_entry` events arrive.
|
|
141
175
|
*
|
|
142
|
-
* Use as a reactive store: `$conn.
|
|
176
|
+
* Use as a reactive store: `$conn.entries`.
|
|
143
177
|
*/
|
|
144
|
-
|
|
178
|
+
entries: ConsoleEntry[];
|
|
145
179
|
/** @internal */
|
|
146
|
-
constructor(serverId: NanoID, nodeUrl: string,
|
|
180
|
+
constructor(serverId: NanoID, nodeUrl: string, http: HttpClient);
|
|
147
181
|
/** State of the stream to the daemon. */
|
|
148
182
|
get state(): SseState;
|
|
149
183
|
/** `true` if the SSE connection is currently open. */
|
|
150
184
|
get isConnected(): boolean;
|
|
151
185
|
/**
|
|
152
|
-
*
|
|
186
|
+
* The auth issuer id the connection's token belongs to, which is how {@link ConsoleEntry.issuerId}
|
|
187
|
+
* names the viewer. `undefined` if the token does not say.
|
|
188
|
+
*/
|
|
189
|
+
get viewerIssuerId(): string | undefined;
|
|
190
|
+
/**
|
|
191
|
+
* Fetch the console history and open the SSE stream.
|
|
153
192
|
*
|
|
154
|
-
*
|
|
155
|
-
* live events.
|
|
193
|
+
* Fills {@link entries} with the history the node holds, then begins streaming live events.
|
|
156
194
|
*
|
|
157
195
|
* Only one stream is maintained at a time.
|
|
158
196
|
*
|
|
@@ -179,15 +217,19 @@ export declare class ServerConnection extends ReactiveResource {
|
|
|
179
217
|
removeAllListeners(): void;
|
|
180
218
|
private fetchHistory;
|
|
181
219
|
/**
|
|
182
|
-
* Fill in the
|
|
220
|
+
* Fill in the entries missed while the stream was down, or that the daemon dropped, from the
|
|
221
|
+
* history. `first` is a live entry that came after the gap.
|
|
183
222
|
*
|
|
184
|
-
* Live
|
|
185
|
-
*
|
|
223
|
+
* Live entries are held back until the history arrives, so the gap comes before them. A
|
|
224
|
+
* daemon whose newest entry is older than the last one seen has lost its timeline, and its
|
|
225
|
+
* history is taken as new.
|
|
186
226
|
*/
|
|
187
|
-
private
|
|
188
|
-
private
|
|
227
|
+
private resyncEntries;
|
|
228
|
+
private get lastSeq();
|
|
229
|
+
private appendEntry;
|
|
189
230
|
private emit;
|
|
190
231
|
/** Parse and dispatch a raw SSE event to registered handlers. */
|
|
191
232
|
private dispatch;
|
|
192
233
|
}
|
|
234
|
+
export {};
|
|
193
235
|
//# sourceMappingURL=connection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../src/src/resources/servers/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../src/src/resources/servers/connection.ts"],"names":[],"mappings":"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"}
|