Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import type { packageDependencySchema } from "@thunderstore/thunderstore-api";
import type { packageListingDependencySchema } from "@thunderstore/thunderstore-api";
import "./ListingDependency.css";
import { formatToDisplayName, Image, NewLink } from "@thunderstore/cyberstorm";

export interface ListingDependencyProps {
dependency: typeof packageDependencySchema._type;
dependency: typeof packageListingDependencySchema._type;
// TODO: Remove when package versiond detail is available
domain: string;
}
Expand Down
4 changes: 2 additions & 2 deletions packages/dapper/src/types/package.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export interface PackageListingDetails extends PackageListing {
community_name: string;
datetime_created: string;
dependant_count: number;
dependencies: PackageDependency[];
dependencies: PackageListingDependency[];
dependency_count: number;
download_url: string;
full_version_name: string;
Expand All @@ -34,7 +34,7 @@ export interface PackageListingDetails extends PackageListing {
website_url: string | null;
}

export interface PackageDependency {
export interface PackageListingDependency {
community_identifier: string;
description: string;
icon_url: string | null;
Expand Down
1 change: 1 addition & 0 deletions packages/thunderstore-api/src/__tests__/defaultConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@ export const testData = {
communityId: "test-community-1",
namespaceId: "Test_Team_0",
packageName: "Test_Package_0",
versionNumber: "1.0.0",
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { expect, it } from "vitest";
import { config, testData } from "../../__tests__/defaultConfig";
import { fetchPackageVersionDependencies } from "../packageVersionDependencies";
import { packageVersionDependenciesResponseDataSchema } from "../..";

it("ensures package version dependencies can be fetched", async () => {
const { namespaceId, packageName, versionNumber } = testData;
const response = await fetchPackageVersionDependencies({
config,
params: {
namespace_id: namespaceId,
package_name: packageName,
version_number: versionNumber,
},
data: {},
queryParams: [{ key: "page", value: 1, impotent: 1 }],
});

expect(response.count).toBe(3);
expect(response.results.length).toBe(3);
expect(packageVersionDependenciesResponseDataSchema.parse(response)).toEqual(
response
);
});
35 changes: 35 additions & 0 deletions packages/thunderstore-api/src/get/packageVersionDependencies.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import {
ApiEndpointProps,
packageVersionDependenciesRequestQueryParamsSchema,
PackageVersionDependenciesRequestQueryParams,
PackageVersionDependenciesRequestParams,
packageVersionDependenciesResponseDataSchema,
PackageVersionDependenciesResponseData,
} from "../index";
import { apiFetch } from "../apiFetch";

export async function fetchPackageVersionDependencies(
props: ApiEndpointProps<
PackageVersionDependenciesRequestParams,
PackageVersionDependenciesRequestQueryParams,
object
>
): Promise<PackageVersionDependenciesResponseData> {
const {
config,
params,
queryParams = [{ key: "page", value: 1, impotent: 1 }],
} = props;
const path = `api/cyberstorm/package/${params.namespace_id}/${params.package_name}/v/${params.version_number}/dependencies/`;

return await apiFetch({
args: {
config,
path,
queryParams,
},
requestSchema: undefined,
queryParamsSchema: packageVersionDependenciesRequestQueryParamsSchema,
responseSchema: packageVersionDependenciesResponseDataSchema,
});
}
1 change: 1 addition & 0 deletions packages/thunderstore-api/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ export * from "./get/packageDependantsListings";
export * from "./get/packageListingDetails";
export * from "./get/packageReadme";
export * from "./get/packageSubmission";
export * from "./get/packageVersionDependencies";
export * from "./get/packageVersions";
export * from "./get/packageWiki";
export * from "./get/ratedPackages";
Expand Down
22 changes: 19 additions & 3 deletions packages/thunderstore-api/src/schemas/objectSchemas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ const packageTeamSchema = z.object({

export type PackageTeam = z.infer<typeof packageTeamSchema>;

export const packageDependencySchema = z.object({
export const packageListingDependencySchema = z.object({
community_identifier: z.string().min(1),
description: z.string(),
icon_url: z.string().nullable(),
Expand All @@ -152,13 +152,15 @@ export const packageDependencySchema = z.object({
version_number: z.string().min(1),
});

export type PackageDependency = z.infer<typeof packageDependencySchema>;
export type PackageListingDependency = z.infer<
typeof packageListingDependencySchema
>;

export const packageListingDetailsSchema = packageListingSchema.extend({
community_name: z.string().min(1),
datetime_created: z.string().datetime(),
dependant_count: z.number().int(),
dependencies: z.array(packageDependencySchema),
dependencies: z.array(packageListingDependencySchema),
dependency_count: z.number().int(),
download_url: z.string(),
full_version_name: z.string().min(1),
Expand Down Expand Up @@ -225,6 +227,20 @@ export const packageVersionExperimentalSchema = z.object({
is_active: z.boolean(),
});

export const packageVersionDependencySchema = z.object({
description: z.string(),
icon_url: z.string(),
is_active: z.boolean(),
name: z.string().min(1),
namespace: z.string().min(1),
version_number: z.string().min(1),
is_removed: z.boolean(),
});

export type PackageVersionDependency = z.infer<
typeof packageVersionDependencySchema
>;

export type PackageVersionExperimental = z.infer<
typeof packageVersionExperimentalSchema
>;
Expand Down
18 changes: 18 additions & 0 deletions packages/thunderstore-api/src/schemas/requestSchemas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,24 @@ export type PackageVersionsRequestParams = z.infer<
typeof packageVersionsRequestParamsSchema
>;

// PackageVersionDependenciesRequest
export const packageVersionDependenciesRequestParamsSchema = z.object({
namespace_id: z.string(),
package_name: z.string(),
version_number: z.string(),
});

export type PackageVersionDependenciesRequestParams = z.infer<
typeof packageVersionDependenciesRequestParamsSchema
>;

export const packageVersionDependenciesRequestQueryParamsSchema =
z.array(pageQueryParam);

export type PackageVersionDependenciesRequestQueryParams = z.infer<
typeof packageVersionDependenciesRequestQueryParamsSchema
>;

// PackageWikiRequest
export const packageWikiRequestParamsSchema = z.object({
namespace_id: z.string(),
Expand Down
12 changes: 12 additions & 0 deletions packages/thunderstore-api/src/schemas/responseSchemas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import {
markdownRenderSchema,
packageWikiPageSchema,
packagePermissionsSchema,
packageVersionDependencySchema,
} from "../schemas/objectSchemas";
import { paginatedResults } from "../schemas/objectSchemas";

Expand Down Expand Up @@ -131,6 +132,17 @@ export type PackageVersionsResponseData = z.infer<
typeof packageVersionsResponseDataSchema
>;

export const packageVersionDependenciesResponseDataSchema = z.object({
count: z.number(),
next: z.string().url().nullable(),
previous: z.string().url().nullable(),
results: z.array(packageVersionDependencySchema),
});

export type PackageVersionDependenciesResponseData = z.infer<
typeof packageVersionDependenciesResponseDataSchema
>;

// PackageWikiResponse
export const packageWikiResponseDataSchema = z.object({
id: z.string().min(1),
Expand Down
Loading