Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
38c1f13
feat(http): add custom `IncomingMessage` and `ServerResponse` support
vansergen Feb 20, 2022
1749b3f
test(http): add custom `IncomingMessage` and `ServerResponse`
vansergen Feb 20, 2022
7662362
style: add empty spaces
vansergen Feb 20, 2022
6164645
test(node): add `res.req`
vansergen Feb 20, 2022
3ac12bb
test(node): add `res.req`
vansergen Feb 20, 2022
3777929
test: update request/response types
vansergen Feb 20, 2022
5c11a8e
test(node): add `createServer`
vansergen Feb 20, 2022
52c710f
Merge pull request #4 from b2broker/master
vansergen Apr 4, 2022
cc42d07
Merge branch 'b2broker/http_request_response' into vansergen/node/cus…
vansergen Aug 22, 2022
2538f02
feat(node): add custom `IncomingMessage` and `ServerResponse` support
vansergen Aug 24, 2022
9e758b4
test: update interfaces
vansergen Aug 24, 2022
31dd0c8
test(stoppable): update http types
vansergen Aug 24, 2022
49c4982
test(on-finished): update http types
vansergen Aug 24, 2022
3c714aa
fix(node): update generic types
vansergen Aug 24, 2022
a19359f
Merge branch 'DefinitelyTyped:master' into node/custom-request-response
vansergen Aug 24, 2022
553a07d
fix(node:https): update `ServerOptions`
vansergen Aug 25, 2022
6995d01
Merge branch 'DefinitelyTyped:master' into node/custom-request-response
vansergen Aug 30, 2022
6693c9f
fix(node): update `emit` types
vansergen Aug 30, 2022
d35df07
Merge branch 'master' into node/custom-request-response
vansergen Sep 5, 2022
302f650
Merge branch 'DefinitelyTyped:master' into node/custom-request-response
vansergen Sep 7, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
186 changes: 134 additions & 52 deletions types/node/http.d.ts

Large diffs are not rendered by default.

256 changes: 198 additions & 58 deletions types/node/https.d.ts

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion types/node/node-tests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ import * as trace_events from 'node:trace_events';
foo: number;
}

class MyServerResponse extends http.ServerResponse {
class MyServerResponse<Request extends http.IncomingMessage = http.IncomingMessage> extends http.ServerResponse<Request> {
foo: string;
}

Expand Down
138 changes: 137 additions & 1 deletion types/node/test/http.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import * as dns from 'node:dns';
foo: number;
}

class MyServerResponse extends http.ServerResponse {
class MyServerResponse<Request extends http.IncomingMessage = http.IncomingMessage> extends http.ServerResponse<Request> {
foo: string;
}

Expand Down Expand Up @@ -47,6 +47,142 @@ import * as dns from 'node:dns';
server.closeAllConnections(); // $ExpectType void
}

// http Server (with custom IncomingMessage and ServerResponse)
{
let foo: 'foo';
let bar: 'bar';

class MyIncomingMessage extends http.IncomingMessage {
foo: typeof foo;
}

class MyServerResponse<
Request extends http.IncomingMessage = http.IncomingMessage,
> extends http.ServerResponse<Request> {
bar: typeof bar;
}

function reqListener(req: MyIncomingMessage, res: MyServerResponse): void {}

let server = new http.Server({ IncomingMessage: MyIncomingMessage, ServerResponse: MyServerResponse });
server = new http.Server({ IncomingMessage: MyIncomingMessage, ServerResponse: MyServerResponse }, (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server = new http.Server({ IncomingMessage: MyIncomingMessage, ServerResponse: MyServerResponse }, reqListener);

server.addListener('checkContinue', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.addListener('checkExpectation', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.addListener('connect', req => {
foo = req.foo;
});
server.addListener('request', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.addListener('upgrade', req => {
foo = req.foo;
});

server.on('checkContinue', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.on('checkExpectation', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.on('connect', req => {
foo = req.foo;
});
server.on('request', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.on('upgrade', req => {
foo = req.foo;
});

server.once('checkContinue', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.once('checkExpectation', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.once('connect', req => {
foo = req.foo;
});
server.once('request', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.once('upgrade', req => {
foo = req.foo;
});

server.prependListener('checkContinue', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.prependListener('checkExpectation', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.prependListener('connect', req => {
foo = req.foo;
});
server.prependListener('request', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.prependListener('upgrade', req => {
foo = req.foo;
});

server.prependOnceListener('checkContinue', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.prependOnceListener('checkExpectation', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.prependOnceListener('connect', req => {
foo = req.foo;
});
server.prependOnceListener('request', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.prependOnceListener('upgrade', req => {
foo = req.foo;
});
}

// http IncomingMessage
// http ServerResponse
{
Expand Down
138 changes: 137 additions & 1 deletion types/node/test/https.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ import * as dns from 'node:dns';
foo: number;
}

class MyServerResponse extends http.ServerResponse {
class MyServerResponse<Request extends http.IncomingMessage = http.IncomingMessage> extends http.ServerResponse<Request> {
foo: string;
}

Expand Down Expand Up @@ -93,6 +93,142 @@ import * as dns from 'node:dns';
}
}

// https Server (with custom IncomingMessage and ServerResponse)
{
let foo: 'foo';
let bar: 'bar';

class MyIncomingMessage extends http.IncomingMessage {
foo: typeof foo;
}

class MyServerResponse<
Request extends http.IncomingMessage = http.IncomingMessage,
> extends http.ServerResponse<Request> {
bar: typeof bar;
}

function reqListener(req: MyIncomingMessage, res: MyServerResponse): void {}

let server = new https.Server({ IncomingMessage: MyIncomingMessage, ServerResponse: MyServerResponse });
server = new https.Server({ IncomingMessage: MyIncomingMessage, ServerResponse: MyServerResponse }, (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server = new https.Server({ IncomingMessage: MyIncomingMessage, ServerResponse: MyServerResponse }, reqListener);

server.addListener('checkContinue', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.addListener('checkExpectation', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.addListener('connect', req => {
foo = req.foo;
});
server.addListener('request', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.addListener('upgrade', req => {
foo = req.foo;
});

server.on('checkContinue', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.on('checkExpectation', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.on('connect', req => {
foo = req.foo;
});
server.on('request', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.on('upgrade', req => {
foo = req.foo;
});

server.once('checkContinue', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.once('checkExpectation', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.once('connect', req => {
foo = req.foo;
});
server.once('request', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.once('upgrade', req => {
foo = req.foo;
});

server.prependListener('checkContinue', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.prependListener('checkExpectation', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.prependListener('connect', req => {
foo = req.foo;
});
server.prependListener('request', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.prependListener('upgrade', req => {
foo = req.foo;
});

server.prependOnceListener('checkContinue', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.prependOnceListener('checkExpectation', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.prependOnceListener('connect', req => {
foo = req.foo;
});
server.prependOnceListener('request', (req, res) => {
foo = req.foo;
bar = res.bar;
foo = res.req.foo;
});
server.prependOnceListener('upgrade', req => {
foo = req.foo;
});
}

// net server events

{
Expand Down
Loading