in tools/dts.js [234:302]
function output(filename, library, queue) {
var packageJson = require(path.join(__dirname, '..', 'package.json'));
var version = packageJson.version;
var content = '';
content += `// Type definitions for ${packageJson.name} (Version ${packageJson.version})\r\n`;
content += `// Generated by dts tool from ${packageJson.name}\r\n`;
content += `// Project: ${packageJson.repository.url}\r\n`;
content += '\r\n';
content += "import * as React from 'react';\r\n";
// this should be streamlined at some point, if more are needed:
content += "import { ICommandBarItemProps } from 'office-ui-fabric-react/lib/CommandBar';\r\n";
content += "import { DirectionalHint, IContextualMenuProps } from 'office-ui-fabric-react/lib/ContextualMenu';\r\n";
content += '\r\n';
if (library) {
content += 'declare namespace ' + library + ' {\r\n';
}
for (var i = 0; i < queue.length; i++) {
var exports = queue[i].exports;
var elements = queue[i].elements;
if (exports) {
for (var name in exports){
var alias = exports[name];
var texts = null;
if (elements[name]) {
texts = elements[name];
} else {
for (var n in elements) {
if (n.indexOf(alias + '<') == 0) {
texts = elements[n];
break;
}
}
if (!texts) {
throw new Error('Name not found: ' + name + '; alias: ' + alias);
}
}
for (var text of texts) {
text = text.replace(namePlaceholder, alias);
if (library) {
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 (library) {
content += '}';
}
fs.writeFileSync(filename, content);
// Test the .d.ts file
var options = {
stdio: 'inherit',
cwd: __dirname
};
exec(`node ../node_modules/typescript/lib/tsc.js ` + filename + ' -outFile nul', options);
content = content.replace(/office\-ui\-fabric\-react\/lib\//g, 'OfficeFabric/');
fs.writeFileSync(filename, content);
console.log('Type definition file ' + filename + ' generated.');
}