22 lines · 1.3 KB · TypeScript
RawDownload
import { parse } from "graphql"; // Local validation for a caller-supplied `select` (see invoke / plugin.invokeTool).// graphql-js is already a runtime dependency of this plugin, so we reuse its// parser to reject a malformed selection before any network round trip, and to// catch any attempt to break out of the field's selection set (the spliced text// must parse as part of a single operation). Field- and argument-level validity// is left to the upstream server, which returns verbatim errors: building a local// GraphQLSchema would need a full introspection snapshot, but the stored snapshot// is a reduced shape (see introspect.ts) that buildClientSchema cannot consume. /** Parse-check an assembled operation string. Returns a one-element error array *  when the selection is not valid GraphQL, or an empty array when it parses. */export const validateOperationString = (operationString: string): readonly string[] => {  // oxlint-disable-next-line executor/no-try-catch-or-throw -- boundary: graphql `parse` throws on a syntax error; the thrown value is reported generically (its message is not extracted, per the typed-error lint rules)  try {    parse(operationString);    return [];  } catch {    return ["`select` is not a valid GraphQL selection set"];  }};

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t