import { gql } from "apollo-server-micro"; import { DocumentNode } from "graphql"; type FragmentDefinition = { query:DocumentNode; name:string; needsInclude:boolean; } export const createFragment = (params:{ query:DocumentNode; name:string; needsInclude?:boolean; }):FragmentDefinition => { return { ...params, needsInclude: typeof params.needsInclude === 'undefined' ? true : params.needsInclude } } export const includeFragment = (fragment:FragmentDefinition) => { if(!fragment.needsInclude) return ''; return fragment.query; } export const extendFragment = (fragment:FragmentDefinition) => { if(!fragment.needsInclude) return fragment.query; return `...${fragment.name}`; }