@sidekick-coder/db
Version:
Cli Tool to manipulate data from diferent sources
31 lines (28 loc) • 1.7 kB
TypeScript
import * as valibot from 'valibot';
import { InferOutput } from 'valibot';
type Encryption = ReturnType<typeof createEncryption>;
declare const schema: valibot.ObjectSchema<{
readonly value: valibot.UnionSchema<[valibot.StringSchema<undefined>, valibot.SchemaWithPipe<[valibot.AnySchema, valibot.CheckAction<any, undefined>, valibot.TransformAction<any, Uint8Array>]>], undefined>;
readonly salt: valibot.OptionalSchema<valibot.StringSchema<undefined>, string>;
readonly iv: valibot.OptionalSchema<valibot.StringSchema<undefined>, string>;
readonly password: valibot.StringSchema<undefined>;
}, undefined>;
interface EncryptPayload extends InferOutput<typeof schema> {
}
type EncryptOutput<T extends EncryptPayload['value']> = T extends string ? string : T extends Uint8Array ? Uint8Array : never;
type EncryptPayloadOutput<T extends EncryptPayload> = T extends {
value: string;
} ? string : T extends {
value: Uint8Array;
} ? Uint8Array : never;
declare function encrypt<T extends EncryptPayload>(payload: EncryptPayload): EncryptPayloadOutput<T>;
declare function decrypt<T extends EncryptPayload>(payload: EncryptPayload): EncryptPayloadOutput<T>;
declare function createEncryption(payload?: Partial<EncryptPayload>): {
state: Omit<EncryptPayload, "value">;
setSalt: (salt: string) => any;
setIv: (iv: string) => any;
setPassword: (password: string) => any;
encrypt: <T extends EncryptPayload["value"]>(value: T) => EncryptOutput<T>;
decrypt: <T extends EncryptPayload["value"]>(value: T) => EncryptOutput<T>;
};
export { type EncryptOutput, type EncryptPayload, type EncryptPayloadOutput, type Encryption, createEncryption, decrypt, encrypt };