@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.
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,84 @@
1
+ import type { CreateDatabaseUserData, ForgeDatabaseUser, HttpClient } from "@studiometa/forge-api";
2
+ import { BaseCollection } from "./base.ts";
3
+ import { AsyncPaginatedIterator } from "../pagination.ts";
4
+ /**
5
+ * Options for listing database users.
6
+ */
7
+ export interface DatabaseUserListOptions {
8
+ /** Page number to fetch (1-indexed). */
9
+ page?: number;
10
+ }
11
+ /**
12
+ * Collection of database users on a server.
13
+ *
14
+ * Access via `forge.server(id).databaseUsers`.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * const users = await forge.server(123).databaseUsers.list();
19
+ * ```
20
+ */
21
+ export declare class DatabaseUsersCollection extends BaseCollection {
22
+ private readonly serverId;
23
+ /** @internal */
24
+ constructor(client: HttpClient, serverId: number);
25
+ private get basePath();
26
+ /**
27
+ * List database users on this server.
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * const users = await forge.server(123).databaseUsers.list();
32
+ *
33
+ * // Fetch a specific page:
34
+ * const page2 = await forge.server(123).databaseUsers.list({ page: 2 });
35
+ * ```
36
+ */
37
+ list(options?: DatabaseUserListOptions): Promise<ForgeDatabaseUser[]>;
38
+ /**
39
+ * Iterate over all database users across all pages.
40
+ *
41
+ * @example
42
+ * ```ts
43
+ * for await (const user of forge.server(123).databaseUsers.all()) {
44
+ * console.log(user);
45
+ * }
46
+ *
47
+ * // Or collect all at once:
48
+ * const users = await forge.server(123).databaseUsers.all().toArray();
49
+ * ```
50
+ */
51
+ all(options?: Omit<DatabaseUserListOptions, "page">): AsyncPaginatedIterator<ForgeDatabaseUser>;
52
+ /**
53
+ * Get a specific database user.
54
+ *
55
+ * @example
56
+ * ```ts
57
+ * const user = await forge.server(123).databaseUsers.get(789);
58
+ * ```
59
+ */
60
+ get(userId: number): Promise<ForgeDatabaseUser>;
61
+ /**
62
+ * Create a new database user.
63
+ *
64
+ * @example
65
+ * ```ts
66
+ * const user = await forge.server(123).databaseUsers.create({
67
+ * name: 'forge',
68
+ * password: 'secret',
69
+ * databases: [1, 2],
70
+ * });
71
+ * ```
72
+ */
73
+ create(data: CreateDatabaseUserData): Promise<ForgeDatabaseUser>;
74
+ /**
75
+ * Delete a database user.
76
+ *
77
+ * @example
78
+ * ```ts
79
+ * await forge.server(123).databaseUsers.delete(789);
80
+ * ```
81
+ */
82
+ delete(userId: number): Promise<void>;
83
+ }
84
+ //# sourceMappingURL=database-users.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-users.d.ts","sourceRoot":"","sources":["../../src/resources/database-users.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EAGtB,iBAAiB,EACjB,UAAU,EACX,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,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 { CreateDatabaseData, ForgeDatabase, HttpClient } from "@studiometa/forge-api";
2
+ import { BaseCollection } from "./base.ts";
3
+ import { AsyncPaginatedIterator } from "../pagination.ts";
4
+ /**
5
+ * Options for listing databases.
6
+ */
7
+ export interface DatabaseListOptions {
8
+ /** Page number to fetch (1-indexed). */
9
+ page?: number;
10
+ }
11
+ /**
12
+ * Collection of databases on a server.
13
+ *
14
+ * Access via `forge.server(id).databases`.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * const dbs = await forge.server(123).databases.list();
19
+ * ```
20
+ */
21
+ export declare class DatabasesCollection extends BaseCollection {
22
+ private readonly serverId;
23
+ /** @internal */
24
+ constructor(client: HttpClient, serverId: number);
25
+ private get basePath();
26
+ /**
27
+ * List databases on this server.
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * const dbs = await forge.server(123).databases.list();
32
+ *
33
+ * // Fetch a specific page:
34
+ * const page2 = await forge.server(123).databases.list({ page: 2 });
35
+ * ```
36
+ */
37
+ list(options?: DatabaseListOptions): Promise<ForgeDatabase[]>;
38
+ /**
39
+ * Iterate over all databases across all pages.
40
+ *
41
+ * @example
42
+ * ```ts
43
+ * for await (const db of forge.server(123).databases.all()) {
44
+ * console.log(db);
45
+ * }
46
+ *
47
+ * // Or collect all at once:
48
+ * const dbs = await forge.server(123).databases.all().toArray();
49
+ * ```
50
+ */
51
+ all(options?: Omit<DatabaseListOptions, "page">): AsyncPaginatedIterator<ForgeDatabase>;
52
+ /**
53
+ * Get a specific database.
54
+ *
55
+ * @example
56
+ * ```ts
57
+ * const db = await forge.server(123).databases.get(789);
58
+ * ```
59
+ */
60
+ get(databaseId: number): Promise<ForgeDatabase>;
61
+ /**
62
+ * Create a new database.
63
+ *
64
+ * @example
65
+ * ```ts
66
+ * const db = await forge.server(123).databases.create({
67
+ * name: 'myapp',
68
+ * user: 'admin',
69
+ * password: 'secret',
70
+ * });
71
+ * ```
72
+ */
73
+ create(data: CreateDatabaseData): Promise<ForgeDatabase>;
74
+ /**
75
+ * Delete a database.
76
+ *
77
+ * @example
78
+ * ```ts
79
+ * await forge.server(123).databases.delete(789);
80
+ * ```
81
+ */
82
+ delete(databaseId: number): Promise<void>;
83
+ }
84
+ //# sourceMappingURL=databases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"databases.d.ts","sourceRoot":"","sources":["../../src/resources/databases.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,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,mBAAmB;IAClC,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,qBAAa,mBAAoB,SAAQ,cAAc;IAInD,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,mBAAwB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAMvE;;;;;;;;;;;;OAYG;IACH,GAAG,CAAC,OAAO,GAAE,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAM,GAAG,sBAAsB,CAAC,aAAa,CAAC;IAI3F;;;;;;;OAOG;IACG,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAKrD;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC;IAK9D;;;;;;;OAOG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGhD"}
@@ -0,0 +1,90 @@
1
+ import type { ForgeDeployment, HttpClient } from "@studiometa/forge-api";
2
+ import { BaseCollection } from "./base.ts";
3
+ import { AsyncPaginatedIterator } from "../pagination.ts";
4
+ /**
5
+ * Options for listing deployments.
6
+ */
7
+ export interface DeploymentListOptions {
8
+ /** Page number to fetch (1-indexed). */
9
+ page?: number;
10
+ }
11
+ /**
12
+ * Collection of deployments for a site.
13
+ *
14
+ * Access via `forge.server(id).site(id).deployments`.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * const deployments = await forge.server(123).site(456).deployments.list();
19
+ * ```
20
+ */
21
+ export declare class DeploymentsCollection 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 deployments for this site.
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * const deployments = await forge.server(123).site(456).deployments.list();
33
+ *
34
+ * // Fetch a specific page:
35
+ * const page2 = await forge.server(123).site(456).deployments.list({ page: 2 });
36
+ * ```
37
+ */
38
+ list(options?: DeploymentListOptions): Promise<ForgeDeployment[]>;
39
+ /**
40
+ * Iterate over all deployments across all pages.
41
+ *
42
+ * @example
43
+ * ```ts
44
+ * for await (const deployment of forge.server(123).site(456).deployments.all()) {
45
+ * console.log(deployment);
46
+ * }
47
+ *
48
+ * // Or collect all at once:
49
+ * const deployments = await forge.server(123).site(456).deployments.all().toArray();
50
+ * ```
51
+ */
52
+ all(options?: Omit<DeploymentListOptions, "page">): AsyncPaginatedIterator<ForgeDeployment>;
53
+ /**
54
+ * Get a specific deployment.
55
+ *
56
+ * @example
57
+ * ```ts
58
+ * const deployment = await forge.server(123).site(456).deployments.get(789);
59
+ * ```
60
+ */
61
+ get(deploymentId: number): Promise<ForgeDeployment>;
62
+ /**
63
+ * Get the output of a deployment.
64
+ *
65
+ * @example
66
+ * ```ts
67
+ * const output = await forge.server(123).site(456).deployments.output(789);
68
+ * ```
69
+ */
70
+ output(deploymentId: number): Promise<string>;
71
+ /**
72
+ * Get the deployment script.
73
+ *
74
+ * @example
75
+ * ```ts
76
+ * const script = await forge.server(123).site(456).deployments.script();
77
+ * ```
78
+ */
79
+ script(): Promise<string>;
80
+ /**
81
+ * Update the deployment script.
82
+ *
83
+ * @example
84
+ * ```ts
85
+ * await forge.server(123).site(456).deployments.updateScript('npm run build && ...');
86
+ * ```
87
+ */
88
+ updateScript(content: string): Promise<void>;
89
+ }
90
+ //# sourceMappingURL=deployments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployments.d.ts","sourceRoot":"","sources":["../../src/resources/deployments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,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,qBAAqB;IACpC,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,qBAAa,qBAAsB,SAAQ,cAAc;IAIrD,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,qBAA0B,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAM3E;;;;;;;;;;;;OAYG;IACH,GAAG,CAAC,OAAO,GAAE,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAM,GAAG,sBAAsB,CAAC,eAAe,CAAC;IAI/F;;;;;;;OAOG;IACG,GAAG,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAKzD;;;;;;;OAOG;IACG,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAInD;;;;;;;OAOG;IACG,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAM/B;;;;;;;OAOG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAKnD"}
@@ -0,0 +1,84 @@
1
+ import type { CreateFirewallRuleData, ForgeFirewallRule, HttpClient } from "@studiometa/forge-api";
2
+ import { BaseCollection } from "./base.ts";
3
+ import { AsyncPaginatedIterator } from "../pagination.ts";
4
+ /**
5
+ * Options for listing firewall rules.
6
+ */
7
+ export interface FirewallRuleListOptions {
8
+ /** Page number to fetch (1-indexed). */
9
+ page?: number;
10
+ }
11
+ /**
12
+ * Collection of firewall rules on a server.
13
+ *
14
+ * Access via `forge.server(id).firewallRules`.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * const rules = await forge.server(123).firewallRules.list();
19
+ * ```
20
+ */
21
+ export declare class FirewallRulesCollection extends BaseCollection {
22
+ private readonly serverId;
23
+ /** @internal */
24
+ constructor(client: HttpClient, serverId: number);
25
+ private get basePath();
26
+ /**
27
+ * List firewall rules on this server.
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * const rules = await forge.server(123).firewallRules.list();
32
+ *
33
+ * // Fetch a specific page:
34
+ * const page2 = await forge.server(123).firewallRules.list({ page: 2 });
35
+ * ```
36
+ */
37
+ list(options?: FirewallRuleListOptions): Promise<ForgeFirewallRule[]>;
38
+ /**
39
+ * Iterate over all firewall rules across all pages.
40
+ *
41
+ * @example
42
+ * ```ts
43
+ * for await (const rule of forge.server(123).firewallRules.all()) {
44
+ * console.log(rule);
45
+ * }
46
+ *
47
+ * // Or collect all at once:
48
+ * const rules = await forge.server(123).firewallRules.all().toArray();
49
+ * ```
50
+ */
51
+ all(options?: Omit<FirewallRuleListOptions, "page">): AsyncPaginatedIterator<ForgeFirewallRule>;
52
+ /**
53
+ * Get a specific firewall rule.
54
+ *
55
+ * @example
56
+ * ```ts
57
+ * const rule = await forge.server(123).firewallRules.get(789);
58
+ * ```
59
+ */
60
+ get(ruleId: number): Promise<ForgeFirewallRule>;
61
+ /**
62
+ * Create a new firewall rule.
63
+ *
64
+ * @example
65
+ * ```ts
66
+ * const rule = await forge.server(123).firewallRules.create({
67
+ * name: 'Allow HTTP',
68
+ * port: 80,
69
+ * type: 'allow',
70
+ * });
71
+ * ```
72
+ */
73
+ create(data: CreateFirewallRuleData): Promise<ForgeFirewallRule>;
74
+ /**
75
+ * Delete a firewall rule.
76
+ *
77
+ * @example
78
+ * ```ts
79
+ * await forge.server(123).firewallRules.delete(789);
80
+ * ```
81
+ */
82
+ delete(ruleId: number): Promise<void>;
83
+ }
84
+ //# sourceMappingURL=firewall-rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firewall-rules.d.ts","sourceRoot":"","sources":["../../src/resources/firewall-rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EAGtB,iBAAiB,EACjB,UAAU,EACX,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,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,85 @@
1
+ import type { CreateMonitorData, ForgeMonitor, HttpClient } from "@studiometa/forge-api";
2
+ import { BaseCollection } from "./base.ts";
3
+ import { AsyncPaginatedIterator } from "../pagination.ts";
4
+ /**
5
+ * Options for listing monitors.
6
+ */
7
+ export interface MonitorListOptions {
8
+ /** Page number to fetch (1-indexed). */
9
+ page?: number;
10
+ }
11
+ /**
12
+ * Collection of server monitors.
13
+ *
14
+ * Access via `forge.server(id).monitors`.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * const monitors = await forge.server(123).monitors.list();
19
+ * ```
20
+ */
21
+ export declare class MonitorsCollection extends BaseCollection {
22
+ private readonly serverId;
23
+ /** @internal */
24
+ constructor(client: HttpClient, serverId: number);
25
+ private get basePath();
26
+ /**
27
+ * List monitors on this server.
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * const monitors = await forge.server(123).monitors.list();
32
+ *
33
+ * // Fetch a specific page:
34
+ * const page2 = await forge.server(123).monitors.list({ page: 2 });
35
+ * ```
36
+ */
37
+ list(options?: MonitorListOptions): Promise<ForgeMonitor[]>;
38
+ /**
39
+ * Iterate over all monitors across all pages.
40
+ *
41
+ * @example
42
+ * ```ts
43
+ * for await (const monitor of forge.server(123).monitors.all()) {
44
+ * console.log(monitor);
45
+ * }
46
+ *
47
+ * // Or collect all at once:
48
+ * const monitors = await forge.server(123).monitors.all().toArray();
49
+ * ```
50
+ */
51
+ all(options?: Omit<MonitorListOptions, "page">): AsyncPaginatedIterator<ForgeMonitor>;
52
+ /**
53
+ * Get a specific monitor.
54
+ *
55
+ * @example
56
+ * ```ts
57
+ * const monitor = await forge.server(123).monitors.get(789);
58
+ * ```
59
+ */
60
+ get(monitorId: number): Promise<ForgeMonitor>;
61
+ /**
62
+ * Create a new monitor.
63
+ *
64
+ * @example
65
+ * ```ts
66
+ * const monitor = await forge.server(123).monitors.create({
67
+ * type: 'cpu_load',
68
+ * operator: 'gte',
69
+ * threshold: 80,
70
+ * minutes: 5,
71
+ * });
72
+ * ```
73
+ */
74
+ create(data: CreateMonitorData): Promise<ForgeMonitor>;
75
+ /**
76
+ * Delete a monitor.
77
+ *
78
+ * @example
79
+ * ```ts
80
+ * await forge.server(123).monitors.delete(789);
81
+ * ```
82
+ */
83
+ delete(monitorId: number): Promise<void>;
84
+ }
85
+ //# sourceMappingURL=monitors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitors.d.ts","sourceRoot":"","sources":["../../src/resources/monitors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,YAAY,EACZ,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,kBAAkB;IACjC,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,qBAAa,kBAAmB,SAAQ,cAAc;IAIlD,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,kBAAuB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAMrE;;;;;;;;;;;;OAYG;IACH,GAAG,CAAC,OAAO,GAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAM,GAAG,sBAAsB,CAAC,YAAY,CAAC;IAIzF;;;;;;;OAOG;IACG,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAKnD;;;;;;;;;;;;OAYG;IACG,MAAM,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IAK5D;;;;;;;OAOG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG/C"}
@@ -0,0 +1,95 @@
1
+ import type { CreateNginxTemplateData, ForgeNginxTemplate, HttpClient } from "@studiometa/forge-api";
2
+ import { BaseCollection } from "./base.ts";
3
+ import { AsyncPaginatedIterator } from "../pagination.ts";
4
+ /**
5
+ * Options for listing Nginx templates.
6
+ */
7
+ export interface NginxTemplateListOptions {
8
+ /** Page number to fetch (1-indexed). */
9
+ page?: number;
10
+ }
11
+ /**
12
+ * Collection of Nginx templates on a server.
13
+ *
14
+ * Access via `forge.server(id).nginxTemplates`.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * const templates = await forge.server(123).nginxTemplates.list();
19
+ * ```
20
+ */
21
+ export declare class NginxTemplatesCollection extends BaseCollection {
22
+ private readonly serverId;
23
+ /** @internal */
24
+ constructor(client: HttpClient, serverId: number);
25
+ private get basePath();
26
+ /**
27
+ * List Nginx templates on this server.
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * const templates = await forge.server(123).nginxTemplates.list();
32
+ *
33
+ * // Fetch a specific page:
34
+ * const page2 = await forge.server(123).nginxTemplates.list({ page: 2 });
35
+ * ```
36
+ */
37
+ list(options?: NginxTemplateListOptions): Promise<ForgeNginxTemplate[]>;
38
+ /**
39
+ * Iterate over all Nginx templates across all pages.
40
+ *
41
+ * @example
42
+ * ```ts
43
+ * for await (const template of forge.server(123).nginxTemplates.all()) {
44
+ * console.log(template);
45
+ * }
46
+ *
47
+ * // Or collect all at once:
48
+ * const templates = await forge.server(123).nginxTemplates.all().toArray();
49
+ * ```
50
+ */
51
+ all(options?: Omit<NginxTemplateListOptions, "page">): AsyncPaginatedIterator<ForgeNginxTemplate>;
52
+ /**
53
+ * Get a specific Nginx template.
54
+ *
55
+ * @example
56
+ * ```ts
57
+ * const template = await forge.server(123).nginxTemplates.get(789);
58
+ * ```
59
+ */
60
+ get(templateId: number): Promise<ForgeNginxTemplate>;
61
+ /**
62
+ * Create a new Nginx template.
63
+ *
64
+ * @example
65
+ * ```ts
66
+ * const template = await forge.server(123).nginxTemplates.create({
67
+ * name: 'Laravel Template',
68
+ * content: 'server { ... }',
69
+ * });
70
+ * ```
71
+ */
72
+ create(data: CreateNginxTemplateData): Promise<ForgeNginxTemplate>;
73
+ /**
74
+ * Update an existing Nginx template.
75
+ *
76
+ * @example
77
+ * ```ts
78
+ * const template = await forge.server(123).nginxTemplates.update(789, {
79
+ * name: 'Updated Template',
80
+ * content: 'server { ... }',
81
+ * });
82
+ * ```
83
+ */
84
+ update(templateId: number, data: Partial<CreateNginxTemplateData>): Promise<ForgeNginxTemplate>;
85
+ /**
86
+ * Delete a Nginx template.
87
+ *
88
+ * @example
89
+ * ```ts
90
+ * await forge.server(123).nginxTemplates.delete(789);
91
+ * ```
92
+ */
93
+ delete(templateId: number): Promise<void>;
94
+ }
95
+ //# sourceMappingURL=nginx-templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nginx-templates.d.ts","sourceRoot":"","sources":["../../src/resources/nginx-templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,kBAAkB,EAClB,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,wBAAwB;IACvC,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,qBAAa,wBAAyB,SAAQ,cAAc;IAIxD,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,wBAA6B,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAMjF;;;;;;;;;;;;OAYG;IACH,GAAG,CACD,OAAO,GAAE,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAM,GACnD,sBAAsB,CAAC,kBAAkB,CAAC;IAM7C;;;;;;;OAOG;IACG,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAK1D;;;;;;;;;;OAUG;IACG,MAAM,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAKxE;;;;;;;;;;OAUG;IACG,MAAM,CACV,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,OAAO,CAAC,uBAAuB,CAAC,GACrC,OAAO,CAAC,kBAAkB,CAAC;IAQ9B;;;;;;;OAOG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGhD"}
@@ -0,0 +1,99 @@
1
+ import type { CreateRecipeData, ForgeRecipe, HttpClient } from "@studiometa/forge-api";
2
+ import { BaseCollection } from "./base.ts";
3
+ import { AsyncPaginatedIterator } from "../pagination.ts";
4
+ /**
5
+ * Options for listing recipes.
6
+ */
7
+ export interface RecipeListOptions {
8
+ /** Page number to fetch (1-indexed). */
9
+ page?: number;
10
+ }
11
+ /**
12
+ * Options for running a recipe.
13
+ */
14
+ export interface RunRecipeOptions {
15
+ /** Server IDs to run the recipe on. */
16
+ servers: number[];
17
+ }
18
+ /**
19
+ * Collection of recipes.
20
+ *
21
+ * Access via `forge.recipes`.
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * const recipes = await forge.recipes.list();
26
+ * ```
27
+ */
28
+ export declare class RecipesCollection extends BaseCollection {
29
+ /** @internal */
30
+ constructor(client: HttpClient);
31
+ private get basePath();
32
+ /**
33
+ * List all recipes.
34
+ *
35
+ * @example
36
+ * ```ts
37
+ * const recipes = await forge.recipes.list();
38
+ *
39
+ * // Fetch a specific page:
40
+ * const page2 = await forge.recipes.list({ page: 2 });
41
+ * ```
42
+ */
43
+ list(options?: RecipeListOptions): Promise<ForgeRecipe[]>;
44
+ /**
45
+ * Iterate over all recipes across all pages.
46
+ *
47
+ * @example
48
+ * ```ts
49
+ * for await (const recipe of forge.recipes.all()) {
50
+ * console.log(recipe);
51
+ * }
52
+ *
53
+ * // Or collect all at once:
54
+ * const recipes = await forge.recipes.all().toArray();
55
+ * ```
56
+ */
57
+ all(options?: Omit<RecipeListOptions, "page">): AsyncPaginatedIterator<ForgeRecipe>;
58
+ /**
59
+ * Get a specific recipe.
60
+ *
61
+ * @example
62
+ * ```ts
63
+ * const recipe = await forge.recipes.get(789);
64
+ * ```
65
+ */
66
+ get(recipeId: number): Promise<ForgeRecipe>;
67
+ /**
68
+ * Create a new recipe.
69
+ *
70
+ * @example
71
+ * ```ts
72
+ * const recipe = await forge.recipes.create({
73
+ * name: 'Install Node',
74
+ * user: 'root',
75
+ * script: 'curl -fsSL https://deb.nodesource.com/setup_20.x | bash -',
76
+ * });
77
+ * ```
78
+ */
79
+ create(data: CreateRecipeData): Promise<ForgeRecipe>;
80
+ /**
81
+ * Delete a recipe.
82
+ *
83
+ * @example
84
+ * ```ts
85
+ * await forge.recipes.delete(789);
86
+ * ```
87
+ */
88
+ delete(recipeId: number): Promise<void>;
89
+ /**
90
+ * Run a recipe on one or more servers.
91
+ *
92
+ * @example
93
+ * ```ts
94
+ * await forge.recipes.run(789, { servers: [123, 456] });
95
+ * ```
96
+ */
97
+ run(recipeId: number, options: RunRecipeOptions): Promise<void>;
98
+ }
99
+ //# sourceMappingURL=recipes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipes.d.ts","sourceRoot":"","sources":["../../src/resources/recipes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACX,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,iBAAiB;IAChC,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uCAAuC;IACvC,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,qBAAa,iBAAkB,SAAQ,cAAc;IACnD,gBAAgB;gBACJ,MAAM,EAAE,UAAU;IAI9B,OAAO,KAAK,QAAQ,GAEnB;IAED;;;;;;;;;;OAUG;IACG,IAAI,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAMnE;;;;;;;;;;;;OAYG;IACH,GAAG,CAAC,OAAO,GAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAM,GAAG,sBAAsB,CAAC,WAAW,CAAC;IAIvF;;;;;;;OAOG;IACG,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAKjD;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IAK1D;;;;;;;OAOG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C;;;;;;;OAOG;IACG,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CAGtE"}