68 lines
1.5 KiB
JavaScript
68 lines
1.5 KiB
JavaScript
import { createSelector } from "reselect"
|
|
import { Map } from "immutable"
|
|
import { isOAS3 as isOAS3Helper, isSwagger2 as isSwagger2Helper } from "./helpers"
|
|
|
|
|
|
// Helpers
|
|
|
|
function onlyOAS3(selector) {
|
|
return (ori, system) => (...args) => {
|
|
const spec = system.getSystem().specSelectors.specJson()
|
|
if(isOAS3Helper(spec)) {
|
|
return selector(...args)
|
|
} else {
|
|
return ori(...args)
|
|
}
|
|
}
|
|
}
|
|
|
|
const state = state => {
|
|
return state || Map()
|
|
}
|
|
|
|
const nullSelector = createSelector(() => null)
|
|
|
|
const OAS3NullSelector = onlyOAS3(nullSelector)
|
|
|
|
const specJson = createSelector(
|
|
state,
|
|
spec => spec.get("json", Map())
|
|
)
|
|
|
|
const specResolved = createSelector(
|
|
state,
|
|
spec => spec.get("resolved", Map())
|
|
)
|
|
|
|
const spec = state => {
|
|
let res = specResolved(state)
|
|
if(res.count() < 1)
|
|
res = specJson(state)
|
|
return res
|
|
}
|
|
|
|
// Wrappers
|
|
|
|
export const definitions = onlyOAS3(createSelector(
|
|
spec,
|
|
spec => spec.getIn(["components", "schemas"]) || Map()
|
|
))
|
|
|
|
export const host = OAS3NullSelector
|
|
export const basePath = OAS3NullSelector
|
|
export const consumes = OAS3NullSelector
|
|
export const produces = OAS3NullSelector
|
|
export const schemes = OAS3NullSelector
|
|
|
|
// New selectors
|
|
|
|
export const isOAS3 = (ori, system) => () => {
|
|
const spec = system.getSystem().specSelectors.specJson()
|
|
return isOAS3Helper(spec)
|
|
}
|
|
|
|
export const isSwagger2 = (ori, system) => () => {
|
|
const spec = system.getSystem().specSelectors.specJson()
|
|
return isSwagger2Helper(spec)
|
|
}
|