101 lines
3.2 KiB
TypeScript
101 lines
3.2 KiB
TypeScript
import { ApiClient } from "./api/base";
|
|
import { AuthApi } from "./api/endpoints/auth";
|
|
import { SecretsApi } from "./api/endpoints/secrets";
|
|
import { DynamicSecretsApi } from "./api/endpoints/dynamic-secrets";
|
|
import { EnvironmentsApi } from "./api/endpoints/environments";
|
|
import { ProjectsApi } from "./api/endpoints/projects";
|
|
import { FoldersApi } from "./api/endpoints/folders";
|
|
|
|
import SecretsClient from "./custom/secrets";
|
|
import AuthClient from "./custom/auth";
|
|
import DynamicSecretsClient from "./custom/dynamic-secrets";
|
|
import EnvironmentsClient from "./custom/environments";
|
|
import ProjectsClient from "./custom/projects";
|
|
import FoldersClient from "./custom/folders";
|
|
|
|
type InfisicalSDKOptions = {
|
|
siteUrl?: string;
|
|
};
|
|
|
|
class InfisicalSDK {
|
|
private apiClient: ApiClient;
|
|
|
|
// API instances
|
|
private authApi: AuthApi;
|
|
private secretsApi: SecretsApi;
|
|
private dynamicSecretsApi: DynamicSecretsApi;
|
|
private environmentsApi: EnvironmentsApi;
|
|
private projectsApi: ProjectsApi;
|
|
private foldersApi: FoldersApi;
|
|
|
|
// Domain clients
|
|
private authClient: AuthClient;
|
|
private secretsClient: SecretsClient;
|
|
private dynamicSecretsClient: DynamicSecretsClient;
|
|
private environmentsClient: EnvironmentsClient;
|
|
private projectsClient: ProjectsClient;
|
|
private foldersClient: FoldersClient;
|
|
|
|
constructor(options?: InfisicalSDKOptions) {
|
|
const baseURL = options?.siteUrl || "https://app.infisical.com";
|
|
|
|
// Initialize the base API client
|
|
this.apiClient = new ApiClient({ baseURL });
|
|
|
|
// Initialize API service instances
|
|
this.authApi = new AuthApi(this.apiClient);
|
|
this.secretsApi = new SecretsApi(this.apiClient);
|
|
this.dynamicSecretsApi = new DynamicSecretsApi(this.apiClient);
|
|
this.environmentsApi = new EnvironmentsApi(this.apiClient);
|
|
this.projectsApi = new ProjectsApi(this.apiClient);
|
|
this.foldersApi = new FoldersApi(this.apiClient);
|
|
|
|
// Initialize domain clients
|
|
this.authClient = new AuthClient(
|
|
this.authenticate.bind(this),
|
|
this.authApi
|
|
);
|
|
this.secretsClient = new SecretsClient(this.secretsApi);
|
|
this.dynamicSecretsClient = new DynamicSecretsClient(
|
|
this.dynamicSecretsApi
|
|
);
|
|
this.environmentsClient = new EnvironmentsClient(this.environmentsApi);
|
|
this.projectsClient = new ProjectsClient(this.projectsApi);
|
|
this.foldersClient = new FoldersClient(this.foldersApi);
|
|
}
|
|
|
|
private authenticate(accessToken: string) {
|
|
// Set the token on the API client
|
|
this.apiClient.setAccessToken(accessToken);
|
|
|
|
// Reinitialize the auth client with the token
|
|
this.authClient = new AuthClient(
|
|
this.authenticate.bind(this),
|
|
this.authApi,
|
|
accessToken
|
|
);
|
|
|
|
return this;
|
|
}
|
|
|
|
// Public methods to access domain clients
|
|
secrets = () => this.secretsClient;
|
|
environments = () => this.environmentsClient;
|
|
projects = () => this.projectsClient;
|
|
folders = () => this.foldersClient;
|
|
dynamicSecrets = () => this.dynamicSecretsClient;
|
|
auth = () => this.authClient;
|
|
}
|
|
|
|
// Export main SDK class
|
|
export { InfisicalSDK };
|
|
|
|
export * from './api/types'
|
|
|
|
// Export types and enums from schemas
|
|
export {
|
|
TDynamicSecretProvider,
|
|
DynamicSecretProviders,
|
|
SqlProviders,
|
|
} from "./custom/schemas";
|