Skip to content

Commit 19bbafa

Browse files
committed
added mime-types as dependency
1 parent 62c2119 commit 19bbafa

File tree

5 files changed

+179
-179
lines changed

5 files changed

+179
-179
lines changed

.npmignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
index.ts
2+
.gitignore

README.md

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ app.get((req,res)=>{
1515
```
1616
> That will work only when using a `GET` request
1717
18-
In Next.js (and Vercel) apps, your api are files in a specific order in the project directory, each file with a default export being the actual handler that will handle that request.
18+
In Next.js (and Vercel) apps, your API are files in a specific order in the project directory, each file with a default export being the actual handler that will handle that request.
1919

2020
First, install the module:
2121

@@ -102,9 +102,4 @@ export default validate({
102102
res.send(deletedPost);
103103
},
104104
});
105-
```
106-
> Async handlers work too:), but this is thanks to Next.js itself, not me:P
107-
108-
That's it!
109-
110-
You can follow me on Github as [Danybeltran](https://github.com/danybeltran), I sometimes work on other stuff. Check a similar package made for Vercel APIs: [serverless-request-validator](https://www.npmjs.com/package/serverless-request-validator), also by me. Thanks!
105+
```

index.d.ts

Lines changed: 62 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,62 @@
1-
import { NextApiRequest, NextApiResponse } from "next";
2-
interface ValidateRequest extends NextApiRequest {}
3-
interface ValidateResponse<T> extends NextApiResponse {
4-
sendStatus?: (code: number, message?: string) => void;
5-
sendFile?: (url?: string) => void;
6-
}
7-
/** Request handler */
8-
declare type RequestValidatorHandlerType = (
9-
/** Request object */
10-
Req: ValidateRequest,
11-
/** Response object */
12-
Res: ValidateResponse<any>
13-
) => void;
14-
declare type SingleHandler = (
15-
/** Handle only requests using one request method */
16-
Req: RequestValidatorHandlerType
17-
) => void;
18-
interface IValidator {
19-
/** Handles a GET request */
20-
get?: SingleHandler;
21-
/** Handles a POST request */
22-
post?: SingleHandler;
23-
/** Handles a PUT request */
24-
put?: SingleHandler;
25-
/** Handles a DELETE request */
26-
delete?: SingleHandler;
27-
/** Handles a HEAD request */
28-
head?: SingleHandler;
29-
/** Handles a CONNECT request */
30-
connect?: SingleHandler;
31-
/** Handles an OPTIONS request */
32-
options?: SingleHandler;
33-
/** Handles a TRACE request */
34-
trace?: SingleHandler;
35-
/** Handles a PATCH request */
36-
patch?: SingleHandler;
37-
}
38-
interface IValidatorProps {
39-
/** Handles a GET request */
40-
get?: RequestValidatorHandlerType;
41-
/** Handles a POST request */
42-
post?: RequestValidatorHandlerType;
43-
/** Handles a PUT request */
44-
put?: RequestValidatorHandlerType;
45-
/** Handles a DELETE request */
46-
delete?: RequestValidatorHandlerType;
47-
/** Handles a HEAD request */
48-
head?: RequestValidatorHandlerType;
49-
/** Handles a CONNECT request */
50-
connect?: RequestValidatorHandlerType;
51-
/** Handles an OPTIONS request */
52-
options?: RequestValidatorHandlerType;
53-
/** Handles a TRACE request */
54-
trace?: RequestValidatorHandlerType;
55-
/** Handles a PATCH request */
56-
patch?: RequestValidatorHandlerType;
57-
}
58-
/** Specify callbacks for different methods made to an endpoint */
59-
declare type ValidateType = (handlers: IValidatorProps) => Function;
60-
interface IValidate extends IValidator, ValidateType {}
61-
declare const Validate: IValidate;
62-
export default Validate;
1+
import { NextApiRequest, NextApiResponse } from "next";
2+
interface ValidateRequest extends NextApiRequest {
3+
}
4+
interface ValidateResponse<T> extends NextApiResponse {
5+
sendStatus?: (code: number, message?: string) => void;
6+
sendFile?: (url?: string) => void;
7+
}
8+
/** Request handler */
9+
declare type RequestValidatorHandlerType = (
10+
/** Request object */
11+
Req: ValidateRequest,
12+
/** Response object */
13+
Res: ValidateResponse<any>) => void;
14+
declare type SingleHandler = (
15+
/** Handle only requests using one request method */
16+
Req: RequestValidatorHandlerType) => void;
17+
interface IValidator {
18+
/** Handles a GET request */
19+
get?: SingleHandler;
20+
/** Handles a POST request */
21+
post?: SingleHandler;
22+
/** Handles a PUT request */
23+
put?: SingleHandler;
24+
/** Handles a DELETE request */
25+
delete?: SingleHandler;
26+
/** Handles a HEAD request */
27+
head?: SingleHandler;
28+
/** Handles a CONNECT request */
29+
connect?: SingleHandler;
30+
/** Handles an OPTIONS request */
31+
options?: SingleHandler;
32+
/** Handles a TRACE request */
33+
trace?: SingleHandler;
34+
/** Handles a PATCH request */
35+
patch?: SingleHandler;
36+
}
37+
interface IValidatorProps {
38+
/** Handles a GET request */
39+
get?: RequestValidatorHandlerType;
40+
/** Handles a POST request */
41+
post?: RequestValidatorHandlerType;
42+
/** Handles a PUT request */
43+
put?: RequestValidatorHandlerType;
44+
/** Handles a DELETE request */
45+
delete?: RequestValidatorHandlerType;
46+
/** Handles a HEAD request */
47+
head?: RequestValidatorHandlerType;
48+
/** Handles a CONNECT request */
49+
connect?: RequestValidatorHandlerType;
50+
/** Handles an OPTIONS request */
51+
options?: RequestValidatorHandlerType;
52+
/** Handles a TRACE request */
53+
trace?: RequestValidatorHandlerType;
54+
/** Handles a PATCH request */
55+
patch?: RequestValidatorHandlerType;
56+
}
57+
/** Specify callbacks for different methods made to an endpoint */
58+
declare type ValidateType = (handlers: IValidatorProps) => Function;
59+
interface IValidate extends IValidator, ValidateType {
60+
}
61+
declare const Validate: IValidate;
62+
export default Validate;

index.js

Lines changed: 108 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -1,108 +1,108 @@
1-
"use strict";
2-
var __assign = (this && this.__assign) || function () {
3-
__assign = Object.assign || function(t) {
4-
for (var s, i = 1, n = arguments.length; i < n; i++) {
5-
s = arguments[i];
6-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7-
t[p] = s[p];
8-
}
9-
return t;
10-
};
11-
return __assign.apply(this, arguments);
12-
};
13-
exports.__esModule = true;
14-
var mime_types_1 = require("mime-types");
15-
var fs = require("fs");
16-
var RequestMethods = [
17-
"get",
18-
"post",
19-
"put",
20-
"delete",
21-
"head",
22-
"connect",
23-
"options",
24-
"trace",
25-
"patch",
26-
];
27-
var Validate = function (handlers) {
28-
var validateResponseCallback = function (req, res) {
29-
var _handlers = __assign({}, handlers);
30-
var vResponse = __assign(__assign({}, res), { sendStatus: function (code, message) {
31-
if (message === void 0) { message = ""; }
32-
res.status(code).send(message);
33-
}, sendFile: function (url) {
34-
if (url === void 0) { url = ""; }
35-
try {
36-
var fileHeadType = mime_types_1.lookup(url);
37-
if (typeof fileHeadType === "string") {
38-
res.writeHead(200, {
39-
"Content-Type": fileHeadType.toString()
40-
});
41-
var rs = fs.createReadStream(url);
42-
rs.pipe(res);
43-
}
44-
else {
45-
res.status(404).send("File not found");
46-
}
47-
}
48-
catch (err) {
49-
throw err;
50-
}
51-
} });
52-
try {
53-
RequestMethods.forEach(function (requestMethod) {
54-
if (!handlers[requestMethod]) {
55-
var invalidMethodCb = function (req, res) {
56-
res
57-
.status(405)
58-
.send("Cannot " + requestMethod.toUpperCase() + " " + req.url);
59-
};
60-
_handlers[requestMethod] = invalidMethodCb;
61-
}
62-
});
63-
return _handlers[req.method.toLowerCase()](req, vResponse);
64-
}
65-
catch (err) {
66-
res.send("An error ocurred");
67-
throw err;
68-
}
69-
};
70-
return validateResponseCallback;
71-
};
72-
RequestMethods.forEach(function (requestMethod) {
73-
Validate[requestMethod] = function (handler) {
74-
var responseCb = function (req, res) {
75-
var method = req.method;
76-
var vResponse = __assign(__assign({}, res), { sendStatus: function (code, message) {
77-
if (message === void 0) { message = ""; }
78-
res.status(code).send(message);
79-
}, sendFile: function (url) {
80-
if (url === void 0) { url = ""; }
81-
try {
82-
var fileHeadType = mime_types_1.lookup(url);
83-
if (typeof fileHeadType === "string") {
84-
res.writeHead(200, {
85-
"Content-Type": fileHeadType.toString()
86-
});
87-
var rs = fs.createReadStream(url);
88-
rs.pipe(res);
89-
}
90-
else {
91-
res.status(404).send("File not found");
92-
}
93-
}
94-
catch (err) {
95-
throw err;
96-
}
97-
} });
98-
if (method.toLowerCase() === requestMethod) {
99-
handler(req, vResponse);
100-
}
101-
else {
102-
vResponse.sendStatus(405, "Cannot " + method + " " + req.url);
103-
}
104-
};
105-
return responseCb;
106-
};
107-
});
108-
exports["default"] = Validate;
1+
"use strict";
2+
var __assign = (this && this.__assign) || function () {
3+
__assign = Object.assign || function(t) {
4+
for (var s, i = 1, n = arguments.length; i < n; i++) {
5+
s = arguments[i];
6+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7+
t[p] = s[p];
8+
}
9+
return t;
10+
};
11+
return __assign.apply(this, arguments);
12+
};
13+
exports.__esModule = true;
14+
var mime_types_1 = require("mime-types");
15+
var fs = require("fs");
16+
var RequestMethods = [
17+
"get",
18+
"post",
19+
"put",
20+
"delete",
21+
"head",
22+
"connect",
23+
"options",
24+
"trace",
25+
"patch",
26+
];
27+
var Validate = function (handlers) {
28+
var validateResponseCallback = function (req, res) {
29+
var _handlers = __assign({}, handlers);
30+
var vResponse = __assign(__assign({}, res), { sendStatus: function (code, message) {
31+
if (message === void 0) { message = ""; }
32+
res.status(code).send(message);
33+
}, sendFile: function (url) {
34+
if (url === void 0) { url = ""; }
35+
try {
36+
var fileHeadType = (0, mime_types_1.lookup)(url);
37+
if (typeof fileHeadType === "string") {
38+
res.writeHead(200, {
39+
"Content-Type": fileHeadType.toString()
40+
});
41+
var rs = fs.createReadStream(url);
42+
rs.pipe(res);
43+
}
44+
else {
45+
res.status(404).send("File not found");
46+
}
47+
}
48+
catch (err) {
49+
throw err;
50+
}
51+
} });
52+
try {
53+
RequestMethods.forEach(function (requestMethod) {
54+
if (!handlers[requestMethod]) {
55+
var invalidMethodCb = function (req, res) {
56+
res
57+
.status(405)
58+
.send("Cannot ".concat(requestMethod.toUpperCase(), " ").concat(req.url));
59+
};
60+
_handlers[requestMethod] = invalidMethodCb;
61+
}
62+
});
63+
return _handlers[req.method.toLowerCase()](req, vResponse);
64+
}
65+
catch (err) {
66+
res.send("An error ocurred");
67+
throw err;
68+
}
69+
};
70+
return validateResponseCallback;
71+
};
72+
RequestMethods.forEach(function (requestMethod) {
73+
Validate[requestMethod] = function (handler) {
74+
var responseCb = function (req, res) {
75+
var method = req.method;
76+
var vResponse = __assign(__assign({}, res), { sendStatus: function (code, message) {
77+
if (message === void 0) { message = ""; }
78+
res.status(code).send(message);
79+
}, sendFile: function (url) {
80+
if (url === void 0) { url = ""; }
81+
try {
82+
var fileHeadType = (0, mime_types_1.lookup)(url);
83+
if (typeof fileHeadType === "string") {
84+
res.writeHead(200, {
85+
"Content-Type": fileHeadType.toString()
86+
});
87+
var rs = fs.createReadStream(url);
88+
rs.pipe(res);
89+
}
90+
else {
91+
res.status(404).send("File not found");
92+
}
93+
}
94+
catch (err) {
95+
throw err;
96+
}
97+
} });
98+
if (method.toLowerCase() === requestMethod) {
99+
handler(req, vResponse);
100+
}
101+
else {
102+
vResponse.sendStatus(405, "Cannot ".concat(method, " ").concat(req.url));
103+
}
104+
};
105+
return responseCb;
106+
};
107+
});
108+
exports["default"] = Validate;

package.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "next-api-validation",
3-
"version": "1.0.4",
3+
"version": "1.0.5",
44
"description": "Request validator implemented in Next.js:)",
55
"main": "index.js",
66
"types": "index.d.ts",
@@ -22,5 +22,8 @@
2222
"bugs": {
2323
"url": "https://github.com/danybeltran/next-api-validation/issues"
2424
},
25-
"homepage": "https://github.com/danybeltran/next-api-validation#readme"
25+
"homepage": "https://github.com/danybeltran/next-api-validation#readme",
26+
"dependencies": {
27+
"mime-types": "^2.1.35"
28+
}
2629
}

0 commit comments

Comments
 (0)