@studiometa/forge-sdk 0.3.0 → 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
@@ -1,4 +1,4 @@
1
- import type { CreateSiteData, ForgeSite, HttpClient } from "@studiometa/forge-api";
1
+ import type { CreateSiteData, HttpClient, SiteAttributes } from "@studiometa/forge-api";
2
2
  import { AsyncPaginatedIterator } from "../pagination.ts";
3
3
  import type { ResolveResult } from "./servers.ts";
4
4
  import { DeploymentsCollection } from "./deployments.ts";
@@ -11,8 +11,8 @@ import { BaseCollection } from "./base.ts";
11
11
  * Options for listing sites.
12
12
  */
13
13
  export interface SiteListOptions {
14
- /** Page number to fetch (1-indexed). */
15
- page?: number;
14
+ /** Cursor for pagination (from previous response's next_cursor). */
15
+ cursor?: string;
16
16
  }
17
17
  /**
18
18
  * Collection of sites on a server.
@@ -27,7 +27,7 @@ export interface SiteListOptions {
27
27
  export declare class SitesCollection extends BaseCollection {
28
28
  private readonly serverId;
29
29
  /** @internal */
30
- constructor(client: HttpClient, serverId: number);
30
+ constructor(client: HttpClient, orgSlug: string, serverId: number);
31
31
  private get basePath();
32
32
  /**
33
33
  * List sites on this server.
@@ -36,11 +36,13 @@ export declare class SitesCollection extends BaseCollection {
36
36
  * ```ts
37
37
  * const sites = await forge.server(123).sites.list();
38
38
  *
39
- * // Fetch a specific page:
40
- * const page2 = await forge.server(123).sites.list({ page: 2 });
39
+ * // Fetch a specific cursor page:
40
+ * const page2 = await forge.server(123).sites.list({ cursor: 'next-cursor-value' });
41
41
  * ```
42
42
  */
43
- list(options?: SiteListOptions): Promise<ForgeSite[]>;
43
+ list(options?: SiteListOptions): Promise<Array<SiteAttributes & {
44
+ id: number;
45
+ }>>;
44
46
  /**
45
47
  * Iterate over all sites across all pages.
46
48
  *
@@ -54,7 +56,9 @@ export declare class SitesCollection extends BaseCollection {
54
56
  * const sites = await forge.server(123).sites.all().toArray();
55
57
  * ```
56
58
  */
57
- all(options?: Omit<SiteListOptions, "page">): AsyncPaginatedIterator<ForgeSite>;
59
+ all(): AsyncPaginatedIterator<SiteAttributes & {
60
+ id: number;
61
+ }>;
58
62
  /**
59
63
  * Get a specific site by ID.
60
64
  *
@@ -63,20 +67,24 @@ export declare class SitesCollection extends BaseCollection {
63
67
  * const site = await forge.server(123).sites.get(456);
64
68
  * ```
65
69
  */
66
- get(siteId: number): Promise<ForgeSite>;
70
+ get(siteId: number): Promise<SiteAttributes & {
71
+ id: number;
72
+ }>;
67
73
  /**
68
74
  * Create a new site on this server.
69
75
  *
70
76
  * @example
71
77
  * ```ts
72
78
  * const site = await forge.server(123).sites.create({
73
- * domain: 'example.com',
74
- * project_type: 'php',
79
+ * type: 'php',
80
+ * name: 'example.com',
75
81
  * directory: '/public',
76
82
  * });
77
83
  * ```
78
84
  */
79
- create(data: CreateSiteData): Promise<ForgeSite>;
85
+ create(data: CreateSiteData): Promise<SiteAttributes & {
86
+ id: number;
87
+ }>;
80
88
  /**
81
89
  * Update a site.
82
90
  *
@@ -85,7 +93,9 @@ export declare class SitesCollection extends BaseCollection {
85
93
  * await forge.server(123).sites.update(456, { directory: '/public' });
86
94
  * ```
87
95
  */
