diff --git a/docs/shared/ApiDoc/EnumDetails.js b/docs/shared/ApiDoc/EnumDetails.js index a0f7966f55e..7c7587cc0cc 100644 --- a/docs/shared/ApiDoc/EnumDetails.js +++ b/docs/shared/ApiDoc/EnumDetails.js @@ -47,7 +47,6 @@ export function EnumDetails({ mr="1" as={Text} since - link id={`${item.displayName.toLowerCase()}-member-${member.displayName.toLowerCase()}`} /> { @@ -41,9 +41,16 @@ export function FunctionSignature({ paramSignature = "\n " + paramSignature + "\n"; } + const genericSignature = + typeParameters?.length ? + `<${typeParameters.map((p) => p.name).join(", ")}>` + : ""; + const signature = `${arrow ? "" : "function "}${ name ? displayName : "" - }(${paramSignature})${arrow ? " =>" : ":"} ${returnType}`; + }${genericSignature}(${paramSignature})${arrow ? " =>" : ":"} ${ + returnType.type + }`; return highlight ? @@ -65,24 +72,20 @@ export function ReturnType({ canonicalReference }) { const getItem = useApiDocContext(); const item = getItem(canonicalReference); - const interfaceReference = getInterfaceReference( - item.returnType, - item, - getItem - ); return ( <> {item.comment?.returns} - {item.returnType} + {item.returnType.type} - {interfaceReference ? + {item.returnType.primaryCanonicalReference?.endsWith(":interface") ?
Show/hide child attributes
@@ -153,7 +156,8 @@ export function FunctionDetails({ )} {( - result === false || (result === undefined && item.returnType === "void") + result === false || + (result === undefined && item.returnType.type === "void") ) ? null : <> diff --git a/docs/shared/ApiDoc/ParameterTable.js b/docs/shared/ApiDoc/ParameterTable.js index 44bd51feada..40be1a6f8f1 100644 --- a/docs/shared/ApiDoc/ParameterTable.js +++ b/docs/shared/ApiDoc/ParameterTable.js @@ -3,12 +3,7 @@ import { useMDXComponents } from "@mdx-js/react"; import PropTypes from "prop-types"; import React from "react"; import { GridItem, Text } from "@chakra-ui/react"; -import { - PropertySignatureTable, - SectionHeading, - getInterfaceReference, - useApiDocContext, -} from "."; +import { PropertySignatureTable, useApiDocContext } from "."; import { ResponsiveGrid } from "./ResponsiveGrid"; export function ParameterTable({ canonicalReference }) { @@ -25,11 +20,10 @@ export function ParameterTable({ canonicalReference }) { Description {item.parameters.map((parameter) => { - const interfaceReference = getInterfaceReference( - parameter.type, - item, - getItem - ); + const interfaceReference = + parameter.primaryCanonicalReference?.endsWith(":interface") ? + parameter.primaryCanonicalReference + : undefined; const id = `${item.displayName.toLowerCase()}-parameters-${parameter.name.toLowerCase()}`; return ( @@ -68,7 +62,8 @@ export function ParameterTable({ canonicalReference }) { Show/hide child attributes diff --git a/docs/shared/ApiDoc/PropertySignatureTable.js b/docs/shared/ApiDoc/PropertySignatureTable.js index 40fa53b3df6..309dab9c5fc 100644 --- a/docs/shared/ApiDoc/PropertySignatureTable.js +++ b/docs/shared/ApiDoc/PropertySignatureTable.js @@ -19,6 +19,7 @@ export function PropertySignatureTable({ display = "parent", customOrder = [], idPrefix = "", + genericNames, }) { const MDX = useMDXComponents(); const getItem = useApiDocContext(); @@ -36,6 +37,29 @@ export function PropertySignatureTable({ ); } + const replaceGenericNames = React.useMemo(() => { + if (!genericNames) return (str) => str; + + const replacements = {}; + item.typeParameters.forEach((p, i) => { + if (genericNames[i] === p.name) return; + replacements[p.name] = genericNames[i]; + }); + if (!Object.values(replacements).length) return (str) => str; + + const genericReplacementRegex = new RegExp( + `\\b(${Object.keys(replacements).join("|")})\\b`, + "g" + ); + function replace(match) { + console.log({ match, replacement: replacements[match] }); + return replacements[match] || match; + } + return function replaceGenericNames(str) { + return str.replace(genericReplacementRegex, replace); + }; + }); + return ( <> {item.childrenIncomplete ? @@ -55,7 +79,7 @@ export function PropertySignatureTable({ : null} {Object.entries(groupedProperties).map( ([groupName, sortedProperties]) => ( - <> + {groupName ? {groupName} : null} @@ -79,7 +103,6 @@ export function PropertySignatureTable({ : null } suffix={property.optional ? (optional) : null} - link={!!idPrefix} id={ idPrefix ? `${idPrefix}-${property.displayName.toLowerCase()}` @@ -94,7 +117,7 @@ export function PropertySignatureTable({ parameterTypes arrow /> - : property.type} + : replaceGenericNames(property.type)} @@ -109,7 +132,7 @@ export function PropertySignatureTable({ ))} - + ) )} @@ -124,4 +147,5 @@ PropertySignatureTable.propTypes = { display: PropTypes.oneOf(["parent", "child"]), customOrder: PropTypes.arrayOf(PropTypes.string), idPrefix: PropTypes.string, + genericNames: PropTypes.arrayOf(PropTypes.string), }; diff --git a/docs/shared/ApiDoc/getInterfaceReference.js b/docs/shared/ApiDoc/getInterfaceReference.js deleted file mode 100644 index b9b9202ae92..00000000000 --- a/docs/shared/ApiDoc/getInterfaceReference.js +++ /dev/null @@ -1,8 +0,0 @@ -export function getInterfaceReference(type, item, getItem) { - const baseType = type.replace(/\b(Partial|Omit|Promise) r.text === baseType)?.canonicalReference, - false - ); - return reference?.kind === "Interface" ? reference : null; -} diff --git a/docs/shared/ApiDoc/index.js b/docs/shared/ApiDoc/index.js index 06728b10116..87e85357bbf 100644 --- a/docs/shared/ApiDoc/index.js +++ b/docs/shared/ApiDoc/index.js @@ -15,5 +15,4 @@ export { ParameterTable } from "./ParameterTable"; export { PropertyDetails } from "./PropertyDetails"; export { EnumDetails } from "./EnumDetails"; export { ManualTuple } from "./Tuple"; -export { getInterfaceReference } from "./getInterfaceReference"; export { SourceLink } from "./SourceLink"; diff --git a/netlify.toml b/netlify.toml index 67879a8b0ba..b282882484b 100644 --- a/netlify.toml +++ b/netlify.toml @@ -13,7 +13,7 @@ npm run docmodel cd ../ rm -rf monodocs - git clone https://github.com/apollographql/docs --branch main --single-branch monodocs + git clone https://github.com/apollographql/docs --branch pr/parse-ts --single-branch monodocs cd monodocs npm i cp -r ../docs local