jinaga
Version:
Data management for web and mobile applications.
64 lines • 2.39 kB
TypeScript
import { Specification } from "./specification/specification";
export type FactReference = {
type: string;
hash: string;
};
export interface FactTuple {
facts: FactReference[];
bookmark: string;
}
export interface FactFeed {
tuples: FactTuple[];
bookmark: string;
}
export type PredecessorCollection = {
[role: string]: FactReference[] | FactReference;
};
export type FactRecord = {
type: string;
hash: string;
predecessors: PredecessorCollection;
fields: {
[field: string]: any;
};
};
export type FactSignature = {
publicKey: string;
signature: string;
};
export type FactEnvelope = {
fact: FactRecord;
signatures: FactSignature[];
};
export type ReferencesByName = {
[name: string]: FactReference;
};
export interface ProjectedResult {
tuple: ReferencesByName;
result: any;
}
export interface Storage {
close(): Promise<void>;
save(envelopes: FactEnvelope[]): Promise<FactEnvelope[]>;
read(start: FactReference[], specification: Specification): Promise<ProjectedResult[]>;
feed(feed: Specification, start: FactReference[], bookmark: string): Promise<FactFeed>;
whichExist(references: FactReference[]): Promise<FactReference[]>;
load(references: FactReference[]): Promise<FactEnvelope[]>;
purge(purgeConditions: Specification[]): Promise<number>;
purgeDescendants(purgeRoot: FactReference, triggers: FactReference[]): Promise<number>;
loadBookmark(feed: string): Promise<string>;
saveBookmark(feed: string, bookmark: string): Promise<void>;
getMruDate(specificationHash: string): Promise<Date | null>;
setMruDate(specificationHash: string, mruDate: Date): Promise<void>;
}
export interface Queue {
peek(): Promise<FactEnvelope[]>;
enqueue(envelopes: FactEnvelope[]): Promise<void>;
dequeue(envelopes: FactEnvelope[]): Promise<void>;
}
export declare function factReferenceEquals(a: FactReference): (r: FactReference) => boolean;
export declare function factEnvelopeEquals(r: FactReference): (e: FactEnvelope) => boolean;
export declare function uniqueFactReferences(references: FactReference[]): FactReference[];
export declare function computeTupleSubsetHash(tuple: ReferencesByName, subset: string[]): string;
export declare function validateGiven(start: FactReference[], specification: Specification): void;
//# sourceMappingURL=storage.d.ts.map