88
- update(siteId: number, data: Partial<CreateSiteData>): Promise<ForgeSite>;
96
+ update(siteId: number, data: Partial<CreateSiteData>): Promise<SiteAttributes & {
97
+ id: number;
98
+ }>;
89
99
  /**
90
100
  * Delete a site.
91
101
  *
@@ -145,7 +155,7 @@ export declare class SiteResource extends BaseCollection {
145
155
  /** Redirect rules for this site. */
146
156
  readonly redirectRules: RedirectRulesCollection;
147
157
  /** @internal */
148
- constructor(client: HttpClient, serverId: number, siteId: number);
158
+ constructor(client: HttpClient, orgSlug: string, serverId: number, siteId: number);
149
159
  private get basePath();
150
160
  /**
151
161
  * Get this site's details.
@@ -155,7 +165,9 @@ export declare class SiteResource extends BaseCollection {
155
165
  * const site = await forge.server(123).site(456).get();
156
166
  * ```
157
167
  */
158
- get(): Promise<ForgeSite>;
168
+ get(): Promise<SiteAttributes & {
169
+ id: number;
170
+ }>;
159
171
  /**
160
172
  * Deploy this site.
161
173
  *
@@ -188,7 +200,7 @@ export declare class SiteEnvResource extends BaseCollection {
188
200
  private readonly serverId;
189
201
  private readonly siteId;
190
202
  /** @internal */
191
- constructor(client: HttpClient, serverId: number, siteId: number);
203
+ constructor(client: HttpClient, orgSlug: string, serverId: number, siteId: number);
192
204
  private get basePath();
193
205
  /**
194
206
  * Get the environment file content.
@@ -216,7 +228,7 @@ export declare class SiteNginxResource extends BaseCollection {
216
228
  private readonly serverId;
217
229
  private readonly siteId;
218
230
  /** @internal */
219
- constructor(client: HttpClient, serverId: number, siteId: number);
231
+ constructor(client: HttpClient, orgSlug: string, serverId: number, siteId: number);
220
232
  private get basePath();
221
233
  /**
222
234
  * Get the Nginx configuration.
@@ -1 +1 @@
1
- {"version":3,"file":"sites.d.ts","sourceRoot":"","sources":["../../src/resources/sites.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sites.d.ts","sourceRoot":"","sources":["../../src/resources/sites.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- import type { CreateSshKeyData, ForgeSshKey, HttpClient } from "@studiometa/forge-api";
1
+ import type { CreateSshKeyData, HttpClient, SshKeyAttributes } from "@studiometa/forge-api";
2
2
  import { BaseCollection } from "./base.ts";
3
3
  import { AsyncPaginatedIterator } from "../pagination.ts";
4
4
  /**
5
5
  * Options for listing SSH keys.
6
6
  */
7
7
  export interface SshKeyListOptions {
8
- /** Page number to fetch (1-indexed). */
9
- page?: number;
8
+ /** Cursor for pagination (from previous response's next_cursor). */
9
+ cursor?: string;
10
10
  }
11
11
  /**
12
12
  * Collection of SSH keys on a server.
@@ -21,7 +21,7 @@ export interface SshKeyListOptions {
21
21
  export declare class SshKeysCollection extends BaseCollection {
22
22
  private readonly serverId;
23
23
  /** @internal */
24
- constructor(client: HttpClient, serverId: number);
24
+ constructor(client: HttpClient, orgSlug: string, serverId: number);
25
25
  private get basePath();
26
26
  /**
27
27
  * List SSH keys on this server.
@@ -30,11 +30,13 @@ export declare class SshKeysCollection extends BaseCollection {
30
30
  * ```ts
31
31
  * const keys = await forge.server(123).sshKeys.list();
32
32
  *
33
- * // Fetch a specific page:
34
- * const page2 = await forge.server(123).sshKeys.list({ page: 2 });
33
+ * // Fetch a specific cursor page:
34
+ * const page2 = await forge.server(123).sshKeys.list({ cursor: 'next-cursor-value' });
35
35
  * ```
36
36
  */
