Skip to content

Commit 1540ffd

Browse files
committed
Add getPackageVersionDependencies to Dapper and DapperFake
1 parent 6a1591e commit 1540ffd

File tree

8 files changed

+116
-0
lines changed

8 files changed

+116
-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
} from "./fakers/package";
1516
import { getFakeServiceAccounts } from "./fakers/serviceAccount";
@@ -33,6 +34,7 @@ export class DapperFake implements DapperInterface {
3334
public getPackageListings = getFakePackageListings;
3435
public getPackageReadme = getFakeReadme;
3536
public getPackageVersions = getFakePackageVersions;
37+
public getPackageVersionDependencies = getFakePackageVersionDependencies;
3638
public getTeamDetails = getFakeTeamDetails;
3739
public getTeamMembers = getFakeTeamMembers;
3840
public getTeamServiceAccounts = getFakeServiceAccounts;

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

Lines changed: 11 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,16 @@ it("executes getPackageChangelog without errors", async () => {
3738
).resolves.not.toThrowError();
3839
});
3940

41+
it("executes getPackageVersionDependencies without errors", async () => {
42+
await expect(
43+
dapper.getPackageVersionDependencies(
44+
namespaceId,
45+
packageName,
46+
packageVersion
47+
)
48+
).resolves.not.toThrowError();
49+
});
50+
4051
it("executes getPackageListingDetails without errors", async () => {
4152
await expect(
4253
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
@@ -15,6 +15,7 @@ import {
1515
getPackageWiki,
1616
getPackageWikiPage,
1717
getPackagePermissions,
18+
getPackageVersionDependencies,
1819
} from "./methods/package";
1920
import {
2021
getPackageListingDetails,
@@ -50,6 +51,8 @@ export class DapperTs implements DapperTsInterface {
5051
this.getPackageListingDetails = this.getPackageListingDetails.bind(this);
5152
this.getPackageReadme = this.getPackageReadme.bind(this);
5253
this.getPackageVersions = this.getPackageVersions.bind(this);
54+
this.getPackageVersionDependencies =
55+
this.getPackageVersionDependencies.bind(this);
5356
this.getPackageWiki = this.getPackageWiki.bind(this);
5457
this.getPackageWikiPage = this.getPackageWikiPage.bind(this);
5558
this.getPackagePermissions = this.getPackagePermissions.bind(this);
@@ -74,6 +77,7 @@ export class DapperTs implements DapperTsInterface {
7477
public getPackageListingDetails = getPackageListingDetails;
7578
public getPackageReadme = getPackageReadme;
7679
public getPackageVersions = getPackageVersions;
80+
public getPackageVersionDependencies = getPackageVersionDependencies;
7781
public getPackageWiki = getPackageWiki;
7882
public getPackageWikiPage = getPackageWikiPage;
7983
public getPackagePermissions = getPackagePermissions;

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

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

@@ -80,6 +82,34 @@ export async function getPackageVersions(
8082

8183
return data;
8284
}
85+
export async function getPackageVersionDependencies(
86+
this: DapperTsInterface,
87+
namespaceId: string,
88+
packageName: string,
89+
versionNumber: string,
90+
page?: number
91+
) {
92+
const options: PackageVersionDependenciesRequestQueryParams = [
93+
{
94+
key: "page",
95+
value: page,
96+
impotent: 1,
97+
},
98+
];
99+
100+
const data = await fetchPackageVersionDependencies({
101+
config: this.config,
102+
params: {
103+
namespace_id: namespaceId,
104+
package_name: packageName,
105+
version_number: versionNumber,
106+
},
107+
data: {},
108+
queryParams: options,
109+
});
110+
111+
return data;
112+
}
83113

84114
export async function getPackageWiki(
85115
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
getTeamDetails: methods.GetTeamDetails;
1516
getTeamMembers: methods.GetTeamMembers;

packages/dapper/src/types/methods.ts

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

68+
export type GetPackageVersionDependencies = (
69+
namespace: string,
70+
name: string,
71+
version: string,
72+
page?: number
73+
) => Promise<PackageVersionDependencies>;
74+
6775
export type GetPackagePermissions = (
6876
namespaceId: string,
6977
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)