Claus-Peter Hübner 9547eff793 Merge remote-tracking branch 'origin/master' into
2428-feature-federation-implement-multiple-apollo-graphql-endpoints
2023-01-12 18:02:15 +01:00

70 lines
2.0 KiB
TypeScript

/* 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.password) vars.password = "***";
if (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 =
process.env.NODE_ENV === "development"
? [setHeadersPlugin]
: [setHeadersPlugin, logPlugin];
export default plugins;