mongodb-dynamic-api
Version:
Auto generated CRUD API for MongoDB using NestJS
50 lines (49 loc) • 2.35 kB
TypeScript
import { Type, ValidationPipeOptions } from '@nestjs/common';
import { AuthAbilityPredicate, DynamicApiResetPasswordCallback, DynamicApiServiceBeforeSaveCallback, DynamicApiServiceCallback, DynamicApiWebSocketOptions } from '../../../interfaces';
import { BaseEntity } from '../../../models';
type DynamicApiJWTOptions = {
secret: string;
expiresIn?: string | number;
};
type DynamicApiLoginOptions<Entity extends BaseEntity = any> = {
loginField?: keyof Entity;
passwordField?: keyof Entity;
callback?: DynamicApiServiceCallback<Entity>;
abilityPredicate?: AuthAbilityPredicate;
additionalFields?: (keyof Entity)[];
};
type DynamicApiRegisterOptions<Entity extends BaseEntity = any> = {
beforeSaveCallback?: DynamicApiServiceBeforeSaveCallback<Entity>;
callback?: DynamicApiServiceCallback<Entity>;
protected?: boolean;
abilityPredicate?: AuthAbilityPredicate;
additionalFields?: (keyof Entity | {
name: keyof Entity;
required?: boolean;
})[];
};
type DynamicApiUpdateAccountOptions<Entity extends BaseEntity = any> = {
beforeSaveCallback?: DynamicApiServiceBeforeSaveCallback<Entity>;
callback?: DynamicApiServiceCallback<Entity>;
abilityPredicate?: AuthAbilityPredicate;
additionalFieldsToExclude?: (keyof Entity)[];
};
type DynamicApiResetPasswordOptions<Entity extends BaseEntity = any> = {
emailField?: keyof Entity | string;
expirationInMinutes?: number;
beforeChangePasswordCallback?: DynamicApiServiceBeforeSaveCallback<Entity>;
resetPasswordCallback?: DynamicApiResetPasswordCallback<Entity>;
changePasswordCallback?: DynamicApiServiceCallback<Entity>;
changePasswordAbilityPredicate?: AuthAbilityPredicate;
};
type DynamicApiAuthOptions<Entity extends BaseEntity = any> = {
userEntity: Type<Entity>;
jwt?: DynamicApiJWTOptions;
login?: DynamicApiLoginOptions<Entity>;
register?: DynamicApiRegisterOptions<Entity>;
updateAccount?: DynamicApiUpdateAccountOptions<Entity>;
resetPassword?: Partial<DynamicApiResetPasswordOptions<Entity>>;
validationPipeOptions?: ValidationPipeOptions;
webSocket?: DynamicApiWebSocketOptions;
};
export type { DynamicApiAuthOptions, DynamicApiRegisterOptions, DynamicApiUpdateAccountOptions, DynamicApiJWTOptions, DynamicApiLoginOptions, DynamicApiResetPasswordOptions, };