Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Project Management Automation: Add TypeScript type-checking #20850

Merged
merged 2 commits into from
Mar 19, 2020

Conversation

aduth
Copy link
Member

@aduth aduth commented Mar 12, 2020

Part of: #18838

This pull request seeks to enable type-checking for the Project Management Automation package, and improves existing types. GitHub's core modules provide types by default, which we can use to verify types of the implementation of our automation tasks.

Testing Instructions:

Ensure type-checking passes:

npm run lint-types

cc @sirreal

@aduth aduth added [Type] Code Quality Issues or PRs that relate to code quality [Package] Project management automation /packages/project-management-automation labels Mar 12, 2020
@aduth aduth requested a review from noisysocks March 12, 2020 21:29
@github-actions
Copy link

github-actions bot commented Mar 12, 2020

Size Change: +1.62 kB (0%)

Total Size: 857 kB

Filename Size Change
build/a11y/index.js 998 B -8 B (0%)
build/annotations/index.js 3.43 kB +1 B
build/autop/index.js 2.58 kB -1 B
build/block-directory/index.js 6.02 kB -3 B (0%)
build/block-editor/index.js 100 kB -22 B (0%)
build/block-editor/style-rtl.css 10.9 kB +233 B (2%)
build/block-editor/style.css 10.9 kB +228 B (2%)
build/block-library/editor-rtl.css 7.21 kB -26 B (0%)
build/block-library/editor.css 7.21 kB -26 B (0%)
build/block-library/index.js 111 kB +229 B (0%)
build/block-library/style-rtl.css 7.42 kB +40 B (0%)
build/block-library/style.css 7.43 kB +40 B (0%)
build/blocks/index.js 57.5 kB -147 B (0%)
build/components/index.js 191 kB -362 B (0%)
build/components/style-rtl.css 15.7 kB +223 B (1%)
build/components/style.css 15.7 kB +225 B (1%)
build/compose/index.js 6.21 kB +451 B (7%) 🔍
build/core-data/index.js 10.6 kB +24 B (0%)
build/data-controls/index.js 1.04 kB +1 B
build/data/index.js 8.2 kB -13 B (0%)
build/deprecated/index.js 771 B -1 B
build/dom/index.js 3.06 kB -7 B (0%)
build/edit-post/index.js 91.2 kB -127 B (0%)
build/edit-post/style-rtl.css 8.47 kB -177 B (2%)
build/edit-post/style.css 8.46 kB -181 B (2%)
build/edit-site/index.js 5.56 kB +920 B (16%) ⚠️
build/edit-site/style-rtl.css 2.62 kB +142 B (5%) 🔍
build/edit-site/style.css 2.62 kB +142 B (5%) 🔍
build/edit-widgets/index.js 4.43 kB -13 B (0%)
build/editor/index.js 43.8 kB -3 B (0%)
build/editor/style-rtl.css 3.97 kB -1 B
build/editor/style.css 3.96 kB -2 B (0%)
build/element/index.js 4.44 kB -8 B (0%)
build/format-library/index.js 6.95 kB -142 B (2%)
build/hooks/index.js 1.93 kB +6 B (0%)
build/i18n/index.js 3.49 kB +1 B
build/is-shallow-equal/index.js 711 B +1 B
build/keyboard-shortcuts/index.js 2.3 kB -2 B (0%)
build/keycodes/index.js 1.69 kB +3 B (0%)
build/list-reusable-blocks/index.js 2.99 kB -1 B
build/media-utils/index.js 4.83 kB -11 B (0%)
build/notices/index.js 1.58 kB +4 B (0%)
build/nux/index.js 3.01 kB +1 B
build/plugins/index.js 2.54 kB -4 B (0%)
build/primitives/index.js 1.5 kB +8 B (0%)
build/priority-queue/index.js 780 B +1 B
build/redux-routine/index.js 2.83 kB -5 B (0%)
build/rich-text/index.js 14.3 kB -7 B (0%)
build/url/index.js 4.01 kB +2 B (0%)
build/viewport/index.js 1.61 kB -5 B (0%)
build/warning/index.js 1.14 kB -1 B
ℹ️ View Unchanged
Filename Size Change
build/api-fetch/index.js 3.39 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/style-rtl.css 760 B 0 B
build/block-directory/style.css 760 B 0 B
build/block-library/theme-rtl.css 669 B 0 B
build/block-library/theme.css 671 B 0 B
build/block-serialization-default-parser/index.js 1.65 kB 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/date/index.js 5.37 kB 0 B
build/dom-ready/index.js 568 B 0 B
build/edit-widgets/style-rtl.css 2.58 kB 0 B
build/edit-widgets/style.css 2.58 kB 0 B
build/editor/editor-styles-rtl.css 381 B 0 B
build/editor/editor-styles.css 382 B 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/style-rtl.css 502 B 0 B
build/format-library/style.css 502 B 0 B
build/html-entities/index.js 621 B 0 B
build/list-reusable-blocks/style-rtl.css 226 B 0 B
build/list-reusable-blocks/style.css 226 B 0 B
build/nux/style-rtl.css 616 B 0 B
build/nux/style.css 613 B 0 B
build/server-side-render/index.js 2.55 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.27 kB 0 B
build/wordcount/index.js 1.18 kB 0 B

compressed-size-action

@@ -77,6 +77,7 @@
"@babel/runtime-corejs3": "7.8.3",
"@babel/traverse": "7.8.3",
"@octokit/rest": "16.26.0",
"@octokit/webhooks": "7.1.0",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Out of curiosity, do we include this dev dependency only for type checking?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, that's right.

Related to this guideline:

For packages which do not distribute their own TypeScript types, you are welcomed to install and use the DefinitelyTyped community-maintained types definitions, if one exists.

https://github.com/WordPress/gutenberg/blob/master/docs/contributors/coding-guidelines.md#external-dependencies-1

Though in this case, it's a bit awkward in that it's neither from DefinitelyTyped, nor actually the type of the packages we are using (@octokit/rest, @actions/github) or a dependent of those.

The reason for this is that the actual correct typings are neither very useful nor accurate:

https://github.com/actions/toolkit/blob/12f3011/packages/github/src/interfaces.ts#L15-L39

See also: actions/toolkit#147

It's still a bit questionable whether we should do this, since technically there's not a strong guarantee that the payload matches the type from @octokit/webhooks, aside from the fact that they both purport to represent the structure of a webhook payload.

Copy link
Member

@gziolo gziolo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work here. This PR and your article https://andrewduthie.com/2020/03/15/typescript-types-for-productivity/, they made me think that we should add type definitions to all existing developer-oriented packages.

@gziolo gziolo merged commit 6073f0c into master Mar 19, 2020
@github-actions github-actions bot added this to the Gutenberg 7.8 milestone Mar 19, 2020
@sirreal
Copy link
Member

sirreal commented Mar 19, 2020

[…] made me think that we should add type definitions to all existing developer-oriented packages.

#18942 😉

@aristath aristath deleted the add/project-management-automation-types branch November 10, 2020 14:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Package] Project management automation /packages/project-management-automation [Type] Code Quality Issues or PRs that relate to code quality
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants