Skip to content

Commit 892f35b

Browse files
feat(io-ts-http): add patch http method type
We currently use api-ts in one of our internal services and we recently came across a limitation wherein, we had the need to use the PATCH http method but the api-ts service currently doesn't support it. As part of PR, we're introducing the PATCH http method within api-ts.
1 parent 2c77a7b commit 892f35b

File tree

5 files changed

+11
-4
lines changed

5 files changed

+11
-4
lines changed

packages/io-ts-http/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ value; for example:
131131
import { apiSpec } from '@api-ts/io-ts-http';
132132

133133
import { GetMessage, CreateMessage } from './routes/message';
134-
import { GetUser, CreateUser, UpdateUser, DeleteUser } from './routes/user';
134+
import { GetUser, CreateUser, PatchUser, UpdateUser, DeleteUser } from './routes/user';
135135

136136
/**
137137
* message-user service
@@ -148,6 +148,7 @@ export const API = apiSpec({
148148
post: CreateUser,
149149
put: UpdateUser,
150150
delete: DeleteUser,
151+
patch: PatchUser,
151152
},
152153
});
153154
```

packages/io-ts-http/docs/apiSpec.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ not do anything aside from enforce the correct type of the parameter passed to i
1313
import { apiSpec } from '@api-ts/io-ts-http';
1414

1515
import { GetMessage, CreateMessage } from './routes/message';
16-
import { GetUser, CreateUser, UpdateUser, DeleteUser } from './routes/user';
16+
import { GetUser, CreateUser, PatchUser, UpdateUser, DeleteUser } from './routes/user';
1717

1818
/**
1919
* Example service
@@ -30,6 +30,7 @@ export const API = apiSpec({
3030
post: CreateUser,
3131
put: UpdateUser,
3232
delete: DeleteUser,
33+
patch: PatchUser,
3334
},
3435
});
3536
```

packages/io-ts-http/src/httpRoute.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export const Method = t.keyof({
88
post: 1,
99
put: 1,
1010
delete: 1,
11+
patch: 1,
1112
});
1213

1314
export type Method = t.TypeOf<typeof Method>;
@@ -39,7 +40,7 @@ type UnknownKeysToError<Spec extends ApiSpec> = {
3940
[ApiAction in keyof Spec]: {
4041
[M in keyof Spec[ApiAction]]: M extends Method
4142
? Spec[ApiAction][M]
42-
: `Unsupported HTTP Method. Use "get" | "post" | "put" | "delete"`;
43+
: `Unsupported HTTP Method. Use "get" | "post" | "put" | "delete" | "patch"`;
4344
};
4445
};
4546

packages/typed-express-router/src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,10 +191,12 @@ export function wrapRouter<Spec extends ApiSpec>(
191191
post: makeAddRoute('post'),
192192
put: makeAddRoute('put'),
193193
delete: makeAddRoute('delete'),
194+
patch: makeAddRoute('patch'),
194195
getUnchecked: makeAddUncheckedRoute('get'),
195196
postUnchecked: makeAddUncheckedRoute('post'),
196197
putUnchecked: makeAddUncheckedRoute('put'),
197198
deleteUnchecked: makeAddUncheckedRoute('delete'),
199+
patchUnchecked: makeAddUncheckedRoute('patch'),
198200
use: (middleware: UncheckedRequestHandler) => {
199201
routerMiddleware.push(middleware);
200202
},

packages/typed-express-router/src/types.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,16 +114,18 @@ export type AddUncheckedRouteHandler<Spec extends ApiSpec, Method extends Method
114114
*/
115115
export type WrappedRouter<Spec extends ApiSpec> = Omit<
116116
express.Router,
117-
'get' | 'post' | 'put' | 'delete' | 'use'
117+
'get' | 'post' | 'put' | 'delete' | 'use' | 'patch'
118118
> &
119119
express.RequestHandler & {
120120
use: (middleware: UncheckedRequestHandler<ApiSpec, string, HttpMethod>) => void;
121121
get: AddRouteHandler<Spec, 'get'>;
122122
post: AddRouteHandler<Spec, 'post'>;
123123
put: AddRouteHandler<Spec, 'put'>;
124124
delete: AddRouteHandler<Spec, 'delete'>;
125+
patch: AddRouteHandler<Spec, 'patch'>;
125126
getUnchecked: AddUncheckedRouteHandler<Spec, 'get'>;
126127
postUnchecked: AddUncheckedRouteHandler<Spec, 'post'>;
127128
putUnchecked: AddUncheckedRouteHandler<Spec, 'put'>;
128129
deleteUnchecked: AddUncheckedRouteHandler<Spec, 'delete'>;
130+
patchUnchecked: AddUncheckedRouteHandler<Spec, 'patch'>;
129131
};

0 commit comments

Comments
 (0)