37
- list(options?: SshKeyListOptions): Promise<ForgeSshKey[]>;
37
+ list(options?: SshKeyListOptions): Promise<Array<SshKeyAttributes & {
38
+ id: number;
39
+ }>>;
38
40
  /**
39
41
  * Iterate over all SSH keys across all pages.
40
42
  *
@@ -48,7 +50,9 @@ export declare class SshKeysCollection extends BaseCollection {
48
50
  * const keys = await forge.server(123).sshKeys.all().toArray();
49
51
  * ```
50
52
  */
51
- all(options?: Omit<SshKeyListOptions, "page">): AsyncPaginatedIterator<ForgeSshKey>;
53
+ all(): AsyncPaginatedIterator<SshKeyAttributes & {
54
+ id: number;
55
+ }>;
52
56
  /**
53
57
  * Get a specific SSH key.
54
58
  *
@@ -57,7 +61,9 @@ export declare class SshKeysCollection extends BaseCollection {
57
61
  * const key = await forge.server(123).sshKeys.get(789);
58
62
  * ```
59
63
  */
60
- get(keyId: number): Promise<ForgeSshKey>;
64
+ get(keyId: number): Promise<SshKeyAttributes & {
65
+ id: number;
66
+ }>;
61
67
  /**
62
68
  * Create a new SSH key.
63
69
  *
@@ -69,7 +75,9 @@ export declare class SshKeysCollection extends BaseCollection {
69
75
  * });
70
76
  * ```
71
77
  */
72
- create(data: CreateSshKeyData): Promise<ForgeSshKey>;
78
+ create(data: CreateSshKeyData): Promise<SshKeyAttributes & {
79
+ id: number;
80
+ }>;
73
81
  /**
74
82
  * Delete an SSH key.
75
83
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ssh-keys.d.ts","sourceRoot":"","sources":["../../src/resources/ssh-keys.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;;;;;;;;;GASG;AACH,qBAAa,iBAAkB,SAAQ,cAAc;IAIjD,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,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,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAK9C;;;;;;;;;;OAUG;IACG,MAAM,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IAK1D;;;;;;;OAOG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG3C"}
1
+ {"version":3,"file":"ssh-keys.d.ts","sourceRoot":"","sources":["../../src/resources/ssh-keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,UAAU,EAGV,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,qBAAa,iBAAkB,SAAQ,cAAc;IAKjD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAJ3B,gBAAgB;gBAEd,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,EACE,QAAQ,EAAE,MAAM;IAKnC,OAAO,KAAK,QAAQ,GAEnB;IAED;;;;;;;;;;OAUG;IACG,IAAI,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAQ9F;;;;;;;;;;;;OAYG;IACH,GAAG,IAAI,sBAAsB,CAAC,gBAAgB,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAahE;;;;;;;OAOG;IACG,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAOpE;;;;;;;;;;OAUG;IACG,MAAM,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAKhF;;;;;;;OAOG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG3C"}
@@ -1,3 +1,8 @@
1
+ /**
2
+ * Convert a fetch URL argument to a string.
3
+ * Handles string, URL, and Request objects safely.
4
+ */
5
+ export declare function toUrlString(url: string | URL | Request): string;
1
6
  /**
2
7
  * Create a mock `fetch` function for use in SDK tests.
3
8
  *
@@ -15,10 +20,14 @@
15
20
  *
16
21
  * describe('my feature', () => {
17
22
  * it('lists servers', async () => {
18
- * const mockFetch = createMockFetch(() => ({ servers: [] }));
19
- * const forge = new Forge('test-token', { fetch: mockFetch });
23
+ * const mockFetch = createMockFetch(() => ({
24
+ * data: [{ id: '1', type: 'server', attributes: { name: 'web-1' } }],
25
+ * links: {},
26
+ * meta: { per_page: 200, next_cursor: null },
27
+ * }));
28
+ * const forge = new Forge('test-token', 'test-org', { fetch: mockFetch });
20
29
  * const servers = await forge.servers.list();
21
- * expect(servers).toEqual([]);
30
+ * expect(servers).toHaveLength(1);
22
31
  * });
23
32
  * });
24
33
  * ```
@@ -1 +1 @@
1
- {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../src/test-utils.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,GACpD,OAAO,KAAK,CASd"}
1
+ {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../src/test-utils.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,GAAG,MAAM,CAE/D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,GACpD,OAAO,KAAK,CAUd"}
@@ -1,5 +1,12 @@
1
1
  import { vi } from "vitest";
2
2
  /**
3
+ * Convert a fetch URL argument to a string.
4
+ * Handles string, URL, and Request objects safely.
5
+ */
6
+ function toUrlString(url) {
7
+ return typeof url === "string" ? url : url instanceof URL ? url.toString() : url.url;
8
+ }
9
+ /**
3
10
  * Create a mock `fetch` function for use in SDK tests.
4
11
  *
5
12
  * The handler receives the request URL and init options, and should return
@@ -16,23 +23,27 @@ import { vi } from "vitest";
16
23
  *
17
24
  * describe('my feature', () => {
18
25
  * it('lists servers', async () => {
19
- * const mockFetch = createMockFetch(() => ({ servers: [] }));
20
- * const forge = new Forge('test-token', { fetch: mockFetch });
26
+ * const mockFetch = createMockFetch(() => ({
27
+ * data: [{ id: '1', type: 'server', attributes: { name: 'web-1' } }],
28
+ * links: {},
29
+ * meta: { per_page: 200, next_cursor: null },
30
+ * }));
31
+ * const forge = new Forge('test-token', 'test-org', { fetch: mockFetch });
21
32
  * const servers = await forge.servers.list();
22
- * expect(servers).toEqual([]);
33
+ * expect(servers).toHaveLength(1);
23
34
  * });
24
35
  * });
25
36
  * ```
26
37
  */
