/// import { EventEmitter } from "events"; import { Callback } from "./core/callback"; import { Constructor } from "./index"; import { ResultCallback } from "./core/callback"; import { InternalSessionFactory, SessionFactory } from "./sessionFactory"; import { Persister } from "./persister"; import { EntityMapping } from "./mapping/entityMapping"; import { QueryBuilder, FindOneQuery } from "./query/queryBuilder"; import { QueryDefinition } from "./query/queryDefinition"; export interface Session { factory: SessionFactory; save(obj: Object, callback?: Callback): void; remove(obj: Object, callback?: Callback): void; detach(obj: Object, callback?: Callback): void; refresh(obj: Object, callback: Callback): void; flush(callback?: Callback): void; clear(callback?: Callback): void; find(ctr: Constructor, id: any, callback?: ResultCallback): FindOneQuery; exists(ctr: Constructor, id: any, callback: ResultCallback): void; getReference(ctr: Constructor, id: any): T; fetch(obj: T, callback?: ResultCallback): void; fetch(obj: T, path: string | string[], callback?: ResultCallback): void; query(ctr: Constructor): QueryBuilder; wait(callback?: Callback): void; close(callback?: Callback): void; contains(obj: Object): boolean; toDocument(obj: Object, callback?: ResultCallback): Object; isDirty(obj: Object, callback?: ResultCallback): boolean; getVersion(obj: Object): number; getEntities(): Object[]; on(event: string, listener: Function): EventEmitter; } export interface InternalSession extends Session { factory: InternalSessionFactory; getObject(id: any): any; registerManaged(persister: Persister, entity: Object, document: any): void; notifyRemoved(entity: Object): void; getPersister(mapping: EntityMapping): Persister; getReferenceInternal(mapping: EntityMapping, id: any): any; fetchInternal(entity: Object, paths: string[], callback: ResultCallback): void; executeQuery(query: QueryDefinition, callback: ResultCallback): void; } export declare class SessionImpl extends EventEmitter implements InternalSession { factory: InternalSessionFactory; private _persisters; private _objectLinksById; private _objectLinks; private _scheduleHead; private _scheduleTail; private _queue; private _traceEnabled; constructor(factory: InternalSessionFactory); save(obj: any, callback?: Callback): void; remove(obj: any, callback?: Callback): void; refresh(obj: any, callback?: Callback): void; detach(obj: any, callback?: Callback): void; clear(callback?: Callback): void; flush(callback?: Callback): void; wait(callback?: Callback): void; find(ctr: Constructor, id: any, callback?: ResultCallback): FindOneQuery; exists(ctr: Constructor, id: any, callback: ResultCallback): void; fetch(obj: T, pathsOrCallback: any, callback?: ResultCallback): void; close(callback?: Callback): void; executeQuery(query: QueryDefinition, callback: ResultCallback): void; contains(obj: any): boolean; getEntities(): Object[]; getReference(ctr: Constructor, id: any): T; toDocument(obj: Object, callback?: ResultCallback): Object; isDirty(obj: Object, callback?: ResultCallback): boolean; getVersion(obj: Object): number; getReferenceInternal(mapping: EntityMapping, id: any): any; getObject(id: any): any; registerManaged(persister: Persister, entity: any, document: any): void; private _trackChanges(links); private _stopWatching(links); getPersister(mapping: EntityMapping): Persister; query(ctr: Constructor): QueryBuilder; private _execute(action, arg, callback); private _save(obj, callback); private _saveEntities(entities, callback); private _makeDirty(links); private _clearDirty(links); notifyRemoved(entity: Object): void; private _remove(obj, callback); private _removeEntities(entities, callback); private _removeEntity(obj, scheduleDelete); private _detach(obj, callback); private _detachEntities(entities, callback); private _refresh(obj, callback); private _refreshEntities(entities, callback); private _flush(callback); private _buildBatch(batch, links, callback); private _batchCompleted(head, duration, callback); private _logFlushStats(head, duration); private _close(callback); fetchInternal(obj: any, paths: string[], callback: ResultCallback): void; private _fetchPaths(obj, paths, callback); private _clear(callback); private _getObjectLinks(obj); private _linkObject(obj, persister); private _unlinkObject(links); private _cleanupUnlinkedObject(links); private _scheduleOperation(links, operation); private _clearScheduledOperation(links); private _clearIdentifier(links); private _findReferencedEntities(obj, flags, callback); private _walk(mapping, entity, flags, entities, embedded, callback); private _createTaskQueue(); }