// Symbols // export type pending = typeof pending; // export const pending = Symbol.for("pending"); // export type nonexistent = typeof nonexistent; // export const nonexistent = Symbol.for("nonexistent"); // export type deleted = typeof deleted; // export const deleted = Symbol.for("deleted"); // Utils export type primitiveFormatTag = typeof primitiveFormatTag; export const primitiveFormatTag = `primitive` as const; // Num export type Num = number; export const Num = { _mfsFormat: primitiveFormatTag, TsType: 0 as number, _mfs_isRequiredOnCreate: true as true, default: (val: number) => ({ defaultVal: val, TsType: 0 as number, _mfs_isRequiredOnCreate: false as false, }), }; // Str export type Str = string; export const Str = { _mfsFormat: primitiveFormatTag, TsType: `` as string, _mfs_isRequiredOnCreate: true as true, default: (val: string) => ({ defaultVal: val, TsType: `` as string, _mfs_isRequiredOnCreate: false as false, }), }; // Bool export type Bool = boolean; export const Bool = { _mfsFormat: primitiveFormatTag, TsType: true as boolean, _mfs_isRequiredOnCreate: true as true, default: (val: boolean) => ({ defaultVal: val, TsType: true as boolean, _mfs_isRequiredOnCreate: false as false, }), }; // Json export type Json = JsonPrimitive | JsonObject | JsonArray; export type JsonObject = { [key: string]: Json }; export type JsonArray = Json[]; export type JsonPrimitive = string | number | boolean | null; export type DeepReadonlyJson = T extends Json[] ? ReadonlyArray> : T extends object ? { readonly [K in keyof T]: T[K] extends Json ? DeepReadonlyJson : never; } : T;