Skip to content

Commit b07187b

Browse files
committed
Add getPackageVersionDetails to Dapper
1 parent 1a265fc commit b07187b

File tree

4 files changed

+94
-0
lines changed

4 files changed

+94
-0
lines changed

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

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,72 @@ export const getFakePackageListingDetails = async (
157157
};
158158
};
159159

160+
// Content used to render Package's detail view.
161+
export const getFakePackageVersionDetails = async (
162+
namespace: string,
163+
name: string,
164+
version: string
165+
) => {
166+
const seed = `${namespace}-${name}-${version}`;
167+
setSeed(seed);
168+
169+
// Generate a base icon (nullable 10% of time)
170+
const iconUrl =
171+
faker.helpers.maybe(() => getFakeImg(), {
172+
probability: 0.9,
173+
}) ?? null;
174+
175+
// Fake dependencies (reuse logic but need extra flags)
176+
const dependencyCount = faker.number.int({ min: 0, max: 6 });
177+
const dependencies = await Promise.all(
178+
range(dependencyCount).map(async () => {
179+
const depSeed = `${seed}-dep-${faker.string.alpha(8)}`;
180+
setSeed(depSeed);
181+
const isActive = faker.datatype.boolean(0.8);
182+
const removed = faker.datatype.boolean(0.1);
183+
const unavailable = !removed && faker.datatype.boolean(0.05);
184+
return {
185+
description: isActive
186+
? faker.company.buzzPhrase()
187+
: "This package has been removed.",
188+
icon_url: isActive
189+
? faker.helpers.maybe(() => getFakeImg(256, 256), {
190+
probability: 0.85,
191+
}) ?? null
192+
: null,
193+
is_active: isActive,
194+
name: faker.word.words(3).split(" ").join("_"),
195+
namespace: faker.word.sample(),
196+
version_number: getVersionNumber(),
197+
is_removed: removed,
198+
is_unavailable: unavailable,
199+
};
200+
})
201+
);
202+
203+
return {
204+
description: faker.company.buzzPhrase(),
205+
download_count: faker.number.int({ min: 0, max: 5_000_000 }),
206+
icon_url: iconUrl,
207+
name,
208+
namespace,
209+
size: faker.number.int({ min: 20_000, max: 4_000_000_000 }),
210+
datetime_created: faker.date.past({ years: 2 }).toISOString(),
211+
dependencies,
212+
dependency_count: dependencies.length,
213+
download_url: `https://thunderstore.io/package/download/${namespace}/${name}/${version}/`,
214+
full_version_name: `${namespace}-${name}-${version}`,
215+
team: {
216+
name: faker.word.words(3),
217+
members: await getFakeTeamMembers(seed),
218+
},
219+
website_url:
220+
faker.helpers.maybe(() => faker.internet.url(), {
221+
probability: 0.9,
222+
}) ?? null,
223+
};
224+
};
225+
160226
// Shown on a tab on Package's detail view.
161227
export const getFakePackageVersions = async (
162228
namespace: string,

packages/dapper-fake/src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
getFakePackageListings,
1212
getFakePackagePermissions,
1313
getFakePackageVersions,
14+
getFakePackageVersionDetails,
1415
} from "./fakers/package";
1516
import { getFakeServiceAccounts } from "./fakers/serviceAccount";
1617
import {
@@ -32,6 +33,7 @@ export class DapperFake implements DapperInterface {
3233
public getPackageListingDetails = getFakePackageListingDetails;
3334
public getPackageListings = getFakePackageListings;
3435
public getPackageReadme = getFakeReadme;
36+
public getPackageVersionDetails = getFakePackageVersionDetails;
3537
public getPackageVersions = getFakePackageVersions;
3638
public getTeamDetails = getFakeTeamDetails;
3739
public getTeamMembers = getFakeTeamMembers;

packages/dapper-ts/src/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import {
2626
getTeamServiceAccounts,
2727
postTeamCreate,
2828
} from "./methods/team";
29+
import { getPackageVersionDetails } from "./methods/packageVersion";
2930

3031
export interface DapperTsInterface extends DapperInterface {
3132
config: () => RequestConfig;
@@ -49,6 +50,7 @@ export class DapperTs implements DapperTsInterface {
4950
this.getPackageListings = this.getPackageListings.bind(this);
5051
this.getPackageListingDetails = this.getPackageListingDetails.bind(this);
5152
this.getPackageReadme = this.getPackageReadme.bind(this);
53+
this.getPackageVersionDetails = this.getPackageVersionDetails.bind(this);
5254
this.getPackageVersions = this.getPackageVersions.bind(this);
5355
this.getPackageWiki = this.getPackageWiki.bind(this);
5456
this.getPackageWikiPage = this.getPackageWikiPage.bind(this);
@@ -74,6 +76,7 @@ export class DapperTs implements DapperTsInterface {
7476
public getPackageListingDetails = getPackageListingDetails;
7577
public getPackageReadme = getPackageReadme;
7678
public getPackageVersions = getPackageVersions;
79+
public getPackageVersionDetails = getPackageVersionDetails;
7780
public getPackageWiki = getPackageWiki;
7881
public getPackageWikiPage = getPackageWikiPage;
7982
public getPackagePermissions = getPackagePermissions;
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { fetchPackageVersionDetails } from "@thunderstore/thunderstore-api";
2+
3+
import { DapperTsInterface } from "../index";
4+
5+
export async function getPackageVersionDetails(
6+
this: DapperTsInterface,
7+
namespaceId: string,
8+
packageName: string,
9+
packageVersion: string
10+
) {
11+
const data = await fetchPackageVersionDetails({
12+
config: this.config,
13+
params: {
14+
namespace_id: namespaceId,
15+
package_name: packageName,
16+
package_version: packageVersion,
17+
},
18+
data: {},
19+
queryParams: {},
20+
});
21+
22+
return data;
23+
}

0 commit comments

Comments
 (0)