@quickbiteapp/shared 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,4 @@
1
+ export declare class AppError extends Error {
2
+ readonly statusCode: number;
3
+ constructor(message: string, statusCode?: number);
4
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AppError = void 0;
4
+ class AppError extends Error {
5
+ constructor(message, statusCode = 500) {
6
+ super(message);
7
+ this.name = this.constructor.name;
8
+ this.statusCode = statusCode;
9
+ Object.setPrototypeOf(this, AppError.prototype);
10
+ }
11
+ }
12
+ exports.AppError = AppError;
@@ -0,0 +1,4 @@
1
+ import { AppError } from "./AppError";
2
+ export declare class BadRequestError extends AppError {
3
+ constructor(message?: string);
4
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BadRequestError = void 0;
4
+ const AppError_1 = require("./AppError");
5
+ class BadRequestError extends AppError_1.AppError {
6
+ constructor(message = "Bad request") {
7
+ super(message, 400);
8
+ }
9
+ }
10
+ exports.BadRequestError = BadRequestError;
@@ -0,0 +1,4 @@
1
+ import { AppError } from "./AppError";
2
+ export declare class EmailAlreadyTakenError extends AppError {
3
+ constructor(message?: string);
4
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EmailAlreadyTakenError = void 0;
4
+ const AppError_1 = require("./AppError");
5
+ class EmailAlreadyTakenError extends AppError_1.AppError {
6
+ constructor(message = "Email is already in use") {
7
+ super(message, 409);
8
+ }
9
+ }
10
+ exports.EmailAlreadyTakenError = EmailAlreadyTakenError;
@@ -0,0 +1,4 @@
1
+ import { AppError } from "./AppError";
2
+ export declare class InvalidEmailError extends AppError {
3
+ constructor(message?: string);
4
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InvalidEmailError = void 0;
4
+ const AppError_1 = require("./AppError");
5
+ class InvalidEmailError extends AppError_1.AppError {
6
+ constructor(message = "Email is invalid") {
7
+ super(message, 400);
8
+ }
9
+ }
10
+ exports.InvalidEmailError = InvalidEmailError;
@@ -0,0 +1,4 @@
1
+ import { AppError } from "./AppError";
2
+ export declare class NotFoundError extends AppError {
3
+ constructor(message?: string);
4
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotFoundError = void 0;
4
+ const AppError_1 = require("./AppError");
5
+ class NotFoundError extends AppError_1.AppError {
6
+ constructor(message = "Not found.") {
7
+ super(message, 404);
8
+ }
9
+ }
10
+ exports.NotFoundError = NotFoundError;
@@ -0,0 +1,8 @@
1
+ import { AppError } from "./AppError";
2
+ export interface ValidationErrorItem {
3
+ message: string;
4
+ }
5
+ export declare class RequestValidationError extends AppError {
6
+ readonly errors: ValidationErrorItem[];
7
+ constructor(errors: ValidationErrorItem[]);
8
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RequestValidationError = void 0;
4
+ const AppError_1 = require("./AppError");
5
+ class RequestValidationError extends AppError_1.AppError {
6
+ constructor(errors) {
7
+ super("Invalid request parameters", 400);
8
+ this.errors = errors;
9
+ Object.setPrototypeOf(this, RequestValidationError.prototype);
10
+ }
11
+ }
12
+ exports.RequestValidationError = RequestValidationError;
@@ -0,0 +1,4 @@
1
+ import { AppError } from "./AppError";
2
+ export declare class RequiredFieldError extends AppError {
3
+ constructor(message?: string);
4
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RequiredFieldError = void 0;
4
+ const AppError_1 = require("./AppError");
5
+ class RequiredFieldError extends AppError_1.AppError {
6
+ constructor(message = "Field is required") {
7
+ super(message, 400);
8
+ }
9
+ }
10
+ exports.RequiredFieldError = RequiredFieldError;
@@ -0,0 +1,9 @@
1
+ export * from './errors/AppError';
2
+ export * from './errors/BadRequestError';
3
+ export * from './errors/EmailAlreadyTaken';
4
+ export * from './errors/InvalidEmailError';
5
+ export * from './errors/NotFoundError';
6
+ export * from './errors/RequestValidationError';
7
+ export * from './errors/RequiredFieldError';
8
+ export * from './middlewares/ErrorHandler';
9
+ export * from './middlewares/ValidateRequest';
package/build/index.js ADDED
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./errors/AppError"), exports);
18
+ __exportStar(require("./errors/BadRequestError"), exports);
19
+ __exportStar(require("./errors/EmailAlreadyTaken"), exports);
20
+ __exportStar(require("./errors/InvalidEmailError"), exports);
21
+ __exportStar(require("./errors/NotFoundError"), exports);
22
+ __exportStar(require("./errors/RequestValidationError"), exports);
23
+ __exportStar(require("./errors/RequiredFieldError"), exports);
24
+ __exportStar(require("./middlewares/ErrorHandler"), exports);
25
+ __exportStar(require("./middlewares/ValidateRequest"), exports);
@@ -0,0 +1,2 @@
1
+ import { Request, Response, NextFunction } from "express";
2
+ export declare const errorHandler: (err: Error, req: Request, res: Response, next: NextFunction) => Response<any, Record<string, any>> | undefined;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.errorHandler = void 0;
4
+ const AppError_1 = require("../errors/AppError");
5
+ const RequestValidationError_1 = require("../errors/RequestValidationError");
6
+ const errorHandler = (err, req, res, next) => {
7
+ if (err instanceof RequestValidationError_1.RequestValidationError) {
8
+ return res.status(err.statusCode).json({
9
+ message: err.message,
10
+ errors: err.errors
11
+ });
12
+ }
13
+ if (err instanceof AppError_1.AppError) {
14
+ return res.status(err.statusCode).json({
15
+ message: err.message
16
+ });
17
+ }
18
+ console.error(err);
19
+ res.status(500).json({ message: "Internal Server Error" });
20
+ };
21
+ exports.errorHandler = errorHandler;
@@ -0,0 +1,2 @@
1
+ import { Request, Response, NextFunction } from "express";
2
+ export declare const validateRequest: (req: Request, res: Response, next: NextFunction) => void;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateRequest = void 0;
4
+ const express_validator_1 = require("express-validator");
5
+ const RequestValidationError_1 = require("../errors/RequestValidationError");
6
+ const validateRequest = (req, res, next) => {
7
+ const result = (0, express_validator_1.validationResult)(req);
8
+ if (!result.isEmpty()) {
9
+ const errors = result.array({ onlyFirstError: true }).map(err => ({
10
+ message: err.msg
11
+ }));
12
+ throw new RequestValidationError_1.RequestValidationError(errors);
13
+ }
14
+ next();
15
+ };
16
+ exports.validateRequest = validateRequest;
package/package.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "@quickbiteapp/shared",
3
+ "version": "1.0.6",
4
+ "main": "./build/index.js",
5
+ "types": "./build/index.d.ts",
6
+ "files": [
7
+ "build/**/*"
8
+ ],
9
+ "scripts": {
10
+ "clean": "rimraf ./build",
11
+ "build": "npm run clean && tsc",
12
+ "pub": "git add . && git commit -m \"Updates\" && npm version patch && npm run build && npm publish"
13
+ },
14
+ "publishConfig": {
15
+ "access": "public"
16
+ },
17
+ "keywords": [],
18
+ "author": "",
19
+ "license": "ISC",
20
+ "description": "",
21
+ "dependencies": {
22
+ "express": "^5.2.1",
23
+ "express-validator": "^7.3.1"
24
+ },
25
+ "devDependencies": {
26
+ "@types/express": "^5.0.6",
27
+ "del-cli": "^7.0.0",
28
+ "rimraf": "^6.1.2",
29
+ "typescript": "^5.9.3"
30
+ }
31
+ }