Ekapp/swagger/src/index.js

68 lines
2.4 KiB
JavaScript
Raw Normal View History

2020-06-10 06:25:21 +00:00
import deepMerge from "deepmerge"
import SwaggerUI from "swagger-ui"
import EditorLayout from "./layout"
import EditorPlugin from "./plugins/editor"
import LocalStoragePlugin from "./plugins/local-storage"
import ValidateBasePlugin from "./plugins/validate-base"
import ValidateSemanticPlugin from "./plugins/validate-semantic"
import ValidateJsonSchemaPlugin from "./plugins/json-schema-validator"
import EditorAutosuggestPlugin from "./plugins/editor-autosuggest"
import EditorAutosuggestSnippetsPlugin from "./plugins/editor-autosuggest-snippets"
import EditorAutosuggestKeywordsPlugin from "./plugins/editor-autosuggest-keywords"
import EditorAutosuggestOAS3KeywordsPlugin from "./plugins/editor-autosuggest-oas3-keywords"
import EditorAutosuggestRefsPlugin from "./plugins/editor-autosuggest-refs"
import PerformancePlugin from "./plugins/performance"
import JumpToPathPlugin from "./plugins/jump-to-path"
import SplitPaneModePlugin from "./plugins/split-pane-mode"
import ASTPlugin from "./plugins/ast"
// eslint-disable-next-line no-undef
const { GIT_DIRTY, GIT_COMMIT, PACKAGE_VERSION } = buildInfo
window.versions = window.versions || {}
window.versions.swaggerEditor = `${PACKAGE_VERSION}/${GIT_COMMIT || "unknown"}${GIT_DIRTY ? "-dirty" : ""}`
const plugins = {
EditorPlugin,
ValidateBasePlugin,
ValidateSemanticPlugin,
ValidateJsonSchemaPlugin,
LocalStoragePlugin,
EditorAutosuggestPlugin,
EditorAutosuggestSnippetsPlugin,
EditorAutosuggestKeywordsPlugin,
EditorAutosuggestRefsPlugin,
EditorAutosuggestOAS3KeywordsPlugin,
PerformancePlugin,
JumpToPathPlugin,
SplitPaneModePlugin,
ASTPlugin,
}
const defaults = {
// we have the `dom_id` prop for legacy reasons
dom_id: "#swagger-editor", // eslint-disable-line camelcase
layout: "EditorLayout",
presets: [
SwaggerUI.presets.apis
],
plugins: Object.values(plugins),
components: {
EditorLayout
},
showExtensions: true,
swagger2GeneratorUrl: "https://generator.swagger.io/api/swagger.json",
oas3GeneratorUrl: "https://generator3.swagger.io/openapi.json",
swagger2ConverterUrl: "https://converter.swagger.io/api/convert",
}
export default function SwaggerEditor(options) {
let mergedOptions = deepMerge(defaults, options)
mergedOptions.presets = defaults.presets.concat(options.presets || [])
mergedOptions.plugins = defaults.plugins.concat(options.plugins || [])
return SwaggerUI(mergedOptions)
}
SwaggerEditor.plugins = plugins