Something went wrong. Try again.
fork of hey-api/openapi-ts because I need some additional things
Something went wrong. Try again.
2.9 kB · 117 lines
TypeScript
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118// This file is auto-generated by @hey-api/openapi-ts
/** * JSON-friendly union that mirrors what Pinia Colada can hash. */export type JsonValue = | null | string | number | boolean | JsonValue[] | { [key: string]: JsonValue };
/** * Replacer that converts non-JSON values (bigint, Date, etc.) to safe substitutes. */export const queryKeyJsonReplacer = (_key: string, value: unknown) => { if (value === undefined || typeof value === 'function' || typeof value === 'symbol') { return undefined; } if (typeof value === 'bigint') { return value.toString(); } if (value instanceof Date) { return value.toISOString(); } return value;};
/** * Safely stringifies a value and parses it back into a JsonValue. */export const stringifyToJsonValue = (input: unknown): JsonValue | undefined => { try { const json = JSON.stringify(input, queryKeyJsonReplacer); if (json === undefined) { return undefined; } return JSON.parse(json) as JsonValue; } catch { return undefined; }};
/** * Detects plain objects (including objects with a null prototype). */const isPlainObject = (value: unknown): value is Record<string, unknown> => { if (value === null || typeof value !== 'object') { return false; } const prototype = Object.getPrototypeOf(value as object); return prototype === Object.prototype || prototype === null;};
/** * Turns URLSearchParams into a sorted JSON object for deterministic keys. */const serializeSearchParams = (params: URLSearchParams): JsonValue => { const entries = Array.from(params.entries()).sort(([a], [b]) => a.localeCompare(b)); const result: Record<string, JsonValue> = {};
for (const [key, value] of entries) { const existing = result[key]; if (existing === undefined) { result[key] = value; continue; }
if (Array.isArray(existing)) { (existing as string[]).push(value); } else { result[key] = [existing, value]; } }
return result;};
/** * Normalizes any accepted value into a JSON-friendly shape for query keys. */export const serializeQueryKeyValue = (value: unknown): JsonValue | undefined => { if (value === null) { return null; }
if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') { return value; }
if (value === undefined || typeof value === 'function' || typeof value === 'symbol') { return undefined; }
if (typeof value === 'bigint') { return value.toString(); }
if (value instanceof Date) { return value.toISOString(); }
if (Array.isArray(value)) { return stringifyToJsonValue(value); }
if (typeof URLSearchParams !== 'undefined' && value instanceof URLSearchParams) { return serializeSearchParams(value); }
if (isPlainObject(value)) { return stringifyToJsonValue(value); }
return undefined;};