-
Notifications
You must be signed in to change notification settings - Fork 470
Add gentypeconfig.moduleResolution
options: node16
and bundler
for better interop with TS+ESM projects
#6182
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
Merged
Merged
Changes from 15 commits
Commits
Show all changes
18 commits
Select commit
Hold shift + click to select a range
4bae6b2
parse moduleResolution field from gentypeconfig
cometkim 7b17a4e
gentype_test: upgrade typescript
cometkim 0e65bea
add gentypeTests for other moduleResolutions
cometkim 383c288
add makefile for tests
cometkim 9c4350b
emit types import
cometkim 6aec4cd
apply moduleResolution to shim imports
cometkim d9fca1c
refactor
cometkim c661b63
apply moduleResolution to bs imports
cometkim befeb0b
format
cometkim 3338fbe
fix
cometkim 6a76b24
add recipe
cometkim 2b00aaf
remove tests
cometkim 71a3448
add docstrings
cometkim b0f1e2d
add changelog
cometkim 6155982
changelog [skip ci]
cometkim 2d39bed
remove snapshots completely
cometkim 484bd15
refactor: more clear var names
cometkim eb791b9
[skip ci] doc
cometkim File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
open GenTypeCommon | ||
|
||
let shimExtension ~(config : Config.t) = | ||
cristianoc marked this conversation as resolved.
Show resolved
Hide resolved
|
||
match config.moduleResolution with | ||
| Node -> ".shim" | ||
| Node16 -> ".shim.js" | ||
| Bundler -> ".shim.ts" | ||
|
||
let generatedFilesExtension ~(config : Config.t) = | ||
match config.generatedFileExtension with | ||
| Some s -> | ||
(* from .foo.bar to .foo *) | ||
Filename.remove_extension s | ||
| None -> ".gen" | ||
|
||
let inputFileSuffix ~(config : Config.t) = | ||
match config.generatedFileExtension with | ||
| Some s when Filename.extension s <> "" (* double extension *) -> s | ||
| _ -> generatedFilesExtension ~config ^ ".tsx" | ||
|
||
let outputFileSuffix ~(config : Config.t) = | ||
generatedFilesExtension ~config ^ ".js" | ||
|
||
let generatedModuleExtension ~(config : Config.t) = | ||
match config.moduleResolution with | ||
| Node -> generatedFilesExtension ~config | ||
| Node16 -> outputFileSuffix ~config | ||
| Bundler -> inputFileSuffix ~config |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
50 changes: 25 additions & 25 deletions
50
jscomp/gentype_tests/typescript-react-example/package-lock.json
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
# See https://help.github.com/ignore-files/ for more about ignoring files. | ||
|
||
# dependencies | ||
/node_modules | ||
|
||
|
||
# misc | ||
/lib | ||
.DS_Store | ||
.env.local | ||
.env.development.local | ||
.env.test.local | ||
.env.production.local | ||
|
||
npm-debug.log* | ||
yarn-debug.log* | ||
yarn-error.log* |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
SHELL = /bin/bash | ||
|
||
node_modules/.bin/tsc: | ||
npm install | ||
|
||
test: node_modules/.bin/tsc | ||
npm run build | ||
npm run tsc | ||
|
||
clean: | ||
rm -rf node_modules lib src/*.bs.js src/*.gen.tsx | ||
|
||
.DEFAULT_GOAL := test | ||
|
||
.PHONY: clean test |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why ".e.g"? Isn't it exactly
.gen.js
?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
uhhh if I'm guessing right, the output of GenType is always
.gen.ts
or.gen.tsx
and can't be customized with a different extension?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In this code, I don't understand the naming of the functions:
One is "input" one is "output" etc. Seems confusing.
Is there a more intuitive renaming?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's a multiplication of concepts here:
Feels like one has to keep all those in their head to understand what this does.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That sounds good
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
About the "e.g." I think it should be removed. If it's not always exactly that, say what config determines the extension and how, instead of "e.g.".
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So we have the right sentences to use for the documentation website already.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note:
TS
bundler
moduleResolution means "hybrid". Whether it has no extension,.ts
or.js
, its resolution depends on the user's build tool (bundler)Compatible with most bundlers, the most naive way to implement this is to specify the input filename exactly. Therefore, no implicit extension inference takes place.
See microsoft/TypeScript#51669
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What I mean is, the behaviour of genType should be specified precisely. That's all.