Skip to content

Adapters

Adapters are used to serve the API. There are many adapters available, but all takes similar options, like prefixUrl, router, ctx (which is the initial context).

ts
import { createHTTPServer } from 'dredge-adapters'
import { rootRouter } from './root-router'
import { db } from './db' 

const server = createHTTPServer({
    prefixUrl: '/api',
    router: rootRouter,
    ctx: {
        db,
    }
})

Options

prefixUrl

Type: string

bodyParsers

ts
type BodyParserFunction = (options: {
    readonly body: Readable | null;
    readonly mediaType: string;
    readonly boundary?: string;
    readonly charset?: string;
} & BodyFunctions) => MaybePromise<any>;

type BodyParsers = Record<string, BodyParserFunction>

Key of BodyParsers is the media-type/subtype or media-type/* or */*. BodyFunctions are text(), arrayBuffer(), blob(), formData(), buffer(), stream(), They could be different depending on the adapter.

dataSerializers

ts
type DataSerializerFunction = (options: {
    data: any;
    mediaType: string;
    charset?: string;
    boundary?: string;
}) => MaybePromise<Body>;

type DataSerializers = Record<string, DataSerializerFunction>

Key of DataSerializers is the media-type/subtype or media-type/* or */*. Body could be string, ArrayBuffer, FormData, URLSearchParams. Different adapters support different body types.

deserializeParams

ts
type DeserializeParamsFunction = (
    params: Record<string, string>, schema: any
) => Record<string, any>

deserializeSearchParams

ts
type DeserializeSearchParamsFunction = (
    searchParams: Record<string, string[]>, schema: any
) => Record<string, any[]>