diff --git a/.eslintrc.js b/.eslintrc.js index fe5e1493e..5d096dd3a 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -32,7 +32,7 @@ module.exports = { overrides: [ // tests, no restrictions (runs in Node / jest with jsdom) { - files: ['**/__tests__/**', 'test-dts/**'], + files: ['**/__tests__/**', 'packages/dts-test/**'], rules: { 'no-restricted-globals': 'off', 'no-restricted-syntax': 'off', diff --git a/package.json b/package.json index 48b3a6da5..9edd2c5c6 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "test-unit": "vitest -c vitest.unit.config.ts", "test-e2e": "node scripts/build.mjs vue -f global -d && vitest -c vitest.e2e.config.ts", "test-dts": "run-s build-dts test-dts-only", - "test-dts-only": "tsc -p ./test-dts/tsconfig.build.json", + "test-dts-only": "tsc -p ./packages/dts-test/tsconfig.test.json", "test-coverage": "vitest -c vitest.unit.config.ts --coverage", "release": "node scripts/release.mjs", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s", @@ -37,7 +37,6 @@ "preinstall": "node ./scripts/preinstall.mjs", "postinstall": "simple-git-hooks" }, - "types": "test-dts/index.d.ts", "simple-git-hooks": { "pre-commit": "pnpm lint-staged && pnpm check", "commit-msg": "node scripts/verifyCommit.mjs" @@ -69,9 +68,6 @@ "@typescript-eslint/parser": "^5.23.0", "@vitest/coverage-istanbul": "^0.28.2", "@vue/consolidate": "0.17.3", - "@vue/reactivity": "workspace:*", - "@vue/runtime-core": "workspace:*", - "@vue/runtime-dom": "workspace:*", "brotli": "^1.3.2", "chalk": "^4.1.0", "conventional-changelog-cli": "^2.0.31", @@ -105,7 +101,6 @@ "tslib": "^2.4.0", "typescript": "^4.9.0", "vite": "^4.0.4", - "vitest": "^0.28.2", - "vue": "workspace:*" + "vitest": "^0.28.2" } } diff --git a/packages/dts-test/README.md b/packages/dts-test/README.md new file mode 100644 index 000000000..692229fbc --- /dev/null +++ b/packages/dts-test/README.md @@ -0,0 +1,7 @@ +# dts-test + +Tests Typescript types to ensure the types remain as expected. + +- This directory is included in the root `tsconfig.json`, where package imports are aliased to `src` directories, so in IDEs and the `pnpm check` script the types are validated against source code. + +- When runnong `tsc` with `packages/dts-test/tsconfig.test.json`, packages are resolved using using normal `node` resolution, so the types are validated against actual **built** types. This requires the types to be built first via `pnpm build-types`. diff --git a/test-dts/appUse.test-d.ts b/packages/dts-test/appUse.test-d.ts similarity index 100% rename from test-dts/appUse.test-d.ts rename to packages/dts-test/appUse.test-d.ts diff --git a/test-dts/compiler.test-d.ts b/packages/dts-test/compiler.test-d.ts similarity index 100% rename from test-dts/compiler.test-d.ts rename to packages/dts-test/compiler.test-d.ts diff --git a/test-dts/component.test-d.ts b/packages/dts-test/component.test-d.ts similarity index 100% rename from test-dts/component.test-d.ts rename to packages/dts-test/component.test-d.ts diff --git a/test-dts/componentTypeExtensions.test-d.tsx b/packages/dts-test/componentTypeExtensions.test-d.tsx similarity index 100% rename from test-dts/componentTypeExtensions.test-d.tsx rename to packages/dts-test/componentTypeExtensions.test-d.tsx diff --git a/test-dts/defineComponent.test-d.tsx b/packages/dts-test/defineComponent.test-d.tsx similarity index 100% rename from test-dts/defineComponent.test-d.tsx rename to packages/dts-test/defineComponent.test-d.tsx diff --git a/test-dts/defineCustomElement.test-d.ts b/packages/dts-test/defineCustomElement.test-d.ts similarity index 100% rename from test-dts/defineCustomElement.test-d.ts rename to packages/dts-test/defineCustomElement.test-d.ts diff --git a/test-dts/functionalComponent.test-d.tsx b/packages/dts-test/functionalComponent.test-d.tsx similarity index 100% rename from test-dts/functionalComponent.test-d.tsx rename to packages/dts-test/functionalComponent.test-d.tsx diff --git a/test-dts/h.test-d.ts b/packages/dts-test/h.test-d.ts similarity index 100% rename from test-dts/h.test-d.ts rename to packages/dts-test/h.test-d.ts diff --git a/test-dts/index.d.ts b/packages/dts-test/index.d.ts similarity index 94% rename from test-dts/index.d.ts rename to packages/dts-test/index.d.ts index 0662a6447..2945d492d 100644 --- a/test-dts/index.d.ts +++ b/packages/dts-test/index.d.ts @@ -1,7 +1,7 @@ // This directory contains a number of d.ts assertions // use \@ts-expect-error where errors are expected. -export * from '@vue/runtime-dom' +export * from 'vue' export function describe(_name: string, _fn: () => void): void export function test(_name: string, _fn: () => any): void diff --git a/test-dts/inject.test-d.ts b/packages/dts-test/inject.test-d.ts similarity index 100% rename from test-dts/inject.test-d.ts rename to packages/dts-test/inject.test-d.ts diff --git a/packages/dts-test/package.json b/packages/dts-test/package.json new file mode 100644 index 000000000..72f0e322a --- /dev/null +++ b/packages/dts-test/package.json @@ -0,0 +1,10 @@ +{ + "name": "dts-test", + "private": true, + "dependencies": { + "vue": "workspace:*", + "@vue/runtime-core": "workspace:*", + "@vue/runtime-dom": "workspace:*", + "@vue/reactivity": "workspace:*" + } +} diff --git a/test-dts/reactivity.test-d.ts b/packages/dts-test/reactivity.test-d.ts similarity index 100% rename from test-dts/reactivity.test-d.ts rename to packages/dts-test/reactivity.test-d.ts diff --git a/test-dts/reactivityMacros.test-d.ts b/packages/dts-test/reactivityMacros.test-d.ts similarity index 93% rename from test-dts/reactivityMacros.test-d.ts rename to packages/dts-test/reactivityMacros.test-d.ts index 3bae07829..6bc5f17cb 100644 --- a/test-dts/reactivityMacros.test-d.ts +++ b/packages/dts-test/reactivityMacros.test-d.ts @@ -1,5 +1,11 @@ -import { WritableComputedRef } from '@vue/reactivity' -import { expectType, ref, computed, Ref, ComputedRef } from './index' +import { + expectType, + ref, + computed, + Ref, + ComputedRef, + WritableComputedRef +} from './index' import 'vue/macros-global' import { RefType, RefTypes } from 'vue/macros' diff --git a/test-dts/ref.test-d.ts b/packages/dts-test/ref.test-d.ts similarity index 100% rename from test-dts/ref.test-d.ts rename to packages/dts-test/ref.test-d.ts diff --git a/test-dts/setupHelpers.test-d.ts b/packages/dts-test/setupHelpers.test-d.ts similarity index 100% rename from test-dts/setupHelpers.test-d.ts rename to packages/dts-test/setupHelpers.test-d.ts diff --git a/test-dts/tsconfig.build.json b/packages/dts-test/tsconfig.test.json similarity index 100% rename from test-dts/tsconfig.build.json rename to packages/dts-test/tsconfig.test.json diff --git a/test-dts/tsx.test-d.tsx b/packages/dts-test/tsx.test-d.tsx similarity index 100% rename from test-dts/tsx.test-d.tsx rename to packages/dts-test/tsx.test-d.tsx diff --git a/test-dts/watch.test-d.ts b/packages/dts-test/watch.test-d.ts similarity index 100% rename from test-dts/watch.test-d.ts rename to packages/dts-test/watch.test-d.ts diff --git a/packages/runtime-core/src/apiSetupHelpers.ts b/packages/runtime-core/src/apiSetupHelpers.ts index 6f6097aa8..798b3a0c0 100644 --- a/packages/runtime-core/src/apiSetupHelpers.ts +++ b/packages/runtime-core/src/apiSetupHelpers.ts @@ -1,4 +1,3 @@ -import { ComponentPropsOptions } from '@vue/runtime-core' import { isArray, isPromise, isFunction } from '@vue/shared' import { getCurrentInstance, @@ -8,7 +7,11 @@ import { unsetCurrentInstance } from './component' import { EmitFn, EmitsOptions } from './componentEmits' -import { ComponentObjectPropsOptions, ExtractPropTypes } from './componentProps' +import { + ComponentPropsOptions, + ComponentObjectPropsOptions, + ExtractPropTypes +} from './componentProps' import { warn } from './warning' // dev only diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b9ee76003..927376bff 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,9 +18,6 @@ importers: '@typescript-eslint/parser': ^5.23.0 '@vitest/coverage-istanbul': ^0.28.2 '@vue/consolidate': 0.17.3 - '@vue/reactivity': workspace:* - '@vue/runtime-core': workspace:* - '@vue/runtime-dom': workspace:* brotli: ^1.3.2 chalk: ^4.1.0 conventional-changelog-cli: ^2.0.31 @@ -55,7 +52,6 @@ importers: typescript: ^4.9.0 vite: ^4.0.4 vitest: ^0.28.2 - vue: workspace:* devDependencies: '@babel/parser': 7.20.15 '@babel/types': 7.20.7 @@ -71,9 +67,6 @@ importers: '@typescript-eslint/parser': 5.50.0_jofidmxrjzhj7l6vknpw5ecvfe '@vitest/coverage-istanbul': 0.28.3_jsdom@21.1.0+terser@5.16.2 '@vue/consolidate': 0.17.3 - '@vue/reactivity': link:packages/reactivity - '@vue/runtime-core': link:packages/runtime-core - '@vue/runtime-dom': link:packages/runtime-dom brotli: 1.3.3 chalk: 4.1.2 conventional-changelog-cli: 2.2.2 @@ -108,7 +101,6 @@ importers: typescript: 4.9.5 vite: 4.1.1_ghge5pqdvzsmxto52quo4r2say vitest: 0.28.3_jsdom@21.1.0+terser@5.16.2 - vue: link:packages/vue packages/compiler-core: specifiers: @@ -188,6 +180,18 @@ importers: '@vue/compiler-dom': link:../compiler-dom '@vue/shared': link:../shared + packages/dts-test: + specifiers: + '@vue/reactivity': workspace:* + '@vue/runtime-core': workspace:* + '@vue/runtime-dom': workspace:* + vue: workspace:* + dependencies: + '@vue/reactivity': link:../reactivity + '@vue/runtime-core': link:../runtime-core + '@vue/runtime-dom': link:../runtime-dom + vue: link:../vue + packages/reactivity: specifiers: '@vue/shared': 3.2.47 diff --git a/scripts/aliases.mjs b/scripts/aliases.mjs index 4cbdf10b2..95e301632 100644 --- a/scripts/aliases.mjs +++ b/scripts/aliases.mjs @@ -22,7 +22,8 @@ const entries = { const nonSrcPackages = [ 'sfc-playground', 'size-check', - 'template-explorer' + 'template-explorer', + 'dts-test' ] for (const dir of dirs) { diff --git a/test-dts/README.md b/test-dts/README.md deleted file mode 100644 index 966374ba5..000000000 --- a/test-dts/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# Test-ts - -Tests Typescript types to ensure the types remain as expected. - -## Configuration - -### tsconfig.json - -Config used to test against the package source - -### tsconfig.build.json - -Replaces the `vue` and `@vue/*` dependencies with the built Typescript to ensure the published types are correct. diff --git a/test-dts/tsconfig.json b/test-dts/tsconfig.json deleted file mode 100644 index 433de219a..000000000 --- a/test-dts/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "noEmit": true, - "declaration": true - }, - "exclude": ["../packages/*/__tests__", "../packages/template-explorer"] -} diff --git a/tsconfig.build.json b/tsconfig.build.json index 8e93e992f..8b7749b85 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -10,6 +10,6 @@ "packages/template-explorer", "packages/sfc-playground", "packages/size-check", - "test-dts" + "packages/dts-test" ] } diff --git a/tsconfig.json b/tsconfig.json index 2a3f429d8..15e013c5f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -32,6 +32,6 @@ "packages/*/src", "packages/runtime-dom/types/jsx.d.ts", "packages/*/__tests__", - "test-dts" + "packages/dts-test" ] }