Skip to content

Commit ee38cc9

Browse files
authored
Type-check some version strings (#437)
1 parent 5b5114d commit ee38cc9

File tree

4 files changed

+10
-22
lines changed

4 files changed

+10
-22
lines changed

packages/definitions-parser/src/lib/definition-parser.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ function matchesVersion(
4343
);
4444
}
4545

46-
function formattedLibraryVersion(typingsDataRaw: TypingsDataRaw) {
46+
function formattedLibraryVersion(typingsDataRaw: TypingsDataRaw): `${number}.${number}` {
4747
return `${typingsDataRaw.libraryMajorVersion}.${typingsDataRaw.libraryMinorVersion}`;
4848
}
4949

packages/definitions-parser/src/mocks.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class DTMock {
3838
* @param packageName The package of which an old version is to be added.
3939
* @param olderVersion The older version that's to be added.
4040
*/
41-
public addOldVersionOfPackage(packageName: string, olderVersion: string) {
41+
public addOldVersionOfPackage(packageName: string, olderVersion: `${number}`) {
4242
const latestDir = this.pkgDir(mangleScopedPackage(packageName));
4343
const index = latestDir.get("index.d.ts") as string;
4444
const latestHeader = parseHeaderOrFail(index);

packages/definitions-parser/src/packages.ts

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,11 @@ export class AllPackages {
4040
if (!raw) {
4141
throw new Error(`Can't find package ${name}`);
4242
}
43-
const versions = Object.keys(raw);
43+
const versions = Object.values(raw);
4444
if (versions.length > 1) {
4545
throw new Error(`Package ${name} has multiple versions.`);
4646
}
47-
return new TypingsData(raw[versions[0]], /*isLatest*/ true);
47+
return new TypingsData(versions[0], /*isLatest*/ true);
4848
}
4949

5050
static readSingleNotNeeded(name: string, dt: FS): NotNeededPackage {
@@ -316,7 +316,7 @@ export class NotNeededPackage extends PackageBase {
316316
}
317317

318318
export interface TypingsVersionsRaw {
319-
[version: string]: TypingsDataRaw;
319+
[version: `${number}.${number}`]: TypingsDataRaw;
320320
}
321321

322322
/** Minor may be unknown if parsed from a major-only version directory, like 'types/v15' */
@@ -504,29 +504,17 @@ export class TypingsVersions {
504504
private readonly versions: Semver[];
505505

506506
constructor(data: TypingsVersionsRaw) {
507-
const versionMappings = new Map(
508-
Object.keys(data).map(key => {
509-
const version = Semver.parse(key, true);
510-
if (version) {
511-
return [version, key];
512-
}
513-
throw new Error(`Unable to parse version ${key}`);
514-
})
515-
);
516-
517507
/**
518508
* Sorted from latest to oldest so that we publish the current version first.
519509
* This is important because older versions repeatedly reset the "latest" tag to the current version.
520510
*/
521-
this.versions = Array.from(versionMappings.keys())
511+
this.versions = Object.keys(data)
512+
.map(key => Semver.parse(key, true))
522513
.sort(Semver.compare)
523514
.reverse();
524515

525516
this.map = new Map(
526-
this.versions.map(version => {
527-
const dataKey = versionMappings.get(version)!;
528-
return [version, new TypingsData(data[dataKey], version.equals(this.versions[0]))];
529-
})
517+
this.versions.map((version, i) => [version, new TypingsData(data[`${version.major}.${version.minor}`], !i)])
530518
);
531519
}
532520

packages/publisher/test/generate-packages.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ function createRawPackage(license: License): TypingsDataRaw {
4141
function createTypesData(): TypesDataFile {
4242
return {
4343
jquery: {
44-
1: createRawPackage(License.MIT)
44+
"1.0": createRawPackage(License.MIT)
4545
},
4646
madeira: {
47-
1: createRawPackage(License.Apache20)
47+
"1.0": createRawPackage(License.Apache20)
4848
}
4949
};
5050
}

0 commit comments

Comments
 (0)