From 08b7fa85bbfd5344e453f8e9d350ab47cac3c435 Mon Sep 17 00:00:00 2001 From: Steven Serrata Date: Tue, 27 Jan 2026 10:41:18 -0500 Subject: [PATCH] fix(theme): use import type for plugin type imports Use `import type` syntax for all type imports from the plugin package. This ensures type imports are erased at compile time and prevents webpack from attempting to process TypeScript source files. - Convert all type imports to use `import type` syntax - Keep runtime import (sampleFromSchema) from lib/ directory --- .../src/theme/ApiExplorer/Authorization/slice.ts | 2 +- .../src/theme/ApiExplorer/Body/FormBodyItem/index.tsx | 2 +- .../src/theme/ApiExplorer/Body/index.tsx | 4 ++-- .../theme/ApiExplorer/Body/resolveSchemaWithSelections.ts | 2 +- .../src/theme/ApiExplorer/ParamOptions/slice.ts | 2 +- .../src/theme/ApiExplorer/Request/index.tsx | 4 ++-- .../src/theme/ApiExplorer/Response/index.tsx | 5 ++--- .../src/theme/ApiExplorer/Server/slice.ts | 2 +- .../src/theme/ApiExplorer/buildPostmanRequest.ts | 2 +- .../src/theme/ApiExplorer/index.tsx | 2 +- .../src/theme/ApiItem/index.tsx | 2 +- .../src/theme/StatusCodes/index.tsx | 2 +- 12 files changed, 15 insertions(+), 16 deletions(-) diff --git a/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Authorization/slice.ts b/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Authorization/slice.ts index a07da6158..3f9442617 100644 --- a/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Authorization/slice.ts +++ b/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Authorization/slice.ts @@ -7,7 +7,7 @@ import { createSlice, PayloadAction } from "@reduxjs/toolkit"; import { createStorage, hashArray } from "@theme/ApiExplorer/storage-utils"; -import { +import type { SecurityRequirementObject, SecuritySchemeObject, } from "docusaurus-plugin-openapi-docs/src/openapi/types"; diff --git a/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Body/FormBodyItem/index.tsx b/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Body/FormBodyItem/index.tsx index 6536edc48..e5e35b5b9 100644 --- a/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Body/FormBodyItem/index.tsx +++ b/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Body/FormBodyItem/index.tsx @@ -11,7 +11,7 @@ import FormSelect from "@theme/ApiExplorer/FormSelect"; import FormTextInput from "@theme/ApiExplorer/FormTextInput"; import LiveApp from "@theme/ApiExplorer/LiveEditor"; import { useTypedDispatch } from "@theme/ApiItem/hooks"; -import { SchemaObject } from "docusaurus-plugin-openapi-docs/src/openapi/types"; +import type { SchemaObject } from "docusaurus-plugin-openapi-docs/src/openapi/types"; import { clearFormBodyKey, setFileFormBody, setStringFormBody } from "../slice"; import FileArrayFormBodyItem from "../FileArrayFormBodyItem"; diff --git a/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Body/index.tsx b/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Body/index.tsx index 9a052655d..8c22d88c2 100644 --- a/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Body/index.tsx +++ b/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Body/index.tsx @@ -18,8 +18,8 @@ import Markdown from "@theme/Markdown"; import SchemaTabs from "@theme/SchemaTabs"; import TabItem from "@theme/TabItem"; import { OPENAPI_BODY, OPENAPI_REQUEST } from "@theme/translationIds"; -import { RequestBodyObject } from "docusaurus-plugin-openapi-docs/src/openapi/types"; -import { sampleFromSchema } from "docusaurus-plugin-openapi-docs/src/openapi/createSchemaExample"; +import type { RequestBodyObject } from "docusaurus-plugin-openapi-docs/src/openapi/types"; +import { sampleFromSchema } from "docusaurus-plugin-openapi-docs/lib/openapi/createSchemaExample"; import format from "xml-formatter"; import { clearRawBody, setFileRawBody, setStringRawBody } from "./slice"; diff --git a/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Body/resolveSchemaWithSelections.ts b/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Body/resolveSchemaWithSelections.ts index a3774e72a..89525aac6 100644 --- a/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Body/resolveSchemaWithSelections.ts +++ b/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Body/resolveSchemaWithSelections.ts @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. * ========================================================================== */ -import { SchemaObject } from "docusaurus-plugin-openapi-docs/src/openapi/types"; +import type { SchemaObject } from "docusaurus-plugin-openapi-docs/src/openapi/types"; import merge from "lodash/merge"; export interface SchemaSelections { diff --git a/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/ParamOptions/slice.ts b/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/ParamOptions/slice.ts index 8fe7ed84f..28bbc25ff 100644 --- a/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/ParamOptions/slice.ts +++ b/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/ParamOptions/slice.ts @@ -6,7 +6,7 @@ * ========================================================================== */ import { createSlice, PayloadAction } from "@reduxjs/toolkit"; -import { ParameterObject } from "docusaurus-plugin-openapi-docs/src/openapi/types"; +import type { ParameterObject } from "docusaurus-plugin-openapi-docs/src/openapi/types"; export type Param = ParameterObject & { value?: string[] | string }; diff --git a/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Request/index.tsx b/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Request/index.tsx index 6e7086815..97c1a5782 100644 --- a/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Request/index.tsx +++ b/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Request/index.tsx @@ -27,8 +27,8 @@ import { import Server from "@theme/ApiExplorer/Server"; import { useTypedDispatch, useTypedSelector } from "@theme/ApiItem/hooks"; import { OPENAPI_REQUEST } from "@theme/translationIds"; -import { ParameterObject } from "docusaurus-plugin-openapi-docs/src/openapi/types"; -import { ApiItem } from "docusaurus-plugin-openapi-docs/src/types"; +import type { ParameterObject } from "docusaurus-plugin-openapi-docs/src/openapi/types"; +import type { ApiItem } from "docusaurus-plugin-openapi-docs/src/types"; import type { ThemeConfig } from "docusaurus-theme-openapi-docs/src/types"; import * as sdk from "postman-collection"; import { FormProvider, useForm } from "react-hook-form"; diff --git a/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Response/index.tsx b/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Response/index.tsx index 7954aa935..8b2d26e43 100644 --- a/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Response/index.tsx +++ b/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Response/index.tsx @@ -17,7 +17,7 @@ import SchemaTabs from "@theme/SchemaTabs"; import TabItem from "@theme/TabItem"; import { OPENAPI_RESPONSE } from "@theme/translationIds"; import clsx from "clsx"; -import { ApiItem } from "docusaurus-plugin-openapi-docs/src/types"; +import type { ApiItem } from "docusaurus-plugin-openapi-docs/src/types"; import type { ThemeConfig } from "docusaurus-theme-openapi-docs/src/types"; import { clearResponse, clearCode, clearHeaders } from "./slice"; @@ -47,8 +47,7 @@ function Response({ item }: { item: ApiItem }) { const { siteConfig } = useDocusaurusContext(); const themeConfig = siteConfig.themeConfig as ThemeConfig; const hideSendButton = metadata.frontMatter.hide_send_button; - const proxy = - metadata.frontMatter.proxy ?? themeConfig.api?.proxy; + const proxy = metadata.frontMatter.proxy ?? themeConfig.api?.proxy; const prismTheme = usePrismTheme(); const code = useTypedSelector((state: any) => state.response.code); const headers = useTypedSelector((state: any) => state.response.headers); diff --git a/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Server/slice.ts b/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Server/slice.ts index dc55be244..dad965da0 100644 --- a/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Server/slice.ts +++ b/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Server/slice.ts @@ -6,7 +6,7 @@ * ========================================================================== */ import { createSlice, PayloadAction } from "@reduxjs/toolkit"; -import { ServerObject } from "docusaurus-plugin-openapi-docs/src/openapi/types"; +import type { ServerObject } from "docusaurus-plugin-openapi-docs/src/openapi/types"; // TODO: we might want to export this export interface State { diff --git a/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/buildPostmanRequest.ts b/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/buildPostmanRequest.ts index b52d38d97..2b39132c7 100644 --- a/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/buildPostmanRequest.ts +++ b/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/buildPostmanRequest.ts @@ -7,7 +7,7 @@ import { AuthState, Scheme } from "@theme/ApiExplorer/Authorization/slice"; import { Body, Content } from "@theme/ApiExplorer/Body/slice"; -import { +import type { ParameterObject, ServerObject, } from "docusaurus-plugin-openapi-docs/src/openapi/types"; diff --git a/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/index.tsx b/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/index.tsx index 89a9de01c..d0e3f81b7 100644 --- a/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/index.tsx +++ b/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/index.tsx @@ -12,7 +12,7 @@ import CodeSnippets from "@theme/ApiExplorer/CodeSnippets"; import Request from "@theme/ApiExplorer/Request"; import Response from "@theme/ApiExplorer/Response"; import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes"; -import { ApiItem } from "docusaurus-plugin-openapi-docs/src/types"; +import type { ApiItem } from "docusaurus-plugin-openapi-docs/src/types"; import * as sdk from "postman-collection"; function ApiExplorer({ diff --git a/packages/docusaurus-theme-openapi-docs/src/theme/ApiItem/index.tsx b/packages/docusaurus-theme-openapi-docs/src/theme/ApiItem/index.tsx index 0020ea602..d6a412332 100644 --- a/packages/docusaurus-theme-openapi-docs/src/theme/ApiItem/index.tsx +++ b/packages/docusaurus-theme-openapi-docs/src/theme/ApiItem/index.tsx @@ -22,7 +22,7 @@ import type { Props } from "@theme/DocItem"; import DocItemMetadata from "@theme/DocItem/Metadata"; import SkeletonLoader from "@theme/SkeletonLoader"; import clsx from "clsx"; -import { +import type { ParameterObject, ServerObject, } from "docusaurus-plugin-openapi-docs/src/openapi/types"; diff --git a/packages/docusaurus-theme-openapi-docs/src/theme/StatusCodes/index.tsx b/packages/docusaurus-theme-openapi-docs/src/theme/StatusCodes/index.tsx index 82f2d3ac6..a47afbc8f 100644 --- a/packages/docusaurus-theme-openapi-docs/src/theme/StatusCodes/index.tsx +++ b/packages/docusaurus-theme-openapi-docs/src/theme/StatusCodes/index.tsx @@ -15,7 +15,7 @@ import ResponseHeaders from "@theme/ResponseHeaders"; import ResponseSchema from "@theme/ResponseSchema"; import TabItem from "@theme/TabItem"; import { OPENAPI_STATUS_CODES } from "@theme/translationIds"; -import { ApiItem } from "docusaurus-plugin-openapi-docs/src/types"; +import type { ApiItem } from "docusaurus-plugin-openapi-docs/src/types"; interface Props { id?: string;