Closed
Description
Goals
- Convert source code to idiomatic TypeScript
- Remove Flow-specific workarounds and pre-ES6 JS artifacts
- Support Deno
- Support ESM
- Switch
master
tomain
.
Planned breaking changes
- Legacy SDL syntax (deprecated 2year ago) and other deprecated APIs and flags
- Drop native IE support by removing built-in polyfills and switching the output to ES6. It would be still possible to support IE with
core-js
+babel
. - Drop TS before 3.7 since we need to support recursive types.
- Maybe we will have some unexpected breaking changes to TS types due to migration
Post 16.0.0 goals
- Convert test suite to Jest
- Experiment with TS types to provide better typings for resolvers
P.S. We need to target 04/31/2021
for 17.0.0
release at that point we need to do a breaking release anyway to drop Node v10.
Steps
- 1. Branch out
15.x.x
release line and release15.5.0
(Jan 8th) - 2. Switch
master
tomain
and update scripts & CI - 3. Move commits from https://github.com/graphql/graphql-js/tree/16.x.x to
main
- 4. Remove last few polyfills
- 4. Release
16.0.0-alpha.1
with all expected breaking changes but still from Flow sources (Jan 12th) - 5. Rebase Convert flow types to TS #2828 and merge it (no squash, keep separate commits) (
Jan 15th) - 6. Fix tests, CI, and release scripts but disable
tsc
and TS-specific ESLint checks (Jan 18th) - 7. Mark
tsc
errors with@ts-ignore
and fix them in separate PRs by volunteers - 8. Enable TS-specific ESLint rules in separate PRs by volunteers
- 9. Release new
16.0.0-alpha.3
and gather feedback (finish until Feb WG) - 10. Work on ESM and Deno support in parallel
- 11. Release
16.0.0-rc.1
and gather feedback - 12. Generate basic docs with
tsdoc
- 13. Release
16.0.0
🎉 - 14. Wait couple weeks and gather feedback.
- 15. Switch main to the
17.0.0-alpha.0
branch and have a setup that will automatically release package after every merge. - 16. Start accepting breaking/experimental PRs for
17.0.0
.
How I can help?
- Review Convert flow types to TS #2828 with basic TS conversion. It's split into multiple commits that are easy to review: https://github.com/graphql/graphql-js/pull/2828/commits
- Wait for Convert flow types to TS #2828 to be merged and help with latter steps.
Metadata
Metadata
Assignees
Labels
No labels