kubricate
Version:
A TypeScript framework for building reusable, type-safe Kubernetes infrastructure — without the YAML mess.
32 lines • 2.08 kB
TypeScript
import type { BaseProvider } from '@kubricate/core';
import type { BaseStack } from '../stack/BaseStack.js';
import { SecretInjectionBuilder } from './SecretInjectionBuilder.js';
import type { SecretManager } from './SecretManager.js';
import type { AnySecretManager, ExtractSecretManager } from './types.js';
export type ExtractProviderKeyFromSecretManager<SM extends AnySecretManager, Key extends keyof ExtractSecretManager<SM>['secretEntries']> = ExtractSecretManager<SM>['secretEntries'][Key] extends {
provider: infer P;
} ? P : never;
export type GetProviderKindFromConnector<SM extends AnySecretManager, ProviderKey> = ProviderKey extends string ? ExtractSecretManager<SM>['providerInstances'][ProviderKey] extends BaseProvider<any, infer Instance> ? Instance : never : never;
export type GetProviderKinds<SM extends AnySecretManager, Key extends keyof ExtractSecretManager<SM>['secretEntries']> = GetProviderKindFromConnector<SM, ExtractProviderKeyFromSecretManager<SM, Key>>;
export declare class SecretsInjectionContext<SM extends SecretManager = AnySecretManager> {
private stack;
private manager;
private secretManagerId;
private defaultResourceId;
private builders;
constructor(stack: BaseStack, manager: SM, secretManagerId: number);
/**
* Set the default resourceId to use when no explicit resource is defined in a secret injection.
*/
setDefaultResourceId(id: string): void;
/**
* Start defining how a secret will be injected into a resource.
* This only resolves the provider, not the actual secret value.
*
* @param secretName - The name of the secret to inject.
* @returns A SecretInjectionBuilder for chaining inject behavior.
*/
secrets<NewKey extends keyof ExtractSecretManager<SM>['secretEntries'] = keyof ExtractSecretManager<SM>['secretEntries'], ProviderKinds extends GetProviderKinds<SM, NewKey> = GetProviderKinds<SM, NewKey>>(secretName: NewKey): SecretInjectionBuilder<ProviderKinds>;
resolveAll(): void;
}
//# sourceMappingURL=SecretsInjectionContext.d.ts.map