UNPKG

ts-patch-mongoose

Version:
77 lines (71 loc) 2.98 kB
import { HydratedDocument, Types, Query, Schema } from 'mongoose'; import { Operation } from 'fast-json-patch'; import ms from 'ms'; interface History { op: string; modelName: string; collectionName: string; collectionId: Types.ObjectId; version: number; doc?: object; user?: object; reason?: string; metadata?: object; patch?: Operation[]; } interface PatchEvent<T> { oldDoc?: HydratedDocument<T>; doc?: HydratedDocument<T>; patch?: Operation[]; } interface PatchContext<T> { op: string; modelName: string; collectionName: string; isNew?: boolean; createdDocs?: HydratedDocument<T>[]; deletedDocs?: HydratedDocument<T>[]; ignoreEvent?: boolean; ignorePatchHistory?: boolean; } type HookContext<T> = Query<T, T> & { op: string; _context: PatchContext<T>; }; type User = Record<string, unknown>; type Metadata = Record<string, unknown>; interface PluginOptions<T> { modelName?: string; collectionName?: string; eventUpdated?: string; eventCreated?: string; eventDeleted?: string; getUser?: (doc: HydratedDocument<T>) => Promise<User> | User; getReason?: (doc: HydratedDocument<T>) => Promise<string> | string; getMetadata?: (doc: HydratedDocument<T>) => Promise<Metadata> | Metadata; omit?: string[]; patchHistoryDisabled?: boolean; preDelete?: (docs: HydratedDocument<T>[]) => Promise<void>; } declare const setPatchHistoryTTL: (ttl: number | ms.StringValue) => Promise<void>; declare const patchEventEmitter: { [EventEmitter.captureRejectionSymbol]?<K>(error: Error, event: string | symbol, ...args: any[]): void; addListener<K>(eventName: string | symbol, listener: (...args: any[]) => void): any; on<K>(eventName: string | symbol, listener: (...args: any[]) => void): any; once<K>(eventName: string | symbol, listener: (...args: any[]) => void): any; removeListener<K>(eventName: string | symbol, listener: (...args: any[]) => void): any; off<K>(eventName: string | symbol, listener: (...args: any[]) => void): any; removeAllListeners(eventName?: string | symbol | undefined): any; setMaxListeners(n: number): any; getMaxListeners(): number; listeners<K>(eventName: string | symbol): Function[]; rawListeners<K>(eventName: string | symbol): Function[]; emit<K>(eventName: string | symbol, ...args: any[]): boolean; listenerCount<K>(eventName: string | symbol, listener?: Function | undefined): number; prependListener<K>(eventName: string | symbol, listener: (...args: any[]) => void): any; prependOnceListener<K>(eventName: string | symbol, listener: (...args: any[]) => void): any; eventNames(): (string | symbol)[]; }; declare const patchHistoryPlugin: <T>(schema: Schema<T>, opts: PluginOptions<T>) => void; export { patchEventEmitter, patchHistoryPlugin, setPatchHistoryTTL }; export type { History, HookContext, Metadata, PatchContext, PatchEvent, PluginOptions, User };