refactor(createApiModel): reusable function for api model creation

This commit is contained in:
iCrawl
2022-07-05 17:00:44 +02:00
parent a51f7215ec
commit 68c3d8743e
4 changed files with 29 additions and 27 deletions

View File

@@ -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());
}

View File

@@ -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({

View File

@@ -0,0 +1 @@
export * from '@microsoft/tsdoc-config';

View 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;
}