27
38
  function createMockFetch(handler) {
28
39
  return vi.fn(async (url, init) => {
29
- const data = handler(typeof url === "string" ? url : url instanceof URL ? url.toString() : url.url, init);
40
+ const data = handler(toUrlString(url), init);
30
41
  return new Response(JSON.stringify(data), {
31
42
  status: 200,
32
43
  headers: { "Content-Type": "application/json" }
33
44
  });
34
45
  });
35
46
  }
36
- export { createMockFetch };
47
+ export { createMockFetch, toUrlString };
37
48
 
38
49
  //# sourceMappingURL=test-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-utils.js","names":[],"sources":["../src/test-utils.ts"],"sourcesContent":["import { vi } from \"vitest\";\n\n/**\n * Create a mock `fetch` function for use in SDK tests.\n *\n * The handler receives the request URL and init options, and should return\n * the data to be serialised as JSON in the response body.\n *\n * @param handler A function that receives `(url, init)` and returns response data.\n * @returns A vitest mock function compatible with the `fetch` signature.\n *\n * @example\n * ```ts\n * import { describe, it, expect } from 'vitest';\n * import { Forge } from '@studiometa/forge-sdk';\n * import { createMockFetch } from '@studiometa/forge-sdk/test-utils';\n *\n * describe('my feature', () => {\n * it('lists servers', async () => {\n * const mockFetch = createMockFetch(() => ({ servers: [] }));\n * const forge = new Forge('test-token', { fetch: mockFetch });\n * const servers = await forge.servers.list();\n * expect(servers).toEqual([]);\n * });\n * });\n * ```\n */\nexport function createMockFetch(\n handler: (url: string, init?: RequestInit) => unknown,\n): typeof fetch {\n return vi.fn(async (url: string | URL | Request, init?: RequestInit) => {\n const urlStr = typeof url === \"string\" ? url : url instanceof URL ? url.toString() : url.url;\n const data = handler(urlStr, init);\n return new Response(JSON.stringify(data), {\n status: 200,\n headers: { \"Content-Type\": \"application/json\" },\n });\n }) as unknown as typeof fetch;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,SAAgB,gBACd,SACc;AACd,QAAO,GAAG,GAAG,OAAO,KAA6B,SAAuB;EAEtE,MAAM,OAAO,QADE,OAAO,QAAQ,WAAW,MAAM,eAAe,MAAM,IAAI,UAAU,GAAG,IAAI,KAC5D,KAAK;AAClC,SAAO,IAAI,SAAS,KAAK,UAAU,KAAK,EAAE;GACxC,QAAQ;GACR,SAAS,EAAE,gBAAgB,oBAAoB;GAChD,CAAC;GACF"}
