@studiometa/forge-sdk 0.0.1 → 0.2.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
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type { CreateRedirectRuleData, ForgeRedirectRule, HttpClient } from "@studiometa/forge-api";
|
|
2
|
+
import { BaseCollection } from "./base.ts";
|
|
3
|
+
import { AsyncPaginatedIterator } from "../pagination.ts";
|
|
4
|
+
/**
|
|
5
|
+
* Options for listing redirect rules.
|
|
6
|
+
*/
|
|
7
|
+
export interface RedirectRuleListOptions {
|
|
8
|
+
/** Page number to fetch (1-indexed). */
|
|
9
|
+
page?: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Collection of redirect rules on a site.
|
|
13
|
+
*
|
|
14
|
+
* Access via `forge.server(id).site(id).redirectRules`.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* const rules = await forge.server(123).site(456).redirectRules.list();
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare class RedirectRulesCollection extends BaseCollection {
|
|
22
|
+
private readonly serverId;
|
|
23
|
+
private readonly siteId;
|
|
24
|
+
/** @internal */
|
|
25
|
+
constructor(client: HttpClient, serverId: number, siteId: number);
|
|
26
|
+
private get basePath();
|
|
27
|
+
/**
|
|
28
|
+
* List redirect rules on this site.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* const rules = await forge.server(123).site(456).redirectRules.list();
|
|
33
|
+
*
|
|
34
|
+
* // Fetch a specific page:
|
|
35
|
+
* const page2 = await forge.server(123).site(456).redirectRules.list({ page: 2 });
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
list(options?: RedirectRuleListOptions): Promise<ForgeRedirectRule[]>;
|
|
39
|
+
/**
|
|
40
|
+
* Iterate over all redirect rules across all pages.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* for await (const rule of forge.server(123).site(456).redirectRules.all()) {
|
|
45
|
+
* console.log(rule);
|
|
46
|
+
* }
|
|
47
|
+
*
|
|
48
|
+
* // Or collect all at once:
|
|
49
|
+
* const rules = await forge.server(123).site(456).redirectRules.all().toArray();
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
all(options?: Omit<RedirectRuleListOptions, "page">): AsyncPaginatedIterator<ForgeRedirectRule>;
|
|
53
|
+
/**
|
|
54
|
+
* Get a specific redirect rule.
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```ts
|
|
58
|
+
* const rule = await forge.server(123).site(456).redirectRules.get(789);
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
get(ruleId: number): Promise<ForgeRedirectRule>;
|
|
62
|
+
/**
|
|
63
|
+
* Create a new redirect rule.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```ts
|
|
67
|
+
* const rule = await forge.server(123).site(456).redirectRules.create({
|
|
68
|
+
* from: '/old-path',
|
|
69
|
+
* to: '/new-path',
|
|
70
|
+
* type: 'redirect',
|
|
71
|
+
* });
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
create(data: CreateRedirectRuleData): Promise<ForgeRedirectRule>;
|
|
75
|
+
/**
|
|
76
|
+
* Delete a redirect rule.
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```ts
|
|
80
|
+
* await forge.server(123).site(456).redirectRules.delete(789);
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
delete(ruleId: number): Promise<void>;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=redirect-rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redirect-rules.d.ts","sourceRoot":"","sources":["../../src/resources/redirect-rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,iBAAiB,EACjB,UAAU,EAGX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,qBAAa,uBAAwB,SAAQ,cAAc;IAIvD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJzB,gBAAgB;gBAEd,MAAM,EAAE,UAAU,EACD,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM;IAKjC,OAAO,KAAK,QAAQ,GAEnB;IAED;;;;;;;;;;OAUG;IACG,IAAI,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAM/E;;;;;;;;;;;;OAYG;IACH,GAAG,CACD,OAAO,GAAE,IAAI,CAAC,uBAAuB,EAAE,MAAM,CAAM,GAClD,sBAAsB,CAAC,iBAAiB,CAAC;IAI5C;;;;;;;OAOG;IACG,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKrD;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKtE;;;;;;;OAOG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG5C"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { CreateScheduledJobData, ForgeScheduledJob, HttpClient } from "@studiometa/forge-api";
|
|
2
|
+
import { BaseCollection } from "./base.ts";
|
|
3
|
+
import { AsyncPaginatedIterator } from "../pagination.ts";
|
|
4
|
+
/**
|
|
5
|
+
* Options for listing scheduled jobs.
|
|
6
|
+
*/
|
|
7
|
+
export interface ScheduledJobListOptions {
|
|
8
|
+
/** Page number to fetch (1-indexed). */
|
|
9
|
+
page?: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Collection of scheduled jobs (cron jobs) on a server.
|
|
13
|
+
*
|
|
14
|
+
* Access via `forge.server(id).scheduledJobs`.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* const jobs = await forge.server(123).scheduledJobs.list();
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare class ScheduledJobsCollection extends BaseCollection {
|
|
22
|
+
private readonly serverId;
|
|
23
|
+
/** @internal */
|
|
24
|
+
constructor(client: HttpClient, serverId: number);
|
|
25
|
+
private get basePath();
|
|
26
|
+
/**
|
|
27
|
+
* List scheduled jobs on this server.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts
|
|
31
|
+
* const jobs = await forge.server(123).scheduledJobs.list();
|
|
32
|
+
*
|
|
33
|
+
* // Fetch a specific page:
|
|
34
|
+
* const page2 = await forge.server(123).scheduledJobs.list({ page: 2 });
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
list(options?: ScheduledJobListOptions): Promise<ForgeScheduledJob[]>;
|
|
38
|
+
/**
|
|
39
|
+
* Iterate over all scheduled jobs across all pages.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```ts
|
|
43
|
+
* for await (const job of forge.server(123).scheduledJobs.all()) {
|
|
44
|
+
* console.log(job);
|
|
45
|
+
* }
|
|
46
|
+
*
|
|
47
|
+
* // Or collect all at once:
|
|
48
|
+
* const jobs = await forge.server(123).scheduledJobs.all().toArray();
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
all(options?: Omit<ScheduledJobListOptions, "page">): AsyncPaginatedIterator<ForgeScheduledJob>;
|
|
52
|
+
/**
|
|
53
|
+
* Get a specific scheduled job.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```ts
|
|
57
|
+
* const job = await forge.server(123).scheduledJobs.get(789);
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
get(jobId: number): Promise<ForgeScheduledJob>;
|
|
61
|
+
/**
|
|
62
|
+
* Create a new scheduled job.
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```ts
|
|
66
|
+
* const job = await forge.server(123).scheduledJobs.create({
|
|
67
|
+
* command: 'php /home/forge/artisan schedule:run',
|
|
68
|
+
* user: 'forge',
|
|
69
|
+
* frequency: 'minutely',
|
|
70
|
+
* });
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
create(data: CreateScheduledJobData): Promise<ForgeScheduledJob>;
|
|
74
|
+
/**
|
|
75
|
+
* Delete a scheduled job.
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```ts
|
|
79
|
+
* await forge.server(123).scheduledJobs.delete(789);
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
delete(jobId: number): Promise<void>;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=scheduled-jobs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduled-jobs.d.ts","sourceRoot":"","sources":["../../src/resources/scheduled-jobs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,iBAAiB,EACjB,UAAU,EAGX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,qBAAa,uBAAwB,SAAQ,cAAc;IAIvD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAH3B,gBAAgB;gBAEd,MAAM,EAAE,UAAU,EACD,QAAQ,EAAE,MAAM;IAKnC,OAAO,KAAK,QAAQ,GAEnB;IAED;;;;;;;;;;OAUG;IACG,IAAI,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAM/E;;;;;;;;;;;;OAYG;IACH,GAAG,CACD,OAAO,GAAE,IAAI,CAAC,uBAAuB,EAAE,MAAM,CAAM,GAClD,sBAAsB,CAAC,iBAAiB,CAAC;IAI5C;;;;;;;OAOG;IACG,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKpD;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKtE;;;;;;;OAOG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG3C"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type { CreateSecurityRuleData, ForgeSecurityRule, HttpClient } from "@studiometa/forge-api";
|
|
2
|
+
import { BaseCollection } from "./base.ts";
|
|
3
|
+
import { AsyncPaginatedIterator } from "../pagination.ts";
|
|
4
|
+
/**
|
|
5
|
+
* Options for listing security rules.
|
|
6
|
+
*/
|
|
7
|
+
export interface SecurityRuleListOptions {
|
|
8
|
+
/** Page number to fetch (1-indexed). */
|
|
9
|
+
page?: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Collection of security rules on a site.
|
|
13
|
+
*
|
|
14
|
+
* Access via `forge.server(id).site(id).securityRules`.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* const rules = await forge.server(123).site(456).securityRules.list();
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare class SecurityRulesCollection extends BaseCollection {
|
|
22
|
+
private readonly serverId;
|
|
23
|
+
private readonly siteId;
|
|
24
|
+
/** @internal */
|
|
25
|
+
constructor(client: HttpClient, serverId: number, siteId: number);
|
|
26
|
+
private get basePath();
|
|
27
|
+
/**
|
|
28
|
+
* List security rules on this site.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* const rules = await forge.server(123).site(456).securityRules.list();
|
|
33
|
+
*
|
|
34
|
+
* // Fetch a specific page:
|
|
35
|
+
* const page2 = await forge.server(123).site(456).securityRules.list({ page: 2 });
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
list(options?: SecurityRuleListOptions): Promise<ForgeSecurityRule[]>;
|
|
39
|
+
/**
|
|
40
|
+
* Iterate over all security rules across all pages.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* for await (const rule of forge.server(123).site(456).securityRules.all()) {
|
|
45
|
+
* console.log(rule);
|
|
46
|
+
* }
|
|
47
|
+
*
|
|
48
|
+
* // Or collect all at once:
|
|
49
|
+
* const rules = await forge.server(123).site(456).securityRules.all().toArray();
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
all(options?: Omit<SecurityRuleListOptions, "page">): AsyncPaginatedIterator<ForgeSecurityRule>;
|
|
53
|
+
/**
|
|
54
|
+
* Get a specific security rule.
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```ts
|
|
58
|
+
* const rule = await forge.server(123).site(456).securityRules.get(789);
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
get(ruleId: number): Promise<ForgeSecurityRule>;
|
|
62
|
+
/**
|
|
63
|
+
* Create a new security rule.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```ts
|
|
67
|
+
* const rule = await forge.server(123).site(456).securityRules.create({
|
|
68
|
+
* name: 'Admin Area',
|
|
69
|
+
* path: '/admin',
|
|
70
|
+
* credentials: [{ username: 'admin', password: 'secret' }],
|
|
71
|
+
* });
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
create(data: CreateSecurityRuleData): Promise<ForgeSecurityRule>;
|
|
75
|
+
/**
|
|
76
|
+
* Delete a security rule.
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```ts
|
|
80
|
+
* await forge.server(123).site(456).securityRules.delete(789);
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
delete(ruleId: number): Promise<void>;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=security-rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-rules.d.ts","sourceRoot":"","sources":["../../src/resources/security-rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,iBAAiB,EACjB,UAAU,EAGX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,qBAAa,uBAAwB,SAAQ,cAAc;IAIvD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJzB,gBAAgB;gBAEd,MAAM,EAAE,UAAU,EACD,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM;IAKjC,OAAO,KAAK,QAAQ,GAEnB;IAED;;;;;;;;;;OAUG;IACG,IAAI,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAM/E;;;;;;;;;;;;OAYG;IACH,GAAG,CACD,OAAO,GAAE,IAAI,CAAC,uBAAuB,EAAE,MAAM,CAAM,GAClD,sBAAsB,CAAC,iBAAiB,CAAC;IAI5C;;;;;;;OAOG;IACG,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKrD;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKtE;;;;;;;OAOG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG5C"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import type { CreateServerData, ForgeServer, HttpClient } from "@studiometa/forge-api";
|
|
2
|
+
import { AsyncPaginatedIterator } from "../pagination.ts";
|
|
3
|
+
import { SitesCollection, SiteResource } from "./sites.ts";
|
|
4
|
+
import { DatabasesCollection } from "./databases.ts";
|
|
5
|
+
import { DatabaseUsersCollection } from "./database-users.ts";
|
|
6
|
+
import { DaemonsCollection } from "./daemons.ts";
|
|
7
|
+
import { BackupsCollection } from "./backups.ts";
|
|
8
|
+
import { ScheduledJobsCollection } from "./scheduled-jobs.ts";
|
|
9
|
+
import { MonitorsCollection } from "./monitors.ts";
|
|
10
|
+
import { FirewallRulesCollection } from "./firewall-rules.ts";
|
|
11
|
+
import { SshKeysCollection } from "./ssh-keys.ts";
|
|
12
|
+
import { NginxTemplatesCollection } from "./nginx-templates.ts";
|
|
13
|
+
import { BaseCollection } from "./base.ts";
|
|
14
|
+
/**
|
|
15
|
+
* Options for listing servers.
|
|
16
|
+
*/
|
|
17
|
+
export interface ServerListOptions {
|
|
18
|
+
/** Page number to fetch (1-indexed). */
|
|
19
|
+
page?: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Collection of servers.
|
|
23
|
+
*
|
|
24
|
+
* Access via `forge.servers`.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* // List all servers
|
|
29
|
+
* const servers = await forge.servers.list();
|
|
30
|
+
*
|
|
31
|
+
* // Get a specific server
|
|
32
|
+
* const server = await forge.servers.get(123);
|
|
33
|
+
*
|
|
34
|
+
* // Create a new server
|
|
35
|
+
* const server = await forge.servers.create({ ... });
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare class ServersCollection extends BaseCollection {
|
|
39
|
+
/** @internal */
|
|
40
|
+
constructor(client: HttpClient);
|
|
41
|
+
/**
|
|
42
|
+
* List servers.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```ts
|
|
46
|
+
* const servers = await forge.servers.list();
|
|
47
|
+
*
|
|
48
|
+
* // Fetch a specific page:
|
|
49
|
+
* const page2 = await forge.servers.list({ page: 2 });
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
list(options?: ServerListOptions): Promise<ForgeServer[]>;
|
|
53
|
+
/**
|
|
54
|
+
* Iterate over all servers across all pages.
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```ts
|
|
58
|
+
* for await (const server of forge.servers.all()) {
|
|
59
|
+
* console.log(server);
|
|
60
|
+
* }
|
|
61
|
+
*
|
|
62
|
+
* // Or collect all at once:
|
|
63
|
+
* const servers = await forge.servers.all().toArray();
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
all(options?: Omit<ServerListOptions, "page">): AsyncPaginatedIterator<ForgeServer>;
|
|
67
|
+
/**
|
|
68
|
+
* Get a specific server by ID.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```ts
|
|
72
|
+
* const server = await forge.servers.get(123);
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
get(serverId: number): Promise<ForgeServer>;
|
|
76
|
+
/**
|
|
77
|
+
* Create a new server.
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```ts
|
|
81
|
+
* const server = await forge.servers.create({
|
|
82
|
+
* provider: 'ocean2',
|
|
83
|
+
* credential_id: 1,
|
|
84
|
+
* name: 'web-1',
|
|
85
|
+
* type: 'app',
|
|
86
|
+
* size: '01',
|
|
87
|
+
* region: 'ams3',
|
|
88
|
+
* });
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
create(data: CreateServerData): Promise<ForgeServer>;
|
|
92
|
+
/**
|
|
93
|
+
* Update a server.
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```ts
|
|
97
|
+
* await forge.servers.update(123, { name: 'web-1-renamed' });
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
update(serverId: number, data: Partial<CreateServerData>): Promise<ForgeServer>;
|
|
101
|
+
/**
|
|
102
|
+
* Delete a server.
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```ts
|
|
106
|
+
* await forge.servers.delete(123);
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
delete(serverId: number): Promise<void>;
|
|
110
|
+
/**
|
|
111
|
+
* Reboot a server.
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```ts
|
|
115
|
+
* await forge.servers.reboot(123);
|
|
116
|
+
* ```
|
|
117
|
+
*/
|
|
118
|
+
reboot(serverId: number): Promise<void>;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* A specific server with nested resources.
|
|
122
|
+
*
|
|
123
|
+
* Access via `forge.server(id)`.
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* ```ts
|
|
127
|
+
* // Access sites on a server
|
|
128
|
+
* const sites = await forge.server(123).sites.list();
|
|
129
|
+
*
|
|
130
|
+
* // Access databases on a server
|
|
131
|
+
* const dbs = await forge.server(123).databases.list();
|
|
132
|
+
* ```
|
|
133
|
+
*/
|
|
134
|
+
export declare class ServerResource extends BaseCollection {
|
|
135
|
+
private readonly serverId;
|
|
136
|
+
/** Sites on this server. */
|
|
137
|
+
readonly sites: SitesCollection;
|
|
138
|
+
/** Databases on this server. */
|
|
139
|
+
readonly databases: DatabasesCollection;
|
|
140
|
+
/** Database users on this server. */
|
|
141
|
+
readonly databaseUsers: DatabaseUsersCollection;
|
|
142
|
+
/** Daemons (background processes) on this server. */
|
|
143
|
+
readonly daemons: DaemonsCollection;
|
|
144
|
+
/** Backup configurations on this server. */
|
|
145
|
+
readonly backups: BackupsCollection;
|
|
146
|
+
/** Scheduled jobs (cron jobs) on this server. */
|
|
147
|
+
readonly scheduledJobs: ScheduledJobsCollection;
|
|
148
|
+
/** Monitors on this server. */
|
|
149
|
+
readonly monitors: MonitorsCollection;
|
|
150
|
+
/** Firewall rules on this server. */
|
|
151
|
+
readonly firewallRules: FirewallRulesCollection;
|
|
152
|
+
/** SSH keys on this server. */
|
|
153
|
+
readonly sshKeys: SshKeysCollection;
|
|
154
|
+
/** Nginx templates on this server. */
|
|
155
|
+
readonly nginxTemplates: NginxTemplatesCollection;
|
|
156
|
+
/** @internal */
|
|
157
|
+
constructor(client: HttpClient, serverId: number);
|
|
158
|
+
/**
|
|
159
|
+
* Access a specific site on this server, with nested resources.
|
|
160
|
+
*
|
|
161
|
+
* @example
|
|
162
|
+
* ```ts
|
|
163
|
+
* // Deploy a site
|
|
164
|
+
* await forge.server(123).site(456).deploy();
|
|
165
|
+
*
|
|
166
|
+
* // Get environment variables
|
|
167
|
+
* const env = await forge.server(123).site(456).env.get();
|
|
168
|
+
* ```
|
|
169
|
+
*/
|
|
170
|
+
site(siteId: number): SiteResource;
|
|
171
|
+
/**
|
|
172
|
+
* Get this server's details.
|
|
173
|
+
*
|
|
174
|
+
* @example
|
|
175
|
+
* ```ts
|
|
176
|
+
* const server = await forge.server(123).get();
|
|
177
|
+
* ```
|
|
178
|
+
*/
|
|
179
|
+
get(): Promise<ForgeServer>;
|
|
180
|
+
/**
|
|
181
|
+
* Reboot this server.
|
|
182
|
+
*
|
|
183
|
+
* @example
|
|
184
|
+
* ```ts
|
|
185
|
+
* await forge.server(123).reboot();
|
|
186
|
+
* ```
|
|
187
|
+
*/
|
|
188
|
+
reboot(): Promise<void>;
|
|
189
|
+
/**
|
|
190
|
+
* Delete this server.
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* ```ts
|
|
194
|
+
* await forge.server(123).delete();
|
|
195
|
+
* ```
|
|
196
|
+
*/
|
|
197
|
+
delete(): Promise<void>;
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=servers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"servers.d.ts","sourceRoot":"","sources":["../../src/resources/servers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import type { CreateSiteData, ForgeSite, HttpClient } from "@studiometa/forge-api";
|
|
2
|
+
import { AsyncPaginatedIterator } from "../pagination.ts";
|
|
3
|
+
import { DeploymentsCollection } from "./deployments.ts";
|
|
4
|
+
import { CertificatesCollection } from "./certificates.ts";
|
|
5
|
+
import { CommandsCollection } from "./commands.ts";
|
|
6
|
+
import { SecurityRulesCollection } from "./security-rules.ts";
|
|
7
|
+
import { RedirectRulesCollection } from "./redirect-rules.ts";
|
|
8
|
+
import { BaseCollection } from "./base.ts";
|
|
9
|
+
/**
|
|
10
|
+
* Options for listing sites.
|
|
11
|
+
*/
|
|
12
|
+
export interface SiteListOptions {
|
|
13
|
+
/** Page number to fetch (1-indexed). */
|
|
14
|
+
page?: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Collection of sites on a server.
|
|
18
|
+
*
|
|
19
|
+
* Access via `forge.server(id).sites`.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* const sites = await forge.server(123).sites.list();
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare class SitesCollection extends BaseCollection {
|
|
27
|
+
private readonly serverId;
|
|
28
|
+
/** @internal */
|
|
29
|
+
constructor(client: HttpClient, serverId: number);
|
|
30
|
+
private get basePath();
|
|
31
|
+
/**
|
|
32
|
+
* List sites on this server.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* const sites = await forge.server(123).sites.list();
|
|
37
|
+
*
|
|
38
|
+
* // Fetch a specific page:
|
|
39
|
+
* const page2 = await forge.server(123).sites.list({ page: 2 });
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
list(options?: SiteListOptions): Promise<ForgeSite[]>;
|
|
43
|
+
/**
|
|
44
|
+
* Iterate over all sites across all pages.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```ts
|
|
48
|
+
* for await (const site of forge.server(123).sites.all()) {
|
|
49
|
+
* console.log(site);
|
|
50
|
+
* }
|
|
51
|
+
*
|
|
52
|
+
* // Or collect all at once:
|
|
53
|
+
* const sites = await forge.server(123).sites.all().toArray();
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
all(options?: Omit<SiteListOptions, "page">): AsyncPaginatedIterator<ForgeSite>;
|
|
57
|
+
/**
|
|
58
|
+
* Get a specific site by ID.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```ts
|
|
62
|
+
* const site = await forge.server(123).sites.get(456);
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
get(siteId: number): Promise<ForgeSite>;
|
|
66
|
+
/**
|
|
67
|
+
* Create a new site on this server.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```ts
|
|
71
|
+
* const site = await forge.server(123).sites.create({
|
|
72
|
+
* domain: 'example.com',
|
|
73
|
+
* project_type: 'php',
|
|
74
|
+
* directory: '/public',
|
|
75
|
+
* });
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
create(data: CreateSiteData): Promise<ForgeSite>;
|
|
79
|
+
/**
|
|
80
|
+
* Update a site.
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```ts
|
|
84
|
+
* await forge.server(123).sites.update(456, { directory: '/public' });
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
update(siteId: number, data: Partial<CreateSiteData>): Promise<ForgeSite>;
|
|
88
|
+
/**
|
|
89
|
+
* Delete a site.
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* ```ts
|
|
93
|
+
* await forge.server(123).sites.delete(456);
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
delete(siteId: number): Promise<void>;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* A specific site with nested resources and actions.
|
|
100
|
+
*
|
|
101
|
+
* Access via `forge.server(id).site(id)`.
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```ts
|
|
105
|
+
* // Deploy
|
|
106
|
+
* await forge.server(123).site(456).deploy();
|
|
107
|
+
*
|
|
108
|
+
* // Get environment
|
|
109
|
+
* const env = await forge.server(123).site(456).env.get();
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
export declare class SiteResource extends BaseCollection {
|
|
113
|
+
private readonly serverId;
|
|
114
|
+
private readonly siteId;
|
|
115
|
+
/** Deployments for this site. */
|
|
116
|
+
readonly deployments: DeploymentsCollection;
|
|
117
|
+
/** SSL certificates for this site. */
|
|
118
|
+
readonly certificates: CertificatesCollection;
|
|
119
|
+
/** Environment variables for this site. */
|
|
120
|
+
readonly env: SiteEnvResource;
|
|
121
|
+
/** Nginx configuration for this site. */
|
|
122
|
+
readonly nginx: SiteNginxResource;
|
|
123
|
+
/** Commands run on this site. */
|
|
124
|
+
readonly commands: CommandsCollection;
|
|
125
|
+
/** Security rules for this site. */
|
|
126
|
+
readonly securityRules: SecurityRulesCollection;
|
|
127
|
+
/** Redirect rules for this site. */
|
|
128
|
+
readonly redirectRules: RedirectRulesCollection;
|
|
129
|
+
/** @internal */
|
|
130
|
+
constructor(client: HttpClient, serverId: number, siteId: number);
|
|
131
|
+
private get basePath();
|
|
132
|
+
/**
|
|
133
|
+
* Get this site's details.
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```ts
|
|
137
|
+
* const site = await forge.server(123).site(456).get();
|
|
138
|
+
* ```
|
|
139
|
+
*/
|
|
140
|
+
get(): Promise<ForgeSite>;
|
|
141
|
+
/**
|
|
142
|
+
* Deploy this site.
|
|
143
|
+
*
|
|
144
|
+
* @example
|
|
145
|
+
* ```ts
|
|
146
|
+
* await forge.server(123).site(456).deploy();
|
|
147
|
+
* ```
|
|
148
|
+
*/
|
|
149
|
+
deploy(): Promise<void>;
|
|
150
|
+
/**
|
|
151
|
+
* Delete this site.
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* ```ts
|
|
155
|
+
* await forge.server(123).site(456).delete();
|
|
156
|
+
* ```
|
|
157
|
+
*/
|
|
158
|
+
delete(): Promise<void>;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Environment variables for a site.
|
|
162
|
+
*
|
|
163
|
+
* @example
|
|
164
|
+
* ```ts
|
|
165
|
+
* const env = await forge.server(123).site(456).env.get();
|
|
166
|
+
* await forge.server(123).site(456).env.update('APP_ENV=production\n...');
|
|
167
|
+
* ```
|
|
168
|
+
*/
|
|
169
|
+
export declare class SiteEnvResource extends BaseCollection {
|
|
170
|
+
private readonly serverId;
|
|
171
|
+
private readonly siteId;
|
|
172
|
+
/** @internal */
|
|
173
|
+
constructor(client: HttpClient, serverId: number, siteId: number);
|
|
174
|
+
private get basePath();
|
|
175
|
+
/**
|
|
176
|
+
* Get the environment file content.
|
|
177
|
+
*
|
|
178
|
+
* @returns The .env file content as a string.
|
|
179
|
+
*/
|
|
180
|
+
get(): Promise<string>;
|
|
181
|
+
/**
|
|
182
|
+
* Update the environment file content.
|
|
183
|
+
*
|
|
184
|
+
* @param content The full .env file content.
|
|
185
|
+
*/
|
|
186
|
+
update(content: string): Promise<void>;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Nginx configuration for a site.
|
|
190
|
+
*
|
|
191
|
+
* @example
|
|
192
|
+
* ```ts
|
|
193
|
+
* const config = await forge.server(123).site(456).nginx.get();
|
|
194
|
+
* await forge.server(123).site(456).nginx.update('server { ... }');
|
|
195
|
+
* ```
|
|
196
|
+
*/
|
|
197
|
+
export declare class SiteNginxResource extends BaseCollection {
|
|
198
|
+
private readonly serverId;
|
|
199
|
+
private readonly siteId;
|
|
200
|
+
/** @internal */
|
|
201
|
+
constructor(client: HttpClient, serverId: number, siteId: number);
|
|
202
|
+
private get basePath();
|
|
203
|
+
/**
|
|
204
|
+
* Get the Nginx configuration.
|
|
205
|
+
*
|
|
206
|
+
* @returns The Nginx config content as a string.
|
|
207
|
+
*/
|
|
208
|
+
get(): Promise<string>;
|
|
209
|
+
/**
|
|
210
|
+
* Update the Nginx configuration.
|
|
211
|
+
*
|
|
212
|
+
* @param content The full Nginx config content.
|
|
213
|
+
*/
|
|
214
|
+
update(content: string): Promise<void>;
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=sites.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sites.d.ts","sourceRoot":"","sources":["../../src/resources/sites.ts"],"names":[],"mappings":"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"}
|