@studiometa/forge-sdk 0.2.5 → 0.4.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 +13 -11
  2. package/dist/forge.d.ts +13 -8
  3. package/dist/forge.d.ts.map +1 -1
  4. package/dist/index.d.ts +4 -2
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +378 -355
  7. package/dist/index.js.map +1 -1
  8. package/dist/pagination.d.ts +8 -5
  9. package/dist/pagination.d.ts.map +1 -1
  10. package/dist/resources/backups.d.ts +18 -10
  11. package/dist/resources/backups.d.ts.map +1 -1
  12. package/dist/resources/base.d.ts +3 -2
  13. package/dist/resources/base.d.ts.map +1 -1
  14. package/dist/resources/certificates.d.ts +22 -59
  15. package/dist/resources/certificates.d.ts.map +1 -1
  16. package/dist/resources/commands.d.ts +18 -10
  17. package/dist/resources/commands.d.ts.map +1 -1
  18. package/dist/resources/daemons.d.ts +18 -10
  19. package/dist/resources/daemons.d.ts.map +1 -1
  20. package/dist/resources/database-users.d.ts +18 -10
  21. package/dist/resources/database-users.d.ts.map +1 -1
  22. package/dist/resources/databases.d.ts +18 -10
  23. package/dist/resources/databases.d.ts.map +1 -1
  24. package/dist/resources/deployments.d.ts +15 -9
  25. package/dist/resources/deployments.d.ts.map +1 -1
  26. package/dist/resources/firewall-rules.d.ts +18 -10
  27. package/dist/resources/firewall-rules.d.ts.map +1 -1
  28. package/dist/resources/monitors.d.ts +18 -10
  29. package/dist/resources/monitors.d.ts.map +1 -1
  30. package/dist/resources/nginx-templates.d.ts +21 -11
  31. package/dist/resources/nginx-templates.d.ts.map +1 -1
  32. package/dist/resources/recipes.d.ts +17 -10
  33. package/dist/resources/recipes.d.ts.map +1 -1
  34. package/dist/resources/redirect-rules.d.ts +18 -10
  35. package/dist/resources/redirect-rules.d.ts.map +1 -1
  36. package/dist/resources/scheduled-jobs.d.ts +18 -10
  37. package/dist/resources/scheduled-jobs.d.ts.map +1 -1
  38. package/dist/resources/security-rules.d.ts +18 -10
  39. package/dist/resources/security-rules.d.ts.map +1 -1
  40. package/dist/resources/servers.d.ts +25 -13
  41. package/dist/resources/servers.d.ts.map +1 -1
  42. package/dist/resources/sites.d.ts +29 -17
  43. package/dist/resources/sites.d.ts.map +1 -1
  44. package/dist/resources/ssh-keys.d.ts +18 -10
  45. package/dist/resources/ssh-keys.d.ts.map +1 -1
  46. package/dist/test-utils.d.ts +12 -3
  47. package/dist/test-utils.d.ts.map +1 -1
  48. package/dist/test-utils.js +16 -5
  49. package/dist/test-utils.js.map +1 -1
  50. package/package.json +2 -2
package/README.md CHANGED
@@ -18,7 +18,7 @@ npm install @studiometa/forge-sdk
18
18
  ```typescript
19
19
  import { Forge } from "@studiometa/forge-sdk";
20
20
 
21
- const forge = new Forge("your-api-token");
21
+ const forge = new Forge("your-api-token", "your-org-slug");
22
22
 
23
23
  // List all servers
24
24
  const servers = await forge.servers.list();
@@ -153,15 +153,17 @@ forge.server(id).site(siteId).deployments.script(); // Get deploy script
153
153
  forge.server(id).site(siteId).deployments.updateScript("npm run build");
154
154
  ```
155
155
 
156
- ### Certificates
156
+ ### Certificates (per-domain in v2)
157
157
 
158
158
  ```typescript
159
- forge.server(id).site(siteId).certificates.list();
160
- forge.server(id).site(siteId).certificates.get(certId);
161
- forge.server(id).site(siteId).certificates.create({ type: "new", domain: "example.com" });
162
- forge.server(id).site(siteId).certificates.letsEncrypt(["example.com"]);
163
- forge.server(id).site(siteId).certificates.activate(certId);
164
- forge.server(id).site(siteId).certificates.delete(certId);
159
+ // Get certificate for a domain
160
+ forge.server(id).site(siteId).certificates.get(domainId);
161
+ // Create a certificate
162
+ forge.server(id).site(siteId).certificates.create(domainId, { type: "letsencrypt" });
163
+ // Activate a certificate
164
+ forge.server(id).site(siteId).certificates.activate(domainId);
165
+ // Delete a certificate
166
+ forge.server(id).site(siteId).certificates.delete(domainId);
165
167
  ```
