Suite of AT Protocol TypeScript libraries built on web standards
21
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 26 lines 674 B view raw
1export interface Checkable<T> { 2 parse: (obj: unknown) => T; 3 safeParse: ( 4 obj: unknown, 5 ) => { success: true; data: T } | { success: false; error: Error }; 6} 7 8export interface Def<T> { 9 name: string; 10 schema: Checkable<T>; 11} 12 13export const is = <T>(obj: unknown, def: Checkable<T>): obj is T => { 14 return def.safeParse(obj).success; 15}; 16 17export const create = <T>(def: Checkable<T>) => (v: unknown): v is T => 18 def.safeParse(v).success; 19 20export const assure = <T>(def: Checkable<T>, obj: unknown): T => { 21 return def.parse(obj); 22}; 23 24export const isObject = (obj: unknown): obj is Record<string, unknown> => { 25 return typeof obj === "object" && obj !== null; 26};