diff --git a/website/bun.lockb b/website/bun.lockb index e99d10a..545cfce 100755 Binary files a/website/bun.lockb and b/website/bun.lockb differ diff --git a/website/package.json b/website/package.json index 8f26b4b..66526ee 100644 --- a/website/package.json +++ b/website/package.json @@ -17,6 +17,8 @@ "@sveltejs/vite-plugin-svelte": "^3.0.0", "@tailwindcss/typography": "^0.5.14", "@types/eslint": "^9.6.0", + "@types/gunzip-maybe": "^1.4.2", + "@types/tar-stream": "^3.1.3", "autoprefixer": "^10.4.20", "eslint": "^9.0.0", "eslint-config-prettier": "^9.1.0", @@ -36,6 +38,9 @@ "type": "module", "dependencies": { "@fontsource-variable/nunito-sans": "^5.0.14", - "date-fns": "^3.6.0" + "date-fns": "^3.6.0", + "gunzip-maybe": "^1.4.2", + "lucide-svelte": "^0.427.0", + "tar-stream": "^3.1.7" } } diff --git a/website/src/lib/registry-api.ts b/website/src/lib/registry-api.ts index 74b1272..0958b7b 100644 --- a/website/src/lib/registry-api.ts +++ b/website/src/lib/registry-api.ts @@ -5,6 +5,10 @@ export type SearchResponse = { data: PackageResponse[] } +export type PackageVersionsResponse = PackageResponse[] + +export type PackageVersionResponse = PackageResponse + export type PackageResponse = { name: string version: string diff --git a/website/src/routes/Header.svelte b/website/src/routes/Header.svelte index 35b0436..101a750 100644 --- a/website/src/routes/Header.svelte +++ b/website/src/routes/Header.svelte @@ -1,5 +1,6 @@ @@ -10,22 +11,9 @@ - - - - + - + GitHub { + const { scope, name } = options + + if ("version" in options) { + const { version, target } = options + return fetchRegistry( + `packages/${encodeURIComponent(`${scope}/${name}`)}/${version}/${target}`, + fetcher, + ) + } + + const versions = await fetchRegistry( + `packages/${encodeURIComponent(`${scope}/${name}`)}`, + fetcher, + ) + + const latestVersion = versions.at(-1) + if (latestVersion === undefined) throw new Error("package has no versions *blows up*") + + return latestVersion +} + +export const load: LayoutServerLoad = async ({ params }) => { + const { scope, name, version, target } = params + + const options = version ? { scope, name, version, target } : { scope, name } + + const pkg = await fetchPackage(fetch, options) + + return { + pkg, + } +} diff --git a/website/src/routes/packages/[scope]/[name]/[[version]]/[[target]]/+layout.svelte b/website/src/routes/packages/[scope]/[name]/[[version]]/[[target]]/+layout.svelte new file mode 100644 index 0000000..f5c703e --- /dev/null +++ b/website/src/routes/packages/[scope]/[name]/[[version]]/[[target]]/+layout.svelte @@ -0,0 +1,59 @@ + + + + + + {scope}/{name} + + + v{data.pkg.version} ยท published {formatDistanceToNow(new Date(data.pkg.published_at), { + addSuffix: true, + })} + + {data.pkg.description} + + + Readme + Versions + + + {@render children()} + + + diff --git a/website/src/routes/packages/[scope]/[name]/[[version]]/[[target]]/+page.svelte b/website/src/routes/packages/[scope]/[name]/[[version]]/[[target]]/+page.svelte new file mode 100644 index 0000000..e845566 --- /dev/null +++ b/website/src/routes/packages/[scope]/[name]/[[version]]/[[target]]/+page.svelte @@ -0,0 +1 @@ +README diff --git a/website/src/routes/packages/[scope]/[name]/[[version]]/[[target]]/Tab.svelte b/website/src/routes/packages/[scope]/[name]/[[version]]/[[target]]/Tab.svelte new file mode 100644 index 0000000..6b84998 --- /dev/null +++ b/website/src/routes/packages/[scope]/[name]/[[version]]/[[target]]/Tab.svelte @@ -0,0 +1,34 @@ + + + + {@render children()} + diff --git a/website/src/routes/packages/[scope]/[name]/[[version]]/[[target]]/versions/+page.svelte b/website/src/routes/packages/[scope]/[name]/[[version]]/[[target]]/versions/+page.svelte new file mode 100644 index 0000000..f56097c --- /dev/null +++ b/website/src/routes/packages/[scope]/[name]/[[version]]/[[target]]/versions/+page.svelte @@ -0,0 +1 @@ +versions btw
{data.pkg.description}