deno.land / x / pothos@release-1713397530 / packages / plugin-tracing / index.ts

نووسراو ببینە
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// @ts-nocheckimport './global-types.ts';import { GraphQLFieldResolver, GraphQLResolveInfo } from 'https://cdn.skypack.dev/graphql?dts';import SchemaBuilder, { BasePlugin, PothosOutputFieldConfig, SchemaTypes } from '../core/index.ts';import { TracingFieldOptions, TracingFieldWrapper } from './types.ts';const pluginName = "tracing";export default pluginName;export * from './types.ts';export * from './util.ts';export class PothosTracingPlugin<Types extends SchemaTypes> extends BasePlugin<Types> { override wrapResolve(resolver: GraphQLFieldResolver<unknown, Types["Context"], object>, fieldConfig: PothosOutputFieldConfig<Types>): GraphQLFieldResolver<unknown, Types["Context"], object> { if (!this.builder.options.tracing) { return resolver; } const { wrap, default: defaultConfig } = this.builder.options.tracing; const tracingValue = fieldConfig.pothosOptions.tracing ?? (typeof defaultConfig === "function" ? (defaultConfig as (config: PothosOutputFieldConfig<Types>) => Types["Tracing"])(fieldConfig) : defaultConfig); return wrapResolver(fieldConfig, tracingValue, wrap, resolver); }}function wrapResolver<Types extends SchemaTypes>(fieldConfig: PothosOutputFieldConfig<Types>, tracingOptions: TracingFieldOptions<Types, unknown, object>, wrap: TracingFieldWrapper<Types>, resolver: GraphQLFieldResolver<unknown, Types["Context"], object>): GraphQLFieldResolver<unknown, Types["Context"], object> { if (tracingOptions === false || tracingOptions === null) { return resolver; } if (typeof tracingOptions === "function") { return (source, args, ctx, info) => { const options = (tracingOptions as (parent: unknown, Args: object, context: Types["Context"], info: GraphQLResolveInfo) => Types["Tracing"])(source, args, ctx, info); if (options === null || options === false) { return resolver(source, args, ctx, info); } return wrap(resolver, options as never, fieldConfig)(source, args as {}, ctx, info); }; } return wrap(resolver, tracingOptions as never, fieldConfig) as GraphQLFieldResolver<unknown, Types["Context"], object>;}SchemaBuilder.registerPlugin(pluginName, PothosTracingPlugin);
pothos

Version Info

Tagged at
a year ago