chore: Replace lodash with es-toolkit (#12281)

* chore: Replace lodash with es-toolkit

Migrate all direct lodash imports to es-toolkit/compat for a smaller,
faster, lodash-compatible utility library. Transitive lodash usage from
other packages remains unchanged.

* fix: Restore isPlainObject semantics in CanCan policy

The lodash migration aliased `isObject` to `lodash/isPlainObject` and
the codemod incorrectly mapped the local name to es-toolkit's `isObject`,
which also returns true for arrays and functions. This caused condition
objects in policy definitions to be skipped, breaking authorization
checks across the codebase.

* fix: Restore unicode-aware length counting in validators

es-toolkit/compat's size() returns string.length, while lodash's _.size()
counts unicode code points. Switch to [...value].length to preserve the
previous behavior so multi-byte characters like emoji count as one.
This commit is contained in:
Tom Moor
2026-05-06 21:03:47 -04:00
committed by GitHub
parent 4387f3ced7
commit 0139b91b5d
223 changed files with 266 additions and 335 deletions
+2 -2
View File
@@ -239,8 +239,8 @@ export default () =>
priority: 20,
},
{
name: "vendor-lodash",
test: /node_modules[\\/](lodash|lodash-es)/,
name: "vendor-es-toolkit",
test: /node_modules[\\/]es-toolkit/,
priority: 20,
},
{