nuxt-openapi-docs-module
Version:
A module for Nuxt.js to generate pages from OpenAPI specifications
29 lines (28 loc) • 1.16 kB
JavaScript
import { traverse } from "./traverse.js";
import { mergeDeep } from "./utils.js";
export function allOfSample(into, children, options, spec, context) {
let res = traverse(into, options, spec);
const subSamples = [];
for (let subSchema of children) {
const { type, readOnly, writeOnly, value } = traverse({ type: res.type, ...subSchema }, options, spec, context);
if (res.type && type && type !== res.type) {
console.warn("allOf: schemas with different types can't be merged");
res.type = type;
}
res.type = res.type || type;
res.readOnly = res.readOnly || readOnly;
res.writeOnly = res.writeOnly || writeOnly;
if (value != null) subSamples.push(value);
}
if (res.type === "object") {
res.value = mergeDeep(res.value || {}, ...subSamples.filter((sample) => typeof sample === "object"));
return res;
} else {
if (res.type === "array") {
if (!options.quiet) console.warn('OpenAPI Sampler: found allOf with "array" type. Result may be incorrect');
}
const lastSample = subSamples[subSamples.length - 1];
res.value = lastSample != null ? lastSample : res.value;
return res;
}
}