refactor(medusa): Migrate middlewares to ts (#1469)

This commit is contained in:
Adrien de Peretti
2022-06-08 15:52:45 +02:00
committed by GitHub
parent d98cd85d23
commit 63bf684e66
9 changed files with 49 additions and 32 deletions

View File

@@ -1,12 +1,12 @@
import passport from "passport"
import { Request, Response, NextFunction, RequestHandler } from "express"
export default () => {
// Always go to next
return (req, res, next) => {
export default (): RequestHandler => {
return (req: Request, res: Response, next: NextFunction): void => {
passport.authenticate(
["jwt", "bearer"],
{ session: false },
(err, user, info) => {
(err, user) => {
if (err) {
return next(err)
}

View File

@@ -1,7 +0,0 @@
import passport from "passport"
export default () => {
return (req, res, next) => {
passport.authenticate(["jwt", "bearer"], { session: false })(req, res, next)
}
}

View File

@@ -0,0 +1,8 @@
import passport from "passport"
import { Request, Response, NextFunction, RequestHandler } from "express"
export default (): RequestHandler => {
return (req: Request, res: Response, next: NextFunction): void => {
passport.authenticate(["jwt", "bearer"], { session: false })(req, res, next)
}
}

View File

@@ -1,3 +0,0 @@
export default (fn) =>
(...args) =>
fn(...args).catch(args[2])

View File

@@ -0,0 +1,9 @@
import { NextFunction, Request, RequestHandler, Response } from "express"
type handler = (req: Request, res: Response) => Promise<void>
export default (fn: handler): RequestHandler => {
return (req: Request, res: Response, next: NextFunction) => {
return fn(req, res).catch(next)
}
}

View File

@@ -1,4 +1,6 @@
import { MedusaError } from "medusa-core-utils"
import { NextFunction, Request, Response } from "express"
import { Logger } from "../../types/global"
const QUERY_RUNNER_RELEASED = "QueryRunnerAlreadyReleasedError"
const TRANSACTION_STARTED = "TransactionAlreadyStartedError"
@@ -9,8 +11,8 @@ const INVALID_REQUEST_ERROR = "invalid_request_error"
const INVALID_STATE_ERROR = "invalid_state_error"
export default () => {
return (err, req, res, next) => {
const logger = req.scope.resolve("logger")
return (err: MedusaError, req: Request, res: Response, next: NextFunction) => {
const logger: Logger = req.scope.resolve("logger")
logger.error(err)
const errorType = err.type || err.name

View File

@@ -1,16 +0,0 @@
export default () => {
return (req, res, next) => {
const clean = Object.entries(req.query).reduce((acc, [key, val]) => {
if (Array.isArray(val) && val.length === 1) {
acc[key] = val[0].split(",")
} else {
acc[key] = val
}
return acc
}, {})
req.query = clean
next()
}
}

View File

@@ -0,0 +1,24 @@
import { NextFunction, Request, Response } from "express"
/**
* Normalize an input query, especially from array like query params to an array type
* e.g: /admin/orders/?fields[]=id,status,cart_id becomes { fields: ["id", "status", "cart_id"] }
*/
export default (): ((
req: Request,
res: Response,
next: NextFunction
) => void) => {
return (req: Request, res: Response, next: NextFunction): void => {
req.query = Object.entries(req.query).reduce((acc, [key, val]) => {
if (Array.isArray(val) && val.length === 1) {
acc[key] = (val as string[])[0].split(",")
} else {
acc[key] = val
}
return acc
}, {})
next()
}
}