mirror of
https://github.com/chenasraf/DefinitelyTyped-tools.git
synced 2026-05-18 01:49:03 +00:00
Cleanup NotNeededPackage[Raw] (#220)
* Cleanup NotNeededPackage[Raw] Better construction interface Also fix a lot of tests for some reason? * remove temp notes
This commit is contained in:
committed by
GitHub
parent
cef10322f4
commit
925652e8bf
@@ -249,17 +249,20 @@ export class NotNeededPackage extends PackageBase {
|
||||
return License.MIT;
|
||||
}
|
||||
|
||||
constructor(readonly name: string, raw: NotNeededPackageRaw) {
|
||||
super(raw);
|
||||
|
||||
static fromRaw(name: string, raw: NotNeededPackageRaw) {
|
||||
for (const key of Object.keys(raw)) {
|
||||
if (!["libraryName", "sourceRepoURL", "asOfVersion"].includes(key)) {
|
||||
throw new Error(`Unexpected key in not-needed package: ${key}`);
|
||||
}
|
||||
}
|
||||
assert(raw.libraryName && name && raw.asOfVersion);
|
||||
|
||||
this.version = Semver.parse(raw.asOfVersion);
|
||||
return new NotNeededPackage(name, raw.libraryName, raw.asOfVersion);
|
||||
}
|
||||
|
||||
constructor(readonly name: string, readonly libraryName: string, asOfVersion: string) {
|
||||
super({ libraryName });
|
||||
assert(libraryName && name && asOfVersion);
|
||||
this.version = Semver.parse(asOfVersion);
|
||||
}
|
||||
|
||||
get major(): number {
|
||||
@@ -601,8 +604,8 @@ function readTypesDataFile(): Promise<TypesDataFile> {
|
||||
|
||||
export function readNotNeededPackages(dt: FS): readonly NotNeededPackage[] {
|
||||
const rawJson = dt.readJson("notNeededPackages.json"); // tslint:disable-line await-promise (tslint bug)
|
||||
return Object.entries((rawJson as { readonly packages: readonly NotNeededPackageRaw[] }).packages).map(
|
||||
([name, raw]) => new NotNeededPackage(name, raw)
|
||||
return Object.entries((rawJson as { readonly packages: readonly NotNeededPackageRaw[] }).packages).map(entry =>
|
||||
NotNeededPackage.fromRaw(...entry)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -15,12 +15,7 @@ const typesData: TypesDataFile = {
|
||||
};
|
||||
typesData.jquery["2.0"] = { ...typesData.jquery["1.0"], libraryMajorVersion: 2 };
|
||||
|
||||
const notNeeded = [
|
||||
new NotNeededPackage("jest", {
|
||||
libraryName: "jest",
|
||||
asOfVersion: "100.0.0"
|
||||
})
|
||||
];
|
||||
const notNeeded = [new NotNeededPackage("jest", "jest", "100.0.0")];
|
||||
const allPackages = AllPackages.from(typesData, notNeeded);
|
||||
|
||||
testo({
|
||||
|
||||
@@ -4,20 +4,15 @@ import { GitDiff, getNotNeededPackages, checkNotNeededPackage } from "../src/git
|
||||
import { NotNeededPackage, TypesDataFile, AllPackages } from "../src/packages";
|
||||
|
||||
const typesData: TypesDataFile = {
|
||||
jquery: createTypingsVersionRaw("jquery", [], []),
|
||||
known: createTypingsVersionRaw("known", [{ name: "jquery", version: { major: 1 } }], []),
|
||||
"known-test": createTypingsVersionRaw("known-test", [], ["jquery"]),
|
||||
"most-recent": createTypingsVersionRaw("most-recent", [{ name: "jquery", version: "*" }], []),
|
||||
unknown: createTypingsVersionRaw("unknown", [{ name: "COMPLETELY-UNKNOWN", version: { major: 1 } }], []),
|
||||
"unknown-test": createTypingsVersionRaw("unknown-test", [], ["WAT"])
|
||||
jquery: createTypingsVersionRaw("jquery", {}, [], {}),
|
||||
known: createTypingsVersionRaw("known", { jquery: { major: 1 } }, [], {}),
|
||||
"known-test": createTypingsVersionRaw("known-test", {}, ["jquery"], {}),
|
||||
"most-recent": createTypingsVersionRaw("most-recent", { jquery: "*" }, [], {}),
|
||||
unknown: createTypingsVersionRaw("unknown", { "COMPLETELY-UNKNOWN": { major: 1 } }, [], {}),
|
||||
"unknown-test": createTypingsVersionRaw("unknown-test", {}, ["WAT"], {})
|
||||
};
|
||||
|
||||
const jestNotNeeded = [
|
||||
new NotNeededPackage("jest", {
|
||||
libraryName: "jest",
|
||||
asOfVersion: "100.0.0"
|
||||
})
|
||||
];
|
||||
const jestNotNeeded = [new NotNeededPackage("jest", "jest", "100.0.0")];
|
||||
const allPackages = AllPackages.from(typesData, jestNotNeeded);
|
||||
|
||||
const deleteJestDiffs: GitDiff[] = [
|
||||
@@ -34,7 +29,7 @@ testo({
|
||||
expect(() =>
|
||||
Array.from(
|
||||
getNotNeededPackages(
|
||||
AllPackages.from({ jest: createTypingsVersionRaw("jest", [], []) }, jestNotNeeded),
|
||||
AllPackages.from({ jest: createTypingsVersionRaw("jest", {}, [], {}) }, jestNotNeeded),
|
||||
deleteJestDiffs
|
||||
)
|
||||
)
|
||||
@@ -65,12 +60,7 @@ testo({
|
||||
scoped() {
|
||||
Array.from(
|
||||
getNotNeededPackages(
|
||||
AllPackages.from(typesData, [
|
||||
new NotNeededPackage("ember__object", {
|
||||
libraryName: "@ember/object",
|
||||
asOfVersion: "1.0.0"
|
||||
})
|
||||
]),
|
||||
AllPackages.from(typesData, [new NotNeededPackage("ember__object", "@ember/object", "1.0.0")]),
|
||||
[{ status: "D", file: "types/ember__object/index.d.ts" }]
|
||||
)
|
||||
);
|
||||
@@ -80,6 +70,7 @@ testo({
|
||||
});
|
||||
|
||||
const empty: NpmInfo = {
|
||||
homepage: "",
|
||||
distTags: new Map(),
|
||||
versions: new Map(),
|
||||
time: new Map()
|
||||
@@ -103,6 +94,7 @@ testo({
|
||||
deprecatedSameVersion() {
|
||||
expect(() => {
|
||||
checkNotNeededPackage(jestNotNeeded[0], empty, {
|
||||
homepage: "jest.com",
|
||||
distTags: new Map([["latest", "100.0.0"]]),
|
||||
versions: new Map(),
|
||||
time: new Map([["modified", ""]])
|
||||
@@ -113,6 +105,7 @@ it is supposed to replace, 100.0.0 of @types/jest.`);
|
||||
deprecatedOlderVersion() {
|
||||
expect(() => {
|
||||
checkNotNeededPackage(jestNotNeeded[0], empty, {
|
||||
homepage: "jest.com",
|
||||
distTags: new Map([["latest", "999.0.0"]]),
|
||||
versions: new Map(),
|
||||
time: new Map([["modified", ""]])
|
||||
@@ -123,6 +116,7 @@ it is supposed to replace, 999.0.0 of @types/jest.`);
|
||||
missingNpmVersion() {
|
||||
expect(() => {
|
||||
checkNotNeededPackage(jestNotNeeded[0], empty, {
|
||||
homepage: "jest.com",
|
||||
distTags: new Map([["latest", "4.0.0"]]),
|
||||
versions: new Map(),
|
||||
time: new Map([["modified", ""]])
|
||||
@@ -133,16 +127,36 @@ it is supposed to replace, 999.0.0 of @types/jest.`);
|
||||
expect(() =>
|
||||
checkNotNeededPackage(
|
||||
jestNotNeeded[0],
|
||||
{ distTags: new Map(), versions: new Map([["50.0.0", {}]]), time: new Map([["modified", ""]]) },
|
||||
{ distTags: new Map([["latest", "4.0.0"]]), versions: new Map(), time: new Map([["modified", ""]]) }
|
||||
{
|
||||
homepage: "jest.com",
|
||||
distTags: new Map(),
|
||||
versions: new Map([["50.0.0", {}]]),
|
||||
time: new Map([["modified", ""]])
|
||||
},
|
||||
{
|
||||
homepage: "jest.com",
|
||||
distTags: new Map([["latest", "4.0.0"]]),
|
||||
versions: new Map(),
|
||||
time: new Map([["modified", ""]])
|
||||
}
|
||||
)
|
||||
).toThrow("The specified version 100.0.0 of jest is not on npm.");
|
||||
},
|
||||
ok() {
|
||||
checkNotNeededPackage(
|
||||
jestNotNeeded[0],
|
||||
{ distTags: new Map(), versions: new Map([["100.0.0", {}]]), time: new Map([["modified", ""]]) },
|
||||
{ distTags: new Map([["latest", "4.0.0"]]), versions: new Map(), time: new Map([["modified", ""]]) }
|
||||
{
|
||||
homepage: "jest.com",
|
||||
distTags: new Map(),
|
||||
versions: new Map([["100.0.0", {}]]),
|
||||
time: new Map([["modified", ""]])
|
||||
},
|
||||
{
|
||||
homepage: "jest.com",
|
||||
distTags: new Map([["latest", "4.0.0"]]),
|
||||
versions: new Map(),
|
||||
time: new Map([["modified", ""]])
|
||||
}
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -19,10 +19,7 @@ export function skipBadPublishes(pkg: NotNeededPackage, client: CachedNpmInfoCli
|
||||
) {
|
||||
const plusOne = new Semver(latest.major, latest.minor, latest.patch + 1);
|
||||
log(`Deprecation of ${notNeeded.versionString} failed, instead using ${plusOne.versionString}.`);
|
||||
return new NotNeededPackage(pkg.name, {
|
||||
libraryName: pkg.libraryName,
|
||||
asOfVersion: plusOne.versionString
|
||||
});
|
||||
return new NotNeededPackage(pkg.name, pkg.libraryName, plusOne.versionString);
|
||||
}
|
||||
return pkg;
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ function createRawPackage(license: License): TypingsDataRaw {
|
||||
typingsPackageName: "jquery",
|
||||
dependencies: { madeira: { major: 1 } },
|
||||
testDependencies: [],
|
||||
pathMappings: [],
|
||||
pathMappings: {},
|
||||
contributors: [{ name: "A", url: "b@c.d", githubUsername: "e" }],
|
||||
libraryMajorVersion: 1,
|
||||
libraryMinorVersion: 0,
|
||||
@@ -49,10 +49,7 @@ function createTypesData(): TypesDataFile {
|
||||
};
|
||||
}
|
||||
function createUnneededPackage() {
|
||||
return new NotNeededPackage("absalom", {
|
||||
libraryName: "alternate",
|
||||
asOfVersion: "1.1.1"
|
||||
});
|
||||
return new NotNeededPackage("absalom", "alternate", "1.1.1");
|
||||
}
|
||||
testo({
|
||||
mitLicenseText() {
|
||||
@@ -143,10 +140,7 @@ testo({
|
||||
}`);
|
||||
},
|
||||
scopedNotNeededPackageJson() {
|
||||
const scopedUnneeded = new NotNeededPackage("google-cloud__pubsub", {
|
||||
libraryName: "@google-cloud/chubdub",
|
||||
asOfVersion: "0.26.0"
|
||||
});
|
||||
const scopedUnneeded = new NotNeededPackage("google-cloud__pubsub", "@google-cloud/chubdub", "0.26.0");
|
||||
const s = createNotNeededPackageJSON(scopedUnneeded, Registry.NPM);
|
||||
expect(s).toEqual(`{
|
||||
"name": "@types/google-cloud__pubsub",
|
||||
|
||||
Reference in New Issue
Block a user