Skip to content

Commit 609395e

Browse files
committed
moved from [...path] -> [[org]]/[name] ....
1 parent c1e91e9 commit 609395e

File tree

4 files changed

+66
-37
lines changed

4 files changed

+66
-37
lines changed

app/components/Package/Header.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ const changelogLink = computed((): RouteLocationRaw | null => {
133133
if (!changelog.value || props.pkg == null || props.resolvedVersion == null) {
134134
return null
135135
}
136-
return { name: 'changes', params: { path: [props.pkg.name, 'v', props.resolvedVersion] } }
136+
return changelogRoute(props.pkg.name, props.resolvedVersion)
137137
})
138138
139139
const keyboardShortcuts = useKeyboardShortcuts()

app/pages/package-changes/[...path].vue renamed to app/pages/package-changes/[[org]]/[name].vue

Lines changed: 26 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,51 +3,41 @@ import { useProviderIcon } from '~/composables/useProviderIcon'
33
44
definePageMeta({
55
name: 'changes',
6-
path: '/package-changes/:path+',
7-
alias: ['/package/changes/:path+', '/changes/:path+'],
6+
// path: '/package-changes/:path+',
7+
// alias: ['/package/changes/:path+', '/changes/:path+'],
88
scrollMargin: 190,
99
})
1010
1111
/// routing
1212
1313
const route = useRoute('changes')
14-
const router = useRouter()
1514
// Parse package name, version, and file path from URL
1615
// Patterns:
17-
// /code/nuxt/v/4.2.0 → packageName: "nuxt", version: "4.2.0", filePath: null (show tree)
18-
// /code/nuxt/v/4.2.0/src/index.ts → packageName: "nuxt", version: "4.2.0", filePath: "src/index.ts"
19-
// /code/@nuxt/kit/v/1.0.0 → packageName: "@nuxt/kit", version: "1.0.0", filePath: null
16+
// /changes/nuxt/v/4.2.0 → packageName: "nuxt", version: "4.2.0", filePath: null (show tree)
17+
// /changes/nuxt/v/4.2.0/src/index.ts → packageName: "nuxt", version: "4.2.0", filePath: "src/index.ts"
18+
// /changes/@nuxt/kit/v/1.0.0 → packageName: "@nuxt/kit", version: "1.0.0", filePath: null
19+
20+
// const packageName = computed(() => {
21+
// const { org, name } = route.params
22+
// return org ? `${org}/${name}` : name
23+
// })
2024
const parsedRoute = computed(() => {
21-
const segments = route.params.path
22-
23-
// Find the /v/ separator for version
24-
const vIndex = segments.indexOf('v')
25-
if (vIndex === -1 || vIndex >= segments.length - 1) {
26-
// No version specified - redirect or error
27-
return {
28-
packageName: segments.join('/'),
29-
version: null as string | null,
30-
filePath: null as string | null,
31-
}
32-
}
25+
const { org, name } = route.params
26+
27+
const packageName = org ? `${org}/${name}` : name
3328
34-
const packageName = segments.slice(0, vIndex).join('/')
35-
const afterVersion = segments.slice(vIndex + 1)
36-
const version = afterVersion[0] ?? null
37-
const filePath = afterVersion.length > 1 ? afterVersion.slice(1).join('/') : null
29+
const version = 'version' in route.params ? route.params.version : null
3830
39-
return { packageName, version, filePath }
31+
return { packageName, version }
4032
})
4133
4234
const packageName = computed(() => parsedRoute.value.packageName)
4335
const version = computed(() => parsedRoute.value.version)
44-
const filePath = computed(() => parsedRoute.value.filePath?.replace(/\/$/, ''))
4536
4637
const { data: pkg } = usePackage(packageName, version)
4738
4839
const versionUrlPattern = computed(() => {
49-
const base = `/package-changes/${packageName.value}/v/{version}`
50-
return filePath.value ? `${base}/${filePath.value}` : base
40+
return `/package-changes/${packageName.value}/v/{version}`
5141
})
5242
5343
const latestVersion = computed(() => {
@@ -57,16 +47,16 @@ const latestVersion = computed(() => {
5747
return pkg.value.versions[latestTag] ?? null
5848
})
5949
60-
watch(
61-
[version, () => latestVersion.value?.version, packageName],
62-
([v, latest, name]) => {
63-
if (!v && latest && name) {
64-
const pathSegments = [...name.split('/'), 'v', latest]
65-
router.replace({ name: 'changes', params: { path: pathSegments as [string, ...string[]] } })
66-
}
67-
},
68-
{ immediate: true },
69-
)
50+
// watch(
51+
// [version, () => latestVersion.value?.version, packageName],
52+
// ([v, latest, name]) => {
53+
// if (!v && latest && name) {
54+
// const pathSegments = [...name.split('/'), 'v', latest]
55+
// navigateTo({ name: 'changes', params: { path: pathSegments as [string, ...string[]] } })
56+
// }
57+
// },
58+
// { immediate: true },
59+
// )
7060
7161
// getting info
7262
const { data: changelog, pending } = usePackageChangelog(packageName, version)
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<script setup lang="ts">
2+
// stub
3+
4+
definePageMeta({
5+
name: 'changes-version',
6+
})
7+
</script>
8+
<template>
9+
<div />
10+
</template>

app/utils/router.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,32 @@ export function diffRoute(
4545
},
4646
}
4747
}
48+
49+
export function changelogRoute(
50+
packageName: string,
51+
version?: string | null,
52+
hash?: string,
53+
): RouteLocationRaw {
54+
const [org, name = ''] = packageName.startsWith('@') ? packageName.split('/') : ['', packageName]
55+
56+
if (version) {
57+
return {
58+
name: 'changes-version',
59+
params: {
60+
org,
61+
name,
62+
// remove spaces to be correctly resolved by router
63+
version: version.replace(/\s+/g, ''),
64+
},
65+
hash,
66+
}
67+
}
68+
69+
return {
70+
name: 'changes',
71+
params: {
72+
org,
73+
name,
74+
},
75+
}
76+
}

0 commit comments

Comments
 (0)