* fix(group): extract NestJS GraphQL contracts against real 0-based indexes (#3201)
Provider lookup used 1-based startLine while the graph stores tree-sitter rows, so every resolver missed. Also try PascalCased Document names and inline sibling FragmentDoc interpolations from graphql-codegen output.
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(group): bind arrow-field providers and fail closed on interpolations
Match Method startLine to the public_field_definition wrapper, decode template escape sequences, and reject FragmentDoc names that mix static and dynamic declarators.
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(group): only inline interpolated templates under a gql tag
Cooked reconstruction is not the runtime value for String.raw or unknown tags, so those interpolations stay fail-closed.
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(group): tighten gql-tag trust and PascalCase Document lookup
Only the identifier `gql` is a trusted interpolating tag. Underscored operation names now try the full pascal-case Document candidate graphql-codegen emits.
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(group): memoize GraphQL interpolation source resolution
Avoid exponential re-walks when the same fragment name is declared twice at each layer of a ${FragmentDoc} chain.
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(group): fail closed on invalid tagged-template escapes
Treat line continuations as empty cooked text and reject \8/\9 plus legacy octals so reconstructed gql source matches runtime.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Gergo Magyar <gergomagyar0@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>