{"version":3,"sources":["jsdelivr-header.js","/npm/@umijs/max-plugin-openapi@2.0.3/dist/index.js"],"names":[],"mappings":"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","file":"/npm/@umijs/max-plugin-openapi@2.0.3/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@umijs/max-plugin-openapi@2.0.3/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst openapi_1 = require(\"@umijs/openapi\");\nconst fs_1 = require(\"fs\");\nconst path_1 = require(\"path\");\nconst rimraf_1 = __importDefault(require(\"rimraf\"));\nconst serve_static_1 = __importDefault(require(\"serve-static\"));\nconst plugin_utils_1 = require(\"umi/plugin-utils\");\nexports.default = (api) => {\n    api.onStart(() => {\n        console.log('Using openapi Plugin');\n    });\n    api.describe({\n        key: 'openAPI',\n        config: {\n            schema(joi) {\n                const itemSchema = joi.object({\n                    requestLibPath: joi.string(),\n                    schemaPath: joi.string(),\n                    mock: joi.boolean(),\n                    projectName: joi.string(),\n                    apiPrefix: joi.alternatives(joi.string(), joi.function()),\n                    namespace: joi.string(),\n                    hook: joi.object({\n                        customFunctionName: joi.function(),\n                        customClassName: joi.function(),\n                    }),\n                });\n                return joi.alternatives(joi.array().items(itemSchema), itemSchema);\n            },\n        },\n        enableBy: api.EnableBy.config,\n    });\n    const { absNodeModulesPath, absTmpPath } = api.paths;\n    const openAPIFilesPath = (0, path_1.join)(absNodeModulesPath, 'umi_open_api');\n    try {\n        if ((0, fs_1.existsSync)(openAPIFilesPath)) {\n            rimraf_1.default.sync(openAPIFilesPath);\n        }\n        (0, fs_1.mkdirSync)((0, path_1.join)(openAPIFilesPath));\n    }\n    catch (error) {\n        // console.log(error);\n    }\n    // 增加中间件\n    api.addBeforeMiddlewares(() => {\n        return [(0, serve_static_1.default)(openAPIFilesPath)];\n    });\n    api.onGenerateFiles(() => {\n        var _a;\n        if (api.env !== 'development')\n            return;\n        const openAPIConfig = api.config.openAPI;\n        const arrayConfig = plugin_utils_1.lodash.flatten([openAPIConfig]);\n        const config = ((_a = arrayConfig === null || arrayConfig === void 0 ? void 0 : arrayConfig[0]) === null || _a === void 0 ? void 0 : _a.projectName) || 'openapi';\n        api.writeTmpFile({\n            path: (0, path_1.join)('plugin-openapi', 'openapi.tsx'),\n            noPluginDir: true,\n            content: `\n      // This file is generated by Umi automatically\n      // DO NOT CHANGE IT MANUALLY!\n      import { useEffect, useState } from 'react';\n      import { SwaggerUIBundle } from 'swagger-ui-dist';\n      import 'swagger-ui-dist/swagger-ui.css';\n      const App = () => {\n        const [value, setValue] = useState(\"${config || 'openapi'}\" );\n        useEffect(() => {\n          SwaggerUIBundle({\n            url: \\`/umi-plugins_$\\{value}.json\\`,\n            dom_id: '#swagger-ui',\n          });\n        }, [value]);\n\n        return (\n          <div\n            style={{\n              padding: 24,\n            }}\n          >\n            <select\n              style={{\n                position: \"fixed\",\n                right: \"16px\",\n                top: \"8px\",\n              }}\n              onChange={(e) => setValue(e.target.value)}\n            >\n              ${arrayConfig\n                .map((item) => {\n                return `<option value=\"${item.projectName || 'openapi'}\">${item.projectName || 'openapi'}</option>`;\n            })\n                .join('\\n')}\n            </select>\n            <div id=\"swagger-ui\" />\n          </div>\n        );\n      };\n      export default App;\n`,\n        });\n    });\n    if (api.env === 'development') {\n        api.modifyRoutes((routes) => {\n            routes['umi/plugin/openapi'] = {\n                path: '/umi/plugin/openapi',\n                absPath: '/umi/plugin/openapi',\n                id: 'umi/plugin/openapi',\n                file: (0, plugin_utils_1.winPath)((0, path_1.join)(absTmpPath, 'plugin-openapi', 'openapi.tsx')),\n            };\n            return routes;\n        });\n    }\n    const genOpenAPIFiles = (openAPIConfig) => __awaiter(void 0, void 0, void 0, function* () {\n        if (api.env !== 'development')\n            return;\n        const openAPIJson = yield (0, openapi_1.getSchema)(openAPIConfig.schemaPath);\n        (0, fs_1.writeFileSync)((0, path_1.join)(openAPIFilesPath, `umi-plugins_${openAPIConfig.projectName || 'openapi'}.json`), JSON.stringify(openAPIJson, null, 2));\n    });\n    api.onDevCompileDone(() => __awaiter(void 0, void 0, void 0, function* () {\n        if (api.env !== 'development')\n            return;\n        try {\n            const openAPIConfig = api.config.openAPI;\n            if (Array.isArray(openAPIConfig)) {\n                openAPIConfig.map((item) => genOpenAPIFiles(item));\n                return;\n            }\n            genOpenAPIFiles(openAPIConfig);\n        }\n        catch (error) {\n            console.error(error);\n        }\n    }));\n    const genAllFiles = (openAPIConfig) => __awaiter(void 0, void 0, void 0, function* () {\n        const pageConfig = require((0, path_1.join)(api.cwd, 'package.json'));\n        const mockFolder = openAPIConfig.mock ? (0, path_1.join)(api.cwd, 'mock') : undefined;\n        const serversFolder = (0, path_1.join)(api.cwd, 'src', 'services');\n        // 如果mock 文件不存在，创建一下\n        if (mockFolder && !(0, fs_1.existsSync)(mockFolder)) {\n            (0, fs_1.mkdirSync)(mockFolder);\n        }\n        // 如果mock 文件不存在，创建一下\n        if (serversFolder && !(0, fs_1.existsSync)(serversFolder)) {\n            (0, fs_1.mkdirSync)(serversFolder);\n        }\n        yield (0, openapi_1.generateService)(Object.assign(Object.assign({ projectName: pageConfig.name.split('/').pop() }, openAPIConfig), { serversPath: serversFolder, mockFolder }));\n        api.logger.info('[openAPI]: execution complete');\n    });\n    api.registerCommand({\n        name: 'openapi',\n        fn: () => __awaiter(void 0, void 0, void 0, function* () {\n            const openAPIConfig = api.config.openAPI;\n            if (Array.isArray(openAPIConfig)) {\n                openAPIConfig.map((item) => genAllFiles(item));\n                return;\n            }\n            // TODO: 用户没有 src/services 会报错\n            genAllFiles(openAPIConfig);\n        }),\n    });\n};\n"]}