jswagger-generator
Version:
This is jswagger's generator package.
45 lines (44 loc) • 1.72 kB
JavaScript
;
// Origin: https://github.com/manifoldco/swagger-to-ts
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("./utils");
function propertyMapper(schema, transform) {
if (!transform) {
return schema;
}
return JSON.parse(JSON.stringify(schema), (_, node) => {
// if no properties, skip
if (!node.properties) {
return node;
}
// map over properties, transforming if needed
node.properties = utils_1.fromEntries(Object.entries(node.properties).map(([key, val]) => {
// if $ref, skip
if (val.$ref) {
return [key, val];
}
const schemaObject = val;
const property = transform(schemaObject, {
interfaceType: schemaObject.type,
optional: !Array.isArray(node.required) || node.required.includes(key),
description: schemaObject.description,
});
// update requirements
if (property.optional) {
if (Array.isArray(node.required)) {
node.required = node.required.filter((r) => r !== key);
}
}
else {
node.required = [...(Array.isArray(node.required) && node.required || []), key];
}
// transform node from mapper
return [
key,
Object.assign(Object.assign({}, val), { type: property.interfaceType, description: property.description }),
];
}));
return node; // return by default
});
}
exports.default = propertyMapper;