UNPKG

agents

Version:
108 lines (107 loc) 2.75 kB
//#region src/serializable.d.ts type SerializablePrimitive = undefined | null | string | number | boolean; type NonSerializable = | Function | symbol | bigint | Date | RegExp | Map<unknown, unknown> | Set<unknown> | WeakMap<object, unknown> | WeakSet<object> | Error | ArrayBuffer | SharedArrayBuffer | DataView | Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array; type SerializableValue = | undefined | null | string | number | boolean | { [key: string]: SerializableValue; } | SerializableValue[]; type CanSerialize<T, Seen = never> = T extends Seen ? true : T extends SerializablePrimitive ? true : T extends NonSerializable ? false : T extends readonly (infer U)[] ? CanSerialize<U, Seen | T> : T extends object ? unknown extends T ? true : { [K in keyof T]: CanSerialize<T[K], Seen | T> } extends { [K in keyof T]: true; } ? true : false : true; type CanSerializeReturn<T> = T extends void ? true : T extends Promise<infer U> ? CanSerialize<U> : CanSerialize<T>; type SerializableReturnValue = | SerializableValue | void | Promise<SerializableValue> | Promise<void>; type IsSerializableParam<T, Seen = never> = T extends Seen ? true : T extends SerializablePrimitive ? true : T extends NonSerializable ? false : T extends readonly (infer U)[] ? IsSerializableParam<U, Seen | T> : T extends object ? unknown extends T ? true : { [K in keyof T]: IsSerializableParam<T[K], Seen | T> } extends { [K in keyof T]: true; } ? true : false : true; type AllSerializableValues<A> = A extends [infer First, ...infer Rest] ? IsSerializableParam<First> extends true ? AllSerializableValues<Rest> : false : true; type Method = (...args: any[]) => any; type IsUnknown<T> = [unknown] extends [T] ? [T] extends [unknown] ? true : false : false; type UnwrapPromise<T> = T extends Promise<infer U> ? U : T; type RPCMethod<T = Method> = T extends Method ? T extends (...arg: infer A) => infer R ? AllSerializableValues<A> extends true ? CanSerializeReturn<R> extends true ? T : IsUnknown<UnwrapPromise<R>> extends true ? T : never : never : never : never; //#endregion export { Method, RPCMethod, SerializableReturnValue, SerializableValue }; //# sourceMappingURL=serializable.d.ts.map