|
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