v17.0.0-alpha.3
Pre-release
Pre-release
IvanGoncharov
released this
06 Sep 16:14
·
135 commits
to main
since this release
v17.0.0-alpha.3 (2023-09-06)
This release contains a new response format for operations containing the experimental @defer & @stream directives. This new response format addresses issues around data duplication, response amplification, and data consistency that affected the previous response format. See graphql/defer-stream-wg#69 for more information.
Breaking Change 💥
- #3742 Remove defer/stream support from subscriptions (@robrichard)
- #3722 original
execute
should throw if defer/stream directives are present (@yaacovCR) - #3855 Drop support for node14 (@IvanGoncharov)
- #3875 GraphQLInputObjectType: remove check that duplicate TS types (@IvanGoncharov)
- #3886 RFC: incremental delivery: without branching, with deduplication (@yaacovCR)
- #3897 incremental delivery: add pending notifications (@yaacovCR)
- #3960 incremental: utilize
id
andsubPath
rather thanpath
andlabel
(@yaacovCR)
New Feature 🚀
- #3754 enhancement: remove extra ticks (@yaacovCR)
- #3877 GraphQLInterface: add missing template parameters (@IvanGoncharov)
- #3860 Make print() break long List and Object Values over multiple line (@dylanowen)
- #3822 Expose printDirective function to enable schema sharding (@tomgasson)
- #3513 Implement OneOf Input Objects via
@oneOf
directive (@erikkessler1) - #3929 incremental: subsequent result records should not store parent references (@yaacovCR)
- #3948 Add support for fourfold nested lists in introspection (@gschulze)
Bug Fix 🐞
- #3746 fix: allow async errors to bubble to AsyncIterable list items (@yaacovCR)
- #3747 add filtering for asyncIterable lists (@yaacovCR)
- #3748 Fix typo in the error message for max tokens (@Cito)
- #3753 fix(incrementalDelivery): filtering should never affect the error source (@yaacovCR)
- #3757 fix: re-initialize subsequentPayloads (@yaacovCR)
- #3706 Fix crash in node when mixing sync/async resolvers (@chrskrchr)
- #3763 resources/utils: fix
git().revList
(@IvanGoncharov) - #3760 fix(incrementalDelivery): fix null bubbling with async iterables (@yaacovCR)
- #3776 extendSchema: preserve "description" and "extensions" (@igrlk)
- #3837 fix: invalid originalError propagation in custom scalars (@stenreijers)
- #3839 Fix ambiguity around when schema definition may be omitted (@benjie)
- #3832 internal: fix inlineInvariant for cjs builds that require filenames with explicit extensions (@yaacovCR)
- #3864 Narrow the return type of astFromValue (@dylanowen)
- #3869 printSchema: correctly print empty description (@IvanGoncharov)
- #3873 ASTReducer: correctly type scalar values (@IvanGoncharov)
- #3899 asyncIterable: locate async iterator errors to the collection (@yaacovCR)
- #3894 introduce new IncrementalPublisher class (@yaacovCR)
- #3961 fix(types): path is required within incremental results (@yaacovCR)
- #3937 Improve description for
@oneOf
directive (@spawnia) - #3965 instanceOf: workaround bundler issue with process.env (@IvanGoncharov)
- #3958 OverlappingFieldsCanBeMergedRule: Fix performance degradation (@AaronMoat)
Docs 📝
4 PRs were merged
- #3778 Remove outdated instructions on experimental tag (@robrichard)
- #3947 Fix edit URL in documentation (@benjie)
- #3951 Fix invalid sample code (@sakesun)
- #3957 docs: add installation instructions for bun (@colinhacks)
Polish 💅
31 PRs were merged
- #3749 polish: add additional test (@yaacovCR)
- #3728 incrementalDelivery: refactoring and streamlining (@yaacovCR)
- #3752 refactor: introduce completeListItemValue (@yaacovCR)
- #3762 Fix formatting in schema for test "resolve Interface type using __typename on source object" (@spawnia)
- #3771 lint: enable ESLint's
logical-assignment-operators
rule (@IvanGoncharov) - #3781 Fix comments in defer/stream validation rules (@robrichard)
- #3793 polish: do not repeat isPromise check (@yaacovCR)
- #3801 polish: narrow mapSourceToResponse return type (@yaacovCR)
- #3806 polish: remove misleading comment (@yaacovCR)
- #3816 polish: clarify filtering test semantics (@yaacovCR)
- #3821 Fix wording of comment in buildClientSchema (@Cito)
- #3856 Use
replaceAll
instead of RegExp with global flag (@IvanGoncharov) - #3865 Add accidentally deleted test spec name back (@Cito)
- #3857 Use ES2021
Array.at
(@IvanGoncharov) - #3872 Enable @typescript-eslint/strict-boolean-expressions rule (@IvanGoncharov)
- #3874 GraphQLObjectType: partial revert of #3143, due to perf regression (@IvanGoncharov)
- #3876 GraphQL*Type: bind only single property instead of entire context (@IvanGoncharov)
- #3878 execute: code refactors related to steam/defer (@yaacovCR)
- #3881 simplify schema in defer tests (@robrichard)
- #3880 Testing the right functions in testUtils (@Cito)
- #3885 remove unnecessary duplicated fields from defer tests (@yaacovCR)
- #3890 Fix misleading test section description (@Cito)
- #3891 refactors from the without-branching branch (@yaacovCR)
- #3896 executeFields: update grouped field set variable name (@yaacovCR)
- #3902 introduce promiseWithResolvers helper (@robrichard)
- #3903 execute: move publishing code into separate file (@yaacovCR)
- #3939 Speedup sorting & building/extending schema (@IvanGoncharov)
- #3930 incremental publisher should handle all response building (@yaacovCR)
- #3904 add tests with regard to duplication (@yaacovCR)
- #3962 skip unnecessary initialization of empty items array (@yaacovCR)
- #3966 polish: improve addDeferredFragments readability (@yaacovCR)
Internal 🏠
17 PRs were merged
- #3751 GitHub Workflows security hardening (@sashashura)
- #3759 fix(github-actions-bot): add additional permissions (@yaacovCR)
- #3769 Fix typo in CONTRIBUTING.md (@igrlk)
- #3770 Minor simplification in schema-test (@Cito)
- #3772 eslintrc: reorder rules to match order in the official docs (@IvanGoncharov)
- #3774 eslintrc: enable few rules with minimal code changes (@IvanGoncharov)
- #3797 workflows: fix and cleanup permissions (@IvanGoncharov)
- #3800 fix permissions for codeql-action (@yaacovCR)
- #3823 Avoid an before consonant (@spawnia)
- #3843 internal: fix website build error (@yaacovCR)
- #3849 ESLint: use the
--rulesdir
option for internal rules. (@IvanGoncharov) - #3848 Add node@19 to integration tests + use it in CI (@IvanGoncharov)
- #3850 ci: uncomment package-lock.json check for unmet dependencies (@IvanGoncharov)
- #3852 ESLint: switch to '.eslintrc.cjs' as config file (@IvanGoncharov)
- #3879 gen-changelog: Fix error introduced in #3872 (@IvanGoncharov)
- #3882 eslint: replace unmaintained 'node' plugin with it's fork (@IvanGoncharov)
- #3964 fix for development on Windows (@sakesun)
Dependency 📦
4 PRs were merged
- #3766 Update deps (@IvanGoncharov)
- #3779 Update deps (@IvanGoncharov)
- #3854 Update deps (@IvanGoncharov)
- #3884 update deps (@IvanGoncharov)
Committers: 17
- Aaron Moat(@AaronMoat)
- Alex(@sashashura)
- Benedikt Franke(@spawnia)
- Benjie(@benjie)
- Chris Karcher(@chrskrchr)
- Christoph Zwerschke(@Cito)
- Colin McDonnell(@colinhacks)
- Dylan Owen(@dylanowen)
- Erik Kessler(@erikkessler1)
- Gunnar Schulze(@gschulze)
- Igor Luchenkov(@igrlk)
- Ivan Goncharov(@IvanGoncharov)
- Rob Richard(@robrichard)
- Sakesun(@sakesun)
- Sten Reijers(@stenreijers)
- Tom Gasson(@tomgasson)
- Yaacov Rydzinski (@yaacovCR)