From ff7ec0fcd98ec62782e725c11af17878f5bd5ed9 Mon Sep 17 00:00:00 2001 From: Jack Bates Date: Tue, 3 May 2022 10:11:23 -0700 Subject: [PATCH] Relax not-needed version condition --- .../src/check-parse-results.ts | 2 +- packages/definitions-parser/src/git.ts | 20 ++++--------- packages/definitions-parser/test/git.test.ts | 30 ++++++++----------- 3 files changed, 20 insertions(+), 32 deletions(-) diff --git a/packages/definitions-parser/src/check-parse-results.ts b/packages/definitions-parser/src/check-parse-results.ts index 7151167dc1..b563eb924f 100644 --- a/packages/definitions-parser/src/check-parse-results.ts +++ b/packages/definitions-parser/src/check-parse-results.ts @@ -139,7 +139,7 @@ async function checkNpm( log(" yarn not-needed " + yarnargs.join(" ")); log(` git add --all && git commit -m "${name}: Provides its own types" && git push -u origin not-needed-${name}`); log(` And comment PR: This will deprecate \`@types/${name}\` in favor of just \`${name}\`. CC ${contributorUrls}`); - if (semver.gt(`${major}.${minor}.0`, firstTypedVersion)) { + if (semver.gte(`${major}.${minor}.0`, firstTypedVersion)) { log(" WARNING: our version is greater!"); } if (dependedOn.has(name)) { diff --git a/packages/definitions-parser/src/git.ts b/packages/definitions-parser/src/git.ts index 8e9feccfa1..a46347c238 100644 --- a/packages/definitions-parser/src/git.ts +++ b/packages/definitions-parser/src/git.ts @@ -1,4 +1,3 @@ -import assert from "assert"; import { sourceBranch } from "./lib/settings"; import { PackageId, @@ -20,7 +19,6 @@ import { cacheDir, } from "@definitelytyped/utils"; import * as pacote from "pacote"; -import * as semver from "semver"; import { getAffectedPackages } from "./get-affected-packages"; export interface GitDiff { @@ -127,10 +125,14 @@ export async function getAffectedPackagesFromDiff( /** * 1. libraryName must exist on npm (SKIPPED and preferably/optionally have been the libraryName in just-deleted header) - * 2. asOfVersion must be newer than `@types/name@latest` on npm - * 3. `name@asOfVersion` must exist on npm + * 2. `name@asOfVersion` must exist on npm */ export async function checkNotNeededPackage(unneeded: NotNeededPackage) { + await pacote.manifest(unneeded.fullNpmName, { cache: cacheDir }).catch((reason) => { + throw reason.code === "E404" + ? new Error(`Unexpected error: @types package not found for ${unneeded.fullNpmName}`, { cause: reason }) + : reason; + }); // eg @types/babel__parser await pacote.manifest(`${unneeded.libraryName}@${unneeded.version}`, { cache: cacheDir }).catch((reason) => { throw reason.code === "E404" ? new Error( @@ -145,16 +147,6 @@ Unneeded packages have to be replaced with a package on npm.`, }) : reason; }); // eg @babel/parser - const typings = await pacote.manifest(unneeded.fullNpmName, { cache: cacheDir }).catch((reason) => { - throw reason.code === "E404" - ? new Error(`Unexpected error: @types package not found for ${unneeded.fullNpmName}`, { cause: reason }) - : reason; - }); // eg @types/babel__parser - assert( - semver.gt(unneeded.version, typings.version), - `The specified version ${unneeded.version} of ${unneeded.libraryName} must be newer than the version -it is supposed to replace, ${typings.version} of ${unneeded.fullNpmName}.` - ); } /** diff --git a/packages/definitions-parser/test/git.test.ts b/packages/definitions-parser/test/git.test.ts index 2153e0cd2c..1e13fa298e 100644 --- a/packages/definitions-parser/test/git.test.ts +++ b/packages/definitions-parser/test/git.test.ts @@ -96,32 +96,28 @@ const nonexistentReplacementPackage = new NotNeededPackage("jest", "nonexistent" const nonexistentTypesPackage = new NotNeededPackage("nonexistent", "jest", "100.0.0"); testo({ - missingSource() { - return expect(checkNotNeededPackage(nonexistentReplacementPackage)).rejects.toThrow( - "The entry for @types/jest in notNeededPackages.json" - ); - }, - missingTypings() { + nonexistentTypesPackage() { return expect(checkNotNeededPackage(nonexistentTypesPackage)).rejects.toThrow( "@types package not found for @types/nonexistent" ); }, - deprecatedSameVersion() { - return expect(checkNotNeededPackage(sameVersion)).rejects - .toThrow(`The specified version 50.0.0 of jest must be newer than the version -it is supposed to replace, 50.0.0 of @types/jest.`); - }, - deprecatedOlderVersion() { - return expect(checkNotNeededPackage(olderReplacement)).rejects - .toThrow(`The specified version 4.0.0 of jest must be newer than the version -it is supposed to replace, 50.0.0 of @types/jest.`); + nonexistentReplacementPackage() { + return expect(checkNotNeededPackage(nonexistentReplacementPackage)).rejects.toThrow( + "The entry for @types/jest in notNeededPackages.json" + ); }, - missingNpmVersion() { + nonexistentReplacementVersion() { return expect(checkNotNeededPackage(nonexistentReplacementVersion)).rejects.toThrow( "The specified version 999.0.0 of jest is not on npm." ); }, - ok() { + newerReplacement() { return checkNotNeededPackage(newerReplacement); }, + olderReplacement() { + return checkNotNeededPackage(olderReplacement); + }, + sameVersion() { + return checkNotNeededPackage(sameVersion); + }, });