mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
68 lines
2.3 KiB
TypeScript
68 lines
2.3 KiB
TypeScript
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
|
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
/* eslint-disable @typescript-eslint/restrict-template-expressions */
|
|
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
|
|
|
|
import clonedeep from 'lodash.clonedeep'
|
|
|
|
const setHeadersPlugin = {
|
|
requestDidStart() {
|
|
return {
|
|
willSendResponse(requestContext: any) {
|
|
const { setHeaders = [] } = requestContext.context
|
|
setHeaders.forEach(({ key, value }: { [key: string]: string }) => {
|
|
if (requestContext.response.http.headers.get(key)) {
|
|
requestContext.response.http.headers.set(key, value)
|
|
} else {
|
|
requestContext.response.http.headers.append(key, value)
|
|
}
|
|
})
|
|
return requestContext
|
|
},
|
|
}
|
|
},
|
|
}
|
|
|
|
const filterVariables = (variables: any) => {
|
|
const vars = clonedeep(variables)
|
|
if (vars && vars.password) vars.password = '***'
|
|
if (vars && vars.passwordNew) vars.passwordNew = '***'
|
|
return vars
|
|
}
|
|
|
|
const logPlugin = {
|
|
requestDidStart(requestContext: any) {
|
|
const { logger } = requestContext
|
|
const { query, mutation, variables, operationName } = requestContext.request
|
|
if (operationName !== 'IntrospectionQuery') {
|
|
logger.info(`Request:
|
|
${mutation || query}variables: ${JSON.stringify(filterVariables(variables), null, 2)}`)
|
|
}
|
|
return {
|
|
willSendResponse(requestContext: any) {
|
|
if (operationName !== 'IntrospectionQuery') {
|
|
if (requestContext.context.user) logger.info(`User ID: ${requestContext.context.user.id}`)
|
|
if (requestContext.response.data) {
|
|
logger.info('Response Success!')
|
|
logger.trace(`Response-Data:
|
|
${JSON.stringify(requestContext.response.data, null, 2)}`)
|
|
}
|
|
if (requestContext.response.errors)
|
|
logger.error(`Response-Errors:
|
|
${JSON.stringify(requestContext.response.errors, null, 2)}`)
|
|
}
|
|
return requestContext
|
|
},
|
|
}
|
|
},
|
|
}
|
|
|
|
const plugins =
|
|
// eslint-disable-next-line n/no-process-env
|
|
process.env.NODE_ENV === 'development' ? [setHeadersPlugin] : [setHeadersPlugin, logPlugin]
|
|
|
|
export default plugins
|