@updating-secrets/infisical-adapter
Version:
Infisical adapter for the updating-secrets package.
70 lines (69 loc) • 2.47 kB
TypeScript
import { type Values } from '@augment-vir/common';
import { type ListSecretsOptions, type Secret } from '@infisical/sdk';
import { BaseSecretsAdapter, type ProcessedSecretDefinitions, type RawSecrets } from 'updating-secrets';
/**
* Intermediate type for processing secrets from Infisical. Used in {@link InfisicalAdapter} and
* helper functions.
*
* @category Internal
*/
export type MappedInfisicalSecrets = {
[SecretKey in string]: string | MappedInfisicalSecrets | Error;
};
/**
* The necessary subset of the `InfisicalSDK` API that {@link InfisicalAdapter} requires.
*
* @category Internal
*/
export type NeededInfisicalSdk = {
/** Get the Infisical secrets client. */
secrets(): {
/** List the Infisical secrets. */
listSecrets(options: ListSecretsOptions): Promise<{
secrets: NeededInfisicalSecret[];
}>;
};
};
/**
* The necessary subset of the Infisical `Secret` type that {@link InfisicalAdapter} requires.
*
* @category Internal
*/
export type NeededInfisicalSecret = Pick<Secret, 'secretKey' | 'secretPath' | 'secretValue'>;
/**
* Loads secrets from Infisical. A `InfisicalSDK` instance must be provided. The `InfisicalSDK`
* instance must also be authorized _before_ passing it into this.
*
* @category Adapters
*/
export declare class InfisicalAdapter extends BaseSecretsAdapter {
/**
* Make sure that you've already authenticated this client.
* (`client.auth().universalAuth.login()`)
*/
protected readonly infisicalClient: Readonly<NeededInfisicalSdk>;
/** `'dev'`, `'staging'`, `'prod'`, etc. */
protected readonly infisicalEnvironment: string;
constructor(
/**
* Make sure that you've already authenticated this client.
* (`client.auth().universalAuth.login()`)
*/
infisicalClient: Readonly<NeededInfisicalSdk>,
/** `'dev'`, `'staging'`, `'prod'`, etc. */
infisicalEnvironment: string);
/** Load secrets from the provided `InfisicalSDK`. */
loadSecrets(secrets: ProcessedSecretDefinitions): RawSecrets;
}
/**
* Get an Infisical secret value nested within an object.
*
* @category Internal
*/
export declare function getNested(parent: MappedInfisicalSecrets, keys: string[]): Values<MappedInfisicalSecrets>;
/**
* Set an Infisical secret value nested within an object.
*
* @category Internal
*/
export declare function setNested(parent: MappedInfisicalSecrets, keys: string[], value: string): void;