René's URL Explorer Experiment


Title: Respect package.json `"type"` and module-format-specific file extensions in more `module` modes by andrewbranch · Pull Request #57896 · microsoft/TypeScript · GitHub

Open Graph Title: Respect package.json `"type"` and module-format-specific file extensions in more `module` modes by andrewbranch · Pull Request #57896 · microsoft/TypeScript

X Title: Respect package.json `"type"` and module-format-specific file extensions in more `module` modes by andrewbranch · Pull Request #57896 · microsoft/TypeScript

Description: Fixes #54752 Fixes #50647 Closes #54788 Related #55221 Prerequisite for #54102 Suggest reviewing individual commits: 96bffce: source changes 09330b8: tests showing new behavior c89137d: noise due to always looking up package.json 11e5727: noise due to the same, plus impliedNodeFormat always existing in buildinfo f9f46fd: less noisy changes to existing test behavior, worth reviewing This PR allows us to use module-format-specific file extensions and package.json "type" fields in all module modes—not just in node16/nodenext as today—but the way we use them can vary by module/moduleResolution mode. This has two noticeable effects: Emit respects file extension / package.json "type" more often. When module is es2015–esnext, we will now treat .cts/.cjs files, as well as .ts/.js files when the nearest package.json has "type": "commonjs", as CommonJS and emit CommonJS outputs accordingly. Note that unlike in --module nodenext, a lack of package.json "type" does not cause .ts/.js files to be treated as CommonJS. We only override the default behavior of the module setting when "type" is explicitly set to "commonjs", or when the file extension is .cts/.cjs. When module is commonjs, we will now treat .mts/.mjs files, as well as .ts/.js files when the nearest package.json has "type": "module", as ESM and output ESM outputs accordingly. When module is preserve, ESM import/export declarations are now forbidden in .cts/.cjs files, as well as in .ts/.js files when the nearest package.json has "type": "commonjs". We want to ensure that --module preserve means the module syntax you write gets emitted without significant transformation, but we also want to prevent ESM syntax from being used in unambiguously CommonJS files, so this situation acts much like verbatimModuleSyntax is enabled. Unambiguously ESM-mode declaration files do not get synthesized default exports This is #54752. Now that we always collect information about the package.json "type" and file extension, we gain the ability to notice when a declaration file, likely in a node_modules dependency, must represent an ESM JavaScript file, which changes how a default import targeting that file works. Previously, under all module modes except node16/nodenext, this was allowed: // @Filename: node_modules/esm-dep/foo.d.mts export declare const x: any; // @Filename: index.ts import esm from "esm-dep/foo.mjs"; esm.x; Since foo.d.mts has an unambiguously-ESM file extension, we should not allow a default import from a module that doesn’t declare a default export. However, it was allowed because we believed that foo.d.mts might actually represent a CommonJS module with a module.exports.x property, in which case a default import should be allowed and would link to the module.exports object. With this PR, when a declaration file has an ESM file extension or exists in a "type": "module" context, we use that to prevent us from letting a default import happen where it shouldn’t. This work also unlocks a fix for #54102. Webpack and esbuild use module-format-specific file extensions and package.json "type" to vary their ESM/CJS interop rules, so if we want to provide correct types for projects using those bundlers, we will need to be able to leverage that module format info under --module esnext or --module preserve. There is one test failing that represents an pre-existing bug that was not exposed until now because the test did not previously look up package.json files, and a particular sequence of edits causes a failure in combination with that. It has been isolated to a failure that doesn’t rely on this PR’s changes in #57757 so it can be investigated separately.

Open Graph Description: Fixes #54752 Fixes #50647 Closes #54788 Related #55221 Prerequisite for #54102 Suggest reviewing individual commits: 96bffce: source changes 09330b8: tests showing new behavior c89137d: noise due ...

X Description: Fixes #54752 Fixes #50647 Closes #54788 Related #55221 Prerequisite for #54102 Suggest reviewing individual commits: 96bffce: source changes 09330b8: tests showing new behavior c89137d: noise due ...

