mirror of
https://github.com/amark/gun.git
synced 2025-03-30 15:08:33 +00:00
38 lines
1.9 KiB
TypeScript
38 lines
1.9 KiB
TypeScript
import { IGunChainReference } from './chain';
|
|
export declare type ArrayOf<T> = T extends Array<infer U> ? U : never;
|
|
/** Gun does not accept Array value, so we need extract to make types correct */
|
|
export declare type AllowArray<T> = ArrayOf<T> extends never ? T : ArrayOf<T>;
|
|
export declare type DisallowArray<T> = ArrayOf<T> extends never ? T : never;
|
|
/** These types cannot be stored on Gun */
|
|
export declare type AlwaysDisallowedType<T> = T extends (...args: any[]) => void ? never : T extends {
|
|
new (...args: any[]): any;
|
|
} ? never : AccessObject<T>;
|
|
export declare type AccessObject<T> = T extends object ? {
|
|
[key in keyof T]: (AlwaysDisallowedType<T[key]> extends never ? never : AccessObject<T[key]>);
|
|
} : T;
|
|
/** These types cannot be stored on Gun's root level */
|
|
export declare type DisallowPrimitives<Open, T> = Open extends false ? T : T extends string ? never : T extends number ? never : T extends boolean ? never : T extends null ? never : T extends undefined ? never : T;
|
|
export declare type ArrayAsRecord<DataType> = ArrayOf<DataType> extends never ? DataType : Record<string, any>;
|
|
export declare type Saveable<DataType> = Partial<DataType> | string | number | boolean | null | IGunChainReference<DataType>;
|
|
export declare type AckCallback = (ack: {
|
|
err: Error;
|
|
ok: any;
|
|
} | {
|
|
err: undefined;
|
|
ok: string;
|
|
}) => void;
|
|
export declare type IGunCryptoKeyPair = Record<'pub' | 'priv' | 'epub' | 'epriv', string>;
|
|
export interface IGunRecordNodeRawBase {
|
|
'#': string;
|
|
}
|
|
export interface IGunRecordNodeRawExtra<DataType> extends IGunRecordNodeRawBase {
|
|
'>': Record<keyof DataType, number>;
|
|
}
|
|
export interface IGunRecordNodeRaw<DataType> {
|
|
'_': IGunRecordNodeRawExtra<DataType>;
|
|
}
|
|
export declare type IGunRecordNode<DataType> = {
|
|
[K in keyof DataType]: IGunRecordNodeRawBase;
|
|
} & IGunRecordNodeRaw<DataType>;
|
|
export declare type IGunRecordData<DataType> = DataType & IGunRecordNodeRaw<DataType>;
|