mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2026-07-03 16:50:15 +00:00
Add types for follow-redirects
This commit is contained in:
32
types/follow-redirects/follow-redirects-tests.ts
Normal file
32
types/follow-redirects/follow-redirects-tests.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
import { http, https } from 'follow-redirects';
|
||||
|
||||
http.request({
|
||||
host: 'localhost',
|
||||
path: '/a/b',
|
||||
port: 8000,
|
||||
maxRedirects: 12,
|
||||
}, (response) => {
|
||||
console.log(response.responseUrl, response.redirects);
|
||||
response.on('data', (chunk) => {
|
||||
console.log(chunk);
|
||||
});
|
||||
}).on('error', (err) => {
|
||||
console.error(err);
|
||||
});
|
||||
|
||||
http.get('http://bit.ly/900913', (response) => {
|
||||
response.on('data', (chunk) => {
|
||||
console.log(chunk);
|
||||
});
|
||||
}).on('error', (err) => {
|
||||
console.error(err);
|
||||
});
|
||||
|
||||
https.get('http://bit.ly/900913', (response) => {
|
||||
console.log(response.responseUrl, response.redirects);
|
||||
response.on('data', (chunk) => {
|
||||
console.log(chunk);
|
||||
});
|
||||
}).on('error', (err: Error) => {
|
||||
console.error(err);
|
||||
});
|
||||
3
types/follow-redirects/http.d.ts
vendored
Normal file
3
types/follow-redirects/http.d.ts
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
import { http } from '.';
|
||||
|
||||
export = http;
|
||||
3
types/follow-redirects/https.d.ts
vendored
Normal file
3
types/follow-redirects/https.d.ts
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
import { https } from '.';
|
||||
|
||||
export = https;
|
||||
118
types/follow-redirects/index.d.ts
vendored
Normal file
118
types/follow-redirects/index.d.ts
vendored
Normal file
@@ -0,0 +1,118 @@
|
||||
// Type definitions for follow-redirects 1.5
|
||||
// Project: https://github.com/olalonde/follow-redirects
|
||||
// Definitions by: Emily Klassen <https://github.com/forivall>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
// TypeScript Version: 2.8
|
||||
|
||||
/// <reference types="node" />
|
||||
|
||||
import * as coreHttp from 'http';
|
||||
import * as coreHttps from 'https';
|
||||
import { Writable } from 'stream';
|
||||
|
||||
export interface WrappableRequest {
|
||||
getHeader?(...args: any[]): any;
|
||||
setHeader(...args: any[]): any;
|
||||
removeHeader(...args: any[]): any;
|
||||
|
||||
abort?(...args: any[]): any;
|
||||
flushHeaders?(...args: any[]): any;
|
||||
setNoDelay?(...args: any[]): any;
|
||||
setSocketKeepAlive?(...args: any[]): any;
|
||||
setTimeout?(...args: any[]): any;
|
||||
}
|
||||
export interface WrappableResponse {
|
||||
statusCode?: number;
|
||||
headers: {
|
||||
location?: string
|
||||
};
|
||||
destroy(): any;
|
||||
}
|
||||
|
||||
export interface Scheme<Options, Request extends WrappableRequest, Response> {
|
||||
request(options: Options, callback?: (res: Response) => any): Request;
|
||||
}
|
||||
|
||||
export interface RedirectableRequest<Request extends WrappableRequest, Response> extends Writable {
|
||||
setHeader: Request['setHeader'];
|
||||
removeHeader: Request['removeHeader'];
|
||||
abort: Request['abort'];
|
||||
flushHeaders: Request['flushHeaders'];
|
||||
getHeader: Request['getHeader'];
|
||||
setNoDelay: Request['setNoDelay'];
|
||||
setSocketKeepAlive: Request['setSocketKeepAlive'];
|
||||
setTimeout: Request['setTimeout'];
|
||||
|
||||
addListener(event: string, listener: (...args: any[]) => void): this;
|
||||
addListener(event: "response", listener: (response: Response) => void): this;
|
||||
addListener(event: "error", listener: (err: Error) => void): this;
|
||||
|
||||
emit(event: string | symbol, ...args: any[]): boolean;
|
||||
emit(event: "response", response: Response): boolean;
|
||||
emit(event: "error", err: Error): boolean;
|
||||
|
||||
on(event: string, listener: (...args: any[]) => void): this;
|
||||
on(event: "response", listener: (response: Response) => void): this;
|
||||
on(event: "error", listener: (err: Error) => void): this;
|
||||
|
||||
once(event: string, listener: (...args: any[]) => void): this;
|
||||
once(event: "response", listener: (response: Response) => void): this;
|
||||
once(event: "error", listener: (err: Error) => void): this;
|
||||
|
||||
prependListener(event: string, listener: (...args: any[]) => void): this;
|
||||
prependListener(event: "response", listener: (response: Response) => void): this;
|
||||
prependListener(event: "error", listener: (err: Error) => void): this;
|
||||
|
||||
prependOnceListener(event: string, listener: (...args: any[]) => void): this;
|
||||
prependOnceListener(event: "response", listener: (response: Response) => void): this;
|
||||
prependOnceListener(event: "error", listener: (err: Error) => void): this;
|
||||
}
|
||||
|
||||
export interface RedirectScheme<Options, Request extends WrappableRequest, Response> {
|
||||
request(
|
||||
options: string | Options & FollowOptions,
|
||||
callback?: (res: Response & FollowResponse) => void
|
||||
): RedirectableRequest<Request, Response>;
|
||||
get(
|
||||
options: string | Options & FollowOptions,
|
||||
callback?: (res: Response & FollowResponse) => void
|
||||
): RedirectableRequest<Request, Response>;
|
||||
}
|
||||
|
||||
export type Override<T, U> = Pick<T, Exclude<keyof T, keyof U>> & U;
|
||||
export interface FollowOptions {
|
||||
maxRedirects?: number;
|
||||
maxBodyLength?: number;
|
||||
}
|
||||
|
||||
export interface FollowResponse {
|
||||
responseUrl: string;
|
||||
redirects: Redirect[];
|
||||
}
|
||||
|
||||
export interface Redirect {
|
||||
url: string;
|
||||
headers: coreHttp.IncomingHttpHeaders;
|
||||
statusCode: number;
|
||||
}
|
||||
|
||||
export const http: Override<typeof coreHttp, RedirectScheme<
|
||||
coreHttp.RequestOptions,
|
||||
coreHttp.ClientRequest,
|
||||
coreHttp.IncomingMessage
|
||||
>>;
|
||||
export const https: Override<typeof coreHttps, RedirectScheme<
|
||||
coreHttps.RequestOptions,
|
||||
coreHttp.ClientRequest,
|
||||
coreHttp.IncomingMessage
|
||||
>>;
|
||||
|
||||
export type WrappedScheme<T extends Scheme<any, any, any>> = Override<T, RedirectScheme<
|
||||
T extends Scheme<infer Options, any, any> ? Options : never,
|
||||
T extends Scheme<any, infer Request, any> ? Request : never,
|
||||
T extends Scheme<any, any, infer Response> ? Response : never
|
||||
>>;
|
||||
|
||||
export function wrap<T extends {[key: string]: Scheme<any, any, any>}>(protocols: T): {
|
||||
[K in keyof T]: WrappedScheme<T[K]>
|
||||
};
|
||||
25
types/follow-redirects/tsconfig.json
Normal file
25
types/follow-redirects/tsconfig.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"lib": [
|
||||
"es6"
|
||||
],
|
||||
"noImplicitAny": true,
|
||||
"noImplicitThis": true,
|
||||
"strictNullChecks": true,
|
||||
"strictFunctionTypes": true,
|
||||
"baseUrl": "../",
|
||||
"typeRoots": [
|
||||
"../"
|
||||
],
|
||||
"types": [],
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
},
|
||||
"files": [
|
||||
"index.d.ts",
|
||||
"http.d.ts",
|
||||
"https.d.ts",
|
||||
"follow-redirects-tests.ts"
|
||||
]
|
||||
}
|
||||
1
types/follow-redirects/tslint.json
Normal file
1
types/follow-redirects/tslint.json
Normal file
@@ -0,0 +1 @@
|
||||
{ "extends": "dtslint/dt.json" }
|
||||
Reference in New Issue
Block a user