Reimplement publish-types script with recast#20316
Merged
chriskrycho merged 2 commits intomasterfrom Dec 8, 2022
Merged
Conversation
This is far more robust against all the kinds of things our modules do: - It supports having `declare module` and similar in the input source. - It does not do dumb string replacement to remove `declare`, which can easily remove things from comments or the like. - It correctly handles relative imports (`./` and chains of `../`). For this to work correctly, we needed to have more recent versions of the Babel parser, so this freshens the lock file for all `@babel/*` dependencies. It also adds `recast` and drops `magic-string`. This has been tested by enabling more than 50% of the unpublished modules; the resulting output is correct from the point of view of this script but exposes a number of fixes we will need to make for our types as we enable more and more of those.
c084370 to
9adcd15
Compare
chriskrycho
commented
Dec 8, 2022
Comment on lines
+85
to
+86
| > = DIRegistry[Type][Name] extends infer RegistryEntry extends object | ||
| ? FactoryManager<RegistryEntry> |
Contributor
Author
There was a problem hiding this comment.
Unclear why, but tsc started grumping about assignability in producing the FactoryManager type without this change.
wagenet
approved these changes
Dec 8, 2022
chriskrycho
added a commit
that referenced
this pull request
Dec 9, 2022
Integrate the service registry into the `DIRegistry` introduced as part of rationalizing the `Owner` types in PR #20271 (94276b5). This allows `Owner.lookup('service:foo')` to resolve a `FooService` if one is set up in the `@ember/service` module's `Registry` interface. The preview types already used this mechanic, so this just means that when we ship the stable (i.e. built from source) version of `@ember/service`, it will *continue* working. Meta: Shipping this implementation for the lookup was blocked on being able to publish type modules with `declare module`, which was implemented in PR #20316 (9adcd15). We will likely need to rework other parts of the type hierarchy to support publishing from source.
chriskrycho
added a commit
that referenced
this pull request
Dec 9, 2022
Integrate the service registry into the `DIRegistry` introduced as part of rationalizing the `Owner` types in PR #20271 (94276b5). This allows `Owner.lookup('service:foo')` to resolve a `FooService` if one is set up in the `@ember/service` module's `Registry` interface. The preview types already used this mechanic (as of 5658b13), so this just means that when we ship the stable (i.e. built from source) version of `@ember/service`, it will *continue* working. Meta: Shipping this implementation for the lookup was blocked on being able to publish type modules with `declare module`, which was implemented in PR #20316 (9adcd15). We will likely need to rework other parts of the type hierarchy to support publishing from source.
kategengler
pushed a commit
that referenced
this pull request
Dec 12, 2022
Integrate the service registry into the `DIRegistry` introduced as part of rationalizing the `Owner` types in PR #20271 (94276b5). This allows `Owner.lookup('service:foo')` to resolve a `FooService` if one is set up in the `@ember/service` module's `Registry` interface. The preview types already used this mechanic (as of 5658b13), so this just means that when we ship the stable (i.e. built from source) version of `@ember/service`, it will *continue* working. Meta: Shipping this implementation for the lookup was blocked on being able to publish type modules with `declare module`, which was implemented in PR #20316 (9adcd15). We will likely need to rework other parts of the type hierarchy to support publishing from source. (cherry picked from commit 5070508)
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This is far more robust against all the kinds of things our modules do:
declare moduleand similar in the input source.declare, which can easily remove things from comments or the like../and chains of../).For this to work correctly, we needed to have more recent versions of the Babel parser, so this freshens the lock file for all
@babel/*dependencies. It also addsrecastand dropsmagic-string.This has been tested by enabling more than 50% of the unpublished modules; the resulting output is correct from the point of view of this script but exposes a number of fixes we will need to make for our types as we enable more and more of those.