Skip to content

Update immutable.js and move relay-compiler#8010

Merged
ardatan merged 6 commits intomasterfrom
bump-compiler
Mar 5, 2026
Merged

Update immutable.js and move relay-compiler#8010
ardatan merged 6 commits intomasterfrom
bump-compiler

Conversation

@ardatan
Copy link
Copy Markdown
Owner

@ardatan ardatan commented Mar 5, 2026

No description provided.

@changeset-bot
Copy link
Copy Markdown

changeset-bot bot commented Mar 5, 2026

🦋 Changeset detected

Latest commit: a11a0a3

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 2 packages
Name Type
@graphql-tools/relay-operation-optimizer Minor
@ardatan/relay-compiler Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Mar 5, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b7b857fd-2746-4b81-b98e-627dc79019f8

📥 Commits

Reviewing files that changed from the base of the PR and between 565e2f4 and bfb738a.

⛔ Files ignored due to path filters (2)
  • package-lock.json is excluded by !**/package-lock.json
  • packages/relay-compiler/relay-compiler.min.js is excluded by !**/*.min.js
📒 Files selected for processing (135)
  • .changeset/@graphql-tools_relay-operation-optimizer-8010-dependencies.md
  • .changeset/quick-days-wonder.md
  • packages/relay-compiler/.gitignore
  • packages/relay-compiler/CHANGELOG.md
  • packages/relay-compiler/LICENSE
  • packages/relay-compiler/bin/relay-compiler
  • packages/relay-compiler/index.js
  • packages/relay-compiler/lib/bin/RelayCompilerBin.js
  • packages/relay-compiler/lib/bin/RelayCompilerMain.js
  • packages/relay-compiler/lib/bin/__fixtures__/plugin-module.js
  • packages/relay-compiler/lib/codegen/CodegenDirectory.js
  • packages/relay-compiler/lib/codegen/CodegenRunner.js
  • packages/relay-compiler/lib/codegen/CodegenTypes.js
  • packages/relay-compiler/lib/codegen/CodegenWatcher.js
  • packages/relay-compiler/lib/codegen/NormalizationCodeGenerator.js
  • packages/relay-compiler/lib/codegen/ReaderCodeGenerator.js
  • packages/relay-compiler/lib/codegen/RelayCodeGenerator.js
  • packages/relay-compiler/lib/codegen/RelayFileWriter.js
  • packages/relay-compiler/lib/codegen/SourceControl.js
  • packages/relay-compiler/lib/codegen/compileRelayArtifacts.js
  • packages/relay-compiler/lib/codegen/createPrintRequireModuleDependency.js
  • packages/relay-compiler/lib/codegen/sortObjectByKey.js
  • packages/relay-compiler/lib/codegen/writeRelayGeneratedFile.js
  • packages/relay-compiler/lib/core/ASTCache.js
  • packages/relay-compiler/lib/core/ASTConvert.js
  • packages/relay-compiler/lib/core/CompilerContext.js
  • packages/relay-compiler/lib/core/CompilerError.js
  • packages/relay-compiler/lib/core/DotGraphQLParser.js
  • packages/relay-compiler/lib/core/GraphQLCompilerProfiler.js
  • packages/relay-compiler/lib/core/GraphQLDerivedFromMetadata.js
  • packages/relay-compiler/lib/core/GraphQLWatchmanClient.js
  • packages/relay-compiler/lib/core/IR.js
  • packages/relay-compiler/lib/core/IRPrinter.js
  • packages/relay-compiler/lib/core/IRTransformer.js
  • packages/relay-compiler/lib/core/IRValidator.js
  • packages/relay-compiler/lib/core/IRVisitor.js
  • packages/relay-compiler/lib/core/JSModuleParser.js
  • packages/relay-compiler/lib/core/RelayCompilerScope.js
  • packages/relay-compiler/lib/core/RelayFindGraphQLTags.js
  • packages/relay-compiler/lib/core/RelayGraphQLEnumsGenerator.js
  • packages/relay-compiler/lib/core/RelayIRTransforms.js
  • packages/relay-compiler/lib/core/RelayParser.js
  • packages/relay-compiler/lib/core/RelaySourceModuleParser.js
  • packages/relay-compiler/lib/core/Schema.js
  • packages/relay-compiler/lib/core/SchemaUtils.js
  • packages/relay-compiler/lib/core/filterContextForNode.js
  • packages/relay-compiler/lib/core/getFieldDefinition.js
  • packages/relay-compiler/lib/core/getIdentifierForArgumentValue.js
  • packages/relay-compiler/lib/core/getIdentifierForSelection.js
  • packages/relay-compiler/lib/core/getLiteralArgumentValues.js
  • packages/relay-compiler/lib/core/getNormalizationOperationName.js
  • packages/relay-compiler/lib/core/inferRootArgumentDefinitions.js
  • packages/relay-compiler/lib/index.js
  • packages/relay-compiler/lib/language/RelayLanguagePluginInterface.js
  • packages/relay-compiler/lib/language/javascript/FindGraphQLTags.js
  • packages/relay-compiler/lib/language/javascript/RelayFlowBabelFactories.js
  • packages/relay-compiler/lib/language/javascript/RelayFlowGenerator.js
  • packages/relay-compiler/lib/language/javascript/RelayFlowTypeTransformers.js
  • packages/relay-compiler/lib/language/javascript/RelayLanguagePluginJavaScript.js
  • packages/relay-compiler/lib/language/javascript/formatGeneratedModule.js
  • packages/relay-compiler/lib/reporters/ConsoleReporter.js
  • packages/relay-compiler/lib/reporters/MultiReporter.js
  • packages/relay-compiler/lib/reporters/Reporter.js
  • packages/relay-compiler/lib/runner/Artifacts.js
  • packages/relay-compiler/lib/runner/BufferedFilesystem.js
  • packages/relay-compiler/lib/runner/GraphQLASTNodeGroup.js
  • packages/relay-compiler/lib/runner/GraphQLASTUtils.js
  • packages/relay-compiler/lib/runner/GraphQLNodeMap.js
  • packages/relay-compiler/lib/runner/Sources.js
  • packages/relay-compiler/lib/runner/StrictMap.js
  • packages/relay-compiler/lib/runner/compileArtifacts.js
  • packages/relay-compiler/lib/runner/extractAST.js
  • packages/relay-compiler/lib/runner/getChangedNodeNames.js
  • packages/relay-compiler/lib/runner/getSchemaInstance.js
  • packages/relay-compiler/lib/runner/types.js
  • packages/relay-compiler/lib/transforms/ApplyFragmentArgumentTransform.js
  • packages/relay-compiler/lib/transforms/ClientExtensionsTransform.js
  • packages/relay-compiler/lib/transforms/ConnectionTransform.js
  • packages/relay-compiler/lib/transforms/DeclarativeConnectionMutationTransform.js
  • packages/relay-compiler/lib/transforms/DeferStreamTransform.js
  • packages/relay-compiler/lib/transforms/DisallowIdAsAlias.js
  • packages/relay-compiler/lib/transforms/DisallowTypenameOnRoot.js
  • packages/relay-compiler/lib/transforms/FieldHandleTransform.js
  • packages/relay-compiler/lib/transforms/FilterCompilerDirectivesTransform.js
  • packages/relay-compiler/lib/transforms/FilterDirectivesTransform.js
  • packages/relay-compiler/lib/transforms/FlattenTransform.js
  • packages/relay-compiler/lib/transforms/GenerateIDFieldTransform.js
  • packages/relay-compiler/lib/transforms/GenerateTypeNameTransform.js
  • packages/relay-compiler/lib/transforms/InlineDataFragmentTransform.js
  • packages/relay-compiler/lib/transforms/InlineFragmentsTransform.js
  • packages/relay-compiler/lib/transforms/MaskTransform.js
  • packages/relay-compiler/lib/transforms/MatchTransform.js
  • packages/relay-compiler/lib/transforms/ReactFlightComponentTransform.js
  • packages/relay-compiler/lib/transforms/RefetchableFragmentTransform.js
  • packages/relay-compiler/lib/transforms/RelayDirectiveTransform.js
  • packages/relay-compiler/lib/transforms/RequiredFieldTransform.js
  • packages/relay-compiler/lib/transforms/SkipClientExtensionsTransform.js
  • packages/relay-compiler/lib/transforms/SkipHandleFieldTransform.js
  • packages/relay-compiler/lib/transforms/SkipRedundantNodesTransform.js
  • packages/relay-compiler/lib/transforms/SkipSplitOperationTransform.js
  • packages/relay-compiler/lib/transforms/SkipUnreachableNodeTransform.js
  • packages/relay-compiler/lib/transforms/SkipUnusedVariablesTransform.js
  • packages/relay-compiler/lib/transforms/SplitModuleImportTransform.js
  • packages/relay-compiler/lib/transforms/TestOperationTransform.js
  • packages/relay-compiler/lib/transforms/TransformUtils.js
  • packages/relay-compiler/lib/transforms/ValidateGlobalVariablesTransform.js
  • packages/relay-compiler/lib/transforms/ValidateRequiredArgumentsTransform.js
  • packages/relay-compiler/lib/transforms/ValidateServerOnlyDirectivesTransform.js
  • packages/relay-compiler/lib/transforms/ValidateUnusedVariablesTransform.js
  • packages/relay-compiler/lib/transforms/query-generators/FetchableQueryGenerator.js
  • packages/relay-compiler/lib/transforms/query-generators/NodeQueryGenerator.js
  • packages/relay-compiler/lib/transforms/query-generators/QueryQueryGenerator.js
  • packages/relay-compiler/lib/transforms/query-generators/ViewerQueryGenerator.js
  • packages/relay-compiler/lib/transforms/query-generators/index.js
  • packages/relay-compiler/lib/transforms/query-generators/utils.js
  • packages/relay-compiler/lib/util/CodeMarker.js
  • packages/relay-compiler/lib/util/DefaultHandleKey.js
  • packages/relay-compiler/lib/util/RelayCompilerCache.js
  • packages/relay-compiler/lib/util/Rollout.js
  • packages/relay-compiler/lib/util/TimeReporter.js
  • packages/relay-compiler/lib/util/areEqualArgValues.js
  • packages/relay-compiler/lib/util/argumentContainsVariables.js
  • packages/relay-compiler/lib/util/dedupeJSONStringify.js
  • packages/relay-compiler/lib/util/generateAbstractTypeRefinementKey.js
  • packages/relay-compiler/lib/util/getDefinitionNodeHash.js
  • packages/relay-compiler/lib/util/getModuleName.js
  • packages/relay-compiler/lib/util/joinArgumentDefinitions.js
  • packages/relay-compiler/lib/util/md5.js
  • packages/relay-compiler/lib/util/murmurHash.js
  • packages/relay-compiler/lib/util/nullthrowsOSS.js
  • packages/relay-compiler/lib/util/orList.js
  • packages/relay-compiler/lib/util/partitionArray.js
  • packages/relay-compiler/package.json
  • packages/relay-compiler/relay-compiler.js
  • packages/relay-operation-optimizer/package.json

📝 Walkthrough

Summary by CodeRabbit

  • New Features

    • Added a full Relay Compiler CLI with pluginable language support, incremental/watch mode, Watchman integration, persisted query support, and JavaScript/Flow code generation.
  • Documentation

    • Added package changelog and license for the compiler package.
  • Chores

    • Updated .gitignore for the compiler package.
    • Bumped @ardatan/relay-compiler and related dependencies.

Walkthrough

This pull request adds a new @ardatan/relay-compiler package and implements a full Relay compiler: CLI entrypoints, code-generation pipeline, schema & IR core, numerous IR transforms, language plugins (JS/Flow), file/write/watch infrastructure, incremental runner and persistence, plus changesets updating dependencies (including @ardatan/relay-compiler → ^12.2.0).

Changes

Cohort / File(s) Summary
Changesets
\.changeset/@graphql-tools_relay-operation-optimizer-8010-dependencies.md, \.changeset/quick-days-wonder.md
Adds changeset entries describing dependency bumps (relay-compiler, relay-operation-optimizer, immutable.js).
Package metadata & entry
packages/relay-compiler/.gitignore, packages/relay-compiler/CHANGELOG.md, packages/relay-compiler/LICENSE, packages/relay-compiler/index.js
Initial package files, license, changelog header, .gitignore, and top-level index exporting the compiler API.
CLI
packages/relay-compiler/lib/bin/RelayCompilerBin.js, packages/relay-compiler/lib/bin/RelayCompilerMain.js, packages/relay-compiler/lib/bin/__fixtures__/plugin-module.js
New CLI parsing/bootstrap and main orchestration: config loading, plugin resolution, watch mode, persistence options and public exports for main flows.
Codegen orchestration
packages/relay-compiler/lib/codegen/...
New codegen runner, directory writer, watcher integration, file writers, source-control hook, formatting helpers, and utilities for assembling and persisting generated modules.
Code generators
packages/relay-compiler/lib/codegen/NormalizationCodeGenerator.js, .../ReaderCodeGenerator.js, .../RelayCodeGenerator.js
Normalization/reader/relay code generators that convert Relay IR into runtime and persisted artifacts.
Core IR & schema
packages/relay-compiler/lib/core/... (many files incl. Schema.js, RelayParser.js, CompilerContext.js, IRPrinter.js, profiler, watchman client, errors, AST utils)
Full compiler core: schema model, parser (GraphQL → Relay IR), IR utilities (printer, transformer, validator, visitor), context and error/profiling primitives, watchman client.
Parsers & utilities
packages/relay-compiler/lib/core/* (JSModuleParser, RelaySourceModuleParser, RelayFindGraphQLTags, SchemaUtils, etc.)
File parsers, GraphQL tag discovery, enum generator, transform collections and schema helpers.
Selection & field helpers
packages/relay-compiler/lib/core/* (getFieldDefinition, identifier helpers, inference)
Utilities for field resolution, identifiers, literal extraction, normalization naming, and root-argument inference.
Language plugins & JS/Flow generator
packages/relay-compiler/lib/language/...
JS/Flow language plugin, Flow type generation, Babel factories, tag extraction, and module formatting (CommonJS/ESM).
Reporters
packages/relay-compiler/lib/reporters/*
Console and multi-reporter implementations with verbose/quiet modes and timing.
IR transforms
packages/relay-compiler/lib/transforms/*
Many transforms added: fragment-argument application, client-extension grouping, connection pagination, declarative mutation transforms, defer/stream handling, handle/alias/directive filters and validators.
Runner & persistence
packages/relay-compiler/lib/runner/*
Incremental build runner, artifacts state, buffered filesystem with commit/add-remove integration, AST grouping, Sources tracking, StrictMap utility, and compilation orchestration.

Sequence Diagram(s)

sequenceDiagram
  rect rgba(200,220,255,0.5)
    participant Dev as Developer (CLI)
    participant CLI as RelayCompilerBin/Main
    participant Runner as CodegenRunner
    participant Watch as WatchmanClient
    participant Writer as RelayFileWriter / CodegenDirectory
    participant FS as BufferedFilesystem / FS
    participant SC as SourceControlMercurial
  end
  Dev->>CLI: run command / args
  CLI->>Runner: build config & start (compile/watch)
  Runner->>Watch: query / subscribe file changes
  Watch-->>Runner: file change events
  Runner->>Writer: generate artifacts
  Writer->>FS: write buffered files
  FS->>SC: commit added/removed (optional)
  SC-->>FS: confirm
  Runner-->>CLI: exit status / summaries
Loading

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~120 minutes

Suggested reviewers

  • enisdenjo
  • n1ru4l

Poem

🐰 Hop-hop, I stitched a compiler near and far,
From tags to types and every generated bar,
CLI to watcher, files written in kind,
Fragments, transforms—all tidy and signed.
A carrot-toast to code, now go run the star! ✨

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch bump-compiler

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 5, 2026

🚀 Snapshot Release (alpha)

The latest changes of this PR are available as alpha on npm (based on the declared changesets):

Package Version Info
@graphql-tools/import 7.1.11-alpha-20260305151214-bfb738a26c3b14fde10f798842c9a55ba0eaf931 npm ↗︎ unpkg ↗︎
@graphql-tools/graphql-file-loader 8.1.11-alpha-20260305151214-bfb738a26c3b14fde10f798842c9a55ba0eaf931 npm ↗︎ unpkg ↗︎
@graphql-tools/node-require 7.0.36-alpha-20260305151214-bfb738a26c3b14fde10f798842c9a55ba0eaf931 npm ↗︎ unpkg ↗︎
@ardatan/relay-compiler 12.3.0-alpha-20260305151214-bfb738a26c3b14fde10f798842c9a55ba0eaf931 npm ↗︎ unpkg ↗︎
@graphql-tools/relay-operation-optimizer 7.1.0-alpha-20260305151214-bfb738a26c3b14fde10f798842c9a55ba0eaf931 npm ↗︎ unpkg ↗︎
@graphql-tools/resolvers-composition 7.0.28-alpha-20260305151214-bfb738a26c3b14fde10f798842c9a55ba0eaf931 npm ↗︎ unpkg ↗︎

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 5, 2026

💻 Website Preview

The latest changes are available as preview in: https://pr-8010.graphql-tools.pages.dev

@ardatan ardatan merged commit 5c67f7b into master Mar 5, 2026
14 checks passed
@ardatan ardatan deleted the bump-compiler branch March 5, 2026 15:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants