UNPKG

@thisisagile/easy

Version:

Straightforward library for building domain-driven microservice architectures

36 lines (35 loc) 1.66 kB
import { Get } from './Get'; import { TypeGuard } from './TypeGuard'; export type JsonValue = string | number | boolean | null | Json | JsonValue[]; export type Json = { [key: string]: JsonValue; }; export declare const isJson: TypeGuard<{ toJSON: () => Json; }>; export declare const json: { parse: <T extends Json = Json>(subject: unknown) => T; merge: (...subjects: unknown[]) => Json; delete: <T extends Json = Json>(subject: T, key: string) => T; set: <T extends Json = Json>(subject: T, key?: string, value?: unknown) => T; omit: <T extends Json = Json>(subject: T, ...keys: string[]) => T; pick: <T extends Json = Json>(subject: T, ...keys: string[]) => T; defaults: <T extends Json = Json>(options?: Partial<T>, defaults?: Partial<T>) => T; isSubset: (subject: Json, subset: Json) => boolean; split: <T extends Record<string, unknown>, K extends string = "extracted">(t: T, keys: readonly (keyof T)[], prop?: K) => { [P in K]: Partial<T>; }; }; export declare const toJson: (...subjects: unknown[]) => Json; export declare const asJson: (j?: unknown, alt?: Get<Json>) => Json; declare class Any<T extends Json> { readonly value: T; constructor(value: T); merge: (...subjects: T[]) => Any<T>; delete: (key: keyof T) => Any<T>; omit: (...keys: (keyof T)[]) => Any<T>; set: (key: keyof T, value?: unknown) => Any<T>; toJSON(): Json; } export declare const takeFirstKey: (j: unknown, alt?: string) => string; export declare const takeFirst: <K extends string = string, T = any>(j: Record<K, T>) => [K, T]; export declare const any: <T extends Json = Json>(value: T) => Any<T>; export {};