@riddance/service
Version:
Too much code slows you down, creates risks, increases maintainability burdens, confuses AI. So let's commit less of it.
15 lines (14 loc) • 999 B
TypeScript
import type { Json, JsonObject, JsonSafe, JsonSafeObject } from '@riddance/host/lib/context';
export * from '@riddance/host/lib/context';
export type Stringified<T> = T extends null | boolean | number | string ? T : T extends JsonSafeObject ? JsonObject : T extends JsonSafe ? Json : T extends undefined ? never : T extends () => unknown ? never : T extends {
toJSON: (...args: unknown[]) => infer U;
} ? Stringified<U> : T extends {
toJSON: Function;
} | Map<infer _, infer _> | Set<infer _> ? object : T extends readonly (infer U)[] ? Stringified<U extends undefined ? null : U>[] : T extends object ? {
[K in keyof T as T[K] extends Function | symbol ? never : Stringified<T[K]> extends never ? never : K extends symbol ? never : K]: Stringified<T[K]>;
} : never;
export declare function objectSpreadable(json?: Json): {
readonly [key: string]: Json;
};
export declare function arraySpreadable(json?: Json): readonly Json[];
export declare function missing(what?: string): never;