166
168
 
167
169
  ### Databases
@@ -208,12 +210,12 @@ The SDK supports dependency injection for testing:
208
210
 
209
211
  ```typescript
210
212
  const mockFetch = async (url, init) => {
211
- return new Response(JSON.stringify({ servers: [] }), {
213
+ return new Response(JSON.stringify({ data: [] }), {
212
214
  headers: { "content-type": "application/json" },
213
215
  });
214
216
  };
215
217
 
216
- const forge = new Forge("test-token", { fetch: mockFetch });
218
+ const forge = new Forge("test-token", "test-org", { fetch: mockFetch });
217
219
  const servers = await forge.servers.list(); // Uses mock fetch
218
220
  ```
219
221
 
@@ -222,7 +224,7 @@ const servers = await forge.servers.list(); // Uses mock fetch
222
224
  ```typescript
223
225
  import { Forge } from "@studiometa/forge-sdk";
224
226
 
225
- const forge = new Forge(process.env.FORGE_API_TOKEN);
227
+ const forge = new Forge(process.env.FORGE_API_TOKEN, process.env.FORGE_ORG);
226
228
 
227
229
  // Deploy after successful CI using resolve() to find the server and site by name
228
230
  const serverResult = await forge.servers.resolve("prod");
package/dist/forge.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { ForgeOptions, ForgeUser } from "@studiometa/forge-api";
1
+ import type { ForgeOptions, UserAttributes } from "@studiometa/forge-api";
2
2
  import { HttpClient } from "@studiometa/forge-api";
3
3
  import { ServersCollection, ServerResource } from "./resources/servers.ts";
4
4
  import { RecipesCollection } from "./resources/recipes.ts";
@@ -12,7 +12,7 @@ import { RecipesCollection } from "./resources/recipes.ts";
12
12
  * ```ts
13
13
  * import { Forge } from '@studiometa/forge-sdk';
14
14
  *
15
- * const forge = new Forge('your-api-token');
15
+ * const forge = new Forge('your-api-token', 'my-org');
16
16
  *
17
17
  * // List all servers
18
18
  * const servers = await forge.servers.list();
