|
1 | 1 | import type { APIEndpoint } from "@/types";
|
2 | 2 |
|
3 | 3 | export type Route<T extends APIEndpoint> = string & { __route: T };
|
4 |
| -export const Route = <T extends APIEndpoint>(route: string) => { |
5 |
| - return route as Route<T>; |
6 |
| -}; |
| 4 | +export const Route = <T extends APIEndpoint>(route: string) => |
| 5 | + route as Route<T>; |
| 6 | + |
| 7 | +interface IRoutes { |
| 8 | + [k: string]: ((...args: string[]) => Route<APIEndpoint>) | IRoutes; |
| 9 | +} |
7 | 10 |
|
8 | 11 | export const Routes = {
|
9 |
| - user() { |
| 12 | + user: () => { |
10 | 13 | return Route<"user">("/v2/users/me");
|
11 | 14 | },
|
12 | 15 | service: {
|
13 |
| - status() { |
| 16 | + status: () => { |
14 | 17 | return Route<"service/status">("/v2/service/status");
|
15 | 18 | },
|
16 | 19 | },
|
17 | 20 | apps: {
|
18 |
| - upload() { |
| 21 | + upload: () => { |
19 | 22 | return Route<"apps/upload">("/v2/apps");
|
20 | 23 | },
|
21 |
| - statusAll() { |
| 24 | + statusAll: () => { |
22 | 25 | return Route<"apps/status-all">("/v2/apps/status");
|
23 | 26 | },
|
24 |
| - info(appId: string) { |
| 27 | + info: (appId: string) => { |
25 | 28 | return Route<"apps/info">(`/v2/apps/${appId}`);
|
26 | 29 | },
|
27 |
| - status(appId: string) { |
| 30 | + status: (appId: string) => { |
28 | 31 | return Route<"apps/status">(`/v2/apps/${appId}/status`);
|
29 | 32 | },
|
30 |
| - logs(appId: string) { |
| 33 | + logs: (appId: string) => { |
31 | 34 | return Route<"apps/logs">(`/v2/apps/${appId}/logs`);
|
32 | 35 | },
|
33 |
| - backups(appId: string) { |
| 36 | + delete: (appId: string) => { |
| 37 | + return Route<"apps/delete">(`/v2/apps/${appId}`); |
| 38 | + }, |
| 39 | + commit: (appId: string) => { |
| 40 | + return Route<"apps/commit">(`/v2/apps/${appId}/commit`); |
| 41 | + }, |
| 42 | + backups: (appId: string) => { |
34 | 43 | return Route<"apps/backups">(`/v2/apps/${appId}/backups`);
|
35 | 44 | },
|
36 |
| - generateBackup(appId: string) { |
| 45 | + generateBackup: (appId: string) => { |
37 | 46 | return Route<"apps/generate-backup">(`/v2/apps/${appId}/backups`);
|
38 | 47 | },
|
39 |
| - start(appId: string) { |
| 48 | + start: (appId: string) => { |
40 | 49 | return Route<"apps/start">(`/v2/apps/${appId}/start`);
|
41 | 50 | },
|
42 |
| - restart(appId: string) { |
| 51 | + restart: (appId: string) => { |
43 | 52 | return Route<"apps/restart">(`/v2/apps/${appId}/restart`);
|
44 | 53 | },
|
45 |
| - stop(appId: string) { |
| 54 | + stop: (appId: string) => { |
46 | 55 | return Route<"apps/stop">(`/v2/apps/${appId}/stop`);
|
47 | 56 | },
|
48 |
| - delete(appId: string) { |
49 |
| - return Route<"apps/delete">(`/v2/apps/${appId}`); |
50 |
| - }, |
51 |
| - commit(appId: string) { |
52 |
| - return Route<"apps/commit">(`/v2/apps/${appId}/commit`); |
53 |
| - }, |
54 | 57 | files: {
|
55 |
| - read(appId: string) { |
| 58 | + read: (appId: string) => { |
56 | 59 | return Route<"apps/files/read">(`/v2/apps/${appId}/files/content`);
|
57 | 60 | },
|
58 |
| - list(appId: string) { |
| 61 | + list: (appId: string) => { |
59 | 62 | return Route<"apps/files/list">(`/v2/apps/${appId}/files`);
|
60 | 63 | },
|
61 |
| - upsert(appId: string) { |
| 64 | + upsert: (appId: string) => { |
62 | 65 | return Route<"apps/files/upsert">(`/v2/apps/${appId}/files`);
|
63 | 66 | },
|
64 |
| - move(appId: string) { |
| 67 | + move: (appId: string) => { |
65 | 68 | return Route<"apps/files/move">(`/v2/apps/${appId}/files`);
|
66 | 69 | },
|
67 |
| - delete(appId: string) { |
| 70 | + delete: (appId: string) => { |
68 | 71 | return Route<"apps/files/delete">(`/v2/apps/${appId}/files`);
|
69 | 72 | },
|
70 | 73 | },
|
71 | 74 | deployments: {
|
72 |
| - list(appId: string) { |
| 75 | + list: (appId: string) => { |
73 | 76 | return Route<"apps/deployments/list">(`/v2/apps/${appId}/deployments`);
|
74 | 77 | },
|
75 |
| - current(appId: string) { |
| 78 | + current: (appId: string) => { |
76 | 79 | return Route<"apps/deployments/current">(
|
77 | 80 | `/v2/apps/${appId}/deployments/current`,
|
78 | 81 | );
|
79 | 82 | },
|
80 |
| - webhook(appId: string) { |
| 83 | + webhook: (appId: string) => { |
81 | 84 | return Route<"apps/deployments/webhook">(
|
82 | 85 | `/v2/apps/${appId}/deploy/webhook`,
|
83 | 86 | );
|
84 | 87 | },
|
85 | 88 | },
|
86 | 89 | network: {
|
87 |
| - dns(appId: string) { |
| 90 | + dns: (appId: string) => { |
88 | 91 | return Route<"apps/network/dns">(`/v2/apps/${appId}/network/dns`);
|
89 | 92 | },
|
90 |
| - analytics(appId: string) { |
| 93 | + custom: (appId: string) => { |
| 94 | + return Route<"apps/network/custom">(`/v2/apps/${appId}/network/custom`); |
| 95 | + }, |
| 96 | + analytics: (appId: string) => { |
91 | 97 | return Route<"apps/network/analytics">(
|
92 | 98 | `/v2/apps/${appId}/network/analytics`,
|
93 | 99 | );
|
94 | 100 | },
|
95 |
| - custom(appId: string) { |
96 |
| - return Route<"apps/network/custom">(`/v2/apps/${appId}/network/custom`); |
97 |
| - }, |
98 | 101 | },
|
99 | 102 | },
|
100 |
| -}; |
| 103 | +} satisfies IRoutes; |
0 commit comments