@pothos/plugin-tracing
Version:
A Pothos plugin for tracing and logging resolver invocations
35 lines (34 loc) • 1.57 kB
JavaScript
import './global-types.js';
import SchemaBuilder, { BasePlugin } from '@pothos/core';
const pluginName = "tracing";
export default pluginName;
export * from './types.js';
export * from './util.js';
export class PothosTracingPlugin extends BasePlugin {
wrapResolve(resolver, fieldConfig) {
if (!this.builder.options.tracing) {
return resolver;
}
const { wrap, default: defaultConfig } = this.builder.options.tracing;
var _fieldConfig_pothosOptions_tracing;
const tracingValue = (_fieldConfig_pothosOptions_tracing = fieldConfig.pothosOptions.tracing) !== null && _fieldConfig_pothosOptions_tracing !== void 0 ? _fieldConfig_pothosOptions_tracing : typeof defaultConfig === "function" ? defaultConfig(fieldConfig) : defaultConfig;
return wrapResolver(fieldConfig, tracingValue, wrap, resolver);
}
}
function wrapResolver(fieldConfig, tracingOptions, wrap, resolver) {
if (tracingOptions === false || tracingOptions === null) {
return resolver;
}
if (typeof tracingOptions === "function") {
return (source, args, ctx, info) => {
const options = tracingOptions(source, args, ctx, info);
if (options === null || options === false) {
return resolver(source, args, ctx, info);
}
return wrap(resolver, options, fieldConfig)(source, args, ctx, info);
};
}
return wrap(resolver, tracingOptions, fieldConfig);
}
SchemaBuilder.registerPlugin(pluginName, PothosTracingPlugin);
//# sourceMappingURL=index.js.map