-
Notifications
You must be signed in to change notification settings - Fork 8
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
Rewrite Equal
to use the equality check from ReadonlyEquivalent
exclusively
#21
Conversation
Just an anecdote, this PR is compatible with all of the My previous reverted PR ran afoul of one of |
Hi @trevorade! I am against
|
By the way, I would think we had a test for this already, but it seems we don't (since I didn't see you commenting out this test on the PR changes)? |
Also, maybe I should have asked this before anything else, but why did you want to make this change? Is it just to work around #5? |
@papb I agree that I could see making the |
Sorry for the delay in getting to this, hoping to find time to dive in in the next week. @shicks when you say direct equality check what do you mean exactly? TS doesn't have that built in as far as I'm aware, all we really have to play with is Definitely agreed with the general concern with how DeepBrand has grown and grown, slowly taking over everything. And every edge case seems to add to its complexity, making it harder to maintain and most likely slowing the compiler down. It started as a way to distinguish between hairy types like any/unknown/never - which I do think is really important and should be the default behaviour. This library wouldn't be doing its job if it let anys make things go green secretly. |
A general thought that's based on the comments rather than the code. I agree with @papb that |
I need to find some time to update this draft. I think what I'd want to do would be to keep around Accessing the expectTypeOf<Foo>().branded.toEqualTypeOf<Bar>(); Honestly, nearly all examples we could find worked fine with this PR's new equality check with the exception of the intersection case noted above. This PR is more performant and covers several cases TS really just needs an equality check in their typing system 😛 |
…xclusively. This is a breaking change as I opted to remove the types that were no longer needed. They are exported though so it's likely some people depend on them. This took a lot of tinkering. This topic and this equality check is discussed extensively at microsoft/TypeScript#27024 The main three work-arounds this implementation added are: 1. Explicitly handling `any` separately 2. Supporting identity unions 3. Supporting identity intersections The only known issue is this case: ```ts // @ts-expect-error This is the bug. expectTypeOf<{foo: number} & {bar: string}>().toEqualTypeOf<{foo: number; bar: string}>() ``` @shicks and I could not find a tweak to the `Equality` check to make this work. Instead, I added a workaround in the shape of a new `.simplified` modifier that works similar to `.not`: ```ts // The workaround is the new optional .simplified modifier. expectTypeOf<{foo: number} & {bar: string}>().simplified.toEqualTypeOf<{foo: number; bar: string}>() ``` I'm not entirely sure what to do with documenting `.simplified` because it's something you should never use unless you need it. The simplify operation tends to lose information about the types being tested (e.g., functions become `{}` and classes lose their constructors). I'll definitely update this PR to reference the `.simplified` modifier but I wanted to get a review on this approach first. One option would be to keep around all the `DeepBrand` stuff and to have `.deepBranded` or something being the modifier instead. That would have the benefit of preserving all the exported types making this less of a breaking change.
7ea9e36
to
44d7f67
Compare
Updated to keep around This has the same ergonomic issues as the Main benefit here is that all the other exported types beyond As an alternative to the |
I really like this. I still need to go through the implementation, but I have very high confidence based on the tests, and not being (properly) breaking makes it much easier to say "yes" to. This is definitely a net-good change. A couple of comments/requests:
|
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.
Some minor comments on the implementation part
test/types.test.ts
Outdated
@@ -174,8 +174,7 @@ test('parity with IsExact from conditional-type-checks', () => { | |||
test('Equal works with functions', () => { | |||
expectTypeOf<a.Equal<() => void, () => string>>().toEqualTypeOf<false>() | |||
expectTypeOf<a.Equal<() => void, (s: string) => void>>().toEqualTypeOf<false>() | |||
// todo: workaround https://github.com/microsoft/TypeScript/issues/50670 - https://github.com/mmkal/expect-type/issues/5 | |||
// expectTypeOf<a.Equal<() => () => () => void, () => () => () => string>>().toEqualTypeOf<false>() | |||
expectTypeOf<a.Equal<() => () => () => void, () => () => () => string>>().toEqualTypeOf<false>() |
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.
🚀🚀🚀
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.
Outdated though...
If you did the .Equal
not branded, it would work
src/index.ts
Outdated
@@ -84,7 +84,15 @@ type ReadonlyEquivalent<X, Y> = Extends< | |||
export type Extends<L, R> = IsNever<L> extends true ? IsNever<R> : [L] extends [R] ? true : false | |||
export type StrictExtends<L, R> = Extends<DeepBrand<L>, DeepBrand<R>> | |||
|
|||
export type Equal<Left, Right> = And<[StrictExtends<Left, Right>, StrictExtends<Right, Left>]> | |||
type StrictEqual<L, R> = | |||
(<T>() => T extends (L & T) | T ? true : false) extends |
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.
Is there a link to a stack overflow/blog post/docs page that explains this trick or something similar? And/or an explanation of why we can't just use T
. It's befuddling(-looking) enough to warrant a comment.
src/index.ts
Outdated
@@ -95,7 +103,7 @@ export type ConstructorParams<Actual> = Actual extends new (...args: infer P) => | |||
|
|||
type MismatchArgs<B extends boolean, C extends boolean> = Eq<B, C> extends true ? [] : [never] | |||
|
|||
export interface ExpectTypeOf<Actual, B extends boolean> { | |||
export interface ExpectTypeOf<Actual, B extends boolean, Branded = false> { |
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.
Maybe we should merge in a separate PR that renames B
to Positive
or something? I feel like I've seen that elsewhere on one of the PRs recently, am I remembering that right?
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 guessing you're thinking of #13
In that one, I renamed it to ExpectTypeOf<Actual, ExpectedResult extends boolean>
I could incorporate parts of that PR to just the generic renaming.
I didn't know this, can someone show an example please? |
If I understood correctly, from the point of view of
Did I understand correctly? If so, unfortunately I have to say that all my objections still stand, since only the way of calling the function changed, not the behavior per se. However, considering that...
...then I may concede that none of these two solutions are exactly correct, and that we might
|
@mmkal The reason I don't agree with this sentence is that the test for |
@papb Note that all of the tests I add in this PR fail before this change. These tests also passed with my previous PR 304a54b which improved
We're in a situation with: pick 2:
This PR gets you 1. and 2. We could un-revert 304a54b and we'd presumably get 2. and 3. but at the cost of compile speed and not working with more complex types. Lastly, note that even my previous PR doesn't work around microsoft/TypeScript#50670 whereas this PR does. It's pretty crappy that TS just doesn't have an equality check for types. At the moment, there is just no perfect equality check that covers all cases. I find that not covering 3. is acceptable for this library. |
@papb wrote:
Here are some examples of how the current
Ultimately this comes down to "what does equal mean?" It's true that I'm not aware of any other way to distinguish |
@mmkal Another proposal. We remove export type MutuallyAssignable<Actual, Expected> =
[Actual, Expected] extends [Expected, Actual] ? true : false;
...
export interface ExpectTypeOf<Actual, B extends boolean> {
...
toAssignMutuallyWithTypeOf: {
<Expected>(...MISMATCH: MismatchArgs<MutuallyAssignable<Actual, Expected>, B>): true
<Expected>(expected: Expected, ...MISMATCH: MismatchArgs<MutuallyAssignable<Actual, Expected>, B>): true
} This doesn't have protections against In the off-case that you run into something like This simplifies |
@papb good point, and sorry to have forgotten this. I'm currently on paternity leave so git history will be much more reliable than my memory. @trevorade in the tradeoff between fast and correct I'd prefer correct, but it does seem that "slow" also exposes tsc limitations which also means "not correct". To make clear the tradeoff, @papb would you be open to a simple PR adding a test for the A couple more thoughts that come to mind:
For either one, we should aim to have it "just work" for all the simple use cases in usage.test.ts if we possibly can. We might also want a limitations section of the documentation (maybe also generated from tests) so we can be honest and clear about what problems you might hit once you start trying to test big, complex types. |
Because I'm forgetful #21 (comment)
@trevorade I finally had a chance to dig into this (and experiment with an alternative in #27). Everything I was able to come up with that technically covers all edge cases had serious performance problems, so because this implementation is so dramatically much simpler, I'm inclined to agree that we just have the type A = {a: 1}
type B = {b: 1}
type Intersection = A & B
expectTypeOf<Intersection>().toEqualTypeOf<{a: 1; b: 1}>()
expectTypeOf<{[K in keyof Intersection]: Intersection[K]}>().toEqualTypeOf<{a: 1; b: 1}>() Is that what the original |
It's been a while so I can't remember what This current state of this PR has Unfortunately, I don't really have capacity these days to help out with changes here. Feel free to create a new commit based on this or take over this one (if you can?) |
Sounds good - will see if I can simplify, and merge when it's ready |
When will this be released? |
Just for sharing, I have it working in type-plus |
@gomain in the next few days. Have been out! |
@unional while that does cover the specific test that was added to this PR to document the limitation, I don't think I would like a workaround like that to be included in expect-type. Really, it's just kicking the can down the road where it's less visible and harder to debug, since it's just explicitly looking for top-level intersections and handling them manually. Nested properties with intersection types will meet the same problem. That may be ok for your use case - I'm not familiar with type-pluts - but I think it'd be confusing here. I opened a PR to demonstrate/document this: unional/type-plus#302 |
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [expect-type](https://togithub.com/mmkal/expect-type) | [`0.14.2` -> `0.16.0`](https://renovatebot.com/diffs/npm/expect-type/0.14.2/0.16.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/expect-type/0.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/expect-type/0.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/expect-type/0.14.2/0.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/expect-type/0.14.2/0.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>mmkal/expect-type (expect-type)</summary> ### [`v0.16.0`](https://togithub.com/mmkal/expect-type/releases/tag/v0.16.0) [Compare Source](https://togithub.com/mmkal/expect-type/compare/v0.15.0...v0.16.0) #### What's Changed - support functions with `this` parameters by [@​mmkal](https://togithub.com/mmkal) and [@​papb](https://togithub.com/papb) in [https://github.com/mmkal/expect-type/pull/15](https://togithub.com/mmkal/expect-type/pull/15) - Prevent the .not modifier from being chained by [@​trevorade](https://togithub.com/trevorade) in [https://github.com/mmkal/expect-type/pull/20](https://togithub.com/mmkal/expect-type/pull/20) - Rewrite `Equal` to use the equality check from `ReadonlyEquivalent` exclusively by [@​trevorade](https://togithub.com/trevorade) in [https://github.com/mmkal/expect-type/pull/21](https://togithub.com/mmkal/expect-type/pull/21) Note that [#​21](https://togithub.com/mmkal/expect-type/issues/21) has affected behavior for intersection types, which can result in (arguably) false errors: ```ts // @​ts-expect-error the following line doesn't compile, even though the types are arguably the same. // See mmkal/expect-type#21 expectTypeOf<{a: 1} & {b: 2}>().toEqualTypeOf<{a: 1; b: 2}>() ``` **Full Changelog**: mmkal/expect-type@v0.15.0...v16.0.0 ### [`v0.15.0`](https://togithub.com/mmkal/expect-type/releases/tag/v0.15.0) [Compare Source](https://togithub.com/mmkal/expect-type/compare/v0.14.2...v0.15.0) #### What's Changed - Update Extends to not distribute over union types by [@​trevorade](https://togithub.com/trevorade) in [https://github.com/mmkal/expect-type/pull/12](https://togithub.com/mmkal/expect-type/pull/12) #### New Contributors - [@​trevorade](https://togithub.com/trevorade) made their first contribution in [https://github.com/mmkal/expect-type/pull/12](https://togithub.com/mmkal/expect-type/pull/12) **Full Changelog**: mmkal/expect-type@v0.14.2...v0.15.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/X-oss-byte/Canary-nextjs).
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [expect-type](https://togithub.com/mmkal/expect-type) | [`0.14.2` -> `0.16.0`](https://renovatebot.com/diffs/npm/expect-type/0.14.2/0.16.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/expect-type/0.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/expect-type/0.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/expect-type/0.14.2/0.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/expect-type/0.14.2/0.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>mmkal/expect-type (expect-type)</summary> ### [`v0.16.0`](https://togithub.com/mmkal/expect-type/releases/tag/v0.16.0) [Compare Source](https://togithub.com/mmkal/expect-type/compare/v0.15.0...v0.16.0) #### What's Changed - support functions with `this` parameters by [@​mmkal](https://togithub.com/mmkal) and [@​papb](https://togithub.com/papb) in [https://github.com/mmkal/expect-type/pull/15](https://togithub.com/mmkal/expect-type/pull/15) - Prevent the .not modifier from being chained by [@​trevorade](https://togithub.com/trevorade) in [https://github.com/mmkal/expect-type/pull/20](https://togithub.com/mmkal/expect-type/pull/20) - Rewrite `Equal` to use the equality check from `ReadonlyEquivalent` exclusively by [@​trevorade](https://togithub.com/trevorade) in [https://github.com/mmkal/expect-type/pull/21](https://togithub.com/mmkal/expect-type/pull/21) Note that [#​21](https://togithub.com/mmkal/expect-type/issues/21) has affected behavior for intersection types, which can result in (arguably) false errors: ```ts // @​ts-expect-error the following line doesn't compile, even though the types are arguably the same. // See mmkal/expect-type#21 expectTypeOf<{a: 1} & {b: 2}>().toEqualTypeOf<{a: 1; b: 2}>() ``` **Full Changelog**: mmkal/expect-type@v0.15.0...v16.0.0 ### [`v0.15.0`](https://togithub.com/mmkal/expect-type/releases/tag/v0.15.0) [Compare Source](https://togithub.com/mmkal/expect-type/compare/v0.14.2...v0.15.0) #### What's Changed - Update Extends to not distribute over union types by [@​trevorade](https://togithub.com/trevorade) in [https://github.com/mmkal/expect-type/pull/12](https://togithub.com/mmkal/expect-type/pull/12) #### New Contributors - [@​trevorade](https://togithub.com/trevorade) made their first contribution in [https://github.com/mmkal/expect-type/pull/12](https://togithub.com/mmkal/expect-type/pull/12) **Full Changelog**: mmkal/expect-type@v0.14.2...v0.15.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/X-oss-byte/Nextjs).
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@types/glob](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/glob) ([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/glob)) | [`8.0.0` -> `8.1.0`](https://renovatebot.com/diffs/npm/@types%2fglob/8.0.0/8.1.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fglob/8.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fglob/8.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fglob/8.0.0/8.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fglob/8.0.0/8.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@types/lodash](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/lodash) ([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash)) | [`4.14.186` -> `4.14.202`](https://renovatebot.com/diffs/npm/@types%2flodash/4.14.186/4.14.202) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2flodash/4.14.202?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2flodash/4.14.202?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2flodash/4.14.186/4.14.202?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2flodash/4.14.186/4.14.202?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@types/verror](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/verror) ([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/verror)) | [`1.10.6` -> `1.10.9`](https://renovatebot.com/diffs/npm/@types%2fverror/1.10.6/1.10.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fverror/1.10.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fverror/1.10.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fverror/1.10.6/1.10.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fverror/1.10.6/1.10.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@vitest/ui](https://togithub.com/vitest-dev/vitest/tree/main/packages/ui#readme) ([source](https://togithub.com/vitest-dev/vitest/tree/HEAD/packages/ui)) | [`0.34.6` -> `0.34.7`](https://renovatebot.com/diffs/npm/@vitest%2fui/0.34.6/0.34.7) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@vitest%2fui/0.34.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vitest%2fui/0.34.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vitest%2fui/0.34.6/0.34.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitest%2fui/0.34.6/0.34.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [del-cli](https://togithub.com/sindresorhus/del-cli) | [`5.0.0` -> `5.1.0`](https://renovatebot.com/diffs/npm/del-cli/5.0.0/5.1.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/del-cli/5.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/del-cli/5.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/del-cli/5.0.0/5.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/del-cli/5.0.0/5.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [expect-type](https://togithub.com/mmkal/expect-type) | [`0.14.2` -> `0.17.3`](https://renovatebot.com/diffs/npm/expect-type/0.14.2/0.17.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/expect-type/0.17.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/expect-type/0.17.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/expect-type/0.14.2/0.17.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/expect-type/0.14.2/0.17.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [sinon](https://sinonjs.org/) ([source](https://togithub.com/sinonjs/sinon)) | [`14.0.0` -> `14.0.2`](https://renovatebot.com/diffs/npm/sinon/14.0.0/14.0.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/sinon/14.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/sinon/14.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/sinon/14.0.0/14.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/sinon/14.0.0/14.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [sqlite3](https://togithub.com/microsoft/vscode-node-sqlite3) | [`5.0.8` -> `5.1.2`](https://renovatebot.com/diffs/npm/sqlite3/5.0.8/5.1.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/sqlite3/5.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/sqlite3/5.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/sqlite3/5.0.8/5.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/sqlite3/5.0.8/5.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [typescript](https://www.typescriptlang.org/) ([source](https://togithub.com/Microsoft/TypeScript)) | [`4.8.4` -> `4.9.5`](https://renovatebot.com/diffs/npm/typescript/4.8.4/4.9.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/typescript/4.9.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/typescript/4.9.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/typescript/4.8.4/4.9.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/typescript/4.8.4/4.9.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [uuid](https://togithub.com/uuidjs/uuid) | [`9.0.0` -> `9.0.1`](https://renovatebot.com/diffs/npm/uuid/9.0.0/9.0.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/uuid/9.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/uuid/9.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/uuid/9.0.0/9.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/uuid/9.0.0/9.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>vitest-dev/vitest (@​vitest/ui)</summary> ### [`v0.34.7`](https://togithub.com/vitest-dev/vitest/compare/v0.34.6...v0.34.7) [Compare Source](https://togithub.com/vitest-dev/vitest/compare/v0.34.6...v0.34.7) </details> <details> <summary>sindresorhus/del-cli (del-cli)</summary> ### [`v5.1.0`](https://togithub.com/sindresorhus/del-cli/releases/tag/v5.1.0) [Compare Source](https://togithub.com/sindresorhus/del-cli/compare/v5.0.1...v5.1.0) - Add `--verbose` flag ([#​37](https://togithub.com/sindresorhus/del-cli/issues/37)) [`f32b531`](https://togithub.com/sindresorhus/del-cli/commit/f32b531) ### [`v5.0.1`](https://togithub.com/sindresorhus/del-cli/releases/tag/v5.0.1) [Compare Source](https://togithub.com/sindresorhus/del-cli/compare/v5.0.0...v5.0.1) - Fix Windows compatibility for use with `npx` [`537e5b3`](https://togithub.com/sindresorhus/del-cli/commit/537e5b3) </details> <details> <summary>mmkal/expect-type (expect-type)</summary> ### [`v0.17.3`](https://togithub.com/mmkal/expect-type/releases/tag/v0.17.3) [Compare Source](https://togithub.com/mmkal/expect-type/compare/v0.17.2...v0.17.3) - docs: why-is-my-assertion-failing [`907b8aa`](https://togithub.com/mmkal/expect-type/commit/907b8aa) - I think the previous build was out of date somehow too, so see https://github.com/mmkal/expect-type/releases/v0.17.2 ### [`v0.17.2`](https://togithub.com/mmkal/expect-type/releases/tag/v0.17.2) [Compare Source](https://togithub.com/mmkal/expect-type/compare/v0.17.1...v0.17.2) - Improve tuple errors ([#​40](https://togithub.com/mmkal/expect-type/issues/40)) [`4b38117`](https://togithub.com/mmkal/expect-type/commit/4b38117) Diff(truncated - scroll right!): ```diff test('toEqualTypeOf with tuples', () => { const assertion = `expectTypeOf<[[number], [1], []]>().toEqualTypeOf<[[number], [2], []]>()` expect(tsErrors(assertion)).toMatchInlineSnapshot(` - "test/test.ts:999:999 - error TS2344: Type '[[number], [2], []]' does not satisfy the constraint '{ [x: number]: { [x: number]: number; [iterator]: (() => IterableIterator<1>) | (() => IterableIterator<number>) | (() => IterableIterator<never>); [unscopables]: (() => { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }) | (() => { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }) | (() => { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }); length: 0 | 1; toString: ... truncated!!!!'. - Types of property 'sort' are incompatible. - Type '(compareFn?: ((a: [] | [number] | [2], b: [] | [number] | [2]) => number) | undefined) => [[number], [2], []]' is not assignable to type '\\"Expected: function, Actual: function\\"'. + "test/test.ts:999:999 - error TS2344: Type '[[number], [2], []]' does not satisfy the constraint '{ 0: { 0: number; }; 1: { 0: \\"Expected: literal number: 2, Actual: literal number: 1\\"; }; 2: {}; }'. + The types of '1[0]' are incompatible between these types. + Type '2' is not assignable to type '\\"Expected: literal number: 2, Actual: literal number: 1\\"'. 999 expectTypeOf<[[number], [1], []]>().toEqualTypeOf<[[number], [2], []]>() ~~~~~~~~~~~~~~~~~~~" `) }) ``` ### [`v0.17.1`](https://togithub.com/mmkal/expect-type/releases/tag/v0.17.1) [Compare Source](https://togithub.com/mmkal/expect-type/compare/v0.17.0...v0.17.1) - disallow `.not` and `.branded` together [`cf38918`](https://togithub.com/mmkal/expect-type/commit/cf38918) (this was actually documented in the [v0.17.0 release](https://togithub.com/mmkal/expect-type/releases/tag/v0.17.0) but really it was only pushed here) ### [`v0.17.0`](https://togithub.com/mmkal/expect-type/releases/tag/v0.17.0) [Compare Source](https://togithub.com/mmkal/expect-type/compare/v0.16.0...v0.17.0) [#​16](https://togithub.com/mmkal/expect-type/issues/16) went in to - hopefully - significantly improve the error messages produce on failing assertions. Here's an example of how vitest's failing tests were improved: Before: <img width="551" alt="image" src="https://github.com/vitest-dev/vitest/assets/15040698/3bfea594-14b5-4919-9dac-4a562e603d59"> After: <img width="672" alt="image" src="https://github.com/vitest-dev/vitest/assets/15040698/ca106058-178b-401e-be26-6f08ae628fd4"> Docs copied from [the readme](https://togithub.com/mmkal/expect-type#error-messages) about how to interpret these error messages *** ##### Error messages When types don't match, `.toEqualTypeOf` and `.toMatchTypeOf` use a special helper type to produce error messages that are as actionable as possible. But there's a bit of an nuance to understanding them. Since the assertions are written "fluently", the failure should be on the "expected" type, not the "actual" type (`expect<Actual>().toEqualTypeOf<Expected>()`). This means that type errors can be a little confusing - so this library produces a `MismatchInfo` type to try to make explicit what the expectation is. For example: ```ts expectTypeOf({a: 1}).toEqualTypeOf<{a: string}>() ``` Is an assertion that will fail, since `{a: 1}` has type `{a: number}` and not `{a: string}`. The error message in this case will read something like this: test/test.ts:999:999 - error TS2344: Type '{ a: string; }' does not satisfy the constraint '{ a: \\"Expected: string, Actual: number\\"; }'. Types of property 'a' are incompatible. Type 'string' is not assignable to type '\\"Expected: string, Actual: number\\"'. 999 expectTypeOf({a: 1}).toEqualTypeOf<{a: string}>() Note that the type constraint reported is a human-readable messaging specifying both the "expected" and "actual" types. Rather than taking the sentence `Types of property 'a' are incompatible // Type 'string' is not assignable to type "Expected: string, Actual: number"` literally - just look at the property name (`'a'`) and the message: `Expected: string, Actual: number`. This will tell you what's wrong, in most cases. Extremely complex types will of course be more effort to debug, and may require some experimentation. Please [raise an issue](https://togithub.com/mmkal/expect-type) if the error messages are actually misleading. The `toBe...` methods (like `toBeString`, `toBeNumber`, `toBeVoid` etc.) fail by resolving to a non-callable type when the `Actual` type under test doesn't match up. For example, the failure for an assertion like `expectTypeOf(1).toBeString()` will look something like this: test/test.ts:999:999 - error TS2349: This expression is not callable. Type 'ExpectString<number>' has no call signatures. 999 expectTypeOf(1).toBeString() ~~~~~~~~~~ The `This expression is not callable` part isn't all that helpful - the meaningful error is the next line, `Type 'ExpectString<number> has no call signatures`. This essentially means you passed a number but asserted it should be a string. If TypeScript added support for ["throw" types](https://togithub.com/microsoft/TypeScript/pull/40468) these error messagess could be improved. Until then they will take a certain amount of squinting. ##### Concrete "expected" objects vs typeargs Error messages for an assertion like this: ```ts expectTypeOf({a: 1}).toEqualTypeOf({a: ''}) ``` Will be less helpful than for an assertion like this: ```ts expectTypeOf({a: 1}).toEqualTypeOf<{a: string}>() ``` This is because the TypeScript compiler needs to infer the typearg for the `.toEqualTypeOf({a: ''})` style, and this library can only mark it as a failure by comparing it against a generic `Mismatch` type. So, where possible, use a typearg rather than a concrete type for `.toEqualTypeOf` and `toMatchTypeOf`. If it's much more convenient to compare two concrete types, you can use `typeof`: ```ts const one = valueFromFunctionOne({some: {complex: inputs}}) const two = valueFromFunctionTwo({some: {other: inputs}}) expectTypeOf(one).toEqualTypeof<typeof two>() ``` *** Kinda-breaking changes: essentially none, but technically, `.branded` no longer returns a "full" `ExpectTypeOf` instance at compile-time. Previously you could do this: ```ts expectTypeOf<{a: {b: 1} & {c: 1}}>().branded.not.toEqualTypeOf<{a: {b: 1; c: ''}}>() expectTypeOf<{a: {b: 1} & {c: 1}}>().not.branded.toEqualTypeOf<{a: {b: 1; c: ''}}>() ``` Now that won't work (and it was always slightly nonsensical), so you'd have to use `// @​ts-expect-error` instead of `not` if you have a negated case where you need `branded`: ```ts // @​ts-expect-error expectTypeOf<{a: {b: 1} & {c: 1}}>().branded.not.toEqualTypeOf<{a: {b: 1; c: ''}}>() ``` *** #### What's Changed - Improve CLI error messages by [@​mmkal](https://togithub.com/mmkal) in [https://github.com/mmkal/expect-type/pull/16](https://togithub.com/mmkal/expect-type/pull/16) - expect-type is usually a dev dependency by [@​SerkanSipahi](https://togithub.com/SerkanSipahi) in [https://github.com/mmkal/expect-type/pull/39](https://togithub.com/mmkal/expect-type/pull/39) #### New Contributors - [@​SerkanSipahi](https://togithub.com/SerkanSipahi) made their first contribution in [https://github.com/mmkal/expect-type/pull/39](https://togithub.com/mmkal/expect-type/pull/39) **Full Changelog**: https://github.com/mmkal/expect-type/compare/v0.16.0...v0.17.0 ### [`v0.16.0`](https://togithub.com/mmkal/expect-type/releases/tag/v0.16.0) [Compare Source](https://togithub.com/mmkal/expect-type/compare/v0.15.0...v0.16.0) #### What's Changed - support functions with `this` parameters by [@​mmkal](https://togithub.com/mmkal) and [@​papb](https://togithub.com/papb) in [https://github.com/mmkal/expect-type/pull/15](https://togithub.com/mmkal/expect-type/pull/15) - Prevent the .not modifier from being chained by [@​trevorade](https://togithub.com/trevorade) in [https://github.com/mmkal/expect-type/pull/20](https://togithub.com/mmkal/expect-type/pull/20) - Rewrite `Equal` to use the equality check from `ReadonlyEquivalent` exclusively by [@​trevorade](https://togithub.com/trevorade) in [https://github.com/mmkal/expect-type/pull/21](https://togithub.com/mmkal/expect-type/pull/21) Note that [#​21](https://togithub.com/mmkal/expect-type/issues/21) has affected behavior for intersection types, which can result in (arguably) false errors: ```ts // @​ts-expect-error the following line doesn't compile, even though the types are arguably the same. // See https://github.com/mmkal/expect-type/pull/21 expectTypeOf<{a: 1} & {b: 2}>().toEqualTypeOf<{a: 1; b: 2}>() ``` **Full Changelog**: https://github.com/mmkal/expect-type/compare/v0.15.0...v16.0.0 ### [`v0.15.0`](https://togithub.com/mmkal/expect-type/releases/tag/v0.15.0) [Compare Source](https://togithub.com/mmkal/expect-type/compare/v0.14.2...v0.15.0) #### What's Changed - Update Extends to not distribute over union types by [@​trevorade](https://togithub.com/trevorade) in [https://github.com/mmkal/expect-type/pull/12](https://togithub.com/mmkal/expect-type/pull/12) #### New Contributors - [@​trevorade](https://togithub.com/trevorade) made their first contribution in [https://github.com/mmkal/expect-type/pull/12](https://togithub.com/mmkal/expect-type/pull/12) **Full Changelog**: https://github.com/mmkal/expect-type/compare/v0.14.2...v0.15.0 </details> <details> <summary>sinonjs/sinon (sinon)</summary> ### [`v14.0.2`](https://togithub.com/sinonjs/sinon/blob/HEAD/CHANGES.md#1402) [Compare Source](https://togithub.com/sinonjs/sinon/compare/v14.0.1...v14.0.2) - [`4d70f6e0`](https://togithub.com/sinonjs/sinon/commit/4d70f6e0965b82e387cd632fbe54ed58a8fcf601) Upgrade nise to latest (Morgan Roderick) - [`96a0d756`](https://togithub.com/sinonjs/sinon/commit/96a0d756b553c38154f442785c34c6092d1ac572) Update [@​sinonjs/samsam](https://togithub.com/sinonjs/samsam) to latest (Morgan Roderick) - [`babb4736`](https://togithub.com/sinonjs/sinon/commit/babb4736d7f0080e25dce34fc8ce72879e86792e) Prefer [@​sinonjs/commons](https://togithub.com/sinonjs/commons)[@​2](https://togithub.com/2) (Morgan Roderick) > That makes ES2017 support explicit *Released by Morgan Roderick on 2022-11-07.* ### [`v14.0.1`](https://togithub.com/sinonjs/sinon/blob/HEAD/CHANGES.md#1401) [Compare Source](https://togithub.com/sinonjs/sinon/compare/v14.0.0...v14.0.1) - [`6c4753ef`](https://togithub.com/sinonjs/sinon/commit/6c4753ef243880f5cdf1ea9c88b569780f9dc013) Fixed CSS selectors in `_base.scss` and changed blockquote default size to 16px. (Jose Lupianez) - A bunch of dependency updates *Released by [Carl-Erik Kopseng](https://togithub.com/fatso83) on 2022-10-03.* </details> <details> <summary>microsoft/vscode-node-sqlite3 (sqlite3)</summary> ### [`v5.1.2`](https://togithub.com/microsoft/vscode-node-sqlite3/compare/15e3606959a08cc5d78046cf9de533b3f53d5f63...b2c911808316bf28b532aa756e6841263ac61279) [Compare Source](https://togithub.com/microsoft/vscode-node-sqlite3/compare/15e3606959a08cc5d78046cf9de533b3f53d5f63...b2c911808316bf28b532aa756e6841263ac61279) </details> <details> <summary>Microsoft/TypeScript (typescript)</summary> ### [`v4.9.5`](https://togithub.com/microsoft/TypeScript/releases/tag/v4.9.5): TypeScript 4.9.5 [Compare Source](https://togithub.com/Microsoft/TypeScript/compare/v4.9.4...v4.9.5) For release notes, check out the [release announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-4-9/). Downloads are available on: - [npm](https://www.npmjs.com/package/typescript) - [NuGet package](https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild) #### Changes: - [`69e88ef`](https://togithub.com/Microsoft/TypeScript/commit/69e88ef5513a81acf69ec78f4af1f927da0d0584) Port ignore deprecations to 4.9 ([#​52419](https://togithub.com/Microsoft/TypeScript/issues/52419)) - [`daf4e81`](https://togithub.com/Microsoft/TypeScript/commit/daf4e817a18def96b70ac34703b158ff0e6d58df) Port timestamp fix to 4.9 ([#​52426](https://togithub.com/Microsoft/TypeScript/issues/52426)) ### [`v4.9.4`](https://togithub.com/microsoft/TypeScript/releases/tag/v4.9.4): TypeScript 4.9.4 [Compare Source](https://togithub.com/Microsoft/TypeScript/compare/v4.9.3...v4.9.4) For release notes, check out the [release announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-4-9). For the complete list of fixed issues, check out the - [fixed issues query for Typescript v4.9.4](https://togithub.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=is%3Aissue+milestone%3A%22TypeScript+4.9.4%22+is%3Aclosed+). Downloads are available on: - [npm](https://www.npmjs.com/package/typescript) - [NuGet package](https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild) #### Changes: - [`e286821`](https://togithub.com/Microsoft/TypeScript/commit/e2868216f637e875a74c675845625eb15dcfe9a2) Bump version to 4.9.4 and LKG. - [`eb5419f`](https://togithub.com/Microsoft/TypeScript/commit/eb5419fc8d980859b98553586dfb5f40d811a745) Cherry-pick [#​51704](https://togithub.com/Microsoft/TypeScript/issues/51704) to release 4.9 ([#​51712](https://togithub.com/Microsoft/TypeScript/issues/51712)) - [`b4d382b`](https://togithub.com/Microsoft/TypeScript/commit/b4d382b9b12460adf2da4cc0d1429cf19f8dc8be) Cherry-pick changes for narrowing to tagged literal types. - [`e7a02f4`](https://togithub.com/Microsoft/TypeScript/commit/e7a02f43fce47e1a39259ada5460bcc33c8e98b5) Port of [#​51626](https://togithub.com/Microsoft/TypeScript/issues/51626) and [#​51689](https://togithub.com/Microsoft/TypeScript/issues/51689) to release-4.9 ([#​51627](https://togithub.com/Microsoft/TypeScript/issues/51627)) - [`1727912`](https://togithub.com/Microsoft/TypeScript/commit/1727912f0437a7f367d90040fc4b0b4f3efd017a) Cherry-pick fix around `visitEachChild` to release-4.9. ([#​51544](https://togithub.com/Microsoft/TypeScript/issues/51544)) This list of changes was [auto generated](https://typescript.visualstudio.com/cf7ac146-d525-443c-b23c-0d58337efebc/\_release?releaseId=117&\_a=release-summary). ### [`v4.9.3`](https://togithub.com/microsoft/TypeScript/releases/tag/v4.9.3): TypeScript 4.9 [Compare Source](https://togithub.com/Microsoft/TypeScript/compare/v4.8.4...v4.9.3) For release notes, check out the [release announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-4-9/). Downloads are available on: - [npm](https://www.npmjs.com/package/typescript) - [NuGet package](https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild) #### Changes: - [`93bd577`](https://togithub.com/Microsoft/TypeScript/commit/93bd577458d55cd720b2677705feab5c91eb12ce) Bump version to 4.9.3 and LKG. - [`107f832`](https://togithub.com/Microsoft/TypeScript/commit/107f832b80df2dc97748021cb00af2b6813db75b) Update LKG. - [`31bee56`](https://togithub.com/Microsoft/TypeScript/commit/31bee5682df130a14ffdd5742f994dbe7313dd0e) Cherry-pick PR [#​50977](https://togithub.com/Microsoft/TypeScript/issues/50977) into release-4.9 ([#​51363](https://togithub.com/Microsoft/TypeScript/issues/51363)) \[ [#​50872](https://togithub.com/Microsoft/TypeScript/issues/50872) ] - [`1e2fa7a`](https://togithub.com/Microsoft/TypeScript/commit/1e2fa7ae15f8530910fef8b916ec8a4ed0b59c45) Update version to 4.9.2-rc and LKG. - [`7ab89e5`](https://togithub.com/Microsoft/TypeScript/commit/7ab89e5c6e401d161f31f28a6c555a3ba530910e) Merge remote-tracking branch 'origin/main' into release-4.9 - [`e5cd686`](https://togithub.com/Microsoft/TypeScript/commit/e5cd686defb1a4cbdb36bd012357ba5bed28f371) Update package-lock.json - [`8d40dc1`](https://togithub.com/Microsoft/TypeScript/commit/8d40dc15d1b9945837e7860320fdccfe27c40cad) Update package-lock.json - [`5cfb3a2`](https://togithub.com/Microsoft/TypeScript/commit/5cfb3a2fe344a5350734305193e6cc99516285ca) Only call return() for an abrupt completion in user code ([#​51297](https://togithub.com/Microsoft/TypeScript/issues/51297)) - [`a7a9d15`](https://togithub.com/Microsoft/TypeScript/commit/a7a9d158e817fcb0e94dc1c24e0a401b21be0cc9) Fix for broken baseline in yieldInForInInDownlevelGenerator ([#​51345](https://togithub.com/Microsoft/TypeScript/issues/51345)) - [`7f8426f`](https://togithub.com/Microsoft/TypeScript/commit/7f8426f4df0d0a7dd8b72079dafc3e60164a23b1) fix for-in enumeration containing yield in generator ([#​51295](https://togithub.com/Microsoft/TypeScript/issues/51295)) <details><summary><b>See More</b></summary> - [`3d2b401`](https://togithub.com/Microsoft/TypeScript/commit/3d2b4017eb6b9a2b94bc673291e56ae95e8beddd) Fix assertion functions accessed via wildcard imports ([#​51324](https://togithub.com/Microsoft/TypeScript/issues/51324)) - [`64d0d5a`](https://togithub.com/Microsoft/TypeScript/commit/64d0d5ae140b7b26a09e75114517b418d6bcaa9f) fix(51301): Fixing an unused import at the end of a line removes the newline ([#​51320](https://togithub.com/Microsoft/TypeScript/issues/51320)) - [`754eeb2`](https://togithub.com/Microsoft/TypeScript/commit/754eeb2986bde30d5926e0fa99c87dda9266d01b) Update CodeQL workflow and configuration, fix found bugs ([#​51263](https://togithub.com/Microsoft/TypeScript/issues/51263)) - [`d8aad26`](https://togithub.com/Microsoft/TypeScript/commit/d8aad262006ad2d2c91aa7a0e4449b4b83c57f7b) Update package-lock.json - [`d4f26c8`](https://togithub.com/Microsoft/TypeScript/commit/d4f26c840b1db76c0b25a405c8e73830a2b45cbc) fix(51245): Class with parameter decorator in arrow function causes "convert to default export" refactoring failure ([#​51256](https://togithub.com/Microsoft/TypeScript/issues/51256)) - [`16faf45`](https://togithub.com/Microsoft/TypeScript/commit/16faf45682173ea437a50330feb4785578923d7f) Update package-lock.json - [`8b1ecdb`](https://togithub.com/Microsoft/TypeScript/commit/8b1ecdb701e2a2e19e9f8bcdd6b2beac087eabee) fix(50654): "Move to a new file" breaks the declaration of referenced variable ([#​50681](https://togithub.com/Microsoft/TypeScript/issues/50681)) - [`170a17f`](https://togithub.com/Microsoft/TypeScript/commit/170a17fad57eae619c5ef2b7bdb3ac00d6c32c47) Dom update 2022-10-25 ([#​51300](https://togithub.com/Microsoft/TypeScript/issues/51300)) - [`9c4e14d`](https://togithub.com/Microsoft/TypeScript/commit/9c4e14d75174432f6a4dc5967a09712a6784ab88) Remove "No type information for this code" from baseline ([#​51311](https://togithub.com/Microsoft/TypeScript/issues/51311)) - [`88d25b4`](https://togithub.com/Microsoft/TypeScript/commit/88d25b4f232929df59729156dfda6b65277affec) fix(50068): Refactors trigger debug failure when JSX text has a ' and a tag on the same line. ([#​51299](https://togithub.com/Microsoft/TypeScript/issues/51299)) - [`8bee69a`](https://togithub.com/Microsoft/TypeScript/commit/8bee69acf410d4986cb0cc102b949e2d133d5380) Update package-lock.json - [`702de1e`](https://togithub.com/Microsoft/TypeScript/commit/702de1eeaaef88a189e4d06e5a2aae287853790a) Fix early call to return/throw on generator ([#​51294](https://togithub.com/Microsoft/TypeScript/issues/51294)) - [`2c12b14`](https://togithub.com/Microsoft/TypeScript/commit/2c12b1499908ad7718e65d20e264561207c22375) Add a GH Action to file a new issue if we go a week without seeing a typescript-error-deltas issue ([#​51271](https://togithub.com/Microsoft/TypeScript/issues/51271)) - [`6af270d`](https://togithub.com/Microsoft/TypeScript/commit/6af270dee09d62516f6dc02ec102a745ffebc037) Update package-lock.json - [`2cc4c16`](https://togithub.com/Microsoft/TypeScript/commit/2cc4c16a26672a7ba6c97ba16309fcf334db7cae) Update package-lock.json - [`6093491`](https://togithub.com/Microsoft/TypeScript/commit/60934915d9ccc4ca9c0fb2cd060d7ec81601942b) Fix apparent typo in getStringMappingType ([#​51248](https://togithub.com/Microsoft/TypeScript/issues/51248)) - [`61c2609`](https://togithub.com/Microsoft/TypeScript/commit/61c26096e3373719ece686b84c698423890e9a5f) Update package-lock.json - [`ef69116`](https://togithub.com/Microsoft/TypeScript/commit/ef69116c41cb6805f89e6592eacb0ccb7f02207d) Generate shortest `rootDirs` module specifier instead of first possible ([#​51244](https://togithub.com/Microsoft/TypeScript/issues/51244)) - [`bbb42f4`](https://togithub.com/Microsoft/TypeScript/commit/bbb42f453dc684e03d977c5b70391124d57543a9) Fix typo in canWatchDirectoryOrFile found by CodeQL ([#​51262](https://togithub.com/Microsoft/TypeScript/issues/51262)) - [`a56b254`](https://togithub.com/Microsoft/TypeScript/commit/a56b254ad3c52b598bc5d44f83f3d0a1cf806068) Include 'this' type parameter in isRelatedTo fast path ([#​51230](https://togithub.com/Microsoft/TypeScript/issues/51230)) - [`3abd351`](https://togithub.com/Microsoft/TypeScript/commit/3abd351c0eea55758f27ee5558a4a1525b77f45b) Fix super property transform in async arrow in method ([#​51240](https://togithub.com/Microsoft/TypeScript/issues/51240)) - [`eed0511`](https://togithub.com/Microsoft/TypeScript/commit/eed05112180e0d94f78aa02d676d49468f15dc31) Update package-lock.json - [`2625c1f`](https://togithub.com/Microsoft/TypeScript/commit/2625c1feae25aede35465ca835440fc57bf13d52) Make the init config category order predictable ([#​51247](https://togithub.com/Microsoft/TypeScript/issues/51247)) - [`1ca99b3`](https://togithub.com/Microsoft/TypeScript/commit/1ca99b34029dafad2c18af7bdc0711f4abf7e522) fix(50551): Destructuring assignment with var bypasses "variable is used before being assigned" check (2454) ([#​50560](https://togithub.com/Microsoft/TypeScript/issues/50560)) - [`3f28fa1`](https://togithub.com/Microsoft/TypeScript/commit/3f28fa12dfecb8dfd66ce4684bf26f64e1f092f1) Update package-lock.json - [`906ebe4`](https://togithub.com/Microsoft/TypeScript/commit/906ebe49334a3a9c2dbd73cd3c902898bc712b66) Revert structuredTypeRelatedTo change and fix isUnitLikeType ([#​51076](https://togithub.com/Microsoft/TypeScript/issues/51076)) - [`8ac4652`](https://togithub.com/Microsoft/TypeScript/commit/8ac465239f52de1da3ada8cdc4c3f107f4d62e45) change type ([#​51231](https://togithub.com/Microsoft/TypeScript/issues/51231)) - [`245a02c`](https://togithub.com/Microsoft/TypeScript/commit/245a02cbed7ad50a21289730159abc8d19a66f40) fix(51222): Go-to-definition on return statements should jump to the containing function declaration ([#​51227](https://togithub.com/Microsoft/TypeScript/issues/51227)) - [`2dff34e`](https://togithub.com/Microsoft/TypeScript/commit/2dff34e8c4a91c0005ca9ccfb7e045e225b6f2e4) markAliasReferenced should include ExportValue as well ([#​51219](https://togithub.com/Microsoft/TypeScript/issues/51219)) - [`5ef2634`](https://togithub.com/Microsoft/TypeScript/commit/5ef2634f3df138323383c7f2e5a05163a924ee86) Update package-lock.json - [`d0f0e35`](https://togithub.com/Microsoft/TypeScript/commit/d0f0e35c88ae017fc4c1213eb2f83303ee22ebde) Remove old tslint comments ([#​51220](https://togithub.com/Microsoft/TypeScript/issues/51220)) - [`85d405a`](https://togithub.com/Microsoft/TypeScript/commit/85d405a1d74c0730a9d8d6307b26e8d6f3f75421) Fixed a false positive "await has no effect on the type" diagnostic with mixed generic union ([#​50833](https://togithub.com/Microsoft/TypeScript/issues/50833)) - [`1f8959f`](https://togithub.com/Microsoft/TypeScript/commit/1f8959f5dc04b2b2c2fc8a7dc53b6ac761e1f754) fix: avoid downleveled dynamic import closing over specifier expression ([#​49663](https://togithub.com/Microsoft/TypeScript/issues/49663)) - [`11066b2`](https://togithub.com/Microsoft/TypeScript/commit/11066b264f5d30fb5ac1f6c2f3a155c0190e75d2) Rename internal functions to `narrowTypeBySwitchOnTypeOf` and `narrowTypeByInKeyword` ([#​51215](https://togithub.com/Microsoft/TypeScript/issues/51215)) - [`4c9afe8`](https://togithub.com/Microsoft/TypeScript/commit/4c9afe8812fcdb4658472ccbced4a5cd4bae70ea) Update package-lock.json - [`f25bcb7`](https://togithub.com/Microsoft/TypeScript/commit/f25bcb7c27d78ce89e9c9356d27058cf86dbfb5c) fix(49196): add jsdoc snippet for interface member functions ([#​51135](https://togithub.com/Microsoft/TypeScript/issues/51135)) - [`7406ee9`](https://togithub.com/Microsoft/TypeScript/commit/7406ee9c145cd7d6117391818d5a1eca2d66ca8f) fix(51170): Completing an unimplemented property overwrites rest of line ([#​51175](https://togithub.com/Microsoft/TypeScript/issues/51175)) - [`a1d82fc`](https://togithub.com/Microsoft/TypeScript/commit/a1d82fc9dcced6ca6bde6e21c385d152d083679f) Remove some unnecessary code discovered by rollup ([#​51204](https://togithub.com/Microsoft/TypeScript/issues/51204)) - [`0481773`](https://togithub.com/Microsoft/TypeScript/commit/0481773a27fc6a0132c34502fd2a3b0c73cf63a3) LEGO: Merge pull request 51200 - [`98c19cb`](https://togithub.com/Microsoft/TypeScript/commit/98c19cbbbe83c2ae3c89a4e08317a4b9ccbcb206) LEGO: Merge pull request 51190 - [`13c9b05`](https://togithub.com/Microsoft/TypeScript/commit/13c9b05384544262363f3fd8b942b36aeb84fc61) Update package-lock.json - [`673475e`](https://togithub.com/Microsoft/TypeScript/commit/673475e1c5e582f2fd0bf8d89e33c7708607c8d8) Update package-lock.json - [`f6cf510`](https://togithub.com/Microsoft/TypeScript/commit/f6cf51053e024714dd6b8463fe6f8e7e33461e6b) Add more tracing to node16/nodenext resolution ([#​51168](https://togithub.com/Microsoft/TypeScript/issues/51168)) - [`83c5581`](https://togithub.com/Microsoft/TypeScript/commit/83c5581588f660247bd9648bafe67b49de060a55) Update package-lock.json - [`be5f0fe`](https://togithub.com/Microsoft/TypeScript/commit/be5f0fe5acfed5146514ebe7c1b65529def8e490) Add an extra regression test for awaited unresolvable recursive union ([#​51167](https://togithub.com/Microsoft/TypeScript/issues/51167)) - [`2cb7e77`](https://togithub.com/Microsoft/TypeScript/commit/2cb7e779d70d57ef0d46dd3f768e646b8bbe783a) fix(50416): correctly names disabled export refactors ([#​50663](https://togithub.com/Microsoft/TypeScript/issues/50663)) \[ [#​50416](https://togithub.com/Microsoft/TypeScript/issues/50416) ] - [`2bcfed0`](https://togithub.com/Microsoft/TypeScript/commit/2bcfed01f3458996e71ce37af43e3495cb7e4950) feat(37440): Provide a quick-fix for non-exported types ([#​51038](https://togithub.com/Microsoft/TypeScript/issues/51038)) - [`a24201c`](https://togithub.com/Microsoft/TypeScript/commit/a24201c8ef6f82b5729ab677b7a1a1d6d745fcb8) Remove VSDevMode.ps1 and createPlaygroundBuild ([#​51166](https://togithub.com/Microsoft/TypeScript/issues/51166)) - [`2da62a7`](https://togithub.com/Microsoft/TypeScript/commit/2da62a784bbba237b8239e84c8629cfafb0f595e) fix(51112): omit parameter names that precede the type ([#​51142](https://togithub.com/Microsoft/TypeScript/issues/51142)) - [`cf1b6b7`](https://togithub.com/Microsoft/TypeScript/commit/cf1b6b73330eab2dd484d71cbdb662a83b3c726f) feat(51163): show QF to fill in the missing properties for the mapped type. ([#​51165](https://togithub.com/Microsoft/TypeScript/issues/51165)) - [`bdcc240`](https://togithub.com/Microsoft/TypeScript/commit/bdcc240d68245e4be865b385bd6a8fd8fa546f56) Remove bug-causing carve-out in conditional type instantiation that hopefully is no longer required ([#​51151](https://togithub.com/Microsoft/TypeScript/issues/51151)) - [`37317a2`](https://togithub.com/Microsoft/TypeScript/commit/37317a208f34c141b64e26d0e92b3aed346e531f) Check nested weak types in intersections on target side of relation ([#​51140](https://togithub.com/Microsoft/TypeScript/issues/51140)) - [`9f49f9c`](https://togithub.com/Microsoft/TypeScript/commit/9f49f9ccb05a7bb56b8ca84b8036a3ad4e0e7c2b) Update package-lock.json - [`4f54e7e`](https://togithub.com/Microsoft/TypeScript/commit/4f54e7e947298162d29f3104265e74dcfbc90d82) Fix isExhaustiveSwitchStatement to better handle circularities ([#​51095](https://togithub.com/Microsoft/TypeScript/issues/51095)) - [`503604c`](https://togithub.com/Microsoft/TypeScript/commit/503604c884bd0557c851b11b699ef98cdb65b93b) Overloads shouldn't gain [@​deprecated](https://togithub.com/deprecated) tags of other overloads in quick info ([#​50904](https://togithub.com/Microsoft/TypeScript/issues/50904)) - [`e14a229`](https://togithub.com/Microsoft/TypeScript/commit/e14a2298c5add93816c6f487bcfc5ac72e3a4c59) Update package-lock.json - [`67256e5`](https://togithub.com/Microsoft/TypeScript/commit/67256e50c41aa9178a60c52de8416477f070b190) Remove unused declarations array in extractSymbol's TargetRange ([#​51091](https://togithub.com/Microsoft/TypeScript/issues/51091)) - [`9c87ded`](https://togithub.com/Microsoft/TypeScript/commit/9c87ded2b3fc4ba4a9a7656e9be39d5e404e6ab6) fix(51100): ensure tsserver shuts down when parent process is killed ([#​51107](https://togithub.com/Microsoft/TypeScript/issues/51107)) - [`c01ae01`](https://togithub.com/Microsoft/TypeScript/commit/c01ae01fac37268bac3362fb6e6d26db730f7ed5) Fix nightly publish oops in Gulpfile ([#​51131](https://togithub.com/Microsoft/TypeScript/issues/51131)) - [`a7d10f1`](https://togithub.com/Microsoft/TypeScript/commit/a7d10f15bbd28166b869ae00482214e360891613) Update package-lock.json - [`d0bfd8c`](https://togithub.com/Microsoft/TypeScript/commit/d0bfd8caed521bfd24fc44960d9936a891744bb7) fix(51072): ts.preProcessFile finds import in template string after conditional expression with template strings ([#​51082](https://togithub.com/Microsoft/TypeScript/issues/51082)) - [`ad56b5c`](https://togithub.com/Microsoft/TypeScript/commit/ad56b5ca56b763ab377e07121ecfebb457a2e810) Convert scripts/Gulpfile to checked mjs/cjs so they can run without compilation ([#​50988](https://togithub.com/Microsoft/TypeScript/issues/50988)) - [`dbeae5d`](https://togithub.com/Microsoft/TypeScript/commit/dbeae5d943c784661862c52b8e215a2907c31a33) fix(51017): Make lineText in the references response opt-out ([#​51081](https://togithub.com/Microsoft/TypeScript/issues/51081)) - [`d06a592`](https://togithub.com/Microsoft/TypeScript/commit/d06a592d02955822a7407b70969fb7a82bc17d59) Properly defer resolution of mapped types with generic `as` clauses ([#​51050](https://togithub.com/Microsoft/TypeScript/issues/51050)) - [`42b1049`](https://togithub.com/Microsoft/TypeScript/commit/42b1049aee8c655631cb4f0065de86ec1023d20a) Update package-lock.json - [`5f3e6cc`](https://togithub.com/Microsoft/TypeScript/commit/5f3e6cc4980d26af5d8a8f463e59b2c3338165c6) Plugin probe location is higher priority than peer node_modules ([#​51079](https://togithub.com/Microsoft/TypeScript/issues/51079)) \[ [#​34616](https://togithub.com/Microsoft/TypeScript/issues/34616) ] - [`2648f6a`](https://togithub.com/Microsoft/TypeScript/commit/2648f6ab09e3176c7da2c07c54066d3a3433a298) Plugins in project were adding up after every config file reload ([#​51087](https://togithub.com/Microsoft/TypeScript/issues/51087)) - [`c18791c`](https://togithub.com/Microsoft/TypeScript/commit/c18791ccf165672df3b55f5bdd4a8655f33be26c) Fix incorrect options type to WatchOptions ([#​51064](https://togithub.com/Microsoft/TypeScript/issues/51064)) - [`b0795e9`](https://togithub.com/Microsoft/TypeScript/commit/b0795e9c94757a8ee78077d160cde8819a9801ea) Update package-lock.json - [`43c6fd4`](https://togithub.com/Microsoft/TypeScript/commit/43c6fd4c09464204bc6a6e1c6c1d32fa12270414) Covert some of the config testing to baselines for easy validation ([#​51063](https://togithub.com/Microsoft/TypeScript/issues/51063)) - [`fc5e72b`](https://togithub.com/Microsoft/TypeScript/commit/fc5e72b92cb8ea13c5e0f2cfc35d8b2cbfd1fe36) Remove unused defaultWatchFileKind method since useFsEvents is default for tsserver and tsc ([#​51044](https://togithub.com/Microsoft/TypeScript/issues/51044)) - [`8af9a93`](https://togithub.com/Microsoft/TypeScript/commit/8af9a936b5240398370887c22cacaff65fee707b) Use typescript.d.ts in APISample tests ([#​51061](https://togithub.com/Microsoft/TypeScript/issues/51061)) - [`4953316`](https://togithub.com/Microsoft/TypeScript/commit/49533168dbb4e19f243b9dbdfd6a3aac69f5b3dd) Remove configureLanguageServiceBuild, instrumenter ([#​51048](https://togithub.com/Microsoft/TypeScript/issues/51048)) - [`9dfffd0`](https://togithub.com/Microsoft/TypeScript/commit/9dfffd0fbb406d7f2e5e2ca85768624ca388a7bf) Update GitHub Actions ([#​51045](https://togithub.com/Microsoft/TypeScript/issues/51045)) - [`4635a5c`](https://togithub.com/Microsoft/TypeScript/commit/4635a5cef9aefa9aa847ef7ce2e6767ddf4f54c2) Update package-lock.json - [`33a34e5`](https://togithub.com/Microsoft/TypeScript/commit/33a34e5b96bfe086266f4765ab9789a2a02507f9) Adding a JSDoc comment to the es5 type declarations to describe the functionality of Date.now() ([#​50630](https://togithub.com/Microsoft/TypeScript/issues/50630)) - [`299745c`](https://togithub.com/Microsoft/TypeScript/commit/299745cb217c2fc061f75b3735f8420d78b8360a) Fix crash in goto-def on `@override` ([#​51016](https://togithub.com/Microsoft/TypeScript/issues/51016)) - [`7dcf11f`](https://togithub.com/Microsoft/TypeScript/commit/7dcf11f13985be927886ebea353d282a9b3418e0) fix(50750): Object type literal with string literal property in contextual typing position causes language service error on all literal type references ([#​50757](https://togithub.com/Microsoft/TypeScript/issues/50757)) - [`5cd49f6`](https://togithub.com/Microsoft/TypeScript/commit/5cd49f6cbcd2effe9d425dee3a39cb49209bb656) Update package-lock.json - [`8a1b858`](https://togithub.com/Microsoft/TypeScript/commit/8a1b85880f89c9cff606c5844e8883e5f483c7db) Update package-lock.json - [`96894db`](https://togithub.com/Microsoft/TypeScript/commit/96894db6cb5b7af6857b4d0c7f70f7d8ac782d51) Include type parameter defaults in contextual typing ([#​50994](https://togithub.com/Microsoft/TypeScript/issues/50994)) \[ [#​51002](https://togithub.com/Microsoft/TypeScript/issues/51002) ] - [`0d0a793`](https://togithub.com/Microsoft/TypeScript/commit/0d0a79371471d627ae298a145f8009b05cbccb72) Allow Unicode extended escapes in ES5 and earlier ([#​50918](https://togithub.com/Microsoft/TypeScript/issues/50918)) - [`58bae8d`](https://togithub.com/Microsoft/TypeScript/commit/58bae8db69b275a3efa57b14b486778c55185552) Update package-lock.json - [`0ce72ef`](https://togithub.com/Microsoft/TypeScript/commit/0ce72ef6c8b39cd2d07e5b0eb3a0c144a7783ad2) Add option to OrganizeImports for removal only ([#​50931](https://togithub.com/Microsoft/TypeScript/issues/50931)) - [`42f9143`](https://togithub.com/Microsoft/TypeScript/commit/42f9143e114c5c07f40df83ed07ffeb3cbaf2101) feat: codefix for `for await of` ([#​50623](https://togithub.com/Microsoft/TypeScript/issues/50623)) - [`ecf50e8`](https://togithub.com/Microsoft/TypeScript/commit/ecf50e81a7a9cccd9bf5ea7598764082981faab0) Properly compute `SymbolFlags.Optional` for intersected properties ([#​50958](https://togithub.com/Microsoft/TypeScript/issues/50958)) - [`d1586de`](https://togithub.com/Microsoft/TypeScript/commit/d1586de0434567b998876929eb8229235b85b350) Fully resolve aliases when checking symbol flags ([#​50853](https://togithub.com/Microsoft/TypeScript/issues/50853)) - [`45148dd`](https://togithub.com/Microsoft/TypeScript/commit/45148dd715a7c3776840778b4df41e7e0bd0bf12) Update LKG to 4.8.4 ([#​50987](https://togithub.com/Microsoft/TypeScript/issues/50987)) - [`9a83f25`](https://togithub.com/Microsoft/TypeScript/commit/9a83f2551ded0d88a0ba0ec9af260f83eb3568cd) Update package-lock.json - [`865848f`](https://togithub.com/Microsoft/TypeScript/commit/865848fcfb9e6ce7dd64be563fc09f83d4bc9df5) Fix `<=` and `>` comparisons when compared against prerelease versions ([#​50915](https://togithub.com/Microsoft/TypeScript/issues/50915)) - [`fbfe934`](https://togithub.com/Microsoft/TypeScript/commit/fbfe9340a90777dee03b30f736fab44056123be0) Fix comparability between type parameters related by a union constraint ([#​50978](https://togithub.com/Microsoft/TypeScript/issues/50978)) - [`b09e93d`](https://togithub.com/Microsoft/TypeScript/commit/b09e93d3f6d3e999df001b53984954974c25b81f) Merge pull request [#​50041](https://togithub.com/Microsoft/TypeScript/issues/50041) from microsoft/fix/47969 - [`0ac12bb`](https://togithub.com/Microsoft/TypeScript/commit/0ac12bbe7a410238ca992a42f41816a97f6906f4) Update package-lock.json - [`8192d55`](https://togithub.com/Microsoft/TypeScript/commit/8192d550496d884263e292488e325ae96893dc78) Pick correct compilerOptions when checking if we can share emitSignatures ([#​50910](https://togithub.com/Microsoft/TypeScript/issues/50910)) \[ [#​50902](https://togithub.com/Microsoft/TypeScript/issues/50902) ] - [`16faef1`](https://togithub.com/Microsoft/TypeScript/commit/16faef1d8d522b66b6c672bdd15b4026e2018a62) During uptodate ness check with buildInfo, check if there are errors explicitly with noEmit ([#​50974](https://togithub.com/Microsoft/TypeScript/issues/50974)) \[ [#​50959](https://togithub.com/Microsoft/TypeScript/issues/50959) ] - [`63791f5`](https://togithub.com/Microsoft/TypeScript/commit/63791f52d4e7a3bf461b974e94abd8cbb6b546c5) Update package-lock.json - [`09368bc`](https://togithub.com/Microsoft/TypeScript/commit/09368bcbaebd157d1e66859ab6f5b30c2fd6eaff) Handle if project for open file will get recollected because of pending cleanup from closed script info ([#​50908](https://togithub.com/Microsoft/TypeScript/issues/50908)) \[ [#​50868](https://togithub.com/Microsoft/TypeScript/issues/50868) ] - [`c81bf4d`](https://togithub.com/Microsoft/TypeScript/commit/c81bf4d8b0c12410a082d6598fcc24cc721b6e9e) fix(49594): Typescript 4.7.3 bracketed class property compilation error strictPropertyInitialization:true ([#​49619](https://togithub.com/Microsoft/TypeScript/issues/49619)) - [`bc9cbbe`](https://togithub.com/Microsoft/TypeScript/commit/bc9cbbef421ae907f7dfd5a84ca69c4f68a8935b) Merge pull request [#​49912](https://togithub.com/Microsoft/TypeScript/issues/49912) from microsoft/fix/47508 - [`5a10f46`](https://togithub.com/Microsoft/TypeScript/commit/5a10f46c0028790120cb85c826efa4248707a964) Update package-lock.json - [`8e71f42`](https://togithub.com/Microsoft/TypeScript/commit/8e71f429c811ac7811533d7b0e02c32bad5a1b47) Fixing pr comments - [`c100c64`](https://togithub.com/Microsoft/TypeScript/commit/c100c6488db0482dcc1455290f456dece91cac0a) Update package-lock.json - [`2a91107`](https://togithub.com/Microsoft/TypeScript/commit/2a91107f7548eeb5e32673e76277d27264ea88e2) Update package-lock.json - [`4ab9e76`](https://togithub.com/Microsoft/TypeScript/commit/4ab9e76fb748b08712f9d0017dd8f0ba74d1859f) Use paths in package.json 'files' array that work with npm 6 and later. ([#​50930](https://togithub.com/Microsoft/TypeScript/issues/50930)) - [`549b542`](https://togithub.com/Microsoft/TypeScript/commit/549b5429d4837344e8c99657109bb6538fd2dbb5) Use paths in package.json 'files' array that work with npm 6 and later. - [`7f37d25`](https://togithub.com/Microsoft/TypeScript/commit/7f37d251fc69da34659e4c60792177e1e9a8e7a6) Update version to 4.9.1-beta and LKG. - [`f16ca7d`](https://togithub.com/Microsoft/TypeScript/commit/f16ca7dd364e57ee7ce337f987b20dbc1e34941f) Remove 'async' dependency, used only in errorCheck.ts, modernize file ([#​50667](https://togithub.com/Microsoft/TypeScript/issues/50667)) - [`c6bef3f`](https://togithub.com/Microsoft/TypeScript/commit/c6bef3f02874bddf6df120aa4f0d130c58478468) LEGO: Merge pull request 50921 - [`6753027`](https://togithub.com/Microsoft/TypeScript/commit/675302730b8ca525d47c910bf2d3174bd3b66a1b) Update package-lock.json - [`9740bcc`](https://togithub.com/Microsoft/TypeScript/commit/9740bcc53418e8792a4dbb978059ff5a02b55c91) Pluralized `hasInvalidatedResolution` -> `hasInvalidatedResolutions` ([#​50912](https://togithub.com/Microsoft/TypeScript/issues/50912)) - [`84c29cd`](https://togithub.com/Microsoft/TypeScript/commit/84c29cd576fd1facb9b3a353d5342df04acdb184) 🤖 Pick PR [#​50912](https://togithub.com/Microsoft/TypeScript/issues/50912) (Pluralized \`hasInvalidatedResolutio...) into release-4.9 ([#​50913](https://togithub.com/Microsoft/TypeScript/issues/50913)) - [`a26f634`](https://togithub.com/Microsoft/TypeScript/commit/a26f63424de249bb106804dfc9a024bb525de93e) Merge remote-tracking branch 'origin/main' into release-4.9 - [`a455955`](https://togithub.com/Microsoft/TypeScript/commit/a455955aac85ecc5b2182fe50b83670188955feb) Make hasInvalidatedResolution non internal for program and add it watchApi ([#​50776](https://togithub.com/Microsoft/TypeScript/issues/50776)) \[ [#​48057](https://togithub.com/Microsoft/TypeScript/issues/48057) ] - [`645d1cd`](https://togithub.com/Microsoft/TypeScript/commit/645d1cd7c1ee1d65a87b2183b173611467256a09) Fix assert in addIndirectUser in FAR ([#​50905](https://togithub.com/Microsoft/TypeScript/issues/50905)) - [`bbec17d`](https://togithub.com/Microsoft/TypeScript/commit/bbec17d9003246fa00d6bf676bb4ce7c54ff2be4) LEGO: Merge pull request 50900 - [`a9ecc67`](https://togithub.com/Microsoft/TypeScript/commit/a9ecc675d636c3bbca697bc4881b019e8645a7a6) Update package-lock.json - [`221cf55`](https://togithub.com/Microsoft/TypeScript/commit/221cf55a21e448bd3fe2cf26a754c9c0dda3dca3) package.json `exports` should have priority over `typesVersions` ([#​50890](https://togithub.com/Microsoft/TypeScript/issues/50890)) - [`acb8977`](https://togithub.com/Microsoft/TypeScript/commit/acb89771901f8c81c6046fa7c16361a83388ddab) Remove .github/tsc.json ([#​50664](https://togithub.com/Microsoft/TypeScript/issues/50664)) - [`7a3de81`](https://togithub.com/Microsoft/TypeScript/commit/7a3de819bfb93fb27ef7ea8305d2df069866c380) fix(49993): skip the quick fix for an expression with an enum type ([#​50625](https://togithub.com/Microsoft/TypeScript/issues/50625)) - [`2644f28`](https://togithub.com/Microsoft/TypeScript/commit/2644f2867734d77a3a3939c55d5cc0a5004df0ed) fix(49200): skip duplicated method declarations ([#​50609](https://togithub.com/Microsoft/TypeScript/issues/50609)) - [`98652a3`](https://togithub.com/Microsoft/TypeScript/commit/98652a349a67be718e8e8b5fcf590972eb62a104) Bump version to 4.9.0-beta and LKG. - [`4d91204`](https://togithub.com/Microsoft/TypeScript/commit/4d91204c9d9f27756785f62fade44d93824d47f4) fix(37030): Expand Selection in function and arrow function skips body block ([#​50711](https://togithub.com/Microsoft/TypeScript/issues/50711)) - [`e2dd508`](https://togithub.com/Microsoft/TypeScript/commit/e2dd5084f75ac37a78102d212b67d36595596137) DOM update 2022/09/21 ([#​50884](https://togithub.com/Microsoft/TypeScript/issues/50884)) - [`1d9ab83`](https://togithub.com/Microsoft/TypeScript/commit/1d9ab83914a551936ce5ef80340ee65cfd1422ba) fix(50866): emit modifiers from export declarations ([#​50874](https://togithub.com/Microsoft/TypeScript/issues/50874)) - [`92a1b12`](https://togithub.com/Microsoft/TypeScript/commit/92a1b124c178e1ff4871b29cb9abc00307e21742) LEGO: Merge pull request 50877 - [`e383db6`](https://togithub.com/Microsoft/TypeScript/commit/e383db692eb44561333c1bbe353788b337aebc99) Fix debug.ts \__debugKind check ([#​50871](https://togithub.com/Microsoft/TypeScript/issues/50871)) - [`01054e0`](https://togithub.com/Microsoft/TypeScript/commit/01054e05ab7638e96515619c4ce62200fdf4e0fd) Consistently add undefined/missing to optional tuple element types ([#​50831](https://togithub.com/Microsoft/TypeScript/issues/50831)) - [`d90795e`](https://togithub.com/Microsoft/TypeScript/commit/d90795e799ca8e41aabd6d0852abb585138200ef) Improve escape sequence handling in private names ([#​50856](https://togithub.com/Microsoft/TypeScript/issues/50856)) - [`938a69a`](https://togithub.com/Microsoft/TypeScript/commit/938a69a526166ca4e7880fa140fba432936f0fe3) Fix import statement completions followed by interface declaration ([#​50350](https://togithub.com/Microsoft/TypeScript/issues/50350)) - [`e002159`](https://togithub.com/Microsoft/TypeScript/commit/e002159ad133a024bae48a2e190e54ad93f6b52d) feat(49962): Disallow comparison against NaN ([#​50626](https://togithub.com/Microsoft/TypeScript/issues/50626)) - [`80ae43d`](https://togithub.com/Microsoft/TypeScript/commit/80ae43d2399503a04651e3705823137d36148b00) Fixing spaces - [`abc58bd`](https://togithub.com/Microsoft/TypeScript/commit/abc58bdabcf536bd5204fbc84fb7f45d75f1a9ad) Fixing baseline errors - [`305f4bd`](https://togithub.com/Microsoft/TypeScript/commit/305f4bd420bf9edc0239fd3a740aa83fbdeb9ba2) Merge branch 'main' into fix/47969 - [`23746af`](https://togithub.com/Microsoft/TypeScript/commit/23746af766b53fcc3afecfa16478809a5a36628a) fix(50591): RangeError: Maximum call stack size exceeded ([#​50594](https://togithub.com/Microsoft/TypeScript/issues/50594)) - [`168186f`](https://togithub.com/Microsoft/TypeScript/commit/168186f93d23ae59dbea3fea2adba453527343fd) Allow a union property of a private/protected member and an intersection property including that same member ([#​50328](https://togithub.com/Microsoft/TypeScript/issues/50328)) - [`812ebcf`](https://togithub.com/Microsoft/TypeScript/commit/812ebcf6e3aebfa72b976a6ae4d65929759a2867) Update package-lock.json - [`16156b1`](https://togithub.com/Microsoft/TypeScript/commit/16156b1baf26a39ce428423f7106f3ef2b4e98bb) Add rules from eslint's recommended set that triggered good lints ([#​50422](https://togithub.com/Microsoft/TypeScript/issues/50422)) - [`a11c416`](https://togithub.com/Microsoft/TypeScript/commit/a11c41621bbbab100a391dd348651c6661549663) Improve checking of `in` operator ([#​50666](https://togithub.com/Microsoft/TypeScript/issues/50666)) - [`67f2b62`](https://togithub.com/Microsoft/TypeScript/commit/67f2b62ed2bd1de0299781ba659fa638346bcecf) Gabritto/jsemitfixsilly ([#​50849](https://togithub.com/Microsoft/TypeScript/issues/50849)) - [`3014dec`](https://togithub.com/Microsoft/TypeScript/commit/3014dec8878a9ff8d86186a6ac3fd9fad4f3b739) Don't elide imports when transforming JS files ([#​50404](https://togithub.com/Microsoft/TypeScript/issues/50404)) - [`57c7aa7`](https://togithub.com/Microsoft/TypeScript/commit/57c7aa755ca3028ff13eb6a37d91775a6fac71e3) LEGO: Merge pull request 50842 - [`48a8e89`](https://togithub.com/Microsoft/TypeScript/commit/48a8e8953a1e609970dc85e08f99ac499bfe8356) Improve check of whether type query node possibly contains reference to type parameter ([#​50070](https://togithub.com/Microsoft/TypeScript/issues/50070)) - [`af9ced1`](https://togithub.com/Microsoft/TypeScript/commit/af9ced11f50c8ac15079d2f88f8961f1e5b62f7f) LEGO: Merge pull request 50825 - [`a8e13f7`](https://togithub.com/Microsoft/TypeScript/commit/a8e13f7340c5229426072d443fa511bba82a0054) Fixed an issue with destructured bindings from a generic union constraint not being narrowed correctly ([#​50221](https://togithub.com/Microsoft/TypeScript/issues/50221)) - [`08af0b6`](https://togithub.com/Microsoft/TypeScript/commit/08af0b6bf0041fef52ca8c1b69d6d4a3db439196) Update package-lock.json - [`0df46e8`](https://togithub.com/Microsoft/TypeScript/commit/0df46e873322b8eeb271a442eaf034d91ae68770) Fix test around RegExp match vs. exec results ([#​50813](https://togithub.com/Microsoft/TypeScript/issues/50813)) - [`906510e`](https://togithub.com/Microsoft/TypeScript/commit/906510e0f30590a4c8fdc892905ccb8dbe512e3d) Fixes for pr - [`2970c5d`](https://togithub.com/Microsoft/TypeScript/commit/2970c5d1671b2376711cd55594c4597d6da7d8c3) make `RegExpExecArray` always include index 0 ([#​50713](https://togithub.com/Microsoft/TypeScript/issues/50713)) - [`0507192`](https://togithub.com/Microsoft/TypeScript/commit/05071920a03f8ea530fe01f79f2537c999ec8b02) Accepting baselines - [`29e50b3`](https://togithub.com/Microsoft/TypeScript/commit/29e50b314900d22b08f6472918f59ae2b40aba08) Rewording documentation - [`01cae69`](https://togithub.com/Microsoft/TypeScript/commit/01cae69e3403a831bc5c752b95c8b7547dd95821) fix(50796): omit questionToken in object literal method completions ([#​50802](https://togithub.com/Microsoft/TypeScript/issues/50802)) - [`3b84f76`](https://togithub.com/Microsoft/TypeScript/commit/3b84f76fb23bd39d14c7243e5cd495fd207916c0) Fix crash caused by incorrect bounds check (regression in 4.8) ([#​50797](https:/ </details> --- ### Configuration 📅 **Schedule**: Branch creation - "before 3am on Monday" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/sequelize/umzug). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMS41IiwidXBkYXRlZEluVmVyIjoiMzcuODEuMyIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Fixes #29
Fixes #26
Fixes #5
This is a breaking change as I opted to remove the types that were no longer needed. They are exported though so it's likely some people depend on them. I can add these back as desired.
This took a lot of tinkering. This topic and this equality check is discussed extensively at microsoft/TypeScript#27024
The main three edge-cases this implementation worked around are:
any
separatelyThe only remaining known issue with this implementation is:
@shicks and I could not find a tweak to the
Equality
check to make this work.Instead, I added a workaround in the shape of a new
.simplified
modifier that works similar to.not
:I'm not entirely sure what to do with documenting
.simplified
because it's something you should never use unless you need it. The simplify operation tends to lose information about the types being tested (e.g., functions become{}
and classes lose their constructors). I'll definitely update this PR to reference the.simplified
modifier but I wanted to get a review on this approach first. One option would be to keep around all theDeepBrand
stuff and to have.deepBranded
or something being the modifier instead. That would have the benefit of preserving all the exported types making this less of a breaking change.