UNPKG

@envelop/core

Version:

This is the core package for Envelop. You can find a complete documentation here: https://github.com/n1ru4l/envelop

42 lines (41 loc) 1.33 kB
import { envelopIsIntrospectionSymbol, isIntrospectionOperationString } from '../utils.js'; const DEFAULT_OPTIONS = { logFn: console.log, }; export const useLogger = (rawOptions = DEFAULT_OPTIONS) => { const options = { DEFAULT_OPTIONS, ...rawOptions, }; return { onParse({ extendContext, params }) { if (options.skipIntrospection && isIntrospectionOperationString(params.source)) { extendContext({ [envelopIsIntrospectionSymbol]: true, }); } }, onExecute({ args }) { if (args.contextValue[envelopIsIntrospectionSymbol]) { return; } options.logFn('execute-start', { args }); return { onExecuteDone: ({ result }) => { options.logFn('execute-end', { args, result }); }, }; }, onSubscribe({ args }) { if (args.contextValue[envelopIsIntrospectionSymbol]) { return; } options.logFn('subscribe-start', { args }); return { onSubscribeResult: ({ result }) => { options.logFn('subscribe-end', { args, result }); }, }; }, }; };