diff --git a/types/proxy-addr/index.d.ts b/types/proxy-addr/index.d.ts new file mode 100644 index 0000000000..c2b8c61c5f --- /dev/null +++ b/types/proxy-addr/index.d.ts @@ -0,0 +1,18 @@ +// Type definitions for proxy-addr 2.0 +// Project: https://github.com/jshttp/proxy-addr#readme +// Definitions by: BendingBender +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/// +import { IncomingMessage } from 'http'; + +export = proxyAddr; + +declare function proxyAddr(req: IncomingMessage, trust: proxyAddr.Address | proxyAddr.Address[] | ((addr: string, i: number) => boolean)): string; + +declare namespace proxyAddr { + function all(req: IncomingMessage, trust?: Address | Address[] | ((addr: string, i: number) => boolean)): string[]; + function compile(val: Address | Address[]): (addr: string, i: number) => boolean; + + type Address = 'loopback' | 'linklocal' | 'uniquelocal' | string; +} diff --git a/types/proxy-addr/proxy-addr-tests.ts b/types/proxy-addr/proxy-addr-tests.ts new file mode 100644 index 0000000000..9b2da75fac --- /dev/null +++ b/types/proxy-addr/proxy-addr-tests.ts @@ -0,0 +1,27 @@ +import proxyaddr = require('proxy-addr'); +import { createServer } from 'http'; + +createServer(req => { + // $ExpectType string + proxyaddr(req, addr => addr === '127.0.0.1'); + proxyaddr(req, (addr, i) => i < 1); + + proxyaddr(req, '127.0.0.1'); + proxyaddr(req, ['127.0.0.0/8', '10.0.0.0/8']); + proxyaddr(req, ['127.0.0.0/255.0.0.0', '192.168.0.0/255.255.0.0']); + + proxyaddr(req, '::1'); + proxyaddr(req, ['::1/128', 'fe80::/10']); + + proxyaddr(req, 'loopback'); + proxyaddr(req, ['loopback', 'fc00:ac:1ab5:fff::1/64']); + + // $ExpectType string[] + proxyaddr.all(req); + proxyaddr.all(req, 'loopback'); + + const trust = proxyaddr.compile('localhost'); + proxyaddr.compile(['localhost']); + trust; // $ExpectType (addr: string, i: number) => boolean + proxyaddr(req, trust); +}); diff --git a/types/proxy-addr/tsconfig.json b/types/proxy-addr/tsconfig.json new file mode 100644 index 0000000000..cfd79e445d --- /dev/null +++ b/types/proxy-addr/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "proxy-addr-tests.ts" + ] +} diff --git a/types/proxy-addr/tslint.json b/types/proxy-addr/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/proxy-addr/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }