UNPKG

@avonjs/avonjs

Version:

A fluent Node.js API generator.

32 lines (31 loc) 2.34 kB
import type Field from '../Fields/Field'; import type AvonRequest from '../Http/Requests/AvonRequest'; import type { Repository } from '../Repositories'; import type { Model, Transaction } from './interfaces'; import type { AnyValue, Deferred, Nullable, Optional, PrimaryKey } from './types'; export type UserResolver = (request: AvonRequest) => Deferred<Nullable<Model>>; export type ErrorHandler = (error: Error) => void; export type RunCallback = (request: AvonRequest, resource: Nullable<Model>) => Deferred<boolean>; export type SeeCallback = (request: AvonRequest) => boolean; export type FilledCallback = <TModel extends Model>(request: AvonRequest, model: TModel) => unknown; export type CallbackStack = [Model, Array<FilledCallback>]; export type NullableCallback = (value: AnyValue) => boolean; export type FilterableCallback = (request: AvonRequest, repository: Repository<Model>, value: AnyValue) => void; export type OrderingCallback = (request: AvonRequest, repository: Repository<Model>, value: AnyValue) => AnyValue; export type EvaluatorCallback = (request: AvonRequest) => boolean; export type ResourceEvaluatorCallback = (request: AvonRequest, resource?: Model) => boolean; export type PruneCallback = (request: AvonRequest, resource: Model, attribute: string) => AnyValue; export type ResolveCallback = (value: AnyValue, resource: Model, attribute: string) => AnyValue; export type FillCallback = <TModel extends Model>(request: AvonRequest, model: TModel, attribute: string, requestAttribute: string) => FilledCallback | unknown; export type DefaultCallback = (request: AvonRequest) => AnyValue; export type PivotFieldCallback = (request: AvonRequest) => Field[]; export type DisplayFieldCallback = (request: AvonRequest) => Field[]; export type RelatableQueryCallback = (request: AvonRequest, repository: Repository<Model>) => Repository<Model>; export type Auth = { id: PrimaryKey; }; export type AttemptCallback = (payload: Record<string, unknown>) => Promise<Nullable<Optional<Auth>>>; export type TransactionCallback<V, R extends Repository> = (repository: R, transacting: Transaction) => Promise<V>; export type QueryModifierCallback<T = AnyValue> = (query: T) => T; export type SanitizeCallback = (request: AvonRequest, resources: Model[]) => Model[]; export type UnaryFunction<T, R> = (source: T) => R;