type-r2
Version:
Serializable, validated, and observable data layer for modern JS applications
36 lines (35 loc) • 1.76 kB
TypeScript
import { Record } from '../record';
import { Owner, Transaction, Transactional, TransactionOptions } from '../transactions';
export interface CollectionCore extends Transactional, Owner {
models: Record[];
model: typeof Record;
idAttribute: string;
get(objOrId: string | Record | Object): Record;
}
export type Elements = (Object | Record)[];
export interface CollectionOptions extends TransactionOptions {
sort?: boolean;
}
export type Comparator = (a: Record, b: Record) => number;
export declare function dispose(collection: CollectionCore): Record[];
export declare function convertAndAquire(collection: CollectionCore, attrs: {} | Record, options: CollectionOptions): Record;
export declare function free(owner: CollectionCore, child: Record, unset?: boolean): void;
export declare function freeAll(collection: CollectionCore, children: Record[]): Record[];
export declare function sortElements(collection: CollectionCore, options: CollectionOptions): boolean;
export interface IdIndex {
[id: string]: Record;
}
export declare function addIndex(index: IdIndex, model: Record): void;
export declare function removeIndex(index: IdIndex, model: Record): void;
export declare function updateIndex(index: IdIndex, model: Record): void;
export declare class CollectionTransaction implements Transaction {
object: CollectionCore;
isRoot: boolean;
added: Record[];
removed: Record[];
nested: Transaction[];
sorted: boolean;
constructor(object: CollectionCore, isRoot: boolean, added: Record[], removed: Record[], nested: Transaction[], sorted: boolean);
commit(initiator?: Transactional): void;
}
export declare function logAggregationError(collection: CollectionCore, options: TransactionOptions): void;