refactor(oas31): introduce selector composition mechanism (#8484)

Refs #8474
This commit is contained in:
Vladimír Gorej
2023-03-20 08:34:11 +01:00
committed by GitHub
parent 47e12f1de3
commit d7099793a4
6 changed files with 196 additions and 175 deletions

View File

@@ -9,48 +9,48 @@ import LicenseWrapper from "./wrap-components/license"
import ContactWrapper from "./wrap-components/contact"
import InfoWrapper from "./wrap-components/info"
import {
license,
contact,
webhooks,
license as selectLicense,
contact as selectContact,
webhooks as selectWebhooks,
selectLicenseNameField,
selectLicenseUrlField,
selectLicenseIdentifierField,
selectContactNameField,
selectContactEmailField,
selectContactUrlField,
makeSelectContactUrl,
makeIsOAS31,
makeSelectLicenseUrl,
selectContactUrl,
isOAS31 as selectIsOAS31,
selectLicenseUrl,
selectInfoTitleField,
selectInfoSummaryField,
selectInfoDescriptionField,
selectInfoTermsOfServiceField,
makeSelectInfoTermsOfServiceUrl,
selectInfoTermsOfServiceUrl,
selectExternalDocsDescriptionField,
selectExternalDocsUrlField,
makeSelectExternalDocsUrl,
makeSelectWebhooksOperations,
selectExternalDocsUrl,
selectWebhooksOperations,
} from "./spec-extensions/selectors"
import {
isOAS3 as isOAS3Wrapper,
selectLicenseUrl as selectLicenseUrlWrapper,
} from "./spec-extensions/wrap-selectors"
import { makeSelectLicenseUrl as makeOAS31SelectLicenseUrl } from "./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
const OAS31Plugin = () => {
return {
afterLoad(system) {
const oas31Selectors = this.statePlugins.oas31.selectors
const specSelectors = this.statePlugins.spec.selectors
specSelectors.isOAS31 = makeIsOAS31(system)
specSelectors.selectLicenseUrl = makeSelectLicenseUrl(system)
specSelectors.selectContactUrl = makeSelectContactUrl(system)
specSelectors.selectInfoTermsOfServiceUrl = makeSelectInfoTermsOfServiceUrl(system) // prettier-ignore
specSelectors.selectExternalDocsUrl = makeSelectExternalDocsUrl(system)
specSelectors.selectWebhooksOperations = makeSelectWebhooksOperations(system) // prettier-ignore
oas31Selectors.selectLicenseUrl = makeOAS31SelectLicenseUrl(system)
fn: {
isOAs31: isOAS31Fn,
createSystemSelector: createSystemSelectorFn,
createOnlyOAS31Selector: createOnlyOAS31SelectorFn,
},
components: {
Webhooks,
@@ -66,25 +66,32 @@ const OAS31Plugin = () => {
statePlugins: {
spec: {
selectors: {
license,
isOAS31: createSystemSelector(selectIsOAS31),
license: selectLicense,
selectLicenseNameField,
selectLicenseUrlField,
selectLicenseIdentifierField,
selectLicenseIdentifierField: createOnlyOAS31Selector(selectLicenseIdentifierField), // prettier-ignore
selectLicenseUrl: createSystemSelector(selectLicenseUrl),
contact,
contact: selectContact,
selectContactNameField,
selectContactEmailField,
selectContactUrlField,
selectContactUrl: createSystemSelector(selectContactUrl),
selectInfoTitleField,
selectInfoSummaryField,
selectInfoSummaryField: createOnlyOAS31Selector(selectInfoSummaryField), // prettier-ignore
selectInfoDescriptionField,
selectInfoTermsOfServiceField,
selectInfoTermsOfServiceUrl: createSystemSelector(selectInfoTermsOfServiceUrl), // prettier-ignore
selectExternalDocsDescriptionField,
selectExternalDocsUrlField,
selectExternalDocsUrl: createSystemSelector(selectExternalDocsUrl),
webhooks,
webhooks: createOnlyOAS31Selector(selectWebhooks),
selectWebhooksOperations: createOnlyOAS31Selector(createSystemSelector(selectWebhooksOperations)), // prettier-ignore
},
wrapSelectors: {
isOAS3: isOAS3Wrapper,
@@ -92,7 +99,9 @@ const OAS31Plugin = () => {
},
},
oas31: {
selectors: {},
selectors: {
selectLicenseUrl: createOnlyOAS31Selector(createSystemSelector(selectOAS31LicenseUrl)), // prettier-ignore
},
},
},
}