diff --git a/.changeset/brave-numbers-wash.md b/.changeset/brave-numbers-wash.md new file mode 100644 index 0000000000..5fdd54120b --- /dev/null +++ b/.changeset/brave-numbers-wash.md @@ -0,0 +1,5 @@ +--- +"@cloudflare/vitest-pool-workers": patch +--- + +fix: loosen the peer dependency version on vitest to support versions ranging from 1.3.0 to 1.5.0 diff --git a/fixtures/vitest-pool-workers-examples/package.json b/fixtures/vitest-pool-workers-examples/package.json index 87117c27b9..bd4272fb8f 100644 --- a/fixtures/vitest-pool-workers-examples/package.json +++ b/fixtures/vitest-pool-workers-examples/package.json @@ -15,7 +15,7 @@ "miniflare": "workspace:*", "toucan-js": "^3.3.1", "typescript": "^5.3.3", - "vitest": "1.3.0", + "vitest": "1.5.0", "wrangler": "workspace:*" } } diff --git a/packages/vitest-pool-workers/package.json b/packages/vitest-pool-workers/package.json index aff4c26ce6..9c615533fc 100644 --- a/packages/vitest-pool-workers/package.json +++ b/packages/vitest-pool-workers/package.json @@ -56,6 +56,7 @@ "@cloudflare/workers-tsconfig": "workspace:*", "@cloudflare/workers-types": "^4.20240419.0", "@types/node": "20.8.3", + "@types/semver": "^7.5.1", "capnp-ts": "^0.7.0", "capnpc-ts": "^0.7.0", "undici": "5.28.3" @@ -66,13 +67,14 @@ "devalue": "^4.3.0", "esbuild": "0.17.19", "miniflare": "workspace:*", + "semver": "^7.5.1", "wrangler": "workspace:*", "zod": "^3.20.6" }, "peerDependencies": { - "@vitest/runner": "1.3.0", - "@vitest/snapshot": "1.3.0", - "vitest": "1.3.0" + "@vitest/runner": "1.3.x - 1.5.x", + "@vitest/snapshot": "1.3.x - 1.5.x", + "vitest": "1.3.x - 1.5.x" }, "workers-sdk": { "prerelease": true diff --git a/packages/vitest-pool-workers/src/config/index.ts b/packages/vitest-pool-workers/src/config/index.ts index 410b2a49f6..d9fa67da0b 100644 --- a/packages/vitest-pool-workers/src/config/index.ts +++ b/packages/vitest-pool-workers/src/config/index.ts @@ -92,7 +92,7 @@ const configPlugin: PluginOption = { ensureArrayIncludes(config.resolve.conditions, requiredConditions); // Vitest sets this to an empty array if unset, so restore Vite defaults: - // https://github.com/vitest-dev/vitest/blob/v1.3.0/packages/vitest/src/node/plugins/index.ts#L77 + // https://github.com/vitest-dev/vitest/blob/v1.5.0/packages/vitest/src/node/plugins/index.ts#L77 ensureArrayIncludes(config.resolve.mainFields, requiredMainFields); // Apply `package.json` `browser` field remapping in SSR mode: diff --git a/packages/vitest-pool-workers/src/pool/config.ts b/packages/vitest-pool-workers/src/pool/config.ts index fd694165e1..045855a5a2 100644 --- a/packages/vitest-pool-workers/src/pool/config.ts +++ b/packages/vitest-pool-workers/src/pool/config.ts @@ -235,7 +235,7 @@ export async function parseProjectOptions( let workersPoolOptions = poolOptions?.workers ?? {}; try { if (typeof workersPoolOptions === "function") { - // https://github.com/vitest-dev/vitest/blob/v1.0.0/packages/vitest/src/integrations/inject.ts + // https://github.com/vitest-dev/vitest/blob/v1.5.0/packages/vitest/src/integrations/inject.ts const inject = ( key: K ): ProvidedContext[K] => { diff --git a/packages/vitest-pool-workers/src/pool/index.ts b/packages/vitest-pool-workers/src/pool/index.ts index 0262f4dd0c..59bbe6f9fe 100644 --- a/packages/vitest-pool-workers/src/pool/index.ts +++ b/packages/vitest-pool-workers/src/pool/index.ts @@ -20,6 +20,7 @@ import { testRegExps, WebSocket, } from "miniflare"; +import semverSatisfies from "semver/functions/satisfies.js"; import { createMethodsRPC } from "vitest/node"; import { createChunkingSocket } from "../shared/chunking-socket"; import { OPTIONS_PATH, parseProjectOptions } from "./config"; @@ -56,7 +57,7 @@ import type { } from "vitest"; import type { ProcessPool, Vitest, WorkspaceProject } from "vitest/node"; -// https://github.com/vitest-dev/vitest/blob/v1.3.0/packages/vite-node/src/client.ts#L386 +// https://github.com/vitest-dev/vitest/blob/v1.5.0/packages/vite-node/src/client.ts#L386 declare const __vite_ssr_import__: unknown; assert( typeof __vite_ssr_import__ === "undefined", @@ -775,13 +776,13 @@ function assertCompatibleVitestVersion(ctx: Vitest) { "Expected to find `vitest`'s version" ); - if (expectedVitestVersion !== actualVitestVersion) { + if (!semverSatisfies(actualVitestVersion, expectedVitestVersion)) { const message = [ - `You're running \`vitest@${actualVitestVersion}\`, but this version of \`@cloudflare/vitest-pool-workers\` only supports \`vitest@${expectedVitestVersion}\`.`, + `You're running \`vitest@${actualVitestVersion}\`, but this version of \`@cloudflare/vitest-pool-workers\` only officially supports \`vitest ${expectedVitestVersion}\`.`, "`@cloudflare/vitest-pool-workers` currently depends on internal Vitest APIs that are not protected by semantic-versioning guarantees.", - `Please install \`vitest@${expectedVitestVersion}\` to continue using \`@cloudflare/vitest-pool-workers\`.`, + `Your tests may work without issue, but we can not guarantee compatibility outside of the above version range.`, ].join("\n"); - throw new Error(message); + log.warn(message); } } diff --git a/packages/vitest-pool-workers/src/worker/lib/cloudflare/test-runner.ts b/packages/vitest-pool-workers/src/worker/lib/cloudflare/test-runner.ts index 1298709479..f5e71b57de 100644 --- a/packages/vitest-pool-workers/src/worker/lib/cloudflare/test-runner.ts +++ b/packages/vitest-pool-workers/src/worker/lib/cloudflare/test-runner.ts @@ -197,8 +197,6 @@ export default class WorkersTestRunner extends VitestTestRunner { // contain storage calls (e.g. caching responses) that could try to access // aborted Durable Objects. await waitForGlobalWaitUntil(); - // @ts-expect-error `VitestTestRunner` doesn't define `onAfterRunFiles`, but - // could in the future. return super.onAfterRunFiles?.(); } diff --git a/packages/vitest-pool-workers/vitest.workers.config.ts b/packages/vitest-pool-workers/vitest.workers.config.ts index efcd36ff4e..ab0a3ab2ed 100644 --- a/packages/vitest-pool-workers/vitest.workers.config.ts +++ b/packages/vitest-pool-workers/vitest.workers.config.ts @@ -24,7 +24,7 @@ export default defineConfig({ server: { deps: { // Vitest automatically adds `/^(?!.*(?:node_modules)).*\.mjs$/` as an - // `inline` RegExp: https://github.com/vitest-dev/vitest/blob/v1.3.0/packages/vitest/src/node/config.ts#L204 + // `inline` RegExp: https://github.com/vitest-dev/vitest/blob/v1.5.0/packages/vitest/src/node/config.ts#L236 // We'd like `packages/vitest-pool-workers/dist/pool/index.mjs` to be // externalised though. Unfortunately, `inline`s are checked before // `external`s, so there's no nice way we can override this. Instead, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b20f47ee20..32df46dc6a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -697,8 +697,8 @@ importers: specifier: ^5.3.3 version: 5.3.3 vitest: - specifier: 1.3.0 - version: 1.3.0(@types/node@20.8.3) + specifier: 1.5.0 + version: 1.5.0(@types/node@20.8.3) wrangler: specifier: workspace:* version: link:../../packages/wrangler @@ -1313,11 +1313,11 @@ importers: packages/vitest-pool-workers: dependencies: '@vitest/runner': - specifier: 1.3.0 - version: 1.3.0 + specifier: 1.3.x - 1.5.x + version: 1.5.0 '@vitest/snapshot': - specifier: 1.3.0 - version: 1.3.0 + specifier: 1.3.x - 1.5.x + version: 1.5.0 birpc: specifier: 0.2.14 version: 0.2.14 @@ -1333,9 +1333,12 @@ importers: miniflare: specifier: workspace:* version: link:../miniflare + semver: + specifier: ^7.5.1 + version: 7.5.4 vitest: - specifier: 1.3.0 - version: 1.3.0(@types/node@20.8.3) + specifier: 1.3.x - 1.5.x + version: 1.5.0(@types/node@20.8.3) wrangler: specifier: workspace:* version: link:../wrangler @@ -1355,6 +1358,9 @@ importers: '@types/node': specifier: 20.8.3 version: 20.8.3 + '@types/semver': + specifier: ^7.5.1 + version: 7.5.1 capnp-ts: specifier: ^0.7.0 version: 0.7.0(patch_hash=l4yimnxyvkiyj6alnps2ec3sii) @@ -6653,7 +6659,7 @@ packages: recast: 0.21.5 remark-frontmatter: 4.0.1 remark-mdx-frontmatter: 1.1.1 - semver: 7.5.1 + semver: 7.5.4 sort-package-json: 1.57.0 tar-fs: 2.1.1 tsconfig-paths: 4.2.0 @@ -7735,7 +7741,7 @@ packages: grapheme-splitter: 1.0.4 ignore: 5.2.0 natural-compare-lite: 1.4.0 - semver: 7.5.1 + semver: 7.5.4 tsutils: 3.21.0(typescript@5.0.3) typescript: 5.0.3 transitivePeerDependencies: @@ -7763,7 +7769,7 @@ packages: graphemer: 1.4.0 ignore: 5.2.0 natural-compare-lite: 1.4.0 - semver: 7.5.1 + semver: 7.5.4 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: @@ -7791,7 +7797,7 @@ packages: graphemer: 1.4.0 ignore: 5.2.0 natural-compare-lite: 1.4.0 - semver: 7.5.1 + semver: 7.5.4 tsutils: 3.21.0(typescript@5.0.3) typescript: 5.0.3 transitivePeerDependencies: @@ -7819,7 +7825,7 @@ packages: graphemer: 1.4.0 ignore: 5.2.0 natural-compare-lite: 1.4.0 - semver: 7.5.1 + semver: 7.5.4 tsutils: 3.21.0(typescript@5.4.5) typescript: 5.4.5 transitivePeerDependencies: @@ -8598,11 +8604,11 @@ packages: chai: 4.3.10 dev: false - /@vitest/expect@1.3.0: - resolution: {integrity: sha512-7bWt0vBTZj08B+Ikv70AnLRicohYwFgzNjFqo9SxxqHHxSlUJGSXmCRORhOnRMisiUryKMdvsi1n27Bc6jL9DQ==} + /@vitest/expect@1.5.0: + resolution: {integrity: sha512-0pzuCI6KYi2SIC3LQezmxujU9RK/vwC1U9R0rLuGlNGcOuDWxqWKu6nUdFsX9tH1WU0SXtAxToOsEjeUn1s3hA==} dependencies: - '@vitest/spy': 1.3.0 - '@vitest/utils': 1.3.0 + '@vitest/spy': 1.5.0 + '@vitest/utils': 1.5.0 chai: 4.3.10 /@vitest/runner@1.2.2: @@ -8613,10 +8619,10 @@ packages: pathe: 1.1.1 dev: false - /@vitest/runner@1.3.0: - resolution: {integrity: sha512-1Jb15Vo/Oy7mwZ5bXi7zbgszsdIBNjc4IqP8Jpr/8RdBC4nF1CTzIAn2dxYvpF1nGSseeL39lfLQ2uvs5u1Y9A==} + /@vitest/runner@1.5.0: + resolution: {integrity: sha512-7HWwdxXP5yDoe7DTpbif9l6ZmDwCzcSIK38kTSIt6CFEpMjX4EpCgT6wUmS0xTXqMI6E/ONmfgRKmaujpabjZQ==} dependencies: - '@vitest/utils': 1.3.0 + '@vitest/utils': 1.5.0 p-limit: 5.0.0 pathe: 1.1.1 @@ -8628,8 +8634,8 @@ packages: pretty-format: 29.7.0 dev: false - /@vitest/snapshot@1.3.0: - resolution: {integrity: sha512-swmktcviVVPYx9U4SEQXLV6AEY51Y6bZ14jA2yo6TgMxQ3h+ZYiO0YhAHGJNp0ohCFbPAis1R9kK0cvN6lDPQA==} + /@vitest/snapshot@1.5.0: + resolution: {integrity: sha512-qpv3fSEuNrhAO3FpH6YYRdaECnnRjg9VxbhdtPwPRnzSfHVXnNzzrpX4cJxqiwgRMo7uRMWDFBlsBq4Cr+rO3A==} dependencies: magic-string: 0.30.5 pathe: 1.1.1 @@ -8641,8 +8647,8 @@ packages: tinyspy: 2.2.0 dev: false - /@vitest/spy@1.3.0: - resolution: {integrity: sha512-AkCU0ThZunMvblDpPKgjIi025UxR8V7MZ/g/EwmAGpjIujLVV2X6rGYGmxE2D4FJbAy0/ijdROHMWa2M/6JVMw==} + /@vitest/spy@1.5.0: + resolution: {integrity: sha512-vu6vi6ew5N5MMHJjD5PoakMRKYdmIrNJmyfkhRpQt5d9Ewhw9nZ5Aqynbi3N61bvk9UvZ5UysMT6ayIrZ8GA9w==} dependencies: tinyspy: 2.2.0 @@ -8655,8 +8661,8 @@ packages: pretty-format: 29.7.0 dev: false - /@vitest/utils@1.3.0: - resolution: {integrity: sha512-/LibEY/fkaXQufi4GDlQZhikQsPO2entBKtfuyIpr1jV4DpaeasqkeHjhdOhU24vSHshcSuEyVlWdzvv2XmYCw==} + /@vitest/utils@1.5.0: + resolution: {integrity: sha512-BDU0GNL8MWkRkSRdNFvCUCAVOeHaUlVJ9Tx0TYBZyXaaOTmGtUFObzchCivIBrIwKzvZA7A9sCejVhXM2aY98A==} dependencies: diff-sequences: 29.6.3 estree-walker: 3.0.3 @@ -12327,7 +12333,7 @@ packages: dependencies: '@types/estree-jsx': 1.0.0 estree-util-is-identifier-name: 2.0.1 - estree-walker: 3.0.1 + estree-walker: 3.0.3 dev: true /estree-util-is-identifier-name@1.1.0: @@ -17289,7 +17295,7 @@ packages: /periscopic@3.0.4: resolution: {integrity: sha512-SFx68DxCv0Iyo6APZuw/AKewkkThGwssmU0QWtTlvov3VAtPX+QJ4CadwSaz8nrT5jPIuxdvJWB4PnD2KNDxQg==} dependencies: - estree-walker: 3.0.1 + estree-walker: 3.0.3 is-reference: 3.0.0 dev: true @@ -19564,6 +19570,11 @@ packages: /tinypool@0.8.2: resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==} engines: {node: '>=14.0.0'} + dev: false + + /tinypool@0.8.3: + resolution: {integrity: sha512-Ud7uepAklqRH1bvwy22ynrliC7Dljz7Tm8M/0RBUW+YRa4YHhZ6e4PpgE+fu1zr/WqB1kbeuVrdfeuyIBpy4tw==} + engines: {node: '>=14.0.0'} /tinyspy@2.2.0: resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} @@ -20513,8 +20524,8 @@ packages: - terser dev: false - /vite-node@1.3.0(@types/node@20.8.3): - resolution: {integrity: sha512-D/oiDVBw75XMnjAXne/4feCkCEwcbr2SU1bjAhCcfI5Bq3VoOHji8/wCPAfUkDIeohJ5nSZ39fNxM3dNZ6OBOA==} + /vite-node@1.5.0(@types/node@20.8.3): + resolution: {integrity: sha512-tV8h6gMj6vPzVCa7l+VGq9lwoJjW8Y79vst8QZZGiuRAfijU+EEWuc0kFpmndQrWhMMhet1jdSF+40KSZUqIIw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true dependencies: @@ -20756,15 +20767,15 @@ packages: - terser dev: false - /vitest@1.3.0(@types/node@20.8.3): - resolution: {integrity: sha512-V9qb276J1jjSx9xb75T2VoYXdO1UKi+qfflY7V7w93jzX7oA/+RtYE6TcifxksxsZvygSSMwu2Uw6di7yqDMwg==} + /vitest@1.5.0(@types/node@20.8.3): + resolution: {integrity: sha512-d8UKgR0m2kjdxDWX6911uwxout6GHS0XaGH1cksSIVVG8kRlE7G7aBw7myKQCvDI5dT4j7ZMa+l706BIORMDLw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.3.0 - '@vitest/ui': 1.3.0 + '@vitest/browser': 1.5.0 + '@vitest/ui': 1.5.0 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -20782,11 +20793,11 @@ packages: optional: true dependencies: '@types/node': 20.8.3 - '@vitest/expect': 1.3.0 - '@vitest/runner': 1.3.0 - '@vitest/snapshot': 1.3.0 - '@vitest/spy': 1.3.0 - '@vitest/utils': 1.3.0 + '@vitest/expect': 1.5.0 + '@vitest/runner': 1.5.0 + '@vitest/snapshot': 1.5.0 + '@vitest/spy': 1.5.0 + '@vitest/utils': 1.5.0 acorn-walk: 8.3.2 chai: 4.3.10 debug: 4.3.4(supports-color@9.2.2) @@ -20798,9 +20809,9 @@ packages: std-env: 3.7.0 strip-literal: 2.0.0 tinybench: 2.6.0 - tinypool: 0.8.2 + tinypool: 0.8.3 vite: 5.0.12(@types/node@20.8.3) - vite-node: 1.3.0(@types/node@20.8.3) + vite-node: 1.5.0(@types/node@20.8.3) why-is-node-running: 2.2.2 transitivePeerDependencies: - less