Update GraphQL Emitter to use GraphQL Mutation Engine#59
Draft
FionaBronwen wants to merge 2 commits into
Draft
Conversation
FionaBronwen
force-pushed
the
fionabronwen/model-typemap
branch
from
January 7, 2026 20:05
ca5538e to
cee34c5
Compare
FionaBronwen
force-pushed
the
fionabronwen/emitter-integration
branch
from
January 7, 2026 20:06
b4208ef to
336b711
Compare
FionaBronwen
force-pushed
the
fionabronwen/model-typemap
branch
from
January 7, 2026 20:43
cee34c5 to
f7a355e
Compare
FionaBronwen
force-pushed
the
fionabronwen/emitter-integration
branch
from
January 7, 2026 20:43
336b711 to
ccc10f6
Compare
FionaBronwen
force-pushed
the
fionabronwen/model-typemap
branch
from
January 7, 2026 21:15
f7a355e to
fc918d4
Compare
FionaBronwen
force-pushed
the
fionabronwen/emitter-integration
branch
from
January 7, 2026 21:15
ccc10f6 to
9c89a06
Compare
FionaBronwen
force-pushed
the
fionabronwen/model-typemap
branch
from
January 8, 2026 16:05
fc918d4 to
5161de0
Compare
FionaBronwen
force-pushed
the
fionabronwen/emitter-integration
branch
2 times, most recently
from
January 8, 2026 16:42
ea0893f to
803731e
Compare
FionaBronwen
force-pushed
the
fionabronwen/emitter-integration
branch
6 times, most recently
from
January 8, 2026 17:18
8cd1884 to
c469bda
Compare
FionaBronwen
marked this pull request as ready for review
January 8, 2026 17:19
FionaBronwen
force-pushed
the
fionabronwen/model-typemap
branch
from
January 23, 2026 21:02
5161de0 to
1f6dff6
Compare
FionaBronwen
force-pushed
the
fionabronwen/emitter-integration
branch
from
January 23, 2026 21:02
c469bda to
decde60
Compare
FionaBronwen
force-pushed
the
fionabronwen/model-typemap
branch
2 times, most recently
from
January 23, 2026 21:09
9613d6a to
1e07021
Compare
FionaBronwen
force-pushed
the
fionabronwen/emitter-integration
branch
from
January 23, 2026 21:09
decde60 to
bcfae7d
Compare
steverice
reviewed
Jan 29, 2026
Comment on lines
+72
to
+86
| /** | ||
| * Pass 1: Mutation listeners - mutate types and collect them | ||
| */ | ||
| mutationListeners(mutatedTypes: Type[]) { | ||
| return { | ||
| enum: (node: Enum) => { | ||
| const mutation = this.engine.mutateEnum(node); | ||
| mutatedTypes.push(mutation.mutatedType); | ||
| }, | ||
| model: (node: Model) => { | ||
| const mutation = this.engine.mutateModel(node); | ||
| mutatedTypes.push(mutation.mutatedType); | ||
| }, | ||
| }; | ||
| } |
There was a problem hiding this comment.
I'm confused as to what the point of the engine is if we have to enumerate its mutations explicitly. Can you explain?
FionaBronwen
marked this pull request as draft
February 26, 2026 16:18
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.
Summary
This PR wires up the mutation engine to the schema emitter, ensuring types are mutated before registration and materialization.
Changes
Schema emitter (
src/schema-emitter.ts):GraphQLMutationEnginein constructorenumhandler: mutates enum before registeringmodelhandler: mutates model before registeringexitEnum/exitModel: uses cached mutated names for materializationFlow
Original TSP
↓
Mutation Engine
↓
Mutated TSP
↓
GraphQL Type Registration/ Materialization
↓
GraphQL Schema
Example