You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@graphql-codegen/graphql-modules-preset: a schema without extensions (graphql 15) throws the
"requires to use GraphQL SDL" error instead of a TypeError.
@graphql-codegen/graphql-modules-preset: a schema without extensions (graphql 15) throws the
"requires to use GraphQL SDL" error instead of a TypeError.
#844582457d1 Thanks @ardatan! - Fix: Preserve symbol-keyed GraphQL extensions when building, merging, or extracting schemas.
GraphQL.js v17 allows string | symbol keys on schema/type/field extensions (via toObjMapWithSymbols). @graphql-tools was dropping those symbol keys in two places:
mergeDeep only walked enumerable string keys (for...in), so symbol extensions were lost when applying schemaExtensions.
extractExtensionsFromSchema did not copy non-enumerable own symbol keys (enumerable symbols already survive object rest/spread; the explicit loop covers the non-enumerable case).
Schema extension merge/extract and resolver merging always enable { enumerable: true, nonEnumerable: true } so symbol keys survive in tools' own merge/extract paths on every supported GraphQL.js major. (GraphQL.js itself may still drop symbol keys from field configs below v17 when rebuilding types.)
mergeDeep API
mergeDeep now accepts an options object. The old positional boolean arguments still work but are deprecated.
respectSymbols defaults to { enumerable: false, nonEnumerable: false } (symbols dropped), matching the historical default. The legacy 5th positional flag still maps to { nonEnumerable: true } only.
Resolver map types (IResolvers / field resolver extensions and type __extensions) now use ExtensionsObject (Record<string | symbol, any>), so symbol-keyed resolver extensions type-check under GraphQL.js v17+.
#844582457d1 Thanks @ardatan! - Fix: Preserve symbol-keyed GraphQL extensions when building, merging, or extracting schemas.
GraphQL.js v17 allows string | symbol keys on schema/type/field extensions (via toObjMapWithSymbols). @graphql-tools was dropping those symbol keys in two places:
mergeDeep only walked enumerable string keys (for...in), so symbol extensions were lost when applying schemaExtensions.
extractExtensionsFromSchema did not copy non-enumerable own symbol keys (enumerable symbols already survive object rest/spread; the explicit loop covers the non-enumerable case).
Schema extension merge/extract and resolver merging always enable { enumerable: true, nonEnumerable: true } so symbol keys survive in tools' own merge/extract paths on every supported GraphQL.js major. (GraphQL.js itself may still drop symbol keys from field configs below v17 when rebuilding types.)
mergeDeep API
mergeDeep now accepts an options object. The old positional boolean arguments still work but are deprecated.
respectSymbols defaults to { enumerable: false, nonEnumerable: false } (symbols dropped), matching the historical default. The legacy 5th positional flag still maps to { nonEnumerable: true } only.
Resolver map types (IResolvers / field resolver extensions and type __extensions) now use ExtensionsObject (Record<string | symbol, any>), so symbol-keyed resolver extensions type-check under GraphQL.js v17+.
#844582457d1 Thanks @ardatan! - Fix: Preserve symbol-keyed GraphQL extensions when building, merging, or extracting schemas.
GraphQL.js v17 allows string | symbol keys on schema/type/field extensions (via toObjMapWithSymbols). @graphql-tools was dropping those symbol keys in two places:
mergeDeep only walked enumerable string keys (for...in), so symbol extensions were lost when applying schemaExtensions.
extractExtensionsFromSchema did not copy non-enumerable own symbol keys (enumerable symbols already survive object rest/spread; the explicit loop covers the non-enumerable case).
Schema extension merge/extract and resolver merging always enable { enumerable: true, nonEnumerable: true } so symbol keys survive in tools' own merge/extract paths on every supported GraphQL.js major. (GraphQL.js itself may still drop symbol keys from field configs below v17 when rebuilding types.)
mergeDeep API
mergeDeep now accepts an options object. The old positional boolean arguments still work but are deprecated.
respectSymbols defaults to { enumerable: false, nonEnumerable: false } (symbols dropped), matching the historical default. The legacy 5th positional flag still maps to { nonEnumerable: true } only.
Resolver map types (IResolvers / field resolver extensions and type __extensions) now use ExtensionsObject (Record<string | symbol, any>), so symbol-keyed resolver extensions type-check under GraphQL.js v17+.
Patch Changes
#851398673c3 Thanks @ardatan! - fix(utils): coerce GraphQL 17 argument defaults in getArgumentValues via local input coercion (defaults, missing variables, nested sources)
#8493a75d725 Thanks @cpruijsen! - Keep argument types of defined directives when pruning so that unused directives such as @key(fields: _FieldSet!) retain their full definitions instead of losing the argument together with its type.
#8499fd95dc9 Thanks @ardatan! - Skip empty and whitespace-only description values in getDescriptionNode / printSchemaWithDirectives, so loaders that set description: "" no longer emit """""" in printed SDL.
Add optional HTTP instrumentation sinks. Event types and the sink live in @inversifyjs/http-instrumentation-core. Adapters emit pipeline events only when at least one sink is configured. The Express 5 adapter also records native middleware, and the Express 5, Fastify, Hono, and uWebSockets adapters record request and response headers and status.
⚠️ This can degrade performance if you have a custom maxWorkers setting. Previously, it was applied incorrectly and could lead to Vitest using too many resources. For example, a lower number would still open too many browsers. Fixing it means Vitest opens less instances by default now.
#69683be052 Thanks @niukanen1! - Add an isProd option to the ws, uWebSockets.js and @fastify/websocket use-server helpers, matching the existing crossws option. It controls whether internal error messages are masked with Internal server error before reaching the client, defaulting to the NODE_ENV === 'production' check as before. This lets apps running in production keep reporting onConnect error messages to the client by opting out, or mask eagerly in non-production environments.
Patch Changes
#700d8aeda6 Thanks @kratam! - Fix the client closing an in-use socket when many subscriptions complete at once and a new one subscribes within the lazyCloseTimeout
Every completing subscription scheduled its own lazy close timeout, but only the last one got cleared on the next connect. The client now keeps a single lazy close timeout and checks for active subscriptions before closing.
#7021e05c8c Thanks @Meemaw! - Avoid an unhandled rejection when a subscription is disposed before the connection is acknowledged and the socket closes before the subscription releases its connection lock (for example, when the client is disposed while connecting and the WebSocket implementation delivers the close event on a microtask).
Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.
This PR includes no changesets
When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types
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
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.
Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
^7.4.5→^7.4.6^6.1.1→^6.1.29.2.6→9.2.8^10.1.3→^10.1.512.0.3→12.1.0^5.6.3→^5.9.05.6.3→5.9.05.6.3→5.9.024.19.1→24.19.25.0.3→5.0.55.12.5→5.12.76.3.0→6.4.16.40.0→6.41.06.42.024.21.0→24.22.012.10.1→12.14.012.10.1→12.14.03.9.9→3.9.10^3.9.9→^3.9.105.0.3→5.0.5Release Notes
dotansimha/graphql-code-generator (@graphql-codegen/cli)
v7.4.6Compare Source
Patch Changes
#10985
d8aa07fThanks @eddeee888! - Build with
strict: true, which changesthese emitted type declarations:
@graphql-codegen/cli:mkdirpreturnsPromise<string | undefined>, and therequire(-r)CLI option's
defaultis typednever[]instead ofany[].@graphql-codegen/visitor-plugin-common:BaseResolversVisitorandBaseTypesVisitorSchemaDefinition()/SchemaExtension()returnnullinstead ofany.@graphql-codegen/visitor-plugin-common:BaseSelectionSetProcessor.typeCacheis keyed byLocation | undefined.@graphql-codegen/visitor-plugin-common:SelectionSetToObject.buildSelectionSetreturnstypeInfoas{ name: string; type: string } | null.@graphql-codegen/visitor-plugin-common:getPossibleTypesacceptsnullas the type, whichgraphql 15's
schema.getType()can return.@graphql-codegen/visitor-plugin-common:removeDescriptionreturns nodes withdescription: undefinedinstead ofany.@graphql-codegen/typescript:TsIntrospectionVisitor's constructor takespluginConfigasTypeScriptPluginConfig | undefined,DirectiveDefinition()returnsnullandObjectTypeDefinition()returnsstring | null.@graphql-codegen/client-preset: the babel preset acceptsoptionsasClientBabelPresetOptions | null | undefined.@graphql-codegen/testing:mockGraphQLServerreturnsnock.Scope | null.@graphql-codegen/graphql-modules-preset: a schema withoutextensions(graphql 15) throws the"requires to use GraphQL SDL" error instead of a
TypeError.Generated output is unchanged.
Updated dependencies
[
d8aa07f]:dotansimha/graphql-code-generator (@graphql-codegen/typescript)
v6.1.2Compare Source
Patch Changes
#10985
d8aa07fThanks @eddeee888! - Build with
strict: true, which changesthese emitted type declarations:
@graphql-codegen/cli:mkdirpreturnsPromise<string | undefined>, and therequire(-r)CLI option's
defaultis typednever[]instead ofany[].@graphql-codegen/visitor-plugin-common:BaseResolversVisitorandBaseTypesVisitorSchemaDefinition()/SchemaExtension()returnnullinstead ofany.@graphql-codegen/visitor-plugin-common:BaseSelectionSetProcessor.typeCacheis keyed byLocation | undefined.@graphql-codegen/visitor-plugin-common:SelectionSetToObject.buildSelectionSetreturnstypeInfoas{ name: string; type: string } | null.@graphql-codegen/visitor-plugin-common:getPossibleTypesacceptsnullas the type, whichgraphql 15's
schema.getType()can return.@graphql-codegen/visitor-plugin-common:removeDescriptionreturns nodes withdescription: undefinedinstead ofany.@graphql-codegen/typescript:TsIntrospectionVisitor's constructor takespluginConfigasTypeScriptPluginConfig | undefined,DirectiveDefinition()returnsnullandObjectTypeDefinition()returnsstring | null.@graphql-codegen/client-preset: the babel preset acceptsoptionsasClientBabelPresetOptions | null | undefined.@graphql-codegen/testing:mockGraphQLServerreturnsnock.Scope | null.@graphql-codegen/graphql-modules-preset: a schema withoutextensions(graphql 15) throws the"requires to use GraphQL SDL" error instead of a
TypeError.Generated output is unchanged.
Updated dependencies
[
d8aa07f,5078faf]:ardatan/graphql-tools (@graphql-tools/merge)
v9.2.8Compare Source
Patch Changes
#8445
82457d1Thanks @ardatan! - dependencies updates:@graphql-tools/utils@^12.0.4↗︎ (from^12.0.3, independencies)#8445
82457d1Thanks @ardatan! - Fix: Preserve symbol-keyed GraphQL extensions when building, merging, or extracting schemas.GraphQL.js v17 allows
string | symbolkeys on schema/type/fieldextensions(viatoObjMapWithSymbols).@graphql-toolswas dropping those symbol keys in two places:mergeDeeponly walked enumerable string keys (for...in), so symbol extensions were lost when applyingschemaExtensions.extractExtensionsFromSchemadid not copy non-enumerable own symbol keys (enumerable symbols already survive object rest/spread; the explicit loop covers the non-enumerable case).Example (bug)
Schema extension merge/extract and resolver merging always enable
{ enumerable: true, nonEnumerable: true }so symbol keys survive in tools' own merge/extract paths on every supported GraphQL.js major. (GraphQL.js itself may still drop symbol keys from field configs below v17 when rebuilding types.)mergeDeepAPImergeDeepnow accepts an options object. The old positional boolean arguments still work but are deprecated.respectSymbolsdefaults to{ enumerable: false, nonEnumerable: false }(symbols dropped), matching the historical default. The legacy 5th positional flag still maps to{ nonEnumerable: true }only.Resolver map types (
IResolvers/ field resolverextensionsand type__extensions) now useExtensionsObject(Record<string | symbol, any>), so symbol-keyed resolver extensions type-check under GraphQL.js v17+.98673c3,a75d725,82457d1]:v9.2.7Compare Source
Patch Changes
fd95dc9]:ardatan/graphql-tools (@graphql-tools/schema)
v10.1.5Compare Source
Patch Changes
#8445
82457d1Thanks @ardatan! - dependencies updates:@graphql-tools/merge@^9.2.7↗︎ (from^9.2.6, independencies)@graphql-tools/utils@^12.0.4↗︎ (from^12.0.3, independencies)#8445
82457d1Thanks @ardatan! - Fix: Preserve symbol-keyed GraphQL extensions when building, merging, or extracting schemas.GraphQL.js v17 allows
string | symbolkeys on schema/type/fieldextensions(viatoObjMapWithSymbols).@graphql-toolswas dropping those symbol keys in two places:mergeDeeponly walked enumerable string keys (for...in), so symbol extensions were lost when applyingschemaExtensions.extractExtensionsFromSchemadid not copy non-enumerable own symbol keys (enumerable symbols already survive object rest/spread; the explicit loop covers the non-enumerable case).Example (bug)
Schema extension merge/extract and resolver merging always enable
{ enumerable: true, nonEnumerable: true }so symbol keys survive in tools' own merge/extract paths on every supported GraphQL.js major. (GraphQL.js itself may still drop symbol keys from field configs below v17 when rebuilding types.)mergeDeepAPImergeDeepnow accepts an options object. The old positional boolean arguments still work but are deprecated.respectSymbolsdefaults to{ enumerable: false, nonEnumerable: false }(symbols dropped), matching the historical default. The legacy 5th positional flag still maps to{ nonEnumerable: true }only.Resolver map types (
IResolvers/ field resolverextensionsand type__extensions) now useExtensionsObject(Record<string | symbol, any>), so symbol-keyed resolver extensions type-check under GraphQL.js v17+.82457d1,98673c3,a75d725,82457d1]:v10.1.4Compare Source
Patch Changes
fd95dc9]:ardatan/graphql-tools (@graphql-tools/utils)
v12.1.0Compare Source
Minor Changes
#8445
82457d1Thanks @ardatan! - Fix: Preserve symbol-keyed GraphQL extensions when building, merging, or extracting schemas.GraphQL.js v17 allows
string | symbolkeys on schema/type/fieldextensions(viatoObjMapWithSymbols).@graphql-toolswas dropping those symbol keys in two places:mergeDeeponly walked enumerable string keys (for...in), so symbol extensions were lost when applyingschemaExtensions.extractExtensionsFromSchemadid not copy non-enumerable own symbol keys (enumerable symbols already survive object rest/spread; the explicit loop covers the non-enumerable case).Example (bug)
Schema extension merge/extract and resolver merging always enable
{ enumerable: true, nonEnumerable: true }so symbol keys survive in tools' own merge/extract paths on every supported GraphQL.js major. (GraphQL.js itself may still drop symbol keys from field configs below v17 when rebuilding types.)mergeDeepAPImergeDeepnow accepts an options object. The old positional boolean arguments still work but are deprecated.respectSymbolsdefaults to{ enumerable: false, nonEnumerable: false }(symbols dropped), matching the historical default. The legacy 5th positional flag still maps to{ nonEnumerable: true }only.Resolver map types (
IResolvers/ field resolverextensionsand type__extensions) now useExtensionsObject(Record<string | symbol, any>), so symbol-keyed resolver extensions type-check under GraphQL.js v17+.Patch Changes
#8513
98673c3Thanks @ardatan! - fix(utils): coerce GraphQL 17 argument defaults in getArgumentValues via local input coercion (defaults, missing variables, nested sources)#8493
a75d725Thanks @cpruijsen! - Keep argument types of defined directives when pruning so that unused directives such as@key(fields: _FieldSet!)retain their full definitions instead of losing the argument together with its type.v12.0.4Compare Source
Patch Changes
fd95dc9Thanks @ardatan! - Skip empty and whitespace-onlydescriptionvalues ingetDescriptionNode/printSchemaWithDirectives, so loaders that setdescription: ""no longer emit""""""in printed SDL.inversify/monorepo (@inversifyjs/http-core)
v5.9.0Compare Source
Patch Changes
v5.8.0Compare Source
Patch Changes
v5.7.0Compare Source
Minor Changes
Add optional HTTP instrumentation sinks. Event types and the sink live in
@inversifyjs/http-instrumentation-core. Adapters emit pipeline events only when at least one sink is configured. The Express 5 adapter also records native middleware, and the Express 5, Fastify, Hono, and uWebSockets adapters record request and response headers and status.Patch Changes
vitest-dev/vitest (@vitest/coverage-v8)
v5.0.5Compare Source
🐞 Bug Fixes
fs.denywith api token file - by @hi-ogawa, Hiroshi Ogawa and Claude Opus 5.5 in #11578 (28dc1)--changed- by @sheremet-va in #11583 (14921)datato theimport.meta.hotstub - by @sheremet-va in #11590 (3a828)skipinskipIf, ignoreundefinedoptions - by @sheremet-va in #11591 (d523a)&#​39;failed&#​39;on worker crash - by @AriPerkkio in #11568 (6ae8e)View changes on GitHub
v5.0.4Compare Source
🚀 Features
test.ui.themeoption - by @sheremet-va in #11499 (1da66)--changed- by @sheremet-va in #11424 (a2336)🐞 Bug Fixes
:in project and change the shape ofresultscache - by @sheremet-va in #11453 (9673c)$string values whentaskTitleValueFormatTruncateis 0 - by @hi-ogawa, Hiroshi Ogawa and Claude Opus 5.5 in #11485 (4f7e1)maxWorkerssetting. Previously, it was applied incorrectly and could lead to Vitest using too many resources. For example, a lower number would still open too many browsers. Fixing it means Vitest opens less instances by default now.allowExternalfails to include uncovered files - by @AriPerkkio in #11513 (4ef00)MapandSetdeep equality in some assertions - by @hi-ogawa, Hiroshi Ogawa and Claude Opus 5.5 in #11402 (b4e79)thistomodule.exports- by @sheremet-va in #11504 (b618a)🏎 Performance
View changes on GitHub
fastify/fastify (fastify)
v5.12.7Compare Source
Full Changelog: fastify/fastify@v5.12.6...v5.12.7
v5.12.6Compare Source
What's Changed
Full Changelog: fastify/fastify@v5.12.5...v5.12.6
enisdenjo/graphql-ws (graphql-ws)
v6.4.1Compare Source
Patch Changes
707c38cThanks @lprnmns! - Use thejsonMessageReplacerwhen automatically responding to a ping with a pong, on both the client and the serverv6.4.0Compare Source
Minor Changes
83be052Thanks @niukanen1! - Add anisProdoption to thews,uWebSockets.jsand@fastify/websocketuse-server helpers, matching the existingcrosswsoption. It controls whether internal error messages are masked withInternal server errorbefore reaching the client, defaulting to theNODE_ENV === 'production'check as before. This lets apps running in production keep reportingonConnecterror messages to the client by opting out, or mask eagerly in non-production environments.Patch Changes
#700
d8aeda6Thanks @kratam! - Fix the client closing an in-use socket when many subscriptions complete at once and a new one subscribes within thelazyCloseTimeoutEvery completing subscription scheduled its own lazy close timeout, but only the last one got cleared on the next connect. The client now keeps a single lazy close timeout and checks for active subscriptions before closing.
#702
1e05c8cThanks @Meemaw! - Avoid an unhandled rejection when a subscription is disposed before the connection is acknowledged and the socket closes before the subscription releases its connection lock (for example, when the client is disposed while connecting and the WebSocket implementation delivers the close event on a microtask).webpro-nl/knip (knip)
v6.41.0: Release 6.41.0Compare Source
c52737d) - thanks @LuisFigueroaG!898fdff) - thanks @LuisFigueroaG!37a4ca0)b15f0fb)9618185) - thanks @kaanisthatyou!09c8029)ab3da8f](https://redirect.github.com/webpro-nl/knip/commit/ab3da8ff95a05a0fbfba68Configuration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Mend Renovate CLI.