swagger-to-mock
Version:
mock data generator from Swagger (OpenAPI 3)
107 lines • 8.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var dataType_1 = require("./dataType");
var util_1 = require("./util");
exports.REF = "$ref";
exports.mergeAllOf = function (properties, schemas) {
var ret = {};
properties.forEach(function (property) {
if (dataType_1.isReferenceObject(property)) {
var schemaName = util_1.getSchemaName(property[exports.REF]);
if (schemaName) {
var schemaData = exports.getSchemaData(schemas, schemaName);
ret = Object.assign({}, ret, schemaData);
}
}
else {
var parsed = exports.parseObject(property, schemas);
ret = Object.assign({}, ret, parsed);
}
});
return ret;
};
exports.pickOneOf = function (properties, schemas) {
var property = properties[0];
if (dataType_1.isReferenceObject(property)) {
var schemaName = util_1.getSchemaName(property[exports.REF]);
if (schemaName) {
var schemaData = exports.getSchemaData(schemas, schemaName);
return Object.assign({}, schemaData);
}
}
var parsed = exports.parseObject(property, schemas);
return Object.assign({}, parsed);
};
// Retrieve mock data of schema.
exports.getSchemaData = function (schemas, name) {
var schema = schemas[name];
if (dataType_1.isReferenceObject(schema)) {
var schemaName = util_1.getSchemaName(schema[exports.REF]);
return schemaName ? exports.getSchemaData(schemas, schemaName) : {};
}
if (dataType_1.isAllOf(schema)) {
return exports.mergeAllOf(schema["allOf"], schemas);
}
else if (dataType_1.isArray(schema)) {
return exports.parseArray(schema, schemas);
}
else if (dataType_1.isObject(schema)) {
return exports.parseObject(schema, schemas);
}
return schema;
};
exports.parseObject = function (obj, schemas) {
if (obj.example)
return obj.example;
if (!obj.properties) {
return {};
}
return Object.keys(obj.properties).reduce(function (acc, key) {
var property = obj.properties[key];
if (dataType_1.isReferenceObject(property)) {
var schemaName = util_1.getSchemaName(property[exports.REF]);
if (schemaName) {
var schema = exports.getSchemaData(schemas, schemaName);
acc[key] = Object.assign({}, schema);
}
return acc;
}
if (dataType_1.isAllOf(property)) {
acc[key] = exports.mergeAllOf(property["allOf"], schemas);
}
else if (dataType_1.isOneOf(property)) {
acc[key] = exports.pickOneOf(property.oneOf, schemas);
}
else if (dataType_1.isAnyOf(property)) {
acc[key] = exports.pickOneOf(property.anyOf, schemas);
}
else if (dataType_1.isObject(property)) {
acc[key] = exports.parseObject(property, schemas);
}
else if (dataType_1.isArray(property)) {
acc[key] = exports.parseArray(property, schemas);
}
else if (property.type) {
acc[key] = dataType_1.DataType.defaultValue(property);
}
return acc;
}, {});
};
exports.parseArray = function (arr, schemas) {
if (dataType_1.isReferenceObject(arr.items)) {
var schemaName = util_1.getSchemaName(arr.items[exports.REF]);
if (schemaName) {
var schema = exports.getSchemaData(schemas, schemaName);
return [schema];
}
return [];
}
else if (arr.example) {
return arr.example;
}
else if (arr.items.type) {
return [exports.parseObject(arr.items, schemas)];
}
return [];
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGFyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSx1Q0FRb0I7QUFDcEIsK0JBQXVDO0FBRTFCLFFBQUEsR0FBRyxHQUFHLE1BQU0sQ0FBQztBQUtiLFFBQUEsVUFBVSxHQUFHLFVBQ3hCLFVBQThDLEVBQzlDLE9BQWdCO0lBRWhCLElBQUksR0FBRyxHQUFRLEVBQUUsQ0FBQztJQUNsQixVQUFVLENBQUMsT0FBTyxDQUFDLFVBQUEsUUFBUTtRQUN6QixJQUFJLDRCQUFpQixDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQy9CLElBQU0sVUFBVSxHQUFHLG9CQUFhLENBQUMsUUFBUSxDQUFDLFdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDaEQsSUFBSSxVQUFVLEVBQUU7Z0JBQ2QsSUFBTSxVQUFVLEdBQUcscUJBQWEsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQ3RELEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7YUFDMUM7U0FDRjthQUFNO1lBQ0wsSUFBTSxNQUFNLEdBQUcsbUJBQVcsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDOUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUN0QztJQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDLENBQUM7QUFFVyxRQUFBLFNBQVMsR0FBRyxVQUN2QixVQUE4QyxFQUM5QyxPQUFnQjtJQUVoQixJQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsSUFBSSw0QkFBaUIsQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUMvQixJQUFNLFVBQVUsR0FBRyxvQkFBYSxDQUFDLFFBQVEsQ0FBQyxXQUFHLENB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