UNPKG

zaions-express-tool-kit

Version:

Zaions Express Tool Kit, this is for expressJs/Typescript projects created by Zaions Dev Team (https://zaions.com), We hope you will love this and all other packages we have developed for you, please do react out if you face any issue in packages we deliv

1 lines 20.4 kB
{"version":3,"sources":["../src/utils/helpers/middlewareHelpers/index.ts","../src/configure/index.ts","../src/utils/helpers/apiHelpers/index.ts","../src/middlewares/index.ts","../src/utils/helpers/genericHelpers/index.ts","../src/utils/helpers/validationHelpers/index.ts","../src/validationSchema/auth/index.ts"],"names":["_rateLimiterOptions","getExpressRateLimiterOptions","setExpressRateLimiterOptions","_options","__spreadValues","configureZETK","options","rateLimiterOptions","sendApiResponse","res","success","message","ztkMessages","data","dataList","authToken","errors","code","ResponseCodeEnum","status","ResponseStatusEnum","sendApiSuccessResponse","sendApiFailedResponse","sendBadRequestResponse","sendUnAuthenticatedErrorResponse","sendUnAuthorizedErrorResponse","sendNotFoundErrorResponse","sendTooManyRequestsErrorResponse","sendItemExistsErrorResponse","_a","_b","_c","_d","limiter","rateLimit","req","ip","_","applyMiddlewaresOnApp","expressApp","applyCors","expressJson","expressUrlEncoded","applyRateLimiter","expressRateLimiter","cors","urlencoded","json","invalidRequestHandler","app","isApiResponse","value","validateRequestInputData","_0","__async","validationSchema","_e","validationErrors","error","__spreadProps","registerRequestValidationSchema","ZOD","values","ctx","loginRequestValidationSchema"],"mappings":"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","file":"index.mjs","sourcesContent":["import { IExpressRateLimiterOptions } from '@zTypes/generic';\n\nlet _rateLimiterOptions: IExpressRateLimiterOptions | null = null;\n\nexport const getExpressRateLimiterOptions =\n (): IExpressRateLimiterOptions | null => {\n return _rateLimiterOptions;\n };\n\nexport const setExpressRateLimiterOptions = (\n _options: IExpressRateLimiterOptions\n): void => {\n _rateLimiterOptions = { ..._options };\n};\n","import { setExpressRateLimiterOptions } from '@helpers/middlewareHelpers';\nimport { IConfigureZETKOptions } from '@zTypes/generic';\n\nexport const configureZETK = (options: IConfigureZETKOptions): void => {\n const { rateLimiterOptions } = options;\n\n if (rateLimiterOptions) {\n setExpressRateLimiterOptions(rateLimiterOptions);\n }\n};\n","import type { Response } from 'express';\nimport {\n ResponseCodeEnum,\n ResponseStatusEnum,\n ztkMessages,\n} from 'zaions-tool-kit';\n\nexport const sendApiResponse = (\n res: Response,\n options?: {\n success?: boolean;\n message?: string;\n data?: unknown;\n dataList?: unknown;\n authToken?: unknown;\n errors?: unknown;\n code?: ResponseCodeEnum;\n status?: ResponseStatusEnum;\n }\n): Response => {\n const {\n success = true,\n message = ztkMessages.general.success,\n data = null,\n dataList = null,\n authToken = null,\n errors = null,\n code = ResponseCodeEnum.success,\n status = ResponseStatusEnum.success,\n } = options || {};\n return res.status(status).json({\n success,\n message,\n result: {\n data,\n dataList,\n authToken,\n },\n errors,\n code,\n status,\n });\n};\n\nexport const sendApiSuccessResponse = (\n res: Response,\n options?: {\n message?: string;\n data?: unknown;\n dataList?: unknown;\n authToken?: unknown;\n code?: ResponseCodeEnum;\n status?: ResponseStatusEnum;\n }\n): Response => {\n const {\n message = ztkMessages.general.success,\n data = null,\n dataList = null,\n authToken = null,\n code = ResponseCodeEnum.success,\n status = ResponseStatusEnum.success,\n } = options || {};\n\n return sendApiResponse(res, {\n success: true,\n message,\n data,\n dataList,\n authToken,\n errors: null,\n code,\n status,\n });\n};\n\nexport const sendApiFailedResponse = (\n res: Response,\n options?: {\n message?: string;\n errors?: unknown;\n code?: ResponseCodeEnum;\n status?: ResponseStatusEnum;\n }\n): Response => {\n const {\n message = ztkMessages.general.failed,\n errors = null,\n code = ResponseCodeEnum.failed,\n status = ResponseStatusEnum.failed,\n } = options || {};\n\n return sendApiResponse(res, {\n success: false,\n message,\n data: null,\n errors,\n code,\n status,\n });\n};\n\nexport const sendBadRequestResponse = (\n res: Response,\n options?: {\n message?: string;\n errors?: unknown;\n code?: ResponseCodeEnum;\n status?: ResponseStatusEnum;\n }\n): Response => {\n const {\n message = ztkMessages.general.badRequest,\n errors = null,\n code = ResponseCodeEnum.badRequest,\n status = ResponseStatusEnum.badRequest,\n } = options || {};\n\n return sendApiResponse(res, {\n success: false,\n message,\n data: null,\n errors,\n code,\n status,\n });\n};\n\nexport const sendUnAuthenticatedErrorResponse = (\n res: Response,\n options?: {\n message?: string;\n errors?: unknown;\n code?: ResponseCodeEnum;\n status?: ResponseStatusEnum;\n }\n): Response => {\n const {\n message = ztkMessages.general.unAuthenticated,\n errors = null,\n code = ResponseCodeEnum.unAuthenticated,\n status = ResponseStatusEnum.unAuthenticated,\n } = options || {};\n\n return sendApiResponse(res, {\n success: false,\n message,\n data: null,\n errors,\n code,\n status,\n });\n};\n\nexport const sendUnAuthorizedErrorResponse = (\n res: Response,\n options?: {\n message?: string;\n errors?: unknown;\n code?: ResponseCodeEnum;\n status?: ResponseStatusEnum;\n }\n): Response => {\n const {\n message = ztkMessages.general.unAuthorized,\n errors = null,\n code = ResponseCodeEnum.unAuthorized,\n status = ResponseStatusEnum.unAuthorized,\n } = options || {};\n\n return sendApiResponse(res, {\n success: false,\n message,\n data: null,\n errors,\n code,\n status,\n });\n};\n\nexport const sendNotFoundErrorResponse = (\n res: Response,\n options?: {\n message?: string;\n errors?: unknown;\n code?: ResponseCodeEnum;\n status?: ResponseStatusEnum;\n }\n): Response => {\n const {\n message = ztkMessages.general.notFound,\n errors = null,\n code = ResponseCodeEnum.notFound,\n status = ResponseStatusEnum.notFound,\n } = options || {};\n\n return sendApiResponse(res, {\n success: false,\n message,\n data: null,\n errors,\n code,\n status,\n });\n};\n\nexport const sendTooManyRequestsErrorResponse = (\n res: Response,\n options?: {\n message?: string;\n errors?: unknown;\n code?: ResponseCodeEnum;\n status?: ResponseStatusEnum;\n }\n): Response => {\n const {\n message = ztkMessages.general.tooManyRequests,\n errors = null,\n code = ResponseCodeEnum.tooManyRequests,\n status = ResponseStatusEnum.tooManyRequests,\n } = options || {};\n\n return sendApiResponse(res, {\n success: false,\n message,\n data: null,\n errors,\n code,\n status,\n });\n};\n\nexport const sendItemExistsErrorResponse = (\n res: Response,\n options?: {\n message?: string;\n errors?: unknown;\n code?: ResponseCodeEnum;\n status?: ResponseStatusEnum;\n }\n): Response => {\n const {\n message = ztkMessages.general.itemExists,\n errors = null,\n code = ResponseCodeEnum.itemExists,\n status = ResponseStatusEnum.itemExists,\n } = options || {};\n\n return sendApiResponse(res, {\n success: false,\n message,\n data: null,\n errors,\n code,\n status,\n });\n};\n","import { sendApiFailedResponse } from '@helpers/apiHelpers';\nimport { getExpressRateLimiterOptions } from '@helpers/middlewareHelpers';\nimport cors from 'cors';\nimport type { Express, Request, Response } from 'express';\nimport { json, urlencoded } from 'express';\nimport { rateLimit } from 'express-rate-limit';\nimport { IApplyMiddlewareOptions } from 'src/types';\nimport { ResponseCodeEnum, ResponseStatusEnum } from 'zaions-tool-kit';\n\nconst _rateLimiterOptions = getExpressRateLimiterOptions();\n\nconst limiter = rateLimit({\n windowMs: _rateLimiterOptions?.windowMs ?? 15 * 60 * 1000, // 15 minutes\n limit: _rateLimiterOptions?.limit ?? 100, // Limit each IP to 100 requests per `window` (here, per 15 minutes).\n standardHeaders: _rateLimiterOptions?.standardHeaders ?? 'draft-7', // draft-6: `RateLimit-*` headers; draft-7: combined `RateLimit` header\n legacyHeaders: _rateLimiterOptions?.legacyHeaders ?? false, // Disable the `X-RateLimit-*` headers.\n // store: ... , // Redis, Memcached, etc. See below.\n keyGenerator: (req) => {\n // Use the IP from the 'X-Forwarded-For' header or the remote address if not available\n const ip = req.headers\n ? req.headers['x-forwarded-for']\n : req.socket.remoteAddress;\n return ip ? ip.toString() : '';\n },\n handler: (_, res /*next*/) => {\n return res.status(429).json({\n error: 'Too many requests, please try again later.',\n });\n },\n});\n\nexport const applyMiddlewaresOnApp = (\n expressApp: Express,\n {\n applyCors,\n expressJson,\n expressUrlEncoded,\n applyRateLimiter = true,\n expressRateLimiter,\n }: IApplyMiddlewareOptions\n): void => {\n if (applyRateLimiter) {\n if (expressRateLimiter) {\n expressApp.use(expressRateLimiter);\n } else {\n expressApp.use(limiter);\n }\n }\n\n if (applyCors) {\n expressApp.use(\n cors({\n origin: '*',\n })\n );\n }\n\n if (expressUrlEncoded) {\n expressApp.use(urlencoded());\n }\n\n if (expressJson) {\n expressApp.use(json());\n }\n};\n\nexport const invalidRequestHandler = (app: Express): void => {\n app.use(/(.*)/, (_: Request, res: Response) => {\n sendApiFailedResponse(res, {\n code: ResponseCodeEnum.invalidRequest,\n status: ResponseStatusEnum.invalidRequest,\n });\n });\n};\n","import type { Response } from 'express';\n\nexport const isApiResponse = (value: any): value is Response => {\n return (\n value &&\n typeof value === 'object' &&\n 'statusCode' in value &&\n 'statusMessage' in value\n );\n};\n","import { Request, Response } from 'express';\nimport { ZodEffects, ZodError, ZodObject } from 'zod';\nimport { sendBadRequestResponse } from '..';\n\nexport const validateRequestInputData = async <T extends object>({\n req,\n res,\n validationSchema,\n}: {\n req: Request;\n // eslint-disable-next-line\n validationSchema: ZodObject<any> | ZodEffects<any>;\n res: Response;\n}): Promise<T | Response> => {\n const data = { ...req.body };\n\n let validationErrors;\n try {\n validationSchema.parse(data);\n } catch (error) {\n validationErrors = error as ZodError;\n }\n\n if (validationErrors?.formErrors?.fieldErrors) {\n return sendBadRequestResponse(res, {\n message: 'Error occurred in \"validateRequestInputData\" helper function.',\n errors: {\n ...(validationErrors?.formErrors?.fieldErrors ?? {}),\n formErrors: [...(validationErrors?.formErrors?.formErrors ?? [])],\n },\n });\n } else {\n return data satisfies T;\n }\n};\n","import { z as ZOD } from 'zod';\n\nexport const registerRequestValidationSchema: ZOD.ZodEffects<\n ZOD.ZodObject<\n {\n name: ZOD.ZodString;\n email: ZOD.ZodString;\n password: ZOD.ZodString;\n passwordConfirmation: ZOD.ZodString;\n },\n 'strip',\n ZOD.ZodTypeAny,\n {\n name: string;\n email: string;\n password: string;\n passwordConfirmation: string;\n },\n {\n name: string;\n email: string;\n password: string;\n passwordConfirmation: string;\n }\n >,\n {\n name: string;\n email: string;\n password: string;\n passwordConfirmation: string;\n },\n {\n name: string;\n email: string;\n password: string;\n passwordConfirmation: string;\n }\n> = ZOD.object({\n name: ZOD.string().trim().min(1, { message: 'Name is Required.' }).max(255),\n email: ZOD.string().email().max(255),\n password: ZOD.string().min(6).max(30),\n passwordConfirmation: ZOD.string().min(6).max(30),\n}).superRefine((values, ctx) => {\n if (values.passwordConfirmation !== values.password) {\n ctx.addIssue({\n code: 'custom',\n message: 'The passwords did not match',\n path: ['passwordConfirmation'],\n });\n }\n});\n\nexport const loginRequestValidationSchema: ZOD.ZodObject<\n {\n email: ZOD.ZodString;\n password: ZOD.ZodString;\n },\n 'strip',\n ZOD.ZodTypeAny,\n {\n email: string;\n password: string;\n },\n {\n email: string;\n password: string;\n }\n> = ZOD.object({\n email: ZOD.string().email().max(255),\n password: ZOD.string().min(6).max(30),\n});\n"]}