@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.
Files changed (50) hide show
  1. package/README.md +178 -0
  2. package/dist/forge.d.ts +93 -0
  3. package/dist/forge.d.ts.map +1 -0
  4. package/dist/index.d.ts +40 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +2049 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/pagination.d.ts +34 -0
  9. package/dist/pagination.d.ts.map +1 -0
  10. package/dist/resources/backups.d.ts +86 -0
  11. package/dist/resources/backups.d.ts.map +1 -0
  12. package/dist/resources/base.d.ts +10 -0
  13. package/dist/resources/base.d.ts.map +1 -0
  14. package/dist/resources/certificates.d.ts +102 -0
  15. package/dist/resources/certificates.d.ts.map +1 -0
  16. package/dist/resources/commands.d.ts +74 -0
  17. package/dist/resources/commands.d.ts.map +1 -0
  18. package/dist/resources/daemons.d.ts +92 -0
  19. package/dist/resources/daemons.d.ts.map +1 -0
  20. package/dist/resources/database-users.d.ts +84 -0
  21. package/dist/resources/database-users.d.ts.map +1 -0
  22. package/dist/resources/databases.d.ts +84 -0
  23. package/dist/resources/databases.d.ts.map +1 -0
  24. package/dist/resources/deployments.d.ts +90 -0
  25. package/dist/resources/deployments.d.ts.map +1 -0
  26. package/dist/resources/firewall-rules.d.ts +84 -0
  27. package/dist/resources/firewall-rules.d.ts.map +1 -0
  28. package/dist/resources/monitors.d.ts +85 -0
  29. package/dist/resources/monitors.d.ts.map +1 -0
  30. package/dist/resources/nginx-templates.d.ts +95 -0
  31. package/dist/resources/nginx-templates.d.ts.map +1 -0
  32. package/dist/resources/recipes.d.ts +99 -0
  33. package/dist/resources/recipes.d.ts.map +1 -0
  34. package/dist/resources/redirect-rules.d.ts +85 -0
  35. package/dist/resources/redirect-rules.d.ts.map +1 -0
  36. package/dist/resources/scheduled-jobs.d.ts +84 -0
  37. package/dist/resources/scheduled-jobs.d.ts.map +1 -0
  38. package/dist/resources/security-rules.d.ts +85 -0
  39. package/dist/resources/security-rules.d.ts.map +1 -0
  40. package/dist/resources/servers.d.ts +199 -0
  41. package/dist/resources/servers.d.ts.map +1 -0
  42. package/dist/resources/sites.d.ts +216 -0
  43. package/dist/resources/sites.d.ts.map +1 -0
  44. package/dist/resources/ssh-keys.d.ts +83 -0
  45. package/dist/resources/ssh-keys.d.ts.map +1 -0
  46. package/dist/test-utils.d.ts +27 -0
  47. package/dist/test-utils.d.ts.map +1 -0
  48. package/dist/test-utils.js +38 -0
  49. package/dist/test-utils.js.map +1 -0
  50. 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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"}