http-cookie-agent
Version:
Allows cookies with every Node.js HTTP clients.
30 lines (22 loc) • 1.15 kB
TypeScript
import type * as http from 'node:http';
import type * as https from 'node:https';
import type { CookieJar } from 'tough-cookie';
export interface CookieOptions {
jar: CookieJar;
}
export type CookieAgentOptions = {
cookies?: CookieOptions | undefined;
};
type CookieAgent<BaseAgent extends http.Agent> = BaseAgent;
type WithCookieAgentOptions<T> = T extends http.AgentOptions ? T & CookieAgentOptions : T;
type ConstructorParams<Params extends unknown[]> = {
[Index in keyof Params]: WithCookieAgentOptions<Params[Index]>;
};
export function createCookieAgent<BaseAgent extends http.Agent = http.Agent, Params extends unknown[] = unknown[]>(
BaseAgentClass: new (...rest: Params) => BaseAgent,
): new (...rest: ConstructorParams<Params>) => CookieAgent<BaseAgent>;
export const HttpCookieAgent: new (options: http.AgentOptions & CookieAgentOptions) => CookieAgent<http.Agent>;
export const HttpsCookieAgent: new (options: https.AgentOptions & CookieAgentOptions) => CookieAgent<https.Agent>;
export const MixedCookieAgent: new (
options: http.AgentOptions & https.AgentOptions & CookieAgentOptions,
) => CookieAgent<https.Agent>;