UNPKG

type2docfx

Version:

A tool to convert json format output from TypeDoc to schema driven reference model for DocFx to consume.

131 lines 5.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.typeToString = exports.resolveIds = void 0; var regex_1 = require("./common/regex"); var constants_1 = require("./common/constants"); function resolveIds(element, uidMapping, referenceMapping) { if (element.syntax) { if (element.syntax.parameters) { for (var _i = 0, _a = element.syntax.parameters; _i < _a.length; _i++) { var p = _a[_i]; p.type = restoreReferences(p.type, uidMapping, referenceMapping); } } if (element.syntax.return) { element.syntax.return.type = restoreReferences(element.syntax.return.type, uidMapping, referenceMapping); } } if (element.extends) { element.extends.name = restoreReferences([element.extends.name], uidMapping, referenceMapping)[0]; } for (var _b = 0, _c = element.children; _b < _c.length; _b++) { var child = _c[_b]; resolveIds(child, uidMapping, referenceMapping); if (constants_1.setOfTopLevelItems.has(child.type)) { referenceMapping[child.uid] = "@uid:" + child.uid + "!@"; } } } exports.resolveIds = resolveIds; function restoreReferences(types, uidMapping, referenceMapping) { var restoredTypes = restoreTypes(types, uidMapping); return restoredTypes.map(function (restoreType) { if (restoreType) { var hasUid_1 = false; var restoreTypeTrim = restoreType.replace(regex_1.uidRegex, function (match, uid) { if (uid) { hasUid_1 = true; return uid; } return match; }); if (hasUid_1 && referenceMapping[restoreTypeTrim] !== null) { referenceMapping[restoreTypeTrim] = restoreType; } return restoreTypeTrim; } return restoreType; }); } function restoreTypes(types, uidMapping) { if (types) { return types.map(function (t) { return restoreType(t, uidMapping); }); } return null; } function restoreType(type, uidMapping) { if (typeof (type) === 'string') { return type; } if (type.reflectedType) { type.reflectedType.key = restoreType(type.reflectedType.key, uidMapping); type.reflectedType.value = restoreType(type.reflectedType.value, uidMapping); } else if (type.genericType) { type.genericType.inner = type.genericType.inner.map(function (t) { return restoreType(t, uidMapping); }); type.genericType.outter = restoreType(type.genericType.outter, uidMapping); } if (type.unionType) { type.unionType.types = type.unionType.types.map(function (t) { return restoreType(t, uidMapping); }); } else if (type.intersectionType) { type.intersectionType.types = type.intersectionType.types.map(function (t) { return restoreType(t, uidMapping); }); } else if (type.arrayType) { type.arrayType = restoreType(type.arrayType, uidMapping); } else { if (type.typeId && uidMapping[type.typeId]) { type.typeName = "@uid:" + uidMapping[type.typeId] + "!@"; } } return typeToString(type); } function typeToString(type, kind) { if (!type) { return 'function'; } if (typeof (type) === 'string') { if (type[0] === '@') { return type; } else if (kind && kind !== 'Property') { var t = type.split('.'); return t[t.length - 1]; } else { return type; } } if (type.reflectedType) { return "[key: " + typeToString(type.reflectedType.key) + "]: " + typeToString(type.reflectedType.value); } else if (type.genericType) { return typeToString(type.genericType.outter) + "<" + (type.genericType.inner.map(function (t) { return typeToString(t); }).join(', ')) + ">"; } else if (type.unionType) { var content = type.unionType.types.map(function (t) { return typeToString(t); }).join(' | '); if (type.parentType && type.parentType !== 'union') { content = '(' + content + ')'; } return content; } else if (type.intersectionType) { var content = type.intersectionType.types.map(function (t) { return typeToString(t); }).join(' & '); if (type.parentType && type.parentType !== 'intersection') { content = '(' + content + ')'; } return content; } else if (type.arrayType) { return typeToString(type.arrayType) + "[]"; } else if (type.tupleType) { return '[' + type.tupleType.types.map(function (t) { return typeToString(t); }).join(', ') + ']'; } else { return typeToString(type.typeName); } } exports.typeToString = typeToString; //# sourceMappingURL=idResolver.js.map