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[]>