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

Support aliased type imports #411

Merged
merged 7 commits into from
Oct 17, 2023
Merged

Support aliased type imports #411

merged 7 commits into from
Oct 17, 2023

Conversation

nmanu1
Copy link
Contributor

@nmanu1 nmanu1 commented Oct 13, 2023

This PR adds support for aliased type imports like import { CtaData as Cta } from "@yext/search-ui-react";. This includes multiple levels of aliasing such as an aliased import that imports a type that was itself an aliased import. A number of other bugs are fixed as well:

  • Fixed missing imports in general across all source files.
  • A fix to make sure we check that imported Studio types in an external types file (i.e. not directly within a Component file) are properly checked when determining whether the type is imported from Studio. Previously, we only looked within the Component file for imports, so even if a Studio type was imported correctly in an external types file, we would still give an error unless an import for that type was added in the Component file (despite it being unused). The inverse was also an issue where if the type in the external file was not imported correctly, as long as the Component file imported that type from Studio, we wouldn't give an error.
  • A fix to handle string literal prop types correctly (i.e. “number” is treated as a string literal with the value "number" rather than the number type).

One thing to note is that Studio doesn't currently support tracing through export statements when parsing imported types. For example, if you try to import UserPaths from studio-plugin in the test site, we will not be able to resolve the type because the type is exported from studio-plugin using the export ... from ... syntax (e.g. export { UserPaths } from "./types";) instead of separate import and export statements. We only trace through import statements for now.

J=SLAP-2683
TEST=auto, manual

See that the updated test site still resolves the type for nestedColor properly and the value of that prop can be changed through the UI and saved as expected.

tmeyer2115
tmeyer2115 previously approved these changes Oct 17, 2023
alextaing
alextaing previously approved these changes Oct 17, 2023
Copy link
Contributor

@alextaing alextaing left a comment

Choose a reason for hiding this comment

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

absolute fire.

tmeyer2115
tmeyer2115 previously approved these changes Oct 17, 2023
@nmanu1 nmanu1 merged commit 53f47fb into main Oct 17, 2023
15 checks passed
@nmanu1 nmanu1 deleted the dev/aliased-type-imports branch October 17, 2023 15:30
alextaing pushed a commit that referenced this pull request Oct 17, 2023
This PR adds support for aliased type imports like `import { CtaData as Cta } from "@yext/search-ui-react";`. This includes multiple levels of aliasing such as an aliased import that imports a type that was itself an aliased import. A number of other bugs are fixed as well:
- Fixed missing imports in general across all source files.
- A fix to make sure we check that imported Studio types in an external types file (i.e. not directly within a Component file) are properly checked when determining whether the type is imported from Studio. Previously, we only looked within the Component file for imports, so even if a Studio type was imported correctly in an external types file, we would still give an error unless an import for that type was added in the Component file (despite it being unused). The inverse was also an issue where if the type in the external file was not imported correctly, as long as the Component file imported that type from Studio, we wouldn't give an error.
- A fix to handle string literal prop types correctly (i.e. “number” is treated as a string literal with the value "number" rather than the `number` type).

One thing to note is that Studio doesn't currently support tracing through `export` statements when parsing imported types. For example, if you try to import `UserPaths` from `studio-plugin` in the test site, we will not be able to resolve the type because the type is exported from `studio-plugin` using the `export ... from ...` syntax (e.g. `export { UserPaths } from "./types";`) instead of separate import and export statements. We only trace through `import` statements for now.

J=SLAP-2683
TEST=auto, manual

See that the updated test site still resolves the type for `nestedColor` properly and the value of that prop can be changed through the UI and saved as expected.
@alextaing alextaing mentioned this pull request Oct 24, 2023
alextaing added a commit that referenced this pull request Oct 24, 2023
## Features
- We have introduced Collapsible Sidebars (#408).
- We now support aliased type imports (#411).
- The TypeScript utility types Omit, Pick, and Required are now
supported for props in a component's prop interface (#413, #414, #415).
- The Studio Preview can now display CSS and SCSS styling.
@alextaing alextaing mentioned this pull request Oct 30, 2023
alextaing added a commit that referenced this pull request Oct 30, 2023
## Features
- We have introduced Collapsible Sidebars (#408).
- We now support aliased type imports (#411).
- The TypeScript utility types Omit, Pick, and Required are now
supported for props in a component's prop interface (#413, #414, #415).
- The Studio Preview can now display CSS and SCSS styling (#418).
- Undo keyboard shortcuts (`cmd+z` for OS X, and `ctrl+z` for other
OSes) are now supported in Studio (#417).

## Changes
- `_server.tsx` and `_client.tsx` are now reserved template names for
PagesJS Repos (#423).

## Fixes
- Miscellaneous viewport bugs have been fixed (#424).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants