UNPKG

@updating-secrets/infisical-adapter

Version:

Infisical adapter for the updating-secrets package.

70 lines (69 loc) 2.47 kB
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;