Compare Versions - graphql
npm / graphql / Compare Versions
v17.0.0 (2026-06-15)
New Feature 🚀
Bug Fix 🐞
- #4799 fix: raise request error on invalid fragment variables (@yaacovCR)
- #4800 fix: apply directives when SDL contains type definitions and extensions with directives (@yaacovCR)
- #4564 OneOf Inhabitability (@jbellenger)
- #4814 fix(KnownDirectivesRule): locations for input field arguments in extensions (@yaacovCR)
- #4726 feat(validation): reject directive definition cycles (@yaacovCR)
- #4815 Revert "feat(validation): reject directive definition cycles (#4726)" (@yaacovCR)
Docs 📝
11 PRs were merged
- #4790 docs: minor diagnostics doc comment improvements (@yaacovCR)
- #4791 fix: docs: polish diagnostics comments further (@yaacovCR)
- #4793 docs: further improve general execution and tracing docs (@yaacovCR)
- #4802 docs: correct extension field comments - v17 (@yaacovCR)
- #4805 docs: publish fixed extensions comments (@yaacovCR)
- #4807 docs: add prettier for jsdoc examples (@yaacovCR)
- #4435 Subscriptions docs suggestions (@Urigo)
- #4811 docs: fix a few indentations inside string literals (@yaacovCR)
- #4813 internal: docs update (@yaacovCR)
- #4820 docs: document
@experimental_disableErrorPropagation(@yaacovCR) - #4817 docs: post 17.rc-0 update (@yaacovCR)
Polish 💅
2 PRs were merged
Internal 🏠
6 PRs were merged
- #4795 chore: move website publishing from 16.x.x to 17.x.x (@yaacovCR)
- #4796 internal: fix broken npm/deno deployments (@yaacovCR)
- #4797 ci: update GitHub Actions versions (@yaacovCR)
- #4806 internal: update frontmatter (@yaacovCR)
- #4808 intenral: fix ci badge (@yaacovCR)
- #4810 internal: add prettier:examples to lint-staged (@yaacovCR)
Committers: 3
- James Bellenger(@jbellenger)
- Uri Goldshtein(@Urigo)
- Yaacov Rydzinski (@yaacovCR)
v16.14.2 (2026-06-09)
Docs 📝
7 PRs were merged
- #4782 docs: update API (@yaacovCR)
- #4783 docs: website review (@yaacovCR)
- #4788 docs: add Node.js tracing channels guide (@logaretm)
- #4789 docs: overhaul index and update/add additional migration guides (@yaacovCR)
- #4792 docs: remove extra asterisks from single line jsdoc comments (@yaacovCR)
- #4794 docs: refresh website with broader execution/tracing update (@yaacovCR)
- #4801 docs: correct extension field comments - v16 (@yaacovCR)
Polish 💅
Committers: 2
v16.14.1 (2026-06-02)
Docs 📝
9 PRs were merged
- #4737 docs: refresh upgrade guide and v17 topics (@yaacovCR)
- #4741 docs: add v16 API docs lint coverage (@yaacovCR)
- #4748 docs: update banner (@yaacovCR)
- #4750 docs: use api docs generated from inline jsdoc comments (@yaacovCR)
- #4754 docs: update website caniuse-lite data (@yaacovCR)
- #4755 docs: hide internal type member __validationErrors (@yaacovCR)
- #4757 docs: fix inline examples, deprecation descriptions, type category (@yaacovCR)
- #4759 docs: fix static export redirect config (@yaacovCR)
- #4767 docs: fix Post_body example variable (@fallintoplace)
Polish 💅
Internal 🏠
Committers: 2
- Minh Vu(@fallintoplace)
- Yaacov Rydzinski (@yaacovCR)
v16.14.0 (2026-05-03)
New Feature 🚀
- #4317 Allow configuration of the
ofTypeintrospection depth (@Nols1000) - #4521 Add experimental support for directives on directive definitions (@BoD)
Bug Fix 🐞
- #4652 Fix valueFromAST variable own-property checks (@abishekgiri)
Docs 📝
Committers: 4
- Abishek Kumar Giri(@abishekgiri)
- Benjie(@benjie)
- Benoit 'BoD' Lubek(@BoD)
- Nils-Börge Margotti(@Nols1000)
v16.13.1 (2026-03-04)
First 16.x.x release with trusted publishing and provenance, see: https://docs.npmjs.com/trusted-publishers for additional information.
Docs 📝
- #4433 docs: move migrate from express graphql guide to graphqlJS docs (@sarahxsanders)
Internal 🏠
- #4608 internal: backport new release flow from 17.x.x (@yaacovCR)
- #4610 internal: pin node version for release action (@yaacovCR)
Committers: 2
- Sarah Sanders(@sarahxsanders)
- Yaacov Rydzinski (@yaacovCR)
v16.13.0 (2026-02-24)
New Feature 🚀
Bug Fix 🐞
- #4336 add deprecated note to assertValidExecutionArguments (@yaacovCR)
- #4517 fix(validation): incorrect validation errors when variable descriptions are used (@phryneas)
Internal 🏠
3 PRs were merged
Committers: 4
- Benjie(@benjie)
- Jovi De Croock(@JoviDeCroock)
- Lenz Weber-Tronic(@phryneas)
- Yaacov Rydzinski (@yaacovCR)
v16.12.0 (2025-11-01)
New Feature 🚀
- #4482 Implement changes for executable descriptions (@JoviDeCroock)
- #4493 Backport schema coordinates (@JoviDeCroock)
Bug Fix 🐞
- #4392 Catch unhandled exception in abstract resolution (@JoviDeCroock)
Docs 📝
28 PRs were merged
- #4374 docs: testing graphQL servers (@sarahxsanders)
- #4376 docs: type generation for graphql servers (@sarahxsanders)
- #4380 docs: add guides for custom scalars (@sarahxsanders)
- #4381 docs: anatomy of a resolver (@sarahxsanders)
- #4382 docs: understanding graphql errors (@sarahxsanders)
- #4383 docs: N+1 problem and DataLoader (@sarahxsanders)
- #4391 docs: cursor-based pagination guide (@sarahxsanders)
- #4393 docs: add page on abstract types (@sarahxsanders)
- #4394 docs: editorial on abstract types page (@benjie)
- #4395 docs: editorial for recent documentation updates (@benjie)
- #4396 docs: add page on authorization strategies (@sarahxsanders)
- #4398 docs: update "going to production" guide (@sarahxsanders)
- #4399 Update mutations-and-input-types.mdx (@roman-lakhnov)
- #4400 Remove CJS from docs (@JoviDeCroock)
- #4401 docs: add guide on directives (@sarahxsanders)
- #4402 docs: add guide for operation complexity controls (@sarahxsanders)
- #4405 docs: add guide on nullability (@sarahxsanders)
- #4406 docs: add guide on subscriptions (@sarahxsanders)
- #4411 docs: add guide on caching strategies (@sarahxsanders)
- #4414 docs: guide on scaling your API (@sarahxsanders)
- #4416 Editorial for #4405 (nullability) (@benjie)
- #4417 Indicate that field arguments should always be preferred over directives (@benjie)
- #4418 docs: trusted documents (@benjie)
- #4419 docs: cleanup and fixes (@sarahxsanders)
- #4436 Suggestions for federation links (@Urigo)
- #4444 Fix navigation (@JoviDeCroock)
- #4452 fix(docs/mutations-and-input-types.mdx): root being inside of SDL (@alesculek)
- #4473 docs: remove fourth permutation of the visit API (@janmeier)
Polish 💅
- #4453 Remove oneof validation from values of correct type (@JoviDeCroock)
Internal 🏠
3 PRs were merged
Committers: 9
- Aleš Culek(@alesculek)
- Benjie(@benjie)
- Jan Aagaard Meier(@janmeier)
- Jovi De Croock(@JoviDeCroock)
- Mark Larah(@magicmark)
- null(@roman-lakhnov)
- Sarah Sanders(@sarahxsanders)
- Uri Goldshtein(@Urigo)
- Yaacov Rydzinski (@yaacovCR)
v16.11.0 (2025-04-26)
New Feature 🚀
- #4363 Ensure we validate for using nullable variables in oneOf input fields (@JoviDeCroock)
- #4366 feat(execution): add max coercion errors option to execution context (@cristunaranjo)
Bug Fix 🐞
- #4367 fix(coerce-input-value): input object coercion rejects arrays (@cristunaranjo)
Docs 📝
11 PRs were merged
- #4310 First draft for upgrade guide to v17 (@JoviDeCroock)
- #4331 fix sidebar for documentation and
/api-v16(@dimaMachina) - #4335 Add cspell exception (@JoviDeCroock)
- #4340 Improve flow of documentation around GraphiQL (@benjie)
- #4343 typofix: removes extra parenthesis from getting started code snippet (@rabahalishah)
- #4351 fixed wrong variable name (@fto-dev)
- #4352 docs(getting-started): promises current links (@guspan-tanadi)
- #4368 Update docs for execution options (@JoviDeCroock)
- #4369 Correct some syntax (@JoviDeCroock)
- #4372 Refactor every code-first example to leverage resolve (@JoviDeCroock)
- #4373 docs: Update getting-started.mdx (@Shubhdeep12)
Polish 💅
- #4312 Increase print/visit performance (@JoviDeCroock)
Internal 🏠
4 PRs were merged
- #4327 Add redirect for /api (@JoviDeCroock)
- #4377 Chore: bump setup-node (@JoviDeCroock)
- #4378 Change to gqlConf 2025 (@JoviDeCroock)
- #4379 Add missing parenthesis (@benjie)
Committers: 8
- Benjie(@benjie)
- Cris Naranjo (@cristunaranjo)
- Dimitri POSTOLOV(@dimaMachina)
- Fatih Ozdemir(@fto-dev)
- Guspan Tanadi(@guspan-tanadi)
- Jovi De Croock(@JoviDeCroock)
- Rabah Ali Shah(@rabahalishah)
- Shubhdeep Chhabra(@Shubhdeep12)
v16.10.0 (2024-12-15)
New Feature 🚀
- #4286 fix: properly type
extensionsin GraphQLFormattedError (@tpoisseau) - #4292 Expose tokenCount on the DocumentNode (@JoviDeCroock)
Bug Fix 🐞
- #4137 backport(v16): Require non-empty directive locations (#4100) (@benjie)
- #4168 fix(validation): catch OverlappingFieldsCanBeMergedRule violations with nested fragments (@sachindshinde)
- #4226 Backport introspection type fix (@JoviDeCroock)
- #4291 Address empty selection-set (@JoviDeCroock)
Docs 📝
10 PRs were merged
- #4240 Convert from docusaurus to nextra (@JoviDeCroock)
- #4248 Add content from https://github.com/graphql/graphql.github.io/pull/1782 (@JoviDeCroock)
- #4249 Styling fixes (@JoviDeCroock)
- #4256 Various fixes to docs (@JoviDeCroock)
- #4279 Solve some low hanging fruit in the documentation (@JoviDeCroock)
- #4283 Add overview page and add stackblitz to tutorial (@JoviDeCroock)
- #4284 Provide people with tabs so they can use classes as well (@JoviDeCroock)
- #4289 Add note about defer/stream being v17 (@JoviDeCroock)
- #4290 Write about
@oneOfin the graphql-js documentation (@JoviDeCroock) - #4295 Split up in v16 API documentation (@JoviDeCroock)
Internal 🏠
4 PRs were merged
- #4138 Upgrade codecov action and pass token (@benjie)
- #4139 Fix codecov workflow (@benjie)
- #4157 Add GraphQLConf 2024 banner (@bignimbus)
- #4193 Upgrade deprecated actions (@JoviDeCroock)
Committers: 5
- Benjie(@benjie)
- Jeff Auriemma(@bignimbus)
- Jovi De Croock(@JoviDeCroock)
- Sachin D. Shinde(@sachindshinde)
- tpoisseau(@tpoisseau)
v16.9.0 (2024-06-21)
New Feature 🚀
- #4119 backport[v16]: Introduce "recommended" validation rules (@benjie)
- #4122 backport[v16]: Enable passing values configuration to GraphQLEnumType as a thunk (@benjie)
- #4124 backport[v16]: Implement OneOf Input Objects via
@oneOfdirective (@benjie)
Committers: 1
- Benjie(@benjie)
v16.8.2 (2024-06-12)
Bug Fix 🐞
- #4022 fix: remove
globalThischeck and align with what bundlers can accept (@JoviDeCroock)
Internal 🏠
Committers: 2
- Benjie(@benjie)
- Jovi De Croock(@JoviDeCroock)
v16.8.1 (2023-09-19)
Bug Fix 🐞
- #3967 OverlappingFieldsCanBeMergedRule: Fix performance degradation (@AaronMoat)
Committers: 1
- Aaron Moat(@AaronMoat)
v16.7.1 (2023-06-22)
:loudspeaker: Big shout out to @phryneas, who managed to reproduce this issue and come up with this fix.
Bug Fix 🐞
- #3923 instanceOf: workaround bundler issue with
process.env(@IvanGoncharov)
Committers: 1
- Ivan Goncharov(@IvanGoncharov)
v16.7.0 (2023-06-21)
New Feature 🚀
- #3887 check "globalThis.process" before accessing it (@kettanaito)
Bug Fix 🐞
- #3707 Fix crash in node when mixing sync/async resolvers (backport of #3706) (@chrskrchr)
- #3838 Fix/invalid error propagation custom scalars (backport for 16.x.x) (@stenreijers)
Committers: 3
- Artem Zakharchenko(@kettanaito)
- Chris Karcher(@chrskrchr)
- Sten Reijers(@stenreijers)
v16.6.0 (2022-08-16)
New Feature 🚀
- #3645 createSourceEventStream: introduce named arguments and deprecate positional arguments (@yaacovCR)
- #3702 parser: limit maximum number of tokens (@IvanGoncharov)
Bug Fix 🐞
- #3686 Workaround for codesandbox having bug with TS enums (@IvanGoncharov)
- #3701 Parser: allow 'options' to explicitly accept undefined (@IvanGoncharov)
Committers: 2
- Ivan Goncharov(@IvanGoncharov)
- Yaacov Rydzinski (@yaacovCR)
v16.5.0 (2022-05-09)
New Feature 🚀
- #3565 Expose GraphQLErrorOptions type (#3554) (@IvanGoncharov)
Committers: 1
- Ivan Goncharov(@IvanGoncharov)
v16.4.0 (2022-04-25)
New Feature 🚀
- #3465 refactor: use object for GraphQLError constructor (@n1ru4l)
- #3487 feat: expose getArgumentValues (@saihaj)
Bug Fix 🐞
Docs 📝
2 PRs were merged
- #3505 correct outdated documentation (@Ginhing)
- #3512 Update documentation on deprecated formatError(..) (@dwelch2344)
Polish 💅
3 PRs were merged
- #3522 tests(execution): add missing new lines (@IvanGoncharov)
- #3524 tests(printSchema): test omitting schema of common names (@IvanGoncharov)
- #3537 ESLint: disallow using node globals in src/tests (@IvanGoncharov)
Internal 🏠
26 PRs were merged
- #3468 ci: add stub action for canary releases on PRs (@IvanGoncharov)
- #3470 ci: implement canary releases on PRs (@IvanGoncharov)
- #3472 ci: remove NPM caching on canary release script (@IvanGoncharov)
- #3473 ci: Pass 'GITHUB_TOKEN' to GitHub CLI (@IvanGoncharov)
- #3475 ci: checkout repo in canary workflow (@IvanGoncharov)
- #3477 ci: fix & cleanup script for modifying NPM package into canary (@IvanGoncharov)
- #3479 ci: Add missing require to canary script (@IvanGoncharov)
- #3481 ci: fix missing PR number in canary release workflow (@IvanGoncharov)
- #3483 ci: fix missing PR number in canary release workflow (@IvanGoncharov)
- #3484 ci: Moving GH Action template syntax to env variables (@IvanGoncharov)
- #3486 ci: improve comment on canary releases (@IvanGoncharov)
- #3488 ci: Extract branch publishing into separate workflow (@IvanGoncharov)
- #3489 ci: use '.node-version' file to configure node version used for CI (@IvanGoncharov)
- #3491 ci: use separate workflows for 'push' and 'pull_request' (@IvanGoncharov)
- #3493 ci: remove unused 'workflow_id' input (@IvanGoncharov)
- #3496 ci: fix deprecation of canary package (@IvanGoncharov)
- #3497 ci: use environments to track deployments (@IvanGoncharov)
- #3502 ci: fix deployments of npm & deno branches (@IvanGoncharov)
- #3503 ci: Add '@github-actions' bot (@IvanGoncharov)
- #3523 github-actions-bot: replace 'octokit/request-action' action (@IvanGoncharov)
- #3525 github-actions-bot: Fix collapsing of unrelated comments (@IvanGoncharov)
- #3530 integrationTests/node: fix crash on Mac with M1 by using docker (@IvanGoncharov)
- #3534 github-actions-bot: fix publishing of canary releases (@IvanGoncharov)
- #3536 github-actions-bot: fix usage of NPM_CANARY_PR_PUBLISH_TOKEN (@IvanGoncharov)
- #3538 github-actions-bot: fix reply on commands (@IvanGoncharov)
- #3543 pass valid value to codecov config (@is2ei)
Dependency 📦
2 PRs were merged
- #3485 Update deps (@IvanGoncharov)
- #3533 Update deps (@IvanGoncharov)
Committers: 7
- David Glasser(@glasser)
- David Welch(@dwelch2344)
- Ginhing(@Ginhing)
- Horie Issei(@is2ei)
- Ivan Goncharov(@IvanGoncharov)
- Laurin Quast(@n1ru4l)
- Saihajpreet Singh(@saihaj)
v16.3.0 (2022-01-26)
New Feature 🚀
- #3454 feat: allow providing an object to the GraphQLError constructor (@n1ru4l)
- #3464 Expose
getArgumentValuesas public API (@IvanGoncharov)
Bug Fix 🐞
- #3442 Prevent Infinite Loop in OverlappingFieldsCanBeMergedRule (@nicolaslt)
- #3455 OverlappingFieldsCanBeMerged: sort argument values before comparing (@IvanGoncharov)
Docs 📝
2 PRs were merged
- #3269 feat: setup docs site (@saihaj)
- #3437 CONTRIBUTING.md: remove reference to Facebook bug bounty program (@IvanGoncharov)
Polish 💅
7 PRs were merged
- #3441 UniqueArgumentDefinitionNamesRule: Improve tests (@Cito)
- #3446 Use 'eslint-plugin-simple-import-sort' to sort imports (@IvanGoncharov)
- #3447 Fix index.ts files to be compatible with Typedoc (@IvanGoncharov)
- #3452 validation-test.ts: various grammar fixes (@spawnia)
- #3457 OverlappingFieldsCanBeMergedRule: simplify argument comparison (@IvanGoncharov)
- #3459 blockString-tests: remove duplicate test, fix grammar (@Cito)
- #3461 visit: simplify handling of root node (@IvanGoncharov)
Internal 🏠
5 PRs were merged
- #3433 gh/actions: refactor out action to deploy branches (@IvanGoncharov)
- #3434 gh/actions: remove 'npm dedupe' check since it unexpectadly do update (@IvanGoncharov)
- #3435 gh/actions: run benchmark & diff-npm-package only on PRs (@IvanGoncharov)
- #3436 gh/actions: make all cloned repo read-only (@IvanGoncharov)
- #3443 ci/checkPackageLock: update only package-lock.json (@IvanGoncharov)
Dependency 📦
4 PRs were merged
- #3438 Update deps (@IvanGoncharov)
- #3444 Update deps (@IvanGoncharov)
- #3462 Update deps (@IvanGoncharov)
- #3463 Update deps + fix 'npm audit' (@IvanGoncharov)
Committers: 6
- Benedikt Franke(@spawnia)
- Christoph Zwerschke(@Cito)
- Ivan Goncharov(@IvanGoncharov)
- Laurin Quast(@n1ru4l)
- Nicolas Lagoutte(@nicolaslt)
- Saihajpreet Singh(@saihaj)
v16.2.0 (2021-12-17)
New Feature 🚀
- #3426 type/definition: export
resolve*Thunkfunctions (@IvanGoncharov)
Docs 📝
Polish 💅
Internal 🏠
2 PRs were merged
- #3420 resources/utils: extract 'writeGeneratedFile' to utils (@IvanGoncharov)
- #3427 gh/actions: run benchmark and NPM diff on correct base commits (@IvanGoncharov)
Committers: 2
- Christoph Zwerschke(@Cito)
- Ivan Goncharov(@IvanGoncharov)
v16.1.0 (2021-12-07)
New Feature 🚀
- #3355 Export GRAPHQL_MAX_INT and GRAPHQL_MIN_INT (@tofran)
- #3384 Preserve non-error values thrown from resolvers (@IvanGoncharov)
Bug Fix 🐞
- #3375 printSchema: handle descriptions that are non-printable as block strings (@IvanGoncharov)
Docs 📝
- #3393 Update doc examples to reflect the current API (@paulserraino)
Polish 💅
9 PRs were merged
- #3365 Add devAssert about removal of positional arguments (@IvanGoncharov)
- #3376 execute: fix spec section names in comments (@twof)
- #3377 lexer-tests: Use tildas as invalid characters (@twof)
- #3391 Enable '@typescript-eslint/switch-exhaustiveness-check' rule (@IvanGoncharov)
- #3392 Remove $FlowFixMe comments (@IvanGoncharov)
- #3396 typeFromAST: use exhaustive switch and remove invariant (@IvanGoncharov)
- #3400 expectJSON: improve readability (@IvanGoncharov)
- #3401 tests: Improve formating of strings with 'dedent' tag (@IvanGoncharov)
- #3406 Simplify code by replacing Object.entries with Object.keys (@IvanGoncharov)
Internal 🏠
9 PRs were merged
- #3386 Add support for Node17 (@IvanGoncharov)
- #3388 Drop "eslint-plugin-istanbul" and implement as internal ESLint rule (@IvanGoncharov)
- #3398 Switch coverage from nyc to c8 (@IvanGoncharov)
- #3403 ci: add check that 'package-lock.json' doesn't have conflicts (@IvanGoncharov)
- #3404 github/workflows: simplify npm cache setup (@IvanGoncharov)
- #3405 Use for '--ignore-scripts' for all
npm ci&npm install(@IvanGoncharov) - #3407 ci: add check for unnecessary duplicates in package-lock.json (@IvanGoncharov)
- #3416 fix c8 ignore decorator typos (@yaacovCR)
- #3417 package.json: Specify NPM release tag explicitly (@IvanGoncharov)
Dependency 📦
4 PRs were merged
- #3387 Update package-lock.json (@IvanGoncharov)
- #3389 package.json: Drop unused '@babel/eslint-parser' (@IvanGoncharov)
- #3390 Update deps (@IvanGoncharov)
- #3399 Update deps (@IvanGoncharov)
Committers: 5
- Alex Reilly(@twof)
- Francisco Marques(@tofran)
- Ivan Goncharov(@IvanGoncharov)
- Paul Serraino(@paulserraino)
- Yaacov Rydzinski (@yaacovCR)
v16.0.1 (2021-11-01)
Bug Fix 🐞
- #3354 Lexer: fix line & column for multiline BLOCK_STRING tokens (@IvanGoncharov)
Polish 💅
- #3348 GraphQLError-test: text how extensions is inherited from originalError (@IvanGoncharov)
Internal 🏠
- #3347 checkgit.sh: Added a check for local modifications (@IvanGoncharov)
Committers: 1
- Ivan Goncharov(@IvanGoncharov)
v16.0.0 (2021-10-28)
Breaking Change 💥
- #2896 Remove deprecated rule aliases (@IvanGoncharov)
- #2897 Remove 'findDeprecatedUsages' that was previously deprecated (@IvanGoncharov)
- #2898 Remove 'GraphQLSchema::isPossibleType' that was previously deprecated (@IvanGoncharov)
- #2900 Drop support for long deprecated comments as descriptions (@IvanGoncharov)
- #2902 Remove deprecated {GraphQLEnumValue, GraphQLField}::isDeprecated (@IvanGoncharov)
- #2903 Removed parser support for legacy syntax (@IvanGoncharov)
- #2904 Remove support for positional args in graphql/execute/subscribe func (@IvanGoncharov)
- #2905 resolveType: remove support for returning GraphQLObjectType (@IvanGoncharov)
- #2906 Convert GraphQLList and GraphQLNonNull into proper classes (@IvanGoncharov)
- #2907 Remove 'find' polyfill (@IvanGoncharov)
- #2911 Remove 'isFinite' & 'isInteger' polyfills (@IvanGoncharov)
- #2912 Drop 'Array.from' polyfill (@IvanGoncharov)
- #2913 Remove polyfills for Symbol (@IvanGoncharov)
- #2914 Remove Node's custom inspect function (@IvanGoncharov)
- #2915 Drop support for TS before 3.7 (@IvanGoncharov)
- #2916 refactor: replace default exports with named exports (@IvanGoncharov)
- #2917 Drop support for non-iteratable ArrayLike objects (@IvanGoncharov)
- #2918 Drop support for older browsers (@IvanGoncharov)
- #2919 Remove polyfills for 'Object.values' & 'Object.entries' (@IvanGoncharov)
- #2920 Deprecate fragments with variables and reflect that in naming (@IvanGoncharov)
- #2921 Deprecate 'getFieldDefFn' arg of 'TypeInfo' and move it last (@IvanGoncharov)
- #2923 Drop support for Node10 (@IvanGoncharov)
- #2930 visitor: remove
visitorKeysargument (@IvanGoncharov) - #2931 visit: remove template arguments for possible nodes (@IvanGoncharov)
- #2951 Forbid null & undefined as return value of 'interfaces' thunk (@IvanGoncharov)
- #2952 Restrict Thunks to support only ObjMap and Array (@IvanGoncharov)
- #2955 feat: convert Thunk to ThunkArray and ThunkObjMap (@saihaj)
- #2957 visitor: remove 4th form of visitor (@IvanGoncharov)
- #2997 print/printSchema: remove trailing new line (@IvanGoncharov)
- #3003 TS: use
unknown(TS) formixed(flow) (@saihaj) - #3006 ts: Switch extension values to unknown to match Flow types (@IvanGoncharov)
- #3027 subscribe: drop mapping of AsyncIterable errors (@IvanGoncharov)
- #3031 Drop experimental online parser (@IvanGoncharov)
- #3032 Use specifiedBy instead of specifiedByUrl (@Code-Hex)
- #3055 Drop Node v15 (@IvanGoncharov)
- #3110 Switch entire codebase to TypeScript (@IvanGoncharov)
- #3114 Drop support for TS 3.7 (@IvanGoncharov)
- #3131 TS: Drop template argument from GraphQLFormattedError (@IvanGoncharov)
- #3132 Synchronise
*.d.tswith sources converted to TS (@IvanGoncharov) - #3182 Switch schema types to use ReadonlyArrays (@IvanGoncharov)
- #3228 Add type params to GraphQLScalar (@IvanGoncharov)
- #3231 execute: Forbid to return
nullfromserializefunction (@IvanGoncharov) - #3239 execute: Forbid to return
nullfromserializefunction (@IvanGoncharov) - #3250 Bring
visitorKeysback (@ardatan) - #3261 Error.toStringTag change return string from 'Object' to 'GraphQLError' (@IvanGoncharov)
- #3270 visitor: speed up visitInParallel by dropping support for unknown nodes (@IvanGoncharov)
- #3271 isNode: check exact value of node's
kind(@IvanGoncharov) - #3283 validation: restrict maximum number of errors to 100 by default (@IvanGoncharov)
- #3288 Move validation of names into
GraphQL*constructors (@IvanGoncharov) - #3311 GraphQLError: use enumerable properties (@IvanGoncharov)
- #3317 Convert const "enum-like" maps to TS enums (@IvanGoncharov)
- #3319 Add message that we only support TS >= 4.1.0 (@IvanGoncharov)
- #3326 GraphQLError: enumerate only spec prescribed properties (@IvanGoncharov)
- #3328 GraphQLField: relax default value of TArgs to
any(@IvanGoncharov)
Deprecation ⚠
- #3252 Deprecate 'printError' function (@IvanGoncharov)
- #3292 Deprecate 'graphql/subscriptions' and move code to 'execution' (@yaacovCR)
- #3318 Deprecate 'ASTKindToNode' (@IvanGoncharov)
New Feature 🚀
- #2932 print: remove indentation inside of block strings (@IvanGoncharov)
- #2996 extensionASTNodes: always populate with empty array (@IvanGoncharov)
- #3059 Refine parse and AST to represent ConstValue (@leebyron)
- #3063 Refine getNamedType() for Input and Output types (@leebyron)
- #3117 RFC: Support full Unicode in lexer (@leebyron)
- #3170 Add 'Symbol.toStringTag' into every publicly exported class (@IvanGoncharov)
- #3208 Add 'UniqueArgumentDefinitionNamesRule' validation rule (@IvanGoncharov)
- #3242 parser: add specialized error for extension with descriptions (@IvanGoncharov)
- #3255 Add TResult to GraphQLFieldResolver signature (@tgriesser)
- #3259 Deprecate 'formatError' and added 'GraphQLError.toJSON' instead (@IvanGoncharov)
- #3272 collectFields/collectSubfields cleanup prototype (@IvanGoncharov)
- #3279 Make 'extensions' non-optional in schema types (@IvanGoncharov)
- #3305 Added 'GraphQLSchema.getRootType' and deprecate
getOperationRootType(@IvanGoncharov) - #3306 Deprecate SubscriptionArgs and broaden ExecutionArgs (@yaacovCR)
- #3312 language: change OperationTypeNode to enum (@lekoaf)
- #3313 GraphQLError: keep extensions always present (@IvanGoncharov)
- #3315 Change type of error extensions from anonymous Record to named interfaces (@IvanGoncharov)
Bug Fix 🐞
- #2852 introspectionFromSchema: enable 'specifiedByUrl' by default (@IvanGoncharov)
- #2855 introspection: Add missing support for deprecated input values (@IvanGoncharov)
- #2859 separateOperations: distinguish query and fragment names (@IvanGoncharov)
- #2861 RFC: Assert subscription field is not introspection. (@benjie)
- #2876 Replace 'localeCompare' with function independent from locale (@IvanGoncharov)
- #2959 ASTVisitor: use type intersection instead of type union (@IvanGoncharov)
- #2987 Synchronise TS typings for graphql.js/execute.js/subscribe.js (@IvanGoncharov)
- #2991 fix: update introspection types (@saihaj)
- #3001 fix: discrepancies between Flow and TS types (@saihaj)
- #3009 TS: use proper type for async generator (@saihaj)
- #3129 definition.d.ts: correct types (@IvanGoncharov)
- #3172 Avoid relying on constructor.name for instanceOf error check. (@IvanGoncharov)
- #3178 Export TypeKind as value (@janicduplessis)
- #3223 Disallow "true", "false", and "null" as enum values (@Yogu)
- #3248 Parser: allow classes that extend Parser to access the instance attributes (@n1ru4l)
- #3257 fix: Preserve
deprecationReasononGraphQLInputFields (@trevor-scheer) - #3273 type/introspection: add missing
__Directive.args(includeDeprecated:)(@IvanGoncharov) - #3278 lexer: fix expression to decode surrogate pairs (@Cito)
- #3308 execute: Correctly report missing root type error (@IvanGoncharov)
- #3316 Export OperationTypeNode as value (@yaacovCR)
- #3325 GraphQLError: fix empty
locationsif error got nodes without locations (@IvanGoncharov) - #3339 Fix TS error caused by importing internal files directly (@IvanGoncharov)
- #3344 version: force proper typing on version literals (@IvanGoncharov)
Docs 📝
5 PRs were merged
- #2849 README: add instructions on using experimental features (@robrichard)
- #3121
*.d.ts: Switch comments to comment to TSDoc (@IvanGoncharov) - #3146 build: add eslint-plugin-tsdoc (@saihaj)
- #3240 docs(buildASTSchema): add Subscription to list of root types (@IvanGoncharov)
- #3285 Improve documentation of validation rules (@IvanGoncharov)
Polish 💅
119 PRs were merged
- #2847 Add tests for supporting Iterable collections across the lib (@IvanGoncharov)
- #2851 tests: update 'getIntrospectionQuery' tests to use custom matchers (@IvanGoncharov)
- #2858 separateOperations-test: refactor tests to look like snapshots (@IvanGoncharov)
- #2868 Extract types for normalized configs into named types (@IvanGoncharov)
- #2878 fix: type annotation cannot appear on a constructor declaration (@saihaj)
- #2879 fix: no need to mark param optional if default value is given (@saihaj)
- #2889 Simplify isAsyncIterable (@IvanGoncharov)
- #2928 refactor: use regexp-exec (@saihaj)
- #2933 printer: remove 'addDescription' wrapper (@IvanGoncharov)
- #2934 printer: use
wraputil function in more places (@IvanGoncharov) - #2935 VariablesAreInputTypesRule: remove incorrect return type (@IvanGoncharov)
- #2936 schema-test: use chai's
keysinstead of undocumentedkey(@IvanGoncharov) - #2937 validateSchema: inline 'getAllNodes' function (@IvanGoncharov)
- #2938 inspect: improve typings for
toJSONcall (@IvanGoncharov) - #2947 valueFromAST-test: correct typings (@IvanGoncharov)
- #2948 scalars-test: improve typings of function calls (@IvanGoncharov)
- #2953 type-validate: inline getAllNodes function (@IvanGoncharov)
- #2956 buildClientSchema-test: correctly wrap test case (@IvanGoncharov)
- #2963 printer: simplify printing of query short form (@IvanGoncharov)
- #2964 Simplified memoize3 and improve type checking (@IvanGoncharov)
- #2965 parser: improve type checking of 'parseTypeReference' function (@IvanGoncharov)
- #2966 blockString-fuzz: improve
lexValuetyping (@IvanGoncharov) - #2967 flow: improve typings of exported definitions (@IvanGoncharov)
- #2977 dedent-test: change test data to pass spell check (@IvanGoncharov)
- #2981 printSourceLocation: simplifying by using
padStart(@IvanGoncharov) - #2984 refactor(language/ast.d.ts): use Kind enum type (@jjangga0214)
- #2988 Replace 'Array.reduce' with 'for of' (@IvanGoncharov)
- #2989 Switch
indexOftoincludeswhenever possible (@IvanGoncharov) - #2990 Switch instanceOf to be named export (@IvanGoncharov)
- #2992 flow: Improve typings for exported definitions (@IvanGoncharov)
- #2995 introspection-test: fix test to correctly check for exceptions (@IvanGoncharov)
- #2998 Simplify testing AST nodes in buildSchema/extendedSchema tests (@IvanGoncharov)
- #2999 tests: replace 'invariant' with 'expect' assertion whenever possible (@IvanGoncharov)
- #3002 feat: add types for internal Parser class (@saihaj)
- #3004 GraphQLGrammarType: no need to code in
d.tscan just export type (@saihaj) - #3005 ts: switch to use ObjMap utility type (@saihaj)
- #3008 ESLint: enable 'func-names' (@IvanGoncharov)
- #3010 testUtils: refactor out dedentString from dedent (@saihaj)
- #3011 mapAsyncIterator: add default value for 'rejectCallback' (@IvanGoncharov)
- #3012 mapAsyncIterator: allow 'rejectCallback' to only be synchronous (@IvanGoncharov)
- #3013 mapAsyncIterator: simplify mapResult (@IvanGoncharov)
- #3014 mapAsyncIterator: simplify abruptClose (@IvanGoncharov)
- #3015 printer-test: switch to dedentString (@IvanGoncharov)
- #3016 printer-test: do more check on kitchen sink tests (@IvanGoncharov)
- #3022 memoize3: remove unnecessary
mixedtype (@IvanGoncharov) - #3023 predicate-test: improve typecheck (@IvanGoncharov)
- #3024 subscribe: simplify by rewriting as async functions (@IvanGoncharov)
- #3025 subscribe: simplify root field extraction (@IvanGoncharov)
- #3026 Switch some of 'Object.keys' to more modern ES6 constructs (@IvanGoncharov)
- #3028 mapAsyncIterator: move promise resolution into
mapResult(@IvanGoncharov) - #3034 visitor-test: cleanup test for nodes with unknown kinds (@IvanGoncharov)
- #3035 printSchema: replace array concat with spead + update comment (@IvanGoncharov)
- #3038 TS: improve types mapAsyncIterator-test (@saihaj)
- #3039 simplify predicate-test type (@saihaj)
- #3041 Use correct terminology around iterators and iterable (@IvanGoncharov)
- #3042 Remove superficial usages of 'Array.from' (@IvanGoncharov)
- #3043 Fix Flow issues with Symbol.asyncIterator (@IvanGoncharov)
- #3050 Generalize defineArguments() (@leebyron)
- #3053 Forbid non-ASCII characters in JS files (@IvanGoncharov)
- #3058 subscribe-test: general cleanup and simplify test setups (@IvanGoncharov)
- #3061 Improve parser location API (@leebyron)
- #3062 mapAsyncIterator: refactor async iterator (@IvanGoncharov)
- #3064 mapAsyncIterator: refactor async iterator (@IvanGoncharov)
- #3066 mapAsyncIterator-test: check that return value is passed on early return (@IvanGoncharov)
- #3068 Improve grammar in execution error messages (@Cito)
- #3069 subscription-test: use separate dummy query type (@IvanGoncharov)
- #3070 subscription-test: standardize generator names (@IvanGoncharov)
- #3072 Flow: add missing names to arguments of function types (@IvanGoncharov)
- #3073 Improve naming 'err => error' and 'arr => array' (@IvanGoncharov)
- #3075 Simplify printSchema directive printing (@leebyron)
- #3079 dedent: simplify implementation (@IvanGoncharov)
- #3081 Flow: Replace force type conversion with explicit $FlowFixMe comments (@IvanGoncharov)
- #3082 collectFields: use ES6 collections instead of Object.create(null) (@IvanGoncharov)
- #3083 execute: inline collectAndExecuteSubfields function (@IvanGoncharov)
- #3084 getFieldDef: accept FieldNode instead of field name (@IvanGoncharov)
- #3085 Flow: switched to exact object by default (@IvanGoncharov)
- #3096 Flow: Remove inferrable types (@IvanGoncharov)
- #3097 Flow: use only type imports for importing types (@IvanGoncharov)
- #3098 mapAsyncIterator: simplify test case (@IvanGoncharov)
- #3099 OverlappingFieldsCanBeMergedRule: refactor 'PairSet' (@IvanGoncharov)
- #3100 Flow: add missing arg name in function type (@IvanGoncharov)
- #3101 Flow: remove unnecessary '%checks' (@IvanGoncharov)
- #3105 getLocation: use more explicit
matchAllinstead ofRegExp.exec(@IvanGoncharov) - #3108 OverlappingFieldsCanBeMergedRule: futher simplify 'PairSet' (@IvanGoncharov)
- #3115 Refactor Lexer (@leebyron)
- #3118 TS: switch all imports to type imports (@IvanGoncharov)
- #3120 subscription-test: add missing await (@IvanGoncharov)
- #3122 valueFromAST: drop unnecessary 'void' since
mixedalready includes it (@IvanGoncharov) - #3123 visitor: convert arguments descriptions to JSDoc comments (@IvanGoncharov)
- #3124 src/type: correct order of import/exports (@IvanGoncharov)
- #3125 TypeInfo: use explicit type for
getFieldDefarg (@IvanGoncharov) - #3128 definition: Remove deprecation comment (@IvanGoncharov)
- #3130 coerceInputValue: add missing argument in function call (@IvanGoncharov)
- #3159 execute: Rename resolveField function and update comments (@yaacovCR)
- #3160 versions-test: add support for experimental pre-releases (@IvanGoncharov)
- #3166 SingleFieldSubscriptionsRule-test: extract test schema from harness (@IvanGoncharov)
- #3167 SingleFieldSubscriptionsRule: fix order of imports (@IvanGoncharov)
- #3175 TypeInfo-test: remove dependency on harness schema for validation tests (@IvanGoncharov)
- #3176 KnownDirectivesRule-test: remove dependency on harness schema (@IvanGoncharov)
- #3177 kitchenSinkQuery: add '@onVariableDefinition' directive (@IvanGoncharov)
- #3179 KnownDirectivesRule-test: add tests for missing directive locations (@IvanGoncharov)
- #3180 simplify validation harness by extracting union types into approriate… (@IvanGoncharov)
- #3181 Switch tests & internal funcs to accept ReadonlyArrays (@IvanGoncharov)
- #3187 refactor: collectFields to separate utility (@yaacovCR)
- #3189 instanceOf: add additional tests (@IvanGoncharov)
- #3194 Replace 'Idx' with 'Index' in variable names (@IvanGoncharov)
- #3264 lexer: Remove superfluous statement in
readDigits(@Cito) - #3277 ESLint: enable some of the rules previously blocked by TS conversion (@IvanGoncharov)
- #3284 VariablesAreInputTypesRule: add test for ignoring unknown types (@IvanGoncharov)
- #3287 assertValidName: share character classes with lexer (@IvanGoncharov)
- #3290 Remove unnecessary Promise.resolve and Promise.reject (@IvanGoncharov)
- #3293 Align calls of buildExecutionContext (@yaacovCR)
- #3307 Reuse
groupByin validation rules (@IvanGoncharov) - #3309 Move deprecated
SubscriptionArgsto 'src/subscription' (@IvanGoncharov) - #3310 expectJSON: return custom object instead of
expect(@IvanGoncharov) - #3322 Lexer: use standard JS functions to handle Unicode (@IvanGoncharov)
- #3324 GraphQLError-test: merge check of source with rest of the properties (@IvanGoncharov)
- #3336 GraphQLError: Add test to check order of fields in JSON.stringify (@IvanGoncharov)
- #3345 version-test: fix validation of
versionInfo.preReleaseTag(@IvanGoncharov)
Internal 🏠
59 PRs were merged
- #2478 jsutils: add test for Path functions (@Cito)
- #2831 build: add support for experimental releases (@IvanGoncharov)
- #2836 CI: test on node 15 (@IvanGoncharov)
- #2837 Flow: remove support for measuring Flow coverage (@IvanGoncharov)
- #2838 TS: exclude integration tests from root tsconfig.json (@IvanGoncharov)
- #2840 resources: use named groups in RegExp (@IvanGoncharov)
- #2881 ci: migrate master to main (@saihaj)
- #2886 Use correct flags for rmdir/mkdir functions (@IvanGoncharov)
- #2891 benchmark: fix temp dir creation (@IvanGoncharov)
- #2908 Add EasyCLA instructions, replace FB CLA (@brianwarner)
- #2924 cspell: disable progress and convert config to YAML (@IvanGoncharov)
- #2925 TS: Enable integrations tests for extending
GraphQL*Extensionstypes (@IvanGoncharov) - #2929 integrationTests: always build npm packages before tests (@IvanGoncharov)
- #2954 build: use node12 tsconfig (@saihaj)
- #2962 flow-typed: fix unresolved types (@IvanGoncharov)
- #2968 ESLint: Allow 'async' functions (@IvanGoncharov)
- #2969 ESLint: cleanup rule overrides (@IvanGoncharov)
- #2970 Remove override of
node/global-requirerule forresourcesdir (@IvanGoncharov) - #2971 benchmark: refactor args parsing code (@IvanGoncharov)
- #2972 Remove deprecated
rmdirSyncusage from internal scripts (@IvanGoncharov) - #2978 internal: simplify 'exec' function (@IvanGoncharov)
- #2982 benchmark: use more readable spelling of V8 flag (@IvanGoncharov)
- #3000 feat: add
.d.tsfor jsutils (@saihaj) - #3007 TS integration test: add check for possibility to refine extension types (@IvanGoncharov)
- #3018 build: run prettier on generated files (@IvanGoncharov)
- #3019 inline-invariant: switch to use
falseinstead of0(@IvanGoncharov) - #3021 gen-version: prettify source code (@IvanGoncharov)
- #3036 integrationTests: test package with TS 4.2 (@IvanGoncharov)
- #3054 Test with Node v16 (@IvanGoncharov)
- #3078 babel: Stop transpiling optional chaining operator (@IvanGoncharov)
- #3080 Workaround for Flow issue with 'String.raw' (@IvanGoncharov)
- #3102 eslintrc: fix spelling mistake in comment (@IvanGoncharov)
- #3103 ESLint: fix config for '@typescript-eslint/no-throw-literal' (@IvanGoncharov)
- #3112 gen-version: fix notice comment was polluting 'version.d.ts' (@IvanGoncharov)
- #3119 Remove empty lines from '*.d.ts' files (@IvanGoncharov)
- #3126 Restrict TS to files inside
src(@IvanGoncharov) - #3127 Disable '@typescript-eslint/prefer-readonly' (@IvanGoncharov)
- #3143 TS: Enable strict mode (@leebyron)
- #3144 ESLint: fail
npm run lintif any warnings are reported (@IvanGoncharov) - #3151 CI: Add new job to check health of package-lock.json (@IvanGoncharov)
- #3153 Fix typescript-4.3 version in the integration tests (@kyarik)
- #3154 tsconfig.json: enable 'isolatedModules' (@IvanGoncharov)
- #3157 package.json: fix generating release commit (@IvanGoncharov)
- #3158 allows passing --watch to npm run testonly (@yaacovCR)
- #3161 build-npm: correctly set NPM tag on experimental pre-releases (@IvanGoncharov)
- #3173 fix: broken link to prettier rules (@saihaj)
- #3174 ci: use update 'actions/setup-node' to v2 (@IvanGoncharov)
- #3188 integrationTests: Add test for webpack (@IvanGoncharov)
- #3190 build-npm: fix assert message about not supported tag (@IvanGoncharov)
- #3207 ci: generate diff for NPM package (@IvanGoncharov)
- #3209 Fix failing CI on main (@IvanGoncharov)
- #3262 integrationTests: small refactoring (@IvanGoncharov)
- #3263 integrationTests: increase timeout to 60s (@IvanGoncharov)
- #3280 integrationTests/ts: split tests into separate files (@IvanGoncharov)
- #3289 integrationTests/ts: Simplify extensions tests (@IvanGoncharov)
- #3304 README: remove credits for
*.d.tsfiles (@IvanGoncharov) - #3329 Fix release instructions (@yaacovCR)
- #3330 use GITHUB_TOKEN for publishing branches (@yaacovCR)
- #3331 gitpublish.sh: Check if GITHUB_ACTOR is set + refactoring (@yaacovCR)
Dependency 📦
20 PRs were merged
- #2835 Update deps (@IvanGoncharov)
- #2844 Update deps (@IvanGoncharov)
- #2850 Update deps (@IvanGoncharov)
- #2884 Update deps (@IvanGoncharov)
- #2890 Update deps (@IvanGoncharov)
- #2922 Update deps (@IvanGoncharov)
- #2927 build: commit package-lock for drop support node10 (@saihaj)
- #2960 Update deps (@IvanGoncharov)
- #2961 flow-typed: update Mocha typings (@IvanGoncharov)
- #2993 Update deps (@IvanGoncharov)
- #3017 Update deps (@IvanGoncharov)
- #3020 Update deps (@IvanGoncharov)
- #3037 Update deps (@IvanGoncharov)
- #3057 Update deps (@IvanGoncharov)
- #3094 Update prettier to 2.3 (@IvanGoncharov)
- #3149 Update deps (@IvanGoncharov)
- #3206 Update deps (@IvanGoncharov)
- #3244 Update deps (@IvanGoncharov)
- #3276 Update deps (@IvanGoncharov)
- #3320 Update deps (@IvanGoncharov)
Committers: 18
- Arda TANRIKULU(@ardatan)
- Benjie Gillam(@benjie)
- Brian Warner(@brianwarner)
- Christoph Zwerschke(@Cito)
- Ivan Goncharov(@IvanGoncharov)
- Jan Melcher(@Yogu)
- Janic Duplessis(@janicduplessis)
- null(@jjangga0214)
- Kei Kamikawa(@Code-Hex)
- Laurin Quast(@n1ru4l)
- Lee Byron(@leebyron)
- Martin Trobäck(@lekoaf)
- Rob Richard(@robrichard)
- Saihajpreet Singh(@saihaj)
- Tim Griesser(@tgriesser)
- Trevor Scheer(@trevor-scheer)
- Yaacov Rydzinski (@yaacovCR)
- Yaroslav Kukytsyak(@kyarik)
v15.10.1 (2025-01-14)
Bug Fix 🐞
- #4326 Re-export GraphQLFormattedError as type (@enisdenjo)
Committers: 1
- Denis Badurina(@enisdenjo)
v15.10.0 (2025-01-13)
New Feature 🚀
- #4324 Backport GraphQLError toJSON method to v15 (@enisdenjo)
Committers: 1
- Denis Badurina(@enisdenjo)
v15.9.0 (2024-06-21)
New Feature 🚀
Bug Fix 🐞
- #3708 Fix crash in node when mixing sync/async resolvers (backport of #3706) (@chrskrchr)
- #4000 Backport "Prevent Infinite Loop in OverlappingFieldsCanBeMergedRule" to v15 (@benjie)
Internal 🏠
Committers: 2
- Benjie(@benjie)
- Chris Karcher(@chrskrchr)
v15.8.0 (2021-12-07)
New Feature 🚀
- #3410 Refine getNamedType() for Input and Output types (@IvanGoncharov)
Internal 🏠
2 PRs were merged
- #3411 publish 15.x.x packages only under '15.x.x' tag (@IvanGoncharov)
- #3412 cspell: do not show progress (@IvanGoncharov)
Committers: 1
- Ivan Goncharov(@IvanGoncharov)
v15.7.1 (2021-10-27)
Bug Fix 🐞
- #3341 GraphQLError: revert
originalErrorto be nullable (@IvanGoncharov)
Committers: 1
- Ivan Goncharov(@IvanGoncharov)
v15.7.0 (2021-10-26)
New Feature 🚀
- #3327 Change type of error extensions from anonymous Record to named interfaces (@IvanGoncharov)
- #3333 GraphQLError: major refactoring to be more in line with v16 (@IvanGoncharov)
- #3334 GraphQLError: keep extensions always present (@IvanGoncharov)
Bug Fix 🐞
- #3332 GraphQLError: fix empty
locationsif error got nodes without locations (@IvanGoncharov) - #3335 GraphQLError: restore order of enumerable fields (@IvanGoncharov)
Committers: 1
- Ivan Goncharov(@IvanGoncharov)
v15.6.1 (2021-10-05)
Bug Fix 🐞
- #3275 type/introspection: add missing
__Directive.args(includeDeprecated:)(@IvanGoncharov)
Committers: 1
- Ivan Goncharov(@IvanGoncharov)
v15.6.0 (2021-09-20)
New Feature 🚀
- #3267 Depreacate 'VisitorKeyMap' and backported 'ASTVisitorKeyMap' type (@IvanGoncharov)
Committers: 1
- Ivan Goncharov(@IvanGoncharov)
v15.5.3 (2021-09-06)
Bug Fix 🐞
- #3254 Parser: fix function definition of parseArguments and parseArgument (@n1ru4l)
- #3260 backport: Preserve
deprecationReasononGraphQLInputFields (@IvanGoncharov)
Committers: 2
- Ivan Goncharov(@IvanGoncharov)
- Laurin Quast(@n1ru4l)
v15.5.1 (2021-06-20)
Bug Fix 🐞
Internal 🏠
- #3191 Remove deprecated rmdirSync usage from internal scripts (@IvanGoncharov)
Committers: 2
- Ivan Goncharov(@IvanGoncharov)
- Tom Scott(@tubbo)
v15.5.0 (2021-01-26)
Bug Fix 🐞
- #2852 introspectionFromSchema: enable 'specifiedByUrl' by default (@IvanGoncharov)
- #2855 introspection: Add missing support for deprecated input values (@IvanGoncharov)
- #2859 separateOperations: distinguish query and fragment names (@IvanGoncharov)
- #2876 Replace 'localeCompare' with function independent from locale (@IvanGoncharov)
- #2893 Fix handling of input objects with 'length' property (@IvanGoncharov)
Docs 📝
- #2849 README: add instructions on using experimental features (@robrichard)
Polish 💅
7 PRs were merged
- #2847 Add tests for supporting Iterable collections across the lib (@IvanGoncharov)
- #2851 tests: update 'getIntrospectionQuery' tests to use custom matchers (@IvanGoncharov)
- #2858 separateOperations-test: refactor tests to look like snapshots (@IvanGoncharov)
- #2868 Extract types for normalized configs into named types (@IvanGoncharov)
- #2878 fix: type annotation cannot appear on a constructor declaration (@saihaj)
- #2879 fix: no need to mark param optional if default value is given (@saihaj)
- #2889 Simplify isAsyncIterable (@IvanGoncharov)
Internal 🏠
7 PRs were merged
- #2831 build: add support for experimental releases (@IvanGoncharov)
- #2836 CI: test on node 15 (@IvanGoncharov)
- #2837 Flow: remove support for measuring Flow coverage (@IvanGoncharov)
- #2838 TS: exclude integration tests from root tsconfig.json (@IvanGoncharov)
- #2840 resources: use named groups in RegExp (@IvanGoncharov)
- #2886 Use correct flags for rmdir/mkdir functions (@IvanGoncharov)
- #2891 benchmark: fix temp dir creation (@IvanGoncharov)
Dependency 📦
5 PRs were merged
- #2835 Update deps (@IvanGoncharov)
- #2844 Update deps (@IvanGoncharov)
- #2850 Update deps (@IvanGoncharov)
- #2884 Update deps (@IvanGoncharov)
- #2890 Update deps (@IvanGoncharov)
Committers: 3
- Ivan Goncharov(@IvanGoncharov)
- Rob Richard(@robrichard)
- Saihajpreet Singh(@saihaj)
v15.4.0 (2020-10-26)
New Feature 🚀
- #2731 execute/subscribe: simplify to improve debugging experience (@IvanGoncharov)
- #2733 Allow deprecating input fields and arguments (@IvanGoncharov)
- #2744 parser: Export
Parserclass as unstable API (@IvanGoncharov) - #2749 Add 'TypedQueryDocumentNode' TS type (@IvanGoncharov)
- #2770 Adding experimental online parser (@hereisnaman)
- #2797 Make print() break arguments over multiple lines (@draperunner)
Bug Fix 🐞
- #2696 GraphQLScalarType: default 'parseLiteral' should handle variables (@IvanGoncharov)
- #2706 buildASTSchema: should match order of default types and directives (@IvanGoncharov)
- #2784 Change
devAssertsfor checkingsourceargument (@IvanGoncharov) - #2786 fix: ensure variance of types matches how values are used (@ForbesLindesay)
- #2788 Make specifiedByUrl in IntrospectionScalarType's flow type optional (@mjmahone)
- #2793 resolveType: add workaround for transformed schemas (@IvanGoncharov)
- #2795 subscribe: correct Flow definitions (@IvanGoncharov)
- #2804 Added check for specific symbols in polyfills/symbols (@dionisnote)
Docs 📝
4 PRs were merged
Polish 💅
40 PRs were merged
- #2695 Merge all tests for standard scalars into one file (@IvanGoncharov)
- #2697 Cleanup valueFromAST & valueFromASTUntyped tests (@IvanGoncharov)
- #2698 list-test: Simplify utility function (@IvanGoncharov)
- #2700 Deprecate 'isDeprecated' (@IvanGoncharov)
- #2701 introspection: simpify 'includeDeprecated' logic (@IvanGoncharov)
- #2702 Improve readability of readToken function (@IvanGoncharov)
- #2703 lexer: inline positionAfterWhitespace function (@IvanGoncharov)
- #2704 readToken: improve readability by rearranging character groups (@IvanGoncharov)
- #2705 lexer: Fix formatting (@IvanGoncharov)
- #2707 introspection-test: convert schemas to SDL (@IvanGoncharov)
- #2708 introspection-test: simplify tests for description fields (@IvanGoncharov)
- #2709 introspection-test: improve testing of trivial resolvers (@IvanGoncharov)
- #2710 validation-test: Improve typings (@IvanGoncharov)
- #2720 NoDeprecatedCustomRule-test: simplify test cases (@IvanGoncharov)
- #2724 Remove Flow file annotations & add missing 3rd-party typings (@IvanGoncharov)
- #2729 execute: simplify check for promises inside collections (@IvanGoncharov)
- #2736 list-test: improve tests readability (@IvanGoncharov)
- #2737 list-test: improve test readability (part 2) (@IvanGoncharov)
- #2738 list-test: improve test readability (part 3) (@IvanGoncharov)
- #2745 blockString-test: add test for not escaping characters (@IvanGoncharov)
- #2748 getBlockStringIndentation: simplify implementation (@IvanGoncharov)
- #2755 lists-test: remove unneeded async (@IvanGoncharov)
- #2756 lists-test: simplify generator test (@IvanGoncharov)
- #2759 parser: improve formatting of the comments (@IvanGoncharov)
- #2760 parser: generalize parsing of lists with delimiters (@IvanGoncharov)
- #2761 Switch all code to create GraphQLList/GraphQLNonNull instances with new (@IvanGoncharov)
- #2762 Enable 'new-cap' ESLint rule (@IvanGoncharov)
- #2765 Flow: add more typings for function arguments and return values (@IvanGoncharov)
- #2766 printer: simplify a few utility functions (@IvanGoncharov)
- #2774 isCollection: add test that generator function is not iterable (@IvanGoncharov)
- #2775 Move 'isAsyncIterable' into 'jsutils' (@IvanGoncharov)
- #2776 Flow: add hack to support 'Symbol.asyncIterator' (@IvanGoncharov)
- #2777 Remove polyfill for 'flatMap' (@IvanGoncharov)
- #2778 Add 'resolveOnNextTick' to use in tests (@IvanGoncharov)
- #2780 buildASTSchema-test: expend SDL descriptions test (@IvanGoncharov)
- #2781 buildASTSchema-test: expend SDL descriptions test (@IvanGoncharov)
- #2790 abstract-test: unify sync and async tests (@IvanGoncharov)
- #2791 Move
__typenametype resolution tests into appropriate file (@IvanGoncharov) - #2796 subscribe-test: remove dependency on Node's EventEmitter (@IvanGoncharov)
- #2816 Convert fixtures to be JS files (@IvanGoncharov)
Internal 🏠
13 PRs were merged
- #2689 Update ignore files to ignore only top-level files (@IvanGoncharov)
- #2690 Isolate integration tests from repository (@IvanGoncharov)
- #2742 integrationTests: add tests for supported Node versions (@IvanGoncharov)
- #2743 integrationTests: add tests for supported Node versions (@IvanGoncharov)
- #2752 integrationTests: add TS 4.0 (@IvanGoncharov)
- #2753 integrationTests: minimise test logs (@IvanGoncharov)
- #2773 npm: CJS files now require other files using using explicit extensions (@IvanGoncharov)
- #2783 LICENSE: Remove year from copyright (@IvanGoncharov)
- #2799 benchmark: switch to spawn intead of fork (@IvanGoncharov)
- #2802 integrationTests: remove shell command for copying files (@IvanGoncharov)
- #2813 benchmark: extract benchmarks into separate folder and run them on NPM package (@IvanGoncharov)
- #2818 Cleanup 'fixtures' leftovers (@IvanGoncharov)
- #2819 integrationTests: add Flow test (@IvanGoncharov)
Dependency 📦
17 PRs were merged
- #2691 Update deps (@IvanGoncharov)
- #2699 Update deps (@IvanGoncharov)
- #2713 Update deps (@IvanGoncharov)
- #2723 Update deps (@IvanGoncharov)
- #2739 Update deps (@IvanGoncharov)
- #2751 Update deps (@IvanGoncharov)
- #2754 Update Flow (@IvanGoncharov)
- #2767 Update prettier (@IvanGoncharov)
- #2771 Update deps (@IvanGoncharov)
- #2782 Update deps (@IvanGoncharov)
- #2785 Update Flow (@IvanGoncharov)
- #2789 Update Flow (@IvanGoncharov)
- #2794 Update deps (@IvanGoncharov)
- #2810 Update deps (@IvanGoncharov)
- #2815 Update deps (@IvanGoncharov)
- #2825 Update deps (@IvanGoncharov)
- #2827 Update deps (@IvanGoncharov)
Committers: 10
- Adithya Krishna(@adithyaakrishna)
- null(@dionisnote)
- Dobes Vandermeer(@dobesv)
- Emil Sandstø(@Tapped)
- Forbes Lindesay(@ForbesLindesay)
- Ivan Goncharov(@IvanGoncharov)
- Mats Byrkjeland(@draperunner)
- Matt Mahoney(@mjmahone)
- Naman Kumar(@hereisnaman)
- Taewan Go(@solidw)
v15.3.0 (2020-07-05)
New Feature 🚀
- #2688 Added new 'FormattedExecutionResult' type (@IvanGoncharov)
Docs 📝
3 PRs were merged
- #2680 Docs: some language cleanup in readme and API reference (@rmcteggart-r7)
- #2681 Sync JSDoc comments with docs changes (@danielrearden)
- #2687 Make documentation for 'getFieldDef' more accurate (@Cito)
Polish 💅
2 PRs were merged
- #2679 mapAsyncIterator-test: replace 'invariant' with expect chains (@IvanGoncharov)
- #2686 ESLint: remove 'ts-lint' commits (@IvanGoncharov)
Internal 🏠
- #2685 workflows: check commit for ignored files (@IvanGoncharov)
Dependency 📦
2 PRs were merged
- #2678 Update deps (@IvanGoncharov)
- #2683 Update deps (@IvanGoncharov)
Committers: 4
- Christoph Zwerschke(@Cito)
- Daniel Rearden(@danielrearden)
- Ivan Goncharov(@IvanGoncharov)
- @rmcteggart-r7
v15.2.0 (2020-06-29)
New Feature 🚀
- #2465 Change type of extensions from anonymous Record to named interfaces (@benjie)
- #2600 Add NoSchemaIntrospectionCustomRule (@danielrearden)
- #2605 Add NoDeprecatedCustomRule and deprecate findDeprecatedUsages (@danielrearden)
- #2644 ExecutionResult: add 'extensions' field (@IvanGoncharov)
- #2669 Add parentType to path to avoid path ambiguity (@benjie)
- #2671 Added 'executeSync': promise free version of
execute. (@IvanGoncharov)
Bug Fix 🐞
- #2608 buildSchema: allow to reference introspection types (@IvanGoncharov)
Docs 📝
- #2677 README: use local references (@IvanGoncharov)
Polish 💅
4 PRs were merged
- #2655 tests: Improve type coverage (@IvanGoncharov)
- #2660 union-interface-test: Improve typings (@IvanGoncharov)
- #2668 Switch to alternative format for type imports (@IvanGoncharov)
- #2674 Switch unused imports to type imports (@IvanGoncharov)
Internal 🏠
20 PRs were merged
- #2630 Remove unintended 'console.log' (@IvanGoncharov)
- #2636 CI: add initial support of Deno build (@IvanGoncharov)
- #2637 CI: fix publishing of
npmanddenobranches (@IvanGoncharov) - #2638 CI: fix execution of gitpublish script (@IvanGoncharov)
- #2639 CI: various fixes in 'gitpublish.sh' (@IvanGoncharov)
- #2640 CI: use bash to run 'gitpublish.sh' (@IvanGoncharov)
- #2641 ci: use '.js' extension for deno build (@IvanGoncharov)
- #2642 instanceOf: support Deno (@IvanGoncharov)
- #2647 Integration tests for TS (@IvanGoncharov)
- #2650 Remove dtslint check (@IvanGoncharov)
- #2651 Cleanup TS integration test (@IvanGoncharov)
- #2652 integrationTests: suppress warnings from 'npm install' (@IvanGoncharov)
- #2653 Revert "instanceOf: support Deno (#2642)" (@IvanGoncharov)
- #2654 Move prettier down in the order of tests (@IvanGoncharov)
- #2656 Simplify ESLint config (@IvanGoncharov)
- #2658 Update Flow (@IvanGoncharov)
- #2662 Simplify prettier config (@IvanGoncharov)
- #2665 Run cspell on entire project (@IvanGoncharov)
- #2667 Run ESLint on the entire repo (@IvanGoncharov)
- #2672 Remove swap file accidentally committed in #2560 (@IvanGoncharov)
Dependency 📦
2 PRs were merged
- #2627 Update deps (@IvanGoncharov)
- #2659 Update deps (@IvanGoncharov)
Committers: 3
- Benjie Gillam(@benjie)
- Daniel Rearden(@danielrearden)
- Ivan Goncharov(@IvanGoncharov)
v15.1.0 (2020-06-07)
New Feature 🚀
- #2276 Add
@specifiedBydirective (@m14t) - #2626 TS: add TData template argument to ExecutionResult type (@IvanGoncharov)
Bug Fix 🐞
- #2513 Fix #2504 access field astNode's type by optional chaining (@josephktcheung)
- #2547 ts: add missing
schemaDescriptionoption ofgetIntrospectionQuery(@IvanGoncharov) - #2560 BlockString: print multi line for trailing backslash (@hereisnaman)
- #2563 TS: Fix incorrect enum typing in findBreakingChanges (@mwinstanley)
- #2571 Add missing exports for the new specifiedBy directive (@Cito)
- #2594 Exported
TokenandLocationas ES6 classes (@IvanGoncharov) - #2622 getOperationAST: make
operationNameoptional (@IvanGoncharov) - #2623 TS: sync TS typings with Flow typings (@IvanGoncharov)
- #2625 TS: made
GraphQLErrorconstructor's second argument optional (@IvanGoncharov)
Polish 💅
19 PRs were merged
- #2527 Enable '@typescript-eslint/method-signature-style' lint rule (@IvanGoncharov)
- #2528 Enable '@typescript-eslint/no-invalid-void-type' lint rule (@IvanGoncharov)
- #2534 Simplify 'getOperationTypeNode' function (@IvanGoncharov)
- #2535 Make 'toJSON' definition explicit (@IvanGoncharov)
- #2537 extendSchema-test: improve test coverage (@IvanGoncharov)
- #2540 Switch to SDL for validation tests (@IvanGoncharov)
- #2543 printSchema-test: cleanup and simplify (@IvanGoncharov)
- #2574 blockString-test: add fuzzing test for 'printBlockString' (@IvanGoncharov)
- #2575 Move fuzzing tests into separate files (@IvanGoncharov)
- #2576 ESLint: Enable 'dot-notation' rule (@IvanGoncharov)
- #2583 ts: enable more tslint checks (@IvanGoncharov)
- #2584 ts: use
typeofinstead of private types (@IvanGoncharov) - #2585 ts: switch more types to interfaces (@IvanGoncharov)
- #2586 ts: used named export for 'Maybe' type (@IvanGoncharov)
- #2587 ts: cleanup definition files (@IvanGoncharov)
- #2607 buildASTSchema: pass empty schema as literal (@IvanGoncharov)
- #2617 schema-parser-test: Fix order of properties in expect chain (@IvanGoncharov)
- #2619 Improve formatting of 'istanbul ignore' comments (@IvanGoncharov)
- #2621 Moved
Maybetojsutilsfolder and removetsutils(@IvanGoncharov)
Internal 🏠
28 PRs were merged
- #2529 Add node v14 to the test matrix (@IvanGoncharov)
- #2530 Don't deploy on forks (@MichaelDeBoey)
- #2531 Remove single quotes from Node.js versions (@MichaelDeBoey)
- #2538 [cspell] migrate custom words to upstream dictionaries (@hereisnaman)
- #2545 ESLint: replace deprecated rules with
eslint-plugin-node(@IvanGoncharov) - #2548 cspell: correctly check 'resources' folder (@IvanGoncharov)
- #2550 resources: cleanup scripts (@IvanGoncharov)
- #2551 package.json: change how 'eslint-plugin-graphql-internal' installed (@IvanGoncharov)
- #2552 Switch to 'package-lock.json' (@IvanGoncharov)
- #2553 Switch to GitHub Actions (@IvanGoncharov)
- #2556 flowconfig: remove iterall from ignored (@IvanGoncharov)
- #2557 Fix deployment to 'npm' branch (@IvanGoncharov)
- #2558 Create base temp dir for benchmarks if not existing (@Cito)
- #2564 package.json: use only exact versions (@IvanGoncharov)
- #2565 Enable linting for istanbul ignore comments (@IvanGoncharov)
- #2572 Move
dedentinto new__testUtils__folder (@IvanGoncharov) - #2573 ESLint: Forbid usage of test utils inside production code (@IvanGoncharov)
- #2578 CI: Fix copy-paster errors in 'fuzz' flow (@IvanGoncharov)
- #2580 resources: correctly report errors in top level premisses (@IvanGoncharov)
- #2581 ci: add benchmark job (@IvanGoncharov)
- #2592 gitignore: remove unused entry (@IvanGoncharov)
- #2593 package.json: remove yarn from engines (@IvanGoncharov)
- #2596 ci: update 'cache' action (@IvanGoncharov)
- #2611 Rename
eslint-graphql-internaltoeslint-internal-rules(@IvanGoncharov) - #2612 ESLint: fix updated paths inside comment (@IvanGoncharov)
- #2613 ci: remove Node v13 after it's end of life (@IvanGoncharov)
- #2620 inline-invariant: stop inserting
// istanbul ignore nextcomments (@IvanGoncharov) - #2624 ci: fail CI if coverage is not 100% but still upload to codecov (@IvanGoncharov)
Dependency 📦
11 PRs were merged
- #2526 Update deps (@IvanGoncharov)
- #2536 Update deps (@IvanGoncharov)
- #2544 Update deps (@IvanGoncharov)
- #2549 Update deps (@IvanGoncharov)
- #2555 Update deps (@IvanGoncharov)
- #2561 Update deps (@IvanGoncharov)
- #2579 Update deps (@IvanGoncharov)
- #2590 Update deps (@IvanGoncharov)
- #2595 Update deps (@IvanGoncharov)
- #2602 Update dtslint (@IvanGoncharov)
- #2603 Update deps (@IvanGoncharov)
Committers: 7
- Christoph Zwerschke(@Cito)
- Ivan Goncharov(@IvanGoncharov)
- Joseph Cheung(@josephktcheung)
- Matt Farmer(@m14t)
- Melissa Winstanley(@mwinstanley)
- Michaël De Boey(@MichaelDeBoey)
- Naman Kumar(@hereisnaman)
v15.0.0 (2020-04-02)
Breaking Change 💥
- #1827 Update built-in scalar's parseLiteral method to throw TypeError (@danielrearden)
- #2084 RFC: Allow interfaces to implement other interfaces (@mike-marcacci)
- #2117 Removes non-standard properties from field objects (@IvanGoncharov)
- #2121 Drop Support for Node 6 (@IvanGoncharov)
- #2124 Remove deprecated 'introspectionQuery' constant (@IvanGoncharov)
- #2126 Remove deprecated 'isValidJSValue' function (@IvanGoncharov)
- #2127 Remove deprecated 'isValidLiteralValue' function (@IvanGoncharov)
- #2128 Remove deprecated 'coerceValue' function (@IvanGoncharov)
- #2129 Remove deprecated 'allowedLegacyNames' property of 'GraphQLSchema' (@IvanGoncharov)
- #2130 ValidationContext: Remove deprecated 'getErrors' and make 'onError' r… (@IvanGoncharov)
- #2132 GraphQLArgument: make 'description' undefined by default (@IvanGoncharov)
- #2148 GraphQLEnumType: Drop support for 'undefined' custom value (@IvanGoncharov)
- #2149 Errors if empty string is provided as operationName (@IvanGoncharov)
- #2164 RFC: Number lexer lookahead restriction (@leebyron)
- #2184 toConfig: allows 'extensionASTNodes' to be undefined (@IvanGoncharov)
- #2196 Change 'isSpecified*' & 'isIntrospectionType' accept only correct types (@IvanGoncharov)
- #2209 Lexer: remove passthrough options (@IvanGoncharov)
- #2210 Switch Lexer to be a proper class, remove 'createLexer' (@IvanGoncharov)
- #2223 printSchema: don't break description lines (@IvanGoncharov)
- #2233 parser: convert Location to be an ES6 class (@IvanGoncharov)
- #2234 lexer: convert Token to be an ES6 class (@IvanGoncharov)
- #2248 buildSchema/extendSchema: add support for extensions (@IvanGoncharov)
- #2274 Resolve import cycle by moving 'visitWithTypeInfo' into 'TypeInfo.js' (@IvanGoncharov)
- #2284 Replace all instances of Flow existential type (@IvanGoncharov)
- #2290 Drop Support for Node 8 (@IvanGoncharov)
- #2328 Removes default values for required fields in GraphQL*Config types (@IvanGoncharov)
- #2334 enum: 'parseLiteral/parseValue/serialize' now throw on invalid values (@IvanGoncharov)
- #2339 introspection: expose fields/values with empty deprecationReason (@IvanGoncharov)
- #2402 Add 'Rule' suffix to all validation rules (@IvanGoncharov)
- #2411 schemaPrinter: preserve order of types (@IvanGoncharov)
- #2424 isValidNameError: Remove node argument (@IvanGoncharov)
- #2438 NaN values should be checked inside scalar's
serializemethod (@IvanGoncharov) - #2488 TS(definition): remove TS-specific TArgs (@IvanGoncharov)
- #2490 TS: remove TS-specific TData from ExecutionResult (@IvanGoncharov)
New Feature 🚀
- #2229 Convert AST nodes types to be exact objects (@IvanGoncharov)
- #2364 Remove 'iterall' as dependency. 'graphql' becomes zero dependency lib 🎉 (@IvanGoncharov)
- #2379 build: mjs files import other files using full paths with extensions (@IvanGoncharov)
- #2382 Change serialization for Int, Float and Boolean to work with objects (@alex-knyazev)
- #2394 suggestionList: lexicographically sort options with the same lexical distance (@IvanGoncharov)
- #2395 FieldsOnCorrectType: implement stable sort order for suggested types (@IvanGoncharov)
- #2399 validation: Add missing rule exports (@IvanGoncharov)
- #2408 schema: Always validate basic config structure (@IvanGoncharov)
- #2410 Schema: keep order of user provided types (@IvanGoncharov)
- #2413 validation: Export rules missing in <14.6.0 using legacy names (@IvanGoncharov)
- #2415 findBreakingChanges: add check for removing repeatable from directive (@IvanGoncharov)
- #2416 introspection: Add support for repeatable directives (@IvanGoncharov)
- #2419 Add support for adding description to schema (@IvanGoncharov)
- #2430 Change 'toConfig' to always return 'extensionASTNodes' as array (@IvanGoncharov)
Bug Fix 🐞
- #2160 Validation: unify error messages (@IvanGoncharov)
- #2161 Unify rest of error messages (@IvanGoncharov)
- #2167 Allow empty string as valid 'deprecationReason' (@IvanGoncharov)
- #2175 parser: Convert error messages to match common standard of this lib (@IvanGoncharov)
- #2176 parser: Show empty strings in error messages (@IvanGoncharov)
- #2177 printSchema: support empty descriptions (@IvanGoncharov)
- #2178 Fix bunch of edge cases with empty strings (@IvanGoncharov)
- #2187 Scalars: convert errors from 'TypeError' to 'GraphQLError' (@IvanGoncharov)
- #2192 Fixes variable values of non-null type with default value (@IvanGoncharov)
- #2202 tstypes: Synchronise TS typings for
GraphQL*types (@IvanGoncharov) - #2204 findBreakingChanges: better message for removing standard scalar (@IvanGoncharov)
- #2224 Fix typescript definition for getVariableValues (@ivome)
- #2231 Convert more types to be exact objects (@IvanGoncharov)
- #2232 execute: Convert ExecutionResult to be an exact object (@IvanGoncharov)
- #2261 TS:
introspectionTypesshould be array ofGraphQLNamedType(@pcarrier) - #2269 Flow: switch more types to be exact (@IvanGoncharov)
- #2286 Remove duplicate colon in coercion error message (@Cito)
- #2306 Remove unmatched opening parenthesis in description (@Cito)
- #2307 Add dots at the end of error messages (@IvanGoncharov)
- #2337 Flow: add missing typings on exports (@IvanGoncharov)
- #2348 valueFromAST: fixed coercing of null variables on non-nullable type (@IvanGoncharov)
- #2401 Add missing export for 'ExecutableDefinitionsRule' (@IvanGoncharov)
- #2407 Fixing double 'Rule' suffix that was accidentally introduced in #2402 (@IvanGoncharov)
- #2437 astFromValue: reject non-finite numbers (@IvanGoncharov)
- #2446 UniqueDirectivesPerLocation: check for directive uniqueness in extensions (@IvanGoncharov)
- #2457 TS: add missing export on 'BuildSchemaOptions' type (@IvanGoncharov)
- #2460 getNullableType: fix TS signature (@IvanGoncharov)
- #2469 isDeprecated: make required on GraphQLField/GraphQLEnumValue (@IvanGoncharov)
- #2474 TS: fix typing for GraphQLField::deprecationReason (@IvanGoncharov)
- #2475 schema: fix error message when provided type has no name (@Cito)
Docs 📝
7 PRs were merged
- #2182 Improve documentation for astFromValue (@wtrocki)
- #2239 chore: Spelling (@icirellik)
- #2249 minor grammar fix (@Ardeshir81)
- #2252 docs: follow express' best practice (@Ardeshir81)
- #2256 docs: correctly tag code samples (@IvanGoncharov)
- #2435 docs: Add note about 'NODE_ENV=production' (@IvanGoncharov)
- #2463 Docs: fix spelling error in src/README.md (@Adn0s)
Polish 💅
98 PRs were merged
- #2125 Move 'introspectionQuery.js' to 'getIntrospectionQuery.js' (@IvanGoncharov)
- #2147 Use consistent naming for config arguments (@IvanGoncharov)
- #2158 validation: Simplify 'ValuesOfCorrectType' rule (@IvanGoncharov)
- #2159 Validation: Remove internal functions for error messages (@IvanGoncharov)
- #2165 didYouMean: quote suggested values (@IvanGoncharov)
- #2173 Use explicit comparisons instead of using
Booleanconstructor (@IvanGoncharov) - #2174 Switch lexer and parser tests to exact match of error messages (@IvanGoncharov)
- #2186 Consistent error messages in buildClientSchema (@spawnia)
- #2193 Remove unussed 'ABORT_VALIDATION' constant (@IvanGoncharov)
- #2198 Add two more tests to KnownArgumentNames validation rule (@Cito)
- #2200 tests: simplify 'includes interface's thunk subtypes in the type map' (@IvanGoncharov)
- #2201 Synchronise 'GraphQLDirective' formatting with other definitions (@IvanGoncharov)
- #2205 Document private functions with @internal tag (@craicoverflow)
- #2208 Simplify 'validateObjectInterfaces' function (@IvanGoncharov)
- #2211 Remove unused 'ABORT_VALIDATION' constant (@IvanGoncharov)
- #2212 Fix minor typos in gen-changelog.js (@solon)
- #2225 serialization-test: Don't use 'delete' on test objects (@IvanGoncharov)
- #2235 buildSchema/extendSchema: unify AST node processing (@IvanGoncharov)
- #2236 buildASTSchema/extendSchema: unify directive building (@IvanGoncharov)
- #2238 grammar: 'falsey' => 'falsy' (@IvanGoncharov)
- #2254 Vary the test case for building client schemas with enum (@spawnia)
- #2255 Fix spelling: heirarchy to hierarchy (@spawnia)
- #2257 cleanup ESLint config (@IvanGoncharov)
- #2258 list-test: Remove 'argument' usage (@IvanGoncharov)
- #2259 ESLint: mark unused arguments with underscore (@IvanGoncharov)
- #2270 Enable 'default-param-last' (@IvanGoncharov)
- #2272 Enable 'require-await' ESLint check (@IvanGoncharov)
- #2285 Remove forgotten internal error message functions (#2159) (@Cito)
- #2287 tests: Fix style of graphql queries inside string literals (@IvanGoncharov)
- #2288 tests: Switch to using named arguments to graphql/execute (@IvanGoncharov)
- #2295 Correct bunch of spelling mistakes (@IvanGoncharov)
- #2296 More fixes to make spellchecker happy (@IvanGoncharov)
- #2300 tests: Switch to using named arguments for
subscribecalls (@IvanGoncharov) - #2302 tests: simplify 'astNode' and 'extensionASTNodes' tests (@IvanGoncharov)
- #2305 Small optimization in the schema type map reducer (@Cito)
- #2308 extendedSchema-test: make tests self contained (@IvanGoncharov)
- #2309 extendSchema: remove dead check on number of directives (@IvanGoncharov)
- #2310 buildSchema/extendSchema: improve test coverage (@IvanGoncharov)
- #2312 Mark 'config' as readonly argument to contructors (@IvanGoncharov)
- #2313 buildSchema: change implementation to simply extending empty schema (@IvanGoncharov)
- #2321 tests: in expect chains use '.to.not.' instead of '.not.to.' (@IvanGoncharov)
- #2322 separateOperations: simplify algorithm (@IvanGoncharov)
- #2324 validateSchema: remove validation arguments uniqueness (@IvanGoncharov)
- #2325 Extract 'formatError' tests into separate file + improve coverage (@IvanGoncharov)
- #2326 Clearly mark not reachable places in the code (@IvanGoncharov)
- #2327 coverage: ignore uncovered branches caused by #2203 (@IvanGoncharov)
- #2329 coverage: mark ignore statements (@IvanGoncharov)
- #2330 Simplify findDeprecatedUsages since "deprecationReason" is always present (@IvanGoncharov)
- #2331 OverlappingFieldsCanBeMerged: arguments always have value (@IvanGoncharov)
- #2332 Improve coverage of the entire codebase (@IvanGoncharov)
- #2333 Unify arguments naming for parseValue/serialize methods (@IvanGoncharov)
- #2347 valueFromAST-test: improve readability (@IvanGoncharov)
- #2349 valueFromAST-test: improve coverage (@IvanGoncharov)
- #2350 astFromValue-test: improve coverage (@IvanGoncharov)
- #2351 ValuesOfCorrectType: improve coverage (@IvanGoncharov)
- #2352 OverlappingFieldsCanBeMerged: remove excessive caching (@IvanGoncharov)
- #2353 mapAsyncIterator: improve coverage (@IvanGoncharov)
- #2354 Remove unused "asyncIteratorReject" utility method (@IvanGoncharov)
- #2355 subscribe: improve coverage (@IvanGoncharov)
- #2358 Bring coverage to 100% 🎉 (@IvanGoncharov)
- #2363 Use native "Symbol.asyncIterator" in tests (@IvanGoncharov)
- #2366 eslint-plugin-import: Enable more checks (@IvanGoncharov)
- #2367 Define 'toStringTag' directly inside class definitions (@IvanGoncharov)
- #2369 GraphQLError: convert to ES6 class (@IvanGoncharov)
- #2371 Flow: enable 'sketchy-null-bool' lint rule (@IvanGoncharov)
- #2372 Restore coverage to 100% (@IvanGoncharov)
- #2374 ESLint: enable '@typescript-eslint/no-unused-vars' rule (@IvanGoncharov)
- #2375 ESLint: enable more rules for TS code (@IvanGoncharov)
- #2376 ESLint: require empty line between import groups (@IvanGoncharov)
- #2377 ESLint: Forbid importing directories (@IvanGoncharov)
- #2383 tests: remove a few invariants (@IvanGoncharov)
- #2387 TS: switch to 'Array<*>' style of array types (@IvanGoncharov)
- #2390 ESLint: enable bunch of TS lint rules (@IvanGoncharov)
- #2391 buildClientSchema: small code refactoring (@IvanGoncharov)
- #2392 ESLint: enable 'no-unnecessary-type-arguments' check (@IvanGoncharov)
- #2393 FieldsOnCorrectType: refactor error message (@IvanGoncharov)
- #2404 FieldsOnCorrectTypeRule: improve type coverage (@IvanGoncharov)
- #2406 buildClientSchema-test: remove dependency on order of types (@IvanGoncharov)
- #2412 Improve description for lexicographicSortSchema (@IvanGoncharov)
- #2417 schema-parser-test: fix description of a test case (@IvanGoncharov)
- #2418 introspection: use consistent naming for 'resolve' args (@IvanGoncharov)
- #2421 Use explicit default arguments (@IvanGoncharov)
- #2423 Use nullish coalescing operator in all appropriate places (@IvanGoncharov)
- #2426 Rename 'schemaPrinter.js' to 'printSchema.js' (@IvanGoncharov)
- #2429 Simplify 'concatMaybeArrays' (@IvanGoncharov)
- #2431 buildASTSchema: remove useless code (@IvanGoncharov)
- #2432 parser: simplify parsing of null, boolean and enum values (@IvanGoncharov)
- #2433 Flow: Remove 'any's or improve their locality (@IvanGoncharov)
- #2441 Fix the test for an async unmet isTypeOf check (@Cito)
- #2443 visitor-test: use proper test name (@Cito)
- #2444 TypeInfo-test: use proper test name (@Cito)
- #2445 assertValidName-test: Remove duplicate test (@Cito)
- #2448 validation: Fix names of internal SDL rules (@IvanGoncharov)
- #2450 Adapt some comments after serialization of enums changed (@Cito)
- #2459 suggestionList: Speed up (@IvanGoncharov)
- #2462 Unite tests for graphqlSync in one place (@Cito)
- #2473 schema-test: fix name of test (@Cito)
- #2491 TS: remove TS-specific TSource argument for resolveFieldValueOrError (@IvanGoncharov)
Internal 🏠
29 PRs were merged
- #2218 build: Add support for 'alpha' and 'beta' tags (@IvanGoncharov)
- #2219 version: Fix version test for alpha & beta releases (@IvanGoncharov)
- #2220 gen-changelog: add support for rebased PRs (@IvanGoncharov)
- #2221 ts: move '*.d.ts' files into 'src' (@IvanGoncharov)
- #2267 ESLint: remove options that match default ones (@IvanGoncharov)
- #2279 Update TravisCi to run full CI suite on Node 12 (@m14t)
- #2280 Remove outdated "Live Feedback" section from CONTRIBUTING.modified (@m14t)
- #2291 Add node v13 to CI (@IvanGoncharov)
- #2293 benchmark: extract 'bold' func for applying ANSI bold code (@IvanGoncharov)
- #2294 benchmark: make clean build every time (@IvanGoncharov)
- #2297 Add spellchecker (@IvanGoncharov)
- #2314 gen-changelog: Fix error handling and improve error messages (@IvanGoncharov)
- #2315 Add 'yarn check --integrity' to 'preversion' script (@IvanGoncharov)
- #2323 tests: Transpile tests less aggressively (@IvanGoncharov)
- #2359 babel: Switch to static config to enable caching (@IvanGoncharov)
- #2361 nyc: measure coverage of all files (except benchmark and polyfills) (@IvanGoncharov)
- #2365 Added 'eslint-plugin-import' lint rules (@IvanGoncharov)
- #2373 ESLint: Enable linting of TS files (@IvanGoncharov)
- #2378 ESLint: ensure that all packaged code doesn't have any external deps (@IvanGoncharov)
- #2381 ESLint: enable 'import/no-cycle' rule (@IvanGoncharov)
- #2384 ESLint: Add all '@typescript-eslint/eslint-plugin' rules to config (@IvanGoncharov)
- #2388 ESLint: enable all TS rules that require running compiler (@IvanGoncharov)
- #2396 Babel: switch to using .babelrc.json as config (@IvanGoncharov)
- #2398 Drop 'babel-polyfill' (@IvanGoncharov)
- #2425 nyc: exclude export files added only for deprecation (@IvanGoncharov)
- #2434 Benchmark: set 'NODE_ENV=production' before running the benchmarks (@IvanGoncharov)
- #2453 ESLint: enable 'eslint-import' rules for '.d.ts' files (@IvanGoncharov)
- #2458 ESLint: move custom rule into CLI argument (@IvanGoncharov)
- #2498 Move custom ESLint rules into internal package (@IvanGoncharov)
Dependency 📦
35 PRs were merged
- #2122 Update deps (@IvanGoncharov)
- #2123 Update ESLint (@IvanGoncharov)
- #2146 Update ESLint to 6.3 + other deps (@IvanGoncharov)
- #2166 Update deps (@IvanGoncharov)
- #2226 Update to Flow v0.109 (@IvanGoncharov)
- #2227 Update ESLint to v6.5 (@IvanGoncharov)
- #2228 Update deps (@IvanGoncharov)
- #2237 Update deps (@IvanGoncharov)
- #2250 Update deps (@IvanGoncharov)
- #2251 Update Flow to 0.111 (@IvanGoncharov)
- #2263 Update prettier (@IvanGoncharov)
- #2265 Update Flow to v0.112 (@IvanGoncharov)
- #2266 Update ESLint (@IvanGoncharov)
- #2271 Update rest of deps (@IvanGoncharov)
- #2283 Update deps (@IvanGoncharov)
- #2289 Update Flow to 0.114.0 (@IvanGoncharov)
- #2311 Update deps (@IvanGoncharov)
- #2335 Update Flow to v0.115 (@IvanGoncharov)
- #2336 Update deps (@IvanGoncharov)
- #2346 Update deps (@IvanGoncharov)
- #2360 Upgrade flow to v0.116 (@IvanGoncharov)
- #2370 Update Babel (@IvanGoncharov)
- #2397 Update deps (@IvanGoncharov)
- #2403 Update deps (@IvanGoncharov)
- #2414 Update deps (@IvanGoncharov)
- #2420 Update deps (@IvanGoncharov)
- #2436 Update deps (@IvanGoncharov)
- #2447 Update deps (@IvanGoncharov)
- #2452 Update deps (@IvanGoncharov)
- #2456 Update deps (@IvanGoncharov)
- #2467 Update deps (@IvanGoncharov)
- #2476 Update deps (@IvanGoncharov)
- #2499 Update prettier (@IvanGoncharov)
- #2500 Update Flow (@IvanGoncharov)
- #2502 Update deps (@IvanGoncharov)
Committers: 16
- Adnan Labiadh(@Adn0s)
- Alexander Knyazev(@alex-knyazev)
- Ardeshir81(@Ardeshir81)
- Benedikt Franke(@spawnia)
- Brian Solon(@solon)
- Cameron Rollheiser(@icirellik)
- Christoph Zwerschke(@Cito)
- Daniel Rearden(@danielrearden)
- Enda(@craicoverflow)
- Ivan Goncharov(@IvanGoncharov)
- Ivo Meißner(@ivome)
- Lee Byron(@leebyron)
- Matt Farmer(@m14t)
- Mike Marcacci(@mike-marcacci)
- Pierre Carrier(@pcarrier)
- Wojtek Trocki(@wtrocki)
v14.7.0 (2020-07-06)
New Feature 🚀
- Backport #2688 Added new 'FormattedExecutionResult' type (@IvanGoncharov)
Committers: 1
- Ivan Goncharov(@IvanGoncharov)
v14.6.0 (2020-01-27)
New Feature 🚀
- #2400 validation: Add missing rule exports (@IvanGoncharov)
Committers: 1
- Ivan Goncharov(@IvanGoncharov)
v14.5.8 (2019-09-25)
Bug Fix 🐞
- #2195 tstypes: fix typings for 'isSpecifiedDirective'/'isSpecifiedScalarType' (@IvanGoncharov)
Committers: 1
- Ivan Goncharov(@IvanGoncharov)
v14.5.7 (2019-09-20)
Bug Fix 🐞
- #2191 Fixes variable values of non-null type with default value (@IvanGoncharov)
Committers: 1
- Ivan Goncharov(@IvanGoncharov)
v14.5.6 (2019-09-15)
Bug Fix 🐞
- #2169 Make onError optional in SDLValidationContext (@Cito)
- #2171 tstypes: Add missing 'abstractType' argument to
GraphQLTypeResolver(@IvanGoncharov)
Committers: 2
- Christoph Zwerschke(@Cito)
- Ivan Goncharov(@IvanGoncharov)
v14.5.5 (2019-09-13)
Bug Fix 🐞
- #2151 findDangerousChanges: sort fields inside 'defaultValue' (@IvanGoncharov)
- #2162 printLocation: Remove trailing whitespace from empty lines (@leebyron)
- #2163 RFC: Lexing is Greedy (@leebyron)
Polish 💅
Committers: 3
- Christoph Zwerschke(@Cito)
- Ivan Goncharov(@IvanGoncharov)
- Lee Byron(@leebyron)
v14.5.4 (2019-08-29)
Bug Fix 🐞
- #2131 fix: added FlowFixMe on Array.prototype.flatMap (@Michael-M-Judd)
- #2134
void=>undefinedin Path.d.ts (@JacksonKearl) - #2135 tstypes: Use
anyas BREAK type. (@JacksonKearl) - #2137 Flow: fix errors in 'flatMap.js' on old Flow versions (@IvanGoncharov)
- #2138 Add missing
toObjMap' conversion forextensions` inside directive args (@IvanGoncharov) - #2140 TypeScript: Backport v15 .d.ts fixes to v14 (@JacksonKearl)
- #2142 tstypes: Mark
optionsproperty optional ingetVariableValues(@JacksonKearl) - #2143 Fix 'isFinite' polyfill resulting in infinite recursion (@IvanGoncharov)
Polish 💅
- #2133 Flow: fix warning about unused $FlowFixMe (@IvanGoncharov)
Committers: 3
- Ivan Goncharov(@IvanGoncharov)
- Jackson Kearl(@JacksonKearl)
- Michael Judd(@Michael-M-Judd)
v14.5.3 (2019-08-24)
Bug Fix 🐞
- #2120 Fix relative imports inside TypeScript definitions (@JacksonKearl)
Committers: 1
- Jackson Kearl(@JacksonKearl)
v14.5.2 (2019-08-24)
Bug Fix 🐞
- #2109 Sync type TS definitions with Flow (@JacksonKearl)
- #2113 Sync tstypes/graphql.d.ts with flow (@JacksonKearl)
- #2115 Sync utilities TS definitions with flow (@JacksonKearl)
- #2116 Copy non-standard properites from field's config (@IvanGoncharov)
- #2118 Fixup index.d.ts files to reflect Flow (@JacksonKearl)
- #2119 Sync validation TS definitions with flow (@JacksonKearl)
Committers: 2
- Ivan Goncharov(@IvanGoncharov)
- Jackson Kearl(@JacksonKearl)
v14.5.1 (2019-08-23)
Bug Fix 🐞
- #2105 Sync tstypes/errors with flow (@JacksonKearl)
- #2106 Sync execution TS definitions with Flow. (@JacksonKearl)
- #2107 Sync language TS definitions with Flow (@JacksonKearl)
- #2108 Sync subscription TS definitions with Flow (@JacksonKearl)
- #2111 Flow lint disable 'deprecated-type' rule (@IvanGoncharov)
Dependency 📦
- #2112 Update deps (@IvanGoncharov)
Committers: 2
- Ivan Goncharov(@IvanGoncharov)
- Jackson Kearl(@JacksonKearl)
v14.5.0 (2019-08-22)
New Feature 🚀
- #2062 Limits errors in getVariableValues() (@IvanGoncharov)
- #2074 [validation] Add "onError" option to allow for custom error handling behavior when performing validation (@skevy)
- #2097 Add 'extensions' to all Type System objects (@IvanGoncharov)
- #2102 Add TS typings. All credits goes to original authors of '*.d.ts' files: @TonyPythoneer @calebmer @intellix @firede @kepennar @freiksenet @IvanGoncharov @DxCx @rportugal @tgriesser @dyst5422 @adnsio @divyenduz @bradzacher @clayne11 @JCMais @langpavel @mc0 @martijnwalraven @jedmao
Bug Fix 🐞
- #1467 Make error handling consistent in createSourceEventStream (@taion)
- #2047 coerceValues: correctly handle NaN and similar values (@IvanGoncharov)
- #2075 inspect: correctly handle custom objects without class name (@IvanGoncharov)
- #2082 Convert type definitions subtypes to be exact (@IvanGoncharov)
- #2091 definitions: make constructed fields non-optional (@IvanGoncharov)
- #2099 Switch all 'for..of' loops to assume they iterating only arrays (@IvanGoncharov)
Docs 📝
- #2103 Add README for 'tstypes' folder (@IvanGoncharov)
Polish 💅
42 PRs were merged
- #2014 Fix build after #1467 (@IvanGoncharov)
- #2015 Flow: Remove some of the 'existential type' usages (@IvanGoncharov)
- #2023 parser: simplify 'many' utility function (@IvanGoncharov)
- #2024 parser: Remove unnecessary export on internal function (@IvanGoncharov)
- #2025 Move 'getTokenDesc' into parser (@IvanGoncharov)
- #2027 Flow: Remove unnecessary type annotations (@IvanGoncharov)
- #2028 Parser: group internal methods into a class to share lexer & options (@IvanGoncharov)
- #2031 Remove use of existential type in validation tests (@IvanGoncharov)
- #2033 Run prettier on all files in repo (@IvanGoncharov)
- #2042 Add tests for parseValue & parseLiteral of std scalars (@IvanGoncharov)
- #2045 test: Fully cover 'coerceValue' function with tests (@IvanGoncharov)
- #2046 Enable 'flowlint deprecated-type' (@IvanGoncharov)
- #2049 Remove useless check since args are always array (can be empty) (@IvanGoncharov)
- #2050 Simplify coercion algorithm in getVariableValues/getArgumentValues (@IvanGoncharov)
- #2051 Make getArgumentValues/getVariableValues algorithm linear (@IvanGoncharov)
- #2052 coerceValue: Simplify path printing (@IvanGoncharov)
- #2053 jsutils: Add generic Path implementation (@IvanGoncharov)
- #2054 buildExecutionContext: simplify errors handling (@IvanGoncharov)
- #2058 flow: Enable 'uninitialized-instance-property' lint (@IvanGoncharov)
- #2059 Sort imports in all JS files (@IvanGoncharov)
- #2060 Using direct imports in test files (@IvanGoncharov)
- #2061 change 'CoercedVariableValues' to disjoint union (@IvanGoncharov)
- #2063 Remove useless invariant since 'serialize' is always exist (@IvanGoncharov)
- #2064 invariant: improve code that babel outputs (@IvanGoncharov)
- #2065 Remove 'invariant' calls from 'stripIgnoredCharacters' tests (@IvanGoncharov)
- #2066 Use 'invariant' only for real invariants, add 'devAssert' for the rest (@IvanGoncharov)
- #2067 Convert all non-reachable exceptions into invariants (@IvanGoncharov)
- #2068 parser: Extract 'optionalMany' utility function (@IvanGoncharov)
- #2069 parser: Inline 'parseExecutableDefinition' to simplify code (@IvanGoncharov)
- #2073 Simplify parser, avoid extra function call (@Cito)
- #2076 coverage: remove not essential 'istanbul ignore's (@IvanGoncharov)
- #2077 validation-test: remove unneeded 'specifiedRules' (@IvanGoncharov)
- #2078 getVariableValues: improve coverage of 'maxErrors' (@IvanGoncharov)
- #2079 Add benchmark for validating invalid query (@IvanGoncharov)
- #2083 GraphQLSchema: Remove unneeded recursion during type collection (@IvanGoncharov)
- #2085 starWarsIntrospection-test: cleanup + add explanation comment (@IvanGoncharov)
- #2086 GraphQLSchema: simplify
getPossibleTypes&isPossibleType(@IvanGoncharov) - #2089 definition: replace object spread with explicit assignments (@IvanGoncharov)
- #2090 type definitions: Use consistent order for public fields (@IvanGoncharov)
- #2094 tests: use consistent order of fields in snapshots (@IvanGoncharov)
- #2095 extendSchema-test: replace 'GraphQL*' types with SDL (@IvanGoncharov)
- #2100 Convert more cycles to 'for..of' (@IvanGoncharov)
Internal 🏠
14 PRs were merged
- #2013 Mark as private to prevent accidential publishing of root 'package.json' (@IvanGoncharov)
- #2016 Travis: Run gitdeploy only on pushes to master (@IvanGoncharov)
- #2019 Benchmark: Inline code from benchmark.js (@IvanGoncharov)
- #2021 Benchmark: simplify code (@IvanGoncharov)
- #2026 Flow: Remove unussed '$FlowIssue' (@IvanGoncharov)
- #2032 ESLint: Enable flowtype/no-existential-type rule (@IvanGoncharov)
- #2034 Cleanup leftovers of CI publishing (@IvanGoncharov)
- #2035 gen-changelog: remove hardcoded GitHub org and repo (@IvanGoncharov)
- #2039 benchmark: improve reproducibility (@IvanGoncharov)
- #2070 coverage: Fixed coverage bug introduced in #2067 (@IvanGoncharov)
- #2071 coverage: Fixed coverage bug introduced in #2067 (@IvanGoncharov)
- #2072 Make npm scripts for prettier run on Windows (@Cito)
- #2087 benchmark: use version specific babel (@IvanGoncharov)
- #2088 benchmark: collect memory usage per operation (@IvanGoncharov)
Dependency 📦
7 PRs were merged
- #2022 Update deps (@IvanGoncharov)
- #2030 Update deps (@IvanGoncharov)
- #2040 Update Babel (@IvanGoncharov)
- #2043 Update deps (@IvanGoncharov)
- #2057 Update Flow to 0.104 (@IvanGoncharov)
- #2080 Update Flow to 0.105 (@IvanGoncharov)
- #2101 Update deps (@IvanGoncharov)
Committers: 4
- Adam Miskiewicz(@skevy)
- Christoph Zwerschke(@Cito)
- Ivan Goncharov(@IvanGoncharov)
- Jimmy Jia(@taion)
v14.4.2 (2019-07-03)
Bug Fix 🐞
- #2009 Defensively verify that Symbol.for is available (@jaynetics)
Polish 💅
2 PRs were merged
- #2006 buildClientSchema: add test for missing standard scalar (@IvanGoncharov)
- #2008 Flow: Remove deprecated 'Function' type (@IvanGoncharov)
Internal 🏠
- #2011 Correctly add modified 'version.js' to release commit (@IvanGoncharov)
Committers: 2
- Ivan Goncharov(@IvanGoncharov)
- Janosch Müller(@jaynetics)
v14.4.1 (2019-06-29)
Bug Fix 🐞
- #2001 Switch some of arguments from
Arrayto$ReadOnlyArray(@IvanGoncharov) - #2002 Mark user-provided 'variableValues' as read-only (@IvanGoncharov)
Polish 💅
- #2000 dedent: Simplify and remove unused features (@IvanGoncharov)
Internal 🏠
4 PRs were merged
- #1998 Add "postversion" step to commit changed files (@IvanGoncharov)
- #1999 changelog: Remove duplicate PRs (@IvanGoncharov)
- #2003 Travis: Disable automatic publishing on NPM (@IvanGoncharov)
- #2004 Travis: remove Node.js v11 from test matrix (@IvanGoncharov)
Committers: 1
- Ivan Goncharov(@IvanGoncharov)
v14.4.0 (2019-06-26)
New Feature 🚀
- #1906 Use 'Object.freeze' consistently on all exported Array/Object constants (@IvanGoncharov)
- #1878 Add "version" string and parsed "versionInfo" (@IvanGoncharov)
- #1942 Export "SubscriptionArgs" type (@IvanGoncharov)
- #1946 GraphQLScalarType: make 'serialize' optional with 'identityFunc' as default (@IvanGoncharov)
- #1359 validateSchema: validate Input Objects self-references (@IvanGoncharov)
- #1949 [printError] Make location formatting IDE friendly (@alloy)
- #1955 Make 'parseLiteral' optional and use wrapped 'parseValue' by default (@IvanGoncharov)
- #1965 Added partial support for repeatable directives (@IvanGoncharov)
- #1984 Extract 'printLocation' & 'printSourceLocation' functions (@IvanGoncharov)
- #1985 Print minified location (@IvanGoncharov)
Bug Fix 🐞
- #1916 findBreakingChanges: use string representation to compare default values (@IvanGoncharov)
- #1920 Remove trailing spaces from 'Int' and 'Float' descriptions (@IvanGoncharov)
- #1937 Accept normal object as 'variableValues' arg of 'graphql' function (@IvanGoncharov)
- #1938 Allow null value on 'data' property of 'ExecutionResult' type (@IvanGoncharov)
- #1939 Accept normal object as 'variableValues' arg of subscribe functions (@IvanGoncharov)
- #1983 printError shouldn't return trailing new line (@IvanGoncharov)
Docs 📝
2 PRs were merged
- #1923 Copy 'site/graphql-js' folder from 'graphql.github.io' repo (@IvanGoncharov)
- #1959 Fix URLs to the GraphQL Specification and its repository (@IvanGoncharov)
Polish 💅
40 PRs were merged
- #1901 findBreakingChanges: extract 'findByName' utility function (@IvanGoncharov)
- #1902 findBreakingChanges: Simplify type to string conversion (@IvanGoncharov)
- #1903 findBreakingChanges: add missing dots to descriptions (@IvanGoncharov)
- #1904 findBreakingChanges-test: Unify changes snapshots (@IvanGoncharov)
- #1905 findBreakingChanges: simplify schema iteration (@IvanGoncharov)
- #1907 findBreakingChanges: unify how changes are collected (@IvanGoncharov)
- #1908 findBreakingChanges: extract "diff" utility function (@IvanGoncharov)
- #1909 findBreakingChanges: reduce duplication by merging some functions (@IvanGoncharov)
- #1910 Replace some "for" cycles with "for of" (@IvanGoncharov)
- #1911 findBreakingChanges: merge funcs and remove duplicated iteration logic (@IvanGoncharov)
- #1912 findBreakingChanges: sort functions in logical order (@IvanGoncharov)
- #1914 ESLint: Forbid unnecessary backticks (@IvanGoncharov)
- #1918 tests: replace 'printNode' with more high-level 'printASTNode' (@IvanGoncharov)
- #1921 Manually concat all static strings (@IvanGoncharov)
- #1927 validation-tests: remove useless parseValue & parseLiteral (@IvanGoncharov)
- #1934 Add typings to introspection resolvers (@IvanGoncharov)
- #1936 Remove dead code since args are always present on fields and directives (@IvanGoncharov)
- #1943 Simplify args handling in 'graphql', 'subscribe' and 'execute' funcs (@IvanGoncharov)
- #1944 Extract "didYouMean" util function (@IvanGoncharov)
- #1945 Extract 'identityFunc' function to be used instead of 'x => x' (@IvanGoncharov)
- #1950 validateSchema: use 'astNode' from fields/args instead of type's subnodes (@IvanGoncharov)
- #1952 tests: replace
invariantwithassertEnumType(@IvanGoncharov) - #1957 Remove unnecessary concatenations from template strings (@IvanGoncharov)
- #1962 parser: remove unused token that was returned from keyword match (@IvanGoncharov)
- #1963 buildASTSchema-test: inline SDL in 'buildSchema' calls (@IvanGoncharov)
- #1964 Simplify SDLs used in 'buidSchema'/`extendSchema' tests (@IvanGoncharov)
- #1960 Update LICENSE and remove license header from source files (@IvanGoncharov)
- #1972 inspect: Handle 'null' explicitly (@IvanGoncharov)
- #1973 Extract 'isObjectLike' utility function (@IvanGoncharov)
- #1974 buildClientSchema: add dev check for invalid introspection argument (@IvanGoncharov)
- #1975 inspect-test: Improve coverage (@IvanGoncharov)
- #1976 inspect-test: remove $FlowFixMe (@IvanGoncharov)
- #1977 buildClientSchema: improve coverage (@IvanGoncharov)
- #1978 Flow: switch to new '...' syntax for inexact objects (@IvanGoncharov)
- #1980 Correct imports to use direct paths instead of relying on 'index.js' (@IvanGoncharov)
- #1981 Move TokenKind into separate file to solve cycle import (@IvanGoncharov)
- #1982 printError: improve coverage (@IvanGoncharov)
- #1988 Add test for didYouMean with sub-message (@Cito)
- #1994 Improve Flow typing for 'memoize3' (@IvanGoncharov)
- #1995 Improve typings for 'toJSONDeep' function (@IvanGoncharov)
Internal 🏠
19 PRs were merged
- #1915 Travis: don't duplicate testing on Node's latest LTS (@IvanGoncharov)
- #1917 Manually update 'version.js' (@IvanGoncharov)
- #1919 Update GitHub schema (@IvanGoncharov)
- #1922 Add "codecov.yml" to .npmignore (@IvanGoncharov)
- #1924 Add 'docs' to .npmignore (@IvanGoncharov)
- #1928 package.json: Rename "check-cover" to "check:cover" (@IvanGoncharov)
- #1929 benchmark: create 'exec' wrap for execSync function (@IvanGoncharov)
- #1930 Convert Flow coverage to istanbul format and use nyc for reporting (@IvanGoncharov)
- #1931 npmignore: remove all dot files since they already covered by '.*' (@IvanGoncharov)
- #1940 Allow 'async/await' in 'resources' scripts (@IvanGoncharov)
- #1941 Speed up "check:cover" by using async exec (@IvanGoncharov)
- #1947 Remove 'watch' script (@IvanGoncharov)
- #1953 Remove "coverage/flow" before every "check:cover" run. (@IvanGoncharov)
- #1966 Add script to generate changelog (@IvanGoncharov)
- #1968 Add some stats to the 'yarn build' command (@IvanGoncharov)
- #1969 Improve generated changelog (@IvanGoncharov)
- #1991 Change formating of '.travis.yml' to better match output of Travis CLI (@IvanGoncharov)
- #1992 Change formatting of '.travis.yml'. Continuation of 2b9d571 (@IvanGoncharov)
- #1996 Update NPM token inside '.travis.yml' (@IvanGoncharov)
Dependency 📦
8 PRs were merged
- #1926 Update deps (@IvanGoncharov)
- #1933 Update deps (@IvanGoncharov)
- #1935 Update Flow to v0.100.0 (@IvanGoncharov)
- #1956 Update prettier to v1.18.0 (@IvanGoncharov)
- #1961 Update deps (@IvanGoncharov)
- #1971 Update deps (@IvanGoncharov)
- #1990 Update deps (@IvanGoncharov)
- #1993 Update Flow to v0.102 (@IvanGoncharov)
Committers: 3
- Christoph Zwerschke(@Cito)
- Eloy Durán(@alloy)
- Ivan Goncharov(@IvanGoncharov)
14.3.1 (2019-05-23)
Bug Fix 🐞
- #1809 buildClientSchema: include standard type only if it is used (@IvanGoncharov)
Polish 💅
19 PRs were merged
- #1899 findBreakingChanges: Add new tests to improve coverage (@IvanGoncharov)
- #1898 findBreakingChanges: simplify checking of wrapped types (@IvanGoncharov)
- #1897 findBreakingChanges-test: Remove unnecessary fields (@IvanGoncharov)
- #1896 findBreakingChanges: Correctly document not reachable statement (@IvanGoncharov)
- #1895 findBreakingChanges: Remove 'export' from internal functions (@IvanGoncharov)
- #1893 findBreakingChanges: test only functions that are part of public API (@IvanGoncharov)
- #1891 findBreakingChanges-test: remove unneeded 'Query' types (@IvanGoncharov)
- #1888 Enable 'no-prototype-builtins' ESLint rule (@IvanGoncharov)
- #1887 Enable "no-case-declarations" ESLint rule (@IvanGoncharov)
- #1885 Explicitly create Promise using "Promise.resolve" (@IvanGoncharov)
- #1884 memoize3: Explicitly pass arguments (@IvanGoncharov)
- #1883 Enable "no-sequences" ESLint rule (@IvanGoncharov)
- #1882 Enable 'prefer-promise-reject-errors' ESLint rule (@IvanGoncharov)
- #1881 Partly fix results of "sketchy-null-mixed" Flow check (@IvanGoncharov)
- #1880 Enable "sketchy-null-mixed" Flow check (@IvanGoncharov)
- #1879 Use "isPromise" instead of testing for 'then' property (@IvanGoncharov)
- #1866 Enable Flow in "visitor-test.js" (@IvanGoncharov)
- #1865 Enable Flow on "subscribe-test.js" (@IvanGoncharov)
- #1863 Fix some typos in stripIgnoredCharacters docs+tests (@Cito)
Internal 🏠
15 PRs were merged
- #1892 build: Add new lines to ".js" and ".mjs" files (@IvanGoncharov)
- #1886 Remove TODO on "no-warning-comments" ESLint rule (@IvanGoncharov)
- #1877 Rename 'fs-utils.js' to 'utils.js' (@IvanGoncharov)
- #1875 Enable prettier for "resources/*.js" files (@IvanGoncharov)
- #1876 inline-invariant: use template instead of AST (@IvanGoncharov)
- #1874 Enable "no-inner-declarations" rule on "resources/*.js" files (@IvanGoncharov)
- #1873 Fix lint issues in 'resources/*.js' files (@IvanGoncharov)
- #1872 Replace all "var" with "const" & "let" in "resources/*.js" files (@IvanGoncharov)
- #1871 Lint JS files inside "resources" folder (@IvanGoncharov)
- #1870 Add missing "use strict" (@IvanGoncharov)
- #1869 ESLint: remove useless "parserOptions" options (@IvanGoncharov)
- #1868 Add missing "@noflow" (@IvanGoncharov)
- #1867 ESLint: Simplify exclude for "no-restricted-syntax" rule (@IvanGoncharov)
- #1864 Drop parser option since Prettier supports Flow by default (@IvanGoncharov)
- #1855 Add 'yarn check --integrity' to CI tests (@IvanGoncharov)
Committers: 2
- Christoph Zwerschke (@Cito)
- Ivan Goncharov (@IvanGoncharov)
14.3.0 (2019-05-07)
New Feature 🚀
- #1802 Add stripIgnoredCharacters utility function (@IvanGoncharov)
Bug Fix 🐞
- #1837 isSpecifiedDirective should not assume Directive type (@Cito)
- #1825 Add missing exports for createLexer, syntaxError and locatedError (@IvanGoncharov)
Polish 💅
8 PRs were merged
- #1850 Add comment to make test better understandable (@Cito)
- #1848 Remove Flow workaround for const arguments (@IvanGoncharov)
- #1840 ESLint: enable 'arrow-body-style' rule (@IvanGoncharov)
- #1836 Use Flow shortcut for importing types and enable related ESLint rules (@IvanGoncharov)
- #1834 Flow: Enable "sketchy-number" lint rule (@IvanGoncharov)
- #1832 show flow warnings and fixes all reported ones (@IvanGoncharov)
- #1826 Synchronise and fix styling of "index.js" files (@IvanGoncharov)
- #1810 buildSchema/extendSchema: test standard scalars (@IvanGoncharov)
Internal 🏠
13 PRs were merged
- #1851 nyc: Switch config from JSON to YAML and move args from package.json (@IvanGoncharov)
- #1845 Adapt benchmark to the new build script (@IvanGoncharov)
- #1844 Correctly trap errors in shell scripts (@IvanGoncharov)
- #1843 Fix "npm run build" on Node 10 (@IvanGoncharov)
- #1842 Terminate shell scripts if any subcomand terminated (@IvanGoncharov)
- #1841 Make single 'build.js' to handle NPM package build (@IvanGoncharov)
- #1839 ESLint: enable all low-hanging rules and mark rest as TODO (@IvanGoncharov)
- #1838 Mark all ESLint rules that conflict with Prettier (@IvanGoncharov)
- #1833 List Flow lint rules and enable low-hanging fruits (@IvanGoncharov)
- #1831 Speed up flow check (@IvanGoncharov)
- #1829 ci: add Node v12 (@IvanGoncharov)
- #1828 build: generalize ignore patter to include all '*' dirs (@IvanGoncharov)
- #1822 Add 'package-lock.json' to ignored files (@IvanGoncharov)
Committers: 2
- Christoph Zwerschke (@Cito)
- Ivan Goncharov (@IvanGoncharov)
14.2.1 (2019-03-31)
Bug Fix 🐞
- #1808 buildClientSchema: Revert breaking change introduced in #1677 (@IvanGoncharov)
14.2.0 (2019-03-26)
Note: Updating to this release can cause new Flow errors since it adds Flow typing for print function that was missing in previous versions.
New Feature 🚀
- #1331 Add 'toConfig' methods to all type system definitions objects (@IvanGoncharov)
- #1332 Allow to override default type resolver (@IvanGoncharov)
Bug Fix 🐞
- #1792 Duplicate fields in deep inputs not validated properly (#1791) (@Cito)
- #1724 Add missing toStringTag to GraphQLList and GraphQLNonNull (@IvanGoncharov)
- #1554 Improve error message for missing required argument in field or directive (@everdimension)
- #1707 printSchema: Fix printing of empty types (@IvanGoncharov)
- #1702 Add missing Flow typing for 'print' function (@IvanGoncharov)
- #1698 Fix missing schema's astNode when schema was defined inside extension (@IvanGoncharov)
- #1600 Inspect non-error types to produce helpful error messages for failing resolvers (@kommander)
Docs 📝
- #1679 Documentation for explicitly mentioning ObjectTypes (@buoyantair)
Polish 💅
42 PRs were merged
- #1798 Rename 'MaybePromise' to 'PromiseOrValue' (@IvanGoncharov)
- #1785 Fix test case description (@IvanGoncharov)
- #1670 Remove year from LICENSE headers (@IvanGoncharov)
- #1782 Fix grammar in error message (@Cito)
- #1781 Add directive predicates tests and fix test names (@Cito)
- #1778 Minor spelling errors in PossibleTpyeExtensions (@Cito)
- #1772 fix out of range return check for charCodeAt in lexer (NaN instead of null) (@superhawk610)
- #1767 Use non-capturing group inside RegExp (@IvanGoncharov)
- #1764 Minor code simplification in validation rules (@Cito)
- #1765 Fix validator test names (@Cito)
- #1763 Fix typos in UniqueOperationTypes test (@Cito)
- #1758 Tests: 'expect(...).to.eql' => 'expect(...).to.deep.equal' (@IvanGoncharov)
- #1757 GraphQLError: don't wrap single node in array (@IvanGoncharov)
- #1756 Speedup parser (~50%) by using 'slice' and 'charCodeAt' directly (@IvanGoncharov)
- #1736 Speedup visitor test on kitchenSinkQuery (@IvanGoncharov)
- #1735 Simplify checking of args inside visitor tests (@IvanGoncharov)
- #1734 Use AST abbreviation consistently (@IvanGoncharov)
- #1733 General cleanup of definition tests (@IvanGoncharov)
- #1730 Allow for long string literals inside tests (@IvanGoncharov)
- #1729 Remove useless positive isTypeOf tests, since this function is optional (@IvanGoncharov)
- #1728 Unwrap type definition tests (@IvanGoncharov)
- #1725 Group type definitions tests by type kind (@IvanGoncharov)
- #1723 Move 'Object.toString' tests to the appropriate files (@IvanGoncharov)
- #1722 Remove duplicating NonNull test (@IvanGoncharov)
- #1719 Move schema related test to "schema-test.js" + cleanup (@IvanGoncharov)
- #1718 Make all "not reachable" look and work the same (@IvanGoncharov)
- #1717 NonNull tests: Use SDL to create test schema (@IvanGoncharov)
- #1711 tests: remove useless parseLiteral & parseValue callbacks (@IvanGoncharov)
- #1710 Simplify "Type Map: includes input types only used in directives" test (@IvanGoncharov)
- #1709 Parser: use "any" util fn to parse object literal (@IvanGoncharov)
- #1708 buildASTSchema: test building of empty types (@IvanGoncharov)
- #1706 Cleanup unnecessary Query types from printSchema tests (@IvanGoncharov)
- #1705 Use isLeafType instead of isEnumType & isScalarType combo (@IvanGoncharov)
- #1697 Remove Flow workaround in buildASTSchema (@IvanGoncharov)
- #1673 Disable coverage on deprecated 'isValidJSValue' function (@IvanGoncharov)
- #1686 Add polyfill for 'flatMap' (@IvanGoncharov)
- #1684 extract flatMap function out of extendSchema implementation (@IvanGoncharov)
- #1681 Remove excessive cache inside lexicographicSortSchema (@IvanGoncharov)
- #1678 buildClientSchema: move inner functions to follow return (@IvanGoncharov)
- #1677 Remove excessive cache inside buildClientSchema (@IvanGoncharov)
- #1672 Remove useless if inside 'getAllSubNodes' function (@IvanGoncharov)
- #1547 Parser: Better names for parser util functions (@IvanGoncharov)
Internal 🏠
17 PRs were merged
- #1795 Switch 'check-cover' to use Flow's 'batch-coverage' cmd (@IvanGoncharov)
- #1777 Prettier: normalize line ending to git standard (@IvanGoncharov)
- #1766 Update ESLint to 5.15 (@IvanGoncharov)
- #1750 Simplify benchmark by using more low-level API from 'benchmark.js' (@IvanGoncharov)
- #1748 Inline 'beautify-benchmark' + heavy refactoring (@IvanGoncharov)
- #1747 Use ESLint cache for local development (@IvanGoncharov)
- #1746 Use ESLint cache to speedup watch (@IvanGoncharov)
- #1745 Do not run duplicating parser step on watch (@IvanGoncharov)
- #1744 Remove 'yarn t' in favor of 'yarn mocha' or 'npm run mocha' (@IvanGoncharov)
- #1743 Move Mocha config into .mocharc.yml (@IvanGoncharov)
- #1739 Move list of supported targets into separate file (@IvanGoncharov)
- #1737 Remove custom mocha timeout (@IvanGoncharov)
- #1694 Make codecov less spammy (@IvanGoncharov)
- #1693 Move coverage upload to .travis.yml (@IvanGoncharov)
- #1692 Run full CI only on node LTS (@IvanGoncharov)
- #1689 Improve code coverage reporting (@IvanGoncharov)
- #1690 Temporary migrate tests from node 11.7 to 11.6 to fix codecov (@IvanGoncharov)
Committers: 7
- Aaron Ross (@superhawk610)
- Christoph Zwerschke (@Cito)
- Ivan Goncharov (@IvanGoncharov)
- Matt Mahoney (@mjmahone)
- Sebastian Herrlinger (@kommander)
- @everdimension
- buoyantair (@buoyantair)
Fixes:
- Should fix issue #1668 via #1669
New:
- Added
assertSchemaandassertDirective(#1580) - Adds additional type extension validation (#1643)
Fixes:
- Improves flow type definitions
- Adds back in support for node 9, and tests for node 11. node >= 6 is currently supported.
- Allows custom node
inspect(#1605) - Correctly handles newlines in block strings (#1637)
Fixes:
- No longer presents warnings when used with node v7 and v9 (#1508)
- Added keywords to the NPM package (#1501)
ValidationRuleflow type is now exported (#1505)- Improved schema validation reports directives without locations (#1507)
- Fixed potential infinite loop during introspection of some schema (#1509)
(Something went wrong during release, this version has been unpublished)
Thanks to all contributors for the hard work put into this release, which complies with the latest June 2018 version of the GraphQL Spec
Breaking:
- Drops support for node v4 and v9, makes sure node v10 is supported (#1338, #1445)
- Reject invalid scalar value coercion (#1365, #1336)
- Removes
VariablesDefaultValueAllowedvalidation rule, andProvidedNonNullArgumentsbecameProvidedRequiredArguments(#1274) - Stricter coercion of Scalar Types (#1382)
- Removes deprecated Introspection fields
onOperation,onFragment, andonField(#1385, #1429) GraphQL*Configare now exact types (#1391, #1443)- "Schema Change" keys in
BreakingChangeTypeandDangerousChangeTypefor detecting adding args and input fields changed name (#1492) formatErrorAPI changed for error message extensions. To upgrade without changing existing server responses, wrapgraphql'sformatError:
import { formatError as baseFormatError, /* ... */ } from 'graphql';
{
// other options
formatError(error) {
const { extensions, ...rest } = baseFormatError(error);
return { ...extensions, ...rest };
},
}
New:
- Parse new schema extensions (#1314, #1323)
- Export SDL AST types (#1315)
extendSchemaextended with spec-compliant SDL extensions (#1373, #1392, #1441)symbol.toStringTagsupport (#1297)- Expose
getOperationRootType(schema, operationAST)(#1345) - Package is marked as side-effect free (#1312)
validateSchemaworks with Schema extensions (#1410)validateworks on SDL definitions (#1438, #1383)- directives can be added to variable definitions, behind
experimentalVariableDefinitionDirectivesflag (#1437, #1454) - ASTNode predicates, like
isDefinitionNodeandisTypeSystemDefinitionNode(#1459) isRequiredArgumentandisRequiredInputFieldpredicates (#1463)
Fixed:
- Fixes for custom enum types
- Prettier, Flow and eslint upgrades (#1304, #1319)
- Babel 7 upgrade (#1350)
- Introspection query perf improved (#1329)
introspectionFromSchemahas default options (#1408)buildSchemamemory leaks and infinite recursion fixed (#1417, #1427)watchcommand fixed (#1449)- Benchmarking for
validation(#1471)
Deprecated:
These will be removed in v15
introspectionQuery, usegetIntrospectionQuery(#1386)getDescription, use the schema AST node to get descriptions (#1396)isValidJSValue, usecoerceValue(#1386)isValidLiteralValue, use validation (#1386)
New:
- Allow buildSchema() to take options (#1249)
- Update to Flow v0.68 (#1290)
Fixes:
- Update iterall (#1254)
- buildSchema: Make options optional (#1270)
New:
- Publish
.mjsfiles for module code to support native esmodules (#1244) - Interface type definitions may now be extended with
extendSchema(#1222) isValidNameErrorutility is now exported as a non-throwing alternative toassertValidName(#1237)ExectuableDefinitionNodeFlow type is now exported (#1241)
Fixes:
extendSchemanow preserves (and allows extending) a list of legacy field names which would otherwise be considered invalid (#1235)- Replaced a misplaced licensing header (7e6898465131be522666bcbdf71d8c8f2d85e5d2)
Breaking:
- Updated to latest spec for SDL for multiple interface implementations (#1169)
To continue to support the pre-spec variation, use
parse(text, {allowLegacySDLImplementsInterfaces: true}) - Internal module
'graphql/language/kinds'no longer directly exports enum values #1221Not that you were relying on internal modules, were you :)
New:
getDescriptionhelper function is now exported (#1165)- Allows parsing pre-spec object type SDL with
parse(text, {allowLegacySDLEmptyFields: true})(#1171) - Add
introspectionFromSchemautility function (#1187) - Add
lexicographicSortSchemautility function (#1208) (#1220) - Allow use of legacy names during schema validation with
{allowedLegacyNames: ['__badName']}(#1194)
Fixed:
- Only trigger "one instance of graphql" error in DEV environments, removing false errors from minified bundles. (#1174)
- Fix 'astFromValue' to correctly handle integers and strings (#1181)
- Fix getTypeMap() not including input types used in directives (#1189)
- Support executeSync with mutations. (#1198)
- Fix block string printing edge cases (#1190, #1212)
- Fix SourceLocation incorrect export causing rollup bundling to fail (#1210)
- Preserve
allowedLegacyNameswhen usingextendSchema(#1226) (added since v0.13.0-rc.1)
Fixes:
- Excluded lock files from deployed npm package
Fixes:
- Properly deploy a package on npm which contains es6-modules (#1161)
- Support 5-year-old legacy GraphQL services (#1162)
Flow Type Fixes:
- Removed
experimental.const_paramsFlow option to ensure support for projects which do not enable this option (#1157, #1160) - Changed
visit()to returnanyinstead ofmixedto reduce the scope of the breaking change of adding Flow types for this function.
🎁 Happy Holidays, GraphQL.js v0.12.0 is brings some of the biggest new changes of the year 🎉
This release includes new spec-compliance to existing experimental features, dramatically improves the quality of flow types, and introduces a number of new features and improved behaviors. As a result, there are a number of breaking changes to be aware of, especially for those building tools with GraphQL.js. A huge thank you to everyone who contributes to and uses GraphQL.js.
For a complete list of everything new, see the comparison to the last release.
New and Potentially Breaking:
-
Schema is now validated as part of a new exported function
validateSchema()instead of during construction. (#1124)This exciting change allows the creating GraphQLSchema instances which are not yet valid, for example: representing types which don't yet have fields. This is very useful for those building schema directly from the new schema definition language. The new function
validateSchema(), much like the existingvalidate(), will return an Array of GraphQLError describing all issues with a schema. This also now includes blame sites in the original schema definition language, allowing much more helpful error messages when a schema is invalid. This might be breaking if your codebase relied on GraphQLSchema or any of the GraphQL type definition classes -
Validation errors for value literals (and variable values) are greatly improved, doing so results in a change to the standard set of validation rules. (#1126, #1133, #1144, #1153)
Code which relied on repeating the standard validation rules, or filtered them down using whitelists or blacklists may need to be updated. The rules
ArgumentsOfCorrectTypeRuleandDefaultValuesOfCorrectTypeRulehave been removed and are replaced with two new rulesValuesOfCorrectTypeRuleandVariablesDefaultValueAllowedRule. While the quality of validation errors are improved by this change, this does not actually cause any existing valid documents to become invalid or vice-versa. -
GraphQL can now execute synchronously if all resolvers are synchronous functions. This means
execute()may no longer return a Promise if execution completed synchronously. Thegraphql()function will still always return a Promise, but a newgraphqlSync()function guarantees synchronous completion (or throws if any resolver does not complete). This unlocks exciting new use cases for querying over static data-sets and caches. (#1115, #1120) -
Update to match Schema definition language latest specification. (#1102, #1117, #1139)
The schema definition language has some slight changes from the original experimental version through the standardization process. New
extendforms were added and previously valid forms which omit fields liketype Foo {}are now syntax errors and can be replaced withtype Footo indicate that fields are not yet defined. -
Descriptions in the schema definition language are now represented as preceding strings rather than comments. (#927)
This change follows the latest updates to the spec proposal (https://github.com/facebook/graphql/pull/90) after a long discussion between the merits of comments vs. literals as descriptions. To ease the migration to this latest change, existing comment-descriptions can still be used by providing options to the relevant functions. To read a SDL that uses comments as descriptions,
buildASTSchema(document, { commentDescriptions: true }); to write an SDL using comments as descriptions,printSchema(schema, { commentDescriptions: true }). -
Allow serializing scalars as null. (#1104)
Since
nullis a potentially valid value for a scalar to serialize to in some rare conditions, this change ensures that scalars which serialize tonullno longer produce errors. This is breaking since custom scalars which relied on returningnullto indicate failure should now either returnundefinedor throw an Error. -
Flow types for the parsed GraphQL AST and GraphQL Errors are now read only. This may result in new flow errors being detected in your codebase if you manipulate ASTs and Errors. (#1116, #1121, #1122)
New & Improved:
- Flow types have been added to
visit(). As with any flow type improvement, this could expose real issues with your existing codebase. (#1155) - New predicate functions are exported for all GraphQL types. This should remove the need to use
instanceoffor any use of GraphQL.js (#1137) - The Wrapping Types
GraphQLNonNullandGraphQLListare now flow typed as covariant and operate like a function instead of a class. This means that you should no longer typenew GraphQLList(someType)and instead favorGraphQLList(someType). (#1136) - A new function
printError()is exported which highlights any blame lines from the original sources. Useful for printing errors to consoles. (#1129, #1131) - Improved aggregate NullableType and InputType flow types. As with any flow type improvement, this could expose real issues with your existing codebase. (#1128)
- A new function
getIntrospectionQuery()is exported, and the existingintrospectionQueryconstant is deprecated. This helps improve the flow types and allows for some flexibility and options. (#1113) - Export ES6 modules so tools like Rollup and Webpack can use "tree shaking" for smaller builds. (#1105)
- More strict flow typing for Introspection results. (#1082)
- Improve error quality when receiving bad introspection data. (#1063)
- Ability to extend GraphQL errors with additional "extensions" properties. (#928)
- New value literal "Block String" for writing long-form text (#926)
- New predicate functions
isSpecifiedScalarType,isIntrospectionType, andisSpecifiedDirective(#924). - Better coverage for
findBreakingChanges()andfindDangerousChanges()- Detect breaking changes within directives (#1152)
- Detect added nullable input field or added nullable argument. (#1096)
- Adding an interface to a type is a dangerous change. (#992)
Fixed:
- Fix path argument for
visit()for leaving visitors. (#1149) - Errors concerning multiple instances of GraphQL.js being in use at the same time are now reported much more clearly and in more scenarios. (73b804bd46fcda4606a833cbdd9835d1ee917807)
- The
GraphQLArgsflow type is now exported. (#1118) - Fix a possible infinite loop during validation for invalid queries in the OverlappingFields rule. (#1111)
- Subscriptions now ensure resolver errors are reported properly during initialization. (#1106, #1107)
- Ensure uniform parsing of named queries and anonymous queries (#1094)
- Fix elasticsearch errors being mistaken for GraphQL errors. (#1090)
- Avoid process is undefined error when used in the browser. (#1058)
- Fix mistake in how TypeInfo handles inline fragments without type (#1041)
- Fix mistake in how TypeInfo collects input types (#1143)
- Check
isDeprecatedinstead ofdeprecationReasoninprintDeprecated()(#1035) - Fix flow types for 'path' & 'parentType' of GraphQLResolveInfo (#1033)
- Fix utilization of argument default values in
buildASTSchema(),extendSchema()andbuildClientSchema(). (#903)
Fixes:
- Fix an issue where flow typed resolvers would unnecessarily need to include
__proto__(#1056)
Fixes
- Upgrades iterall dependency to v01.1.3, removing an undesired arrow function in the published package that could break build and runtime processes (https://github.com/leebyron/iterall/pull/27).
Fixes
- Update to Flow version v0.56.0
- fix flow errors by annotating null prototypes, exposed by Flow v0.55.0 (#1048)
New:
- This is the first NPM release to include the MIT license. Read more about this change: https://medium.com/@leeb/relicensing-the-graphql-specification-e7d07a52301b
Fixes:
- Fix another type issue exposed by Flow version v0.54 (#1027).
Fixes:
Fix type errors exposed by Flow version v0.54 (#1023, #1026).
Fixes
- Fix Flow errors for people who do not have
experimental.const_params=trueset in their.flowconfig(#1012).
Fixes
- Remove unintended runtime dependency on Regenerator runtime (#1007).
Breaking
- The
subscribe()function now returns aPromiseof either anAsyncIteratororExecutionResultto better distinguish between initialization errors and publish errors; previously it just returned anAsyncIterator(#918).
Spec compliance
- Passing an array in place of a
Stringinput throws an error instead of silently coercing (#925).
Fixes
- Directive descriptions are preserved through calls to
extendSchema()(#961).
Changes
- The
ExecutionArgstype is now exported (#988). - Adding a type to a union or a value to an enum are now reported as "dangerous" changes (#991).
Fixed:
- Fix incorrect column numbers in errors introduced in #949 (#951)
New:
- Inline invariant transform for faster loading of schemas (#935)
- Support for directives applied on IDL & Schema (#746)
- Account for query's offset in file for errors (#949)
New:
- Additional detection in
findBreakingChanges()(#874) - Experimental Schema Language now allows a leading pipe in union definitions (#907, #911)
- A
printIntrospectionSchema()utility is now exported (#905) - A
getDirectiveValues()utility is now exported (a1f63083fb1abb7cb3d57754ae41a54c8ff4b382)
Fixed:
- Improvements to error messages
- Removes trailing commas from source so it can experimentally be used directly (86009a68cdd09a7f3078e53a6c99397a7561d5f5)
New:
- Spec compliance: Continued progress towards Subscription support, adding Validation rules (#882)
Fixed:
- Better handling of Errors from
execute()function, returning resolved GraphQL responses instead of rejected promises for spec-described errors. (#883) - Fixed flow issues when using GraphQL.js with some optional configuration with Flow v47 (#885)
New
isValidValue()andisValidLiteral()added to Scalar and enum types (#861).- You can now set a custom default field resolver (#865).
graphql()may now take aSourceobject, in addition to the existing support forstring(#866).graphql()may now take an object with named parameters (#867).- Partial support for GraphQL subscriptions (#846, #868) (Not yet ready for production use).
Breaking
- Spec compliance: forbid duplicate type definitions (#744).
- Spec compliance: disallow inappropriate coercion of non-
Intvalues toInt(#837).
Fixes
- Ensure
GraphQLErrorstack trace includes error message (#718). - Fix input coercion to allow null-valued Enums as arguments (#848).
- Fix for fields that are JavaScript keywords (#864).
- Compatibility with Flow v0.47.0 (#878).
New
- It is now possible to suppress warnings about non-spec compliant names by setting the
GRAPHQL_NO_NAME_WARNINGenvironment variable. This may be useful when working with legacy schemas.
New:
- Much improved Flow types from the experimental
%checkstype (#695) - Allow passing a custom
TypeInfoinstance tovalidate()(#834) - Exported
getVisitFnfor building custom composite visitors. (#807)
Fixes:
- Allow Enum internal values to be
false,null, andundefined(#836)
New:
- All validation rules are now exported directly (#808)
Fixes:
- Fix flow issue with constructing
new GraphQLError()(#829)
Spec Compliance:
- Now throws error when building Enum with reserved words (#812)
- Now throws error when building Union with multiple of the same type (#813)
- Now throws error when building Object type implementing the same Interface more than once (#728)
Fixes
- Eliminate false positives reported by
findArgChanges(#783).
Breaking
- Remove ambiguity in
isLeafTypecheck: it no longer performs named type unwrapping and is consistent with the otherisCompositeType/isAbstractTypechecks (#697).
New
- Make wording in error messages more consistent (#767).
- Allow deprecated fields/values to be extended (#755).
- Validation messages about names starting with double underscores are now use
console.warnrather thanconsole.error(#717). - Improved the error message for undefined field config (#702).
- The
findBreakingChangesvalidation now reports breaking changes made to arguments (#701).
Internal
- Performance improvements to the
separateOperationsmodule (#710). - Improvements to Flow checking (#699) and type safety (#698).
Fixes
- Downgrade error to warning for non-spec-compliant use of non-meta fields starting with
__(#692). - Workaround for problem in some environments with reserved literals (such as
default) being used as properties (#693).
New:
- Added isNamedType() and assertNamedType() #589
- Default field resolvers now get full execution info as a third argument #615
- ObjectType.isTypeOf() and InterfaceType.resolveType() may now return Promises #631
- Support and fixes for flow type v0.38 #671
- Added TypeInfo.getEnumValue() and EnumType.getValue(name) #674
- Added findDeprecatedUsages() #676
Fixes:
- Enforce spec that no non-meta field may start with "__" #600 (Potentially breaking for existing non-compliant uses).
- isValidJSValue() reports if coercion results in error #602
- Executor throws friendlier error if no document is provided #614
- Fixed import circular dependency, improving compressed builds #644
New:
assertXXXType()functions help ensure type-correct code using graphql (#570)- Added
toJSON()andinspect()methods on all GraphQL types for easier debugging (#578) - ValidationContext types are exported (a17256bb148389727db64d2832339d6dce32827a)
Fixes:
- Differentiate between input values with no default and with
nulldefault (#569) - Improvements to Flow types in field resolvers (#573, #575, #577)
Fixes:
- Supports Flow v0.35
- GraphQL parser now returns clearer error messages (07cc624677f4c7120e588e530c6fdb2d87e6210a)
GraphQL.js v0.8.0 is now compliant with the most recent version of the GraphQL specification! This release is also the first to include flow types in the NPM package, which should make it easier to use GraphQL in a well typed way. It also includes many new utilities and small improvements. Thanks to everyone who helped with this release!
Breaking & Spec Changes:
- A resolve function's
info.pathvalue is now a Linked List instead of an Array (#562) - A resolve function's
info.fieldASTsvalue has been renamed toinfo.fieldNodes(#554) formatErrornow includes the path of field errors (#561)- The most recent version of the GraphQL specification is more strict about field argument validation. (#553)
- The most recent version of the GraphQL specification does not allow multiple directives of the same name in the same location (#552)
New:
- GraphQL now supports a literal
nullvalue as a field argument. (#544) - Flow type definitions are now included in the NPM package! The names of many types were changed to be more descriptive. (#554, #526, #412)
printTypelets you print a single GraphQL type using the experimental schema language (#558)defaultResolver, the field resolver used when one is not provided, is now available (#527)
New:
- An Interface or Union's
resolveTypefunction may return a string type name instance of an instance (#509) - Adds utility for comparing schema for breaking changes (#508)
Fixes:
- No longer includes holes in the locations of a GraphQL Error (#507)
New:
- Adds
parseTypemethod, which allows for parsing type references independently of whole GraphQL documents (#506) - Adds
isDeprecatedfield to type definition API, making it easier to use within tools (#496 @asiandrummer)
Fixes:
- Allows GraphQL Errors to be configurable, fixing compatibility issues with Bluebird Promises (#505 @darthtrevino)
- Fix bug where locations go missing when the error comes from something at the beginning of the file (#487 @martijnwalraven)
- Supports Promises-A (in addition to Promises-A+) which improves support with older libraries (#481)
- No longer accept empty string as a valid Int/Float value. (#477 @robzhu)
- Provide clearer error message when variables are provided as an unparsed string. (f2f3db565ba6418c8d2351b468bf653d2300829a)
Thanks to many contributors, GraphQL v0.7.0 contains many improvements and a few new utilities for those building tools using graphql-js.
Most exciting is that the schema language is now more fully featured than ever and you can create new usable schemas directly from that language, making GraphQL easier to use than ever. Huge thanks to @lacker for his vision and effort in making this happen.
Breaking:
- Default resolver behavior now provides
argsandcontext, allowing for more powerful resolvers on your existing data objects (#468 @lacker) - GraphQLError has been refactored to provide more information and behave more like the built-in Error object (8df7894c8974bd19c600ad05df9d42ed3def3e65)
New:
- GraphQL schema documents can now specify descriptions via doc-block style comments (#463 #464)
- Schema language documents no longer have to specify a
schemadeclaration if their root types are namedQueryandMutation(#470) - GraphQLSchema generated by referencing introspection, read from a schema language document, or extending an existing schema can now be used for execution (#469)
New Utilities:
buildSchema()is a utility for creating a usable GraphQLSchema directly from the GraphQL schema language (#471 @lacker)separateOperations()is a utility for splitting up a GraphQL document with many operations into multiple smaller documents with one operation each (#456)
Fixed:
- Extending a schema allows for defining new directives (#455 @robzhu)
- The stack of a GraphQLError is now more predictable, improving compatibility with other libraries (#452 @RylanH)
Thanks to the excellent contributions from community members both in the form of code, careful review, and thoughtful discussion. This version of GraphQL fixes a handful of issues
New:
- Union type definitions may now accept list of possible Types as a "thunk". (#436 @ekosz)
Listfields can now return any iterable collection, not limited to Array, including Backbone.Collection, or Immutable.js Lists. (#449, #300 @mwschall)
Fixed:
- Ensure source code is only ASCII. (#429 @kassens)
astFromValue()now requires a Type as a second parameter and properly serializes Enums with different internal values. (#435 @nodkz)- GraphQLError.stack is now a writable property, fixing issues in Bluebird and other libraries which use a brand-check for Error. (#439 @alexturek)
- GraphQLError.message, GraphQLError.locations, and GraphQLError.path are now enumerable properties, which means
JSON.stringify()will now produce a value which is compliant with the GraphQL spec. (#426 @bnewtonius) - Field errors are now thrown when values are resolved for fields typed
IntorFloatwhich are not representable by those types, improving debugability and spec compliance. (#391 @stubailo) - Errors during field value completion (e.g. a value returned of an incorrect type) now include location information. (#445)
Builds on npm are now smaller and dependency-free! This should make graphql easier to use in clients like Apollo and Relay.
New:
- Execution errors now include a
pathproperty indicating the position in the response which produced the error. (#396)
Fixes:
- No longer causes issues when included in a React Native project. (#414)
- Better error reporting in edge cases thanks to improved Flow error checking. (c7700f206579eef0046649f26e42c8cd336e6e74)
This version introduces directives to the (still experimental) schema language and introduces a @deprecated directive for marking deprecated fields. It also improves validation error messages, thanks to @yuzhi and @robzhu.
New:
- Schema Language Directives (#376, #382)
- New
@deprecateddirective (#384) - Directive constructor and built-ins are now exported from the main module (#381)
- Introspection types are now exported from the main module (71b6a4aaecf064c7095bca81cc4285fa74ba175e)
- Validation: improving overlapping fields quality, may detect new issues (#386)
- Improve validation error message when field names conflict (#363)
- Include possible names when validation fails (#355)
- Error logging for new interface type semantics (#350)
Fixes:
- Deepen introspection query from 3 levels to 7 (#364)
- Printer now correct prints empty block lists (ea5b241487c884edb561b12e0a92e947107bbfc1)
- Ensure buildASTSchema does not exclude
@skipand@include(#380)
This version is the first reference implementation fully compatible with GraphQL — April 2016. In addition to any relevant breaking changes from the spec, it also has made some breaking changes to its API.
Thanks so much to those who contributed issues and pull requests for your help in improving GraphQL!
Breaking:
- The
graphqlandexecutefunctions now accept acontextparameter which is distinct fromrootValueand available as the third argument to allresolvefunctions. The additional information is now the fourth argument toresolvefunctions. Anyresolvefunction which currently uses the third argument will need to be updated in order to use this version of graphql-js. (#326) - Types can now be explicitly provided to
new GraphQLSchema({ types: [...] }). Types which implement an interface but are otherwise not referenced as a field return type are no longer automatically added to the Schema! Provide types like this directly tonew GraphQLSchemato ensure they are included in order to use this version of graphql-js. This fixes a long-standing bug which made it difficult to build multiple related Schema with the same type instances. (#327) - Spec compliance: Directives are now defined and introspected with an array of locations they can be legally placed, rather than a set of booleans. (#317)
New:
- Spec compliance: Overlapping fields must have compatible response shapes (https://github.com/graphql/graphql-js/commit/c034de91acce10d5c06d03bd332c6ebd45e2213c)
- More support for the experimental schema IDL: (#325) (#323) (https://github.com/graphql/graphql-js/commit/fdafe32724f2d6dac1ba360f1a440c0e633e75d9)
Fixes:
- Spec compliance:
@skipand@includeare now commutative. (#335) (https://github.com/graphql/graphql-js/commit/47f87fa701cb33fc1fb0ca65b4668c7a14a5ad11) - Experimental schema IDL no longer allows duplicate query types. (https://github.com/graphql/graphql-js/commit/ffe76c51c44922e2a24494ef0def9e3b999caacb)
- No longer sends incorrect error messages when a response name is not provided (#319)
- Visitor now correctly encounters both
enterandleavewhen editing the root node in an AST (#298) - Visitor helpers are now directly exported (https://github.com/graphql/graphql-js/commit/5ea2ff1e17ff76ad0734c5ebd3041d0bd2b201e5)
New:
- Adds validator to ensure variable names are unique (#296)
Fixes:
- Fix a case where the AST printer could erroneously exclude information from anonymous operations (#289)
New:
- Utilities for comparing GraphQL types are now exported directly. (aff18e63c8befe9a380d75d82c80411921fe77cb)
Fixes:
- No longer parses documents which contain
u2028oru2029characters, to comply with the spec. This is technically breaking, but these are so rare that I doubt anyone will encounter this.
New:
- The full GraphQL API is now exported from the top module. If you're building a tool that uses GraphQL.js, hopefully this makes it easier to import and use utilities in this library. (4547904dda4e430f1eda52dd3e2b7e150049a93b)
- Clearer error messages:
- When a requested field cannot be found on an interface or union, we'll suggest an inline fragment. (#282)
- When a variable isn't used, we'll include the name of the query that defined it.
- When a field typed as
Listreturns something that is not a list, the error will include the name of the type and field. (#276) - When an input type includes unknown information, ensure it's name is printed. (#261)
New:
- Original errors can now be retrieved from any GraphQLError with
error.originalError#251. visitWithTypeInfonow supports visitors which edit or break-early.visitInParallelnow experimentally supports visitors which edit or break-early.
Fixes:
- No longer allows 52-bit integers, instead requiring 32-bit values as per the spec.
- No more false-positive validation errors when validating a query which contains experimental type definitions #255.
visitInParallelnow correctly skips subtrees when a visitor returns false #254.- Release now uses babel-runtime again, broken in 0.4.13, #246.
New:
import { extendSchema } from 'graphql/utilitiesallows extending an existing schema with the GraphQL type definition language (#227)- When an Object type implements an Interface type, a field on the Object type can return a more specific type than the same field defined on the Interface type. This "covariant return types" is now also defined in the GraphQL Spec (#239)
- Loosens the rule which requires overlapping fields to be unambiguously merged in the case that two same-named fields are statically known to not overlap due to being conditional to different types. This rule change has also been reflected in the GraphQL Spec (#229)
- Removes the rule which requires overlapping fields to have equivalent directives. This rule change has also been reflected in the GraphQL Spec (#230)
- Validation now ~25-30x faster due to a number of improvements including simplifications, algorithm improvements, memoization, and running validation rules in parallel.
- Parallelizing rules will change the order in which validation errors are reported within a file.
Fixes:
- Fixes issues when used in a Babel 6 environment (#228)
- Validation error of incorrect variable placement now includes a reference to the variable definition for easier debugging.
- Validation errors of ambiguous overlapping fields now includes clearer non-interleaved references to the overlapping fields.
- Input object validation errors now include more accurate error messages documenting which input object field contains the error (#204)
New:
- Experimental customizable validation
Fixes:
- Validator could false positive and be overly verbose when spreading an unknown fragment (8c62789fd156761ca83992fb8d2192d41d768d13)
New:
buildClientSchema()now supports deprecated fields #216- Custom directives now supported by GraphQLSchema #215
concatAST()utility added, which helps support validation of graphql fragments spread across multiple sources (3a6b4d130f225c275cba3027245ffaff0f4b7799)
Fixes:
- Nested input objects with similarly named keys could falsely fail validation #206
New
- Broadened legal use of interfaces to allow for additional arguments on implementing fields (see https://github.com/facebook/graphql/pull/110)
New:
- Supports
subscriptionin the IDL grammar and Schema representation. There is minimal support for subscriptions in the executor - at this point should still be considered experimental.
Fixes:
- Validators are aware of inline fragments without type conditions (a0bf6f9bb1155a502649c8de743b4e35841b08b0)
Follows GraphQL October
New:
- Operations without names are accepted
- Inline fragments without type conditions are accepted
Fixes:
- Properly export getOperationAST utility from
graphql/utilities
New:
- Resolvers can now return a JavaScript
Errorobject to indicate resolution failure. They can also return Arrays where only certain indices containErrorobjects. (#178) - Unicode support clarified and restricted (#186)
getOperationAST()utility added (f66ddf55f93010f7e2ca4ca717d522d4d0d4b12b)- Early error if deprecation API is misused. (#185)
- Clearer lex errors when encountering a non-printable character (#183)
Fixes:
- Built-in Scalars and Introspection types now have descriptions
- Input object duplicate values now parse correctly and are reported as validation errors (#184)
Fixes
- Syntax errors related to parsing of 'extend type' declaration #166
New:
- [Experimental] GraphQL parser/visitor now supports experimental type definition language.
- [Experimental] GraphQL parser now accepts
subscriptionas an operation kind keyword.
Fixes:
- Type definition will no longer allow the use of invalid
Namefor type, field, and argument names. #145 - Improved error messages for syntax errors relating to numbers.
- No longer modify field definition objects provided to type definitions. #132
- Sundry minor documentation, typo and test improvements.
Fixes:
- Improves error messaging for Syntax errors.
New/Breaking:
- Asserts that the GraphQLSchema and GraphQLType types are properly
constructed, following the "validation" rules defined in the GraphQL Spec
- Asserts that Objects which claim to implement an Interface actually do.
- Schema asserts that all included types have unique names.
- Clearer error messages when incorrect type used in GraphQLType constructors, including List and NonNull type constructors.
- Asserts that Scalar definitions include serialization functions.
- Removal of the
graphql/type/validationsubmodule.
- Asserts that the runtime Object type result of an Interface or Union typed field is a type is a possible type of that Interface or Union.
- EnumType.getValues() now returns an Array.
Fixes:
- Correctly parse Enum values from variables. #123
Breaking/New:
isTypeOfis now called (if defined) to assert that GraphQL object types are executing against the correct values #38- Field
resolvefunctions now have a new API:resolve(value, args, info), whereinfois an object which contains the same information which used to be separate arguments, and includes more useful stuff! https://github.com/graphql/graphql-js/blob/master/src/type/definition.js#L359 graphql()no longer formats its errors.result.errorsis now a list ofGraphQLErrorinstances, which provides useful information including stack traces.- Arguments and Input Object Fields not provided are not set on the internal JS objects. The previous behavior was to set
nullfor these arguments and fields. - Scalar definition
coerceandcoerceLiteralhave been renamed toserializeandparseLiteralrespectively. - Scalar definitions may now define
parseValuewhich is used when interpreting variable values of that type. Previouslycoercewas being reused for this purpose.
Fixed:
- Nested input objects are no longer excluded by introspection.
- Fix issue where a fragment spread with missing definition breaks the validator.
New:
- Adds all validation rules for uniqueness recently added to the GraphQL spec.
Fixed:
- formatError is exported directly from
graphql. - One validation error no longer causes spurious failures of other validations.
- Directive arguments no longer incorrectly invalidate.
- Validation errors have slightly improved messages.
Fixes:
- Fix issue with buildASTSchema when floats are used. (#104)
- Fix issue with buildASTSchema when invalid mutation is passed.
- Fix issue with buildASTSchema when type is only referenced via interface.
Fixes:
- Update
print-schemascript to work with refactored schema module. - Fix issue with buildASTSchema when both query and mutation are passed. (#100)
Fixes:
- Ensure graphql-js doesn't rely on ES6 prototype methods (#99)
Fixes:
- Fix case reported by @steveluscher where overlapping fragments could incorrectly invalidate.
Fixes:
- Removes flow comments from npm published JS. Unfortunately the flow-comment transpiler is too buggy at this point in time.
New:
- Flow types are included in the npm release in the form of flow-comments. Flow will find and utilize these when you install graphql-js via npm, and if you don't use flow then it's business as usual.
- GraphQL Type predicates for common groupings are now exported from
graphql/type. - A new submodule
graphql/language/schemafor parsing and working with the GraphQL schema language. - The submodule
graphql/utilitieswas included which adds a lot of useful functions for building client tools.- A definitive full introspection query.
- Build a client-side GraphQLSchema instance from an introspection result.
- Build a client-side GraphQLSchema from GraphQL Schema language.
- Print a GraphQLSchema to GraphQL Schema language.
- Create a GraphQLType instance from GraphQL Schema language.
- Create a JavaScript value from a GraphQL language value.
- Create a GraphQL language value from a JavaScript value.
- A smart visitor which maintains type information as it visits the GraphQL document AST.
- Utilities to determine if a JavaScript value or GraphQL language value adhere to a GraphQL type.
- Minor re-organization of
submodules.
No changes
New:
-
GraphQL submodules are now directly accessible as public API.
import { ... } from 'graphql/language';