diff --git a/packages/website/src/DocModel/ApiNodeJSONEncoder.ts b/packages/website/src/DocModel/ApiNodeJSONEncoder.ts
index 4bfc9febd..36e4a57c4 100644
--- a/packages/website/src/DocModel/ApiNodeJSONEncoder.ts
+++ b/packages/website/src/DocModel/ApiNodeJSONEncoder.ts
@@ -1,36 +1,36 @@
import {
- ApiModel,
+ type ApiModel,
ApiDeclaredItem,
- ApiPropertyItem,
- ApiMethod,
- ApiParameterListMixin,
- ApiTypeParameterListMixin,
- ApiClass,
- ApiFunction,
+ type ApiPropertyItem,
+ type ApiMethod,
+ type ApiParameterListMixin,
+ type ApiTypeParameterListMixin,
+ type ApiClass,
+ type ApiFunction,
ApiItemKind,
- ApiTypeAlias,
- ApiEnum,
- ApiInterface,
- ApiMethodSignature,
- ApiPropertySignature,
- ApiVariable,
- ApiItem,
- ApiConstructor,
- ApiItemContainerMixin,
+ type ApiTypeAlias,
+ type ApiEnum,
+ type ApiInterface,
+ type ApiMethodSignature,
+ type ApiPropertySignature,
+ type ApiVariable,
+ type ApiItem,
+ type ApiConstructor,
+ type ApiItemContainerMixin,
} from '@microsoft/api-extractor-model';
import { generateTypeParamData } from './TypeParameterMixin';
import { Visibility } from './Visibility';
import { createCommentNode } from './comment';
import type { DocBlockJSON } from './comment/CommentBlock';
import type { AnyDocNodeJSON } from './comment/CommentNode';
-import { DocNodeContainerJSON, nodeContainer } from './comment/CommentNodeContainer';
+import { type DocNodeContainerJSON, nodeContainer } from './comment/CommentNodeContainer';
import {
generatePath,
genParameter,
genReference,
genToken,
resolveName,
- TokenDocumentation,
+ type TokenDocumentation,
} from '~/util/parse.server';
export interface ReferenceData {
diff --git a/packages/website/src/DocModel/TypeParameterMixin.ts b/packages/website/src/DocModel/TypeParameterMixin.ts
index 075d642b1..45f90a254 100644
--- a/packages/website/src/DocModel/TypeParameterMixin.ts
+++ b/packages/website/src/DocModel/TypeParameterMixin.ts
@@ -1,6 +1,6 @@
import type { ApiItem, ApiModel, TypeParameter } from '@microsoft/api-extractor-model';
-import { block, DocBlockJSON } from './comment/CommentBlock';
-import { genToken, TokenDocumentation } from '~/util/parse.server';
+import { block, type DocBlockJSON } from './comment/CommentBlock';
+import { genToken, type TokenDocumentation } from '~/util/parse.server';
export interface TypeParameterData {
name: string;
diff --git a/packages/website/src/DocModel/comment/CommentBlock.ts b/packages/website/src/DocModel/comment/CommentBlock.ts
index 408d13ae6..5dea2609b 100644
--- a/packages/website/src/DocModel/comment/CommentBlock.ts
+++ b/packages/website/src/DocModel/comment/CommentBlock.ts
@@ -1,8 +1,8 @@
import type { ApiModel, ApiItem } from '@microsoft/api-extractor-model';
import type { DocBlock } from '@microsoft/tsdoc';
import { createCommentNode } from '.';
-import { blockTag, DocBlockTagJSON } from './CommentBlockTag';
-import { AnyDocNodeJSON, DocNodeJSON, node } from './CommentNode';
+import { blockTag, type DocBlockTagJSON } from './CommentBlockTag';
+import { type AnyDocNodeJSON, type DocNodeJSON, node } from './CommentNode';
export interface DocBlockJSON extends DocNodeJSON {
content: AnyDocNodeJSON[];
diff --git a/packages/website/src/DocModel/comment/CommentCodeSpan.ts b/packages/website/src/DocModel/comment/CommentCodeSpan.ts
index 450656318..94b176639 100644
--- a/packages/website/src/DocModel/comment/CommentCodeSpan.ts
+++ b/packages/website/src/DocModel/comment/CommentCodeSpan.ts
@@ -1,5 +1,5 @@
import type { DocCodeSpan } from '@microsoft/tsdoc';
-import { DocNodeJSON, node } from './CommentNode';
+import { type DocNodeJSON, node } from './CommentNode';
export interface DocCodeSpanJSON extends DocNodeJSON {
code: string;
diff --git a/packages/website/src/DocModel/comment/CommentNodeContainer.ts b/packages/website/src/DocModel/comment/CommentNodeContainer.ts
index 90a4eddbd..115f529c2 100644
--- a/packages/website/src/DocModel/comment/CommentNodeContainer.ts
+++ b/packages/website/src/DocModel/comment/CommentNodeContainer.ts
@@ -1,7 +1,7 @@
import type { ApiItem, ApiModel } from '@microsoft/api-extractor-model';
import type { DocNodeContainer } from '@microsoft/tsdoc';
import { createCommentNode } from '.';
-import { AnyDocNodeJSON, DocNodeJSON, node } from './CommentNode';
+import { type AnyDocNodeJSON, type DocNodeJSON, node } from './CommentNode';
export interface DocNodeContainerJSON extends DocNodeJSON {
nodes: AnyDocNodeJSON[];
diff --git a/packages/website/src/DocModel/comment/FencedCodeCommentNode.ts b/packages/website/src/DocModel/comment/FencedCodeCommentNode.ts
index 5cc8edd3f..254ece190 100644
--- a/packages/website/src/DocModel/comment/FencedCodeCommentNode.ts
+++ b/packages/website/src/DocModel/comment/FencedCodeCommentNode.ts
@@ -1,5 +1,5 @@
import type { DocFencedCode } from '@microsoft/tsdoc';
-import { DocNodeJSON, node } from './CommentNode';
+import { type DocNodeJSON, node } from './CommentNode';
export interface DocFencedCodeJSON extends DocNodeJSON {
code: string;
diff --git a/packages/website/src/DocModel/comment/LinkTagCommentNode.ts b/packages/website/src/DocModel/comment/LinkTagCommentNode.ts
index e5921abce..65e50a89e 100644
--- a/packages/website/src/DocModel/comment/LinkTagCommentNode.ts
+++ b/packages/website/src/DocModel/comment/LinkTagCommentNode.ts
@@ -1,8 +1,14 @@
import type { ApiItem, ApiModel } from '@microsoft/api-extractor-model';
import type { DocDeclarationReference, DocLinkTag } from '@microsoft/tsdoc';
-import { DocNodeJSON, node } from './CommentNode';
+import { type DocNodeJSON, node } from './CommentNode';
import { generatePath, resolveName } from '~/util/parse.server';
+interface LinkTagCodeLink {
+ name: string;
+ kind: string;
+ path: string;
+}
+
export interface DocLinkTagJSON extends DocNodeJSON {
text: string | null;
codeDestination: LinkTagCodeLink | null;
@@ -28,12 +34,6 @@ export function genToken(
};
}
-export interface LinkTagCodeLink {
- name: string;
- kind: string;
- path: string;
-}
-
export function linkTagNode(
linkNode: DocLinkTag,
model: ApiModel,
diff --git a/packages/website/src/DocModel/comment/ParamBlock.ts b/packages/website/src/DocModel/comment/ParamBlock.ts
index a9558a14f..f564255c7 100644
--- a/packages/website/src/DocModel/comment/ParamBlock.ts
+++ b/packages/website/src/DocModel/comment/ParamBlock.ts
@@ -1,8 +1,8 @@
import type { ApiItem, ApiModel } from '@microsoft/api-extractor-model';
import type { DocParamBlock } from '@microsoft/tsdoc';
-import { block, DocBlockJSON } from './CommentBlock';
+import { block, type DocBlockJSON } from './CommentBlock';
-export interface DocParamBlockJSON extends DocBlockJSON {
+interface DocParamBlockJSON extends DocBlockJSON {
name: string;
}
diff --git a/packages/website/src/DocModel/comment/PlainTextCommentNode.ts b/packages/website/src/DocModel/comment/PlainTextCommentNode.ts
index 7f1217748..00774b1d1 100644
--- a/packages/website/src/DocModel/comment/PlainTextCommentNode.ts
+++ b/packages/website/src/DocModel/comment/PlainTextCommentNode.ts
@@ -1,5 +1,5 @@
import type { DocPlainText } from '@microsoft/tsdoc';
-import { DocNodeJSON, node } from './CommentNode';
+import { type DocNodeJSON, node } from './CommentNode';
export interface DocPlainTextJSON extends DocNodeJSON {
text: string;
diff --git a/packages/website/src/DocModel/comment/RootComment.ts b/packages/website/src/DocModel/comment/RootComment.ts
index 7564e0aa7..a8ee9a1f1 100644
--- a/packages/website/src/DocModel/comment/RootComment.ts
+++ b/packages/website/src/DocModel/comment/RootComment.ts
@@ -1,8 +1,8 @@
import type { ApiItem, ApiModel } from '@microsoft/api-extractor-model';
import type { DocComment } from '@microsoft/tsdoc';
import { createCommentNode } from '.';
-import { block, DocBlockJSON } from './CommentBlock';
-import { DocNodeJSON, node } from './CommentNode';
+import { block, type DocBlockJSON } from './CommentBlock';
+import { type DocNodeJSON, node } from './CommentNode';
export interface DocCommentJSON extends DocNodeJSON {
summary: DocNodeJSON[];
diff --git a/packages/website/src/DocModel/comment/index.ts b/packages/website/src/DocModel/comment/index.ts
index 8443bd83b..6c4042594 100644
--- a/packages/website/src/DocModel/comment/index.ts
+++ b/packages/website/src/DocModel/comment/index.ts
@@ -7,9 +7,9 @@ import {
type DocFencedCode,
DocNodeKind,
type DocBlock,
- DocComment,
- DocCodeSpan,
- DocParamBlock,
+ type DocComment,
+ type DocCodeSpan,
+ type DocParamBlock,
} from '@microsoft/tsdoc';
import { block } from './CommentBlock';
import { codeSpan } from './CommentCodeSpan';
diff --git a/packages/website/src/components/DocContainer.tsx b/packages/website/src/components/DocContainer.tsx
index 61c8400df..6c7f7be36 100644
--- a/packages/website/src/components/DocContainer.tsx
+++ b/packages/website/src/components/DocContainer.tsx
@@ -23,7 +23,7 @@ import type { TypeParameterData } from '~/DocModel/TypeParameterMixin';
import type { AnyDocNodeJSON } from '~/DocModel/comment/CommentNode';
import type { TokenDocumentation } from '~/util/parse.server';
-export interface DocContainerProps {
+interface DocContainerProps {
name: string;
kind: string;
excerpt: string;
diff --git a/packages/website/src/components/MethodItem.tsx b/packages/website/src/components/MethodItem.tsx
index effa41993..9036455bc 100644
--- a/packages/website/src/components/MethodItem.tsx
+++ b/packages/website/src/components/MethodItem.tsx
@@ -6,9 +6,7 @@ import { TSDoc } from './tsdoc/TSDoc';
import type { ApiMethodJSON, ApiMethodSignatureJSON } from '~/DocModel/ApiNodeJSONEncoder';
import { Visibility } from '~/DocModel/Visibility';
-type MethodResolvable = ApiMethodJSON | ApiMethodSignatureJSON;
-
-function getShorthandName(data: MethodResolvable) {
+function getShorthandName(data: ApiMethodJSON | ApiMethodSignatureJSON) {
return `${data.name}${data.optional ? '?' : ''}(${data.parameters.reduce((prev, cur, index) => {
if (index === 0) {
return `${prev}${cur.isOptional ? `${cur.name}?` : cur.name}`;
@@ -18,7 +16,7 @@ function getShorthandName(data: MethodResolvable) {
}, '')})`;
}
-export function MethodItem({ data }: { data: MethodResolvable }) {
+export function MethodItem({ data }: { data: ApiMethodJSON | ApiMethodSignatureJSON }) {
const method = data as ApiMethodJSON;
return (
diff --git a/packages/website/src/components/ParameterTable.tsx b/packages/website/src/components/ParameterTable.tsx
index 75f3d6b54..d5a1cb50d 100644
--- a/packages/website/src/components/ParameterTable.tsx
+++ b/packages/website/src/components/ParameterTable.tsx
@@ -4,6 +4,11 @@ import { Table } from './Table';
import { TSDoc } from './tsdoc/TSDoc';
import type { ParameterDocumentation } from '~/util/parse.server';
+const columnStyles = {
+ Name: 'font-mono whitespace-nowrap',
+ Type: 'font-mono whitespace-pre-wrap break-normal',
+};
+
export function ParameterTable({ data }: { data: ParameterDocumentation[] }) {
const rows = data.map((param) => ({
Name: param.name,
@@ -12,11 +17,6 @@ export function ParameterTable({ data }: { data: ParameterDocumentation[] }) {
Description: param.paramCommentBlock ? : 'None',
}));
- const columnStyles = {
- Name: 'font-mono whitespace-nowrap',
- Type: 'font-mono whitespace-pre-wrap break-normal',
- };
-
return (
diff --git a/packages/website/src/components/Section.tsx b/packages/website/src/components/Section.tsx
index 3864807b9..83202e8b4 100644
--- a/packages/website/src/components/Section.tsx
+++ b/packages/website/src/components/Section.tsx
@@ -8,7 +8,7 @@ import {
Text,
useMantineColorScheme,
} from '@mantine/core';
-import { type ReactNode, useState } from 'react';
+import { type ReactNode, useState, useEffect } from 'react';
import { VscChevronDown } from 'react-icons/vsc';
const useStyles = createStyles((theme, { opened }: { opened: boolean }) => ({
@@ -51,6 +51,11 @@ export function Section({
const { colorScheme } = useMantineColorScheme();
const { classes } = useStyles({ opened });
+ useEffect(() => {
+ setOpened(!defaultClosed);
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, []);
+
return (
setOpened((o) => !o)}>
diff --git a/packages/website/src/components/Sections.tsx b/packages/website/src/components/Sections.tsx
index 7ed93534a..9ef38d7ae 100644
--- a/packages/website/src/components/Sections.tsx
+++ b/packages/website/src/components/Sections.tsx
@@ -1,7 +1,6 @@
import { Stack, Group, Badge, Title } from '@mantine/core';
import { useMediaQuery } from '@mantine/hooks';
import { VscSymbolConstant, VscSymbolMethod, VscSymbolProperty } from 'react-icons/vsc';
-
import { MethodList } from './MethodList';
import { ParameterTable } from './ParameterTable';
import { PropertyList } from './PropertyList';
diff --git a/packages/website/src/components/SidebarLayout.tsx b/packages/website/src/components/SidebarLayout.tsx
index c184325c5..5e542e1ae 100644
--- a/packages/website/src/components/SidebarLayout.tsx
+++ b/packages/website/src/components/SidebarLayout.tsx
@@ -27,7 +27,7 @@ import type { MDXRemoteSerializeResult } from 'next-mdx-remote';
import Image from 'next/future/image';
import Link from 'next/link';
import { useRouter } from 'next/router';
-import { type PropsWithChildren, useState } from 'react';
+import { type PropsWithChildren, useState, useEffect } from 'react';
import { VscChevronDown, VscGithubInverted, VscPackage, VscVersions } from 'react-icons/vsc';
import { WiDaySunny, WiNightClear } from 'react-icons/wi';
import useSWR from 'swr';
@@ -99,6 +99,12 @@ const libraries = [
{ label: 'ws', value: 'ws' },
];
+const libraryMenuItems = libraries.map((item) => (
+
+ {item.label}
+
+));
+
export function SidebarLayout({
packageName,
branchName,
@@ -117,13 +123,13 @@ export function SidebarLayout({
const [openedLibPicker, setOpenedLibPicker] = useState(false);
const [openedVersionPicker, setOpenedVersionPicker] = useState(false);
- const { classes } = useStyles({ openedLib: openedLibPicker, openedVersion: openedVersionPicker });
+ useEffect(() => {
+ setOpened(false);
+ setOpenedLibPicker(false);
+ setOpenedVersionPicker(false);
+ }, []);
- const libraryMenuItems = libraries.map((item) => (
-
- {item.label}
-
- ));
+ const { classes } = useStyles({ openedLib: openedLibPicker, openedVersion: openedVersionPicker });
const versionMenuItems =
versions?.map((item) => (
diff --git a/packages/website/src/components/TypeParamTable.tsx b/packages/website/src/components/TypeParamTable.tsx
index ceafefb75..580b4794e 100644
--- a/packages/website/src/components/TypeParamTable.tsx
+++ b/packages/website/src/components/TypeParamTable.tsx
@@ -4,6 +4,12 @@ import { Table } from './Table';
import { TSDoc } from './tsdoc/TSDoc';
import type { TypeParameterData } from '~/DocModel/TypeParameterMixin';
+const rowElements = {
+ Name: 'font-mono whitespace-nowrap',
+ Constraints: 'font-mono whitespace-pre break-normal',
+ Default: 'font-mono whitespace-pre break-normal',
+};
+
export function TypeParamTable({ data }: { data: TypeParameterData[] }) {
const rows = data.map((typeParam) => ({
Name: typeParam.name,
@@ -13,12 +19,6 @@ export function TypeParamTable({ data }: { data: TypeParameterData[] }) {
Description: typeParam.commentBlock ? : 'None',
}));
- const rowElements = {
- Name: 'font-mono whitespace-nowrap',
- Constraints: 'font-mono whitespace-pre break-normal',
- Default: 'font-mono whitespace-pre break-normal',
- };
-
return (
{title}
@@ -17,18 +12,13 @@ export function Block({ children, title }: BlockProps) {
);
}
-export interface BlockCommentProps {
- tagName: string;
- children: ReactNode;
- index?: number | undefined;
-}
-
-export interface ExampleBlockProps {
+export function ExampleBlock({
+ children,
+ exampleIndex,
+}: {
children: ReactNode;
exampleIndex?: number | undefined;
-}
-
-export function ExampleBlock({ children, exampleIndex }: ExampleBlockProps): JSX.Element {
+}): JSX.Element {
return {children};
}
@@ -48,7 +38,15 @@ export function RemarksBlock({ children }: { children: ReactNode }): JSX.Element
return {children};
}
-export function BlockComment({ children, tagName, index }: BlockCommentProps): JSX.Element {
+export function BlockComment({
+ children,
+ tagName,
+ index,
+}: {
+ tagName: string;
+ children: ReactNode;
+ index?: number | undefined;
+}): JSX.Element {
switch (tagName.toUpperCase()) {
case StandardTags.example.tagNameWithUpperCase:
return {children};
diff --git a/packages/website/src/pages/_app.tsx b/packages/website/src/pages/_app.tsx
index 889440d76..cbf08293c 100644
--- a/packages/website/src/pages/_app.tsx
+++ b/packages/website/src/pages/_app.tsx
@@ -1,6 +1,6 @@
import { ColorScheme, ColorSchemeProvider, MantineProvider } from '@mantine/core';
import { useColorScheme } from '@mantine/hooks';
-import { SpotlightAction, SpotlightProvider } from '@mantine/spotlight';
+import { type SpotlightAction, SpotlightProvider } from '@mantine/spotlight';
import type { AppProps } from 'next/app';
import Head from 'next/head';
import { type NextRouter, useRouter } from 'next/router';
diff --git a/packages/website/src/pages/_document.tsx b/packages/website/src/pages/_document.tsx
index 452d086dd..c95a42da3 100644
--- a/packages/website/src/pages/_document.tsx
+++ b/packages/website/src/pages/_document.tsx
@@ -1,5 +1,5 @@
import { createStylesServer, ServerStyles } from '@mantine/next';
-import Document, { Html, Head, Main, NextScript, DocumentContext, DocumentInitialProps } from 'next/document';
+import Document, { Html, Head, Main, NextScript, type DocumentContext, type DocumentInitialProps } from 'next/document';
const stylesServer = createStylesServer();
diff --git a/packages/website/src/pages/docs/[...slug].tsx b/packages/website/src/pages/docs/[...slug].tsx
index 47c394e48..38a9de0ff 100644
--- a/packages/website/src/pages/docs/[...slug].tsx
+++ b/packages/website/src/pages/docs/[...slug].tsx
@@ -2,7 +2,7 @@ import { readFile } from 'node:fs/promises';
import { join } from 'node:path';
import { Affix, Box, Button, LoadingOverlay, Transition } from '@mantine/core';
import { useMediaQuery, useWindowScroll } from '@mantine/hooks';
-import { ApiFunction, ApiPackage } from '@microsoft/api-extractor-model';
+import { ApiFunction, type ApiPackage } from '@microsoft/api-extractor-model';
import { MDXRemote } from 'next-mdx-remote';
import { serialize } from 'next-mdx-remote/serialize';
import Head from 'next/head';
@@ -175,7 +175,6 @@ export const getStaticProps: GetStaticProps = async ({ params }) => {
memberName && containerKey ? findMemberByKey(model, packageName, containerKey, branchName) ?? null : null,
source: mdxSource,
},
- key: `${memberName ?? 'index'}-${branchName}`,
revalidate: 3600,
},
};
diff --git a/packages/website/src/util/api-model.server.ts b/packages/website/src/util/api-model.server.ts
index b7f9aa805..c6a797b1b 100644
--- a/packages/website/src/util/api-model.server.ts
+++ b/packages/website/src/util/api-model.server.ts
@@ -1,6 +1,6 @@
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
-import { ApiItem, ApiModel, ApiPackage } from '~/util/api-extractor.server';
+import { ApiItem, ApiModel, type ApiPackage } from '~/util/api-extractor.server';
import { TSDocConfigFile } from '~/util/tsdoc-config.server';
import { TSDocConfiguration } from '~/util/tsdoc.server';
diff --git a/packages/website/src/util/parse.server.ts b/packages/website/src/util/parse.server.ts
index 10ea0ed0c..077efe63f 100644
--- a/packages/website/src/util/parse.server.ts
+++ b/packages/website/src/util/parse.server.ts
@@ -10,10 +10,10 @@ import {
type ApiPropertyItem,
type ExcerptToken,
type Parameter,
- ApiFunction,
+ type ApiFunction,
} from '@microsoft/api-extractor-model';
import type { DocNode, DocParagraph, DocPlainText } from '@microsoft/tsdoc';
-import { Meaning, ModuleSource } from '@microsoft/tsdoc/lib-commonjs/beta/DeclarationReference';
+import { type Meaning, ModuleSource } from '@microsoft/tsdoc/lib-commonjs/beta/DeclarationReference';
import { createCommentNode } from '~/DocModel/comment';
import type { DocBlockJSON } from '~/DocModel/comment/CommentBlock';