1
+ {"version":3,"file":"test-utils.js","names":[],"sources":["../src/test-utils.ts"],"sourcesContent":["import { vi } from \"vitest\";\n\n/**\n * Convert a fetch URL argument to a string.\n * Handles string, URL, and Request objects safely.\n */\n// eslint-disable-next-line typescript-eslint/no-redundant-type-constituents -- matches fetch() signature\nexport function toUrlString(url: string | URL | Request): string {\n return typeof url === \"string\" ? url : url instanceof URL ? url.toString() : url.url;\n}\n\n/**\n * Create a mock `fetch` function for use in SDK tests.\n *\n * The handler receives the request URL and init options, and should return\n * the data to be serialised as JSON in the response body.\n *\n * @param handler A function that receives `(url, init)` and returns response data.\n * @returns A vitest mock function compatible with the `fetch` signature.\n *\n * @example\n * ```ts\n * import { describe, it, expect } from 'vitest';\n * import { Forge } from '@studiometa/forge-sdk';\n * import { createMockFetch } from '@studiometa/forge-sdk/test-utils';\n *\n * describe('my feature', () => {\n * it('lists servers', async () => {\n * const mockFetch = createMockFetch(() => ({\n * data: [{ id: '1', type: 'server', attributes: { name: 'web-1' } }],\n * links: {},\n * meta: { per_page: 200, next_cursor: null },\n * }));\n * const forge = new Forge('test-token', 'test-org', { fetch: mockFetch });\n * const servers = await forge.servers.list();\n * expect(servers).toHaveLength(1);\n * });\n * });\n * ```\n */\nexport function createMockFetch(\n handler: (url: string, init?: RequestInit) => unknown,\n): typeof fetch {\n // eslint-disable-next-line typescript-eslint/no-redundant-type-constituents -- matches fetch() signature\n return vi.fn(async (url: string | URL | Request, init?: RequestInit) => {\n const urlStr = toUrlString(url);\n const data = handler(urlStr, init);\n return new Response(JSON.stringify(data), {\n status: 200,\n headers: { \"Content-Type\": \"application/json\" },\n });\n }) as unknown as typeof fetch;\n}\n"],"mappings":";;;;;AAOA,SAAgB,YAAY,KAAqC;AAC/D,QAAO,OAAO,QAAQ,WAAW,MAAM,eAAe,MAAM,IAAI,UAAU,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCnF,SAAgB,gBACd,SACc;AAEd,QAAO,GAAG,GAAG,OAAO,KAA6B,SAAuB;EAEtE,MAAM,OAAO,QADE,YAAY,IAAI,EACF,KAAK;AAClC,SAAO,IAAI,SAAS,KAAK,UAAU,KAAK,EAAE;GACxC,QAAQ;GACR,SAAS,EAAE,gBAAgB,oBAAoB;GAChD,CAAC;GACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@studiometa/forge-sdk",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Laravel Forge TypeScript SDK — fluent, chainable, fully-typed API client",
5
5
  "keywords": [
6
6
  "api-client",
@@ -44,7 +44,7 @@
44
44
  "typecheck": "tsc --noEmit"
45
45
  },
46
46
  "dependencies": {
47
- "@studiometa/forge-api": "0.3.0"
47
+ "@studiometa/forge-api": "0.4.0"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@vitest/coverage-v8": "^4.1.0-beta.4",