UNPKG

@salesforce/core

Version:

Core libraries to interact with SFDX projects, orgs, and APIs.

114 lines (113 loc) 4.42 kB
import * as childProcess from 'node:child_process'; import * as nodeFs from 'node:fs'; import { Nullable } from '@salesforce/ts-types'; export type FsIfc = Pick<typeof nodeFs, 'statSync'>; /** * Basic keychain interface. */ export type PasswordStore = { /** * Gets a password * * @param opts cli level password options. * @param fn function callback for password. * @param retryCount number of reties to get the password. */ getPassword(opts: ProgramOpts, fn: (error: Nullable<Error>, password?: string) => void, retryCount?: number): Promise<void>; /** * Sets a password. * * @param opts cli level password options. * @param fn function callback for password. */ setPassword(opts: ProgramOpts, fn: (error: Nullable<Error>, contents?: SecretContents) => void): Promise<void>; }; /** * @private */ export declare class KeychainAccess implements PasswordStore { private osImpl; private fsIfc; /** * Abstract prototype for general cross platform keychain interaction. * * @param osImpl The platform impl for (linux, darwin, windows). * @param fsIfc The file system interface. */ constructor(osImpl: OsImpl, fsIfc: FsIfc); /** * Validates the os level program is executable. */ validateProgram(): Promise<void>; /** * Returns a password using the native program for credential management. * * @param opts Options for the credential lookup. * @param fn Callback function (err, password). * @param retryCount Used internally to track the number of retries for getting a password out of the keychain. */ getPassword(opts: ProgramOpts, fn: (error: Nullable<Error>, password?: string) => void, retryCount?: number): Promise<void>; /** * Sets a password using the native program for credential management. * * @param opts Options for the credential lookup. * @param fn Callback function (err, ConfigContents). */ setPassword(opts: ProgramOpts, fn: (error: Nullable<Error>, contents?: SecretContents) => void): Promise<void>; } type ProgramOpts = { account: string; service: string; password?: string; }; type OsImpl = { getProgram(): string; getProgramOptions(opts: ProgramOpts): string[]; getCommandFunc(opts: ProgramOpts, fn: (program: string, opts: string[]) => childProcess.ChildProcess): childProcess.ChildProcess; onGetCommandClose(code: number, stdout: string, stderr: string, opts: ProgramOpts, fn: (err: Nullable<Error>, result?: string) => void): Promise<void>; setProgramOptions(opts: ProgramOpts): string[]; setCommandFunc(opts: ProgramOpts, fn: (program: string, opts: string[]) => childProcess.ChildProcess): childProcess.ChildProcess; onSetCommandClose(code: number, stdout: string, stderr: string, opts: ProgramOpts, fn: (err: Nullable<Error>) => void): Promise<void>; }; declare enum SecretField { SERVICE = "service", ACCOUNT = "account", KEY = "key" } type SecretContents = { [SecretField.ACCOUNT]: string; [SecretField.KEY]?: string; [SecretField.SERVICE]: string; }; /** * @@ignore */ export declare class GenericKeychainAccess implements PasswordStore { getPassword(opts: ProgramOpts, fn: (error: Nullable<Error>, password?: string) => void): Promise<void>; setPassword(opts: ProgramOpts, fn: (error: Nullable<Error>, contents?: SecretContents) => void): Promise<void>; protected isValidFileAccess(cb: (error: Nullable<NodeJS.ErrnoException>) => Promise<void>): Promise<void>; } /** * @ignore */ export declare class GenericUnixKeychainAccess extends GenericKeychainAccess { protected isValidFileAccess(cb: (error: Nullable<Error>) => Promise<void>): Promise<void>; } /** * @ignore */ export declare class GenericWindowsKeychainAccess extends GenericKeychainAccess { protected isValidFileAccess(cb: (error: Nullable<Error>) => Promise<void>): Promise<void>; } /** * @ignore */ export declare const keyChainImpl: { generic_unix: GenericUnixKeychainAccess; generic_windows: GenericWindowsKeychainAccess; darwin: KeychainAccess; linux: KeychainAccess; validateProgram: (programPath: string, fsIfc: FsIfc, isExeIfc: (mode: number, gid: number, uid: number) => boolean) => Promise<void>; }; export type KeyChain = GenericUnixKeychainAccess | GenericWindowsKeychainAccess | KeychainAccess; export {};