function output()

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.');
}