const SCHEMA_HEADER = {
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "model",
"description": "Generated Schema",
"type": "object",
"properties": { }
};
/**
* <p>Augmented.Utility.SchemaGenerator<br/>
*
* Genrate a schema from a set of data</p>
* @param {object} data a dataset to produce a schema from
* @memberof Utility
*/
const SchemaGenerator = (data, title = "model", description = "Generated Schema") => {
const obj = SCHEMA_HEADER;
if (data) {
let i, d, dkey, p;
const keys = Object.keys(data), l = keys.length;
for (i = 0; i < l; i++) {
d = keys[i];
for (dkey in d) {
if (d.hasOwnProperty(dkey)) {
p = obj.properties[d] = {};
let t = (typeof data[d]);
if (t === "object") {
t = (Array.isArray(data[d])) ? "array" : "object";
} else if (t === "number") {
t = (Number.isInteger(data[d])) ? "integer" : "number";
}
p.type = t;
p.description = String(d);
}
}
}
obj.title = title;
obj.description = description;
}
return obj;
};
export default SchemaGenerator;