Skip to content

Commit e96a714

Browse files
committed
fix: documentation ssg params and version fixes [skip ci]
Signed-off-by: sarthakjdev <jsarthak448@gmail.com>
1 parent 5cfa5f4 commit e96a714

9 files changed

Lines changed: 54 additions & 54 deletions

File tree

apps/wapijs.co/src/app/docs/[version]/[item]/page.tsx

Lines changed: 25 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -5,52 +5,21 @@ import {
55
type ApiItem,
66
type ApiTypeAlias,
77
type ApiFunction,
8-
ApiItemKind
8+
ApiItemKind,
9+
ApiModel
910
} from '@microsoft/api-extractor-model'
1011
import { notFound } from 'next/navigation'
1112
import { Class } from '~/components/documentation-item/class'
1213
import { Interface } from '~/components/documentation-item/interface'
1314
import { TypeAlias } from '~/components/documentation-item/type-alias'
1415
import { Enum } from '~/components/documentation-item/enum'
1516
import { Function } from '~/components/documentation-item/function'
16-
import { getMember } from '~/utils/api-extractor'
17-
18-
// function resolveMemberSearchParams(packageName: string, member?: ApiItem) {
19-
// const params = new URLSearchParams({
20-
// pkg: packageName,
21-
// kind: member?.kind ?? '',
22-
// name: member?.displayName ?? ''
23-
// })
24-
25-
// switch (member?.kind) {
26-
// case ApiItemKind.Interface:
27-
// case ApiItemKind.Class: {
28-
// const typedMember = member as ApiItemContainerMixin
29-
30-
// const properties = typedMember.members.filter(member =>
31-
// [ApiItemKind.Property, ApiItemKind.PropertySignature].includes(member.kind)
32-
// ) as (ApiProperty | ApiPropertySignature)[]
33-
// const methods = typedMember.members.filter(member =>
34-
// [ApiItemKind.Method, ApiItemKind.Method].includes(member.kind)
35-
// ) as (ApiMethod | ApiMethodSignature)[]
36-
37-
// params.append('methods', methods.length.toString())
38-
// params.append('props', properties.length.toString())
39-
// break
40-
// }
41-
42-
// case ApiItemKind.Enum: {
43-
// const typedMember = member as ApiEnum
44-
// params.append('members', typedMember.members.length.toString())
45-
// break
46-
// }
47-
48-
// default:
49-
// break
50-
// }
51-
52-
// return params
53-
// }
17+
import {
18+
addPackageToModel,
19+
fetchDocumentationJsonDataFromSlug,
20+
getMember
21+
} from '~/utils/api-extractor'
22+
import { fetchVersions, resolveItemUri } from '~/reusable-function'
5423

