@iamcalegari/mongoat / PluginContext
Interface: PluginContext<ModelType>
Defined in: src/types/plugin.ts:14
The sealed surface a plugin's setup() receives. Reading schema/ allowedMethods never exposes the live model reference — both are disconnected copies, so mutating them has no effect on the model being built. The only way a plugin can affect the model is through the three registration methods below (pre/post/static).
Type Parameters
ModelType
ModelType extends Document = Document
Properties
allowedMethods
readonlyallowedMethods: readonlyMETHODS[]
Defined in: src/types/plugin.ts:16
collectionName
readonlycollectionName:string
Defined in: src/types/plugin.ts:15
schema
readonlyschema:Readonly<ModelValidationSchema>
Defined in: src/types/plugin.ts:17
Methods
post()
post<
M>(method,fn,options?):void
Defined in: src/types/plugin.ts:34
Registers a post hook for method. fireAndForget follows the same semantics as the model's own .post() — the hook dispatch is not awaited and any rejection is routed to the model's onHookError instead of propagating to the caller.
Type Parameters
M
M extends METHODS
Parameters
method
M
fn
HookFn<HookContextMap<ModelType>[M]>
options?
fireAndForget?
boolean
Returns
void
pre()
pre<
M>(method,fn):void
Defined in: src/types/plugin.ts:24
Registers a pre hook for method, appended after any hook already registered for the same method (declaration order is preserved across plugins and across the model's own config).
Type Parameters
M
M extends METHODS
Parameters
method
M
fn
HookFn<HookContextMap<ModelType>[M]>
Returns
void
static()
static(
name,fn):void
Defined in: src/types/plugin.ts:47
Attaches fn as a method on the model under name. this inside fn is bound to the model instance, so escape-hatch/native methods (this.getCollection(), this.find(), ...) are available from within it. Colliding with a native model member — or with a static already registered by a different plugin — is rejected instead of silently overwritten.
Parameters
name
string
fn
(...args) => unknown
Returns
void