From 0a45a1449f18ffd37907b7cc5b0dda692f154779 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Tue, 26 Sep 2023 13:09:30 -0700 Subject: [PATCH 1/2] Infer --from-npm version from DT package when provided --- package-lock.json | 19 ++++++++++++++----- packages/cli/package.json | 4 +++- packages/cli/src/index.ts | 23 ++++++++++++++++------- 3 files changed, 33 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6b10f98..184d526 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5634,7 +5634,8 @@ }, "node_modules/semver": { "version": "7.5.4", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -6998,16 +6999,17 @@ }, "packages/cli": { "name": "@arethetypeswrong/cli", - "version": "0.10.1", + "version": "0.10.2", "license": "MIT", "dependencies": { - "@arethetypeswrong/core": "0.10.1", + "@arethetypeswrong/core": "0.10.2", "chalk": "^4.1.2", "cli-table3": "^0.6.3", "commander": "^10.0.1", "marked": "^5.1.0", "marked-terminal": "^5.2.0", - "node-fetch": "^2.6.4" + "node-fetch": "^2.6.4", + "semver": "^7.5.4" }, "bin": { "attw": "dist/index.js" @@ -7017,6 +7019,7 @@ "@types/marked-terminal": "^3.1.3", "@types/node": "^20.2.5", "@types/node-fetch": "^2.6.4", + "@types/semver": "^7.5.3", "typescript": "^5.0.0-dev.20230207" } }, @@ -7025,9 +7028,15 @@ "dev": true, "license": "MIT" }, + "packages/cli/node_modules/@types/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", + "dev": true + }, "packages/core": { "name": "@arethetypeswrong/core", - "version": "0.10.1", + "version": "0.10.2", "license": "MIT", "dependencies": { "@andrewbranch/untar.js": "^1.0.0", diff --git a/packages/cli/package.json b/packages/cli/package.json index 8867bda..4bc55b1 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -42,6 +42,7 @@ "@types/marked-terminal": "^3.1.3", "@types/node": "^20.2.5", "@types/node-fetch": "^2.6.4", + "@types/semver": "^7.5.3", "typescript": "^5.0.0-dev.20230207" }, "dependencies": { @@ -51,6 +52,7 @@ "commander": "^10.0.1", "marked": "^5.1.0", "marked-terminal": "^5.2.0", - "node-fetch": "^2.6.4" + "node-fetch": "^2.6.4", + "semver": "^7.5.4" } } diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index 40c686e..2f5fbd9 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -14,6 +14,7 @@ import readline from "readline"; import { problemFlags } from "./problemUtils.js"; import { readConfig } from "./readConfig.js"; import * as render from "./render/index.js"; +import { major, minor } from "semver"; const packageJson = createRequire(import.meta.url)("../package.json"); const version = packageJson.version; @@ -111,13 +112,21 @@ particularly ESM-related module resolution issues.` if (result.status === "error") { program.error(result.error); } else { - const pkg = dtIsPath - ? (await core.createPackageFromNpm(`${result.data.name}@${result.data.version}`)).mergedWithTypes( - core.createPackageFromTarballData(new Uint8Array(await readFile(opts.definitelyTyped as string))) - ) - : await core.createPackageFromNpm(`${result.data.name}@${result.data.version}`, { - definitelyTyped: opts.definitelyTyped, - }); + let pkg; + if (dtIsPath) { + const dtPackage = core.createPackageFromTarballData( + new Uint8Array(await readFile(opts.definitelyTyped as string)) + ); + const pkgVersion = + result.data.versionKind === "none" + ? `${major(dtPackage.packageVersion)}.${minor(dtPackage.packageVersion)}` + : result.data.version; + pkg = (await core.createPackageFromNpm(`${result.data.name}@${pkgVersion}`)).mergedWithTypes(dtPackage); + } else { + pkg = await core.createPackageFromNpm(`${result.data.name}@${result.data.version}`, { + definitelyTyped: opts.definitelyTyped, + }); + } analysis = await core.checkPackage(pkg, { entrypoints: opts.entrypoints, includeEntrypoints: opts.includeEntrypoints, From 26f89d13a84fc89df8930e6e13127d179e182471 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Tue, 26 Sep 2023 13:11:39 -0700 Subject: [PATCH 2/2] Add changeset --- .changeset/gold-nails-dream.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/gold-nails-dream.md diff --git a/.changeset/gold-nails-dream.md b/.changeset/gold-nails-dream.md new file mode 100644 index 0000000..0ca2c13 --- /dev/null +++ b/.changeset/gold-nails-dream.md @@ -0,0 +1,5 @@ +--- +"@arethetypeswrong/cli": minor +--- + +Infer `--from-npm` version from a locally-provided DefinitelyTyped package