@orca-fe/antd-plus
Version:
Transformer Container
98 lines (97 loc) • 3.27 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.defaultValueFromJsonSchema = defaultValueFromJsonSchema;
exports.toTypeScriptDefinition = toTypeScriptDefinition;
var _json = _interopRequireDefault(require("json5"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _tab() {
var length = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
var tabSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
return ' '.repeat(length * tabSize);
}
function toTypeScriptDefinition(value) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var tabSize = options.tabSize,
_options$rootName = options.rootName,
rootName = _options$rootName === void 0 ? 'JsonType' : _options$rootName,
_options$comment = options.comment,
comment = _options$comment === void 0 ? true : _options$comment;
var tab = function tab(length) {
return _tab(length, tabSize);
};
function rev(root) {
var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
var res = [];
switch (root.type) {
case 'object':
res.push('{');
(root.items || []).forEach(function (objValue) {
if (!objValue.name) return;
if (objValue.description && comment) {
res.push("".concat(tab(level + 1), "//").concat(objValue.description));
}
res.push("".concat(tab(level + 1)).concat(objValue.name).concat(objValue.required ? '' : '?', ": ").concat(rev(objValue, level + 1), ";"));
});
res.push("".concat(tab(level), "}"));
break;
case 'array':
res.push('[');
(root.items || []).forEach(function (arrValue) {
if (arrValue.description && comment) {
if (!arrValue.name) return;
res.push("".concat(tab(level + 1), "//").concat(arrValue.description));
}
res.push("".concat(tab(level + 1)).concat(rev(arrValue, level + 1), ","));
});
res.push("".concat(tab(level), "]"));
break;
default:
res.push(String(root.type));
}
return res.join('\n');
}
return "type ".concat(rootName, " = ").concat(rev(value));
}
function defaultValueFromJsonSchema(schema) {
switch (schema.type) {
case 'null':
return null;
case 'number':
{
var value = Number(schema.defaultValue);
if (Number.isNaN(value)) {
return 0;
}
return value;
}
case 'string':
return schema.defaultValue;
case 'boolean':
{
return schema.required ? !!schema.defaultValue : schema.defaultValue;
}
case 'array':
try {
if (schema.defaultValue) {
return _json.default.parse(schema.defaultValue);
}
} catch (error) {
console.warn('Error while parsing defaultValue');
}
if (schema.required) {
return [];
}
return undefined;
case 'object':
{
var res = {};
schema.items.forEach(function (item) {
res[item.name] = defaultValueFromJsonSchema(item);
});
return res;
}
}
return undefined;
}