svelte-ux
Version:
- Increment version in `package.json` and commit as `Version bump to x.y.z` - `npm run publish`
45 lines (44 loc) • 2.01 kB
TypeScript
import type { SvelteComponentTyped } from 'svelte';
import type { derived, Readable } from 'svelte/store';
export declare function fail(message: string): never;
/**
* Omit properties in `T` defined in `K`
* included with Typescript 3.5 - https://devblogs.microsoft.com/typescript/announcing-typescript-3-5-rc/#the-omit-helper-type
*/
export type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
/**
*
* see: https://stackoverflow.com/a/53936938/191902
*/
export type Merge<M, N> = Omit<M, Extract<keyof M, keyof N>> & N;
export type ValueOf<T> = T[keyof T];
export declare function keys<T>(o: T): (keyof T)[];
export declare function entries<T>(o: T): [keyof T, T[keyof T]][];
export declare function enumKeys(E: any): string[];
export declare function enumValues(E: any): any[];
export interface TreeMap<K = string, V = null> extends Map<K, TreeMap | V> {
}
/**
* Constructs a type consisting of all properties of T set to required and non-nullable (combination of Required<T> and NonNullable<T>)
* https://www.typescriptlang.org/docs/handbook/utility-types.html#requiredt
*/
export type RequiredNonNullable<T> = {
[P in keyof T]-?: NonNullable<T[P]>;
};
/**
* Make all properties partial (full tree unlike Partial<T>)
* see: https://stackoverflow.com/questions/47914536/use-partial-in-nested-property-with-typescript
*/
export type RecursivePartial<T> = {
[P in keyof T]?: RecursivePartial<T[P]>;
};
export type FilterPropKeys<T, Match> = {
[P in keyof T]: T[P] extends Match ? P : never;
}[keyof T];
export type ComponentProps<T> = T extends SvelteComponentTyped<infer P, any, any> ? P : never;
export type ComponentEvents<T> = T extends SvelteComponentTyped<any, infer E, any> ? E : never;
export type ComponentSlots<T> = T extends SvelteComponentTyped<any, any, infer S> ? S : never;
export type Stores = Parameters<typeof derived>[0];
export type StoresValues<T> = T extends Readable<infer U> ? U : {
[K in keyof T]: T[K] extends Readable<infer U> ? U : never;
};