@humanspeak/svelte-subscribe
Version:
Subscribe to non top-level stores in your Svelte templates
14 lines (13 loc) • 745 B
TypeScript
import { type Readable, type Writable } from 'svelte/store';
export type ReadOrWritable<T> = Readable<T> | Writable<T>;
export type WritableKeys<T> = {
[K in keyof T]: T[K] extends undefined ? Writable<T[K] | undefined> : Writable<T[K]>;
};
export type ReadableKeys<T> = {
[K in keyof T]: T[K] extends undefined ? Readable<T[K] | undefined> : Readable<T[K]>;
};
export type ReadOrWritableKeys<T> = {
[K in keyof T]: T[K] extends undefined ? ReadOrWritable<T[K] | undefined> : ReadOrWritable<T[K]>;
};
export declare const derivedKeys: <S extends ReadOrWritableKeys<unknown>>(storeMap: S) => DerivedKeys<S>;
export type DerivedKeys<S extends ReadOrWritableKeys<unknown>> = S extends ReadOrWritableKeys<infer T> ? Readable<T> : never;