-
-
Notifications
You must be signed in to change notification settings - Fork 9.3k
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
[e18e]: Replace lodash/merge
& lodash/mergeWith
with an alternative
#28663
base: e18e-lodash
Are you sure you want to change the base?
Conversation
An alternative to deepmerge-ts would be https://github.com/unjs/defu, which allows a bit more control on how to merge two objects. |
Thanks, I haven't heard about this one! I'm not sure what you had in your mind with 'more control'? By quick glance To compare quickly:
From what I've observed while working on this PR. |
lodash/merge
& lodash/mergeWith
with deemperge
lodash/merge
& lodash/mergeWith
with an alternative
I don't have a strong opinion either, just wanted to drop this alternative because it worked for me (and is the go-to solution in the nuxt ecosystem). But as you said the usage of merging objects in storybook is quite simple, so it doesn't really matter. |
I've created an initial benchmark PR on Looks like |
Hi @xeho91 I think it definitely makes sense to create a base branch to merge all the changes in because, in the beginning, the bundle size will be increased until we are able to remove the lodash library. I have created the branch |
☁️ Nx Cloud ReportCI is running/has finished running commands for commit c28f30b. As they complete they will appear below. Click to see the status, the terminal output, and the build insights. 📂 See all runs for this CI Pipeline Execution ✅ Successfully ran 1 targetSent with 💌 from NxCloud. |
About the unit tests - should we put them in
|
I've had to merge Hence |
// TODO: Ask for what is prefered: | ||
// 1. type guard (safe at runtime, but potential performance slow-down) | ||
// 2. or type assertion (unsafe at runtime) |
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 need help with decision on this one.
I've had issues with types mismatch, when the records from the second argument had types which did not exists on the first argument (source) in the PreviewWeb.test.ts
.
Is it okay to change type of second argument from Partial<TObj>
to Partial<TObj> & any
?
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.
Sure. Just widen the types for now and we can take a proper look afterwards.
Yes, let's put them in |
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.
Looks like the formatting in this file got borked?
FYI, even though we just merged #28981 to replace 💪 |
I somehow unsubscribed myself from the notifications for PR. 😟 If we still can move forward with using |
Good question, I'd say target |
This is a sub-partial work for tracking-issue #28611.
Just an idea.
Perhaps we could do one branch, derived from
next
e.g.e18e
, where we could put all of the work related to replacinglodash
with alternatives?It could possibly be easier to show how significant change on the summarised work of replacing
lodash
impact on bundlesize as well as performance.
What I did
Replaced
lodash/merge
andlodash/mergeWith
withdeepmerge-ts
.Checklist for Contributors
Testing
The changes in this PR are covered in the following automated tests
Manual testing
This section is mandatory for all contributions. If you believe no manual test is necessary, please state so explicitly. Thanks!
I am not entirely sure if there's no breaking visual changes in the UI. After the changes to:
merge
snippet - I couldn't find tests specific to this snippet, nor explore in depth where it is being usedcombineParameters()
- existing tests passedDocumentation
MIGRATION.MD
Checklist for Maintainers
When this PR is ready for testing, make sure to add
ci:normal
,ci:merged
orci:daily
GH label to it to run a specific set of sandboxes. The particular set of sandboxes can be found incode/lib/cli/src/sandbox-templates.ts
Make sure this PR contains one of the labels below:
Available labels
bug
: Internal changes that fixes incorrect behavior.maintenance
: User-facing maintenance tasks.dependencies
: Upgrading (sometimes downgrading) dependencies.build
: Internal-facing build tooling & test updates. Will not show up in release changelog.cleanup
: Minor cleanup style change. Will not show up in release changelog.documentation
: Documentation only changes. Will not show up in release changelog.feature request
: Introducing a new feature.BREAKING CHANGE
: Changes that break compatibility in some way with current major version.other
: Changes that don't fit in the above categories.🦋 Canary release
This PR does not have a canary release associated. You can request a canary release of this pull request by mentioning the
@storybookjs/core
team here.core team members can create a canary release here or locally with
gh workflow run --repo storybookjs/storybook canary-release-pr.yml --field pr=<PR_NUMBER>