"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* @todo this causes multiple graphql errors?
*/
const graphql_1 = require("graphql");
var LogAction;
(function (LogAction) {
LogAction[LogAction["request"] = 0] = "request";
LogAction[LogAction["parse"] = 1] = "parse";
LogAction[LogAction["validation"] = 2] = "validation";
LogAction[LogAction["execute"] = 3] = "execute";
LogAction[LogAction["setup"] = 4] = "setup";
LogAction[LogAction["cleanup"] = 5] = "cleanup";
})(LogAction = exports.LogAction || (exports.LogAction = {}));
var LogStep;
(function (LogStep) {
LogStep[LogStep["start"] = 0] = "start";
LogStep[LogStep["end"] = 1] = "end";
LogStep[LogStep["status"] = 2] = "status";
})(LogStep = exports.LogStep || (exports.LogStep = {}));
// A GraphQLExtension that implements the existing logFunction interface. Note
// that now that custom extensions are supported, you may just want to do your
// logging as a GraphQLExtension rather than write a LogFunction.
// could also use like .child
exports.DEFAULT_GRAPHQL_LOGGER = (...args) => {
console.log('[graphql]{LoggingExtension}', ...args);
// logger.info('[graphql]', ...args)
};
class LoggingExtension {
constructor(logFunction = exports.DEFAULT_GRAPHQL_LOGGER) {
this.logFunction = logFunction;
}
requestDidStart(options) {
// this.logFunction({ action: LogAction.request, step: LogStep.start })
const loggedQuery = options.queryString || graphql_1.print(options.parsedQuery);
this.logFunction({
action: LogAction.request,
step: LogStep.status,
key: 'query',
data: loggedQuery,
});
this.logFunction({
action: LogAction.request,
step: LogStep.status,
key: 'variables',
data: options.variables,
});
this.logFunction({
action: LogAction.request,
step: LogStep.status,
key: 'operationName',
data: options.operationName,
});
return (...errors) => {
// If there are no errors, we log in willSendResponse instead.
if (errors.length) {
this.logFunction({ action: LogAction.request, step: LogStep.end });
}
};
}
parsingDidStart() {
// this.logFunction({ action: LogAction.parse, step: LogStep.start })
return () => {
// this.logFunction({ action: LogAction.parse, step: LogStep.end })
};
}
validationDidStart() {
// this.logFunction({ action: LogAction.validation, step: LogStep.start })
return () => {
// this.logFunction({ action: LogAction.validation, step: LogStep.end })
};
}
executionDidStart() {
// this.logFunction({ action: LogAction.execute, step: LogStep.start })
return () => {
// this.logFunction({ action: LogAction.execute, step: LogStep.end })
};
}
willSendResponse(o) {
this.logFunction({
action: LogAction.request,
step: LogStep.end,
key: 'response',
data: o.graphqlResponse,
});
}
}
exports.LoggingExtension = LoggingExtension;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nZ2luZ0V4dGVuc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZXBzL0xvZ2dpbmdFeHRlbnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQTs7R0FFRztBQUNILHFDQUE2QztBQUc3QyxJQUFZLFNBT1g7QUFQRCxXQUFZLFNBQVM7SUFDbkIsK0NBQU8sQ0FBQTtJQUNQLDJDQUFLLENBQUE7SUFDTCxxREFBVSxDQUFBO0lBQ1YsK0NBQU8sQ0FBQTtJQUNQLDJDQUFLLENBQUE7SUFDTCwrQ0FBTyxDQUFBO0FBQ1QsQ0FBQyxFQVBXLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBT3BCO0FBRUQsSUFBWSxPQUlYO0FBSkQsV0FBWSxPQUFPO0lBQ2pCLHVDQUFLLENBQUE7SUFDTCxtQ0FBRyxDQUFBO0lBQ0gseUNBQU0sQ0FBQTtBQUNSLENBQUMsRUFKVyxPQUFPLEdBQVAsZUFBTyxLQUFQLGVBQU8sUUFJbEI7QUFhRCw4RUFBOEU7QUFDOUUsOEVBQThFO0FBQzlFLGlFQUFpRTtBQUVqRSw2QkFBNkI7QUFDaEIsUUFBQSxzQkFBc0IsR0FBRyxDQUFDLEdBQUcsSUFBVyxFQUFFLEVBQUU7SUFDdkQsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFBO0lBQ25ELG9DQUFvQztBQUN0QyxDQUFDLENBQUE7QUFFRCxNQUFhLGdCQUFnQjtJQUczQixZQUFtQixjQUEyQiw4QkFBc0I7UUFDbEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUE7SUFDaEMsQ0FBQztJQUVNLGVBQWUsQ0FBQyxPQU10QjtRQUNDLHVFQUF1RTtRQUN2RSxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLGVBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDckUsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUNmLE1BQU0sRUFBRSxTQUFTLENBQUMsT0FBTztZQUN6QixJQUFJLEVBQUUsT0FBTyxDQUFDLE1BQU07WUFDcEIsR0FBRyxFQUFFLE9BQU87WUFDWixJQUFJLEVBQUUsV0FBVztTQUNsQixDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ2YsTUFBTSxFQUFFLFNBQVMsQ0FBQyxPQUFPO1lBQ3pCLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTTtZQUNwQixHQUFHLEVBQUUsV0FBVztZQUNoQixJQUFJLEVBQUUsT0FBTyxDQUFDLFNBQVM7U0FDeEIsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUNmLE1BQU0sRUFBRSxTQUFTLENBQUMsT0FBTztZQUN6QixJQUFJLEVBQUUsT0FBTyxDQUFDLE1BQU07WUFDcEIsR0FBRyxFQUFFLGVBQWU7WUFDcEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxhQUFhO1NBQzVCLENBQUMsQ0FBQTtRQUVGLE9BQU8sQ0FBQyxHQUFHLE1BQWUsRUFBRSxFQUFFO1lBQzVCLDhEQUE4RDtZQUM5RCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUE7YUFDbkU7UUFDSCxDQUFDLENBQUE7SUFDSCxDQUFDO0lBRU0sZUFBZTtRQUNwQixxRUFBcUU7UUFDckUsT0FBTyxHQUFHLEVBQUU7WUFDVixtRUFBbUU7UUFDckUsQ0FBQyxDQUFBO0lBQ0gsQ0FBQztJQUVNLGtCQUFrQjtRQUN2QiwwRUFBMEU7UUFDMUUsT0FBTyxHQUFHLEVBQUU7WUFDVix3RUFBd0U7UUFDMUUsQ0FBQyxDQUFBO0lBQ0gsQ0FBQztJQUVNLGlCQUFpQjtRQUN0Qix1RUFBdUU7UUFDdkUsT0FBTyxHQUFHLEVBQUU7WUFDVixxRUFBcUU7UUFDdkUsQ0FBQyxDQUFBO0lBQ0gsQ0FBQztJQUVNLGdCQUFnQixDQUFDLENBQXVDO1FBQzdELElBQUksQ0FBQyxXQUFXLENBQUM7WUFDZixNQUFNLEVBQUUsU0FBUyxDQUFDLE9BQU87WUFDekIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxHQUFHO1lBQ2pCLEdBQUcsRUFBRSxVQUFVO1lBQ2YsSUFBSSxFQUFFLENBQUMsQ0FBQyxlQUFlO1NBQ3hCLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRjtBQXhFRCw0Q0F3RUMifQ==