@studiometa/forge-sdk 0.0.1 → 0.1.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 +178 -0
- package/dist/forge.d.ts +93 -0
- package/dist/forge.d.ts.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2049 -0
- package/dist/index.js.map +1 -0
- package/dist/pagination.d.ts +34 -0
- package/dist/pagination.d.ts.map +1 -0
- package/dist/resources/backups.d.ts +86 -0
- package/dist/resources/backups.d.ts.map +1 -0
- package/dist/resources/base.d.ts +10 -0
- package/dist/resources/base.d.ts.map +1 -0
- package/dist/resources/certificates.d.ts +102 -0
- package/dist/resources/certificates.d.ts.map +1 -0
- package/dist/resources/commands.d.ts +74 -0
- package/dist/resources/commands.d.ts.map +1 -0
- package/dist/resources/daemons.d.ts +92 -0
- package/dist/resources/daemons.d.ts.map +1 -0
- package/dist/resources/database-users.d.ts +84 -0
- package/dist/resources/database-users.d.ts.map +1 -0
- package/dist/resources/databases.d.ts +84 -0
- package/dist/resources/databases.d.ts.map +1 -0
- package/dist/resources/deployments.d.ts +90 -0
- package/dist/resources/deployments.d.ts.map +1 -0
- package/dist/resources/firewall-rules.d.ts +84 -0
- package/dist/resources/firewall-rules.d.ts.map +1 -0
- package/dist/resources/monitors.d.ts +85 -0
- package/dist/resources/monitors.d.ts.map +1 -0
- package/dist/resources/nginx-templates.d.ts +95 -0
- package/dist/resources/nginx-templates.d.ts.map +1 -0
- package/dist/resources/recipes.d.ts +99 -0
- package/dist/resources/recipes.d.ts.map +1 -0
- package/dist/resources/redirect-rules.d.ts +85 -0
- package/dist/resources/redirect-rules.d.ts.map +1 -0
- package/dist/resources/scheduled-jobs.d.ts +84 -0
- package/dist/resources/scheduled-jobs.d.ts.map +1 -0
- package/dist/resources/security-rules.d.ts +85 -0
- package/dist/resources/security-rules.d.ts.map +1 -0
- package/dist/resources/servers.d.ts +199 -0
- package/dist/resources/servers.d.ts.map +1 -0
- package/dist/resources/sites.d.ts +216 -0
- package/dist/resources/sites.d.ts.map +1 -0
- package/dist/resources/ssh-keys.d.ts +83 -0
- package/dist/resources/ssh-keys.d.ts.map +1 -0
- package/dist/test-utils.d.ts +27 -0
- package/dist/test-utils.d.ts.map +1 -0
- package/dist/test-utils.js +38 -0
- package/dist/test-utils.js.map +1 -0
- package/package.json +37 -1
package/dist/index.js
ADDED
|
@@ -0,0 +1,2049 @@
|
|
|
1
|
+
import { HttpClient } from "@studiometa/forge-api";
|
|
2
|
+
/**
|
|
3
|
+
* Async paginated iterator that auto-fetches all pages.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* const iter = forge.server(123).site(456).deployments.all();
|
|
8
|
+
* for await (const deployment of iter) {
|
|
9
|
+
* console.log(deployment);
|
|
10
|
+
* }
|
|
11
|
+
*
|
|
12
|
+
* // Or collect all items at once:
|
|
13
|
+
* const deployments = await iter.toArray();
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
var AsyncPaginatedIterator = class {
|
|
17
|
+
fetchPage;
|
|
18
|
+
perPage;
|
|
19
|
+
constructor(fetchPage, perPage = 200) {
|
|
20
|
+
this.fetchPage = fetchPage;
|
|
21
|
+
this.perPage = perPage;
|
|
22
|
+
}
|
|
23
|
+
async *[Symbol.asyncIterator]() {
|
|
24
|
+
let page = 1;
|
|
25
|
+
let hasMore = true;
|
|
26
|
+
while (hasMore) {
|
|
27
|
+
const items = await this.fetchPage(page);
|
|
28
|
+
for (const item of items) yield item;
|
|
29
|
+
hasMore = items.length >= this.perPage;
|
|
30
|
+
page++;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Collect all items into an array.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```ts
|
|
38
|
+
* const deployments = await forge.server(123).site(456).deployments.all().toArray();
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
async toArray() {
|
|
42
|
+
const items = [];
|
|
43
|
+
for await (const item of this) items.push(item);
|
|
44
|
+
return items;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Abstract base class for resource collections.
|
|
49
|
+
* Provides a shared `client` property to avoid duplication across all collection classes.
|
|
50
|
+
*/
|
|
51
|
+
var BaseCollection = class {
|
|
52
|
+
client;
|
|
53
|
+
constructor(client) {
|
|
54
|
+
this.client = client;
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Collection of deployments for a site.
|
|
59
|
+
*
|
|
60
|
+
* Access via `forge.server(id).site(id).deployments`.
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```ts
|
|
64
|
+
* const deployments = await forge.server(123).site(456).deployments.list();
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
var DeploymentsCollection = class extends BaseCollection {
|
|
68
|
+
/** @internal */
|
|
69
|
+
constructor(client, serverId, siteId) {
|
|
70
|
+
super(client);
|
|
71
|
+
this.serverId = serverId;
|
|
72
|
+
this.siteId = siteId;
|
|
73
|
+
}
|
|
74
|
+
get basePath() {
|
|
75
|
+
return `/servers/${this.serverId}/sites/${this.siteId}/deployments`;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* List deployments for this site.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```ts
|
|
82
|
+
* const deployments = await forge.server(123).site(456).deployments.list();
|
|
83
|
+
*
|
|
84
|
+
* // Fetch a specific page:
|
|
85
|
+
* const page2 = await forge.server(123).site(456).deployments.list({ page: 2 });
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
async list(options = {}) {
|
|
89
|
+
const query = options.page !== void 0 ? `?page=${options.page}` : "";
|
|
90
|
+
return (await this.client.get(`${this.basePath}${query}`)).deployments;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Iterate over all deployments across all pages.
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```ts
|
|
97
|
+
* for await (const deployment of forge.server(123).site(456).deployments.all()) {
|
|
98
|
+
* console.log(deployment);
|
|
99
|
+
* }
|
|
100
|
+
*
|
|
101
|
+
* // Or collect all at once:
|
|
102
|
+
* const deployments = await forge.server(123).site(456).deployments.all().toArray();
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
105
|
+
all(options = {}) {
|
|
106
|
+
return new AsyncPaginatedIterator((page) => this.list({
|
|
107
|
+
...options,
|
|
108
|
+
page
|
|
109
|
+
}));
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Get a specific deployment.
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```ts
|
|
116
|
+
* const deployment = await forge.server(123).site(456).deployments.get(789);
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
async get(deploymentId) {
|
|
120
|
+
return (await this.client.get(`${this.basePath}/${deploymentId}`)).deployment;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Get the output of a deployment.
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* ```ts
|
|
127
|
+
* const output = await forge.server(123).site(456).deployments.output(789);
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
async output(deploymentId) {
|
|
131
|
+
return this.client.get(`${this.basePath}/${deploymentId}/output`);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Get the deployment script.
|
|
135
|
+
*
|
|
136
|
+
* @example
|
|
137
|
+
* ```ts
|
|
138
|
+
* const script = await forge.server(123).site(456).deployments.script();
|
|
139
|
+
* ```
|
|
140
|
+
*/
|
|
141
|
+
async script() {
|
|
142
|
+
return this.client.get(`/servers/${this.serverId}/sites/${this.siteId}/deployment/script`);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Update the deployment script.
|
|
146
|
+
*
|
|
147
|
+
* @example
|
|
148
|
+
* ```ts
|
|
149
|
+
* await forge.server(123).site(456).deployments.updateScript('npm run build && ...');
|
|
150
|
+
* ```
|
|
151
|
+
*/
|
|
152
|
+
async updateScript(content) {
|
|
153
|
+
await this.client.put(`/servers/${this.serverId}/sites/${this.siteId}/deployment/script`, { content });
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
/**
|
|
157
|
+
* Collection of SSL certificates for a site.
|
|
158
|
+
*
|
|
159
|
+
* Access via `forge.server(id).site(id).certificates`.
|
|
160
|
+
*
|
|
161
|
+
* @example
|
|
162
|
+
* ```ts
|
|
163
|
+
* const certs = await forge.server(123).site(456).certificates.list();
|
|
164
|
+
* ```
|
|
165
|
+
*/
|
|
166
|
+
var CertificatesCollection = class extends BaseCollection {
|
|
167
|
+
/** @internal */
|
|
168
|
+
constructor(client, serverId, siteId) {
|
|
169
|
+
super(client);
|
|
170
|
+
this.serverId = serverId;
|
|
171
|
+
this.siteId = siteId;
|
|
172
|
+
}
|
|
173
|
+
get basePath() {
|
|
174
|
+
return `/servers/${this.serverId}/sites/${this.siteId}/certificates`;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* List certificates for this site.
|
|
178
|
+
*
|
|
179
|
+
* @example
|
|
180
|
+
* ```ts
|
|
181
|
+
* const certs = await forge.server(123).site(456).certificates.list();
|
|
182
|
+
*
|
|
183
|
+
* // Fetch a specific page:
|
|
184
|
+
* const page2 = await forge.server(123).site(456).certificates.list({ page: 2 });
|
|
185
|
+
* ```
|
|
186
|
+
*/
|
|
187
|
+
async list(options = {}) {
|
|
188
|
+
const query = options.page !== void 0 ? `?page=${options.page}` : "";
|
|
189
|
+
return (await this.client.get(`${this.basePath}${query}`)).certificates;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Iterate over all certificates across all pages.
|
|
193
|
+
*
|
|
194
|
+
* @example
|
|
195
|
+
* ```ts
|
|
196
|
+
* for await (const cert of forge.server(123).site(456).certificates.all()) {
|
|
197
|
+
* console.log(cert);
|
|
198
|
+
* }
|
|
199
|
+
*
|
|
200
|
+
* // Or collect all at once:
|
|
201
|
+
* const certs = await forge.server(123).site(456).certificates.all().toArray();
|
|
202
|
+
* ```
|
|
203
|
+
*/
|
|
204
|
+
all(options = {}) {
|
|
205
|
+
return new AsyncPaginatedIterator((page) => this.list({
|
|
206
|
+
...options,
|
|
207
|
+
page
|
|
208
|
+
}));
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Get a specific certificate.
|
|
212
|
+
*
|
|
213
|
+
* @example
|
|
214
|
+
* ```ts
|
|
215
|
+
* const cert = await forge.server(123).site(456).certificates.get(789);
|
|
216
|
+
* ```
|
|
217
|
+
*/
|
|
218
|
+
async get(certificateId) {
|
|
219
|
+
return (await this.client.get(`${this.basePath}/${certificateId}`)).certificate;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Create a new SSL certificate.
|
|
223
|
+
*
|
|
224
|
+
* @example
|
|
225
|
+
* ```ts
|
|
226
|
+
* const cert = await forge.server(123).site(456).certificates.create({
|
|
227
|
+
* type: 'new',
|
|
228
|
+
* domain: 'example.com',
|
|
229
|
+
* });
|
|
230
|
+
* ```
|
|
231
|
+
*/
|
|
232
|
+
async create(data) {
|
|
233
|
+
return (await this.client.post(this.basePath, data)).certificate;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Install a Let's Encrypt certificate.
|
|
237
|
+
*
|
|
238
|
+
* @example
|
|
239
|
+
* ```ts
|
|
240
|
+
* await forge.server(123).site(456).certificates.letsEncrypt(['example.com', 'www.example.com']);
|
|
241
|
+
* ```
|
|
242
|
+
*/
|
|
243
|
+
async letsEncrypt(domains) {
|
|
244
|
+
return (await this.client.post(`${this.basePath}/letsencrypt`, { domains })).certificate;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Delete a certificate.
|
|
248
|
+
*
|
|
249
|
+
* @example
|
|
250
|
+
* ```ts
|
|
251
|
+
* await forge.server(123).site(456).certificates.delete(789);
|
|
252
|
+
* ```
|
|
253
|
+
*/
|
|
254
|
+
async delete(certificateId) {
|
|
255
|
+
await this.client.delete(`${this.basePath}/${certificateId}`);
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Activate a certificate.
|
|
259
|
+
*
|
|
260
|
+
* @example
|
|
261
|
+
* ```ts
|
|
262
|
+
* await forge.server(123).site(456).certificates.activate(789);
|
|
263
|
+
* ```
|
|
264
|
+
*/
|
|
265
|
+
async activate(certificateId) {
|
|
266
|
+
await this.client.post(`${this.basePath}/${certificateId}/activate`);
|
|
267
|
+
}
|
|
268
|
+
};
|
|
269
|
+
/**
|
|
270
|
+
* Collection of commands run on a site.
|
|
271
|
+
*
|
|
272
|
+
* Access via `forge.server(id).site(id).commands`.
|
|
273
|
+
*
|
|
274
|
+
* @example
|
|
275
|
+
* ```ts
|
|
276
|
+
* const commands = await forge.server(123).site(456).commands.list();
|
|
277
|
+
* ```
|
|
278
|
+
*/
|
|
279
|
+
var CommandsCollection = class extends BaseCollection {
|
|
280
|
+
/** @internal */
|
|
281
|
+
constructor(client, serverId, siteId) {
|
|
282
|
+
super(client);
|
|
283
|
+
this.serverId = serverId;
|
|
284
|
+
this.siteId = siteId;
|
|
285
|
+
}
|
|
286
|
+
get basePath() {
|
|
287
|
+
return `/servers/${this.serverId}/sites/${this.siteId}/commands`;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* List commands run on this site.
|
|
291
|
+
*
|
|
292
|
+
* @example
|
|
293
|
+
* ```ts
|
|
294
|
+
* const commands = await forge.server(123).site(456).commands.list();
|
|
295
|
+
*
|
|
296
|
+
* // Fetch a specific page:
|
|
297
|
+
* const page2 = await forge.server(123).site(456).commands.list({ page: 2 });
|
|
298
|
+
* ```
|
|
299
|
+
*/
|
|
300
|
+
async list(options = {}) {
|
|
301
|
+
const query = options.page !== void 0 ? `?page=${options.page}` : "";
|
|
302
|
+
return (await this.client.get(`${this.basePath}${query}`)).commands;
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Iterate over all commands across all pages.
|
|
306
|
+
*
|
|
307
|
+
* @example
|
|
308
|
+
* ```ts
|
|
309
|
+
* for await (const command of forge.server(123).site(456).commands.all()) {
|
|
310
|
+
* console.log(command);
|
|
311
|
+
* }
|
|
312
|
+
*
|
|
313
|
+
* // Or collect all at once:
|
|
314
|
+
* const commands = await forge.server(123).site(456).commands.all().toArray();
|
|
315
|
+
* ```
|
|
316
|
+
*/
|
|
317
|
+
all(options = {}) {
|
|
318
|
+
return new AsyncPaginatedIterator((page) => this.list({
|
|
319
|
+
...options,
|
|
320
|
+
page
|
|
321
|
+
}));
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Get a specific command.
|
|
325
|
+
*
|
|
326
|
+
* @example
|
|
327
|
+
* ```ts
|
|
328
|
+
* const command = await forge.server(123).site(456).commands.get(789);
|
|
329
|
+
* ```
|
|
330
|
+
*/
|
|
331
|
+
async get(commandId) {
|
|
332
|
+
return (await this.client.get(`${this.basePath}/${commandId}`)).command;
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Run a command on this site.
|
|
336
|
+
*
|
|
337
|
+
* @example
|
|
338
|
+
* ```ts
|
|
339
|
+
* const command = await forge.server(123).site(456).commands.create({
|
|
340
|
+
* command: 'php artisan migrate',
|
|
341
|
+
* });
|
|
342
|
+
* ```
|
|
343
|
+
*/
|
|
344
|
+
async create(data) {
|
|
345
|
+
return (await this.client.post(this.basePath, data)).command;
|
|
346
|
+
}
|
|
347
|
+
};
|
|
348
|
+
/**
|
|
349
|
+
* Collection of security rules on a site.
|
|
350
|
+
*
|
|
351
|
+
* Access via `forge.server(id).site(id).securityRules`.
|
|
352
|
+
*
|
|
353
|
+
* @example
|
|
354
|
+
* ```ts
|
|
355
|
+
* const rules = await forge.server(123).site(456).securityRules.list();
|
|
356
|
+
* ```
|
|
357
|
+
*/
|
|
358
|
+
var SecurityRulesCollection = class extends BaseCollection {
|
|
359
|
+
/** @internal */
|
|
360
|
+
constructor(client, serverId, siteId) {
|
|
361
|
+
super(client);
|
|
362
|
+
this.serverId = serverId;
|
|
363
|
+
this.siteId = siteId;
|
|
364
|
+
}
|
|
365
|
+
get basePath() {
|
|
366
|
+
return `/servers/${this.serverId}/sites/${this.siteId}/security-rules`;
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* List security rules on this site.
|
|
370
|
+
*
|
|
371
|
+
* @example
|
|
372
|
+
* ```ts
|
|
373
|
+
* const rules = await forge.server(123).site(456).securityRules.list();
|
|
374
|
+
*
|
|
375
|
+
* // Fetch a specific page:
|
|
376
|
+
* const page2 = await forge.server(123).site(456).securityRules.list({ page: 2 });
|
|
377
|
+
* ```
|
|
378
|
+
*/
|
|
379
|
+
async list(options = {}) {
|
|
380
|
+
const query = options.page !== void 0 ? `?page=${options.page}` : "";
|
|
381
|
+
return (await this.client.get(`${this.basePath}${query}`)).security_rules;
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Iterate over all security rules across all pages.
|
|
385
|
+
*
|
|
386
|
+
* @example
|
|
387
|
+
* ```ts
|
|
388
|
+
* for await (const rule of forge.server(123).site(456).securityRules.all()) {
|
|
389
|
+
* console.log(rule);
|
|
390
|
+
* }
|
|
391
|
+
*
|
|
392
|
+
* // Or collect all at once:
|
|
393
|
+
* const rules = await forge.server(123).site(456).securityRules.all().toArray();
|
|
394
|
+
* ```
|
|
395
|
+
*/
|
|
396
|
+
all(options = {}) {
|
|
397
|
+
return new AsyncPaginatedIterator((page) => this.list({
|
|
398
|
+
...options,
|
|
399
|
+
page
|
|
400
|
+
}));
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* Get a specific security rule.
|
|
404
|
+
*
|
|
405
|
+
* @example
|
|
406
|
+
* ```ts
|
|
407
|
+
* const rule = await forge.server(123).site(456).securityRules.get(789);
|
|
408
|
+
* ```
|
|
409
|
+
*/
|
|
410
|
+
async get(ruleId) {
|
|
411
|
+
return (await this.client.get(`${this.basePath}/${ruleId}`)).security_rule;
|
|
412
|
+
}
|
|
413
|
+
/**
|
|
414
|
+
* Create a new security rule.
|
|
415
|
+
*
|
|
416
|
+
* @example
|
|
417
|
+
* ```ts
|
|
418
|
+
* const rule = await forge.server(123).site(456).securityRules.create({
|
|
419
|
+
* name: 'Admin Area',
|
|
420
|
+
* path: '/admin',
|
|
421
|
+
* credentials: [{ username: 'admin', password: 'secret' }],
|
|
422
|
+
* });
|
|
423
|
+
* ```
|
|
424
|
+
*/
|
|
425
|
+
async create(data) {
|
|
426
|
+
return (await this.client.post(this.basePath, data)).security_rule;
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Delete a security rule.
|
|
430
|
+
*
|
|
431
|
+
* @example
|
|
432
|
+
* ```ts
|
|
433
|
+
* await forge.server(123).site(456).securityRules.delete(789);
|
|
434
|
+
* ```
|
|
435
|
+
*/
|
|
436
|
+
async delete(ruleId) {
|
|
437
|
+
await this.client.delete(`${this.basePath}/${ruleId}`);
|
|
438
|
+
}
|
|
439
|
+
};
|
|
440
|
+
/**
|
|
441
|
+
* Collection of redirect rules on a site.
|
|
442
|
+
*
|
|
443
|
+
* Access via `forge.server(id).site(id).redirectRules`.
|
|
444
|
+
*
|
|
445
|
+
* @example
|
|
446
|
+
* ```ts
|
|
447
|
+
* const rules = await forge.server(123).site(456).redirectRules.list();
|
|
448
|
+
* ```
|
|
449
|
+
*/
|
|
450
|
+
var RedirectRulesCollection = class extends BaseCollection {
|
|
451
|
+
/** @internal */
|
|
452
|
+
constructor(client, serverId, siteId) {
|
|
453
|
+
super(client);
|
|
454
|
+
this.serverId = serverId;
|
|
455
|
+
this.siteId = siteId;
|
|
456
|
+
}
|
|
457
|
+
get basePath() {
|
|
458
|
+
return `/servers/${this.serverId}/sites/${this.siteId}/redirect-rules`;
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* List redirect rules on this site.
|
|
462
|
+
*
|
|
463
|
+
* @example
|
|
464
|
+
* ```ts
|
|
465
|
+
* const rules = await forge.server(123).site(456).redirectRules.list();
|
|
466
|
+
*
|
|
467
|
+
* // Fetch a specific page:
|
|
468
|
+
* const page2 = await forge.server(123).site(456).redirectRules.list({ page: 2 });
|
|
469
|
+
* ```
|
|
470
|
+
*/
|
|
471
|
+
async list(options = {}) {
|
|
472
|
+
const query = options.page !== void 0 ? `?page=${options.page}` : "";
|
|
473
|
+
return (await this.client.get(`${this.basePath}${query}`)).redirect_rules;
|
|
474
|
+
}
|
|
475
|
+
/**
|
|
476
|
+
* Iterate over all redirect rules across all pages.
|
|
477
|
+
*
|
|
478
|
+
* @example
|
|
479
|
+
* ```ts
|
|
480
|
+
* for await (const rule of forge.server(123).site(456).redirectRules.all()) {
|
|
481
|
+
* console.log(rule);
|
|
482
|
+
* }
|
|
483
|
+
*
|
|
484
|
+
* // Or collect all at once:
|
|
485
|
+
* const rules = await forge.server(123).site(456).redirectRules.all().toArray();
|
|
486
|
+
* ```
|
|
487
|
+
*/
|
|
488
|
+
all(options = {}) {
|
|
489
|
+
return new AsyncPaginatedIterator((page) => this.list({
|
|
490
|
+
...options,
|
|
491
|
+
page
|
|
492
|
+
}));
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* Get a specific redirect rule.
|
|
496
|
+
*
|
|
497
|
+
* @example
|
|
498
|
+
* ```ts
|
|
499
|
+
* const rule = await forge.server(123).site(456).redirectRules.get(789);
|
|
500
|
+
* ```
|
|
501
|
+
*/
|
|
502
|
+
async get(ruleId) {
|
|
503
|
+
return (await this.client.get(`${this.basePath}/${ruleId}`)).redirect_rule;
|
|
504
|
+
}
|
|
505
|
+
/**
|
|
506
|
+
* Create a new redirect rule.
|
|
507
|
+
*
|
|
508
|
+
* @example
|
|
509
|
+
* ```ts
|
|
510
|
+
* const rule = await forge.server(123).site(456).redirectRules.create({
|
|
511
|
+
* from: '/old-path',
|
|
512
|
+
* to: '/new-path',
|
|
513
|
+
* type: 'redirect',
|
|
514
|
+
* });
|
|
515
|
+
* ```
|
|
516
|
+
*/
|
|
517
|
+
async create(data) {
|
|
518
|
+
return (await this.client.post(this.basePath, data)).redirect_rule;
|
|
519
|
+
}
|
|
520
|
+
/**
|
|
521
|
+
* Delete a redirect rule.
|
|
522
|
+
*
|
|
523
|
+
* @example
|
|
524
|
+
* ```ts
|
|
525
|
+
* await forge.server(123).site(456).redirectRules.delete(789);
|
|
526
|
+
* ```
|
|
527
|
+
*/
|
|
528
|
+
async delete(ruleId) {
|
|
529
|
+
await this.client.delete(`${this.basePath}/${ruleId}`);
|
|
530
|
+
}
|
|
531
|
+
};
|
|
532
|
+
/**
|
|
533
|
+
* Collection of sites on a server.
|
|
534
|
+
*
|
|
535
|
+
* Access via `forge.server(id).sites`.
|
|
536
|
+
*
|
|
537
|
+
* @example
|
|
538
|
+
* ```ts
|
|
539
|
+
* const sites = await forge.server(123).sites.list();
|
|
540
|
+
* ```
|
|
541
|
+
*/
|
|
542
|
+
var SitesCollection = class extends BaseCollection {
|
|
543
|
+
/** @internal */
|
|
544
|
+
constructor(client, serverId) {
|
|
545
|
+
super(client);
|
|
546
|
+
this.serverId = serverId;
|
|
547
|
+
}
|
|
548
|
+
get basePath() {
|
|
549
|
+
return `/servers/${this.serverId}/sites`;
|
|
550
|
+
}
|
|
551
|
+
/**
|
|
552
|
+
* List sites on this server.
|
|
553
|
+
*
|
|
554
|
+
* @example
|
|
555
|
+
* ```ts
|
|
556
|
+
* const sites = await forge.server(123).sites.list();
|
|
557
|
+
*
|
|
558
|
+
* // Fetch a specific page:
|
|
559
|
+
* const page2 = await forge.server(123).sites.list({ page: 2 });
|
|
560
|
+
* ```
|
|
561
|
+
*/
|
|
562
|
+
async list(options = {}) {
|
|
563
|
+
const query = options.page !== void 0 ? `?page=${options.page}` : "";
|
|
564
|
+
return (await this.client.get(`${this.basePath}${query}`)).sites;
|
|
565
|
+
}
|
|
566
|
+
/**
|
|
567
|
+
* Iterate over all sites across all pages.
|
|
568
|
+
*
|
|
569
|
+
* @example
|
|
570
|
+
* ```ts
|
|
571
|
+
* for await (const site of forge.server(123).sites.all()) {
|
|
572
|
+
* console.log(site);
|
|
573
|
+
* }
|
|
574
|
+
*
|
|
575
|
+
* // Or collect all at once:
|
|
576
|
+
* const sites = await forge.server(123).sites.all().toArray();
|
|
577
|
+
* ```
|
|
578
|
+
*/
|
|
579
|
+
all(options = {}) {
|
|
580
|
+
return new AsyncPaginatedIterator((page) => this.list({
|
|
581
|
+
...options,
|
|
582
|
+
page
|
|
583
|
+
}));
|
|
584
|
+
}
|
|
585
|
+
/**
|
|
586
|
+
* Get a specific site by ID.
|
|
587
|
+
*
|
|
588
|
+
* @example
|
|
589
|
+
* ```ts
|
|
590
|
+
* const site = await forge.server(123).sites.get(456);
|
|
591
|
+
* ```
|
|
592
|
+
*/
|
|
593
|
+
async get(siteId) {
|
|
594
|
+
return (await this.client.get(`${this.basePath}/${siteId}`)).site;
|
|
595
|
+
}
|
|
596
|
+
/**
|
|
597
|
+
* Create a new site on this server.
|
|
598
|
+
*
|
|
599
|
+
* @example
|
|
600
|
+
* ```ts
|
|
601
|
+
* const site = await forge.server(123).sites.create({
|
|
602
|
+
* domain: 'example.com',
|
|
603
|
+
* project_type: 'php',
|
|
604
|
+
* directory: '/public',
|
|
605
|
+
* });
|
|
606
|
+
* ```
|
|
607
|
+
*/
|
|
608
|
+
async create(data) {
|
|
609
|
+
return (await this.client.post(this.basePath, data)).site;
|
|
610
|
+
}
|
|
611
|
+
/**
|
|
612
|
+
* Update a site.
|
|
613
|
+
*
|
|
614
|
+
* @example
|
|
615
|
+
* ```ts
|
|
616
|
+
* await forge.server(123).sites.update(456, { directory: '/public' });
|
|
617
|
+
* ```
|
|
618
|
+
*/
|
|
619
|
+
async update(siteId, data) {
|
|
620
|
+
return (await this.client.put(`${this.basePath}/${siteId}`, data)).site;
|
|
621
|
+
}
|
|
622
|
+
/**
|
|
623
|
+
* Delete a site.
|
|
624
|
+
*
|
|
625
|
+
* @example
|
|
626
|
+
* ```ts
|
|
627
|
+
* await forge.server(123).sites.delete(456);
|
|
628
|
+
* ```
|
|
629
|
+
*/
|
|
630
|
+
async delete(siteId) {
|
|
631
|
+
await this.client.delete(`${this.basePath}/${siteId}`);
|
|
632
|
+
}
|
|
633
|
+
};
|
|
634
|
+
/**
|
|
635
|
+
* A specific site with nested resources and actions.
|
|
636
|
+
*
|
|
637
|
+
* Access via `forge.server(id).site(id)`.
|
|
638
|
+
*
|
|
639
|
+
* @example
|
|
640
|
+
* ```ts
|
|
641
|
+
* // Deploy
|
|
642
|
+
* await forge.server(123).site(456).deploy();
|
|
643
|
+
*
|
|
644
|
+
* // Get environment
|
|
645
|
+
* const env = await forge.server(123).site(456).env.get();
|
|
646
|
+
* ```
|
|
647
|
+
*/
|
|
648
|
+
var SiteResource = class extends BaseCollection {
|
|
649
|
+
/** Deployments for this site. */
|
|
650
|
+
deployments;
|
|
651
|
+
/** SSL certificates for this site. */
|
|
652
|
+
certificates;
|
|
653
|
+
/** Environment variables for this site. */
|
|
654
|
+
env;
|
|
655
|
+
/** Nginx configuration for this site. */
|
|
656
|
+
nginx;
|
|
657
|
+
/** Commands run on this site. */
|
|
658
|
+
commands;
|
|
659
|
+
/** Security rules for this site. */
|
|
660
|
+
securityRules;
|
|
661
|
+
/** Redirect rules for this site. */
|
|
662
|
+
redirectRules;
|
|
663
|
+
/** @internal */
|
|
664
|
+
constructor(client, serverId, siteId) {
|
|
665
|
+
super(client);
|
|
666
|
+
this.serverId = serverId;
|
|
667
|
+
this.siteId = siteId;
|
|
668
|
+
this.deployments = new DeploymentsCollection(client, serverId, siteId);
|
|
669
|
+
this.certificates = new CertificatesCollection(client, serverId, siteId);
|
|
670
|
+
this.env = new SiteEnvResource(client, serverId, siteId);
|
|
671
|
+
this.nginx = new SiteNginxResource(client, serverId, siteId);
|
|
672
|
+
this.commands = new CommandsCollection(client, serverId, siteId);
|
|
673
|
+
this.securityRules = new SecurityRulesCollection(client, serverId, siteId);
|
|
674
|
+
this.redirectRules = new RedirectRulesCollection(client, serverId, siteId);
|
|
675
|
+
}
|
|
676
|
+
get basePath() {
|
|
677
|
+
return `/servers/${this.serverId}/sites/${this.siteId}`;
|
|
678
|
+
}
|
|
679
|
+
/**
|
|
680
|
+
* Get this site's details.
|
|
681
|
+
*
|
|
682
|
+
* @example
|
|
683
|
+
* ```ts
|
|
684
|
+
* const site = await forge.server(123).site(456).get();
|
|
685
|
+
* ```
|
|
686
|
+
*/
|
|
687
|
+
async get() {
|
|
688
|
+
return (await this.client.get(this.basePath)).site;
|
|
689
|
+
}
|
|
690
|
+
/**
|
|
691
|
+
* Deploy this site.
|
|
692
|
+
*
|
|
693
|
+
* @example
|
|
694
|
+
* ```ts
|
|
695
|
+
* await forge.server(123).site(456).deploy();
|
|
696
|
+
* ```
|
|
697
|
+
*/
|
|
698
|
+
async deploy() {
|
|
699
|
+
await this.client.post(`${this.basePath}/deployment/deploy`);
|
|
700
|
+
}
|
|
701
|
+
/**
|
|
702
|
+
* Delete this site.
|
|
703
|
+
*
|
|
704
|
+
* @example
|
|
705
|
+
* ```ts
|
|
706
|
+
* await forge.server(123).site(456).delete();
|
|
707
|
+
* ```
|
|
708
|
+
*/
|
|
709
|
+
async delete() {
|
|
710
|
+
await this.client.delete(this.basePath);
|
|
711
|
+
}
|
|
712
|
+
};
|
|
713
|
+
/**
|
|
714
|
+
* Environment variables for a site.
|
|
715
|
+
*
|
|
716
|
+
* @example
|
|
717
|
+
* ```ts
|
|
718
|
+
* const env = await forge.server(123).site(456).env.get();
|
|
719
|
+
* await forge.server(123).site(456).env.update('APP_ENV=production\n...');
|
|
720
|
+
* ```
|
|
721
|
+
*/
|
|
722
|
+
var SiteEnvResource = class extends BaseCollection {
|
|
723
|
+
/** @internal */
|
|
724
|
+
constructor(client, serverId, siteId) {
|
|
725
|
+
super(client);
|
|
726
|
+
this.serverId = serverId;
|
|
727
|
+
this.siteId = siteId;
|
|
728
|
+
}
|
|
729
|
+
get basePath() {
|
|
730
|
+
return `/servers/${this.serverId}/sites/${this.siteId}/env`;
|
|
731
|
+
}
|
|
732
|
+
/**
|
|
733
|
+
* Get the environment file content.
|
|
734
|
+
*
|
|
735
|
+
* @returns The .env file content as a string.
|
|
736
|
+
*/
|
|
737
|
+
async get() {
|
|
738
|
+
return this.client.get(this.basePath);
|
|
739
|
+
}
|
|
740
|
+
/**
|
|
741
|
+
* Update the environment file content.
|
|
742
|
+
*
|
|
743
|
+
* @param content The full .env file content.
|
|
744
|
+
*/
|
|
745
|
+
async update(content) {
|
|
746
|
+
await this.client.put(this.basePath, { content });
|
|
747
|
+
}
|
|
748
|
+
};
|
|
749
|
+
/**
|
|
750
|
+
* Nginx configuration for a site.
|
|
751
|
+
*
|
|
752
|
+
* @example
|
|
753
|
+
* ```ts
|
|
754
|
+
* const config = await forge.server(123).site(456).nginx.get();
|
|
755
|
+
* await forge.server(123).site(456).nginx.update('server { ... }');
|
|
756
|
+
* ```
|
|
757
|
+
*/
|
|
758
|
+
var SiteNginxResource = class extends BaseCollection {
|
|
759
|
+
/** @internal */
|
|
760
|
+
constructor(client, serverId, siteId) {
|
|
761
|
+
super(client);
|
|
762
|
+
this.serverId = serverId;
|
|
763
|
+
this.siteId = siteId;
|
|
764
|
+
}
|
|
765
|
+
get basePath() {
|
|
766
|
+
return `/servers/${this.serverId}/sites/${this.siteId}/nginx`;
|
|
767
|
+
}
|
|
768
|
+
/**
|
|
769
|
+
* Get the Nginx configuration.
|
|
770
|
+
*
|
|
771
|
+
* @returns The Nginx config content as a string.
|
|
772
|
+
*/
|
|
773
|
+
async get() {
|
|
774
|
+
return this.client.get(this.basePath);
|
|
775
|
+
}
|
|
776
|
+
/**
|
|
777
|
+
* Update the Nginx configuration.
|
|
778
|
+
*
|
|
779
|
+
* @param content The full Nginx config content.
|
|
780
|
+
*/
|
|
781
|
+
async update(content) {
|
|
782
|
+
await this.client.put(this.basePath, { content });
|
|
783
|
+
}
|
|
784
|
+
};
|
|
785
|
+
/**
|
|
786
|
+
* Collection of databases on a server.
|
|
787
|
+
*
|
|
788
|
+
* Access via `forge.server(id).databases`.
|
|
789
|
+
*
|
|
790
|
+
* @example
|
|
791
|
+
* ```ts
|
|
792
|
+
* const dbs = await forge.server(123).databases.list();
|
|
793
|
+
* ```
|
|
794
|
+
*/
|
|
795
|
+
var DatabasesCollection = class extends BaseCollection {
|
|
796
|
+
/** @internal */
|
|
797
|
+
constructor(client, serverId) {
|
|
798
|
+
super(client);
|
|
799
|
+
this.serverId = serverId;
|
|
800
|
+
}
|
|
801
|
+
get basePath() {
|
|
802
|
+
return `/servers/${this.serverId}/databases`;
|
|
803
|
+
}
|
|
804
|
+
/**
|
|
805
|
+
* List databases on this server.
|
|
806
|
+
*
|
|
807
|
+
* @example
|
|
808
|
+
* ```ts
|
|
809
|
+
* const dbs = await forge.server(123).databases.list();
|
|
810
|
+
*
|
|
811
|
+
* // Fetch a specific page:
|
|
812
|
+
* const page2 = await forge.server(123).databases.list({ page: 2 });
|
|
813
|
+
* ```
|
|
814
|
+
*/
|
|
815
|
+
async list(options = {}) {
|
|
816
|
+
const query = options.page !== void 0 ? `?page=${options.page}` : "";
|
|
817
|
+
return (await this.client.get(`${this.basePath}${query}`)).databases;
|
|
818
|
+
}
|
|
819
|
+
/**
|
|
820
|
+
* Iterate over all databases across all pages.
|
|
821
|
+
*
|
|
822
|
+
* @example
|
|
823
|
+
* ```ts
|
|
824
|
+
* for await (const db of forge.server(123).databases.all()) {
|
|
825
|
+
* console.log(db);
|
|
826
|
+
* }
|
|
827
|
+
*
|
|
828
|
+
* // Or collect all at once:
|
|
829
|
+
* const dbs = await forge.server(123).databases.all().toArray();
|
|
830
|
+
* ```
|
|
831
|
+
*/
|
|
832
|
+
all(options = {}) {
|
|
833
|
+
return new AsyncPaginatedIterator((page) => this.list({
|
|
834
|
+
...options,
|
|
835
|
+
page
|
|
836
|
+
}));
|
|
837
|
+
}
|
|
838
|
+
/**
|
|
839
|
+
* Get a specific database.
|
|
840
|
+
*
|
|
841
|
+
* @example
|
|
842
|
+
* ```ts
|
|
843
|
+
* const db = await forge.server(123).databases.get(789);
|
|
844
|
+
* ```
|
|
845
|
+
*/
|
|
846
|
+
async get(databaseId) {
|
|
847
|
+
return (await this.client.get(`${this.basePath}/${databaseId}`)).database;
|
|
848
|
+
}
|
|
849
|
+
/**
|
|
850
|
+
* Create a new database.
|
|
851
|
+
*
|
|
852
|
+
* @example
|
|
853
|
+
* ```ts
|
|
854
|
+
* const db = await forge.server(123).databases.create({
|
|
855
|
+
* name: 'myapp',
|
|
856
|
+
* user: 'admin',
|
|
857
|
+
* password: 'secret',
|
|
858
|
+
* });
|
|
859
|
+
* ```
|
|
860
|
+
*/
|
|
861
|
+
async create(data) {
|
|
862
|
+
return (await this.client.post(this.basePath, data)).database;
|
|
863
|
+
}
|
|
864
|
+
/**
|
|
865
|
+
* Delete a database.
|
|
866
|
+
*
|
|
867
|
+
* @example
|
|
868
|
+
* ```ts
|
|
869
|
+
* await forge.server(123).databases.delete(789);
|
|
870
|
+
* ```
|
|
871
|
+
*/
|
|
872
|
+
async delete(databaseId) {
|
|
873
|
+
await this.client.delete(`${this.basePath}/${databaseId}`);
|
|
874
|
+
}
|
|
875
|
+
};
|
|
876
|
+
/**
|
|
877
|
+
* Collection of database users on a server.
|
|
878
|
+
*
|
|
879
|
+
* Access via `forge.server(id).databaseUsers`.
|
|
880
|
+
*
|
|
881
|
+
* @example
|
|
882
|
+
* ```ts
|
|
883
|
+
* const users = await forge.server(123).databaseUsers.list();
|
|
884
|
+
* ```
|
|
885
|
+
*/
|
|
886
|
+
var DatabaseUsersCollection = class extends BaseCollection {
|
|
887
|
+
/** @internal */
|
|
888
|
+
constructor(client, serverId) {
|
|
889
|
+
super(client);
|
|
890
|
+
this.serverId = serverId;
|
|
891
|
+
}
|
|
892
|
+
get basePath() {
|
|
893
|
+
return `/servers/${this.serverId}/database-users`;
|
|
894
|
+
}
|
|
895
|
+
/**
|
|
896
|
+
* List database users on this server.
|
|
897
|
+
*
|
|
898
|
+
* @example
|
|
899
|
+
* ```ts
|
|
900
|
+
* const users = await forge.server(123).databaseUsers.list();
|
|
901
|
+
*
|
|
902
|
+
* // Fetch a specific page:
|
|
903
|
+
* const page2 = await forge.server(123).databaseUsers.list({ page: 2 });
|
|
904
|
+
* ```
|
|
905
|
+
*/
|
|
906
|
+
async list(options = {}) {
|
|
907
|
+
const query = options.page !== void 0 ? `?page=${options.page}` : "";
|
|
908
|
+
return (await this.client.get(`${this.basePath}${query}`)).users;
|
|
909
|
+
}
|
|
910
|
+
/**
|
|
911
|
+
* Iterate over all database users across all pages.
|
|
912
|
+
*
|
|
913
|
+
* @example
|
|
914
|
+
* ```ts
|
|
915
|
+
* for await (const user of forge.server(123).databaseUsers.all()) {
|
|
916
|
+
* console.log(user);
|
|
917
|
+
* }
|
|
918
|
+
*
|
|
919
|
+
* // Or collect all at once:
|
|
920
|
+
* const users = await forge.server(123).databaseUsers.all().toArray();
|
|
921
|
+
* ```
|
|
922
|
+
*/
|
|
923
|
+
all(options = {}) {
|
|
924
|
+
return new AsyncPaginatedIterator((page) => this.list({
|
|
925
|
+
...options,
|
|
926
|
+
page
|
|
927
|
+
}));
|
|
928
|
+
}
|
|
929
|
+
/**
|
|
930
|
+
* Get a specific database user.
|
|
931
|
+
*
|
|
932
|
+
* @example
|
|
933
|
+
* ```ts
|
|
934
|
+
* const user = await forge.server(123).databaseUsers.get(789);
|
|
935
|
+
* ```
|
|
936
|
+
*/
|
|
937
|
+
async get(userId) {
|
|
938
|
+
return (await this.client.get(`${this.basePath}/${userId}`)).user;
|
|
939
|
+
}
|
|
940
|
+
/**
|
|
941
|
+
* Create a new database user.
|
|
942
|
+
*
|
|
943
|
+
* @example
|
|
944
|
+
* ```ts
|
|
945
|
+
* const user = await forge.server(123).databaseUsers.create({
|
|
946
|
+
* name: 'forge',
|
|
947
|
+
* password: 'secret',
|
|
948
|
+
* databases: [1, 2],
|
|
949
|
+
* });
|
|
950
|
+
* ```
|
|
951
|
+
*/
|
|
952
|
+
async create(data) {
|
|
953
|
+
return (await this.client.post(this.basePath, data)).user;
|
|
954
|
+
}
|
|
955
|
+
/**
|
|
956
|
+
* Delete a database user.
|
|
957
|
+
*
|
|
958
|
+
* @example
|
|
959
|
+
* ```ts
|
|
960
|
+
* await forge.server(123).databaseUsers.delete(789);
|
|
961
|
+
* ```
|
|
962
|
+
*/
|
|
963
|
+
async delete(userId) {
|
|
964
|
+
await this.client.delete(`${this.basePath}/${userId}`);
|
|
965
|
+
}
|
|
966
|
+
};
|
|
967
|
+
/**
|
|
968
|
+
* Collection of daemons (background processes) on a server.
|
|
969
|
+
*
|
|
970
|
+
* Access via `forge.server(id).daemons`.
|
|
971
|
+
*
|
|
972
|
+
* @example
|
|
973
|
+
* ```ts
|
|
974
|
+
* const daemons = await forge.server(123).daemons.list();
|
|
975
|
+
* ```
|
|
976
|
+
*/
|
|
977
|
+
var DaemonsCollection = class extends BaseCollection {
|
|
978
|
+
/** @internal */
|
|
979
|
+
constructor(client, serverId) {
|
|
980
|
+
super(client);
|
|
981
|
+
this.serverId = serverId;
|
|
982
|
+
}
|
|
983
|
+
get basePath() {
|
|
984
|
+
return `/servers/${this.serverId}/daemons`;
|
|
985
|
+
}
|
|
986
|
+
/**
|
|
987
|
+
* List daemons on this server.
|
|
988
|
+
*
|
|
989
|
+
* @example
|
|
990
|
+
* ```ts
|
|
991
|
+
* const daemons = await forge.server(123).daemons.list();
|
|
992
|
+
*
|
|
993
|
+
* // Fetch a specific page:
|
|
994
|
+
* const page2 = await forge.server(123).daemons.list({ page: 2 });
|
|
995
|
+
* ```
|
|
996
|
+
*/
|
|
997
|
+
async list(options = {}) {
|
|
998
|
+
const query = options.page !== void 0 ? `?page=${options.page}` : "";
|
|
999
|
+
return (await this.client.get(`${this.basePath}${query}`)).daemons;
|
|
1000
|
+
}
|
|
1001
|
+
/**
|
|
1002
|
+
* Iterate over all daemons across all pages.
|
|
1003
|
+
*
|
|
1004
|
+
* @example
|
|
1005
|
+
* ```ts
|
|
1006
|
+
* for await (const daemon of forge.server(123).daemons.all()) {
|
|
1007
|
+
* console.log(daemon);
|
|
1008
|
+
* }
|
|
1009
|
+
*
|
|
1010
|
+
* // Or collect all at once:
|
|
1011
|
+
* const daemons = await forge.server(123).daemons.all().toArray();
|
|
1012
|
+
* ```
|
|
1013
|
+
*/
|
|
1014
|
+
all(options = {}) {
|
|
1015
|
+
return new AsyncPaginatedIterator((page) => this.list({
|
|
1016
|
+
...options,
|
|
1017
|
+
page
|
|
1018
|
+
}));
|
|
1019
|
+
}
|
|
1020
|
+
/**
|
|
1021
|
+
* Get a specific daemon.
|
|
1022
|
+
*
|
|
1023
|
+
* @example
|
|
1024
|
+
* ```ts
|
|
1025
|
+
* const daemon = await forge.server(123).daemons.get(789);
|
|
1026
|
+
* ```
|
|
1027
|
+
*/
|
|
1028
|
+
async get(daemonId) {
|
|
1029
|
+
return (await this.client.get(`${this.basePath}/${daemonId}`)).daemon;
|
|
1030
|
+
}
|
|
1031
|
+
/**
|
|
1032
|
+
* Create a new daemon.
|
|
1033
|
+
*
|
|
1034
|
+
* @example
|
|
1035
|
+
* ```ts
|
|
1036
|
+
* const daemon = await forge.server(123).daemons.create({
|
|
1037
|
+
* command: 'php artisan queue:work',
|
|
1038
|
+
* user: 'forge',
|
|
1039
|
+
* });
|
|
1040
|
+
* ```
|
|
1041
|
+
*/
|
|
1042
|
+
async create(data) {
|
|
1043
|
+
return (await this.client.post(this.basePath, data)).daemon;
|
|
1044
|
+
}
|
|
1045
|
+
/**
|
|
1046
|
+
* Delete a daemon.
|
|
1047
|
+
*
|
|
1048
|
+
* @example
|
|
1049
|
+
* ```ts
|
|
1050
|
+
* await forge.server(123).daemons.delete(789);
|
|
1051
|
+
* ```
|
|
1052
|
+
*/
|
|
1053
|
+
async delete(daemonId) {
|
|
1054
|
+
await this.client.delete(`${this.basePath}/${daemonId}`);
|
|
1055
|
+
}
|
|
1056
|
+
/**
|
|
1057
|
+
* Restart a daemon.
|
|
1058
|
+
*
|
|
1059
|
+
* @example
|
|
1060
|
+
* ```ts
|
|
1061
|
+
* await forge.server(123).daemons.restart(789);
|
|
1062
|
+
* ```
|
|
1063
|
+
*/
|
|
1064
|
+
async restart(daemonId) {
|
|
1065
|
+
await this.client.post(`${this.basePath}/${daemonId}/restart`);
|
|
1066
|
+
}
|
|
1067
|
+
};
|
|
1068
|
+
/**
|
|
1069
|
+
* Collection of backup configurations on a server.
|
|
1070
|
+
*
|
|
1071
|
+
* Access via `forge.server(id).backups`.
|
|
1072
|
+
*
|
|
1073
|
+
* @example
|
|
1074
|
+
* ```ts
|
|
1075
|
+
* const backups = await forge.server(123).backups.list();
|
|
1076
|
+
* ```
|
|
1077
|
+
*/
|
|
1078
|
+
var BackupsCollection = class extends BaseCollection {
|
|
1079
|
+
/** @internal */
|
|
1080
|
+
constructor(client, serverId) {
|
|
1081
|
+
super(client);
|
|
1082
|
+
this.serverId = serverId;
|
|
1083
|
+
}
|
|
1084
|
+
get basePath() {
|
|
1085
|
+
return `/servers/${this.serverId}/backup-configs`;
|
|
1086
|
+
}
|
|
1087
|
+
/**
|
|
1088
|
+
* List backup configurations on this server.
|
|
1089
|
+
*
|
|
1090
|
+
* @example
|
|
1091
|
+
* ```ts
|
|
1092
|
+
* const backups = await forge.server(123).backups.list();
|
|
1093
|
+
*
|
|
1094
|
+
* // Fetch a specific page:
|
|
1095
|
+
* const page2 = await forge.server(123).backups.list({ page: 2 });
|
|
1096
|
+
* ```
|
|
1097
|
+
*/
|
|
1098
|
+
async list(options = {}) {
|
|
1099
|
+
const query = options.page !== void 0 ? `?page=${options.page}` : "";
|
|
1100
|
+
return (await this.client.get(`${this.basePath}${query}`)).backups;
|
|
1101
|
+
}
|
|
1102
|
+
/**
|
|
1103
|
+
* Iterate over all backup configurations across all pages.
|
|
1104
|
+
*
|
|
1105
|
+
* @example
|
|
1106
|
+
* ```ts
|
|
1107
|
+
* for await (const backup of forge.server(123).backups.all()) {
|
|
1108
|
+
* console.log(backup);
|
|
1109
|
+
* }
|
|
1110
|
+
*
|
|
1111
|
+
* // Or collect all at once:
|
|
1112
|
+
* const backups = await forge.server(123).backups.all().toArray();
|
|
1113
|
+
* ```
|
|
1114
|
+
*/
|
|
1115
|
+
all(options = {}) {
|
|
1116
|
+
return new AsyncPaginatedIterator((page) => this.list({
|
|
1117
|
+
...options,
|
|
1118
|
+
page
|
|
1119
|
+
}));
|
|
1120
|
+
}
|
|
1121
|
+
/**
|
|
1122
|
+
* Get a specific backup configuration.
|
|
1123
|
+
*
|
|
1124
|
+
* @example
|
|
1125
|
+
* ```ts
|
|
1126
|
+
* const backup = await forge.server(123).backups.get(789);
|
|
1127
|
+
* ```
|
|
1128
|
+
*/
|
|
1129
|
+
async get(backupId) {
|
|
1130
|
+
return (await this.client.get(`${this.basePath}/${backupId}`)).backup;
|
|
1131
|
+
}
|
|
1132
|
+
/**
|
|
1133
|
+
* Create a new backup configuration.
|
|
1134
|
+
*
|
|
1135
|
+
* @example
|
|
1136
|
+
* ```ts
|
|
1137
|
+
* const backup = await forge.server(123).backups.create({
|
|
1138
|
+
* provider: 's3',
|
|
1139
|
+
* credentials: { key: 'ACCESS_KEY', secret: 'SECRET_KEY', region: 'us-east-1', bucket: 'my-bucket' },
|
|
1140
|
+
* frequency: 'weekly',
|
|
1141
|
+
* retention: 7,
|
|
1142
|
+
* databases: [1, 2],
|
|
1143
|
+
* });
|
|
1144
|
+
* ```
|
|
1145
|
+
*/
|
|
1146
|
+
async create(data) {
|
|
1147
|
+
return (await this.client.post(this.basePath, data)).backup;
|
|
1148
|
+
}
|
|
1149
|
+
/**
|
|
1150
|
+
* Delete a backup configuration.
|
|
1151
|
+
*
|
|
1152
|
+
* @example
|
|
1153
|
+
* ```ts
|
|
1154
|
+
* await forge.server(123).backups.delete(789);
|
|
1155
|
+
* ```
|
|
1156
|
+
*/
|
|
1157
|
+
async delete(backupId) {
|
|
1158
|
+
await this.client.delete(`${this.basePath}/${backupId}`);
|
|
1159
|
+
}
|
|
1160
|
+
};
|
|
1161
|
+
/**
|
|
1162
|
+
* Collection of scheduled jobs (cron jobs) on a server.
|
|
1163
|
+
*
|
|
1164
|
+
* Access via `forge.server(id).scheduledJobs`.
|
|
1165
|
+
*
|
|
1166
|
+
* @example
|
|
1167
|
+
* ```ts
|
|
1168
|
+
* const jobs = await forge.server(123).scheduledJobs.list();
|
|
1169
|
+
* ```
|
|
1170
|
+
*/
|
|
1171
|
+
var ScheduledJobsCollection = class extends BaseCollection {
|
|
1172
|
+
/** @internal */
|
|
1173
|
+
constructor(client, serverId) {
|
|
1174
|
+
super(client);
|
|
1175
|
+
this.serverId = serverId;
|
|
1176
|
+
}
|
|
1177
|
+
get basePath() {
|
|
1178
|
+
return `/servers/${this.serverId}/jobs`;
|
|
1179
|
+
}
|
|
1180
|
+
/**
|
|
1181
|
+
* List scheduled jobs on this server.
|
|
1182
|
+
*
|
|
1183
|
+
* @example
|
|
1184
|
+
* ```ts
|
|
1185
|
+
* const jobs = await forge.server(123).scheduledJobs.list();
|
|
1186
|
+
*
|
|
1187
|
+
* // Fetch a specific page:
|
|
1188
|
+
* const page2 = await forge.server(123).scheduledJobs.list({ page: 2 });
|
|
1189
|
+
* ```
|
|
1190
|
+
*/
|
|
1191
|
+
async list(options = {}) {
|
|
1192
|
+
const query = options.page !== void 0 ? `?page=${options.page}` : "";
|
|
1193
|
+
return (await this.client.get(`${this.basePath}${query}`)).jobs;
|
|
1194
|
+
}
|
|
1195
|
+
/**
|
|
1196
|
+
* Iterate over all scheduled jobs across all pages.
|
|
1197
|
+
*
|
|
1198
|
+
* @example
|
|
1199
|
+
* ```ts
|
|
1200
|
+
* for await (const job of forge.server(123).scheduledJobs.all()) {
|
|
1201
|
+
* console.log(job);
|
|
1202
|
+
* }
|
|
1203
|
+
*
|
|
1204
|
+
* // Or collect all at once:
|
|
1205
|
+
* const jobs = await forge.server(123).scheduledJobs.all().toArray();
|
|
1206
|
+
* ```
|
|
1207
|
+
*/
|
|
1208
|
+
all(options = {}) {
|
|
1209
|
+
return new AsyncPaginatedIterator((page) => this.list({
|
|
1210
|
+
...options,
|
|
1211
|
+
page
|
|
1212
|
+
}));
|
|
1213
|
+
}
|
|
1214
|
+
/**
|
|
1215
|
+
* Get a specific scheduled job.
|
|
1216
|
+
*
|
|
1217
|
+
* @example
|
|
1218
|
+
* ```ts
|
|
1219
|
+
* const job = await forge.server(123).scheduledJobs.get(789);
|
|
1220
|
+
* ```
|
|
1221
|
+
*/
|
|
1222
|
+
async get(jobId) {
|
|
1223
|
+
return (await this.client.get(`${this.basePath}/${jobId}`)).job;
|
|
1224
|
+
}
|
|
1225
|
+
/**
|
|
1226
|
+
* Create a new scheduled job.
|
|
1227
|
+
*
|
|
1228
|
+
* @example
|
|
1229
|
+
* ```ts
|
|
1230
|
+
* const job = await forge.server(123).scheduledJobs.create({
|
|
1231
|
+
* command: 'php /home/forge/artisan schedule:run',
|
|
1232
|
+
* user: 'forge',
|
|
1233
|
+
* frequency: 'minutely',
|
|
1234
|
+
* });
|
|
1235
|
+
* ```
|
|
1236
|
+
*/
|
|
1237
|
+
async create(data) {
|
|
1238
|
+
return (await this.client.post(this.basePath, data)).job;
|
|
1239
|
+
}
|
|
1240
|
+
/**
|
|
1241
|
+
* Delete a scheduled job.
|
|
1242
|
+
*
|
|
1243
|
+
* @example
|
|
1244
|
+
* ```ts
|
|
1245
|
+
* await forge.server(123).scheduledJobs.delete(789);
|
|
1246
|
+
* ```
|
|
1247
|
+
*/
|
|
1248
|
+
async delete(jobId) {
|
|
1249
|
+
await this.client.delete(`${this.basePath}/${jobId}`);
|
|
1250
|
+
}
|
|
1251
|
+
};
|
|
1252
|
+
/**
|
|
1253
|
+
* Collection of server monitors.
|
|
1254
|
+
*
|
|
1255
|
+
* Access via `forge.server(id).monitors`.
|
|
1256
|
+
*
|
|
1257
|
+
* @example
|
|
1258
|
+
* ```ts
|
|
1259
|
+
* const monitors = await forge.server(123).monitors.list();
|
|
1260
|
+
* ```
|
|
1261
|
+
*/
|
|
1262
|
+
var MonitorsCollection = class extends BaseCollection {
|
|
1263
|
+
/** @internal */
|
|
1264
|
+
constructor(client, serverId) {
|
|
1265
|
+
super(client);
|
|
1266
|
+
this.serverId = serverId;
|
|
1267
|
+
}
|
|
1268
|
+
get basePath() {
|
|
1269
|
+
return `/servers/${this.serverId}/monitors`;
|
|
1270
|
+
}
|
|
1271
|
+
/**
|
|
1272
|
+
* List monitors on this server.
|
|
1273
|
+
*
|
|
1274
|
+
* @example
|
|
1275
|
+
* ```ts
|
|
1276
|
+
* const monitors = await forge.server(123).monitors.list();
|
|
1277
|
+
*
|
|
1278
|
+
* // Fetch a specific page:
|
|
1279
|
+
* const page2 = await forge.server(123).monitors.list({ page: 2 });
|
|
1280
|
+
* ```
|
|
1281
|
+
*/
|
|
1282
|
+
async list(options = {}) {
|
|
1283
|
+
const query = options.page !== void 0 ? `?page=${options.page}` : "";
|
|
1284
|
+
return (await this.client.get(`${this.basePath}${query}`)).monitors;
|
|
1285
|
+
}
|
|
1286
|
+
/**
|
|
1287
|
+
* Iterate over all monitors across all pages.
|
|
1288
|
+
*
|
|
1289
|
+
* @example
|
|
1290
|
+
* ```ts
|
|
1291
|
+
* for await (const monitor of forge.server(123).monitors.all()) {
|
|
1292
|
+
* console.log(monitor);
|
|
1293
|
+
* }
|
|
1294
|
+
*
|
|
1295
|
+
* // Or collect all at once:
|
|
1296
|
+
* const monitors = await forge.server(123).monitors.all().toArray();
|
|
1297
|
+
* ```
|
|
1298
|
+
*/
|
|
1299
|
+
all(options = {}) {
|
|
1300
|
+
return new AsyncPaginatedIterator((page) => this.list({
|
|
1301
|
+
...options,
|
|
1302
|
+
page
|
|
1303
|
+
}));
|
|
1304
|
+
}
|
|
1305
|
+
/**
|
|
1306
|
+
* Get a specific monitor.
|
|
1307
|
+
*
|
|
1308
|
+
* @example
|
|
1309
|
+
* ```ts
|
|
1310
|
+
* const monitor = await forge.server(123).monitors.get(789);
|
|
1311
|
+
* ```
|
|
1312
|
+
*/
|
|
1313
|
+
async get(monitorId) {
|
|
1314
|
+
return (await this.client.get(`${this.basePath}/${monitorId}`)).monitor;
|
|
1315
|
+
}
|
|
1316
|
+
/**
|
|
1317
|
+
* Create a new monitor.
|
|
1318
|
+
*
|
|
1319
|
+
* @example
|
|
1320
|
+
* ```ts
|
|
1321
|
+
* const monitor = await forge.server(123).monitors.create({
|
|
1322
|
+
* type: 'cpu_load',
|
|
1323
|
+
* operator: 'gte',
|
|
1324
|
+
* threshold: 80,
|
|
1325
|
+
* minutes: 5,
|
|
1326
|
+
* });
|
|
1327
|
+
* ```
|
|
1328
|
+
*/
|
|
1329
|
+
async create(data) {
|
|
1330
|
+
return (await this.client.post(this.basePath, data)).monitor;
|
|
1331
|
+
}
|
|
1332
|
+
/**
|
|
1333
|
+
* Delete a monitor.
|
|
1334
|
+
*
|
|
1335
|
+
* @example
|
|
1336
|
+
* ```ts
|
|
1337
|
+
* await forge.server(123).monitors.delete(789);
|
|
1338
|
+
* ```
|
|
1339
|
+
*/
|
|
1340
|
+
async delete(monitorId) {
|
|
1341
|
+
await this.client.delete(`${this.basePath}/${monitorId}`);
|
|
1342
|
+
}
|
|
1343
|
+
};
|
|
1344
|
+
/**
|
|
1345
|
+
* Collection of firewall rules on a server.
|
|
1346
|
+
*
|
|
1347
|
+
* Access via `forge.server(id).firewallRules`.
|
|
1348
|
+
*
|
|
1349
|
+
* @example
|
|
1350
|
+
* ```ts
|
|
1351
|
+
* const rules = await forge.server(123).firewallRules.list();
|
|
1352
|
+
* ```
|
|
1353
|
+
*/
|
|
1354
|
+
var FirewallRulesCollection = class extends BaseCollection {
|
|
1355
|
+
/** @internal */
|
|
1356
|
+
constructor(client, serverId) {
|
|
1357
|
+
super(client);
|
|
1358
|
+
this.serverId = serverId;
|
|
1359
|
+
}
|
|
1360
|
+
get basePath() {
|
|
1361
|
+
return `/servers/${this.serverId}/firewall-rules`;
|
|
1362
|
+
}
|
|
1363
|
+
/**
|
|
1364
|
+
* List firewall rules on this server.
|
|
1365
|
+
*
|
|
1366
|
+
* @example
|
|
1367
|
+
* ```ts
|
|
1368
|
+
* const rules = await forge.server(123).firewallRules.list();
|
|
1369
|
+
*
|
|
1370
|
+
* // Fetch a specific page:
|
|
1371
|
+
* const page2 = await forge.server(123).firewallRules.list({ page: 2 });
|
|
1372
|
+
* ```
|
|
1373
|
+
*/
|
|
1374
|
+
async list(options = {}) {
|
|
1375
|
+
const query = options.page !== void 0 ? `?page=${options.page}` : "";
|
|
1376
|
+
return (await this.client.get(`${this.basePath}${query}`)).rules;
|
|
1377
|
+
}
|
|
1378
|
+
/**
|
|
1379
|
+
* Iterate over all firewall rules across all pages.
|
|
1380
|
+
*
|
|
1381
|
+
* @example
|
|
1382
|
+
* ```ts
|
|
1383
|
+
* for await (const rule of forge.server(123).firewallRules.all()) {
|
|
1384
|
+
* console.log(rule);
|
|
1385
|
+
* }
|
|
1386
|
+
*
|
|
1387
|
+
* // Or collect all at once:
|
|
1388
|
+
* const rules = await forge.server(123).firewallRules.all().toArray();
|
|
1389
|
+
* ```
|
|
1390
|
+
*/
|
|
1391
|
+
all(options = {}) {
|
|
1392
|
+
return new AsyncPaginatedIterator((page) => this.list({
|
|
1393
|
+
...options,
|
|
1394
|
+
page
|
|
1395
|
+
}));
|
|
1396
|
+
}
|
|
1397
|
+
/**
|
|
1398
|
+
* Get a specific firewall rule.
|
|
1399
|
+
*
|
|
1400
|
+
* @example
|
|
1401
|
+
* ```ts
|
|
1402
|
+
* const rule = await forge.server(123).firewallRules.get(789);
|
|
1403
|
+
* ```
|
|
1404
|
+
*/
|
|
1405
|
+
async get(ruleId) {
|
|
1406
|
+
return (await this.client.get(`${this.basePath}/${ruleId}`)).rule;
|
|
1407
|
+
}
|
|
1408
|
+
/**
|
|
1409
|
+
* Create a new firewall rule.
|
|
1410
|
+
*
|
|
1411
|
+
* @example
|
|
1412
|
+
* ```ts
|
|
1413
|
+
* const rule = await forge.server(123).firewallRules.create({
|
|
1414
|
+
* name: 'Allow HTTP',
|
|
1415
|
+
* port: 80,
|
|
1416
|
+
* type: 'allow',
|
|
1417
|
+
* });
|
|
1418
|
+
* ```
|
|
1419
|
+
*/
|
|
1420
|
+
async create(data) {
|
|
1421
|
+
return (await this.client.post(this.basePath, data)).rule;
|
|
1422
|
+
}
|
|
1423
|
+
/**
|
|
1424
|
+
* Delete a firewall rule.
|
|
1425
|
+
*
|
|
1426
|
+
* @example
|
|
1427
|
+
* ```ts
|
|
1428
|
+
* await forge.server(123).firewallRules.delete(789);
|
|
1429
|
+
* ```
|
|
1430
|
+
*/
|
|
1431
|
+
async delete(ruleId) {
|
|
1432
|
+
await this.client.delete(`${this.basePath}/${ruleId}`);
|
|
1433
|
+
}
|
|
1434
|
+
};
|
|
1435
|
+
/**
|
|
1436
|
+
* Collection of SSH keys on a server.
|
|
1437
|
+
*
|
|
1438
|
+
* Access via `forge.server(id).sshKeys`.
|
|
1439
|
+
*
|
|
1440
|
+
* @example
|
|
1441
|
+
* ```ts
|
|
1442
|
+
* const keys = await forge.server(123).sshKeys.list();
|
|
1443
|
+
* ```
|
|
1444
|
+
*/
|
|
1445
|
+
var SshKeysCollection = class extends BaseCollection {
|
|
1446
|
+
/** @internal */
|
|
1447
|
+
constructor(client, serverId) {
|
|
1448
|
+
super(client);
|
|
1449
|
+
this.serverId = serverId;
|
|
1450
|
+
}
|
|
1451
|
+
get basePath() {
|
|
1452
|
+
return `/servers/${this.serverId}/keys`;
|
|
1453
|
+
}
|
|
1454
|
+
/**
|
|
1455
|
+
* List SSH keys on this server.
|
|
1456
|
+
*
|
|
1457
|
+
* @example
|
|
1458
|
+
* ```ts
|
|
1459
|
+
* const keys = await forge.server(123).sshKeys.list();
|
|
1460
|
+
*
|
|
1461
|
+
* // Fetch a specific page:
|
|
1462
|
+
* const page2 = await forge.server(123).sshKeys.list({ page: 2 });
|
|
1463
|
+
* ```
|
|
1464
|
+
*/
|
|
1465
|
+
async list(options = {}) {
|
|
1466
|
+
const query = options.page !== void 0 ? `?page=${options.page}` : "";
|
|
1467
|
+
return (await this.client.get(`${this.basePath}${query}`)).keys;
|
|
1468
|
+
}
|
|
1469
|
+
/**
|
|
1470
|
+
* Iterate over all SSH keys across all pages.
|
|
1471
|
+
*
|
|
1472
|
+
* @example
|
|
1473
|
+
* ```ts
|
|
1474
|
+
* for await (const key of forge.server(123).sshKeys.all()) {
|
|
1475
|
+
* console.log(key);
|
|
1476
|
+
* }
|
|
1477
|
+
*
|
|
1478
|
+
* // Or collect all at once:
|
|
1479
|
+
* const keys = await forge.server(123).sshKeys.all().toArray();
|
|
1480
|
+
* ```
|
|
1481
|
+
*/
|
|
1482
|
+
all(options = {}) {
|
|
1483
|
+
return new AsyncPaginatedIterator((page) => this.list({
|
|
1484
|
+
...options,
|
|
1485
|
+
page
|
|
1486
|
+
}));
|
|
1487
|
+
}
|
|
1488
|
+
/**
|
|
1489
|
+
* Get a specific SSH key.
|
|
1490
|
+
*
|
|
1491
|
+
* @example
|
|
1492
|
+
* ```ts
|
|
1493
|
+
* const key = await forge.server(123).sshKeys.get(789);
|
|
1494
|
+
* ```
|
|
1495
|
+
*/
|
|
1496
|
+
async get(keyId) {
|
|
1497
|
+
return (await this.client.get(`${this.basePath}/${keyId}`)).key;
|
|
1498
|
+
}
|
|
1499
|
+
/**
|
|
1500
|
+
* Create a new SSH key.
|
|
1501
|
+
*
|
|
1502
|
+
* @example
|
|
1503
|
+
* ```ts
|
|
1504
|
+
* const key = await forge.server(123).sshKeys.create({
|
|
1505
|
+
* name: 'deploy-key',
|
|
1506
|
+
* key: 'ssh-rsa AAAA...',
|
|
1507
|
+
* });
|
|
1508
|
+
* ```
|
|
1509
|
+
*/
|
|
1510
|
+
async create(data) {
|
|
1511
|
+
return (await this.client.post(this.basePath, data)).key;
|
|
1512
|
+
}
|
|
1513
|
+
/**
|
|
1514
|
+
* Delete an SSH key.
|
|
1515
|
+
*
|
|
1516
|
+
* @example
|
|
1517
|
+
* ```ts
|
|
1518
|
+
* await forge.server(123).sshKeys.delete(789);
|
|
1519
|
+
* ```
|
|
1520
|
+
*/
|
|
1521
|
+
async delete(keyId) {
|
|
1522
|
+
await this.client.delete(`${this.basePath}/${keyId}`);
|
|
1523
|
+
}
|
|
1524
|
+
};
|
|
1525
|
+
/**
|
|
1526
|
+
* Collection of Nginx templates on a server.
|
|
1527
|
+
*
|
|
1528
|
+
* Access via `forge.server(id).nginxTemplates`.
|
|
1529
|
+
*
|
|
1530
|
+
* @example
|
|
1531
|
+
* ```ts
|
|
1532
|
+
* const templates = await forge.server(123).nginxTemplates.list();
|
|
1533
|
+
* ```
|
|
1534
|
+
*/
|
|
1535
|
+
var NginxTemplatesCollection = class extends BaseCollection {
|
|
1536
|
+
/** @internal */
|
|
1537
|
+
constructor(client, serverId) {
|
|
1538
|
+
super(client);
|
|
1539
|
+
this.serverId = serverId;
|
|
1540
|
+
}
|
|
1541
|
+
get basePath() {
|
|
1542
|
+
return `/servers/${this.serverId}/nginx/templates`;
|
|
1543
|
+
}
|
|
1544
|
+
/**
|
|
1545
|
+
* List Nginx templates on this server.
|
|
1546
|
+
*
|
|
1547
|
+
* @example
|
|
1548
|
+
* ```ts
|
|
1549
|
+
* const templates = await forge.server(123).nginxTemplates.list();
|
|
1550
|
+
*
|
|
1551
|
+
* // Fetch a specific page:
|
|
1552
|
+
* const page2 = await forge.server(123).nginxTemplates.list({ page: 2 });
|
|
1553
|
+
* ```
|
|
1554
|
+
*/
|
|
1555
|
+
async list(options = {}) {
|
|
1556
|
+
const query = options.page !== void 0 ? `?page=${options.page}` : "";
|
|
1557
|
+
return (await this.client.get(`${this.basePath}${query}`)).templates;
|
|
1558
|
+
}
|
|
1559
|
+
/**
|
|
1560
|
+
* Iterate over all Nginx templates across all pages.
|
|
1561
|
+
*
|
|
1562
|
+
* @example
|
|
1563
|
+
* ```ts
|
|
1564
|
+
* for await (const template of forge.server(123).nginxTemplates.all()) {
|
|
1565
|
+
* console.log(template);
|
|
1566
|
+
* }
|
|
1567
|
+
*
|
|
1568
|
+
* // Or collect all at once:
|
|
1569
|
+
* const templates = await forge.server(123).nginxTemplates.all().toArray();
|
|
1570
|
+
* ```
|
|
1571
|
+
*/
|
|
1572
|
+
all(options = {}) {
|
|
1573
|
+
return new AsyncPaginatedIterator((page) => this.list({
|
|
1574
|
+
...options,
|
|
1575
|
+
page
|
|
1576
|
+
}));
|
|
1577
|
+
}
|
|
1578
|
+
/**
|
|
1579
|
+
* Get a specific Nginx template.
|
|
1580
|
+
*
|
|
1581
|
+
* @example
|
|
1582
|
+
* ```ts
|
|
1583
|
+
* const template = await forge.server(123).nginxTemplates.get(789);
|
|
1584
|
+
* ```
|
|
1585
|
+
*/
|
|
1586
|
+
async get(templateId) {
|
|
1587
|
+
return (await this.client.get(`${this.basePath}/${templateId}`)).template;
|
|
1588
|
+
}
|
|
1589
|
+
/**
|
|
1590
|
+
* Create a new Nginx template.
|
|
1591
|
+
*
|
|
1592
|
+
* @example
|
|
1593
|
+
* ```ts
|
|
1594
|
+
* const template = await forge.server(123).nginxTemplates.create({
|
|
1595
|
+
* name: 'Laravel Template',
|
|
1596
|
+
* content: 'server { ... }',
|
|
1597
|
+
* });
|
|
1598
|
+
* ```
|
|
1599
|
+
*/
|
|
1600
|
+
async create(data) {
|
|
1601
|
+
return (await this.client.post(this.basePath, data)).template;
|
|
1602
|
+
}
|
|
1603
|
+
/**
|
|
1604
|
+
* Update an existing Nginx template.
|
|
1605
|
+
*
|
|
1606
|
+
* @example
|
|
1607
|
+
* ```ts
|
|
1608
|
+
* const template = await forge.server(123).nginxTemplates.update(789, {
|
|
1609
|
+
* name: 'Updated Template',
|
|
1610
|
+
* content: 'server { ... }',
|
|
1611
|
+
* });
|
|
1612
|
+
* ```
|
|
1613
|
+
*/
|
|
1614
|
+
async update(templateId, data) {
|
|
1615
|
+
return (await this.client.put(`${this.basePath}/${templateId}`, data)).template;
|
|
1616
|
+
}
|
|
1617
|
+
/**
|
|
1618
|
+
* Delete a Nginx template.
|
|
1619
|
+
*
|
|
1620
|
+
* @example
|
|
1621
|
+
* ```ts
|
|
1622
|
+
* await forge.server(123).nginxTemplates.delete(789);
|
|
1623
|
+
* ```
|
|
1624
|
+
*/
|
|
1625
|
+
async delete(templateId) {
|
|
1626
|
+
await this.client.delete(`${this.basePath}/${templateId}`);
|
|
1627
|
+
}
|
|
1628
|
+
};
|
|
1629
|
+
/**
|
|
1630
|
+
* Collection of servers.
|
|
1631
|
+
*
|
|
1632
|
+
* Access via `forge.servers`.
|
|
1633
|
+
*
|
|
1634
|
+
* @example
|
|
1635
|
+
* ```ts
|
|
1636
|
+
* // List all servers
|
|
1637
|
+
* const servers = await forge.servers.list();
|
|
1638
|
+
*
|
|
1639
|
+
* // Get a specific server
|
|
1640
|
+
* const server = await forge.servers.get(123);
|
|
1641
|
+
*
|
|
1642
|
+
* // Create a new server
|
|
1643
|
+
* const server = await forge.servers.create({ ... });
|
|
1644
|
+
* ```
|
|
1645
|
+
*/
|
|
1646
|
+
var ServersCollection = class extends BaseCollection {
|
|
1647
|
+
/** @internal */
|
|
1648
|
+
constructor(client) {
|
|
1649
|
+
super(client);
|
|
1650
|
+
}
|
|
1651
|
+
/**
|
|
1652
|
+
* List servers.
|
|
1653
|
+
*
|
|
1654
|
+
* @example
|
|
1655
|
+
* ```ts
|
|
1656
|
+
* const servers = await forge.servers.list();
|
|
1657
|
+
*
|
|
1658
|
+
* // Fetch a specific page:
|
|
1659
|
+
* const page2 = await forge.servers.list({ page: 2 });
|
|
1660
|
+
* ```
|
|
1661
|
+
*/
|
|
1662
|
+
async list(options = {}) {
|
|
1663
|
+
const query = options.page !== void 0 ? `?page=${options.page}` : "";
|
|
1664
|
+
return (await this.client.get(`/servers${query}`)).servers;
|
|
1665
|
+
}
|
|
1666
|
+
/**
|
|
1667
|
+
* Iterate over all servers across all pages.
|
|
1668
|
+
*
|
|
1669
|
+
* @example
|
|
1670
|
+
* ```ts
|
|
1671
|
+
* for await (const server of forge.servers.all()) {
|
|
1672
|
+
* console.log(server);
|
|
1673
|
+
* }
|
|
1674
|
+
*
|
|
1675
|
+
* // Or collect all at once:
|
|
1676
|
+
* const servers = await forge.servers.all().toArray();
|
|
1677
|
+
* ```
|
|
1678
|
+
*/
|
|
1679
|
+
all(options = {}) {
|
|
1680
|
+
return new AsyncPaginatedIterator((page) => this.list({
|
|
1681
|
+
...options,
|
|
1682
|
+
page
|
|
1683
|
+
}));
|
|
1684
|
+
}
|
|
1685
|
+
/**
|
|
1686
|
+
* Get a specific server by ID.
|
|
1687
|
+
*
|
|
1688
|
+
* @example
|
|
1689
|
+
* ```ts
|
|
1690
|
+
* const server = await forge.servers.get(123);
|
|
1691
|
+
* ```
|
|
1692
|
+
*/
|
|
1693
|
+
async get(serverId) {
|
|
1694
|
+
return (await this.client.get(`/servers/${serverId}`)).server;
|
|
1695
|
+
}
|
|
1696
|
+
/**
|
|
1697
|
+
* Create a new server.
|
|
1698
|
+
*
|
|
1699
|
+
* @example
|
|
1700
|
+
* ```ts
|
|
1701
|
+
* const server = await forge.servers.create({
|
|
1702
|
+
* provider: 'ocean2',
|
|
1703
|
+
* credential_id: 1,
|
|
1704
|
+
* name: 'web-1',
|
|
1705
|
+
* type: 'app',
|
|
1706
|
+
* size: '01',
|
|
1707
|
+
* region: 'ams3',
|
|
1708
|
+
* });
|
|
1709
|
+
* ```
|
|
1710
|
+
*/
|
|
1711
|
+
async create(data) {
|
|
1712
|
+
return (await this.client.post("/servers", data)).server;
|
|
1713
|
+
}
|
|
1714
|
+
/**
|
|
1715
|
+
* Update a server.
|
|
1716
|
+
*
|
|
1717
|
+
* @example
|
|
1718
|
+
* ```ts
|
|
1719
|
+
* await forge.servers.update(123, { name: 'web-1-renamed' });
|
|
1720
|
+
* ```
|
|
1721
|
+
*/
|
|
1722
|
+
async update(serverId, data) {
|
|
1723
|
+
return (await this.client.put(`/servers/${serverId}`, data)).server;
|
|
1724
|
+
}
|
|
1725
|
+
/**
|
|
1726
|
+
* Delete a server.
|
|
1727
|
+
*
|
|
1728
|
+
* @example
|
|
1729
|
+
* ```ts
|
|
1730
|
+
* await forge.servers.delete(123);
|
|
1731
|
+
* ```
|
|
1732
|
+
*/
|
|
1733
|
+
async delete(serverId) {
|
|
1734
|
+
await this.client.delete(`/servers/${serverId}`);
|
|
1735
|
+
}
|
|
1736
|
+
/**
|
|
1737
|
+
* Reboot a server.
|
|
1738
|
+
*
|
|
1739
|
+
* @example
|
|
1740
|
+
* ```ts
|
|
1741
|
+
* await forge.servers.reboot(123);
|
|
1742
|
+
* ```
|
|
1743
|
+
*/
|
|
1744
|
+
async reboot(serverId) {
|
|
1745
|
+
await this.client.post(`/servers/${serverId}/reboot`);
|
|
1746
|
+
}
|
|
1747
|
+
};
|
|
1748
|
+
/**
|
|
1749
|
+
* A specific server with nested resources.
|
|
1750
|
+
*
|
|
1751
|
+
* Access via `forge.server(id)`.
|
|
1752
|
+
*
|
|
1753
|
+
* @example
|
|
1754
|
+
* ```ts
|
|
1755
|
+
* // Access sites on a server
|
|
1756
|
+
* const sites = await forge.server(123).sites.list();
|
|
1757
|
+
*
|
|
1758
|
+
* // Access databases on a server
|
|
1759
|
+
* const dbs = await forge.server(123).databases.list();
|
|
1760
|
+
* ```
|
|
1761
|
+
*/
|
|
1762
|
+
var ServerResource = class extends BaseCollection {
|
|
1763
|
+
/** Sites on this server. */
|
|
1764
|
+
sites;
|
|
1765
|
+
/** Databases on this server. */
|
|
1766
|
+
databases;
|
|
1767
|
+
/** Database users on this server. */
|
|
1768
|
+
databaseUsers;
|
|
1769
|
+
/** Daemons (background processes) on this server. */
|
|
1770
|
+
daemons;
|
|
1771
|
+
/** Backup configurations on this server. */
|
|
1772
|
+
backups;
|
|
1773
|
+
/** Scheduled jobs (cron jobs) on this server. */
|
|
1774
|
+
scheduledJobs;
|
|
1775
|
+
/** Monitors on this server. */
|
|
1776
|
+
monitors;
|
|
1777
|
+
/** Firewall rules on this server. */
|
|
1778
|
+
firewallRules;
|
|
1779
|
+
/** SSH keys on this server. */
|
|
1780
|
+
sshKeys;
|
|
1781
|
+
/** Nginx templates on this server. */
|
|
1782
|
+
nginxTemplates;
|
|
1783
|
+
/** @internal */
|
|
1784
|
+
constructor(client, serverId) {
|
|
1785
|
+
super(client);
|
|
1786
|
+
this.serverId = serverId;
|
|
1787
|
+
this.sites = new SitesCollection(client, serverId);
|
|
1788
|
+
this.databases = new DatabasesCollection(client, serverId);
|
|
1789
|
+
this.databaseUsers = new DatabaseUsersCollection(client, serverId);
|
|
1790
|
+
this.daemons = new DaemonsCollection(client, serverId);
|
|
1791
|
+
this.backups = new BackupsCollection(client, serverId);
|
|
1792
|
+
this.scheduledJobs = new ScheduledJobsCollection(client, serverId);
|
|
1793
|
+
this.monitors = new MonitorsCollection(client, serverId);
|
|
1794
|
+
this.firewallRules = new FirewallRulesCollection(client, serverId);
|
|
1795
|
+
this.sshKeys = new SshKeysCollection(client, serverId);
|
|
1796
|
+
this.nginxTemplates = new NginxTemplatesCollection(client, serverId);
|
|
1797
|
+
}
|
|
1798
|
+
/**
|
|
1799
|
+
* Access a specific site on this server, with nested resources.
|
|
1800
|
+
*
|
|
1801
|
+
* @example
|
|
1802
|
+
* ```ts
|
|
1803
|
+
* // Deploy a site
|
|
1804
|
+
* await forge.server(123).site(456).deploy();
|
|
1805
|
+
*
|
|
1806
|
+
* // Get environment variables
|
|
1807
|
+
* const env = await forge.server(123).site(456).env.get();
|
|
1808
|
+
* ```
|
|
1809
|
+
*/
|
|
1810
|
+
site(siteId) {
|
|
1811
|
+
return new SiteResource(this.client, this.serverId, siteId);
|
|
1812
|
+
}
|
|
1813
|
+
/**
|
|
1814
|
+
* Get this server's details.
|
|
1815
|
+
*
|
|
1816
|
+
* @example
|
|
1817
|
+
* ```ts
|
|
1818
|
+
* const server = await forge.server(123).get();
|
|
1819
|
+
* ```
|
|
1820
|
+
*/
|
|
1821
|
+
async get() {
|
|
1822
|
+
return (await this.client.get(`/servers/${this.serverId}`)).server;
|
|
1823
|
+
}
|
|
1824
|
+
/**
|
|
1825
|
+
* Reboot this server.
|
|
1826
|
+
*
|
|
1827
|
+
* @example
|
|
1828
|
+
* ```ts
|
|
1829
|
+
* await forge.server(123).reboot();
|
|
1830
|
+
* ```
|
|
1831
|
+
*/
|
|
1832
|
+
async reboot() {
|
|
1833
|
+
await this.client.post(`/servers/${this.serverId}/reboot`);
|
|
1834
|
+
}
|
|
1835
|
+
/**
|
|
1836
|
+
* Delete this server.
|
|
1837
|
+
*
|
|
1838
|
+
* @example
|
|
1839
|
+
* ```ts
|
|
1840
|
+
* await forge.server(123).delete();
|
|
1841
|
+
* ```
|
|
1842
|
+
*/
|
|
1843
|
+
async delete() {
|
|
1844
|
+
await this.client.delete(`/servers/${this.serverId}`);
|
|
1845
|
+
}
|
|
1846
|
+
};
|
|
1847
|
+
/**
|
|
1848
|
+
* Collection of recipes.
|
|
1849
|
+
*
|
|
1850
|
+
* Access via `forge.recipes`.
|
|
1851
|
+
*
|
|
1852
|
+
* @example
|
|
1853
|
+
* ```ts
|
|
1854
|
+
* const recipes = await forge.recipes.list();
|
|
1855
|
+
* ```
|
|
1856
|
+
*/
|
|
1857
|
+
var RecipesCollection = class extends BaseCollection {
|
|
1858
|
+
/** @internal */
|
|
1859
|
+
constructor(client) {
|
|
1860
|
+
super(client);
|
|
1861
|
+
}
|
|
1862
|
+
get basePath() {
|
|
1863
|
+
return `/recipes`;
|
|
1864
|
+
}
|
|
1865
|
+
/**
|
|
1866
|
+
* List all recipes.
|
|
1867
|
+
*
|
|
1868
|
+
* @example
|
|
1869
|
+
* ```ts
|
|
1870
|
+
* const recipes = await forge.recipes.list();
|
|
1871
|
+
*
|
|
1872
|
+
* // Fetch a specific page:
|
|
1873
|
+
* const page2 = await forge.recipes.list({ page: 2 });
|
|
1874
|
+
* ```
|
|
1875
|
+
*/
|
|
1876
|
+
async list(options = {}) {
|
|
1877
|
+
const query = options.page !== void 0 ? `?page=${options.page}` : "";
|
|
1878
|
+
return (await this.client.get(`${this.basePath}${query}`)).recipes;
|
|
1879
|
+
}
|
|
1880
|
+
/**
|
|
1881
|
+
* Iterate over all recipes across all pages.
|
|
1882
|
+
*
|
|
1883
|
+
* @example
|
|
1884
|
+
* ```ts
|
|
1885
|
+
* for await (const recipe of forge.recipes.all()) {
|
|
1886
|
+
* console.log(recipe);
|
|
1887
|
+
* }
|
|
1888
|
+
*
|
|
1889
|
+
* // Or collect all at once:
|
|
1890
|
+
* const recipes = await forge.recipes.all().toArray();
|
|
1891
|
+
* ```
|
|
1892
|
+
*/
|
|
1893
|
+
all(options = {}) {
|
|
1894
|
+
return new AsyncPaginatedIterator((page) => this.list({
|
|
1895
|
+
...options,
|
|
1896
|
+
page
|
|
1897
|
+
}));
|
|
1898
|
+
}
|
|
1899
|
+
/**
|
|
1900
|
+
* Get a specific recipe.
|
|
1901
|
+
*
|
|
1902
|
+
* @example
|
|
1903
|
+
* ```ts
|
|
1904
|
+
* const recipe = await forge.recipes.get(789);
|
|
1905
|
+
* ```
|
|
1906
|
+
*/
|
|
1907
|
+
async get(recipeId) {
|
|
1908
|
+
return (await this.client.get(`${this.basePath}/${recipeId}`)).recipe;
|
|
1909
|
+
}
|
|
1910
|
+
/**
|
|
1911
|
+
* Create a new recipe.
|
|
1912
|
+
*
|
|
1913
|
+
* @example
|
|
1914
|
+
* ```ts
|
|
1915
|
+
* const recipe = await forge.recipes.create({
|
|
1916
|
+
* name: 'Install Node',
|
|
1917
|
+
* user: 'root',
|
|
1918
|
+
* script: 'curl -fsSL https://deb.nodesource.com/setup_20.x | bash -',
|
|
1919
|
+
* });
|
|
1920
|
+
* ```
|
|
1921
|
+
*/
|
|
1922
|
+
async create(data) {
|
|
1923
|
+
return (await this.client.post(this.basePath, data)).recipe;
|
|
1924
|
+
}
|
|
1925
|
+
/**
|
|
1926
|
+
* Delete a recipe.
|
|
1927
|
+
*
|
|
1928
|
+
* @example
|
|
1929
|
+
* ```ts
|
|
1930
|
+
* await forge.recipes.delete(789);
|
|
1931
|
+
* ```
|
|
1932
|
+
*/
|
|
1933
|
+
async delete(recipeId) {
|
|
1934
|
+
await this.client.delete(`${this.basePath}/${recipeId}`);
|
|
1935
|
+
}
|
|
1936
|
+
/**
|
|
1937
|
+
* Run a recipe on one or more servers.
|
|
1938
|
+
*
|
|
1939
|
+
* @example
|
|
1940
|
+
* ```ts
|
|
1941
|
+
* await forge.recipes.run(789, { servers: [123, 456] });
|
|
1942
|
+
* ```
|
|
1943
|
+
*/
|
|
1944
|
+
async run(recipeId, options) {
|
|
1945
|
+
await this.client.post(`${this.basePath}/${recipeId}/run`, options);
|
|
1946
|
+
}
|
|
1947
|
+
};
|
|
1948
|
+
/**
|
|
1949
|
+
* Laravel Forge TypeScript SDK.
|
|
1950
|
+
*
|
|
1951
|
+
* Provides a fluent, chainable API for managing Laravel Forge servers,
|
|
1952
|
+
* sites, deployments, and more.
|
|
1953
|
+
*
|
|
1954
|
+
* @example
|
|
1955
|
+
* ```ts
|
|
1956
|
+
* import { Forge } from '@studiometa/forge-sdk';
|
|
1957
|
+
*
|
|
1958
|
+
* const forge = new Forge('your-api-token');
|
|
1959
|
+
*
|
|
1960
|
+
* // List all servers
|
|
1961
|
+
* const servers = await forge.servers.list();
|
|
1962
|
+
*
|
|
1963
|
+
* // Deploy a site
|
|
1964
|
+
* await forge.server(123).site(456).deploy();
|
|
1965
|
+
*
|
|
1966
|
+
* // Get environment variables
|
|
1967
|
+
* const env = await forge.server(123).site(456).env.get();
|
|
1968
|
+
*
|
|
1969
|
+
* // Manage databases
|
|
1970
|
+
* const dbs = await forge.server(123).databases.list();
|
|
1971
|
+
* ```
|
|
1972
|
+
*/
|
|
1973
|
+
var Forge = class {
|
|
1974
|
+
/** @internal */
|
|
1975
|
+
client;
|
|
1976
|
+
/** Server operations (list, get, create, update, delete, reboot). */
|
|
1977
|
+
servers;
|
|
1978
|
+
/** Recipe operations (list, get, create, delete, run). */
|
|
1979
|
+
recipes;
|
|
1980
|
+
/**
|
|
1981
|
+
* Create a new Forge SDK instance.
|
|
1982
|
+
*
|
|
1983
|
+
* @param token Your Laravel Forge API token.
|
|
1984
|
+
* @param options Optional configuration (custom fetch, base URL, rate limiting).
|
|
1985
|
+
*
|
|
1986
|
+
* @example
|
|
1987
|
+
* ```ts
|
|
1988
|
+
* // Basic usage
|
|
1989
|
+
* const forge = new Forge('your-api-token');
|
|
1990
|
+
*
|
|
1991
|
+
* // With custom options
|
|
1992
|
+
* const forge = new Forge('your-api-token', {
|
|
1993
|
+
* baseUrl: 'https://custom-forge-instance.com/api/v1',
|
|
1994
|
+
* });
|
|
1995
|
+
*
|
|
1996
|
+
* // With mock fetch for testing
|
|
1997
|
+
* const forge = new Forge('test-token', { fetch: mockFetch });
|
|
1998
|
+
* ```
|
|
1999
|
+
*/
|
|
2000
|
+
constructor(token, options) {
|
|
2001
|
+
this.client = new HttpClient({
|
|
2002
|
+
token,
|
|
2003
|
+
...options
|
|
2004
|
+
});
|
|
2005
|
+
this.servers = new ServersCollection(this.client);
|
|
2006
|
+
this.recipes = new RecipesCollection(this.client);
|
|
2007
|
+
}
|
|
2008
|
+
/**
|
|
2009
|
+
* Access a specific server by ID, with nested resources.
|
|
2010
|
+
*
|
|
2011
|
+
* Returns a `ServerResource` that provides access to sites, databases,
|
|
2012
|
+
* daemons, and other server-level resources.
|
|
2013
|
+
*
|
|
2014
|
+
* @param serverId The server ID.
|
|
2015
|
+
*
|
|
2016
|
+
* @example
|
|
2017
|
+
* ```ts
|
|
2018
|
+
* // List sites on a server
|
|
2019
|
+
* const sites = await forge.server(123).sites.list();
|
|
2020
|
+
*
|
|
2021
|
+
* // Access a specific site
|
|
2022
|
+
* const site = await forge.server(123).site(456);
|
|
2023
|
+
*
|
|
2024
|
+
* // Deploy a site
|
|
2025
|
+
* await forge.server(123).site(456).deploy();
|
|
2026
|
+
*
|
|
2027
|
+
* // Manage databases
|
|
2028
|
+
* const dbs = await forge.server(123).databases.list();
|
|
2029
|
+
* ```
|
|
2030
|
+
*/
|
|
2031
|
+
server(serverId) {
|
|
2032
|
+
return new ServerResource(this.client, serverId);
|
|
2033
|
+
}
|
|
2034
|
+
/**
|
|
2035
|
+
* Get the currently authenticated user.
|
|
2036
|
+
*
|
|
2037
|
+
* @example
|
|
2038
|
+
* ```ts
|
|
2039
|
+
* const user = await forge.user();
|
|
2040
|
+
* console.log(user.name, user.email);
|
|
2041
|
+
* ```
|
|
2042
|
+
*/
|
|
2043
|
+
async user() {
|
|
2044
|
+
return (await this.client.get("/user")).user;
|
|
2045
|
+
}
|
|
2046
|
+
};
|
|
2047
|
+
export { AsyncPaginatedIterator, BackupsCollection, BaseCollection, CertificatesCollection, CommandsCollection, DaemonsCollection, DatabaseUsersCollection, DatabasesCollection, DeploymentsCollection, FirewallRulesCollection, Forge, MonitorsCollection, NginxTemplatesCollection, RecipesCollection, RedirectRulesCollection, ScheduledJobsCollection, SecurityRulesCollection, ServerResource, ServersCollection, SiteEnvResource, SiteNginxResource, SiteResource, SitesCollection, SshKeysCollection };
|
|
2048
|
+
|
|
2049
|
+
//# sourceMappingURL=index.js.map
|