UNPKG

@orca-fe/antd-plus

Version:
98 lines (97 loc) 3.27 kB
"use strict"; 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; }