@@ -30,6 +30,8 @@ import { RecipesCollection } from "./resources/recipes.ts";
30
30
  export declare class Forge {
31
31
  /** @internal */
32
32
  readonly client: HttpClient;
33
+ /** The organization slug used for v2 API URL prefixing. */
34
+ readonly organizationSlug: string;
33
35
  /** Server operations (list, get, create, update, delete, reboot). */
34
36
  readonly servers: ServersCollection;
35
37
  /** Recipe operations (list, get, create, delete, run). */
@@ -38,23 +40,24 @@ export declare class Forge {
38
40
  * Create a new Forge SDK instance.
39
41
  *
40
42
  * @param token Your Laravel Forge API token.
43
+ * @param organizationSlug Your organization slug (used for v2 API URLs).
41
44
  * @param options Optional configuration (custom fetch, base URL, rate limiting).
42
45
  *
43
46
  * @example
44
47
  * ```ts
45
48
  * // Basic usage
46
- * const forge = new Forge('your-api-token');
49
+ * const forge = new Forge('your-api-token', 'my-org');
47
50
  *
48
51
  * // With custom options
49
- * const forge = new Forge('your-api-token', {
50
- * baseUrl: 'https://custom-forge-instance.com/api/v1',
52
+ * const forge = new Forge('your-api-token', 'my-org', {
53
+ * baseUrl: 'https://forge.laravel.com/api/v2',
51
54
  * });
52
55
  *
53
56
  * // With mock fetch for testing
54
- * const forge = new Forge('test-token', { fetch: mockFetch });
57
+ * const forge = new Forge('test-token', 'test-org', { fetch: mockFetch });
55
58
  * ```
56
59
  */
57
- constructor(token: string, options?: ForgeOptions);
60
+ constructor(token: string, organizationSlug: string, options?: ForgeOptions);
58
61
  /**
59
62
  * Access a specific server by ID, with nested resources.
60
63
  *
@@ -88,6 +91,8 @@ export declare class Forge {
88
91
  * console.log(user.name, user.email);
89
92
  * ```
90
93
  */
91
- user(): Promise<ForgeUser>;
94
+ user(): Promise<UserAttributes & {
95
+ id: number;
96
+ }>;
92
97
  }
93
98
  //# sourceMappingURL=forge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"forge.d.ts","sourceRoot":"","sources":["../src/forge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAgB,MAAM,uBAAuB,CAAC;AAEnF,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,KAAK;IAChB,gBAAgB;IAChB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAE5B,qEAAqE;IACrE,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IAEpC,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IAEpC;;;;;;;;;;;;;;;;;;;OAmBG;gBACS,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;IAMjD;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;IAIxC;;;;;;;;OAQG;IACG,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC;CAIjC"}
1
+ {"version":3,"file":"forge.d.ts","sourceRoot":"","sources":["../src/forge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAmB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE3F,OAAO,EAAE,UAAU,EAAkB,MAAM,uBAAuB,CAAC;AAEnE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,KAAK;IAChB,gBAAgB;IAChB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAE5B,2DAA2D;IAC3D,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAElC,qEAAqE;IACrE,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IAEpC,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IAEpC;;;;;;;;;;;;;;;;;;;;OAoBG;gBACS,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;IAO3E;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;IAIxC;;;;;;;;OAQG;IACG,IAAI,IAAI,OAAO,CAAC,cAAc,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CAIvD"}
package/dist/index.d.ts CHANGED
@@ -5,7 +5,6 @@ export type { PageFetcher } from "./pagination.ts";
5
5
  export { BackupsCollection } from "./resources/backups.ts";
6
6
  export type { BackupConfigListOptions } from "./resources/backups.ts";
7
7
  export { CertificatesCollection } from "./resources/certificates.ts";
8
- export type { CertificateListOptions } from "./resources/certificates.ts";
9
8
  export { CommandsCollection } from "./resources/commands.ts";
10
9
  export type { CommandListOptions } from "./resources/commands.ts";
11
10
  export { DaemonsCollection } from "./resources/daemons.ts";
@@ -36,5 +35,8 @@ export { SshKeysCollection } from "./resources/ssh-keys.ts";
36
35
  export type { SshKeyListOptions } from "./resources/ssh-keys.ts";
37
36
  export { SiteEnvResource, SiteNginxResource, SiteResource, SitesCollection, } from "./resources/sites.ts";
38
37
  export type { SiteListOptions } from "./resources/sites.ts";
39
- export type { CreateBackupConfigData, CreateCertificateData, CreateCommandData, CreateDaemonData, CreateDatabaseData, CreateDatabaseUserData, CreateFirewallRuleData, CreateMonitorData, CreateNginxTemplateData, CreateRecipeData, CreateRedirectRuleData, CreateScheduledJobData, CreateSecurityRuleData, CreateServerData, CreateSiteData, CreateSshKeyData, ForgeBackup, ForgeBackupConfig, ForgeCertificate, ForgeCommand, ForgeDaemon, ForgeDatabase, ForgeDatabaseUser, ForgeDeployment, ForgeFirewallRule, ForgeMonitor, ForgeNginxTemplate, ForgeOptions, ForgeRecipe, ForgeRedirectRule, ForgeScheduledJob, ForgeSecurityRule, ForgeServer, ForgeSite, ForgeSshKey, ForgeUser, } from "@studiometa/forge-api";
38
+ export type { JsonApiDocument, JsonApiListDocument, JsonApiResource, JsonApiPaginationLinks, JsonApiPaginationMeta, } from "@studiometa/forge-api";
39
+ export { unwrapDocument, unwrapListDocument, unwrapResource } from "@studiometa/forge-api";
40
+ export type { UserAttributes, ServerAttributes, SiteAttributes, DeploymentAttributes, DeploymentCommit, DeploymentOutputAttributes, DeploymentScriptAttributes, DatabaseAttributes, DatabaseUserAttributes, BackgroundProcessAttributes, CertificateAttributes, FirewallRuleAttributes, SshKeyAttributes, SecurityRuleAttributes, RedirectRuleAttributes, MonitorAttributes, NginxTemplateAttributes, RecipeAttributes, ScheduledJobAttributes, CommandAttributes, BackupConfigAttributes, BackupAttributes, OrganizationAttributes, } from "@studiometa/forge-api";
41
+ export type { CreateBackupConfigData, CreateCertificateData, CreateCommandData, CreateDaemonData, CreateDatabaseData, CreateDatabaseUserData, CreateFirewallRuleData, CreateMonitorData, CreateNginxTemplateData, CreateRecipeData, CreateRedirectRuleData, CreateScheduledJobData, CreateSecurityRuleData, CreateServerData, CreateSiteData, CreateSshKeyData, ForgeOptions, } from "@studiometa/forge-api";
40
42
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}