//#region src/requests/media/adapter.d.ts interface BaseContext { /** * Passed by your custom example generator, for your custom media adapter to receive. */ customData?: Record; } interface GoContext extends BaseContext { lang: 'go'; addImport: (name: string) => void; } interface JavaScriptContext extends BaseContext { lang: 'js'; addImport: (pkg: string, name: string) => void; } interface JavaContext extends BaseContext { lang: 'java'; addImport: (specifier: string) => void; } interface CSharpContext extends BaseContext { lang: 'csharp'; addImport: (specifier: string) => void; } type MediaContext = JavaContext | GoContext | JavaScriptContext | CSharpContext | (BaseContext & { lang: string; }); interface MediaAdapter { /** * encode data into specified media type for `fetch()`. * * Return the encoded form of `data.body` property. */ encode: (data: { body: unknown; }) => BodyInit; /** * generate code example for creating the body in a given programming language. * * @param data - request data. * @param lang - name of programming language. * @param ctx - context passed from the generator of programming language. * * @returns code that inits a `body` variable, or undefined if not supported (skip example for that language). */ generateExample: (data: { body: unknown; }, ctx: MediaContext) => string | undefined; } //#endregion export { MediaAdapter, MediaContext };