1
0
Fork 0
mirror of https://github.com/betagouv/mon-entreprise synced 2025-02-11 12:05:02 +00:00
mon-entreprise/api/source/v1unitéAdapterMiddleware.ts
2023-12-20 19:12:52 +01:00

47 lines
973 B
TypeScript

import Router from '@koa/router'
export default function v1unitéAdapterMiddleware() {
const router = new Router()
router.post('/evaluate', async (ctx, next) => {
if (!ctx.request.body) {
return next()
}
ctx.request.body = deepMap(ctx.request.body, (value, key) => {
if (key === 'unité' && typeof value === 'string') {
const newValue = value.replace(' /', '/').replace('/ ', '/')
return newValue
}
return value
})
return next()
})
return router.routes()
}
function deepMap(
jsonLike: unknown,
fn: (x: unknown, key?: string) => unknown
): unknown {
if (Array.isArray(jsonLike)) {
return jsonLike.map((x) => deepMap(x, fn))
}
if (jsonLike && typeof jsonLike === 'object') {
return Object.fromEntries(
Object.entries(jsonLike).map(([key, value]) => {
if (typeof value === 'object' && value !== null) {
return [key, deepMap(value, fn)]
}
return [key, fn(value, key)]
})
)
}
return fn(jsonLike)
}