-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.ts
More file actions
75 lines (68 loc) · 3.33 KB
/
Copy pathindex.ts
File metadata and controls
75 lines (68 loc) · 3.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import { createClient as createConnectClient, type PromiseClient } from "@connectrpc/connect";
import { createConnectTransport } from "@connectrpc/connect-web";
import { KubernetesClusterService } from "./gen/enum/api/v1/kubernetes_clusters_service_connect.js";
import { ObjectStorageAccessKeyService } from "./gen/enum/api/v1/object_storage_access_keys_service_connect.js";
import { ObjectStorageBucketService } from "./gen/enum/api/v1/object_storage_buckets_service_connect.js";
import { ObjectStorageUserService } from "./gen/enum/api/v1/object_storage_users_service_connect.js";
import { OrganizationService } from "./gen/enum/api/v1/organizations_service_connect.js";
import { ProjectService } from "./gen/enum/api/v1/projects_service_connect.js";
import { UserService } from "./gen/enum/api/v1/users_service_connect.js";
// Re-export all service definitions and message types
export * from "./gen/enum/api/v1/common_pb.js";
export * from "./gen/enum/api/v1/kubernetes_clusters_pb.js";
export * from "./gen/enum/api/v1/kubernetes_clusters_service_pb.js";
export * from "./gen/enum/api/v1/object_storage_access_keys_pb.js";
export * from "./gen/enum/api/v1/object_storage_access_keys_service_pb.js";
export * from "./gen/enum/api/v1/object_storage_buckets_pb.js";
export * from "./gen/enum/api/v1/object_storage_buckets_service_pb.js";
export * from "./gen/enum/api/v1/object_storage_users_pb.js";
export * from "./gen/enum/api/v1/object_storage_users_service_pb.js";
export * from "./gen/enum/api/v1/organizations_pb.js";
export * from "./gen/enum/api/v1/organizations_service_pb.js";
export * from "./gen/enum/api/v1/projects_pb.js";
export * from "./gen/enum/api/v1/projects_service_pb.js";
export * from "./gen/enum/api/v1/users_pb.js";
export * from "./gen/enum/api/v1/users_service_pb.js";
export { KubernetesClusterService, ObjectStorageAccessKeyService, ObjectStorageUserService, OrganizationService, ProjectService, UserService };
const DEFAULT_BASE_URL = "https://api.enum.co";
export interface ClientOptions {
token: string;
baseUrl?: string;
}
export interface Client {
users: PromiseClient<typeof UserService>;
organizations: PromiseClient<typeof OrganizationService>;
projects: PromiseClient<typeof ProjectService>;
kubernetes: {
clusters: PromiseClient<typeof KubernetesClusterService>;
};
storage: {
users: PromiseClient<typeof ObjectStorageUserService>;
accessKeys: PromiseClient<typeof ObjectStorageAccessKeyService>;
buckets: PromiseClient<typeof ObjectStorageBucketService>;
};
}
export function createClient({ token, baseUrl = DEFAULT_BASE_URL }: ClientOptions): Client {
const transport = createConnectTransport({
baseUrl,
interceptors: [
(next) => (req) => {
req.header.set("Authorization", `Bearer ${token}`);
return next(req);
},
],
});
return {
users: createConnectClient(UserService, transport),
organizations: createConnectClient(OrganizationService, transport),
projects: createConnectClient(ProjectService, transport),
kubernetes: {
clusters: createConnectClient(KubernetesClusterService, transport),
},
storage: {
users: createConnectClient(ObjectStorageUserService, transport),
accessKeys: createConnectClient(ObjectStorageAccessKeyService, transport),
buckets: createConnectClient(ObjectStorageBucketService, transport),
},
};
}