mirror of
https://github.com/amark/gun.git
synced 2025-03-30 15:08:33 +00:00

* New GUN typings * Fixing comments * Gun schema is now supported Co-authored-by: dbaranov <dbaranov@bellintegrator.com>
106 lines
2.9 KiB
TypeScript
106 lines
2.9 KiB
TypeScript
import { IGunChain2TNode } from '../types/utils.d';
|
|
import {
|
|
GunCallbackOn,
|
|
GunDataNode,
|
|
GunMessagePut,
|
|
GunOptionsOn,
|
|
GunOptionsOnce,
|
|
GunOptionsPut,
|
|
IGunChain,
|
|
GunSchema,
|
|
GunSoul,
|
|
} from '../types/gun';
|
|
|
|
import {} from '../types/gun/IGunInstance';
|
|
declare module '../types/gun/IGunInstance' {
|
|
export interface IGunInstance<TNode> {
|
|
/**
|
|
* @param value the data to save
|
|
* @param options `put` options
|
|
*/
|
|
promPut<V extends TNode & Record<string, GunSchema>>(
|
|
value: V,
|
|
options: GunOptionsPut
|
|
): Promise<{
|
|
ref: IGunChain<TNode, IGunInstance<TNode>, IGunInstance<TNode>, ''>;
|
|
ack: GunMessagePut;
|
|
}>;
|
|
}
|
|
}
|
|
|
|
import {} from '../types/gun/IGunChain';
|
|
declare module '../types/gun/IGunChain' {
|
|
export interface IGunChain<TNode, TChainParent, TGunInstance, TKey> {
|
|
/**
|
|
* @param value the data to save
|
|
* @param options `put` options
|
|
*/
|
|
promPut<
|
|
V extends
|
|
| (TNode extends object ? Partial<TNode> : TNode)
|
|
| GunSoul<TNode>
|
|
| IGunChain<TNode, any, any, any>
|
|
| IGunChain<NonNullable<TNode>, any, any, any>
|
|
>(
|
|
value: V,
|
|
options: GunOptionsPut
|
|
): Promise<{
|
|
ref: IGunChain<TNode, TChainParent, TGunInstance, TKey>;
|
|
ack: GunMessagePut;
|
|
}>;
|
|
|
|
/**
|
|
* @param value the data to save
|
|
* @param options `put` options
|
|
*/
|
|
promSet<
|
|
V extends Partial<N> | GunSoul<N> | IGunChain<N, any, any, any>,
|
|
K extends keyof TNode & string,
|
|
N extends TNode[K] & Record<string, GunSchema>
|
|
>(
|
|
value: V,
|
|
options: GunOptionsPut
|
|
): Promise<{
|
|
ref: V extends GunSchema
|
|
? IGunChain<
|
|
N,
|
|
IGunChain<TNode, TChainParent, TGunInstance, TKey>,
|
|
TGunInstance,
|
|
K
|
|
>
|
|
: IGunChain<
|
|
IGunChain2TNode<V>,
|
|
IGunChain<TNode, TChainParent, TGunInstance, TKey>,
|
|
TGunInstance,
|
|
K
|
|
>;
|
|
ack: GunMessagePut;
|
|
}>;
|
|
|
|
/**
|
|
* @param callback function to be called upon changes to data
|
|
* @param options `put` options
|
|
*/
|
|
promOn<V extends TNode>(
|
|
callback: GunCallbackOn<V, TKey>,
|
|
options: GunOptionsOn
|
|
): Promise<GunDataNode<V>>;
|
|
|
|
/**
|
|
* @param limit due to promises resolving too fast if we do not set a timer we will not be
|
|
* able receive any data back from gun before returning the promise works both following a
|
|
* `Chain.get` and a `Chain.map` (limit only applies to map). If no limit is chosen,
|
|
* defaults to 100 ms (quite sufficient to fetch about 2000 nodes or more)
|
|
* @param options `once` options
|
|
*/
|
|
promOnce(
|
|
limit: number,
|
|
options: GunOptionsOnce
|
|
): Promise<{
|
|
ref: IGunChain<TNode, TChainParent, TGunInstance, TKey>;
|
|
data: GunDataNode<TNode>;
|
|
key: keyof IGunChain2TNode<TChainParent> & string;
|
|
}>;
|
|
}
|
|
}
|