trusted
Version:
⚖️ Trustworthy localStorage. Validate against a schema, set default values.
62 lines (61 loc) • 3.07 kB
TypeScript
export interface TrustedOptions {
namespace?: string;
}
export interface TrustedAccessorOptions<T> {
key: string;
defaultValue?: T;
yupSchema?: any;
validate?: (value: T) => boolean;
skipRegistration?: boolean;
unmarshal?: (localValue: string) => T;
marshal?: (value: T) => string;
}
export declare type TrustedTypeAccessorOptions<T> = Omit<TrustedAccessorOptions<T>, 'marshal' | 'unmarshal'>;
export interface TrustedAccessor<T> {
get: () => T;
set: (value: T) => void;
remove: () => void;
unregister: () => void;
getKey: () => string;
getDefaultValue: () => T;
}
export declare class Trusted {
private namespace;
private registeredKeys;
constructor(options?: TrustedOptions);
registerKey(key: string): void;
unregisterKey(key: string): void;
accessor<T>(options: TrustedAccessorOptions<T> & {
defaultValue: T;
}): TrustedAccessor<T>;
accessor<T>(options: TrustedAccessorOptions<T>): TrustedAccessor<T | undefined>;
string<T extends string = string>(accessorOptions: TrustedTypeAccessorOptions<T> & {
defaultValue: T;
}): TrustedAccessor<T>;
string<T extends string = string>(accessorOptions: TrustedTypeAccessorOptions<T>): TrustedAccessor<T | undefined>;
boolean<T extends boolean = boolean>(accessorOptions: TrustedTypeAccessorOptions<T> & {
defaultValue: T;
}): TrustedAccessor<T>;
boolean<T extends boolean = boolean>(accessorOptions: TrustedTypeAccessorOptions<T>): TrustedAccessor<T | undefined>;
object<T extends Record<any, any>>(accessorOptions: TrustedTypeAccessorOptions<T> & {
defaultValue: T;
}): TrustedAccessor<T>;
object<T extends Record<any, any>>(accessorOptions: TrustedTypeAccessorOptions<T>): TrustedAccessor<T | undefined>;
number<T extends number = number>(accessorOptions: TrustedTypeAccessorOptions<T> & {
defaultValue: T;
}): TrustedAccessor<T>;
number<T extends number = number>(accessorOptions: TrustedTypeAccessorOptions<T>): TrustedAccessor<T | undefined>;
array<T, A extends T[] = T[]>(accessorOptions: TrustedTypeAccessorOptions<A> & {
defaultValue: A;
}): TrustedAccessor<A>;
array<T, A extends T[] = T[]>(accessorOptions: TrustedTypeAccessorOptions<A>): TrustedAccessor<A | undefined>;
map<K extends string | number | symbol, T, M extends Map<K, T> = Map<K, T>>(accessorOptions: TrustedTypeAccessorOptions<M> & {
defaultValue: M;
}): TrustedAccessor<M>;
map<K extends string | number | symbol, T, M extends Map<K, T> = Map<K, T>>(accessorOptions: TrustedTypeAccessorOptions<M>): TrustedAccessor<M | undefined>;
set<T, S extends Set<T> = Set<T>>(accessorOptions: TrustedAccessorOptions<S>): TrustedAccessor<S | undefined>;
date<T extends Date>(accessorOptions: TrustedAccessorOptions<T> & {
defaultValue: T;
}): TrustedAccessor<T>;
date<T extends Date>(accessorOptions: TrustedAccessorOptions<T>): TrustedAccessor<T | undefined>;
}