diff --git a/packages/website/src/routes/docs/$branchName/packages/$packageName/$memberName/index.tsx b/packages/website/src/routes/docs/$branchName/packages/$packageName/$memberName/index.tsx index bb5c0286a..cf32b5982 100644 --- a/packages/website/src/routes/docs/$branchName/packages/$packageName/$memberName/index.tsx +++ b/packages/website/src/routes/docs/$branchName/packages/$packageName/$memberName/index.tsx @@ -8,7 +8,6 @@ import type { DocFunction } from '~/DocModel/DocFunction'; import type { DocInterface } from '~/DocModel/DocInterface'; import type { DocTypeAlias } from '~/DocModel/DocTypeAlias'; import type { DocVariable } from '~/DocModel/DocVariable'; -import { ApiItem, ApiModel, ApiPackage } from '~/api-extractor.server'; import { Class } from '~/components/model/Class'; import { Enum } from '~/components/model/Enum'; import { Function } from '~/components/model/Function'; @@ -16,24 +15,15 @@ import { Interface } from '~/components/model/Interface'; import { TypeAlias } from '~/components/model/TypeAlias'; import { Variable } from '~/components/model/Variable'; import { findMember } from '~/model.server'; -import { TSDocConfiguration } from '~/tsdoc.server'; +import { createApiModel } from '~/util/api-model.server'; export async function loader({ params }: { params: Params }) { const res = await fetch( `https://raw.githubusercontent.com/discordjs/docs/main/${params.packageName!}/${params.branchName!}.api.json`, ); const data = await res.json(); + const model = createApiModel(data); - const model = new ApiModel(); - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument - const apiPackage = ApiItem.deserialize(data, { - apiJsonFilename: '', - toolPackage: data.metadata.toolPackage, - toolVersion: data.metadata.toolVersion, - versionToDeserialize: data.metadata.schemaVersion, - tsdocConfiguration: new TSDocConfiguration(), - }) as ApiPackage; - model.addMember(apiPackage); return json(findMember(model, params.packageName!, params.memberName!)?.toJSON()); } diff --git a/packages/website/src/routes/docs/$branchName/packages/$packageName/index.tsx b/packages/website/src/routes/docs/$branchName/packages/$packageName/index.tsx index 35647a2f8..36477e4c2 100644 --- a/packages/website/src/routes/docs/$branchName/packages/$packageName/index.tsx +++ b/packages/website/src/routes/docs/$branchName/packages/$packageName/index.tsx @@ -1,27 +1,15 @@ -/* eslint-disable @typescript-eslint/no-unsafe-member-access */ -/* eslint-disable @typescript-eslint/no-unsafe-assignment */ import { json } from '@remix-run/node'; import { Params, useLoaderData } from '@remix-run/react'; -import { ApiItem, ApiModel, ApiPackage } from '~/api-extractor.server'; -import { TSDocConfiguration } from '~/tsdoc.server'; +import { createApiModel } from '~/util/api-model.server'; import { findPackage, getMembers } from '~/util/parse.server'; export async function loader({ params }: { params: Params }) { const res = await fetch( `https://raw.githubusercontent.com/discordjs/docs/main/${params.packageName!}/${params.branchName!}.api.json`, ); + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const data = await res.json(); - - const model = new ApiModel(); - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument - const apiPackage = ApiItem.deserialize(data, { - apiJsonFilename: '', - toolPackage: data.metadata.toolPackage, - toolVersion: data.metadata.toolVersion, - versionToDeserialize: data.metadata.schemaVersion, - tsdocConfiguration: new TSDocConfiguration(), - }) as ApiPackage; - model.addMember(apiPackage); + const model = createApiModel(data); const pkg = findPackage(model, params.packageName!); return json({ diff --git a/packages/website/src/tsdoc-config.server.ts b/packages/website/src/tsdoc-config.server.ts new file mode 100644 index 000000000..8c8a52eac --- /dev/null +++ b/packages/website/src/tsdoc-config.server.ts @@ -0,0 +1 @@ +export * from '@microsoft/tsdoc-config'; diff --git a/packages/website/src/util/api-model.server.ts b/packages/website/src/util/api-model.server.ts new file mode 100644 index 000000000..60e39d8f9 --- /dev/null +++ b/packages/website/src/util/api-model.server.ts @@ -0,0 +1,23 @@ +/* eslint-disable @typescript-eslint/no-unsafe-member-access */ +/* eslint-disable @typescript-eslint/no-unsafe-assignment */ +import { ApiItem, ApiModel, ApiPackage } from '~/api-extractor.server'; +import { TSDocConfigFile } from '~/tsdoc-config.server'; +import { TSDocConfiguration } from '~/tsdoc.server'; + +export function createApiModel(data: any) { + const model = new ApiModel(); + const tsdocConfiguration = new TSDocConfiguration(); + const tsdocConfigFile = TSDocConfigFile.loadFromObject(data.metadata.tsdocConfig); + tsdocConfigFile.configureParser(tsdocConfiguration); + + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + const apiPackage = ApiItem.deserialize(data, { + apiJsonFilename: '', + toolPackage: data.metadata.toolPackage, + toolVersion: data.metadata.toolVersion, + versionToDeserialize: data.metadata.schemaVersion, + tsdocConfiguration, + }) as ApiPackage; + model.addMember(apiPackage); + return apiPackage as unknown as ApiModel; +}