import type { Path, PothosFieldConfig, SchemaTypes } from '@pothos/core'; import type { AuthScopeMap } from '.'; export function canCache(map: AuthScopeMap): boolean { if (map.$granted) { return false; } return (map.$all ? canCache(map.$all) : true) && (map.$any ? canCache(map.$any) : true); } export function cacheKey(path: Path | undefined) { if (!path) { // Root return '*'; } let key = String(path.key); let current = path.prev; while (current) { key = `${current.key}.${key}`; current = current.prev; } return key; } export function isObjectOrInterface(fieldConfig: PothosFieldConfig) { return ( (fieldConfig.graphqlKind === 'Interface' || fieldConfig.graphqlKind === 'Object') && fieldConfig.kind !== 'Query' && fieldConfig.kind !== 'Mutation' && fieldConfig.kind !== 'Subscription' ); }