mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-18 12:33:30 +01:00
refactor(createApiModel): reusable function for api model creation
This commit is contained in:
@@ -8,7 +8,6 @@ import type { DocFunction } from '~/DocModel/DocFunction';
|
|||||||
import type { DocInterface } from '~/DocModel/DocInterface';
|
import type { DocInterface } from '~/DocModel/DocInterface';
|
||||||
import type { DocTypeAlias } from '~/DocModel/DocTypeAlias';
|
import type { DocTypeAlias } from '~/DocModel/DocTypeAlias';
|
||||||
import type { DocVariable } from '~/DocModel/DocVariable';
|
import type { DocVariable } from '~/DocModel/DocVariable';
|
||||||
import { ApiItem, ApiModel, ApiPackage } from '~/api-extractor.server';
|
|
||||||
import { Class } from '~/components/model/Class';
|
import { Class } from '~/components/model/Class';
|
||||||
import { Enum } from '~/components/model/Enum';
|
import { Enum } from '~/components/model/Enum';
|
||||||
import { Function } from '~/components/model/Function';
|
import { Function } from '~/components/model/Function';
|
||||||
@@ -16,24 +15,15 @@ import { Interface } from '~/components/model/Interface';
|
|||||||
import { TypeAlias } from '~/components/model/TypeAlias';
|
import { TypeAlias } from '~/components/model/TypeAlias';
|
||||||
import { Variable } from '~/components/model/Variable';
|
import { Variable } from '~/components/model/Variable';
|
||||||
import { findMember } from '~/model.server';
|
import { findMember } from '~/model.server';
|
||||||
import { TSDocConfiguration } from '~/tsdoc.server';
|
import { createApiModel } from '~/util/api-model.server';
|
||||||
|
|
||||||
export async function loader({ params }: { params: Params }) {
|
export async function loader({ params }: { params: Params }) {
|
||||||
const res = await fetch(
|
const res = await fetch(
|
||||||
`https://raw.githubusercontent.com/discordjs/docs/main/${params.packageName!}/${params.branchName!}.api.json`,
|
`https://raw.githubusercontent.com/discordjs/docs/main/${params.packageName!}/${params.branchName!}.api.json`,
|
||||||
);
|
);
|
||||||
const data = await res.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());
|
return json(findMember(model, params.packageName!, params.memberName!)?.toJSON());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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 { json } from '@remix-run/node';
|
||||||
import { Params, useLoaderData } from '@remix-run/react';
|
import { Params, useLoaderData } from '@remix-run/react';
|
||||||
import { ApiItem, ApiModel, ApiPackage } from '~/api-extractor.server';
|
import { createApiModel } from '~/util/api-model.server';
|
||||||
import { TSDocConfiguration } from '~/tsdoc.server';
|
|
||||||
import { findPackage, getMembers } from '~/util/parse.server';
|
import { findPackage, getMembers } from '~/util/parse.server';
|
||||||
|
|
||||||
export async function loader({ params }: { params: Params }) {
|
export async function loader({ params }: { params: Params }) {
|
||||||
const res = await fetch(
|
const res = await fetch(
|
||||||
`https://raw.githubusercontent.com/discordjs/docs/main/${params.packageName!}/${params.branchName!}.api.json`,
|
`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 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);
|
|
||||||
|
|
||||||
const pkg = findPackage(model, params.packageName!);
|
const pkg = findPackage(model, params.packageName!);
|
||||||
return json({
|
return json({
|
||||||
|
|||||||
1
packages/website/src/tsdoc-config.server.ts
Normal file
1
packages/website/src/tsdoc-config.server.ts
Normal file
@@ -0,0 +1 @@
|
|||||||
|
export * from '@microsoft/tsdoc-config';
|
||||||
23
packages/website/src/util/api-model.server.ts
Normal file
23
packages/website/src/util/api-model.server.ts
Normal file
@@ -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;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user