Skip to content

Commit 3c5d387

Browse files
authored
fix(theme): use import type for plugin type imports (#1292)
Fix webpack build error caused by importing TypeScript source files from the plugin's src/ directory without proper transpilation. Changes: - Add `import type` to all type imports from plugin src/ directories - Move runtime import (sampleFromSchema) to use plugin's lib/ directory - Re-export SchemaObject from plugin in theme's types.d.ts for consistency Type-only imports are erased during TypeScript compilation, so they don't require webpack to process the source TypeScript files.
1 parent f5829b8 commit 3c5d387

File tree

20 files changed

+39
-85
lines changed

20 files changed

+39
-85
lines changed

packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Authorization/slice.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
99
import { createStorage, hashArray } from "@theme/ApiExplorer/storage-utils";
10-
import {
10+
import type {
1111
SecurityRequirementObject,
1212
SecuritySchemeObject,
1313
} from "docusaurus-plugin-openapi-docs/src/openapi/types";

packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Body/FileArrayFormBodyItem/index.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
* ========================================================================== */
77

88
import React, { useState } from "react";
9+
910
import FormFileUpload from "@theme/ApiExplorer/FormFileUpload";
1011
import { useTypedDispatch } from "@theme/ApiItem/hooks";
12+
1113
import { FileContent, setFileArrayFormBody } from "../slice";
1214

1315
interface FileArrayFormItemProps {

packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Body/FormBodyItem/index.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,16 @@
66
* ========================================================================== */
77

88
import React from "react";
9+
910
import FormFileUpload from "@theme/ApiExplorer/FormFileUpload";
1011
import FormSelect from "@theme/ApiExplorer/FormSelect";
1112
import FormTextInput from "@theme/ApiExplorer/FormTextInput";
1213
import LiveApp from "@theme/ApiExplorer/LiveEditor";
1314
import { useTypedDispatch } from "@theme/ApiItem/hooks";
14-
import { SchemaObject } from "docusaurus-plugin-openapi-docs/src/openapi/types";
15-
import { clearFormBodyKey, setFileFormBody, setStringFormBody } from "../slice";
15+
import type { SchemaObject } from "docusaurus-plugin-openapi-docs/src/openapi/types";
16+
1617
import FileArrayFormBodyItem from "../FileArrayFormBodyItem";
18+
import { clearFormBodyKey, setFileFormBody, setStringFormBody } from "../slice";
1719

1820
interface FormBodyItemProps {
1921
schemaObject: SchemaObject;

packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Body/index.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import React, { useEffect, useMemo } from "react";
99

1010
import { translate } from "@docusaurus/Translate";
11-
1211
import json2xml from "@theme/ApiExplorer/Body/json2xml";
1312
import FormFileUpload from "@theme/ApiExplorer/FormFileUpload";
1413
import FormItem from "@theme/ApiExplorer/FormItem";
@@ -18,13 +17,13 @@ import Markdown from "@theme/Markdown";
1817
import SchemaTabs from "@theme/SchemaTabs";
1918
import TabItem from "@theme/TabItem";
2019
import { OPENAPI_BODY, OPENAPI_REQUEST } from "@theme/translationIds";
21-
import { RequestBodyObject } from "docusaurus-plugin-openapi-docs/src/openapi/types";
22-
import { sampleFromSchema } from "docusaurus-plugin-openapi-docs/src/openapi/createSchemaExample";
20+
import { sampleFromSchema } from "docusaurus-plugin-openapi-docs/lib/openapi/createSchemaExample";
21+
import type { RequestBodyObject } from "docusaurus-plugin-openapi-docs/src/openapi/types";
2322
import format from "xml-formatter";
2423

25-
import { clearRawBody, setFileRawBody, setStringRawBody } from "./slice";
2624
import FormBodyItem from "./FormBodyItem";
2725
import { resolveSchemaWithSelections } from "./resolveSchemaWithSelections";
26+
import { clearRawBody, setFileRawBody, setStringRawBody } from "./slice";
2827

2928
export interface Props {
3029
jsonRequestBodyExample: string;

packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Body/resolveSchemaWithSelections.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* LICENSE file in the root directory of this source tree.
66
* ========================================================================== */
77

8-
import { SchemaObject } from "docusaurus-plugin-openapi-docs/src/openapi/types";
8+
import type { SchemaObject } from "docusaurus-plugin-openapi-docs/src/openapi/types";
99
import merge from "lodash/merge";
1010

1111
export interface SchemaSelections {

packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/FormItem/index.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import React from "react";
99

1010
import { translate } from "@docusaurus/Translate";
1111
import { OPENAPI_SCHEMA_ITEM } from "@theme/translationIds";
12-
1312
import clsx from "clsx";
1413

1514
export interface Props {

packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/ParamOptions/slice.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* ========================================================================== */
77

88
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
9-
import { ParameterObject } from "docusaurus-plugin-openapi-docs/src/openapi/types";
9+
import type { ParameterObject } from "docusaurus-plugin-openapi-docs/src/openapi/types";
1010

1111
export type Param = ParameterObject & { value?: string[] | string };
1212

packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Request/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ import {
2727
import Server from "@theme/ApiExplorer/Server";
2828
import { useTypedDispatch, useTypedSelector } from "@theme/ApiItem/hooks";
2929
import { OPENAPI_REQUEST } from "@theme/translationIds";
30-
import { ParameterObject } from "docusaurus-plugin-openapi-docs/src/openapi/types";
31-
import { ApiItem } from "docusaurus-plugin-openapi-docs/src/types";
30+
import type { ParameterObject } from "docusaurus-plugin-openapi-docs/src/openapi/types";
31+
import type { ApiItem } from "docusaurus-plugin-openapi-docs/src/types";
3232
import type { ThemeConfig } from "docusaurus-theme-openapi-docs/src/types";
3333
import * as sdk from "postman-collection";
3434
import { FormProvider, useForm } from "react-hook-form";

packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Response/index.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import SchemaTabs from "@theme/SchemaTabs";
1717
import TabItem from "@theme/TabItem";
1818
import { OPENAPI_RESPONSE } from "@theme/translationIds";
1919
import clsx from "clsx";
20-
import { ApiItem } from "docusaurus-plugin-openapi-docs/src/types";
20+
import type { ApiItem } from "docusaurus-plugin-openapi-docs/src/types";
2121
import type { ThemeConfig } from "docusaurus-theme-openapi-docs/src/types";
2222

2323
import { clearResponse, clearCode, clearHeaders } from "./slice";
@@ -47,8 +47,7 @@ function Response({ item }: { item: ApiItem }) {
4747
const { siteConfig } = useDocusaurusContext();
4848
const themeConfig = siteConfig.themeConfig as ThemeConfig;
4949
const hideSendButton = metadata.frontMatter.hide_send_button;
50-
const proxy =
51-
metadata.frontMatter.proxy ?? themeConfig.api?.proxy;
50+
const proxy = metadata.frontMatter.proxy ?? themeConfig.api?.proxy;
5251
const prismTheme = usePrismTheme();
5352
const code = useTypedSelector((state: any) => state.response.code);
5453
const headers = useTypedSelector((state: any) => state.response.headers);

packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/SecuritySchemes/index.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,10 @@
77

88
import React from "react";
99

10-
import { translate } from "@docusaurus/Translate";
11-
import { OPENAPI_SECURITY_SCHEMES } from "@theme/translationIds";
12-
1310
import Link from "@docusaurus/Link";
11+
import { translate } from "@docusaurus/Translate";
1412
import { useTypedSelector } from "@theme/ApiItem/hooks";
13+
import { OPENAPI_SECURITY_SCHEMES } from "@theme/translationIds";
1514

1615
function SecuritySchemes(props: any) {
1716
const options = useTypedSelector((state: any) => state.auth.options);

0 commit comments

Comments
 (0)