UNPKG

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
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; };