fix: more readable return types

This commit is contained in:
Daniel Hougaard
2024-11-20 18:12:33 +04:00
parent 07f230db06
commit 8544fa3da9
4 changed files with 83 additions and 24 deletions

View File

@@ -1,6 +1,9 @@
import { RawAxiosRequestConfig } from "axios"; import { RawAxiosRequestConfig } from "axios";
import { Configuration, DefaultApi as InfisicalApi } from "../infisicalapi_client"; import { Configuration, DefaultApi as InfisicalApi } from "../infisicalapi_client";
import type { import type {
ApiV1DynamicSecretsGet200ResponseDynamicSecretsInner,
ApiV1DynamicSecretsLeasesLeaseIdDelete200Response,
ApiV1DynamicSecretsLeasesPost200Response,
DefaultApiApiV1DynamicSecretsLeasesLeaseIdDeleteRequest, DefaultApiApiV1DynamicSecretsLeasesLeaseIdDeleteRequest,
DefaultApiApiV1DynamicSecretsLeasesLeaseIdRenewPostRequest, DefaultApiApiV1DynamicSecretsLeasesLeaseIdRenewPostRequest,
DefaultApiApiV1DynamicSecretsLeasesPostRequest, DefaultApiApiV1DynamicSecretsLeasesPostRequest,
@@ -15,6 +18,12 @@ type CreateDynamicSecretOptions = Omit<DefaultApiApiV1DynamicSecretsPostRequest[
provider: TDynamicSecretProvider; provider: TDynamicSecretProvider;
}; };
export type CreateDynamicSecretResult = ApiV1DynamicSecretsGet200ResponseDynamicSecretsInner;
export type DeleteDynamicSecretResult = ApiV1DynamicSecretsGet200ResponseDynamicSecretsInner;
export type CreateDynamicSecretLeaseResult = ApiV1DynamicSecretsLeasesPost200Response;
export type DeleteDynamicSecretLeaseResult = ApiV1DynamicSecretsLeasesLeaseIdDelete200Response;
export type RenewDynamicSecretLeaseResult = ApiV1DynamicSecretsLeasesLeaseIdDelete200Response;
export default class DynamicSecretsClient { export default class DynamicSecretsClient {
#apiInstance: InfisicalApi; #apiInstance: InfisicalApi;
#requestOptions: RawAxiosRequestConfig | undefined; #requestOptions: RawAxiosRequestConfig | undefined;
@@ -23,7 +32,7 @@ export default class DynamicSecretsClient {
this.#requestOptions = requestOptions; this.#requestOptions = requestOptions;
} }
async create(options: CreateDynamicSecretOptions) { async create(options: CreateDynamicSecretOptions): Promise<CreateDynamicSecretResult> {
try { try {
const res = await this.#apiInstance.apiV1DynamicSecretsPost( const res = await this.#apiInstance.apiV1DynamicSecretsPost(
{ {
@@ -38,7 +47,10 @@ export default class DynamicSecretsClient {
} }
} }
async delete(dynamicSecretName: string, options: DefaultApiApiV1DynamicSecretsNameDeleteRequest["apiV1DynamicSecretsNameDeleteRequest"]) { async delete(
dynamicSecretName: string,
options: DefaultApiApiV1DynamicSecretsNameDeleteRequest["apiV1DynamicSecretsNameDeleteRequest"]
): Promise<DeleteDynamicSecretResult> {
try { try {
const res = await this.#apiInstance.apiV1DynamicSecretsNameDelete( const res = await this.#apiInstance.apiV1DynamicSecretsNameDelete(
{ {
@@ -55,7 +67,9 @@ export default class DynamicSecretsClient {
} }
leases = { leases = {
create: async (options: DefaultApiApiV1DynamicSecretsLeasesPostRequest["apiV1DynamicSecretsLeasesPostRequest"]) => { create: async (
options: DefaultApiApiV1DynamicSecretsLeasesPostRequest["apiV1DynamicSecretsLeasesPostRequest"]
): Promise<CreateDynamicSecretLeaseResult> => {
try { try {
const res = await this.#apiInstance.apiV1DynamicSecretsLeasesPost( const res = await this.#apiInstance.apiV1DynamicSecretsLeasesPost(
{ {
@@ -72,7 +86,7 @@ export default class DynamicSecretsClient {
delete: async ( delete: async (
leaseId: string, leaseId: string,
options: DefaultApiApiV1DynamicSecretsLeasesLeaseIdDeleteRequest["apiV1DynamicSecretsLeasesLeaseIdDeleteRequest"] options: DefaultApiApiV1DynamicSecretsLeasesLeaseIdDeleteRequest["apiV1DynamicSecretsLeasesLeaseIdDeleteRequest"]
) => { ): Promise<DeleteDynamicSecretLeaseResult> => {
try { try {
const res = await this.#apiInstance.apiV1DynamicSecretsLeasesLeaseIdDelete( const res = await this.#apiInstance.apiV1DynamicSecretsLeasesLeaseIdDelete(
{ {
@@ -91,7 +105,7 @@ export default class DynamicSecretsClient {
renew: async ( renew: async (
leaseId: string, leaseId: string,
options: DefaultApiApiV1DynamicSecretsLeasesLeaseIdRenewPostRequest["apiV1DynamicSecretsLeasesLeaseIdRenewPostRequest"] options: DefaultApiApiV1DynamicSecretsLeasesLeaseIdRenewPostRequest["apiV1DynamicSecretsLeasesLeaseIdRenewPostRequest"]
) => { ): Promise<RenewDynamicSecretLeaseResult> => {
try { try {
const res = await this.#apiInstance.apiV1DynamicSecretsLeasesLeaseIdRenewPost( const res = await this.#apiInstance.apiV1DynamicSecretsLeasesLeaseIdRenewPost(
{ {

View File

@@ -12,7 +12,7 @@ export enum ElasticSearchAuthTypes {
ApiKey = "api-key" ApiKey = "api-key"
} }
export const DynamicSecretRedisDBSchema = z.object({ const DynamicSecretRedisDBSchema = z.object({
host: z.string().trim().toLowerCase(), host: z.string().trim().toLowerCase(),
port: z.number(), port: z.number(),
username: z.string().trim(), // this is often "default". username: z.string().trim(), // this is often "default".
@@ -23,7 +23,7 @@ export const DynamicSecretRedisDBSchema = z.object({
ca: z.string().optional() ca: z.string().optional()
}); });
export const DynamicSecretAwsElastiCacheSchema = z.object({ const DynamicSecretAwsElastiCacheSchema = z.object({
clusterName: z.string().trim().min(1), clusterName: z.string().trim().min(1),
accessKeyId: z.string().trim().min(1), accessKeyId: z.string().trim().min(1),
secretAccessKey: z.string().trim().min(1), secretAccessKey: z.string().trim().min(1),
@@ -34,7 +34,7 @@ export const DynamicSecretAwsElastiCacheSchema = z.object({
ca: z.string().optional() ca: z.string().optional()
}); });
export const DynamicSecretElasticSearchSchema = z.object({ const DynamicSecretElasticSearchSchema = z.object({
host: z.string().trim().min(1), host: z.string().trim().min(1),
port: z.number(), port: z.number(),
roles: z.array(z.string().trim().min(1)).min(1), roles: z.array(z.string().trim().min(1)).min(1),
@@ -56,7 +56,7 @@ export const DynamicSecretElasticSearchSchema = z.object({
ca: z.string().optional() ca: z.string().optional()
}); });
export const DynamicSecretRabbitMqSchema = z.object({ const DynamicSecretRabbitMqSchema = z.object({
host: z.string().trim().min(1), host: z.string().trim().min(1),
port: z.number(), port: z.number(),
tags: z.array(z.string().trim()).default([]), tags: z.array(z.string().trim()).default([]),
@@ -76,7 +76,7 @@ export const DynamicSecretRabbitMqSchema = z.object({
}) })
}); });
export const DynamicSecretSqlDBSchema = z.object({ const DynamicSecretSqlDBSchema = z.object({
client: z.nativeEnum(SqlProviders), client: z.nativeEnum(SqlProviders),
host: z.string().trim().toLowerCase(), host: z.string().trim().toLowerCase(),
port: z.number(), port: z.number(),
@@ -89,7 +89,7 @@ export const DynamicSecretSqlDBSchema = z.object({
ca: z.string().optional() ca: z.string().optional()
}); });
export const DynamicSecretCassandraSchema = z.object({ const DynamicSecretCassandraSchema = z.object({
host: z.string().trim().toLowerCase(), host: z.string().trim().toLowerCase(),
port: z.number(), port: z.number(),
localDataCenter: z.string().trim().min(1), localDataCenter: z.string().trim().min(1),
@@ -102,7 +102,7 @@ export const DynamicSecretCassandraSchema = z.object({
ca: z.string().optional() ca: z.string().optional()
}); });
export const DynamicSecretAwsIamSchema = z.object({ const DynamicSecretAwsIamSchema = z.object({
accessKey: z.string().trim().min(1), accessKey: z.string().trim().min(1),
secretAccessKey: z.string().trim().min(1), secretAccessKey: z.string().trim().min(1),
region: z.string().trim().min(1), region: z.string().trim().min(1),
@@ -113,7 +113,7 @@ export const DynamicSecretAwsIamSchema = z.object({
policyArns: z.string().trim().optional() policyArns: z.string().trim().optional()
}); });
export const DynamicSecretMongoAtlasSchema = z.object({ const DynamicSecretMongoAtlasSchema = z.object({
adminPublicKey: z.string().trim().min(1).describe("Admin user public api key"), adminPublicKey: z.string().trim().min(1).describe("Admin user public api key"),
adminPrivateKey: z.string().trim().min(1).describe("Admin user private api key"), adminPrivateKey: z.string().trim().min(1).describe("Admin user private api key"),
groupId: z.string().trim().min(1).describe("Unique 24-hexadecimal digit string that identifies your project. This is same as project id"), groupId: z.string().trim().min(1).describe("Unique 24-hexadecimal digit string that identifies your project. This is same as project id"),
@@ -141,7 +141,7 @@ export const DynamicSecretMongoAtlasSchema = z.object({
.array() .array()
}); });
export const DynamicSecretMongoDBSchema = z.object({ const DynamicSecretMongoDBSchema = z.object({
host: z.string().min(1).trim().toLowerCase(), host: z.string().min(1).trim().toLowerCase(),
port: z.number().optional(), port: z.number().optional(),
username: z.string().min(1).trim(), username: z.string().min(1).trim(),
@@ -157,7 +157,28 @@ export const DynamicSecretMongoDBSchema = z.object({
) )
}); });
export const AzureEntraIDSchema = z.object({ const DynamicSecretSapHanaSchema = z.object({
host: z.string().trim().toLowerCase(),
port: z.number(),
username: z.string().trim(),
password: z.string().trim(),
creationStatement: z.string().trim(),
revocationStatement: z.string().trim(),
renewStatement: z.string().trim().optional(),
ca: z.string().optional()
});
const DynamicSecretSnowflakeSchema = z.object({
accountId: z.string().trim().min(1),
orgId: z.string().trim().min(1),
username: z.string().trim().min(1),
password: z.string().trim().min(1),
creationStatement: z.string().trim().min(1),
revocationStatement: z.string().trim().min(1),
renewStatement: z.string().trim().optional()
});
const AzureEntraIDSchema = z.object({
tenantId: z.string().trim().min(1), tenantId: z.string().trim().min(1),
userId: z.string().trim().min(1), userId: z.string().trim().min(1),
email: z.string().trim().min(1), email: z.string().trim().min(1),
@@ -165,7 +186,7 @@ export const AzureEntraIDSchema = z.object({
clientSecret: z.string().trim().min(1) clientSecret: z.string().trim().min(1)
}); });
export const LdapSchema = z.object({ const LdapSchema = z.object({
url: z.string().trim().min(1), url: z.string().trim().min(1),
binddn: z.string().trim().min(1), binddn: z.string().trim().min(1),
bindpass: z.string().trim().min(1), bindpass: z.string().trim().min(1),
@@ -187,21 +208,25 @@ export enum DynamicSecretProviders {
MongoDB = "mongo-db", MongoDB = "mongo-db",
RabbitMq = "rabbit-mq", RabbitMq = "rabbit-mq",
AzureEntraID = "azure-entra-id", AzureEntraID = "azure-entra-id",
Ldap = "ldap" Ldap = "ldap",
SapHana = "sap-hana",
Snowflake = "snowflake"
} }
export const DynamicSecretProviderSchema = z.discriminatedUnion("type", [ const DynamicSecretProviderSchema = z.discriminatedUnion("type", [
z.object({ type: z.literal(DynamicSecretProviders.SqlDatabase), inputs: DynamicSecretSqlDBSchema }), z.object({ type: z.literal(DynamicSecretProviders.SqlDatabase), inputs: DynamicSecretSqlDBSchema }),
z.object({ type: z.literal(DynamicSecretProviders.Cassandra), inputs: DynamicSecretCassandraSchema }), z.object({ type: z.literal(DynamicSecretProviders.Cassandra), inputs: DynamicSecretCassandraSchema }),
z.object({ type: z.literal(DynamicSecretProviders.AwsIam), inputs: DynamicSecretAwsIamSchema }), z.object({ type: z.literal(DynamicSecretProviders.AwsIam), inputs: DynamicSecretAwsIamSchema }),
z.object({ type: z.literal(DynamicSecretProviders.Redis), inputs: DynamicSecretRedisDBSchema }), z.object({ type: z.literal(DynamicSecretProviders.Redis), inputs: DynamicSecretRedisDBSchema }),
z.object({ type: z.literal(DynamicSecretProviders.SapHana), inputs: DynamicSecretSapHanaSchema }),
z.object({ type: z.literal(DynamicSecretProviders.AwsElastiCache), inputs: DynamicSecretAwsElastiCacheSchema }), z.object({ type: z.literal(DynamicSecretProviders.AwsElastiCache), inputs: DynamicSecretAwsElastiCacheSchema }),
z.object({ type: z.literal(DynamicSecretProviders.MongoAtlas), inputs: DynamicSecretMongoAtlasSchema }), z.object({ type: z.literal(DynamicSecretProviders.MongoAtlas), inputs: DynamicSecretMongoAtlasSchema }),
z.object({ type: z.literal(DynamicSecretProviders.ElasticSearch), inputs: DynamicSecretElasticSearchSchema }), z.object({ type: z.literal(DynamicSecretProviders.ElasticSearch), inputs: DynamicSecretElasticSearchSchema }),
z.object({ type: z.literal(DynamicSecretProviders.MongoDB), inputs: DynamicSecretMongoDBSchema }), z.object({ type: z.literal(DynamicSecretProviders.MongoDB), inputs: DynamicSecretMongoDBSchema }),
z.object({ type: z.literal(DynamicSecretProviders.RabbitMq), inputs: DynamicSecretRabbitMqSchema }), z.object({ type: z.literal(DynamicSecretProviders.RabbitMq), inputs: DynamicSecretRabbitMqSchema }),
z.object({ type: z.literal(DynamicSecretProviders.AzureEntraID), inputs: AzureEntraIDSchema }), z.object({ type: z.literal(DynamicSecretProviders.AzureEntraID), inputs: AzureEntraIDSchema }),
z.object({ type: z.literal(DynamicSecretProviders.Ldap), inputs: LdapSchema }) z.object({ type: z.literal(DynamicSecretProviders.Ldap), inputs: LdapSchema }),
z.object({ type: z.literal(DynamicSecretProviders.Snowflake), inputs: DynamicSecretSnowflakeSchema })
]); ]);
export type TDynamicSecretProvider = z.infer<typeof DynamicSecretProviderSchema>; export type TDynamicSecretProvider = z.infer<typeof DynamicSecretProviderSchema>;

View File

@@ -1,6 +1,9 @@
import { RawAxiosRequestConfig } from "axios"; import { RawAxiosRequestConfig } from "axios";
import { DefaultApi as InfisicalApi } from "../infisicalapi_client"; import { DefaultApi as InfisicalApi } from "../infisicalapi_client";
import type { import type {
ApiV3SecretsRawGet200Response,
ApiV3SecretsRawSecretNameGet200Response,
ApiV3SecretsRawSecretNamePost200Response,
DefaultApiApiV3SecretsRawSecretNameDeleteRequest, DefaultApiApiV3SecretsRawSecretNameDeleteRequest,
DefaultApiApiV3SecretsRawSecretNamePatchRequest, DefaultApiApiV3SecretsRawSecretNamePatchRequest,
DefaultApiApiV3SecretsRawSecretNamePostRequest DefaultApiApiV3SecretsRawSecretNamePostRequest
@@ -42,6 +45,12 @@ type DeleteSecretOptions = Omit<DefaultApiApiV3SecretsRawSecretNameDeleteRequest
projectId: string; projectId: string;
}; };
export type ListSecretsResult = ApiV3SecretsRawGet200Response;
export type GetSecretResult = ApiV3SecretsRawSecretNameGet200Response["secret"];
export type UpdateSecretResult = ApiV3SecretsRawSecretNamePost200Response;
export type CreateSecretResult = ApiV3SecretsRawSecretNamePost200Response;
export type DeleteSecretResult = ApiV3SecretsRawSecretNamePost200Response;
const convertBool = (value: boolean | undefined) => (value ? "true" : "false"); const convertBool = (value: boolean | undefined) => (value ? "true" : "false");
export default class SecretsClient { export default class SecretsClient {
@@ -52,7 +61,7 @@ export default class SecretsClient {
this.#requestOptions = requestOptions; this.#requestOptions = requestOptions;
} }
listSecrets = async (options: ListSecretsOptions) => { listSecrets = async (options: ListSecretsOptions): Promise<ListSecretsResult> => {
try { try {
const res = await this.#apiInstance.apiV3SecretsRawGet( const res = await this.#apiInstance.apiV3SecretsRawGet(
{ {
@@ -72,7 +81,7 @@ export default class SecretsClient {
} }
}; };
getSecret = async (options: GetSecretOptions) => { getSecret = async (options: GetSecretOptions): Promise<GetSecretResult> => {
try { try {
const res = await this.#apiInstance.apiV3SecretsRawSecretNameGet( const res = await this.#apiInstance.apiV3SecretsRawSecretNameGet(
{ {
@@ -93,7 +102,10 @@ export default class SecretsClient {
} }
}; };
updateSecret = async (secretName: DefaultApiApiV3SecretsRawSecretNamePatchRequest["secretName"], options: UpdateSecretOptions) => { updateSecret = async (
secretName: DefaultApiApiV3SecretsRawSecretNamePatchRequest["secretName"],
options: UpdateSecretOptions
): Promise<UpdateSecretResult> => {
try { try {
const res = await this.#apiInstance.apiV3SecretsRawSecretNamePatch( const res = await this.#apiInstance.apiV3SecretsRawSecretNamePatch(
{ {
@@ -111,7 +123,10 @@ export default class SecretsClient {
} }
}; };
createSecret = async (secretName: DefaultApiApiV3SecretsRawSecretNamePostRequest["secretName"], options: CreateSecretOptions) => { createSecret = async (
secretName: DefaultApiApiV3SecretsRawSecretNamePostRequest["secretName"],
options: CreateSecretOptions
): Promise<CreateSecretResult> => {
try { try {
const res = await this.#apiInstance.apiV3SecretsRawSecretNamePost( const res = await this.#apiInstance.apiV3SecretsRawSecretNamePost(
{ {
@@ -129,7 +144,10 @@ export default class SecretsClient {
} }
}; };
deleteSecret = async (secretName: DefaultApiApiV3SecretsRawSecretNameDeleteRequest["secretName"], options: DeleteSecretOptions) => { deleteSecret = async (
secretName: DefaultApiApiV3SecretsRawSecretNameDeleteRequest["secretName"],
options: DeleteSecretOptions
): Promise<DeleteSecretResult> => {
try { try {
const res = await this.#apiInstance.apiV3SecretsRawSecretNameDelete( const res = await this.#apiInstance.apiV3SecretsRawSecretNameDelete(
{ {

View File

@@ -74,3 +74,5 @@ class InfisicalSDK {
export { InfisicalSDK, ApiClient }; export { InfisicalSDK, ApiClient };
export * from "./custom/schemas"; export * from "./custom/schemas";
export type * from "./custom/secrets";
export type * from "./custom/dynamic-secrets";