UNPKG

@chubbyts/chubbyts-api

Version:

[![CI](https://github.com/chubbyts/chubbyts-api/workflows/CI/badge.svg?branch=master)](https://github.com/chubbyts/chubbyts-api/actions?query=workflow%3ACI) [![Coverage Status](https://coveralls.io/repos/github/chubbyts/chubbyts-api/badge.svg?branch=maste

51 lines (50 loc) 1.18 kB
import type { ServerRequest } from '@chubbyts/chubbyts-http-types/dist/message'; export type Embedded = { _embedded?: { [key: string]: unknown; }; }; export type Link = { href: string; templated?: boolean; [key: string]: unknown; }; export type Links = { _links?: { [key: string]: Link; }; }; export type Model<C> = { id: string; createdAt: Date; updatedAt?: Date; } & { [key in keyof C]: C[key]; }; export type EnrichedModel<C> = Model<C> & Embedded & Links; export type EnrichModel<C> = (model: Model<C>, context: { request: ServerRequest; [key: string]: unknown; }) => Promise<EnrichedModel<C>>; type BaseList = { offset: number; limit: number; filters: { [key: string]: unknown; }; sort: { [key: string]: 'asc' | 'desc'; }; count: number; }; export type List<C> = BaseList & { items: Array<Model<C>>; }; export type EnrichedList<C> = BaseList & { items: Array<EnrichedModel<C>>; } & Embedded & Links; export type EnrichList<C> = (list: List<C>, context: { request: ServerRequest; [key: string]: unknown; }) => Promise<EnrichedList<C>>; export {};