Skip to content
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

Improve CLI error messages #16

Merged
merged 62 commits into from Oct 3, 2023
Merged

Improve CLI error messages #16

merged 62 commits into from Oct 3, 2023

Conversation

mmkal
Copy link
Owner

@mmkal mmkal commented Oct 23, 2022

Fixes #17
Closes #36 (by documenting that toMatchTypeOf ~= toExtend)
Closes #37 (by documenting that helper types are not part of the API surface)
Closes #32
Closes #4
Closes #6 (by documenting that you can't use .not.toBeCallableWith(...))
Closes #38

Use generics to give better error messages than "Arguments for the rest parameter 'MISMATCH' were not provided" for most toEqualTypeOf cases and many toMatchTypeOf cases. This trades off some implementation complexity for better end-user error messages. Essentially, write a special <Expected extends ...> constraint for each overload of each method, which does some crazy conditional logic, which boil down to:

  • <Expected extends Actual> for toEqualTypeOf (when we aren't in a .not context)
  • <Expected extends Satisfies<Actual>> for toMatchTypeOf

Anyone interested, have a look at the snapshot updates in errors.test.ts.snap to see what the real world difference is.

Each of these constraints apply only when we know it's going to "fail" - i.e. Satisfies<...> is a fairly meaningless helper type that is used to try to show errors at the type-constraint level rather than the ...MISMATCH: MismatchArgs<...> level which won't give good error messages.

When using .not, the constraint just becomes extends unknown, and you'll have to squint as before.

See also: #14 for the better long-term solution, if the TypeScript team decide to merge the throw types PR.
See also: #13 for a hopefully-complementary improvement to the information on hover, which will improve the cases this doesn't cover.

TODO:

  • See if the expectTypeOf({a: 1}).toMatchTypeOf({a: 'one'}) case can also be improved.
  • Document. The constraints are a bit different to what most users would be used to, so it's worth highlighting the best way to read error messages and clarify when they might default to "Arguments for the rest parameter 'MISMATCH' were not provided"

Note: I have publish v0.17.0-1 based on this PR and will hopefully be able to use that version in vitest as a test before merging.

@trevorade
Copy link
Collaborator

Nice! Happy to have some better error messages in the command line.

I'll take a closer look tomorrow.

@mmkal
Copy link
Owner Author

mmkal commented Oct 23, 2022

Update: looks like it's possible to get rid of ...MISMATCH completely. But some more tests/handling of edge cases around never/any are needed. Might also want to automatically snapshot test all the // @ts-expect-error cases in the main test file. Will push commits for that soon.

README.md Outdated Show resolved Hide resolved
src/index.ts Outdated Show resolved Hide resolved
test/errors.test.ts Outdated Show resolved Hide resolved
@trevorade
Copy link
Collaborator

Here's something kind of weird...

With these changes in the dx-generics branch, both the following compile:

  expectTypeOf({a: 1}).toMatchTypeOf<{a: number; b?: string}>()
  expectTypeOf({a: 1}).not.toMatchTypeOf<{a: number; b?: string}>()

In main, only the former compiles.

@mmkal mmkal marked this pull request as draft October 24, 2022 19:08
@mmkal
Copy link
Owner Author

mmkal commented Oct 24, 2022

Here's something kind of weird...

With these changes in the dx-generics branch, both the following compile:

  expectTypeOf({a: 1}).toMatchTypeOf<{a: number; b?: string}>()
  expectTypeOf({a: 1}).not.toMatchTypeOf<{a: number; b?: string}>()

In main, only the former compiles.

Good catch, thank you. I've converted this to a draft since there are a few things up in the air and it isn't ready to go in.

@trevorade
Copy link
Collaborator

trevorade commented Oct 24, 2022

Spent some time talking about this with @shicks and @12wrigja and we came up with some good ideas for some more dx.

Succinctly, it's a change like this:

const error = Symbol('error')

type ExpectedToBeNull<T> = {[error]: T}
type ExpectedNotToBeNull<T> = {[error]: T}

type IsASuperTypeOf<T> = {[error]: T}
type IsNotASuperTypeOf<T> = {[error]: T}

export type ExpectTypeOf<Actual, B extends boolean> = {
  toBeNull:
     Extends<Actual, null> extends B ?
         () => true :
         B extends true ? ExpectedToBeNull<Actual> : ExpectedToNotBeNull<Actual>

  toMatchTypeOf: {
    <Expected extends (
      B extends true ?
        (Extends<Actual, Expected> extends true ? unknown : IsASuperTypeOf<Actual>) :
        (Extends<Actual, Expected> extends false ? unknown : IsNotASuperTypeOf<Actual>)
    )>(): true
    <Expected extends (
      B extends true ?
          (Extends<Actual, Expected> extends true ? unknown : IsASuperTypeOf<Actual>) :
          (Extends<Actual, Expected> extends false ? unknown : IsNotASuperTypeOf<Actual>)
     )>(
      expected: Expected,
    ): true
  }

For toBeNull, you get errors like:

test/usage.test.ts:97:19 - error TS2349: This expression is not callable.
  Type 'ExpectedToBeNull<number>' has no call signatures.

97   expectTypeOf(1).toBeNull()
                     ~~~~~~~~

test/usage.test.ts:96:26 - error TS2349: This expression is not callable.
  Type 'ExpectedNotToBeNull<null>' has no call signatures.

96   expectTypeOf(null).not.toBeNull()
                            ~~~~~~~~

For toMatchTypeOf, you get an error message like:

test/usage.test.ts:119:54 - error TS2344: Type '{ a: string; }' does not satisfy the constraint 'IsASuperTypeOf<{ a: string | number; }>'.
  Property '[error]' is missing in type '{ a: string; }' but required in type 'IsASuperTypeOf<{ a: string | number; }>'.

119   expectTypeOf<{a: string | number}>().toMatchTypeOf<{a: string}>()
                                                         ~~~~~~~~~~~

  src/index.ts:108:27
    108 type IsASuperTypeOf<T> = {[error]: T}
                                  ~~~~~~~
    '[error]' is declared here.

and for .not:

test/usage.test.ts:27:49 - error TS2344: Type '{ a: string | number; }' does not satisfy the constraint 'IsNotASuperTypeOf<{ a: number; }>'.
  Property '[error]' is missing in type '{ a: string | number; }' but required in type 'IsNotASuperTypeOf<{ a: number; }>'.

27   expectTypeOf<{a: number}>().not.toMatchTypeOf<{a: number|string}>()
                                                   ~~~~~~~~~~~~~~~~~~

  src/index.ts:108:30
    108 type IsNotASuperTypeOf<T> = {[error]: T}
                                     ~~~~~~~
    '[error]' is declared here.

This loses tsc telling you specifically what wasn't matching between expected and actual as having the previous comparison be backwards was a bit misleading but it does print out the types so you're aware of what types you were dealing with. Unfortunately, there's quite a bit of noise in these.

I recognize that this snippet doesn't handle unknown and never correctly like it did before so you'd probably want to adjust for that as well.

@papb
Copy link
Collaborator

papb commented Oct 25, 2022

Hello, I didn't really look well at the PR, but just wanted to mention that I've noticed that the message that appears when hovering on an IDE can change significantly between TS versions. In particular, the expansions of generic expressions. Some versions may show Foo<Bar> while others may show things like { resultOfExpandingFoo: Bar }. Especially with complex types (with many layers of generics). Sometimes, the result of expanding the expression was very simple, but still TS would show things like X extends infer Y ? NonNullable<DeepPartial<Y>> : Something<X> instead of resolving into { a: 1 }. Just a reminder that this may happen. Maybe you put lots of effort in giving users good messages on hovering, but then a new TS version comes (every month!) and it could break...

@shicks
Copy link

shicks commented Oct 26, 2022

Seems like the easy solution here is to just make sure any possible expansion is readable. In particular,

type IsASupertypeOf<T> = {[error]: T};

is not particularly readable if it's expanded, but if the internal symbol were instead

type IsASupertypeOf<T> = {[isASuperTypeOf]: T};

then it shouldn't really matter whether it's expanded or not - I can't imagine any reasonable way TypeScript could format that badly.

re: #37 and #36
@mmkal
Copy link
Owner Author

mmkal commented Oct 1, 2023

Spent some time talking about this with @shicks and @12wrigja and we came up with some good ideas for some more dx.

Succinctly, it's a change like this:
...

@trevorade @shicks @12wrigja I did something like this and I think it's a big improvement - thank you!! I ended up doing lots of refactoring, including separating out positive from negative assertions and reduce .branded down to just the two methods that it can apply to. This reduced the number of crazy ternaries in the code, and allowed for better error messages generally by guiding typescript into choosing specific overloads. If you want to take a look feel free.

@mmkal
Copy link
Owner Author

mmkal commented Oct 3, 2023

I'm merging this and will release as v0.17.0 soon.

@mmkal mmkal merged commit fd718dd into main Oct 3, 2023
1 check passed
@mmkal mmkal deleted the dx-generics branch October 3, 2023 01:34
renovate bot added a commit to sequelize/umzug that referenced this pull request Dec 4, 2023
[![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 (@&#8203;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
([#&#8203;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
([#&#8203;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)

[#&#8203;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 `// @&#8203;ts-expect-error` instead of `not` if you have a
negated case where you need `branded`:

```ts
// @&#8203;ts-expect-error
expectTypeOf<{a: {b: 1} & {c: 1}}>().branded.not.toEqualTypeOf<{a: {b: 1; c: ''}}>()
```

***

#### What's Changed

- Improve CLI error messages by
[@&#8203;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
[@&#8203;SerkanSipahi](https://togithub.com/SerkanSipahi) in
[https://github.com/mmkal/expect-type/pull/39](https://togithub.com/mmkal/expect-type/pull/39)

#### New Contributors

- [@&#8203;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
[@&#8203;mmkal](https://togithub.com/mmkal) and
[@&#8203;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
[@&#8203;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 [@&#8203;trevorade](https://togithub.com/trevorade) in
[https://github.com/mmkal/expect-type/pull/21](https://togithub.com/mmkal/expect-type/pull/21)

Note that [#&#8203;21](https://togithub.com/mmkal/expect-type/issues/21)
has affected behavior for intersection types, which can result in
(arguably) false errors:

```ts
// @&#8203;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
[@&#8203;trevorade](https://togithub.com/trevorade) in
[https://github.com/mmkal/expect-type/pull/12](https://togithub.com/mmkal/expect-type/pull/12)

#### New Contributors

- [@&#8203;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 [@&#8203;sinonjs/samsam](https://togithub.com/sinonjs/samsam) to
latest (Morgan Roderick)
-
[`babb4736`](https://togithub.com/sinonjs/sinon/commit/babb4736d7f0080e25dce34fc8ce72879e86792e)
Prefer
[@&#8203;sinonjs/commons](https://togithub.com/sinonjs/commons)[@&#8203;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
([#&#8203;52419](https://togithub.com/Microsoft/TypeScript/issues/52419))
-
[`daf4e81`](https://togithub.com/Microsoft/TypeScript/commit/daf4e817a18def96b70ac34703b158ff0e6d58df)
Port timestamp fix to 4.9
([#&#8203;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
[#&#8203;51704](https://togithub.com/Microsoft/TypeScript/issues/51704)
to release 4.9
([#&#8203;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
[#&#8203;51626](https://togithub.com/Microsoft/TypeScript/issues/51626)
and
[#&#8203;51689](https://togithub.com/Microsoft/TypeScript/issues/51689)
to release-4.9
([#&#8203;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.
([#&#8203;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
[#&#8203;50977](https://togithub.com/Microsoft/TypeScript/issues/50977)
into release-4.9
([#&#8203;51363](https://togithub.com/Microsoft/TypeScript/issues/51363))
\[
[#&#8203;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
([#&#8203;51297](https://togithub.com/Microsoft/TypeScript/issues/51297))
-
[`a7a9d15`](https://togithub.com/Microsoft/TypeScript/commit/a7a9d158e817fcb0e94dc1c24e0a401b21be0cc9)
Fix for broken baseline in yieldInForInInDownlevelGenerator
([#&#8203;51345](https://togithub.com/Microsoft/TypeScript/issues/51345))
-
[`7f8426f`](https://togithub.com/Microsoft/TypeScript/commit/7f8426f4df0d0a7dd8b72079dafc3e60164a23b1)
fix for-in enumeration containing yield in generator
([#&#8203;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
([#&#8203;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
([#&#8203;51320](https://togithub.com/Microsoft/TypeScript/issues/51320))
-
[`754eeb2`](https://togithub.com/Microsoft/TypeScript/commit/754eeb2986bde30d5926e0fa99c87dda9266d01b)
Update CodeQL workflow and configuration, fix found bugs
([#&#8203;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
([#&#8203;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
([#&#8203;50681](https://togithub.com/Microsoft/TypeScript/issues/50681))
-
[`170a17f`](https://togithub.com/Microsoft/TypeScript/commit/170a17fad57eae619c5ef2b7bdb3ac00d6c32c47)
Dom update 2022-10-25
([#&#8203;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
([#&#8203;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.
([#&#8203;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
([#&#8203;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
([#&#8203;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
([#&#8203;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
([#&#8203;51244](https://togithub.com/Microsoft/TypeScript/issues/51244))
-
[`bbb42f4`](https://togithub.com/Microsoft/TypeScript/commit/bbb42f453dc684e03d977c5b70391124d57543a9)
Fix typo in canWatchDirectoryOrFile found by CodeQL
([#&#8203;51262](https://togithub.com/Microsoft/TypeScript/issues/51262))
-
[`a56b254`](https://togithub.com/Microsoft/TypeScript/commit/a56b254ad3c52b598bc5d44f83f3d0a1cf806068)
Include 'this' type parameter in isRelatedTo fast path
([#&#8203;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
([#&#8203;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
([#&#8203;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)
([#&#8203;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
([#&#8203;51076](https://togithub.com/Microsoft/TypeScript/issues/51076))
-
[`8ac4652`](https://togithub.com/Microsoft/TypeScript/commit/8ac465239f52de1da3ada8cdc4c3f107f4d62e45)
change type
([#&#8203;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
([#&#8203;51227](https://togithub.com/Microsoft/TypeScript/issues/51227))
-
[`2dff34e`](https://togithub.com/Microsoft/TypeScript/commit/2dff34e8c4a91c0005ca9ccfb7e045e225b6f2e4)
markAliasReferenced should include ExportValue as well
([#&#8203;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
([#&#8203;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
([#&#8203;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
([#&#8203;49663](https://togithub.com/Microsoft/TypeScript/issues/49663))
-
[`11066b2`](https://togithub.com/Microsoft/TypeScript/commit/11066b264f5d30fb5ac1f6c2f3a155c0190e75d2)
Rename internal functions to `narrowTypeBySwitchOnTypeOf` and
`narrowTypeByInKeyword`
([#&#8203;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
([#&#8203;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
([#&#8203;51175](https://togithub.com/Microsoft/TypeScript/issues/51175))
-
[`a1d82fc`](https://togithub.com/Microsoft/TypeScript/commit/a1d82fc9dcced6ca6bde6e21c385d152d083679f)
Remove some unnecessary code discovered by rollup
([#&#8203;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
([#&#8203;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
([#&#8203;51167](https://togithub.com/Microsoft/TypeScript/issues/51167))
-
[`2cb7e77`](https://togithub.com/Microsoft/TypeScript/commit/2cb7e779d70d57ef0d46dd3f768e646b8bbe783a)
fix(50416): correctly names disabled export refactors
([#&#8203;50663](https://togithub.com/Microsoft/TypeScript/issues/50663))
\[
[#&#8203;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
([#&#8203;51038](https://togithub.com/Microsoft/TypeScript/issues/51038))
-
[`a24201c`](https://togithub.com/Microsoft/TypeScript/commit/a24201c8ef6f82b5729ab677b7a1a1d6d745fcb8)
Remove VSDevMode.ps1 and createPlaygroundBuild
([#&#8203;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
([#&#8203;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.
([#&#8203;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
([#&#8203;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
([#&#8203;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
([#&#8203;51095](https://togithub.com/Microsoft/TypeScript/issues/51095))
-
[`503604c`](https://togithub.com/Microsoft/TypeScript/commit/503604c884bd0557c851b11b699ef98cdb65b93b)
Overloads shouldn't gain
[@&#8203;deprecated](https://togithub.com/deprecated) tags of other
overloads in quick info
([#&#8203;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
([#&#8203;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
([#&#8203;51107](https://togithub.com/Microsoft/TypeScript/issues/51107))
-
[`c01ae01`](https://togithub.com/Microsoft/TypeScript/commit/c01ae01fac37268bac3362fb6e6d26db730f7ed5)
Fix nightly publish oops in Gulpfile
([#&#8203;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
([#&#8203;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
([#&#8203;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
([#&#8203;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
([#&#8203;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
([#&#8203;51079](https://togithub.com/Microsoft/TypeScript/issues/51079))
\[
[#&#8203;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
([#&#8203;51087](https://togithub.com/Microsoft/TypeScript/issues/51087))
-
[`c18791c`](https://togithub.com/Microsoft/TypeScript/commit/c18791ccf165672df3b55f5bdd4a8655f33be26c)
Fix incorrect options type to WatchOptions
([#&#8203;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
([#&#8203;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
([#&#8203;51044](https://togithub.com/Microsoft/TypeScript/issues/51044))
-
[`8af9a93`](https://togithub.com/Microsoft/TypeScript/commit/8af9a936b5240398370887c22cacaff65fee707b)
Use typescript.d.ts in APISample tests
([#&#8203;51061](https://togithub.com/Microsoft/TypeScript/issues/51061))
-
[`4953316`](https://togithub.com/Microsoft/TypeScript/commit/49533168dbb4e19f243b9dbdfd6a3aac69f5b3dd)
Remove configureLanguageServiceBuild, instrumenter
([#&#8203;51048](https://togithub.com/Microsoft/TypeScript/issues/51048))
-
[`9dfffd0`](https://togithub.com/Microsoft/TypeScript/commit/9dfffd0fbb406d7f2e5e2ca85768624ca388a7bf)
Update GitHub Actions
([#&#8203;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()
([#&#8203;50630](https://togithub.com/Microsoft/TypeScript/issues/50630))
-
[`299745c`](https://togithub.com/Microsoft/TypeScript/commit/299745cb217c2fc061f75b3735f8420d78b8360a)
Fix crash in goto-def on `@override`
([#&#8203;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
([#&#8203;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
([#&#8203;50994](https://togithub.com/Microsoft/TypeScript/issues/50994))
\[
[#&#8203;51002](https://togithub.com/Microsoft/TypeScript/issues/51002)
]
-
[`0d0a793`](https://togithub.com/Microsoft/TypeScript/commit/0d0a79371471d627ae298a145f8009b05cbccb72)
Allow Unicode extended escapes in ES5 and earlier
([#&#8203;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
([#&#8203;50931](https://togithub.com/Microsoft/TypeScript/issues/50931))
-
[`42f9143`](https://togithub.com/Microsoft/TypeScript/commit/42f9143e114c5c07f40df83ed07ffeb3cbaf2101)
feat: codefix for `for await of`
([#&#8203;50623](https://togithub.com/Microsoft/TypeScript/issues/50623))
-
[`ecf50e8`](https://togithub.com/Microsoft/TypeScript/commit/ecf50e81a7a9cccd9bf5ea7598764082981faab0)
Properly compute `SymbolFlags.Optional` for intersected properties
([#&#8203;50958](https://togithub.com/Microsoft/TypeScript/issues/50958))
-
[`d1586de`](https://togithub.com/Microsoft/TypeScript/commit/d1586de0434567b998876929eb8229235b85b350)
Fully resolve aliases when checking symbol flags
([#&#8203;50853](https://togithub.com/Microsoft/TypeScript/issues/50853))
-
[`45148dd`](https://togithub.com/Microsoft/TypeScript/commit/45148dd715a7c3776840778b4df41e7e0bd0bf12)
Update LKG to 4.8.4
([#&#8203;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
([#&#8203;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
([#&#8203;50978](https://togithub.com/Microsoft/TypeScript/issues/50978))
-
[`b09e93d`](https://togithub.com/Microsoft/TypeScript/commit/b09e93d3f6d3e999df001b53984954974c25b81f)
Merge pull request
[#&#8203;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
([#&#8203;50910](https://togithub.com/Microsoft/TypeScript/issues/50910))
\[
[#&#8203;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
([#&#8203;50974](https://togithub.com/Microsoft/TypeScript/issues/50974))
\[
[#&#8203;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
([#&#8203;50908](https://togithub.com/Microsoft/TypeScript/issues/50908))
\[
[#&#8203;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
([#&#8203;49619](https://togithub.com/Microsoft/TypeScript/issues/49619))
-
[`bc9cbbe`](https://togithub.com/Microsoft/TypeScript/commit/bc9cbbef421ae907f7dfd5a84ca69c4f68a8935b)
Merge pull request
[#&#8203;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.
([#&#8203;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
([#&#8203;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`
([#&#8203;50912](https://togithub.com/Microsoft/TypeScript/issues/50912))
-
[`84c29cd`](https://togithub.com/Microsoft/TypeScript/commit/84c29cd576fd1facb9b3a353d5342df04acdb184)
🤖 Pick PR
[#&#8203;50912](https://togithub.com/Microsoft/TypeScript/issues/50912)
(Pluralized \`hasInvalidatedResolutio...) into release-4.9
([#&#8203;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
([#&#8203;50776](https://togithub.com/Microsoft/TypeScript/issues/50776))
\[
[#&#8203;48057](https://togithub.com/Microsoft/TypeScript/issues/48057)
]
-
[`645d1cd`](https://togithub.com/Microsoft/TypeScript/commit/645d1cd7c1ee1d65a87b2183b173611467256a09)
Fix assert in addIndirectUser in FAR
([#&#8203;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`
([#&#8203;50890](https://togithub.com/Microsoft/TypeScript/issues/50890))
-
[`acb8977`](https://togithub.com/Microsoft/TypeScript/commit/acb89771901f8c81c6046fa7c16361a83388ddab)
Remove .github/tsc.json
([#&#8203;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
([#&#8203;50625](https://togithub.com/Microsoft/TypeScript/issues/50625))
-
[`2644f28`](https://togithub.com/Microsoft/TypeScript/commit/2644f2867734d77a3a3939c55d5cc0a5004df0ed)
fix(49200): skip duplicated method declarations
([#&#8203;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
([#&#8203;50711](https://togithub.com/Microsoft/TypeScript/issues/50711))
-
[`e2dd508`](https://togithub.com/Microsoft/TypeScript/commit/e2dd5084f75ac37a78102d212b67d36595596137)
DOM update 2022/09/21
([#&#8203;50884](https://togithub.com/Microsoft/TypeScript/issues/50884))
-
[`1d9ab83`](https://togithub.com/Microsoft/TypeScript/commit/1d9ab83914a551936ce5ef80340ee65cfd1422ba)
fix(50866): emit modifiers from export declarations
([#&#8203;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
([#&#8203;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
([#&#8203;50831](https://togithub.com/Microsoft/TypeScript/issues/50831))
-
[`d90795e`](https://togithub.com/Microsoft/TypeScript/commit/d90795e799ca8e41aabd6d0852abb585138200ef)
Improve escape sequence handling in private names
([#&#8203;50856](https://togithub.com/Microsoft/TypeScript/issues/50856))
-
[`938a69a`](https://togithub.com/Microsoft/TypeScript/commit/938a69a526166ca4e7880fa140fba432936f0fe3)
Fix import statement completions followed by interface declaration
([#&#8203;50350](https://togithub.com/Microsoft/TypeScript/issues/50350))
-
[`e002159`](https://togithub.com/Microsoft/TypeScript/commit/e002159ad133a024bae48a2e190e54ad93f6b52d)
feat(49962): Disallow comparison against NaN
([#&#8203;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
([#&#8203;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
([#&#8203;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
([#&#8203;50422](https://togithub.com/Microsoft/TypeScript/issues/50422))
-
[`a11c416`](https://togithub.com/Microsoft/TypeScript/commit/a11c41621bbbab100a391dd348651c6661549663)
Improve checking of `in` operator
([#&#8203;50666](https://togithub.com/Microsoft/TypeScript/issues/50666))
-
[`67f2b62`](https://togithub.com/Microsoft/TypeScript/commit/67f2b62ed2bd1de0299781ba659fa638346bcecf)
Gabritto/jsemitfixsilly
([#&#8203;50849](https://togithub.com/Microsoft/TypeScript/issues/50849))
-
[`3014dec`](https://togithub.com/Microsoft/TypeScript/commit/3014dec8878a9ff8d86186a6ac3fd9fad4f3b739)
Don't elide imports when transforming JS files
([#&#8203;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
([#&#8203;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
([#&#8203;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
([#&#8203;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
([#&#8203;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
([#&#8203;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)
([#&#8203;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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment