in tools/buildTools/dts.js [267:346]
function output(targetDir, library, isAmd, queue) {
var version = JSON.stringify(mainPackageJson.version).replace(/"/g, '');
var content = '';
content += `// Type definitions for roosterjs (Version ${version})\r\n`;
content += '// Generated by dts tool from roosterjs\r\n';
content += '// Project: https://github.com/Microsoft/roosterjs\r\n';
content += '\r\n';
if (!isAmd) {
content += 'declare namespace ' + library + ' {\r\n';
}
for (var i = 0; i < queue.length; i++) {
var { exports, elements, filename } = queue[i];
if (exports) {
for (var name in exports) {
var alias = exports[name];
var texts = null;
if (elements[name]) {
texts = publicElement(elements[name]);
} else {
for (var n in elements) {
if (n.indexOf(alias + '<') == 0) {
texts = publicElement(elements[n]);
break;
}
}
if (!texts) {
err(`Name not found: ${name}; alias: ${alias}; file: ${filename}`);
}
}
for (var text of texts) {
text = text.replace(namePlaceholder, alias);
if (!isAmd) {
content += ' ' + text.replace(/\r\n/g, '\r\n ').trim() + '\r\n\r\n';
} else {
content +=
(multiLineComment.test(text)
? text.replace(multiLineComment, '$1export ')
: 'export ' + text) + '\r\n\r\n';
}
}
}
}
}
if (!isAmd) {
content += '}';
}
// Check comments
for (var i = 0; i < queue.length; i++) {
var { filename, elements } = queue[i];
for (var name in elements) {
elements[name].forEach(({ published, text, comment }) => {
var code = text.replace(namePlaceholder, name);
if (!comment) {
err(`Exported element must have comment. File: ${filename} Code: ${code}`);
} else if (published) {
if (comment.indexOf('@internal') >= 0) {
err(
`Public exported element must not mark as "@internal". File: ${filename} Code: ${code}`
);
}
} else if (comment.indexOf('@internal') < 0) {
err(
`Local exported member must be marked as "@internal". File: ${filename} Code: ${code}`
);
}
});
}
}
var filename = `${path.resolve(targetDir, 'rooster')}${isAmd ? '-amd' : ''}.d.ts`;
fs.writeFileSync(filename, content);
return filename;
}