-
-
Notifications
You must be signed in to change notification settings - Fork 184
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
refactor: add multiple file exports for notifications controllers #4604
Conversation
4daa379
to
8a035a4
Compare
@metamaskbot publish-preview |
…node 18 we still can fallback to named exports
dff87e3
to
12fc043
Compare
@metamaskbot publish-preview |
Preview builds have been published. See these instructions for more information about preview builds. Expand for full list of packages and versions.
|
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.
These package.json files are to help ensure that the subfolders are resolvable in JS projects & linters.
This pattern was inspired by how it is resolved through redux-toolkit.
https://github.com/reduxjs/redux-toolkit/blob/master/packages/toolkit/query/react/package.json
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.
TS projects are able to resolve this, as the root package.json describes all the exports. However linters and JS projects may find it difficult, especially if the export name is an alias (e.g. does not map 1:1 with the output directory)
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.
I'm open to change if there is another pattern we can utilise.
634a1bd
to
21d139e
Compare
this ensures that JS projects are able to find and resolve the paths to the module sub-files. E.g. "Unable to resolve path to module '@metamask-previews/profile-sync-controller/user-storage'. (eslintimport/no-unresolved)"
@metamaskbot publish-preview |
Preview builds have been published. See these instructions for more information about preview builds. Expand for full list of packages and versions.
|
will need to discuss with the team how we can better handle workspace validation.
@metamaskbot publish-preview |
Preview builds have been published. See these instructions for more information about preview builds. Expand for full list of packages and versions.
|
…core into notifications-multiple-exports
@metamaskbot publish-preview |
Preview builds have been published. See these instructions for more information about preview builds. Expand for full list of packages and versions.
|
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.
Nice one!!
Explanation
This adds multiple exports to the
@metamask/profile-sync-controller
and@metamask/notification-services-controller
.This will allow classes, functions, variables to be imported more naturally compared to the named exports. This will potentially help with tree shaking.
List of all imports:
NOTE - we will keep backwards compatibility with named exports. I think we'll also probably export all (e.g
export * ...
) to flatten the named exports structure.References
N/A
Changelog
@metamask/profile-sync-controller
@metamask/notification-services-controller
Checklist