nextjs-swagger-autogen
Version:
Auto-generate Swagger documentation for Next.js API routes
71 lines (70 loc) • 2.8 kB
JavaScript
;
"use client";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ReactSwagger = void 0;
const jsx_runtime_1 = require("react/jsx-runtime");
const react_1 = require("react");
const swagger_ui_react_1 = __importDefault(require("swagger-ui-react"));
const ReactSwagger = ({ spec, docExpansion = "list", defaultModelsExpandDepth = 1, defaultModelRendering = "example", displayOperationId = false, displayRequestDuration = false, filter = false, showExtensions = false, showCommonExtensions = false, tryItOutEnabled = true, supportedSubmitMethods = ["get", "post", "put", "delete", "patch"], validatorUrl = null, withCredentials = false, persistAuthorization = false, deepLinking = true, onComplete, requestInterceptor, responseInterceptor, ...props }) => {
const memoizedSpec = (0, react_1.useMemo)(() => spec, [spec]);
const swaggerConfig = (0, react_1.useMemo)(() => ({
spec: memoizedSpec,
docExpansion,
defaultModelsExpandDepth,
defaultModelRendering,
displayOperationId,
displayRequestDuration,
filter,
showExtensions,
showCommonExtensions,
tryItOutEnabled,
validatorUrl,
withCredentials,
persistAuthorization,
deepLinking,
onComplete,
requestInterceptor,
responseInterceptor,
showMutatedRequest: true,
...props,
}), [
memoizedSpec,
docExpansion,
defaultModelsExpandDepth,
defaultModelRendering,
displayOperationId,
displayRequestDuration,
filter,
showExtensions,
showCommonExtensions,
tryItOutEnabled,
validatorUrl,
withCredentials,
persistAuthorization,
deepLinking,
onComplete,
requestInterceptor,
responseInterceptor,
props,
]);
const handleComplete = (0, react_1.useCallback)(() => {
const originalConsoleWarn = console.warn;
console.warn = (...args) => {
if (args[0] &&
typeof args[0] === "string" &&
(args[0].includes("UNSAFE_componentWillReceiveProps") ||
args[0].includes("componentWillReceiveProps"))) {
return;
}
originalConsoleWarn.apply(console, args);
};
if (onComplete) {
onComplete();
}
}, [onComplete]);
return ((0, jsx_runtime_1.jsx)("div", { style: { display: "grid" }, children: (0, jsx_runtime_1.jsx)(swagger_ui_react_1.default, { ...swaggerConfig, onComplete: handleComplete }) }));
};
exports.ReactSwagger = ReactSwagger;