Skip to content

Commit 8ec06d5

Browse files
committed
Add getPackageVersionDependencies to Dapper and DapperFake
1 parent b133488 commit 8ec06d5

File tree

8 files changed

+117
-0
lines changed

8 files changed

+117
-0
lines changed

packages/dapper-fake/src/fakers/package.ts

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,49 @@ export const getFakePackageVersions = async (
190190
});
191191
};
192192

193+
const fakePackageVersionDependencies = range(25).map(() => ({
194+
description: faker.company.buzzPhrase(),
195+
icon_url: getFakeImg(256, 256),
196+
is_active: faker.datatype.boolean(0.5),
197+
name: faker.word.words(3).split(" ").join("_"),
198+
namespace: faker.word.sample(),
199+
version_number: getVersionNumber(),
200+
is_removed: faker.datatype.boolean(0.5),
201+
}));
202+
203+
export const getFakePackageVersionDependencies = async (
204+
namespace: string,
205+
name: string,
206+
version: string,
207+
page?: number
208+
) => {
209+
setSeed(`${namespace}-${name}-${version}`);
210+
page = page ?? 1;
211+
212+
// Split the fake data into pages of 10 items each.
213+
214+
const start = (page - 1) * 10;
215+
const end = start + 10;
216+
const items = fakePackageVersionDependencies.slice(start, end);
217+
218+
return {
219+
count: fakePackageVersionDependencies.length,
220+
next:
221+
end < fakePackageVersionDependencies.length
222+
? `https://thunderstore.io/api/cyberstorm/package/${namespace}/${name}/v/${version}/dependencies/?page=${
223+
page + 1
224+
}`
225+
: null,
226+
previous:
227+
page > 1
228+
? `https://thunderstore.io/api/cyberstorm/package/${namespace}/${name}/v/${version}/dependencies/?page=${
229+
page - 1
230+
}`
231+
: null,
232+
results: items,
233+
};
234+
};
235+
193236
const getVersionNumber = (min = 0, max = 10) => {
194237
const major = faker.number.int({ min, max });
195238
const minor = faker.number.int({ min, max });

packages/dapper-fake/src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
getFakePackageListingDetails,
1111
getFakePackageListings,
1212
getFakePackagePermissions,
13+
getFakePackageVersionDependencies,
1314
getFakePackageVersions,
1415
getFakePackageSource,
1516
} from "./fakers/package";
@@ -35,6 +36,7 @@ export class DapperFake implements DapperInterface {
3536
public getPackageReadme = getFakeReadme;
3637
public getPackageVersions = getFakePackageVersions;
3738
public getPackageSource = getFakePackageSource;
39+
public getPackageVersionDependencies = getFakePackageVersionDependencies;
3840
public getTeamDetails = getFakeTeamDetails;
3941
public getTeamMembers = getFakeTeamMembers;
4042
public getTeamServiceAccounts = getFakeServiceAccounts;

packages/dapper-ts/src/__tests__/index.test.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { DapperTs } from "../index";
44
const communityId = "test-community-1";
55
const namespaceId = "Test_Team_0";
66
const packageName = "Test_Package_0";
7+
const packageVersion = "1.0.0";
78
let dapper: DapperTs;
89

910
beforeAll(() => {
@@ -37,6 +38,17 @@ it("executes getPackageChangelog without errors", async () => {
3738
).resolves.not.toThrowError();
3839
});
3940

41+
// TODO: Disabled temporarily until we decide on a testing strategy/policy regarding e2e tests
42+
test.skip("executes getPackageVersionDependencies without errors", async () => {
43+
await expect(
44+
dapper.getPackageVersionDependencies(
45+
namespaceId,
46+
packageName,
47+
packageVersion
48+
)
49+
).resolves.not.toThrowError();
50+
});
51+
4052
it("executes getPackageListingDetails without errors", async () => {
4153
await expect(
4254
dapper.getPackageListingDetails(communityId, namespaceId, packageName)

packages/dapper-ts/src/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import {
1616
getPackageWikiPage,
1717
getPackagePermissions,
1818
getPackageSource,
19+
getPackageVersionDependencies,
1920
} from "./methods/package";
2021
import {
2122
getPackageListingDetails,
@@ -51,6 +52,8 @@ export class DapperTs implements DapperTsInterface {
5152
this.getPackageListingDetails = this.getPackageListingDetails.bind(this);
5253
this.getPackageReadme = this.getPackageReadme.bind(this);
5354
this.getPackageVersions = this.getPackageVersions.bind(this);
55+
this.getPackageVersionDependencies =
56+
this.getPackageVersionDependencies.bind(this);
5457
this.getPackageWiki = this.getPackageWiki.bind(this);
5558
this.getPackageWikiPage = this.getPackageWikiPage.bind(this);
5659
this.getPackagePermissions = this.getPackagePermissions.bind(this);
@@ -76,6 +79,7 @@ export class DapperTs implements DapperTsInterface {
7679
public getPackageListingDetails = getPackageListingDetails;
7780
public getPackageReadme = getPackageReadme;
7881
public getPackageVersions = getPackageVersions;
82+
public getPackageVersionDependencies = getPackageVersionDependencies;
7983
public getPackageWiki = getPackageWiki;
8084
public getPackageWikiPage = getPackageWikiPage;
8185
public getPackagePermissions = getPackagePermissions;

packages/dapper-ts/src/methods/package.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import {
99
fetchPackagePermissions,
1010
fetchPackageSource,
1111
ApiError,
12+
fetchPackageVersionDependencies,
13+
PackageVersionDependenciesRequestQueryParams,
1214
} from "@thunderstore/thunderstore-api";
1315
import { z } from "zod";
1416

@@ -101,6 +103,34 @@ export async function getPackageVersions(
101103

102104
return data;
103105
}
106+
export async function getPackageVersionDependencies(
107+
this: DapperTsInterface,
108+
namespaceId: string,
109+
packageName: string,
110+
versionNumber: string,
111+
page?: number
112+
) {
113+
const options: PackageVersionDependenciesRequestQueryParams = [
114+
{
115+
key: "page",
116+
value: page,
117+
impotent: 1,
118+
},
119+
];
120+
121+
const data = await fetchPackageVersionDependencies({
122+
config: this.config,
123+
params: {
124+
namespace_id: namespaceId,
125+
package_name: packageName,
126+
version_number: versionNumber,
127+
},
128+
data: {},
129+
queryParams: options,
130+
});
131+
132+
return data;
133+
}
104134

105135
export async function getPackageWiki(
106136
this: DapperTsInterface,

packages/dapper/src/dapper.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export interface DapperInterface {
1010
getPackageListings: methods.GetPackageListings;
1111
getPackageReadme: methods.GetPackageReadme;
1212
getPackageVersions: methods.GetPackageVersions;
13+
getPackageVersionDependencies: methods.GetPackageVersionDependencies;
1314
getPackagePermissions: methods.GetPackagePermissions;
1415
getPackageSource: methods.GetPackageSource;
1516
getTeamDetails: methods.GetTeamDetails;

packages/dapper/src/types/methods.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
type PackageSource,
1111
type PackageSubmissionResponse,
1212
type PackageVersion,
13+
type PackageVersionDependencies,
1314
} from "./package";
1415
import { type PackageListingType } from "./props";
1516
import { type HTMLContentResponse, type MarkdownResponse } from "./shared";
@@ -65,6 +66,13 @@ export type GetPackageVersions = (
6566
name: string
6667
) => Promise<PackageVersion[]>;
6768

69+
export type GetPackageVersionDependencies = (
70+
namespace: string,
71+
name: string,
72+
version: string,
73+
page?: number
74+
) => Promise<PackageVersionDependencies>;
75+
6876
export type GetPackagePermissions = (
6977
namespaceId: string,
7078
communityId: string,

packages/dapper/src/types/package.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,23 @@ export interface PackageVersion {
5757
install_url: string;
5858
}
5959

60+
export interface PackageVersionDependency {
61+
description: string;
62+
icon_url: string;
63+
is_active: boolean;
64+
name: string;
65+
namespace: string;
66+
version_number: string;
67+
is_removed: boolean;
68+
}
69+
70+
export type PackageVersionDependencies = {
71+
count: number;
72+
previous: string | null;
73+
next: string | null;
74+
results: PackageVersionDependency[];
75+
};
76+
6077
export interface PackagePermissions {
6178
package: {
6279
community_id: string;

0 commit comments

Comments
 (0)