@updating-secrets/1password-adapter
Version:
1password adapter for the updating-secrets package.
51 lines (50 loc) • 1.68 kB
TypeScript
import { type Item, type Client as OnePasswordClient } from '@1password/sdk';
import { type SelectFrom } from '@augment-vir/common';
import { BaseSecretsAdapter, type ProcessedSecretDefinitions, type RawSecrets } from 'updating-secrets';
/**
* The necessary subset of the 1Password `Client` API that {@link OnePasswordAdapter} requires.
*
* @category Internal
*/
export type NeededOnePasswordClient = SelectFrom<OnePasswordClient, {
items: {
get: true;
};
}>;
/**
* Loads secrets from 1Password. A 1Password `Client` must be created and authorized before passing
* it into here.
*
* @category Adapters
*/
export declare class OnePasswordAdapter extends BaseSecretsAdapter {
protected readonly onePasswordClient: Readonly<NeededOnePasswordClient>;
constructor(onePasswordClient: Readonly<NeededOnePasswordClient>);
/** Load secrets from the provided 1Password `Client`. */
loadSecrets(secrets: ProcessedSecretDefinitions): RawSecrets;
/** Load an individual secret from the given URL. */
loadSingleSecret(secretUrl: string): Promise<Record<string, string>>;
}
/**
* Required 1Password `Item` for proper processing.
*
* @category Internal
*/
export type NeededOnePasswordItem = SelectFrom<Item, {
fields: {
title: true;
value: true;
};
}>;
/**
* Extract the needed parameters for fetching an item from 1Password from an item URL.
*
* You can find the item URL by navigating to an item in 1Password, expanding the three dots menu,
* and clicking "Copy Private Link".
*
* @category Internal
*/
export declare function extract1PasswordIds(url: string): {
itemId: string;
vaultId: string;
};