From fbed1051713f300f68a60c368308464bdb1b770b Mon Sep 17 00:00:00 2001 From: Vladimir Date: Thu, 11 Jul 2024 11:19:47 +0200 Subject: [PATCH 1/2] chore: remove pre-commit hooks (#6074) --- package.json | 10 ----- pnpm-lock.yaml | 106 +------------------------------------------------ 2 files changed, 2 insertions(+), 114 deletions(-) diff --git a/package.json b/package.json index 927b2f3d6f4b3..571a97d0884a6 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,6 @@ "esbuild": "^0.22.0", "eslint": "^9.6.0", "fast-glob": "^3.3.2", - "lint-staged": "^15.2.7", "magic-string": "^0.30.10", "pathe": "^1.1.2", "rimraf": "^5.0.7", @@ -60,7 +59,6 @@ "rollup-plugin-dts": "^6.1.1", "rollup-plugin-esbuild": "^6.1.1", "rollup-plugin-license": "^3.5.1", - "simple-git-hooks": "^2.11.1", "tsx": "^4.16.0", "typescript": "^5.5.2", "vite": "^5.3.3", @@ -87,13 +85,5 @@ "v8-to-istanbul@9.3.0": "patches/v8-to-istanbul@9.3.0.patch", "acorn@8.11.3": "patches/acorn@8.11.3.patch" } - }, - "simple-git-hooks": { - "pre-commit": "npx lint-staged" - }, - "lint-staged": { - "*.{?([cm])[jt]s?(x),vue,md}": [ - "eslint --cache --fix" - ] } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8b9cbbb182400..e37cd3095c4ad 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -82,9 +82,6 @@ importers: fast-glob: specifier: ^3.3.2 version: 3.3.2 - lint-staged: - specifier: ^15.2.7 - version: 15.2.7 magic-string: specifier: ^0.30.10 version: 0.30.10 @@ -106,9 +103,6 @@ importers: rollup-plugin-license: specifier: ^3.5.1 version: 3.5.1(rollup@4.18.0) - simple-git-hooks: - specifier: ^2.11.1 - version: 2.11.1 tsx: specifier: ^4.16.0 version: 4.16.0 @@ -6403,7 +6397,7 @@ packages: '@vue/shared': 3.4.31 estree-walker: 2.0.2 magic-string: 0.30.10 - postcss: 8.4.38 + postcss: 8.4.39 source-map-js: 1.2.0 /@vue/compiler-ssr@3.4.21: @@ -7151,11 +7145,6 @@ packages: type-fest: 1.4.0 dev: true - /ansi-escapes@6.2.1: - resolution: {integrity: sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==} - engines: {node: '>=14.16'} - dev: true - /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -8021,11 +8010,6 @@ packages: engines: {node: '>=14'} dev: true - /commander@12.1.0: - resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} - engines: {node: '>=18'} - dev: true - /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: true @@ -9611,10 +9595,6 @@ packages: engines: {node: '>=6'} dev: true - /eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - dev: true - /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -11006,13 +10986,6 @@ packages: engines: {node: '>=12'} dev: true - /is-fullwidth-code-point@5.0.0: - resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} - engines: {node: '>=18'} - dependencies: - get-east-asian-width: 1.2.0 - dev: true - /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -11644,50 +11617,14 @@ packages: - supports-color dev: true - /lilconfig@3.1.2: - resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} - engines: {node: '>=14'} - dev: true - /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true - /lint-staged@15.2.7: - resolution: {integrity: sha512-+FdVbbCZ+yoh7E/RosSdqKJyUM2OEjTciH0TFNkawKgvFp1zbGlEC39RADg+xKBG1R4mhoH2j85myBQZ5wR+lw==} - engines: {node: '>=18.12.0'} - hasBin: true - dependencies: - chalk: 5.3.0 - commander: 12.1.0 - debug: 4.3.5 - execa: 8.0.1 - lilconfig: 3.1.2 - listr2: 8.2.1 - micromatch: 4.0.7 - pidtree: 0.6.0 - string-argv: 0.3.2 - yaml: 2.4.2 - transitivePeerDependencies: - - supports-color - dev: true - /listenercount@1.0.1: resolution: {integrity: sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==} dev: true - /listr2@8.2.1: - resolution: {integrity: sha512-irTfvpib/rNiD637xeevjO2l3Z5loZmuaRi0L0YE5LfijwVY96oyVn0DFD3o/teAok7nfobMG1THvvcHh/BP6g==} - engines: {node: '>=18.0.0'} - dependencies: - cli-truncate: 4.0.0 - colorette: 2.0.20 - eventemitter3: 5.0.1 - log-update: 6.0.0 - rfdc: 1.3.1 - wrap-ansi: 9.0.0 - dev: true - /lit-element@4.0.1: resolution: {integrity: sha512-OxRMJem4HKZt0320HplLkBPoi4KHiEHoPHKd8Lzf07ZQVAOKIjZ32yPLRKRDEolFU1RgrQBfSHQMoxKZ72V3Kw==} dependencies: @@ -11822,17 +11759,6 @@ packages: wrap-ansi: 8.1.0 dev: true - /log-update@6.0.0: - resolution: {integrity: sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==} - engines: {node: '>=18'} - dependencies: - ansi-escapes: 6.2.1 - cli-cursor: 4.0.0 - slice-ansi: 7.1.0 - strip-ansi: 7.1.0 - wrap-ansi: 9.0.0 - dev: true - /loglevel-plugin-prefix@0.8.4: resolution: {integrity: sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==} dev: true @@ -13158,12 +13084,6 @@ packages: engines: {node: '>=12'} dev: true - /pidtree@0.6.0: - resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} - engines: {node: '>=0.10'} - hasBin: true - dev: true - /pino-abstract-transport@1.2.0: resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==} dependencies: @@ -13260,6 +13180,7 @@ packages: nanoid: 3.3.7 picocolors: 1.0.1 source-map-js: 1.2.0 + dev: true /postcss@8.4.39: resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} @@ -14268,12 +14189,6 @@ packages: simple-concat: 1.0.1 dev: true - /simple-git-hooks@2.11.1: - resolution: {integrity: sha512-tgqwPUMDcNDhuf1Xf6KTUsyeqGdgKMhzaH4PAZZuzguOgTl5uuyeYe/8mWgAr6IBxB5V06uqEf6Dy37gIWDtDg==} - hasBin: true - requiresBuild: true - dev: true - /simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} dependencies: @@ -14318,14 +14233,6 @@ packages: is-fullwidth-code-point: 4.0.0 dev: true - /slice-ansi@7.1.0: - resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} - engines: {node: '>=18'} - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 5.0.0 - dev: true - /smart-buffer@4.2.0: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} @@ -16667,15 +16574,6 @@ packages: string-width: 5.1.2 strip-ansi: 7.1.0 - /wrap-ansi@9.0.0: - resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} - engines: {node: '>=18'} - dependencies: - ansi-styles: 6.2.1 - string-width: 7.0.0 - strip-ansi: 7.1.0 - dev: true - /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true From e9f9adcdc2d770a2f73cc697a9e7e83a6d14898b Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Thu, 11 Jul 2024 21:27:26 +0900 Subject: [PATCH 2/2] fix(spy): fix type error when assigning `vi.spyOn` to `MockInstance` of function overload (#6086) --- packages/spy/src/index.ts | 8 ++++---- test/core/test/vi.spec.ts | 36 +++++++++++++++++++++++++++++++++++- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/packages/spy/src/index.ts b/packages/spy/src/index.ts index 17042b88bea98..9e698adf8d5ad 100644 --- a/packages/spy/src/index.ts +++ b/packages/spy/src/index.ts @@ -401,11 +401,11 @@ export function spyOn>>( export function spyOn> | Methods>>( obj: T, methodName: M -): Required[M] extends -| { new (...args: infer A): infer R } -| ((...args: infer A) => infer R) +): Required[M] extends { new (...args: infer A): infer R } ? MockInstance<(this: R, ...args: A) => R> - : never + : T[M] extends Procedure + ? MockInstance + : never export function spyOn( obj: T, method: K, diff --git a/test/core/test/vi.spec.ts b/test/core/test/vi.spec.ts index 79f0164efc3d6..292aa1c19e3ae 100644 --- a/test/core/test/vi.spec.ts +++ b/test/core/test/vi.spec.ts @@ -2,7 +2,7 @@ * @vitest-environment jsdom */ -import type { Mock, MockedFunction, MockedObject } from 'vitest' +import type { Mock, MockInstance, MockedFunction, MockedObject } from 'vitest' import { describe, expect, expectTypeOf, test, vi } from 'vitest' import { getWorkerState } from '../../../packages/vitest/src/utils' @@ -118,6 +118,40 @@ describe('testing vi utils', () => { expect(someFn4).not.toBeCalled() }) + test(`vi.spyOn for function overload types`, () => { + class MyElement { + scrollTo(options?: ScrollToOptions): void + scrollTo(x: number, y: number): void + scrollTo() {} + } + + // verify `spyOn` is assignable to `MockInstance` with overload + const spy: MockInstance = vi.spyOn( + MyElement.prototype, + 'scrollTo', + ) + + // however `Parameters` only picks up the last overload + // due to typescript limitation + expectTypeOf(spy.mock.calls).toEqualTypeOf< + [x: number, y: number][] + >() + }) + + test(`mock.contexts types`, () => { + class TestClass { + f(this: TestClass) {} + g() {} + } + + const fSpy = vi.spyOn(TestClass.prototype, 'f') + const gSpy = vi.spyOn(TestClass.prototype, 'g') + + // contexts inferred only when `this` is explicitly annotated + expectTypeOf(fSpy.mock.contexts).toEqualTypeOf() + expectTypeOf(gSpy.mock.contexts).toEqualTypeOf() + }) + test('can change config', () => { const state = getWorkerState() expect(state.config.hookTimeout).toBe(10000)