Files
BrowserOS/packages/browseros-agent/apps/agent/lib/graphql/getQueryKeyFromDocument.ts
Dani Akash 290ee91a8b Add 'packages/browseros-agent/' from commit '90bd4be3008285bf3825aad3702aff98f872671a'
git-subtree-dir: packages/browseros-agent
git-subtree-mainline: 8f148d0918
git-subtree-split: 90bd4be300
2026-03-13 21:22:09 +05:30

26 lines
746 B
TypeScript

import { parse } from 'graphql'
import type { TypedDocumentString } from '@/generated/graphql/graphql'
const getOperationName = <T, V>(
doc: TypedDocumentString<T, V>,
): string | null => {
// Fallback to parsing
const parsed = parse(doc.toString())
const operation = parsed.definitions.find(
(def) => def.kind === 'OperationDefinition',
)
return operation?.name ? operation.name.value : null
}
export const getQueryKeyFromDocument = <
TResult,
// biome-ignore lint/suspicious/noExplicitAny: TODO(dani) type GraphQL variables properly
TVariables extends Record<string, any> | undefined = undefined,
>(
doc: TypedDocumentString<TResult, TVariables>,
) => {
const queryName = getOperationName(doc)
return queryName
}