Start refactoring docs to remove unnecessary configs given more concise TypeDoc JSON

This commit is contained in:
Fabio Berger
2018-08-01 17:36:37 +02:00
parent 11869122b4
commit 3bdf6004ca
23 changed files with 274 additions and 630 deletions

View File

@@ -13,6 +13,20 @@ import * as ts from 'typescript';
import { ExportPathToExportedItems } from '../types';
interface ExportInfo {
exportPathToExportedItems: ExportPathToExportedItems;
exportPathOrder: string[];
}
interface ExportNameToTypedocName {
[exportName: string]: string;
}
interface Metadata {
exportPathToTypedocName: ExportNameToTypedocName;
exportPathOrder: string[];
}
const publishReleaseAsync = promisify(publishRelease);
export async function publishReleaseNotesAsync(updatedPublishPackages: Package[]): Promise<void> {
// Git push a tag representing this publish (publish-{commit-hash}) (truncate hash)
@@ -107,7 +121,7 @@ function getReleaseNotesForPackage(packageName: string, version: string): string
export async function generateAndUploadDocsAsync(packageName: string, isStaging: boolean): Promise<void> {
const pathToPackage = `${constants.monorepoRootPath}/packages/${packageName}`;
const indexPath = `${pathToPackage}/src/index.ts`;
const exportPathToExportedItems = getExportPathToExportedItems(indexPath);
const { exportPathToExportedItems, exportPathOrder } = getExportPathToExportedItems(indexPath);
const monorepoPackages = utils.getPackages(constants.monorepoRootPath);
const pkg = _.find(monorepoPackages, monorepoPackage => {
@@ -151,7 +165,8 @@ export async function generateAndUploadDocsAsync(packageName: string, isStaging:
const typeDocSourceIncludes = new Set();
const pathToIndex = `${pathIfExists}/src/index.ts`;
const innerExportPathToExportedItems = getExportPathToExportedItems(pathToIndex);
const exportInfo = getExportPathToExportedItems(pathToIndex);
const innerExportPathToExportedItems = exportInfo.exportPathToExportedItems;
_.each(exportedItems, exportName => {
_.each(innerExportPathToExportedItems, (innerExportItems, innerExportPath) => {
if (!_.includes(innerExportItems, exportName)) {
@@ -200,13 +215,18 @@ export async function generateAndUploadDocsAsync(packageName: string, isStaging:
_.each(typedocOutput.children, (child, i) => {
if (!_.includes(child.name, '/src/')) {
const nameWithoutQuotes = child.name.replace(/"/g, '');
finalTypeDocOutput.children[i].name = `"${packageName}/src/${nameWithoutQuotes}"`;
const standardizedName = `"${packageName}/src/${nameWithoutQuotes}"`;
finalTypeDocOutput.children[i].name = standardizedName;
}
});
// For each entry, see if it was exported in index.ts. If not, remove it.
const exportPathToTypedocName: ExportNameToTypedocName = {};
_.each(typedocOutput.children, (file, i) => {
const exportItems = findExportItemsGivenTypedocName(exportPathToExportedItems, packageName, file.name);
const exportPath = findExportPathGivenTypedocName(exportPathToExportedItems, packageName, file.name);
exportPathToTypedocName[exportPath] = file.name;
const exportItems = exportPathToExportedItems[exportPath];
_.each(file.children, (child, j) => {
if (!_.includes(exportItems, child.name)) {
delete finalTypeDocOutput.children[i].children[j];
@@ -214,8 +234,22 @@ export async function generateAndUploadDocsAsync(packageName: string, isStaging:
});
finalTypeDocOutput.children[i].children = _.compact(finalTypeDocOutput.children[i].children);
});
// TODO: Add extra metadata for Class properties that are class instances
// Look in file for imports of that class, get the import name and construct a link to
// it's definition on another docs page.
// Since we need additional metadata included in the doc JSON, we nest the TypeDoc JSON
const docJson = {
metadata: {
exportPathToTypedocName,
exportPathOrder,
},
typedocJson: finalTypeDocOutput,
};
// Write modified TypeDoc JSON, without all the unexported stuff
writeFileSync(jsonFilePath, JSON.stringify(finalTypeDocOutput, null, 2));
writeFileSync(jsonFilePath, JSON.stringify(docJson, null, 2));
const fileName = `v${packageJson.version}.json`;
utils.log(`GENERATE_UPLOAD_DOCS: Doc generation successful, uploading docs... as ${fileName}`);
@@ -234,11 +268,11 @@ export async function generateAndUploadDocsAsync(packageName: string, isStaging:
});
}
function findExportItemsGivenTypedocName(
function findExportPathGivenTypedocName(
exportPathToExportedItems: ExportPathToExportedItems,
packageName: string,
typedocName: string,
): string[] {
): string {
const typeDocNameWithoutQuotes = _.replace(typedocName, '"', '');
const sanitizedExportPathToExportPath: { [sanitizedName: string]: string } = {};
const exportPaths = _.keys(exportPathToExportedItems);
@@ -264,22 +298,23 @@ function findExportItemsGivenTypedocName(
throw new Error(`Didn't find an exportPath for ${typeDocNameWithoutQuotes}`);
}
const matchingExportPath = sanitizedExportPathToExportPath[matchingSanitizedExportPathIfExists];
return exportPathToExportedItems[matchingExportPath];
return matchingExportPath;
}
function getExportPathToExportedItems(pkgPath: string): ExportPathToExportedItems {
function getExportPathToExportedItems(filePath: string): ExportInfo {
const sourceFile = ts.createSourceFile(
'indexFile',
readFileSync(pkgPath).toString(),
readFileSync(filePath).toString(),
ts.ScriptTarget.ES2017,
/*setParentNodes */ true,
);
const exportPathToExportedItems = _getExportPathToExportedItems(sourceFile);
return exportPathToExportedItems;
const exportInfo = _getExportPathToExportedItems(sourceFile);
return exportInfo;
}
function _getExportPathToExportedItems(sf: ts.SourceFile): ExportPathToExportedItems {
function _getExportPathToExportedItems(sf: ts.SourceFile): ExportInfo {
const exportPathToExportedItems: ExportPathToExportedItems = {};
const exportPathOrder: string[] = [];
processNode(sf);
function processNode(node: ts.Node): void {
@@ -287,6 +322,7 @@ function _getExportPathToExportedItems(sf: ts.SourceFile): ExportPathToExportedI
case ts.SyntaxKind.ExportDeclaration:
const exportClause = (node as any).exportClause;
const pkgName = exportClause.parent.moduleSpecifier.text;
exportPathOrder.push(pkgName);
_.each(exportClause.elements, element => {
exportPathToExportedItems[pkgName] = _.isUndefined(exportPathToExportedItems[pkgName])
? [element.name.escapedText]
@@ -301,5 +337,9 @@ function _getExportPathToExportedItems(sf: ts.SourceFile): ExportPathToExportedI
ts.forEachChild(node, processNode);
}
return exportPathToExportedItems;
const exportInfo = {
exportPathToExportedItems,
exportPathOrder,
};
return exportInfo;
}

View File

@@ -32,33 +32,8 @@ const docsInfoConfig: DocsInfoConfig = {
web3Wrapper: [docSections.web3Wrapper],
types: [docSections.types],
},
sectionNameToMarkdownByVersion: {
'0.0.1': {
[docSections.introduction]: IntroMarkdownV1,
},
},
sectionNameToModulePath: {
[docSections.web3Wrapper]: ['"web3-wrapper/src/index"'],
[docSections.types]: ['"types/src/index"'],
},
menuSubsectionToVersionWhenIntroduced: {},
sections: docSections,
visibleConstructors: [docSections.web3Wrapper],
typeConfigs: {
// Note: This needs to be kept in sync with the types exported in index.ts. Unfortunately there is
// currently no way to extract the re-exported types from index.ts via TypeDoc :(
publicTypes: [
'TxData',
'TransactionReceipt',
'RawLogEntry',
'BlockParam',
'ContractAbi',
'FilterObject',
'LogEntry',
'BlockWithoutTransactionData',
'CallData',
'LogEntryEvent',
],
typeNameToExternalLink: {
Web3: 'https://github.com/ethereum/wiki/wiki/JavaScript-API',
Provider: 'https://github.com/0xProject/web3-typescript-typings/blob/f5bcb96/index.d.ts#L150',

View File

@@ -1,7 +1,9 @@
import {
AnchorTitle,
colors,
constants as sharedConstants,
EtherscanLinkSuffixes,
HeaderSizes,
MarkdownSection,
NestedSidebarMenu,
Networks,
@@ -32,8 +34,7 @@ import { Badge } from './badge';
import { Comment } from './comment';
import { EventDefinition } from './event_definition';
import { SignatureBlock } from './signature_block';
import { SourceLink } from './source_link';
import { Type } from './type';
import { PropertyBlock } from './property_block';
import { TypeDefinition } from './type_definition';
const networkNameToColor: { [network: string]: string } = {
@@ -129,7 +130,7 @@ export class Documentation extends React.Component<DocumentationProps, Documenta
selectedVersion={this.props.selectedVersion}
versions={this.props.availableVersions}
sidebarHeader={this.props.sidebarHeader}
topLevelMenu={this.props.docsInfo.getMenu(this.props.selectedVersion)}
topLevelMenu={this.props.docsInfo.menu}
menuSubsectionsBySection={menuSubsectionsBySection}
onVersionSelected={this.props.onVersionSelected}
/>
@@ -172,7 +173,7 @@ export class Documentation extends React.Component<DocumentationProps, Documenta
);
}
private _renderDocumentation(): React.ReactNode {
const subMenus = _.values(this.props.docsInfo.getMenu());
const subMenus = _.values(this.props.docsInfo.menu);
const orderedSectionNames = _.flatten(subMenus);
const typeDefinitionByName = this.props.docsInfo.getTypeDefinitionsByName(this.props.docAgnosticFormat);
@@ -258,13 +259,12 @@ export class Documentation extends React.Component<DocumentationProps, Documenta
{this._renderNetworkBadgesIfExists(sectionName)}
</div>
{docSection.comment && <Comment comment={docSection.comment} />}
{!_.isEmpty(docSection.constructors) &&
this.props.docsInfo.isVisibleConstructor(sectionName) && (
<div>
<h2 style={headerStyle}>Constructor</h2>
{this._renderConstructors(docSection.constructors, sectionName, typeDefinitionByName)}
</div>
)}
{!_.isEmpty(docSection.constructors) && (
<div>
<h2 style={headerStyle}>Constructor</h2>
{this._renderConstructors(docSection.constructors, sectionName, typeDefinitionByName)}
</div>
)}
{!_.isEmpty(docSection.properties) && (
<div>
<h2 style={headerStyle}>Properties</h2>
@@ -345,20 +345,14 @@ export class Documentation extends React.Component<DocumentationProps, Documenta
}
private _renderProperty(sectionName: string, property: Property): React.ReactNode {
return (
<div key={`property-${property.name}-${property.type.name}`} className="pb3">
<code className={`hljs ${constants.TYPE_TO_SYNTAX[this.props.docsInfo.type]}`}>
{property.name}:{' '}
<Type type={property.type} sectionName={sectionName} docsInfo={this.props.docsInfo} />
</code>
{property.source && (
<SourceLink
version={this.props.selectedVersion}
source={property.source}
sourceUrl={this.props.sourceUrl}
/>
)}
{property.comment && <Comment comment={property.comment} className="py2" />}
</div>
<PropertyBlock
key={`property-${property.name}-${property.type.name}`}
property={property}
sectionName={sectionName}
docsInfo={this.props.docsInfo}
sourceUrl={this.props.sourceUrl}
selectedVersion={this.props.selectedVersion}
/>
);
}
private _renderSignatureBlocks(

View File

@@ -0,0 +1,70 @@
import { AnchorTitle, HeaderSizes } from '@0xproject/react-shared';
import * as React from 'react';
import { DocsInfo } from '../docs_info';
import { Property } from '../types';
import { constants } from '../utils/constants';
import { Comment } from './comment';
import { Type } from './type';
import { SourceLink } from './source_link';
export interface PropertyBlockProps {
property: Property;
sectionName: string;
docsInfo: DocsInfo;
sourceUrl: string;
selectedVersion: string;
}
export interface PropertyBlockState {
shouldShowAnchor: boolean;
}
export class PropertyBlock extends React.Component<PropertyBlockProps, PropertyBlockState> {
constructor(props: PropertyBlockProps) {
super(props);
this.state = {
shouldShowAnchor: false,
};
}
public render(): React.ReactNode {
const property = this.props.property;
const sectionName = this.props.sectionName;
return (
<div
id={`${this.props.sectionName}-${property.name}`}
className="pb4"
key={`property-${property.name}-${property.type.name}`}
onMouseOver={this._setAnchorVisibility.bind(this, true)}
onMouseOut={this._setAnchorVisibility.bind(this, false)}
>
<div className="pb2" style={{ lineHeight: 1.3 }}>
<AnchorTitle
headerSize={HeaderSizes.H3}
title={property.name}
id={`${sectionName}-${property.name}`}
shouldShowAnchor={this.state.shouldShowAnchor}
/>
</div>
<code className={`hljs ${constants.TYPE_TO_SYNTAX[this.props.docsInfo.type]}`}>
{property.name}:{' '}
<Type type={property.type} sectionName={sectionName} docsInfo={this.props.docsInfo} />
</code>
{property.source && (
<SourceLink
version={this.props.selectedVersion}
source={property.source}
sourceUrl={this.props.sourceUrl}
/>
)}
{property.comment && <Comment comment={property.comment} className="py2" />}
</div>
);
}
private _setAnchorVisibility(shouldShowAnchor: boolean): void {
this.setState({
shouldShowAnchor,
});
}
}

View File

@@ -9,6 +9,7 @@ import { DocsInfo } from '../docs_info';
import { Type as TypeDef, TypeDefinitionByName, TypeDocTypes } from '../types';
import { Signature } from './signature';
import { constants } from '../utils/constants';
import { TypeDefinition } from './type_definition';
export interface TypeProps {
@@ -43,7 +44,7 @@ export function Type(props: TypeProps): any {
<span>
<Type
key={key}
type={arg.elementType}
type={arg}
sectionName={props.sectionName}
typeDefinitionByName={props.typeDefinitionByName}
docsInfo={props.docsInfo}
@@ -142,7 +143,6 @@ export function Type(props: TypeProps): any {
let typeNameUrlIfExists;
let typePrefixIfExists;
let sectionNameIfExists;
if (!_.isUndefined(props.docsInfo.typeConfigs)) {
typeNameUrlIfExists = !_.isUndefined(props.docsInfo.typeConfigs.typeNameToExternalLink)
? props.docsInfo.typeConfigs.typeNameToExternalLink[typeName as string]
@@ -150,9 +150,6 @@ export function Type(props: TypeProps): any {
typePrefixIfExists = !_.isUndefined(props.docsInfo.typeConfigs.typeNameToPrefix)
? props.docsInfo.typeConfigs.typeNameToPrefix[typeName as string]
: undefined;
sectionNameIfExists = !_.isUndefined(props.docsInfo.typeConfigs.typeNameToDocSection)
? props.docsInfo.typeConfigs.typeNameToDocSection[typeName as string]
: undefined;
}
if (!_.isUndefined(typeNameUrlIfExists)) {
typeName = (
@@ -168,16 +165,12 @@ export function Type(props: TypeProps): any {
);
} else if (
(isReference || isArray) &&
(props.docsInfo.isPublicType(typeName as string) || !_.isUndefined(sectionNameIfExists))
props.typeDefinitionByName &&
props.typeDefinitionByName[typeName as string]
) {
const id = Math.random().toString();
const typeDefinitionAnchorId = _.isUndefined(sectionNameIfExists)
? `${props.sectionName}-${typeName}`
: sectionNameIfExists;
let typeDefinition;
if (props.typeDefinitionByName) {
typeDefinition = props.typeDefinitionByName[typeName as string];
}
const typeDefinitionAnchorId = `${constants.TYPES_SECTION_NAME}-${typeName}`;
let typeDefinition = props.typeDefinitionByName[typeName as string];
typeName = (
<ScrollLink
to={typeDefinitionAnchorId}
@@ -186,18 +179,12 @@ export function Type(props: TypeProps): any {
duration={sharedConstants.DOCS_SCROLL_DURATION_MS}
containerId={sharedConstants.DOCS_CONTAINER_ID}
>
{_.isUndefined(typeDefinition) || sharedUtils.isUserOnMobile() ? (
<span
onClick={sharedUtils.setUrlHash.bind(null, typeDefinitionAnchorId)}
style={{ color: colors.lightBlueA700, cursor: 'pointer' }}
>
{typeName}
</span>
{sharedUtils.isUserOnMobile() ? (
<span style={{ color: colors.lightBlueA700, cursor: 'pointer' }}>{typeName}</span>
) : (
<span
data-tip={true}
data-for={id}
onClick={sharedUtils.setUrlHash.bind(null, typeDefinitionAnchorId)}
style={{
color: colors.lightBlueA700,
cursor: 'pointer',

View File

@@ -37,9 +37,6 @@ export class TypeDefinition extends React.Component<TypeDefinitionProps, TypeDef
}
public render(): React.ReactNode {
const customType = this.props.customType;
if (!this.props.docsInfo.isPublicType(customType.name)) {
return null; // no-op
}
let typePrefix: string;
let codeSnippet: React.ReactNode;

View File

@@ -13,7 +13,7 @@ import {
SectionsMap,
SupportedDocJson,
TypeDefinitionByName,
TypeDocNode,
GeneratedDocJson,
} from './types';
import { doxityUtils } from './utils/doxity_utils';
import { typeDocUtils } from './utils/typedoc_utils';
@@ -32,6 +32,7 @@ export class DocsInfo {
constructor(config: DocsInfoConfig) {
this.id = config.id;
this.type = config.type;
this.menu = config.menu;
this.displayName = config.displayName;
this.packageUrl = config.packageUrl;
this.sections = config.sections;
@@ -40,38 +41,8 @@ export class DocsInfo {
this.typeConfigs = config.typeConfigs;
this._docsInfo = config;
}
public isPublicType(typeName: string): boolean {
if (_.isUndefined(this._docsInfo.typeConfigs.publicTypes)) {
return false;
}
const isPublic = _.includes(this._docsInfo.typeConfigs.publicTypes, typeName);
return isPublic;
}
public getModulePathsIfExists(sectionName: string): string[] {
const modulePathsIfExists = this._docsInfo.sectionNameToModulePath[sectionName];
return modulePathsIfExists;
}
public getMenu(selectedVersion?: string): { [section: string]: string[] } {
if (_.isUndefined(selectedVersion) || _.isUndefined(this._docsInfo.menuSubsectionToVersionWhenIntroduced)) {
return this._docsInfo.menu;
}
const finalMenu = _.cloneDeep(this._docsInfo.menu);
if (_.isUndefined(finalMenu.contracts)) {
return finalMenu;
}
// TODO: refactor to include more sections then simply the `contracts` section
finalMenu.contracts = _.filter(finalMenu.contracts, (contractName: string) => {
const versionIntroducedIfExists = this._docsInfo.menuSubsectionToVersionWhenIntroduced[contractName];
if (!_.isUndefined(versionIntroducedIfExists)) {
const doesExistInSelectedVersion = compareVersions(selectedVersion, versionIntroducedIfExists) >= 0;
return doesExistInSelectedVersion;
} else {
return true;
}
});
return finalMenu;
return this._docsInfo.menu;
}
public getMenuSubsectionsBySection(docAgnosticFormat?: DocAgnosticFormat): MenuSubsectionsBySection {
const menuSubsectionsBySection = {} as MenuSubsectionsBySection;
@@ -96,12 +67,18 @@ export class DocsInfo {
const sortedEventNames = _.sortBy(docSection.events, 'name');
eventNames = _.map(sortedEventNames, m => m.name);
}
const sortedMethodNames = _.sortBy(docSection.methods, 'name');
const methodNames = _.map(sortedMethodNames, m => m.name);
menuSubsectionsBySection[sectionName] = [...methodNames, ...eventNames];
const propertiesSortedByName = _.sortBy(docSection.properties, 'name');
const propertyNames = _.map(propertiesSortedByName, m => m.name);
const methodsSortedByName = _.sortBy(docSection.methods, 'name');
const methodNames = _.map(methodsSortedByName, m => m.name);
const sortedFunctionNames = _.sortBy(docSection.functions, 'name');
const functionNames = _.map(sortedFunctionNames, m => m.name);
menuSubsectionsBySection[sectionName] = [...eventNames, ...functionNames, ...methodNames];
menuSubsectionsBySection[sectionName] = [
...eventNames,
...propertyNames,
...functionNames,
...methodNames,
];
}
});
return menuSubsectionsBySection;
@@ -115,14 +92,11 @@ export class DocsInfo {
const typeDefinitionByName = _.keyBy(typeDocSection.types, 'name') as any;
return typeDefinitionByName;
}
public isVisibleConstructor(sectionName: string): boolean {
return _.includes(this._docsInfo.visibleConstructors, sectionName);
}
public convertToDocAgnosticFormat(docObj: DoxityDocObj | TypeDocNode): DocAgnosticFormat {
public convertToDocAgnosticFormat(docObj: DoxityDocObj | GeneratedDocJson): DocAgnosticFormat {
if (this.type === SupportedDocJson.Doxity) {
return doxityUtils.convertToDocAgnosticFormat(docObj as DoxityDocObj);
} else {
return typeDocUtils.convertToDocAgnosticFormat(docObj as TypeDocNode, this);
return typeDocUtils.convertToDocAgnosticFormat(docObj as GeneratedDocJson, this);
}
}
}

View File

@@ -15,6 +15,14 @@ export { Type } from './components/type';
export { DocsInfo } from './docs_info';
export { DocsInfoConfig, DocAgnosticFormat, DoxityDocObj, DocsMenu, SupportedDocJson, TypeDocNode } from './types';
export {
DocsInfoConfig,
DocAgnosticFormat,
DoxityDocObj,
DocsMenu,
SupportedDocJson,
TypeDocNode,
GeneratedDocJson,
} from './types';
export { constants } from './utils/constants';

View File

@@ -10,18 +10,13 @@ export interface DocsInfoConfig {
menu: DocsMenu;
sections: SectionsMap;
sectionNameToMarkdownByVersion: SectionNameToMarkdownByVersion;
visibleConstructors: string[];
sectionNameToModulePath?: { [sectionName: string]: string[] };
menuSubsectionToVersionWhenIntroduced?: { [sectionName: string]: string };
contractsByVersionByNetworkId?: ContractsByVersionByNetworkId;
typeConfigs?: DocsInfoTypeConfigs;
}
export interface DocsInfoTypeConfigs {
typeNameToExternalLink?: { [typeName: string]: string };
publicTypes?: string[];
typeNameToPrefix?: { [typeName: string]: string };
typeNameToDocSection?: { [typeName: string]: string };
}
export interface DocsMenu {
@@ -292,3 +287,17 @@ export enum AbiTypes {
Function = 'function',
Event = 'event',
}
export interface ExportNameToTypedocName {
[exportName: string]: string;
}
export interface Metadata {
exportPathToTypedocName: ExportNameToTypedocName;
exportPathOrder: string[];
}
export interface GeneratedDocJson {
metadata: Metadata;
typedocJson: TypeDocNode;
}

View File

@@ -19,8 +19,11 @@ import {
TypeParameter,
TypescriptFunction,
TypescriptMethod,
GeneratedDocJson,
} from '../types';
import { constants } from './constants';
export const typeDocUtils = {
isType(entity: TypeDocNode): boolean {
return (
@@ -55,62 +58,68 @@ export const typeDocUtils = {
});
return moduleDefinitions;
},
convertToDocAgnosticFormat(typeDocJson: TypeDocNode, docsInfo: DocsInfo): DocAgnosticFormat {
const subMenus = _.values(docsInfo.getMenu());
const orderedSectionNames = _.flatten(subMenus);
const docAgnosticFormat: DocAgnosticFormat = {};
_.each(orderedSectionNames, sectionName => {
const modulePathsIfExists = docsInfo.getModulePathsIfExists(sectionName);
if (_.isUndefined(modulePathsIfExists)) {
return; // no-op
}
const packageDefinitions = typeDocUtils.getModuleDefinitionsBySectionName(typeDocJson, modulePathsIfExists);
let packageDefinitionWithMergedChildren;
if (_.isEmpty(packageDefinitions)) {
return; // no-op
} else if (packageDefinitions.length === 1) {
packageDefinitionWithMergedChildren = packageDefinitions[0];
} else {
// HACK: For now, if there are two modules to display in a single section,
// we simply concat the children. This works for our limited use-case where
// we want to display types stored in two files under a single section
packageDefinitionWithMergedChildren = packageDefinitions[0];
for (let i = 1; i < packageDefinitions.length; i++) {
packageDefinitionWithMergedChildren.children = [
...packageDefinitionWithMergedChildren.children,
...packageDefinitions[i].children,
];
}
}
convertToDocAgnosticFormat(generatedDocJson: GeneratedDocJson, docsInfo: DocsInfo): DocAgnosticFormat {
const exportPathOrder = generatedDocJson.metadata.exportPathOrder;
const exportPathToTypedocName = generatedDocJson.metadata.exportPathToTypedocName;
const typeDocJson = generatedDocJson.typedocJson;
let entities;
let packageComment = '';
// HACK: We assume 1 exported class per file
const classChildren = _.filter(packageDefinitionWithMergedChildren.children, (child: TypeDocNode) => {
return child.kindString === KindString.Class;
});
if (classChildren.length > 1 && sectionName !== 'types') {
throw new Error('`react-docs` only supports projects with 1 exported class per file');
}
const isClassExport = packageDefinitionWithMergedChildren.children[0].kindString === KindString.Class;
const isObjectLiteralExport =
packageDefinitionWithMergedChildren.children[0].kindString === KindString.ObjectLiteral;
if (isClassExport) {
entities = packageDefinitionWithMergedChildren.children[0].children;
const commentObj = packageDefinitionWithMergedChildren.children[0].comment;
packageComment = !_.isUndefined(commentObj) ? commentObj.shortText : packageComment;
} else if (isObjectLiteralExport) {
entities = packageDefinitionWithMergedChildren.children[0].children;
const commentObj = packageDefinitionWithMergedChildren.children[0].comment;
packageComment = !_.isUndefined(commentObj) ? commentObj.shortText : packageComment;
} else {
entities = packageDefinitionWithMergedChildren.children;
}
const docSection = typeDocUtils._convertEntitiesToDocSection(entities, docsInfo, sectionName);
docSection.comment = packageComment;
docAgnosticFormat[sectionName] = docSection;
const typeDocNameOrder = _.map(exportPathOrder, exportPath => {
return exportPathToTypedocName[exportPath];
});
const docAgnosticFormat: DocAgnosticFormat = {};
const typeEntities: TypeDocNode[] = [];
_.each(typeDocNameOrder, typeDocName => {
const fileChildIndex = _.findIndex(typeDocJson.children, child => child.name === typeDocName);
const fileChild = typeDocJson.children[fileChildIndex];
let sectionName: string;
_.each(fileChild.children, (child, j) => {
switch (child.kindString) {
case KindString.Class:
case KindString.ObjectLiteral: {
sectionName = child.name;
docsInfo.sections[sectionName] = sectionName;
docsInfo.menu[sectionName] = [sectionName];
const entities = child.children;
const commentObj = child.comment;
const sectionComment = !_.isUndefined(commentObj) ? commentObj.shortText : '';
const docSection = typeDocUtils._convertEntitiesToDocSection(entities, docsInfo, sectionName);
docSection.comment = sectionComment;
docAgnosticFormat[sectionName] = docSection;
break;
}
case KindString.Function: {
sectionName = child.name;
docsInfo.sections[sectionName] = sectionName;
docsInfo.menu[sectionName] = [sectionName];
const entities = [child];
const commentObj = child.comment;
const SectionComment = !_.isUndefined(commentObj) ? commentObj.shortText : '';
const docSection = typeDocUtils._convertEntitiesToDocSection(entities, docsInfo, sectionName);
docSection.comment = SectionComment;
docAgnosticFormat[sectionName] = docSection;
break;
}
case KindString.Interface:
case KindString.Variable:
case KindString.Enumeration:
case KindString.TypeAlias:
typeEntities.push(child);
break;
default:
throw errorUtils.spawnSwitchErr('kindString', child.kindString);
}
});
});
docsInfo.sections[constants.TYPES_SECTION_NAME] = constants.TYPES_SECTION_NAME;
docsInfo.menu[constants.TYPES_SECTION_NAME] = [constants.TYPES_SECTION_NAME];
const docSection = typeDocUtils._convertEntitiesToDocSection(
typeEntities,
docsInfo,
constants.TYPES_SECTION_NAME,
);
docAgnosticFormat[constants.TYPES_SECTION_NAME] = docSection;
return docAgnosticFormat;
},
_convertEntitiesToDocSection(entities: TypeDocNode[], docsInfo: DocsInfo, sectionName: string): DocSection {
@@ -175,18 +184,16 @@ export const typeDocUtils = {
case KindString.Variable:
case KindString.Enumeration:
case KindString.TypeAlias:
if (docsInfo.isPublicType(entity.name)) {
const customType = typeDocUtils._convertCustomType(
entity,
docsInfo.sections,
sectionName,
docsInfo.id,
);
const seenTypeNames = _.map(docSection.types, t => t.name);
const isUnseen = !_.includes(seenTypeNames, customType.name);
if (isUnseen) {
docSection.types.push(customType);
}
const customType = typeDocUtils._convertCustomType(
entity,
docsInfo.sections,
sectionName,
docsInfo.id,
);
const seenTypeNames = _.map(docSection.types, t => t.name);
const isUnseen = !_.includes(seenTypeNames, customType.name);
if (isUnseen) {
docSection.types.push(customType);
}
break;

View File

@@ -40,42 +40,12 @@ const docsInfoConfig: DocsInfoConfig = {
[connectDocSections.installation]: InstallationMarkdownV1,
},
},
sectionNameToModulePath: {
[connectDocSections.httpClient]: ['"src/http_client"'],
[connectDocSections.webSocketOrderbookChannel]: ['"src/ws_orderbook_channel"'],
[connectDocSections.types]: ['"src/types"', '"types/src/index"'],
},
menuSubsectionToVersionWhenIntroduced: {},
sections: connectDocSections,
visibleConstructors: [connectDocSections.httpClient, connectDocSections.webSocketOrderbookChannel],
typeConfigs: {
typeNameToExternalLink: {
Provider: constants.URL_WEB3_PROVIDER_DOCS,
BigNumber: constants.URL_BIGNUMBERJS_GITHUB,
},
// Note: This needs to be kept in sync with the types exported in index.ts. Unfortunately there is
// currently no way to extract the re-exported types from index.ts via TypeDoc :(
publicTypes: [
'Client',
'FeesRequest',
'FeesResponse',
'OrderbookChannel',
'OrderbookChannelHandler',
'OrderbookChannelSubscriptionOpts',
'OrderbookRequest',
'OrderbookResponse',
'OrdersRequest',
'OrdersRequestOpts',
'PagedRequestOpts',
'TokenPairsItem',
'TokenPairsRequest',
'TokenPairsRequestOpts',
'TokenTradeInfo',
'WebSocketOrderbookChannelConfig',
'Order',
'SignedOrder',
'ECSignature',
],
},
};
const docsInfo = new DocsInfo(docsInfoConfig);

View File

@@ -36,60 +36,8 @@ const docsInfoConfig: DocsInfoConfig = {
[docSections.installation]: InstallationMarkdown,
},
},
sectionNameToModulePath: {
[docSections.types]: ['"index"'],
},
visibleConstructors: [],
menuSubsectionToVersionWhenIntroduced: {},
sections: docSections,
typeConfigs: {
// Note: This needs to be kept in sync with the types exported in index.ts. Unfortunately there is
// currently no way to extract the re-exported types from index.ts via TypeDoc :(
publicTypes: [
'Provider',
'JSONRPCErrorCallback',
'Provider',
'ContractAbi',
'AbiDefinition',
'FunctionAbi',
'ConstructorStateMutability',
'StateMutability',
'MethodAbi',
'ConstructorAbi',
'FallbackAbi',
'EventParameter',
'EventAbi',
'DataItem',
'OpCode',
// 'StructLog', // TODO: This type breaks the docs so we don't render it for now
'TransactionTrace',
'Unit',
'JSONRPCRequestPayload',
'JSONRPCResponsePayload',
'BlockWithoutTransactionData',
'BlockWithTransactionData',
'Transaction',
'TxData',
'CallData',
'FilterObject',
'LogTopic',
'DecodedLogEntry',
'DecodedLogEntryEvent',
'LogEntryEvent',
'LogEntry',
'TxDataPayable',
'TransactionReceipt',
'AbiType',
'ContractEventArg',
'DecodedLogArgs',
'LogWithDecodedArgs',
'RawLog',
'BlockParamLiteral',
'BlockParam',
'RawLogEntry',
'SolidityTypes',
'TransactionReceiptWithDecodedLogs',
],
typeNameToExternalLink: {
BigNumber: constants.URL_BIGNUMBERJS_GITHUB,
},

View File

@@ -43,16 +43,8 @@ const docsInfoConfig: DocsInfoConfig = {
[docSections.usage]: UsageMarkdownV1,
},
},
sectionNameToModulePath: {
[docSections.schemaValidator]: ['"json-schemas/src/schema_validator"'],
},
menuSubsectionToVersionWhenIntroduced: {},
sections: docSections,
visibleConstructors: [docSections.schemaValidator],
typeConfigs: {
// Note: This needs to be kept in sync with the types exported in index.ts. Unfortunately there is
// currently no way to extract the re-exported types from index.ts via TypeDoc :(
publicTypes: [],
typeNameToExternalLink: {
Schema:
'https://github.com/tdegrunt/jsonschema/blob/5c2edd4baba149964aec0f23c87ad12c25a50dfb/lib/index.d.ts#L49',

View File

@@ -38,33 +38,8 @@ const docsInfoConfig: DocsInfoConfig = {
[docSections.installation]: InstallationMarkdownV1,
},
},
sectionNameToModulePath: {
[docSections.usage]: [
'"order-utils/src/order_hash"',
'"order-utils/src/signature_utils"',
'"order-utils/src/order_factory"',
'"order-utils/src/salt"',
'"order-utils/src/assert"',
'"order-utils/src/constants"',
],
[docSections.types]: ['"order-utils/src/types"', '"types/src/index"'],
},
menuSubsectionToVersionWhenIntroduced: {},
sections: docSections,
visibleConstructors: [],
typeConfigs: {
// Note: This needs to be kept in sync with the types exported in index.ts. Unfortunately there is
// currently no way to extract the re-exported types from index.ts via TypeDoc :(
publicTypes: [
'OrderError',
'Order',
'SignedOrder',
'ECSignature',
'Provider',
'JSONRPCRequestPayload',
'JSONRPCResponsePayload',
'JSONRPCErrorCallback',
],
typeNameToExternalLink: {
BigNumber: constants.URL_BIGNUMBERJS_GITHUB,
},

View File

@@ -34,7 +34,6 @@ const docsInfoConfig: DocsInfoConfig = {
TokenRegistry: Sections.TokenRegistry,
ZRXToken: Sections.ZRXToken,
},
visibleConstructors: [Sections.Exchange, Sections.TokenRegistry, Sections.ZRXToken, Sections.TokenTransferProxy],
contractsByVersionByNetworkId: {
'1.0.0': {
[Networks.Mainnet]: {

View File

@@ -41,17 +41,8 @@ const docsInfoConfig: DocsInfoConfig = {
[docSections.usage]: UsageMarkdown,
},
},
sectionNameToModulePath: {
[docSections.compiler]: ['"sol-compiler/src/compiler"'],
[docSections.types]: ['"sol-compiler/src/utils/types"', '"types/src/index"'],
},
menuSubsectionToVersionWhenIntroduced: {},
sections: docSections,
visibleConstructors: [docSections.compiler],
typeConfigs: {
// Note: This needs to be kept in sync with the types exported in index.ts. Unfortunately there is
// currently no way to extract the re-exported types from index.ts via TypeDoc :(
publicTypes: ['CompilerOptions'],
typeNameToExternalLink: {},
typeNameToPrefix: {},
},

View File

@@ -47,42 +47,10 @@ const docsInfoConfig: DocsInfoConfig = {
[docSections.usage]: UsageMarkdown,
},
},
sectionNameToModulePath: {
[docSections.coverageSubprovider]: ['"sol-cov/src/coverage_subprovider"'],
[docSections.abstractArtifactAdapter]: ['"sol-cov/src/artifact_adapters/abstract_artifact_adapter"'],
[docSections.solCompilerArtifactAdapter]: ['"sol-cov/src/artifact_adapters/sol_compiler_artifact_adapter"'],
[docSections.truffleArtifactAdapter]: ['"sol-cov/src/artifact_adapters/truffle_artifact_adapter"'],
[docSections.types]: ['"subproviders/src/types"', '"types/src/index"'],
},
menuSubsectionToVersionWhenIntroduced: {},
sections: docSections,
visibleConstructors: [
docSections.coverageSubprovider,
docSections.abstractArtifactAdapter,
docSections.solCompilerArtifactAdapter,
docSections.truffleArtifactAdapter,
],
typeConfigs: {
// Note: This needs to be kept in sync with the types exported in index.ts. Unfortunately there is
// currently no way to extract the re-exported types from index.ts via TypeDoc :(
publicTypes: [
'JSONRPCRequestPayload',
'NextCallback',
'ErrorCallback',
'AbstractArtifactAdapter',
'CoverageSubprovider',
'TruffleArtifactAdapter',
'SolCompilerArtifactAdapter',
'ContractData',
],
typeNameToExternalLink: {},
typeNameToPrefix: {},
typeNameToDocSection: {
AbstractArtifactAdapter: docSections.abstractArtifactAdapter,
CoverageSubprovider: docSections.coverageSubprovider,
TruffleArtifactAdapter: docSections.truffleArtifactAdapter,
SolCompilerArtifactAdapter: docSections.solCompilerArtifactAdapter,
},
},
};
const docsInfo = new DocsInfo(docsInfoConfig);

View File

@@ -64,55 +64,8 @@ const docsInfoConfig: DocsInfoConfig = {
[docSections.ledgerNodeHid]: LedgerNodeHidMarkdown,
},
},
sectionNameToModulePath: {
[docSections.subprovider]: ['"subproviders/src/subproviders/subprovider"'],
[docSections.ledgerSubprovider]: ['"subproviders/src/subproviders/ledger"'],
[docSections.privateKeyWalletSubprovider]: ['"subproviders/src/subproviders/private_key_wallet"'],
[docSections.mnemonicWalletSubprovider]: ['"subproviders/src/subproviders/mnemonic_wallet"'],
[docSections.factoryMethods]: ['"subproviders/src/index"'],
[docSections.emptyWalletSubprovider]: ['"subproviders/src/subproviders/empty_wallet_subprovider"'],
[docSections.fakeGasEstimateSubprovider]: ['"subproviders/src/subproviders/fake_gas_estimate_subprovider"'],
[docSections.injectedWeb3Subprovider]: ['"subproviders/src/subproviders/injected_web3"'],
[docSections.signerSubprovider]: ['"subproviders/src/subproviders/signer"'],
[docSections.redundantRPCSubprovider]: ['"subproviders/src/subproviders/redundant_rpc"'],
[docSections.ganacheSubprovider]: ['"subproviders/src/subproviders/ganache"'],
[docSections.nonceTrackerSubprovider]: ['"subproviders/src/subproviders/nonce_tracker"'],
[docSections.types]: ['"sol-compiler/src/utils/types"', '"types/src/index"', '"subproviders/src/types"'],
},
menuSubsectionToVersionWhenIntroduced: {},
sections: docSections,
visibleConstructors: [
docSections.subprovider,
docSections.ledgerSubprovider,
docSections.privateKeyWalletSubprovider,
docSections.mnemonicWalletSubprovider,
docSections.emptyWalletSubprovider,
docSections.fakeGasEstimateSubprovider,
docSections.injectedWeb3Subprovider,
docSections.redundantRPCSubprovider,
docSections.ganacheSubprovider,
docSections.nonceTrackerSubprovider,
],
typeConfigs: {
// Note: This needs to be kept in sync with the types exported in index.ts. Unfortunately there is
// currently no way to extract the re-exported types from index.ts via TypeDoc :(
publicTypes: [
'Callback',
'NextCallback',
'ErrorCallback',
'ECSignature',
'JSONRPCRequestPayloadWithMethod',
'JSONRPCRequestPayload',
'JSONRPCResponsePayload',
'AccountFetchingConfigs',
'LedgerEthereumClientFactoryAsync',
'PartialTxParams',
'LedgerEthereumClient',
'LedgerSubproviderConfigs',
'MnemonicWalletSubproviderConfigs',
'OnNextCompleted',
'Provider',
],
typeNameToExternalLink: {
Web3: constants.URL_WEB3_DOCS,
BigNumber: constants.URL_BIGNUMBERJS_GITHUB,

View File

@@ -38,60 +38,13 @@ const docsInfoConfig: DocsInfoConfig = {
[docSections.installation]: InstallationMarkdownV1,
},
},
sectionNameToModulePath: {
[docSections.web3Wrapper]: ['"web3-wrapper/src/web3_wrapper"'],
[docSections.types]: ['"types/src/index"'],
},
menuSubsectionToVersionWhenIntroduced: {},
sections: docSections,
visibleConstructors: [docSections.web3Wrapper],
typeConfigs: {
// Note: This needs to be kept in sync with the types exported in index.ts. Unfortunately there is
// currently no way to extract the re-exported types from index.ts via TypeDoc :(
publicTypes: [
'TxData',
'TransactionReceipt',
'RawLogEntry',
'ContractAbi',
'BlockParam',
'FilterObject',
'LogEntry',
'BlockWithoutTransactionData',
'CallData',
'LogEntryEvent',
'Provider',
'AbiDefinition',
'LogTopic',
'JSONRPCRequestPayload',
'JSONRPCResponsePayload',
'BlockParamLiteral',
'FunctionAbi',
'EventAbi',
'JSONRPCErrorCallback',
'MethodAbi',
'ConstructorAbi',
'FallbackAbi',
'EventParameter',
'DataItem',
'StateMutability',
'Function',
'Fallback',
'Constructor',
'Event',
'ConstructorStateMutability',
'TransactionReceiptWithDecodedLogs',
'DecodedLogArgs',
'LogWithDecodedArgs',
'ContractEventArg',
],
typeNameToExternalLink: {
Web3: constants.URL_WEB3_DOCS,
BigNumber: constants.URL_BIGNUMBERJS_GITHUB,
},
typeNameToPrefix: {},
typeNameToDocSection: {
Web3Wrapper: docSections.web3Wrapper,
},
},
};
const docsInfo = new DocsInfo(docsInfoConfig);

View File

@@ -27,14 +27,6 @@ const zeroExJsDocSections = {
async: 'async',
errors: 'errors',
versioning: 'versioning',
zeroEx: 'zeroEx',
exchange: 'exchange',
token: 'token',
tokenRegistry: 'tokenRegistry',
etherToken: 'etherToken',
proxy: 'proxy',
orderWatcher: 'orderWatcher',
types: docConstants.TYPES_SECTION_NAME,
};
const docsInfoConfig: DocsInfoConfig = {
@@ -46,16 +38,6 @@ const docsInfoConfig: DocsInfoConfig = {
introduction: [zeroExJsDocSections.introduction],
install: [zeroExJsDocSections.installation],
topics: [zeroExJsDocSections.async, zeroExJsDocSections.errors, zeroExJsDocSections.versioning],
zeroEx: [zeroExJsDocSections.zeroEx],
contracts: [
zeroExJsDocSections.exchange,
zeroExJsDocSections.token,
zeroExJsDocSections.tokenRegistry,
zeroExJsDocSections.etherToken,
zeroExJsDocSections.proxy,
],
orderWatcher: [zeroExJsDocSections.orderWatcher],
types: [zeroExJsDocSections.types],
},
sectionNameToMarkdownByVersion: {
'0.0.1': {
@@ -74,166 +56,12 @@ const docsInfoConfig: DocsInfoConfig = {
[zeroExJsDocSections.errors]: ErrorsMarkdownV1,
},
},
sectionNameToModulePath: {
[zeroExJsDocSections.zeroEx]: ['"0x.js/src/0x"', '"src/0x"'],
[zeroExJsDocSections.exchange]: [
'"0x.js/src/contract_wrappers/exchange_wrapper"',
'"src/contract_wrappers/exchange_wrapper"',
'"contract-wrappers/src/contract_wrappers/exchange_wrapper"',
],
[zeroExJsDocSections.tokenRegistry]: [
'"0x.js/src/contract_wrappers/token_registry_wrapper"',
'"src/contract_wrappers/token_registry_wrapper"',
'"contract-wrappers/src/contract_wrappers/token_registry_wrapper"',
],
[zeroExJsDocSections.token]: [
'"0x.js/src/contract_wrappers/token_wrapper"',
'"src/contract_wrappers/token_wrapper"',
'"contract-wrappers/src/contract_wrappers/token_wrapper"',
],
[zeroExJsDocSections.etherToken]: [
'"0x.js/src/contract_wrappers/ether_token_wrapper"',
'"src/contract_wrappers/ether_token_wrapper"',
'"contract-wrappers/src/contract_wrappers/ether_token_wrapper"',
],
[zeroExJsDocSections.proxy]: [
'"0x.js/src/contract_wrappers/proxy_wrapper"',
'"0x.js/src/contract_wrappers/token_transfer_proxy_wrapper"',
'"contract-wrappers/src/contract_wrappers/token_transfer_proxy_wrapper"',
],
[zeroExJsDocSections.orderWatcher]: [
'"0x.js/src/order_watcher/order_state_watcher"',
'"src/order_watcher/order_state_watcher"',
'"order-watcher/src/order_watcher/order_watcher"',
],
[zeroExJsDocSections.types]: [
'"0x.js/src/types"',
'"src/types"',
'"types/src/index"',
'"contract-wrappers/src/types"',
'"0x.js/src/contract_wrappers/generated/ether_token"',
'"0x.js/src/contract_wrappers/generated/token"',
'"0x.js/src/contract_wrappers/generated/exchange"',
'"0x.js/src/generated_contract_wrappers/ether_token"',
'"0x.js/src/generated_contract_wrappers/token"',
'"0x.js/src/generated_contract_wrappers/exchange"',
],
},
menuSubsectionToVersionWhenIntroduced: {
[zeroExJsDocSections.etherToken]: '0.7.1',
[zeroExJsDocSections.proxy]: '0.8.0',
[zeroExJsDocSections.orderWatcher]: '0.27.1',
},
sections: zeroExJsDocSections,
visibleConstructors: [zeroExJsDocSections.zeroEx],
typeConfigs: {
// Note: This needs to be kept in sync with the types exported in index.ts. Unfortunately there is
// currently no way to extract the re-exported types from index.ts via TypeDoc :( Make sure to only
// ADD types here, DO NOT REMOVE types since they might still be needed for older supported versions
publicTypes: [
'Order',
'SignedOrder',
'ECSignature',
'ContractWrappersError',
'EventCallback',
'EventCallbackAsync',
'EventCallbackSync',
'ExchangeContractErrs',
'ContractEvent',
'Token',
'Provider',
'ExchangeEvents',
'IndexedFilterValues',
'SubscriptionOpts',
'BlockRange',
'BlockParam',
'OrderFillOrKillRequest',
'OrderCancellationRequest',
'OrderFillRequest',
'ContractEventEmitter',
'Web3Provider',
'ContractEventArgs',
'LogCancelArgs',
'LogFillArgs',
'LogErrorContractEventArgs',
'LogFillContractEventArgs',
'LogCancelContractEventArgs',
'EtherTokenContractEventArgs',
'WithdrawalContractEventArgs',
'DepositContractEventArgs',
'TokenEvents',
'ExchangeContractEventArgs',
'TransferContractEventArgs',
'ApprovalContractEventArgs',
'TokenContractEventArgs',
'ZeroExConfig',
'TransactionReceipt',
'TransactionReceiptWithDecodedLogs',
'LogWithDecodedArgs',
'EtherTokenEvents',
'BlockParamLiteral',
'DecodedLogArgs',
'MethodOpts',
'ValidateOrderFillableOpts',
'OrderTransactionOpts',
'TransactionOpts',
'ContractEventArg',
'LogEvent',
'DecodedLogEvent',
'EventWatcherCallback',
'OnOrderStateChangeCallback',
'OrderStateValid',
'OrderStateInvalid',
'OrderState',
'OrderStateWatcherConfig',
'OrderWatcherConfig',
'FilterObject',
'OrderRelevantState',
'JSONRPCRequestPayload',
'JSONRPCResponsePayload',
'JSONRPCErrorCallback',
'LogEntryEvent',
'LogEntry',
'ERC20AssetData',
'ERC721AssetData',
'AssetProxyId',
'WETH9Events',
'WETH9WithdrawalEventArgs',
'WETH9ApprovalEventArgs',
'WETH9EventArgs',
'WETH9DepositEventArgs',
'WETH9TransferEventArgs',
'ERC20TokenTransferEventArgs',
'ERC20TokenApprovalEventArgs',
'ERC20TokenEvents',
'ERC20TokenEventArgs',
'ERC721TokenApprovalEventArgs',
'ERC721TokenApprovalForAllEventArgs',
'ERC721TokenTransferEventArgs',
'ERC721TokenEvents',
'ExchangeCancelUpToEventArgs',
'ExchangeAssetProxyRegisteredEventArgs',
'ExchangeFillEventArgs',
'ExchangeCancelEventArgs',
'ExchangeEventArgs',
'ContractWrappersConfig',
'MessagePrefixType',
'MessagePrefixOpts',
'OrderInfo',
],
typeNameToPrefix: {},
typeNameToExternalLink: {
BigNumber: constants.URL_BIGNUMBERJS_GITHUB,
},
typeNameToDocSection: {
ExchangeWrapper: 'exchange',
TokenWrapper: 'token',
TokenRegistryWrapper: 'tokenRegistry',
EtherTokenWrapper: 'etherToken',
ProxyWrapper: 'proxy',
TokenTransferProxyWrapper: 'proxy',
OrderStateWatcher: 'orderWatcher',
},
},
};
const docsInfo = new DocsInfo(docsInfoConfig);

View File

@@ -84,7 +84,7 @@ export class DocPage extends React.Component<DocPageProps, DocPageState> {
location={this.props.location}
docsVersion={this.props.docsVersion}
availableDocVersions={this.props.availableDocVersions}
menu={this.props.docsInfo.getMenu(this.props.docsVersion)}
menu={this.props.docsInfo.menu}
menuSubsectionsBySection={menuSubsectionsBySection}
docsInfo={this.props.docsInfo}
translate={this.props.translate}

View File

@@ -1,4 +1,4 @@
import { DoxityDocObj, TypeDocNode } from '@0xproject/react-docs';
import { DoxityDocObj, GeneratedDocJson } from '@0xproject/react-docs';
import { fetchAsync, logUtils } from '@0xproject/utils';
import * as _ from 'lodash';
import { S3FileObject, VersionToFilePath } from 'ts/types';
@@ -70,7 +70,7 @@ export const docUtils = {
});
return versionFilePaths;
},
async getJSONDocFileAsync(filePath: string, s3DocJsonRoot: string): Promise<TypeDocNode | DoxityDocObj> {
async getJSONDocFileAsync(filePath: string, s3DocJsonRoot: string): Promise<GeneratedDocJson | DoxityDocObj> {
const endpoint = `${s3DocJsonRoot}/${filePath}`;
const response = await fetchAsync(endpoint);
if (response.status !== 200) {

View File

@@ -1149,6 +1149,12 @@
dependencies:
"@types/react" "*"
"@types/react-scroll@1.5.3":
version "1.5.3"
resolved "https://registry.yarnpkg.com/@types/react-scroll/-/react-scroll-1.5.3.tgz#cc4e94db3d7d5b1cd244bfee24091c335d3e2598"
dependencies:
"@types/react" "*"
"@types/react-tap-event-plugin@0.0.30":
version "0.0.30"
resolved "https://registry.yarnpkg.com/@types/react-tap-event-plugin/-/react-tap-event-plugin-0.0.30.tgz#123f35080412f489b6770c5a65c159ff96654cb5"
@@ -10655,9 +10661,9 @@ react-scroll@1.7.7:
lodash.throttle "^4.1.1"
prop-types "^15.5.8"
react-scroll@^1.5.2:
version "1.7.8"
resolved "https://registry.yarnpkg.com/react-scroll/-/react-scroll-1.7.8.tgz#45d8bd0f3fb104a7a1c3adb358e3a742a7091409"
react-scroll@^1.7.10:
version "1.7.10"
resolved "https://registry.yarnpkg.com/react-scroll/-/react-scroll-1.7.10.tgz#b59cfa11a899a362c6489607ed5865c9c5fd0b53"
dependencies:
lodash.throttle "^4.1.1"
prop-types "^15.5.8"