{"id":13406003,"url":"https://github.com/JoshuaKGoldberg/TypeStat","last_synced_at":"2025-03-14T10:32:16.819Z","repository":{"id":39701911,"uuid":"158038584","full_name":"JoshuaKGoldberg/TypeStat","owner":"JoshuaKGoldberg","description":"Converts JavaScript to TypeScript and TypeScript to better TypeScript. 🧫","archived":false,"fork":false,"pushed_at":"2024-10-29T09:17:23.000Z","size":6946,"stargazers_count":2068,"open_issues_count":89,"forks_count":39,"subscribers_count":15,"default_branch":"main","last_synced_at":"2024-10-29T11:02:47.798Z","etag":null,"topics":["conversion","javascript","mutations","static-analysis","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JoshuaKGoldberg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-11-18T01:03:55.000Z","updated_at":"2024-10-29T09:12:57.000Z","dependencies_parsed_at":"2023-09-28T21:31:43.228Z","dependency_job_id":"21bde6f7-8849-4800-a083-bc16a6576bff","html_url":"https://github.com/JoshuaKGoldberg/TypeStat","commit_stats":{"total_commits":1649,"total_committers":18,"mean_commits":91.61111111111111,"dds":0.5524560339599758,"last_synced_commit":"f2889b2e93cc00d834ae7041c2d1c0b3b28308f2"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoshuaKGoldberg%2FTypeStat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoshuaKGoldberg%2FTypeStat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoshuaKGoldberg%2FTypeStat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoshuaKGoldberg%2FTypeStat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JoshuaKGoldberg","download_url":"https://codeload.github.com/JoshuaKGoldberg/TypeStat/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243039663,"owners_count":20226132,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["conversion","javascript","mutations","static-analysis","typescript"],"created_at":"2024-07-30T19:02:18.324Z","updated_at":"2025-03-14T10:32:16.808Z","avatar_url":"https://github.com/JoshuaKGoldberg.png","language":"TypeScript","readme":"\u003ch1 align=\"center\"\u003eTypeStat\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003eConverts JavaScript to TypeScript and TypeScript to better TypeScript. 🧫\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\t\u003c!-- prettier-ignore-start --\u003e\n\t\u003c!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --\u003e\n\t\u003ca href=\"#contributors\" target=\"_blank\"\u003e\u003cimg alt=\"👪 All Contributors: 14\" src=\"https://img.shields.io/badge/%F0%9F%91%AA_all_contributors-14-21bb42.svg\" /\u003e\u003c/a\u003e\n\u003c!-- ALL-CONTRIBUTORS-BADGE:END --\u003e\n\t\u003c!-- prettier-ignore-end --\u003e\n\t\u003ca href=\"https://github.com/JoshuaKGoldberg/TypeStat/blob/main/.github/CODE_OF_CONDUCT.md\" target=\"_blank\"\u003e\u003cimg alt=\"🤝 Code of Conduct: Kept\" src=\"https://img.shields.io/badge/%F0%9F%A4%9D_code_of_conduct-kept-21bb42\" /\u003e\u003c/a\u003e\n\t\u003ca href=\"https://codecov.io/gh/JoshuaKGoldberg/TypeStat\" target=\"_blank\"\u003e\u003cimg alt=\"🧪 Coverage\" src=\"https://img.shields.io/codecov/c/github/JoshuaKGoldberg/TypeStat?label=%F0%9F%A7%AA%20coverage\" /\u003e\u003c/a\u003e\n\t\u003ca href=\"https://github.com/JoshuaKGoldberg/TypeStat/blob/main/LICENSE.md\" target=\"_blank\"\u003e\u003cimg alt=\"📝 License: MIT\" src=\"https://img.shields.io/badge/%F0%9F%93%9D_license-MIT-21bb42.svg\"\u003e\u003c/a\u003e\n\t\u003ca href=\"http://npmjs.com/package/typestat\"\u003e\u003cimg alt=\"📦 npm version\" src=\"https://img.shields.io/npm/v/typestat?color=21bb42\u0026label=%F0%9F%93%A6%20npm\" /\u003e\u003c/a\u003e\n\t\u003cimg alt=\"💪 TypeScript: Strict\" src=\"https://img.shields.io/badge/%F0%9F%92%AA_typescript-strict-21bb42.svg\" /\u003e\n\u003c/p\u003e\n\n## Usage\n\nTypeStat is a CLI utility that modifies TypeScript types in existing code.\nThe built-in mutators will only ever add or remove types and will never change your runtime behavior.\nTypeStat can:\n\n\u003cul style=\"list-style-type:none;padding-left:1rem;\"\u003e\n    \u003cli\u003e✨ Convert JavaScript files to TypeScript in a single bound!\u003c/li\u003e\n    \u003cli\u003e✨ Add TypeScript types on files freshly converted from JavaScript to TypeScript!\u003c/li\u003e\n    \u003cli\u003e✨ Infer types to fix \u003ccode\u003e--noImplicitAny\u003c/code\u003e and \u003ccode\u003e--noImplicitThis\u003c/code\u003e violations!\u003c/li\u003e\n    \u003cli\u003e✨ Annotate missing \u003ccode\u003enull\u003c/code\u003es and \u003ccode\u003eundefined\u003c/code\u003es to get you started with \u003ccode\u003e--strictNullChecks\u003c/code\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\n⚡ To start, the `typestat` command will launch an interactive guide to setting up a configuration file. ⚡\n\n```shell\nnpx typestat\n```\n\n\u003e ```shell\n\u003e 👋 Welcome to TypeStat! 👋\n\u003e This will create a new typestat.json for you.\n\u003e ...\n\u003e ```\n\nAfter, use **`typestat --config typestat.json`** to convert your files.\n\n### Configuration\n\nTo get a deeper understanding of TypeStat, read the following docs pages in order:\n\n1. **[Usage.md](./docs/Usage.md)** for an explanation of how TypeStat works\n2. **[Fixes.md](./docs/Fixes.md)** for the type of fixes TypeStat will generate mutations for\n3. **[Cleanups.md](./docs/Cleanups.md)** for the post-fix cleaning TypeStat may apply to files\n4. **[Types.md](./docs/Types.md)** for configuring how to work with types in mutations\n5. **[Filters.md](./docs/Filters.md)** for using [tsquery](https://github.com/phenomnomnominal/tsquery) to ignore sections of source files\n6. **[Custom Mutators.md](./docs/Custom%20Mutators.md)** for including or creating custom mutators\n\n## Development\n\nSee [`.github/CONTRIBUTING.md`](./.github/CONTRIBUTING.md), then [`.github/DEVELOPMENT.md`](./.github/DEVELOPMENT.md) for general tooling documentation.\nFor understanding the project, see `./docs` in general, and especially [`./docs/Architecture.md`](./docs/Architecture.md).\nThanks! 💖\n\n## Contributors\n\n\u003c!-- spellchecker: disable --\u003e\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://sourcegraph.com/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1646931?v=4?s=100\" width=\"100px;\" alt=\"Beyang Liu\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBeyang Liu\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/JoshuaKGoldberg/TypeStat/commits?author=beyang\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://danstiner.me/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/52513?v=4?s=100\" width=\"100px;\" alt=\"Daniel Stiner\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDaniel Stiner\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/JoshuaKGoldberg/TypeStat/issues?q=author%3Adanstiner\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/ghost\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/10137?v=4?s=100\" width=\"100px;\" alt=\"Deleted user\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDeleted user\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#maintenance-ghost\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/emday4prez\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/35363144?v=4?s=100\" width=\"100px;\" alt=\"Emerson\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eEmerson\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/JoshuaKGoldberg/TypeStat/commits?author=emday4prez\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://girish.netlify.app/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/61848210?v=4?s=100\" width=\"100px;\" alt=\"Girish Sontakke\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eGirish Sontakke\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/JoshuaKGoldberg/TypeStat/commits?author=girishsontakke\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://maps.guten.me/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/377544?v=4?s=100\" width=\"100px;\" alt=\"Guten\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eGuten\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/JoshuaKGoldberg/TypeStat/issues?q=author%3Agutenye\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://stackoverflow.com/users/5494094/ibrahim-h\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1217741?v=4?s=100\" width=\"100px;\" alt=\"Ibrahim H.\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eIbrahim H.\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/JoshuaKGoldberg/TypeStat/commits?author=bitsnaps\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://www.joshuakgoldberg.com/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/3335181?v=4?s=100\" width=\"100px;\" alt=\"Josh Goldberg ✨\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJosh Goldberg ✨\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#maintenance-JoshuaKGoldberg\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e \u003ca href=\"https://github.com/JoshuaKGoldberg/TypeStat/issues?q=author%3AJoshuaKGoldberg\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"#tool-JoshuaKGoldberg\" title=\"Tools\"\u003e🔧\u003c/a\u003e \u003ca href=\"https://github.com/JoshuaKGoldberg/TypeStat/commits?author=JoshuaKGoldberg\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#infra-JoshuaKGoldberg\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e \u003ca href=\"https://github.com/JoshuaKGoldberg/TypeStat/commits?author=JoshuaKGoldberg\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/LorenVS\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/528200?v=4?s=100\" width=\"100px;\" alt=\"Loren Van Spronsen\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eLoren Van Spronsen\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/JoshuaKGoldberg/TypeStat/commits?author=lorenvs\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://www.linkedin.com/in/markjm-1/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/16494982?v=4?s=100\" width=\"100px;\" alt=\"Mark Molinaro\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMark Molinaro\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/JoshuaKGoldberg/TypeStat/issues?q=author%3Amarkjm\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/JoshuaKGoldberg/TypeStat/commits?author=markjm\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://cress.soc.surrey.ac.uk/web/people/ngilbert\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1449986?v=4?s=100\" width=\"100px;\" alt=\"Nigel Gilbert\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eNigel Gilbert\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/JoshuaKGoldberg/TypeStat/issues?q=author%3Amicrology\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://community.haskell.org/~pj\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/2082449?v=4?s=100\" width=\"100px;\" alt=\"Peter A. Jonsson\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ePeter A. Jonsson\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/JoshuaKGoldberg/TypeStat/issues?q=author%3Apjonsson\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/JoshuaKGoldberg/TypeStat/commits?author=pjonsson\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://orionna.me/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/85230052?v=4?s=100\" width=\"100px;\" alt=\"orionna319\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eorionna319\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/JoshuaKGoldberg/TypeStat/issues?q=author%3Aorionna319\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/rubiesonthesky\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/2591240?v=4?s=100\" width=\"100px;\" alt=\"rubiesonthesky\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003erubiesonthesky\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/JoshuaKGoldberg/TypeStat/issues?q=author%3Arubiesonthesky\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"#maintenance-rubiesonthesky\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e \u003ca href=\"#tool-rubiesonthesky\" title=\"Tools\"\u003e🔧\u003c/a\u003e \u003ca href=\"https://github.com/JoshuaKGoldberg/TypeStat/commits?author=rubiesonthesky\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/JoshuaKGoldberg/TypeStat/commits?author=rubiesonthesky\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\u003c!-- spellchecker: enable --\u003e\n\n\u003e 💙 This package is based on [@JoshuaKGoldberg](https://github.com/JoshuaKGoldberg)'s [TypeStat](https://github.com/JoshuaKGoldberg/TypeStat).\n","funding_links":[],"categories":["TypeScript","typescript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJoshuaKGoldberg%2FTypeStat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FJoshuaKGoldberg%2FTypeStat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJoshuaKGoldberg%2FTypeStat/lists"}