Skip to content

Commit

Permalink
feat: add getPackageMeta function
Browse files Browse the repository at this point in the history
  • Loading branch information
motea927 committed Feb 16, 2024
1 parent 44e9ec3 commit 010bc8d
Show file tree
Hide file tree
Showing 2 changed files with 116 additions and 4 deletions.
85 changes: 81 additions & 4 deletions src/packageUtils/dependencies.spec.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { describe, it, expect } from "vitest";
import { buildDependencyArray } from "./dependencies";
import { buildDependencyArray, getPackageMeta } from "./dependencies";

import type { PackageJson, PackageMeta } from "./types";

Expand Down Expand Up @@ -32,22 +32,22 @@ describe("buildDependencyArray", () => {
isAncestorDevDependency,
);

expect(result).toEqual([
expect(result).toStrictEqual([
{
name: "dep1",
type: "dependencies",
version: "1.0.0",
isPeerDevDependency: false,
isPeerOptionalDependency: true,
depender,
depender: { ...depender },
},
{
name: "dep2",
type: "dependencies",
version: "2.0.0",
isPeerDevDependency: true,
isPeerOptionalDependency: false,
depender,
depender: { ...depender },
},
]);
});
Expand Down Expand Up @@ -92,3 +92,80 @@ describe("buildDependencyArray", () => {
]);
});
});

describe("getPackageMeta", () => {
it("returns a PackageMeta object", () => {
const packagePath = "/path/to/package";
const packageJson: PackageJson = {
name: "test-package",
version: "1.0.0",
dependencies: {
"dep-package": "^1.0.0",
},
devDependencies: {
"dev-package": "^2.0.0",
},
optionalDependencies: {
"opt-package": "^3.0.0",
},
peerDependencies: {
"peer-package": "^4.0.0",
},
peerDependenciesMeta: {
"peer-package": {
optional: true,
},
},
peerDevDependencies: [],
};
const isAncestorDevDependency = false;

const packageMeta = getPackageMeta(
packagePath,
packageJson,
isAncestorDevDependency,
);

expect(packageMeta).toMatchObject({
name: "test-package",
version: "1.0.0",
packagePath: "/path/to/package",
dependencies: [
{
type: "dependencies",
name: "dep-package",
version: "^1.0.0",
isPeerDevDependency: false,
isPeerOptionalDependency: false,
},
],
devDependencies: [
{
type: "devDependencies",
name: "dev-package",
version: "^2.0.0",
isPeerDevDependency: false,
isPeerOptionalDependency: false,
},
],
optionalDependencies: [
{
type: "optionalDependencies",
name: "opt-package",
version: "^3.0.0",
isPeerDevDependency: false,
isPeerOptionalDependency: false,
},
],
peerDependencies: [
{
type: "peerDependencies",
name: "peer-package",
version: "^4.0.0",
isPeerDevDependency: false,
isPeerOptionalDependency: true,
},
],
});
});
});
35 changes: 35 additions & 0 deletions src/packageUtils/dependencies.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,38 @@ export function buildDependencyArray(
};
});
}

export function getPackageMeta(
packagePath: string,
packageJson: PackageJson,
isAncestorDevDependency: boolean,
): PackageMeta {
const { name, version } = packageJson;
const packageMeta: PackageMeta = {
name,
version,
packagePath,
dependencies: [],
devDependencies: [],
optionalDependencies: [],
peerDependencies: [],
};

const dependencyTypes: Array<Dependency["type"]> = [
"dependencies",
"devDependencies",
"optionalDependencies",
"peerDependencies",
];

for (const type of dependencyTypes) {
packageMeta[type] = buildDependencyArray(
type,
packageJson,
packageMeta,
isAncestorDevDependency,
);
}

return packageMeta;
}

0 comments on commit 010bc8d

Please sign in to comment.