* start of settings types Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * add validator Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * start of settings in rust Signed-off-by: Jess Frazelle <github@jessfraz.com> * fix wasm Signed-off-by: Jess Frazelle <github@jessfraz.com> * fix Signed-off-by: Jess Frazelle <github@jessfraz.com> * fix wasm Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * more tests Signed-off-by: Jess Frazelle <github@jessfraz.com> * derive docs Signed-off-by: Jess Frazelle <github@jessfraz.com> * configuration Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * read and write functions with migration Signed-off-by: Jess Frazelle <github@jessfraz.com> * make more dry Signed-off-by: Jess Frazelle <github@jessfraz.com> * more parsing of app settings Signed-off-by: Jess Frazelle <github@jessfraz.com> * more things Signed-off-by: Jess Frazelle <github@jessfraz.com> * cleanup Signed-off-by: Jess Frazelle <github@jessfraz.com> * trim end Signed-off-by: Jess Frazelle <github@jessfraz.com> * project settings Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * fix Signed-off-by: Jess Frazelle <github@jessfraz.com> * fixes Signed-off-by: Jess Frazelle <github@jessfraz.com> * fixes Signed-off-by: Jess Frazelle <github@jessfraz.com> * cleanup tauri commands Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * refactor Signed-off-by: Jess Frazelle <github@jessfraz.com> * refactor Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * change to files Signed-off-by: Jess Frazelle <github@jessfraz.com> * better Signed-off-by: Jess Frazelle <github@jessfraz.com> * cleanup more Signed-off-by: Jess Frazelle <github@jessfraz.com> * get rid of dead code Signed-off-by: Jess Frazelle <github@jessfraz.com> * fixed Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * cleanup some more shit Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * add validation Signed-off-by: Jess Frazelle <github@jessfraz.com> * validation Signed-off-by: Jess Frazelle <github@jessfraz.com> * validate Signed-off-by: Jess Frazelle <github@jessfraz.com> * validate Signed-off-by: Jess Frazelle <github@jessfraz.com> * clippuy Signed-off-by: Jess Frazelle <github@jessfraz.com> * clippuy Signed-off-by: Jess Frazelle <github@jessfraz.com> * fix; Signed-off-by: Jess Frazelle <github@jessfraz.com> --------- Signed-off-by: Jess Frazelle <github@jessfraz.com>
98 lines
1.8 KiB
TypeScript
98 lines
1.8 KiB
TypeScript
import { FileEntry } from 'wasm-lib/kcl/bindings/FileEntry'
|
|
import { Project } from 'wasm-lib/kcl/bindings/Project'
|
|
|
|
export type { FileEntry } from 'wasm-lib/kcl/bindings/FileEntry'
|
|
|
|
export type IndexLoaderData = {
|
|
code: string | null
|
|
project?: Project
|
|
file?: FileEntry
|
|
}
|
|
|
|
export type FileLoaderData = {
|
|
code: string | null
|
|
project?: FileEntry | Project
|
|
file?: FileEntry
|
|
}
|
|
|
|
export type HomeLoaderData = {
|
|
projects: Project[]
|
|
}
|
|
|
|
// From the very helpful @jcalz on StackOverflow: https://stackoverflow.com/a/58436959/22753272
|
|
type Join<K, P> = K extends string | number
|
|
? P extends string | number
|
|
? `${K}${'' extends P ? '' : '.'}${P}`
|
|
: never
|
|
: never
|
|
|
|
type Prev = [
|
|
never,
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4,
|
|
5,
|
|
6,
|
|
7,
|
|
8,
|
|
9,
|
|
10,
|
|
11,
|
|
12,
|
|
13,
|
|
14,
|
|
15,
|
|
16,
|
|
17,
|
|
18,
|
|
19,
|
|
20,
|
|
...0[]
|
|
]
|
|
|
|
export type Paths<T, D extends number = 10> = [D] extends [never]
|
|
? never
|
|
: T extends object
|
|
? {
|
|
[K in keyof T]-?: K extends string | number
|
|
? `${K}` | Join<K, Paths<T[K], Prev[D]>>
|
|
: never
|
|
}[keyof T]
|
|
: ''
|
|
|
|
type Idx<T, K> = K extends keyof T
|
|
? T[K]
|
|
: number extends keyof T
|
|
? K extends `${number}`
|
|
? T[number]
|
|
: never
|
|
: never
|
|
|
|
export type PathValue<
|
|
T,
|
|
P extends Paths<T, 1>
|
|
> = P extends `${infer Key}.${infer Rest}`
|
|
? Rest extends Paths<Idx<T, Key>, 1>
|
|
? PathValue<Idx<T, Key>, Rest>
|
|
: never
|
|
: Idx<T, P>
|
|
|
|
export type Leaves<T, D extends number = 10> = [D] extends [never]
|
|
? never
|
|
: T extends object
|
|
? { [K in keyof T]-?: Join<K, Leaves<T[K], Prev[D]>> }[keyof T]
|
|
: ''
|
|
|
|
// Thanks to @micfan on StackOverflow for this utility type:
|
|
// https://stackoverflow.com/a/57390160/22753272
|
|
export type AtLeast<T, K extends keyof T> = Partial<T> & Pick<T, K>
|
|
|
|
export function isEnumMember<T extends Record<string, unknown>>(
|
|
v: unknown,
|
|
e: T
|
|
) {
|
|
return Object.values(e).includes(v)
|
|
}
|