Skip to content

Commit f37f78e

Browse files
committed
Drop *HandlerDefinitions export to expose defns as *Handlers directly
Previously, {request,webSocket}Handlers was the implementation instances while *HandlerDefinitions was the remote-client side handler definitions themselves. This is annoying though - you never need handler implementations outside Mockttp, so in the few cases you need this, it just makes all the names much longer for no benefit. As step one of a larger redesign of this API, the *Handlers export now exposes the definitions directly, and the *HandlerDefinitions export is removed.
1 parent 709aea8 commit f37f78e

File tree

3 files changed

+17
-39
lines changed

3 files changed

+17
-39
lines changed

src/main.browser.ts

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -11,34 +11,11 @@ import * as completionCheckers from './rules/completion-checkers';
1111

1212
export {
1313
matchers,
14-
requestHandlerDefinitions,
15-
webSocketHandlerDefinitions,
14+
requestHandlerDefinitions as requestHandlers,
15+
webSocketHandlerDefinitions as webSocketHandlers,
1616
completionCheckers
1717
};
1818

19-
// We re-export definitions to pretend they're real handlers in the browser. This should be safe
20-
// because the missing methods (i.e. handle()) were always unusable in non-Node environments anyway.
21-
// In practice though, new browser code using this should actively use requestHandlerDefinitions instead.
22-
// In future, we should probably expose definitions only for both browsers & node, but that's a
23-
// breaking change.
24-
export const requestHandlers = {
25-
'SimpleHandler': requestHandlerDefinitions.SimpleHandlerDefinition,
26-
'CallbackHandler': requestHandlerDefinitions.CallbackHandlerDefinition,
27-
'StreamHandler': requestHandlerDefinitions.StreamHandlerDefinition,
28-
'FileHandler': requestHandlerDefinitions.FileHandlerDefinition,
29-
'PassThroughHandler': requestHandlerDefinitions.PassThroughHandlerDefinition,
30-
'CloseConnectionHandler': requestHandlerDefinitions.CloseConnectionHandlerDefinition,
31-
'TimeoutHandler': requestHandlerDefinitions.TimeoutHandlerDefinition,
32-
'HandlerLookup': requestHandlerDefinitions.HandlerDefinitionLookup
33-
};
34-
35-
export const webSocketHandlers = {
36-
'PassThroughWebSocketHandler': webSocketHandlerDefinitions.PassThroughWebSocketHandlerDefinition,
37-
'CloseConnectionHandler': webSocketHandlerDefinitions.CloseConnectionHandlerDefinition,
38-
'TimeoutHandler': webSocketHandlerDefinitions.TimeoutHandlerDefinition,
39-
'WsHandlerLookup': webSocketHandlerDefinitions.WsHandlerDefinitionLookup
40-
};
41-
4219
export { MOCKTTP_PARAM_REF } from './rules/rule-parameters';
4320

4421
// Export the core API:

