@thisisagile/easy
Version:
Straightforward library for building domain-driven microservice architectures
34 lines (33 loc) • 1.41 kB
TypeScript
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;
};
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 any: <T extends Json = Json>(value: T) => Any<T>;
export {};