chore(release): 0.6.0 — Phase 7 frontend (GraphQL, push channels, Next.js server data)#64
Merged
Merged
Conversation
Recognize the GraphQL a component runs and treat each operation as a data source, reusing the existing data-source node + fetches-from wiring (no schema change — `graphql` was already a DataSourceKind). - New graphql.ts: parseGraphqlOperation reads operation type/name (+ root fields as an anonymous-op fallback) from a gql document; graphqlOperationFromArg resolves a hook argument to an operation — inline gql/graphql tagged template, or an identifier followed via getDefinitionNodes() so an imported/co-located gql const resolves cross-file. - detectDataSource gains a GraphQL branch before the react-query branch (Apollo/ urql reuse useQuery/useMutation, so it only claims the call when the argument is an actual gql document, else falls through). Emits sourceKind "graphql", method = query/mutation/subscription, endpoint = operation name (the value federation/attribution join on). - New fixture c4-graphql (imported-const useQuery/useMutation + inline useSubscription); 9 unit tests incl. react-query disambiguation on c5. eval 326/0/0/0, determinism 1.000, all metrics 1.000; parser-react 160 tests, typecheck + lint clean. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…raphql-adapter feat(graphql): GraphQL operations as data sources (7.1, C4)
Server-push channels are long-lived data sources, not request/response fetches. - New `sse` DataSourceKind (schema regenerated); new pushchannels.ts: detectPushChannel matches `new WebSocket(url)` / `new EventSource(url)` by constructor name (allowing a window./self. qualifier — low false-positive set) and resolves the URL through the existing resolveEndpoint. - extractBodyFacts gains a NewExpression pass emitting the data-source node + fetches-from edge, mirroring the fetch path (skipped inside API wrappers). websocket for WebSocket, sse for EventSource; transport in method (WS/SSE). - New fixture c8-push-channels (WebSocket wss:// + SSE /api/.../stream); 4 unit tests. eval 332/0/0/0, determinism 1.000, all metrics 1.000; parser-react 164 tests, schema drift gate green, typecheck + lint clean. socket.io deferred (needs import-aware detection). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ush-channels feat(push-channels): WebSocket/SSE as data sources (7.3, C8)
Server-side data fetching feeds a page even when the fetch isn't in the component body. - RSC async server components already worked (inline await fetch is caught by the body walk) — locked with a test. - Pages-router getServerSideProps/getStaticProps/getStaticPaths are top-level exported functions, not components/hooks, so their fetches were never scanned. The main loop now collects those functions per file and runs data-source extraction on their bodies attributed to the file's default-export page component (fetches-from). - New fixture c9-nextjs-server-data (async RSC + getServerSideProps + getStaticProps); 4 unit tests. eval 341/0/0/0, determinism 1.000, all metrics 1.000; parser-react 168 tests, typecheck + lint clean. Server actions deferred. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…extjs-server-data feat(nextjs): attribute Next.js server-side data to its page (7.2, C9)
Bump all packages to 0.6.0 and the generator / CLI / MCP version strings. Folds in the frontend half of Phase 7 (all merged to development since 0.5.0) — widening data-source coverage beyond REST calls in the component body: - 7.1 GraphQL operations as data sources (C4) - 7.3 WebSocket/SSE push channels (C8) - 7.2 Next.js server data: RSC async + getServerSideProps/getStaticProps (C9) README changelog and the "what it understands" summary updated. Verified: 7 packages build clean, full unit suite, eval 341/0/0 + determinism 1.000, typecheck + lint clean, npm pack -> ui-lineage-0.6.0.tgz (both bins, --version 0.6.0, generator ui-lineage@0.6.0, no runtime @coderadar/* leakage), and all three new extractors smoke-tested through the packed binary. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release 0.6.0 — Phase 7, frontend half
Bumps all packages + generator/CLI/MCP version strings 0.5.0 → 0.6.0 and folds the three frontend Phase 7 steps (merged to
developmentsince 0.5.0) intomain.What's in it
Wider data-source coverage — the graph now sees the ways modern React apps actually fetch, beyond REST calls in the component body:
query/mutation/subscription). Inlinegqltag or an imported/co-locatedgqlconst (resolved across files); disambiguated from react-query, which shares theuseQuery/useMutationhook names.new WebSocket(url)/new EventSource(url)becomewebsocket/ssedata sources, so a component fed by a live channel shows it in its lineage.getServerSideProps/getStaticProps/getStaticPaths, alongside app-router async RSC server components.Verification
npm pack→ui-lineage-0.6.0.tgz(21 files, both bins run,--version0.6.0,generator: ui-lineage@0.6.0, no runtime@coderadar/*leakage).Publish (
npm publish) is intentionally left to the maintainer (needs npm credentials).Backend parsers (7.4 Python · 7.5 Go · 7.6 federation) remain — still sketch-level, best held until this release's feedback confirms priority.
🤖 Generated with Claude Code