Files
swagger-ui/src/core/plugins/oas31/index.js

117 lines
3.7 KiB
JavaScript

/**
* @prettier
*/
import Webhooks from "./components/webhooks"
import License from "./components/license"
import Contact from "./components/contact"
import Info from "./components/info"
import LicenseWrapper from "./wrap-components/license"
import ContactWrapper from "./wrap-components/contact"
import InfoWrapper from "./wrap-components/info"
import {
license as selectLicense,
contact as selectContact,
webhooks as selectWebhooks,
selectLicenseNameField,
selectLicenseUrlField,
selectLicenseIdentifierField,
selectContactNameField,
selectContactEmailField,
selectContactUrlField,
selectContactUrl,
isOAS31 as selectIsOAS31,
selectLicenseUrl,
selectInfoTitleField,
selectInfoSummaryField,
selectInfoDescriptionField,
selectInfoTermsOfServiceField,
selectInfoTermsOfServiceUrl,
selectExternalDocsDescriptionField,
selectExternalDocsUrlField,
selectExternalDocsUrl,
selectWebhooksOperations,
} from "./spec-extensions/selectors"
import {
isOAS3 as isOAS3SelectorWrapper,
selectLicenseUrl as selectLicenseUrlWrapper,
} from "./spec-extensions/wrap-selectors"
import { hasUserEditedBody as hasUserEditedBodySelectorWrapper } from "./oas3-extensions/wrap-selectors"
import { selectLicenseUrl as selectOAS31LicenseUrl } from "./selectors"
import {
isOAS31 as isOAS31Fn,
createOnlyOAS31Selector as createOnlyOAS31SelectorFn,
createSystemSelector as createSystemSelectorFn,
} from "./fn"
const OAS31Plugin = ({ fn }) => {
const createSystemSelector = fn.createSystemSelector || createSystemSelectorFn
const createOnlyOAS31Selector = fn.createOnlyOAS31Selector || createOnlyOAS31SelectorFn // prettier-ignore
return {
fn: {
isOAs31: isOAS31Fn,
createSystemSelector: createSystemSelectorFn,
createOnlyOAS31Selector: createOnlyOAS31SelectorFn,
},
components: {
Webhooks,
OAS31Info: Info,
OAS31License: License,
OAS31Contact: Contact,
},
wrapComponents: {
InfoContainer: InfoWrapper,
License: LicenseWrapper,
Contact: ContactWrapper,
},
statePlugins: {
spec: {
selectors: {
isOAS31: createSystemSelector(selectIsOAS31),
license: selectLicense,
selectLicenseNameField,
selectLicenseUrlField,
selectLicenseIdentifierField: createOnlyOAS31Selector(selectLicenseIdentifierField), // prettier-ignore
selectLicenseUrl: createSystemSelector(selectLicenseUrl),
contact: selectContact,
selectContactNameField,
selectContactEmailField,
selectContactUrlField,
selectContactUrl: createSystemSelector(selectContactUrl),
selectInfoTitleField,
selectInfoSummaryField: createOnlyOAS31Selector(selectInfoSummaryField), // prettier-ignore
selectInfoDescriptionField,
selectInfoTermsOfServiceField,
selectInfoTermsOfServiceUrl: createSystemSelector(selectInfoTermsOfServiceUrl), // prettier-ignore
selectExternalDocsDescriptionField,
selectExternalDocsUrlField,
selectExternalDocsUrl: createSystemSelector(selectExternalDocsUrl),
webhooks: createOnlyOAS31Selector(selectWebhooks),
selectWebhooksOperations: createOnlyOAS31Selector(createSystemSelector(selectWebhooksOperations)), // prettier-ignore
},
wrapSelectors: {
isOAS3: isOAS3SelectorWrapper,
selectLicenseUrl: selectLicenseUrlWrapper,
},
},
oas3: {
wrapSelectors: {
hasUserEditedBody: hasUserEditedBodySelectorWrapper,
},
},
oas31: {
selectors: {
selectLicenseUrl: createOnlyOAS31Selector(createSystemSelector(selectOAS31LicenseUrl)), // prettier-ignore
},
},
},
}
}
export default OAS31Plugin