Opengraph URL: https://github.com/microsoft/TypeScript/pull/57896

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:00612a97-61cb-b357-a3e8-54a8c2824698
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idE3E6:7A74F:5A7A273:7CF7C21:6A5E5A84
html-safe-nonce49f982a497f5c1727ee9ab7e831983c430e88c0124cdf47d6d4c32b94d98b348
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFM0U2OjdBNzRGOjVBN0EyNzM6N0NGN0MyMTo2QTVFNUE4NCIsInZpc2l0b3JfaWQiOiI1ODAxNjYwMzE5MzUwNTQ1MDI4IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0=
visitor-hmac52c7148ce2d8fa4326425e53cb6e1e419385c8b8c309f73f6c0b3484ceb2401b
hovercard-subject-tagpull_request:1785509645
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/microsoft/TypeScript/pull/57896/files
twitter:imagehttps://avatars.githubusercontent.com/u/3277153?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/3277153?s=400&v=4
og:image:altFixes #54752 Fixes #50647 Closes #54788 Related #55221 Prerequisite for #54102 Suggest reviewing individual commits: 96bffce: source changes 09330b8: tests showing new behavior c89137d: noise due ...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None4c92a536c69af79290536ba65c054743bf2747e6bf7150d78fe0e566af9ac459
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/microsoft/TypeScript git https://github.com/microsoft/TypeScript.git
octolytics-dimension-user_id6154722
octolytics-dimension-user_loginmicrosoft
octolytics-dimension-repository_id20929025
octolytics-dimension-repository_nwomicrosoft/TypeScript
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id20929025
octolytics-dimension-repository_network_root_nwomicrosoft/TypeScript
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
releaseb8eaa813b53afacb4b93991504272e5396731873
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/microsoft/TypeScript/pull/57896/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fmicrosoft%2FTypeScript%2Fpull%2F57896%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
Code QualityEnforce quality at mergehttps://github.com/features/code-quality
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/open-source/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/open-source/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fmicrosoft%2FTypeScript%2Fpull%2F57896%2Ffiles
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=microsoft%2FTypeScript
Reloadhttps://github.com/microsoft/TypeScript/pull/57896/files
Reloadhttps://github.com/microsoft/TypeScript/pull/57896/files
Reloadhttps://github.com/microsoft/TypeScript/pull/57896/files
Please reload this pagehttps://github.com/microsoft/TypeScript/pull/57896/files
microsoft https://github.com/microsoft
TypeScripthttps://github.com/microsoft/TypeScript
Notifications https://github.com/login?return_to=%2Fmicrosoft%2FTypeScript
Fork 13.6k https://github.com/login?return_to=%2Fmicrosoft%2FTypeScript
Star 110k https://github.com/login?return_to=%2Fmicrosoft%2FTypeScript
Code https://github.com/microsoft/TypeScript
Issues 5k+ https://github.com/microsoft/TypeScript/issues
Pull requests 29 https://github.com/microsoft/TypeScript/pulls
Actions https://github.com/microsoft/TypeScript/actions
Projects https://github.com/microsoft/TypeScript/projects
Models https://github.com/microsoft/TypeScript/models
Wiki https://github.com/microsoft/TypeScript/wiki
Security and quality 0 https://github.com/microsoft/TypeScript/security
Insights https://github.com/microsoft/TypeScript/pulse
Code https://github.com/microsoft/TypeScript
Issues https://github.com/microsoft/TypeScript/issues
Pull requests https://github.com/microsoft/TypeScript/pulls
Actions https://github.com/microsoft/TypeScript/actions
Projects https://github.com/microsoft/TypeScript/projects
Models https://github.com/microsoft/TypeScript/models
Wiki https://github.com/microsoft/TypeScript/wiki
Security and quality https://github.com/microsoft/TypeScript/security
Insights https://github.com/microsoft/TypeScript/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fmicrosoft%2FTypeScript%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fmicrosoft%2FTypeScript%2Fissues%2Fnew%2Fchoose
andrewbranchhttps://github.com/andrewbranch
microsoft:mainhttps://github.com/microsoft/TypeScript/tree/main
andrewbranch:always-set-implied-node-formathttps://github.com/andrewbranch/TypeScript/tree/always-set-implied-node-format
Conversation 31 https://github.com/microsoft/TypeScript/pull/57896
Commits 16 https://github.com/microsoft/TypeScript/pull/57896/commits
Checks 0 https://github.com/microsoft/TypeScript/pull/57896/checks
Files changed https://github.com/microsoft/TypeScript/pull/57896/files
Please reload this pagehttps://github.com/microsoft/TypeScript/pull/57896/files
Respect package.json "type" and module-format-specific file extensions in more module modes https://github.com/microsoft/TypeScript/pull/57896/files#top
Show all changes 16 commits https://github.com/microsoft/TypeScript/pull/57896/files
96bffce Always set impliedNodeFormat; query it conditionally for emit, module… andrewbranch Mar 21, 2024 https://github.com/microsoft/TypeScript/pull/57896/commits/96bffce005c4f7c293e8d36878b19221f4f5a0ef
09330b8 Add new tests andrewbranch Mar 21, 2024 https://github.com/microsoft/TypeScript/pull/57896/commits/09330b8d4c663035a1a5ceb350f4dc7a43548b43
c89137d Add traceModuleResolution baseline changes andrewbranch Mar 21, 2024 https://github.com/microsoft/TypeScript/pull/57896/commits/c89137d45d4d1d3afa3da240e178b65d08efe595
11e5727 Update unit test baselines andrewbranch Mar 21, 2024 https://github.com/microsoft/TypeScript/pull/57896/commits/11e57279fcce0313d1ed4b18a30c4fa2330c34ef
f9f46fd Update existing tests andrewbranch Mar 21, 2024 https://github.com/microsoft/TypeScript/pull/57896/commits/f9f46fdbdda67978bde8683d8453ebd765754969
2e99a7b Merge branch 'main' into always-set-implied-node-format andrewbranch Mar 27, 2024 https://github.com/microsoft/TypeScript/pull/57896/commits/2e99a7bf75e45390625b5717253c5a3bceca5253
c8d8a5f Rename function andrewbranch Mar 27, 2024 https://github.com/microsoft/TypeScript/pull/57896/commits/c8d8a5fc1ba74556f55fe0c218ef1701f084cb78
b6d35a4 Merge branch 'main' into always-set-implied-node-format andrewbranch Apr 2, 2024 https://github.com/microsoft/TypeScript/pull/57896/commits/b6d35a41b423e544b3a904ce6f77cc31734a0481
8646d1b Add program.getCompilerOptionsForFile andrewbranch Apr 2, 2024 https://github.com/microsoft/TypeScript/pull/57896/commits/8646d1bed2b34f5cc257d8785204b54d50f0c3ef
6233b28 Add missed baseline andrewbranch Apr 2, 2024 https://github.com/microsoft/TypeScript/pull/57896/commits/6233b2887861583ee23a622df74fb91306624ac2
929670e Delete unused baselines andrewbranch Apr 2, 2024 https://github.com/microsoft/TypeScript/pull/57896/commits/929670e7fc4b87a4b31fd284ce20dc682757ee50
3e5068f Remove unused baseline andrewbranch Apr 2, 2024 https://github.com/microsoft/TypeScript/pull/57896/commits/3e5068f6d135c2756c7d0764bf67d2125bc31dc8
7791abc Move utilities to Program so they use options for file andrewbranch Apr 4, 2024 https://github.com/microsoft/TypeScript/pull/57896/commits/7791abcb03eb5f1c23d26a3f9a0b3cf9d4c4a37f
ffaa6e2 Update other use of getModeForResolutionAtIndex andrewbranch Apr 4, 2024 https://github.com/microsoft/TypeScript/pull/57896/commits/ffaa6e20876b41057c6a725f0bb9e6f1e16c3c5d
6ed363d Merge branch 'main' into always-set-implied-node-format andrewbranch Apr 10, 2024 https://github.com/microsoft/TypeScript/pull/57896/commits/6ed363d5a72e9e322fd43c4bdab730f8bfbadf95
ac9ec71 Merge branch 'main' into always-set-implied-node-format andrewbranch Apr 12, 2024 https://github.com/microsoft/TypeScript/pull/57896/commits/ac9ec719a46dc5335f22659e97327bd656fcd06c
Clear filters https://github.com/microsoft/TypeScript/pull/57896/files
Please reload this pagehttps://github.com/microsoft/TypeScript/pull/57896/files
Please reload this pagehttps://github.com/microsoft/TypeScript/pull/57896/files
src/compiler/_namespaces/ts.tshttps://github.com/microsoft/TypeScript/pull/57896/files#diff-d9481fd8ef2a498b1984b082895f0e9506e8c6ff5f7a62587ea1929d97ef6d55
View file https://github.com/andrewbranch/TypeScript/blob/ac9ec719a46dc5335f22659e97327bd656fcd06c/src/compiler/_namespaces/ts.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/microsoft/TypeScript/pull/57896/{{ revealButtonHref }}
https://github.com/microsoft/TypeScript/pull/57896/files#diff-d9481fd8ef2a498b1984b082895f0e9506e8c6ff5f7a62587ea1929d97ef6d55
https://github.com/microsoft/TypeScript/pull/57896/files#diff-d9481fd8ef2a498b1984b082895f0e9506e8c6ff5f7a62587ea1929d97ef6d55
src/compiler/checker.tshttps://github.com/microsoft/TypeScript/pull/57896/files#diff-d9ab6589e714c71e657f601cf30ff51dfc607fc98419bf72e04f6b0fa92cc4b8
View file https://github.com/andrewbranch/TypeScript/blob/ac9ec719a46dc5335f22659e97327bd656fcd06c/src/compiler/checker.ts
Open in desktop https://desktop.github.com
Please reload this pagehttps://github.com/microsoft/TypeScript/pull/57896/files
src/compiler/diagnosticMessages.jsonhttps://github.com/microsoft/TypeScript/pull/57896/files#diff-fdf3f532dc2d3188ad1c05c8c9e064d0aa4143b8ba09b8f3313a0243f0a43eff
View file https://github.com/andrewbranch/TypeScript/blob/ac9ec719a46dc5335f22659e97327bd656fcd06c/src/compiler/diagnosticMessages.json
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/microsoft/TypeScript/pull/57896/{{ revealButtonHref }}
https://github.com/microsoft/TypeScript/pull/57896/files#diff-fdf3f532dc2d3188ad1c05c8c9e064d0aa4143b8ba09b8f3313a0243f0a43eff
https://github.com/microsoft/TypeScript/pull/57896/files#diff-fdf3f532dc2d3188ad1c05c8c9e064d0aa4143b8ba09b8f3313a0243f0a43eff
src/compiler/emitter.tshttps://github.com/microsoft/TypeScript/pull/57896/files#diff-537414476d7c7a690310c5e1e5d6a0bbbfba37c5b05126edee32fdea7e3a09d8
View file https://github.com/andrewbranch/TypeScript/blob/ac9ec719a46dc5335f22659e97327bd656fcd06c/src/compiler/emitter.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/microsoft/TypeScript/pull/57896/{{ revealButtonHref }}
https://github.com/microsoft/TypeScript/pull/57896/files#diff-537414476d7c7a690310c5e1e5d6a0bbbfba37c5b05126edee32fdea7e3a09d8
https://github.com/microsoft/TypeScript/pull/57896/files#diff-537414476d7c7a690310c5e1e5d6a0bbbfba37c5b05126edee32fdea7e3a09d8
https://github.com/microsoft/TypeScript/pull/57896/files#diff-537414476d7c7a690310c5e1e5d6a0bbbfba37c5b05126edee32fdea7e3a09d8
https://github.com/microsoft/TypeScript/pull/57896/files#diff-537414476d7c7a690310c5e1e5d6a0bbbfba37c5b05126edee32fdea7e3a09d8
https://github.com/microsoft/TypeScript/pull/57896/files#diff-537414476d7c7a690310c5e1e5d6a0bbbfba37c5b05126edee32fdea7e3a09d8
https://github.com/microsoft/TypeScript/pull/57896/files#diff-537414476d7c7a690310c5e1e5d6a0bbbfba37c5b05126edee32fdea7e3a09d8
src/compiler/factory/utilities.tshttps://github.com/microsoft/TypeScript/pull/57896/files#diff-eec15993790638ba4d0521b25384fc7340cf0d4c86c4032c74ecc717b29f7ec9
View file https://github.com/andrewbranch/TypeScript/blob/ac9ec719a46dc5335f22659e97327bd656fcd06c/src/compiler/factory/utilities.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/microsoft/TypeScript/pull/57896/{{ revealButtonHref }}
https://github.com/microsoft/TypeScript/pull/57896/files#diff-eec15993790638ba4d0521b25384fc7340cf0d4c86c4032c74ecc717b29f7ec9
https://github.com/microsoft/TypeScript/pull/57896/files#diff-eec15993790638ba4d0521b25384fc7340cf0d4c86c4032c74ecc717b29f7ec9
https://github.com/microsoft/TypeScript/pull/57896/files#diff-eec15993790638ba4d0521b25384fc7340cf0d4c86c4032c74ecc717b29f7ec9
https://github.com/microsoft/TypeScript/pull/57896/files#diff-eec15993790638ba4d0521b25384fc7340cf0d4c86c4032c74ecc717b29f7ec9
https://github.com/microsoft/TypeScript/pull/57896/files#diff-eec15993790638ba4d0521b25384fc7340cf0d4c86c4032c74ecc717b29f7ec9
https://github.com/microsoft/TypeScript/pull/57896/files#diff-eec15993790638ba4d0521b25384fc7340cf0d4c86c4032c74ecc717b29f7ec9
src/compiler/moduleSpecifiers.tshttps://github.com/microsoft/TypeScript/pull/57896/files#diff-b5ccb4b5e07181a27fdff3766f67cf5d41b924119ea1bdf14467fb70a560ab6e
View file https://github.com/andrewbranch/TypeScript/blob/ac9ec719a46dc5335f22659e97327bd656fcd06c/src/compiler/moduleSpecifiers.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/microsoft/TypeScript/pull/57896/{{ revealButtonHref }}
https://github.com/microsoft/TypeScript/pull/57896/files#diff-b5ccb4b5e07181a27fdff3766f67cf5d41b924119ea1bdf14467fb70a560ab6e
https://github.com/microsoft/TypeScript/pull/57896/files#diff-b5ccb4b5e07181a27fdff3766f67cf5d41b924119ea1bdf14467fb70a560ab6e
https://github.com/microsoft/TypeScript/pull/57896/files#diff-b5ccb4b5e07181a27fdff3766f67cf5d41b924119ea1bdf14467fb70a560ab6e
https://github.com/microsoft/TypeScript/pull/57896/files#diff-b5ccb4b5e07181a27fdff3766f67cf5d41b924119ea1bdf14467fb70a560ab6e
https://github.com/microsoft/TypeScript/pull/57896/files#diff-b5ccb4b5e07181a27fdff3766f67cf5d41b924119ea1bdf14467fb70a560ab6e
https://github.com/microsoft/TypeScript/pull/57896/files#diff-b5ccb4b5e07181a27fdff3766f67cf5d41b924119ea1bdf14467fb70a560ab6e
https://github.com/microsoft/TypeScript/pull/57896/files#diff-b5ccb4b5e07181a27fdff3766f67cf5d41b924119ea1bdf14467fb70a560ab6e
https://github.com/microsoft/TypeScript/pull/57896/files#diff-b5ccb4b5e07181a27fdff3766f67cf5d41b924119ea1bdf14467fb70a560ab6e
https://github.com/microsoft/TypeScript/pull/57896/files#diff-b5ccb4b5e07181a27fdff3766f67cf5d41b924119ea1bdf14467fb70a560ab6e
https://github.com/microsoft/TypeScript/pull/57896/files#diff-b5ccb4b5e07181a27fdff3766f67cf5d41b924119ea1bdf14467fb70a560ab6e
https://github.com/microsoft/TypeScript/pull/57896/files#diff-b5ccb4b5e07181a27fdff3766f67cf5d41b924119ea1bdf14467fb70a560ab6e
https://github.com/microsoft/TypeScript/pull/57896/files#diff-b5ccb4b5e07181a27fdff3766f67cf5d41b924119ea1bdf14467fb70a560ab6e
https://github.com/microsoft/TypeScript/pull/57896/files#diff-b5ccb4b5e07181a27fdff3766f67cf5d41b924119ea1bdf14467fb70a560ab6e
https://github.com/microsoft/TypeScript/pull/57896/files#diff-b5ccb4b5e07181a27fdff3766f67cf5d41b924119ea1bdf14467fb70a560ab6e
https://github.com/microsoft/TypeScript/pull/57896/files#diff-b5ccb4b5e07181a27fdff3766f67cf5d41b924119ea1bdf14467fb70a560ab6e
https://github.com/microsoft/TypeScript/pull/57896/files#diff-b5ccb4b5e07181a27fdff3766f67cf5d41b924119ea1bdf14467fb70a560ab6e
https://github.com/microsoft/TypeScript/pull/57896/files#diff-b5ccb4b5e07181a27fdff3766f67cf5d41b924119ea1bdf14467fb70a560ab6e
https://github.com/microsoft/TypeScript/pull/57896/files#diff-b5ccb4b5e07181a27fdff3766f67cf5d41b924119ea1bdf14467fb70a560ab6e
https://github.com/microsoft/TypeScript/pull/57896/files#diff-b5ccb4b5e07181a27fdff3766f67cf5d41b924119ea1bdf14467fb70a560ab6e
Please reload this pagehttps://github.com/microsoft/TypeScript/pull/57896/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.