nicoespeon / abracadabra

Automated refactorings for VS Code (JS & TS) ✨ It's magic ✨
https://marketplace.visualstudio.com/items?itemName=nicoespeon.abracadabra
MIT License
809 stars 48 forks source link

Bump ts-pattern from 5.2.0 to 5.3.1 #1069

Closed dependabot[bot] closed 2 months ago

dependabot[bot] commented 2 months ago

Bumps ts-pattern from 5.2.0 to 5.3.1.

Release notes

Sourced from ts-pattern's releases.

v5.3.1

Pattern-matching on symbol keys

Symbols used to be ignored in object patterns. They are now taken into account:

const symbolA = Symbol('symbol-a');
const symbolB = Symbol('symbol-b');

const obj = { [symbolA]: { [symbolB]: 'foo' } };

if (isMatching({ [symbolA]: { [symbolB]: 'bar' } }, obj)) { // 👆 Used to return true, now returns false!

// Since TS-Pattern wasn't reading symbols, this pattern used to be equivalent // to the {} pattern that matches any value except null and undefined. }

.exhaustive now throws a custom error

People have expressed the need to differentiate runtime errors that .exhaustive() might throw when the input is of an unexpected type from other runtime errors that could have happened in the same match expression. It's now possible with err instanceof NonExhaustiveError:

import { match, P, NonExhaustiveError }  from 'ts-pattern';

const fn = (input: string | number) => { return match(input) .with(P.string, () => "string!") .with(P.number, () => "number!") .exhaustive() }

try { fn(null as string) // 👈 💥 } catch (e) { if (e instanceof NonExhaustiveError) { // The input was invalid } else { // something else happened } }

What's Changed

New Contributors

... (truncated)

Commits
  • 021b3db 5.3.1
  • 99aa90e feat(exhaustive): rename thrown error to NonExhaustiveError
  • b2e7566 5.3.0
  • d404e33 feat(symbols): Use Reflect.ownKeys for better performance
  • 29f74f9 feat(symbols): add more tests
  • e74557d Merge pull request #272 from Ayc0/symbol
  • 7f2aaf3 chore: use .concat for better perfs (1 less creation of arrays)
  • 423b75b chore: split tests in a new objects.test.ts
  • fbf58c3 fix: make so that isMatching works with symbols
  • 3f5978a roadmap: add features
  • Additional commits viewable in compare view


Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)