Suite of AT Protocol TypeScript libraries built on web standards
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};