src/main.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,19 @@ export type {
2626

2727
// Export rule data builders & type definitions:
2828
import * as matchers from './rules/matchers';
29-
import * as requestHandlers from './rules/requests/request-handlers';
29+
import type { RequestHandler, RequestHandlerOptions } from './rules/requests/request-handlers';
3030
import * as requestHandlerDefinitions from './rules/requests/request-handler-definitions';
31-
import * as webSocketHandlers from './rules/websockets/websocket-handlers';
31+
import type { WebSocketHandler } from './rules/websockets/websocket-handlers';
3232
import * as webSocketHandlerDefinitions from './rules/websockets/websocket-handler-definitions';
3333
import * as completionCheckers from './rules/completion-checkers';
3434

3535
export {
3636
matchers,
37-
requestHandlers,
38-
requestHandlerDefinitions,
39-
webSocketHandlers,
40-
webSocketHandlerDefinitions,
37+
RequestHandler,
38+
RequestHandlerOptions,
39+
requestHandlerDefinitions as requestHandlers,
40+
WebSocketHandler,
41+
webSocketHandlerDefinitions as webSocketHandlers,
4142
completionCheckers
4243
};
4344

test/integration/manual-rule-building.spec.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ describe("Mockttp rule building", function () {
1313
it("should allow manually adding a single rule", async () => {
1414
await server.addRequestRules({
1515
matchers: [new matchers.SimplePathMatcher('/endpoint')],
16-
handler: new requestHandlers.SimpleHandler(200, '', 'mock response'),
16+
handler: new requestHandlers.SimpleHandlerDefinition(200, '', 'mock response'),
1717
});
1818

1919
let response = await fetch(server.urlFor('/endpoint'));
@@ -28,7 +28,7 @@ describe("Mockttp rule building", function () {
2828
const rule = await server.addRequestRules({
2929
id: manualId,
3030
matchers: [new matchers.SimplePathMatcher('/endpoint')],
31-
handler: new requestHandlers.SimpleHandler(200, '', 'mock response'),
31+
handler: new requestHandlers.SimpleHandlerDefinition(200, '', 'mock response'),
3232
});
3333

3434
expect(rule[0].id).to.equal(manualId);
@@ -37,11 +37,11 @@ describe("Mockttp rule building", function () {
3737
it("should allow repeatedly adding rules", async () => {
3838
await server.addRequestRules({
3939
matchers: [new matchers.SimplePathMatcher('/endpoint')],
40-
handler: new requestHandlers.SimpleHandler(200, '', 'first mock response'),
40+
handler: new requestHandlers.SimpleHandlerDefinition(200, '', 'first mock response'),
4141
});
4242
await server.addRequestRules({
4343
matchers: [new matchers.SimplePathMatcher('/endpoint')],
44-
handler: new requestHandlers.SimpleHandler(200, '', 'second mock response'),
44+
handler: new requestHandlers.SimpleHandlerDefinition(200, '', 'second mock response'),
4545
});
4646

4747
let firstResponse = await fetch(server.urlFor('/endpoint'));
@@ -56,11 +56,11 @@ describe("Mockttp rule building", function () {
5656
it("should allow completely replacing rules", async () => {
5757
await server.addRequestRules({
5858
matchers: [new matchers.SimplePathMatcher('/endpoint')],
59-
handler: new requestHandlers.SimpleHandler(200, '', 'original mock response')
59+
handler: new requestHandlers.SimpleHandlerDefinition(200, '', 'original mock response')
6060
});
6161
await server.setRequestRules({
6262
matchers: [new matchers.SimplePathMatcher('/endpoint')],
63-
handler: new requestHandlers.SimpleHandler(200, '', 'replacement mock response')
63+
handler: new requestHandlers.SimpleHandlerDefinition(200, '', 'replacement mock response')
6464
});
6565

6666
let firstResponse = await fetch(server.urlFor('/endpoint'));
@@ -72,7 +72,7 @@ describe("Mockttp rule building", function () {
7272
it("should allow adding websocket rules", async function () {
7373
await server.addWebSocketRules({
7474
matchers: [new matchers.WildcardMatcher()],
75-
handler: new webSocketHandlers.PassThroughWebSocketHandler({
75+
handler: new webSocketHandlers.PassThroughWebSocketHandlerDefinition({
7676
forwarding: {
7777
// Simple echo fixture, see websocket-test-server.js
7878
targetHost: 'ws://localhost:8694'
@@ -97,7 +97,7 @@ describe("Mockttp rule building", function () {
9797
return expect((async () => { // Funky setup to handle sync & async failure for node & browser
9898
await server.addRequestRules({
9999
matchers: [],
100-
handler: new requestHandlers.SimpleHandler(200, 'mock response'),
100+
handler: new requestHandlers.SimpleHandlerDefinition(200, 'mock response'),
101101
})
102102
})()).to.be.rejectedWith('Cannot create a rule without at least one matcher');
103103
});

0 commit comments

Comments
 (0)