5524
function Member({ member }: { readonly member?: ApiItem }) {
5625
if (!member?.kind) {
@@ -75,6 +44,23 @@ function Member({ member }: { readonly member?: ApiItem }) {
7544
}
7645
}
7746

47+
export async function generateStaticParams() {
48+
const allVersionOfPackage = await fetchVersions()
49+
const allStaticParams = await Promise.all(
50+
allVersionOfPackage.flatMap(async version => {
51+
const documentationData = await fetchDocumentationJsonDataFromSlug(version.version)
52+
const model = new ApiModel()
53+
addPackageToModel(model, documentationData)
54+
const pkg = model.tryGetPackageByName(`@wapijs/wapi.js`)
55+
return pkg?.members[0].members.map(item => ({
56+
item: resolveItemUri(item),
57+
version: version.version
58+
}))
59+
})
60+
)
61+
return allStaticParams
62+
}
63+
7864
export default async function Page({ params }: { params: { version: string; item: string } }) {
7965
const member = await getMember({
8066
branchOrVersion: params.version,

apps/wapijs.co/src/app/docs/[version]/function.ts

Whitespace-only changes.

apps/wapijs.co/src/app/docs/[version]/layout.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ export default async function VersionHomeLayout({
1313
}>) {
1414
console.log({ params })
1515
const documentationData = await fetchDocumentationJsonDataFromSlug(params.version)
16-
console.log({ documentationData })
1716
const model = new ApiModel()
1817
addPackageToModel(model, documentationData)
1918

apps/wapijs.co/src/app/docs/[version]/page.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@ import { IS_DEVELOPMENT } from '~/constant'
66
import { join } from 'node:path'
77
import { readFile } from 'node:fs/promises'
88
import getWasm from 'shiki/wasm'
9+
import { fetchVersions } from '~/reusable-function'
910

1011
async function fetchReadMeFileFromGithub() {
1112
if (IS_DEVELOPMENT) {
1213
const fileContent = await readFile(join(process.cwd(), '..', '..', 'README.md'), 'utf8')
1314
return fileContent
1415
} else {
1516
const response = await fetch(
16-
'https://raw.githubusercontent.com/sarthakjdev/wapi.js/feat/documentation/README.md',
17+
'https://raw.githubusercontent.com/sarthakjdev/wapi.js/master/README.md',
1718
{
1819
method: 'GET'
1920
}
@@ -22,6 +23,11 @@ async function fetchReadMeFileFromGithub() {
2223
}
2324
}
2425

26+
export async function generateStaticParams() {
27+
const allVersionOfPackage = await fetchVersions()
28+
return allVersionOfPackage.flatMap(async version => ({ version: version.version }))
29+
}
30+
2531
const VersionHome = async ({ params }: { params: { version: string } }) => {
2632
console.log({ params })
2733
const highlighter = await getHighlighterCore({

apps/wapijs.co/src/app/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export default function Home() {
77
<main className="my-auto flex min-h-screen flex-row items-center justify-center gap-5 pl-10">
88
<div className="flex flex-1 flex-col gap-6">
99
<div className="mx-auto">
10-
<ClipboardCopy textToBeCopied="pnpm i wapi.js" />
10+
<ClipboardCopy textToBeCopied="pnpm i @wapijs/wapi.js" />
1111
</div>
1212
<div className="flex flex-col items-center justify-center gap-5">
1313
<h1 className="mx-auto flex max-w-5xl flex-col gap-2 text-center text-4xl font-bold leading-relaxed sm:text-5xl md:text-7xl">

apps/wapijs.co/src/components/nav/sidebar.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { ItemLink } from '~/components/item-link'
1010
import { DisclosureSection } from '@wapijs/ui'
1111
import { METHOD_SEPARATOR, OVERLOAD_SEPARATOR } from '~/constant'
1212
import VersionSelector from '../version-selector'
13+
import { fetchVersions } from '~/reusable-function'
1314

1415
export function resolveItemURI(item: ApiItem): string {
1516
return !item.parent || item.parent.kind === ApiItemKind.EntryPoint
@@ -128,10 +129,11 @@ export function Sidebar({ members }: { readonly members: SidebarSectionItemData[
128129
// const segment = useSelectedLayoutSegment()
129130
// const [isOpen, setIsOpen] = useState(true)
130131
const groupItems = groupMembers(members)
132+
const versions = fetchVersions()
131133

132134
return (
133135
<div className="flex min-w-[26rem] flex-col gap-3 p-3">
134-
<VersionSelector />
136+
<VersionSelector versions={versions} />
135137
{(Object.keys(groupItems) as (keyof GroupedMembers)[])
136138
.filter(group => groupItems[group].length)
137139
.map((group, idx) => (

apps/wapijs.co/src/components/version-selector.tsx

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@
22

33
import { CustomSelect } from '@wapijs/ui'
44
import { useRouter } from 'next/navigation'
5+
import { type fetchVersions } from '~/reusable-function'
56

6-
const VersionSelector = () => {
7+
const VersionSelector: React.FC<{
8+
versions: ReturnType<typeof fetchVersions>
9+
}> = ({ versions }) => {
710
const router = useRouter()
811

912
return (
@@ -13,13 +16,11 @@ const VersionSelector = () => {
1316
onChangeHandler={e => {
1417
router.push(`/docs/${e.target.value}`)
1518
}}
16-
options={[
17-
{
18-
label: 'master',
19-
value: 'master'
20-
}
21-
]}
22-
defaultValue="main"
19+
options={versions.map(v => ({
20+
label: v.version,
21+
value: v.version
22+
}))}
23+
defaultValue="master"
2324
/>
2425
</div>
2526
)

apps/wapijs.co/src/middleware.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ import { type NextRequest } from 'next/server'
44
export async function middleware(request: NextRequest) {
55
const url = new URL(request.url)
66

7-
console.log('url.pathname', url.host)
8-
97
switch (url.pathname) {
108
case '/docs': {
119
const latestVersion = await fetch('https://api.npms.io/v2/package/wapi.js')

apps/wapijs.co/src/reusable-function.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { type ApiItem, ApiItemKind } from '@microsoft/api-extractor-model'
2-
import { METHOD_SEPARATOR, OVERLOAD_SEPARATOR } from './constant'
2+
import { IS_DEVELOPMENT, METHOD_SEPARATOR, OVERLOAD_SEPARATOR } from './constant'
33
import { VscSymbolClass } from '@react-icons/all-files/vsc/VscSymbolClass'
44
import { VscSymbolEnum } from '@react-icons/all-files/vsc/VscSymbolEnum'
55
import { VscSymbolInterface } from '@react-icons/all-files/vsc/VscSymbolInterface'
@@ -30,3 +30,11 @@ export function getItemIconByKind(kind: ApiItemKind) {
3030
return <VscSymbolMethod />
3131
}
3232
}
33+
34+
export function fetchVersions() {
35+
if (IS_DEVELOPMENT) {
36+
return [{ version: 'master' }]
37+
}
38+
39+
return ['master'].map(v => ({ version: v }))
40+
}

0 commit comments

Comments
 (0)