buildtypedefs
Version:
This is a utility that transforms code documented with getdocs-style doc comments into TypeScript definition files
41 lines • 1.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const StringBuilder = require("string-builder");
const item_1 = require("./item");
function default_1(module, name, deps, additionalTypes) {
let sb = new StringBuilder("");
let imports = new Array();
sb.appendLine("declare module \"" + name + "\" {");
sb.appendLine("");
for (let item in module.items) {
sb.append("export ");
item_1.default(sb, module.items[item], item, module.items, imports, additionalTypes);
}
sb.appendLine("}");
let importSb = new StringBuilder("");
for (let imp of imports) {
if (additionalTypes[imp]) {
imp = additionalTypes[imp].replacement;
}
let found = false;
for (let dep in deps) {
if (deps[dep].indexOf(imp) > -1) {
importSb.appendLine("import {" + imp + "} from '" + dep + "'");
found = true;
}
}
if (!found) {
let result = Object.values(additionalTypes).filter((o) => o.replacement == imp);
if (result && result.length == 1 && result[0].source) {
importSb.appendLine("import {" + result[0].replacement + "} from '" + result[0].source + "'");
}
else {
console.log(imp + " not found for " + name);
}
}
}
importSb.appendLine("");
return new StringBuilder(importSb.toString() + sb.toString());
}
exports.default = default_1;
//# sourceMappingURL=module.js.map