Skip to content
This repository has been archived by the owner on Jun 11, 2020. It is now read-only.

Commit

Permalink
Move to use dev dependencies instead of peer deps
Browse files Browse the repository at this point in the history
  • Loading branch information
orta committed Sep 20, 2019
1 parent a5a84ec commit a623613
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 15 deletions.
11 changes: 6 additions & 5 deletions src/generate-packages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ function createPackageJSON(typing: TypingsData, version: string, packages: AllPa
},
scripts: {},
dependencies: getDependencies(typing.packageJsonDependencies, typing, packages),
peerDependencies: getPeerDependencies(typing.peerDependencies),
devDependencies: getDevDependencies(typing.getDevDependencies),
typesPublisherContentHash: typing.contentHash,
typeScriptVersion: typing.minTypeScriptVersion,
};
Expand All @@ -121,7 +121,7 @@ function createPackageJSON(typing: TypingsData, version: string, packages: AllPa

const definitelyTypedURL = "https://github.com/DefinitelyTyped/DefinitelyTyped";

/** Adds inferred dependencies to `dependencies`, if they are not already specified in either `dependencies`. */
/** Adds inferred dependencies to `dependencies`, if they are not already specified in `dependencies`. */
function getDependencies(packageJsonDependencies: ReadonlyArray<PackageJsonDependency>, typing: TypingsData, allPackages: AllPackages): Dependencies {
const dependencies: Dependencies = {};
for (const { name, version } of packageJsonDependencies) {
Expand All @@ -138,7 +138,8 @@ function getDependencies(packageJsonDependencies: ReadonlyArray<PackageJsonDepen
return sortObjectKeys(dependencies);
}

function getPeerDependencies(packageJsonDependencies: ReadonlyArray<PackageJsonDependency>): Dependencies {
/** Just splits and sorts the dependencies, does not add the inferred types */
function getDevDependencies(packageJsonDependencies: ReadonlyArray<PackageJsonDependency>): Dependencies {
const dependencies: Dependencies = {};
for (const { name, version } of packageJsonDependencies) {
dependencies[name] = version;
Expand Down Expand Up @@ -194,8 +195,8 @@ function createReadme(typing: TypingsData): string {
lines.push(` * Last updated: ${(new Date()).toUTCString()}`);
const dependencies = Array.from(typing.dependencies).map(d => getFullNpmName(d.name));
lines.push(` * Dependencies: ${dependencies.length ? dependencies.join(", ") : "none"}`);
const peerDependencies = Array.from(typing.peerDependencies).map(d => getFullNpmName(d.name));
lines.push(` * Peer Dependencies: ${peerDependencies.length ? peerDependencies.join(", ") : "none"}`);
const devDependencies = Array.from(typing.getDevDependencies.map(d => getFullNpmName(d.name)));
lines.push(` * Dev Dependencies: ${devDependencies.length ? devDependencies.join(", ") : "none"}`);
lines.push(` * Global values: ${typing.globals.length ? typing.globals.join(", ") : "none"}`);
lines.push("");

Expand Down
11 changes: 6 additions & 5 deletions src/lib/definition-parser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,21 +93,22 @@ async function combineDataForAllTypesVersions(
});
const allTypesVersions = [dataForRoot, ...dataForOtherTypesVersions];

interface OptionalPackageJSON { readonly license?: unknown; readonly dependencies?: unknown; peerDependencies?: unknown; }
interface OptionalPackageJSON { readonly license?: unknown; readonly dependencies?: unknown; devDependencies?: unknown; }

// tslint:disable-next-line await-promise (tslint bug)
const packageJson = hasPackageJson ? await fs.readJson(packageJsonName) as OptionalPackageJSON : {};
const license = getLicenseFromPackageJson(packageJson.license);
const packageJsonDependencies = checkPackageJsonDependencies(packageJson.dependencies, packageJsonName, /* checkWhitelist */ true);
const packageJsonPeerDependencies = checkPackageJsonDependencies(packageJson.peerDependencies, packageJsonName, /* checkWhitelist */ false);
const packageJsonDevDependencies = checkPackageJsonDependencies(packageJson.devDependencies, packageJsonName, /* checkWhitelist */ false);

const files = Array.from(flatMap(allTypesVersions, ({ typescriptVersion, declFiles }) =>
declFiles.map(file =>
typescriptVersion === undefined ? file : `ts${typescriptVersion}/${file}`)));

// Get all package dependencies and remove any peer dependencies from them
const dependencies = getAllUniqueValues<"dependencies", PackageId>(allTypesVersions, "dependencies")
.filter(dep => !packageJsonPeerDependencies.find(peerDep => peerDep.name === dep.name));
const allDependencies = getAllUniqueValues<"dependencies", PackageId>(allTypesVersions, "dependencies")
const dependencies = allDependencies.filter(dep => !packageJsonDevDependencies.find(devDep => devDep.name === dep.name));

return {
libraryName,
typingsPackageName,
Expand All @@ -124,7 +125,7 @@ async function combineDataForAllTypesVersions(
testDependencies: getAllUniqueValues<"testDependencies", string>(allTypesVersions, "testDependencies"),
pathMappings: getAllUniqueValues<"pathMappings", PathMapping>(allTypesVersions, "pathMappings"),
packageJsonDependencies,
packageJsonPeerDependencies,
packageJsonDevDependencies,
contentHash: await hash(hasPackageJson ? [...files, packageJsonName] : files, mapDefined(allTypesVersions, a => a.tsconfigPathsForHash), fs),
globals: getAllUniqueValues<"globals", string>(allTypesVersions, "globals"),
declaredModules: getAllUniqueValues<"declaredModules", string>(allTypesVersions, "declaredModules"),
Expand Down
8 changes: 4 additions & 4 deletions src/lib/packages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -312,8 +312,8 @@ export interface TypingsDataRaw extends BaseRaw {
// List of dependencies which indicate they should come from npm, not def typed
readonly packageJsonDependencies: ReadonlyArray<PackageJsonDependency>;

// These should be removed from the packageJsonDependencies above
readonly packageJsonPeerDependencies: ReadonlyArray<PackageJsonDependency>;
// These should be removed from the packageJsonDependencies above
readonly packageJsonDevDependencies: ReadonlyArray<PackageJsonDependency>;

// A hash computed from all files from this definition
readonly contentHash: string;
Expand Down Expand Up @@ -424,8 +424,8 @@ export class TypingsData extends PackageBase {
return this.data.dependencies;
}

get peerDependencies(): ReadonlyArray<PackageJsonDependency> {
return this.data.packageJsonPeerDependencies;
get getDevDependencies(): ReadonlyArray<PackageJsonDependency> {
return this.data.packageJsonDevDependencies;
}

/** Path to this package, *relative* to the DefinitelyTyped directory. */
Expand Down
2 changes: 1 addition & 1 deletion src/util/test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export function createTypingsVersionRaw(
typesVersions: [],
license: License.MIT,
packageJsonDependencies: [],
packageJsonPeerDependencies: [],
packageJsonDevDependencies: [],
contentHash: "11111111111111",
projectName: "zombo.com",
globals: [],
Expand Down

0 comments on commit a623613

Please sign in to comment.