@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,83 @@
|
|
|
1
|
+
import type { CreateSshKeyData, ForgeSshKey, HttpClient } from "@studiometa/forge-api";
|
|
2
|
+
import { BaseCollection } from "./base.ts";
|
|
3
|
+
import { AsyncPaginatedIterator } from "../pagination.ts";
|
|
4
|
+
/**
|
|
5
|
+
* Options for listing SSH keys.
|
|
6
|
+
*/
|
|
7
|
+
export interface SshKeyListOptions {
|
|
8
|
+
/** Page number to fetch (1-indexed). */
|
|
9
|
+
page?: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Collection of SSH keys on a server.
|
|
13
|
+
*
|
|
14
|
+
* Access via `forge.server(id).sshKeys`.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* const keys = await forge.server(123).sshKeys.list();
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare class SshKeysCollection extends BaseCollection {
|
|
22
|
+
private readonly serverId;
|
|
23
|
+
/** @internal */
|
|
24
|
+
constructor(client: HttpClient, serverId: number);
|
|
25
|
+
private get basePath();
|
|
26
|
+
/**
|
|
27
|
+
* List SSH keys on this server.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts
|
|
31
|
+
* const keys = await forge.server(123).sshKeys.list();
|
|
32
|
+
*
|
|
33
|
+
* // Fetch a specific page:
|
|
34
|
+
* const page2 = await forge.server(123).sshKeys.list({ page: 2 });
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
list(options?: SshKeyListOptions): Promise<ForgeSshKey[]>;
|
|
38
|
+
/**
|
|
39
|
+
* Iterate over all SSH keys across all pages.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```ts
|
|
43
|
+
* for await (const key of forge.server(123).sshKeys.all()) {
|
|
44
|
+
* console.log(key);
|
|
45
|
+
* }
|
|
46
|
+
*
|
|
47
|
+
* // Or collect all at once:
|
|
48
|
+
* const keys = await forge.server(123).sshKeys.all().toArray();
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
all(options?: Omit<SshKeyListOptions, "page">): AsyncPaginatedIterator<ForgeSshKey>;
|
|
52
|
+
/**
|
|
53
|
+
* Get a specific SSH key.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```ts
|
|
57
|
+
* const key = await forge.server(123).sshKeys.get(789);
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
get(keyId: number): Promise<ForgeSshKey>;
|
|
61
|
+
/**
|
|
62
|
+
* Create a new SSH key.
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```ts
|
|
66
|
+
* const key = await forge.server(123).sshKeys.create({
|
|
67
|
+
* name: 'deploy-key',
|
|
68
|
+
* key: 'ssh-rsa AAAA...',
|
|
69
|
+
* });
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
create(data: CreateSshKeyData): Promise<ForgeSshKey>;
|
|
73
|
+
/**
|
|
74
|
+
* Delete an SSH key.
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```ts
|
|
78
|
+
* await forge.server(123).sshKeys.delete(789);
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
delete(keyId: number): Promise<void>;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=ssh-keys.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create a mock `fetch` function for use in SDK tests.
|
|
3
|
+
*
|
|
4
|
+
* The handler receives the request URL and init options, and should return
|
|
5
|
+
* the data to be serialised as JSON in the response body.
|
|
6
|
+
*
|
|
7
|
+
* @param handler A function that receives `(url, init)` and returns response data.
|
|
8
|
+
* @returns A vitest mock function compatible with the `fetch` signature.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { describe, it, expect } from 'vitest';
|
|
13
|
+
* import { Forge } from '@studiometa/forge-sdk';
|
|
14
|
+
* import { createMockFetch } from '@studiometa/forge-sdk/test-utils';
|
|
15
|
+
*
|
|
16
|
+
* describe('my feature', () => {
|
|
17
|
+
* it('lists servers', async () => {
|
|
18
|
+
* const mockFetch = createMockFetch(() => ({ servers: [] }));
|
|
19
|
+
* const forge = new Forge('test-token', { fetch: mockFetch });
|
|
20
|
+
* const servers = await forge.servers.list();
|
|
21
|
+
* expect(servers).toEqual([]);
|
|
22
|
+
* });
|
|
23
|
+
* });
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare function createMockFetch(handler: (url: string, init?: RequestInit) => unknown): typeof fetch;
|
|
27
|
+
//# sourceMappingURL=test-utils.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { vi } from "vitest";
|
|
2
|
+
/**
|
|
3
|
+
* Create a mock `fetch` function for use in SDK tests.
|
|
4
|
+
*
|
|
5
|
+
* The handler receives the request URL and init options, and should return
|
|
6
|
+
* the data to be serialised as JSON in the response body.
|
|
7
|
+
*
|
|
8
|
+
* @param handler A function that receives `(url, init)` and returns response data.
|
|
9
|
+
* @returns A vitest mock function compatible with the `fetch` signature.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* import { describe, it, expect } from 'vitest';
|
|
14
|
+
* import { Forge } from '@studiometa/forge-sdk';
|
|
15
|
+
* import { createMockFetch } from '@studiometa/forge-sdk/test-utils';
|
|
16
|
+
*
|
|
17
|
+
* describe('my feature', () => {
|
|
18
|
+
* it('lists servers', async () => {
|
|
19
|
+
* const mockFetch = createMockFetch(() => ({ servers: [] }));
|
|
20
|
+
* const forge = new Forge('test-token', { fetch: mockFetch });
|
|
21
|
+
* const servers = await forge.servers.list();
|
|
22
|
+
* expect(servers).toEqual([]);
|
|
23
|
+
* });
|
|
24
|
+
* });
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
function createMockFetch(handler) {
|
|
28
|
+
return vi.fn(async (url, init) => {
|
|
29
|
+
const data = handler(typeof url === "string" ? url : url instanceof URL ? url.toString() : url.url, init);
|
|
30
|
+
return new Response(JSON.stringify(data), {
|
|
31
|
+
status: 200,
|
|
32
|
+
headers: { "Content-Type": "application/json" }
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
export { createMockFetch };
|
|
37
|
+
|
|
38
|
+
//# sourceMappingURL=test-utils.js.map
|
|
@@ -0,0 +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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@studiometa/forge-sdk",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Laravel Forge TypeScript SDK — fluent, chainable, fully-typed API client",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"api-client",
|
|
@@ -16,7 +16,43 @@
|
|
|
16
16
|
"url": "https://github.com/studiometa/forge-tools",
|
|
17
17
|
"directory": "packages/sdk"
|
|
18
18
|
},
|
|
19
|
+
"files": [
|
|
20
|
+
"dist"
|
|
21
|
+
],
|
|
22
|
+
"type": "module",
|
|
23
|
+
"main": "./dist/index.js",
|
|
24
|
+
"types": "./dist/index.d.ts",
|
|
25
|
+
"exports": {
|
|
26
|
+
".": {
|
|
27
|
+
"types": "./dist/index.d.ts",
|
|
28
|
+
"import": "./dist/index.js"
|
|
29
|
+
},
|
|
30
|
+
"./test-utils": {
|
|
31
|
+
"types": "./dist/test-utils.d.ts",
|
|
32
|
+
"import": "./dist/test-utils.js"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
19
35
|
"publishConfig": {
|
|
20
36
|
"access": "public"
|
|
37
|
+
},
|
|
38
|
+
"scripts": {
|
|
39
|
+
"dev": "vite build --watch",
|
|
40
|
+
"build": "vite build && tsc --emitDeclarationOnly",
|
|
41
|
+
"test": "vitest run",
|
|
42
|
+
"test:watch": "vitest",
|
|
43
|
+
"test:ci": "vitest run --coverage",
|
|
44
|
+
"typecheck": "tsc --noEmit"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"@studiometa/forge-api": "*"
|
|
48
|
+
},
|
|
49
|
+
"devDependencies": {
|
|
50
|
+
"@vitest/coverage-v8": "^4.1.0-beta.4",
|
|
51
|
+
"typescript": "^5.7.3",
|
|
52
|
+
"vite": "^8.0.0-beta.14",
|
|
53
|
+
"vitest": "^4.1.0-beta.4"
|
|
54
|
+
},
|
|
55
|
+
"engines": {
|
|
56
|
+
"node": ">=18.0.0"
|
|
21
57
|
}
|
|
22
58
|
}
|