@@ -30,7 +30,7 @@ import shikiLangJavascript from 'shiki/languages/javascript.tmLanguage.json';
3030import shikiLangTypescript from 'shiki/languages/typescript.tmLanguage.json' ;
3131import shikiThemeDarkPlus from 'shiki/themes/dark-plus.json' ;
3232import shikiThemeLightPlus from 'shiki/themes/light-plus.json' ;
33- import vercelLogo from '../../../assets/powered-by-vercel.svg' ;
33+ import vercelLogo from '../../../../../ assets/powered-by-vercel.svg' ;
3434import { MDXRemote } from '~/components/MDXRemote' ;
3535import { Nav } from '~/components/Nav' ;
3636import { Class } from '~/components/model/Class' ;
@@ -44,84 +44,92 @@ import { DESCRIPTION, PACKAGES } from '~/util/constants';
4444import { findMember , findMemberByKey } from '~/util/model.server' ;
4545import { tryResolveDescription } from '~/util/summary' ;
4646
47- export async function generateStaticParams ( ) {
48- return (
49- await Promise . all (
50- PACKAGES . map ( async ( packageName ) => {
51- try {
52- let data : any [ ] = [ ] ;
53- let versions : string [ ] = [ ] ;
54- if ( process . env . NEXT_PUBLIC_LOCAL_DEV ) {
55- const res = await readFile (
56- join ( cwd ( ) , '..' , '..' , 'packages' , packageName , 'docs' , 'docs.api.json' ) ,
57- 'utf8' ,
58- ) ;
59- data = JSON . parse ( res ) ;
60- } else {
61- const response = await fetch ( `https://docs.discordjs.dev/api/info?package=${ packageName } ` ) ;
62- versions = await response . json ( ) ;
63- versions = versions . slice ( - 2 ) ;
47+ export async function generateStaticParams ( { params } : { params : { package : string } } ) {
48+ const packageName = params . package ;
6449
65- for ( const version of versions ) {
66- const res = await fetch ( `https://docs.discordjs.dev/docs/${ packageName } /${ version } .api.json` ) ;
67- data = [ ...data , await res . json ( ) ] ;
68- }
69- }
50+ try {
51+ let data : any [ ] = [ ] ;
52+ let versions : string [ ] = [ ] ;
53+ if ( process . env . NEXT_PUBLIC_LOCAL_DEV ) {
54+ const res = await readFile ( join ( cwd ( ) , '..' , '..' , 'packages' , packageName , 'docs' , 'docs.api.json' ) , 'utf8' ) ;
55+ data = JSON . parse ( res ) ;
56+ } else {
57+ const response = await fetch ( `https://docs.discordjs.dev/api/info?package=${ packageName } ` ) ;
58+ versions = await response . json ( ) ;
59+ versions = versions . slice ( - 2 ) ;
7060
71- if ( Array . isArray ( data ) ) {
72- const models = data . map ( ( innerData ) => createApiModel ( innerData ) ) ;
73- const pkgs = models . map ( ( model ) => findPackage ( model , packageName ) ) as ApiPackage [ ] ;
61+ for ( const version of versions ) {
62+ const res = await fetch ( `https://docs.discordjs.dev/docs/${ packageName } /${ version } .api.json` ) ;
63+ data = [ ...data , await res . json ( ) ] ;
64+ }
65+ }
7466
75- return [
76- ...versions . map ( ( version ) => ( { slug : [ 'packages' , packageName , version ] } ) ) ,
77- ...pkgs . flatMap ( ( pkg , idx ) =>
78- getMembers ( pkg , versions [ idx ] ?? 'main' ) . map ( ( member ) => {
79- if ( member . kind === ApiItemKind . Function && member . overloadIndex && member . overloadIndex > 1 ) {
80- return {
81- slug : [
82- 'packages' ,
83- packageName ,
84- versions [ idx ] ?? 'main' ,
85- `${ member . name } :${ member . overloadIndex } :${ member . kind } ` ,
86- ] ,
87- } ;
88- }
67+ if ( Array . isArray ( data ) ) {
68+ const models = data . map ( ( innerData ) => createApiModel ( innerData ) ) ;
69+ const pkgs = models . map ( ( model ) => findPackage ( model , packageName ) ) as ApiPackage [ ] ;
8970
90- return {
91- slug : [ 'packages' , packageName , versions [ idx ] ?? 'main' , `${ member . name } :${ member . kind } ` ] ,
92- } ;
93- } ) ,
94- ) ,
95- ] ;
96- }
71+ return [
72+ ...versions . map ( ( version ) => ( { slug : [ 'packages' , packageName , version ] } ) ) ,
73+ ...pkgs . flatMap ( ( pkg , idx ) =>
74+ getMembers ( pkg , versions [ idx ] ?? 'main' ) . map ( ( member ) => {
75+ if ( member . kind === ApiItemKind . Function && member . overloadIndex && member . overloadIndex > 1 ) {
76+ return {
77+ slug : [
78+ 'packages' ,
79+ packageName ,
80+ versions [ idx ] ?? 'main' ,
81+ `${ member . name } :${ member . overloadIndex } :${ member . kind } ` ,
82+ ] ,
83+ } ;
84+ }
9785
98- const model = createApiModel ( data ) ;
99- const pkg = findPackage ( model , packageName ) ! ;
86+ return {
87+ slug : [ 'packages' , packageName , versions [ idx ] ?? 'main' , `${ member . name } :${ member . kind } ` ] ,
88+ } ;
89+ } ) ,
90+ ) ,
91+ ] ;
92+ }
10093
101- return [
102- { slug : [ 'packages' , packageName , 'main' ] } ,
103- ...getMembers ( pkg , 'main' ) . map ( ( member ) => {
104- if ( member . kind === ApiItemKind . Function && member . overloadIndex && member . overloadIndex > 1 ) {
105- return {
106- slug : [ 'packages' , packageName , 'main' , `${ member . name } :${ member . overloadIndex } :${ member . kind } ` ] ,
107- } ;
108- }
94+ const model = createApiModel ( data ) ;
95+ const pkg = findPackage ( model , packageName ) ! ;
10996
110- return { slug : [ 'packages' , packageName , 'main' , `${ member . name } :${ member . kind } ` ] } ;
111- } ) ,
112- ] ;
113- } catch {
114- return { slug : [ 'packages' , '404' ] } ;
97+ return [
98+ { slug : [ 'packages' , packageName , 'main' ] } ,
99+ ...getMembers ( pkg , 'main' ) . map ( ( member ) => {
100+ if ( member . kind === ApiItemKind . Function && member . overloadIndex && member . overloadIndex > 1 ) {
101+ return {
102+ slug : [ 'packages' , packageName , 'main' , `${ member . name } :${ member . overloadIndex } :${ member . kind } ` ] ,
103+ } ;
115104 }
105+
106+ return { slug : [ 'packages' , packageName , 'main' , `${ member . name } :${ member . kind } ` ] } ;
116107 } ) ,
117- )
118- ) . flat ( ) ;
108+ ] ;
109+ } catch {
110+ return { slug : [ ] } ;
111+ }
119112}
120113
121- async function getData ( slug : string [ ] ) {
122- const [ path , packageName = 'builders' , branchName = 'main' , member ] = slug ;
114+ async function getData ( packageName : string , slug : string [ ] ) {
115+ const [ branchName = 'main' , member ] = slug ;
116+
117+ if ( ! PACKAGES . includes ( packageName ) ) {
118+ notFound ( ) ;
119+ }
123120
124- if ( path !== 'packages' || ! PACKAGES . includes ( packageName ) ) {
121+ let data ;
122+ try {
123+ if ( process . env . NEXT_PUBLIC_LOCAL_DEV ) {
124+ const res = await readFile ( join ( cwd ( ) , '..' , '..' , 'packages' , packageName , 'docs' , 'docs.api.json' ) , 'utf8' ) ;
125+ data = JSON . parse ( res ) ;
126+ } else {
127+ const res = await fetch ( `https://docs.discordjs.dev/docs/${ packageName } /${ branchName } .api.json` , {
128+ next : { revalidate : 3_600 } ,
129+ } ) ;
130+ data = await res . json ( ) ;
131+ }
132+ } catch {
125133 notFound ( ) ;
126134 }
127135
@@ -161,21 +169,6 @@ async function getData(slug: string[]) {
161169 } ,
162170 } ) ;
163171
164- let data ;
165- try {
166- if ( process . env . NEXT_PUBLIC_LOCAL_DEV ) {
167- const res = await readFile ( join ( cwd ( ) , '..' , '..' , 'packages' , packageName , 'docs' , 'docs.api.json' ) , 'utf8' ) ;
168- data = JSON . parse ( res ) ;
169- } else {
170- const res = await fetch ( `https://docs.discordjs.dev/docs/${ packageName } /${ branchName } .api.json` , {
171- next : { revalidate : 3_600 } ,
172- } ) ;
173- data = await res . json ( ) ;
174- }
175- } catch {
176- notFound ( ) ;
177- }
178-
179172 const model = createApiModel ( data ) ;
180173 const pkg = findPackage ( model , packageName ) ;
181174
@@ -261,8 +254,8 @@ function member(props?: ApiItemJSON | undefined) {
261254 }
262255}
263256
264- export default async function Page ( { params } : { params : { slug : string [ ] } } ) {
265- const data = await getData ( params . slug ) ;
257+ export default async function Page ( { params } : { params : { package : string ; slug : string [ ] } } ) {
258+ const data = await getData ( params . package , params . slug ) ;
266259
267260 // const name = useMemo(
268261 // () => `discord.js${params.data?.member?.name ? ` | ${params.data.member.name}` : ''}`,
0 commit comments