typescript-member-signatures
Version:
Command line tool to extract given interface member signatures as JSON strings, recursively in the extends chain with the purpose of documentation
41 lines (39 loc) • 1.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const ts_morph_1 = require("ts-morph");
function firstLetterToUpperCase(s) {
return s.substring(0, 1).toUpperCase() + s.substring(1);
}
function firstLetterToLowerCase(s) {
return s.substring(0, 1).toLowerCase() + s.substring(1);
}
function resultToTypeScript(o) {
const name = o.exportName || o.result.name;
// TODO: Member is copy&paste
// TODO: support methods and other data ?
// TODO: don't use JSON.stringify produce ugly output
const r = `
export interface ${firstLetterToUpperCase(name)}Member {
signature: string
name?: string
typeText?: string
optional?: boolean
jsDocsText?: string
markdown?: string
}
export interface ${firstLetterToUpperCase(name)} {
name: string,
properties: ${firstLetterToUpperCase(name)}Member[]
}
export const ${firstLetterToLowerCase(name)}: ${firstLetterToUpperCase(name)} = {
name: '${name}',
properties: ${JSON.stringify(o.result.properties || [], null, 2)}
}
`;
const p = new ts_morph_1.Project();
const f = p.createSourceFile('test.ts', r);
f.formatText();
return f.getText();
}
exports.resultToTypeScript = resultToTypeScript;
//# sourceMappingURL=typescriptOutput.js.map