function transpileDerivedExchangeFile (folder, filename) {

    try {

        let contents = fs.readFileSync (folder + filename, 'utf8')

        let { python2, python3, php, className, baseClass } = transpileDerivedExchangeClass (contents)

        const python2Filename = python2Folder + filename.replace ('.js', '.py')
        const python3Filename = python3Folder + filename.replace ('.js', '.py')
        const phpFilename     = phpFolder     + filename.replace ('.js', '.php')

        log.cyan ('Transpiling from', filename.yellow)

        overwriteFile (python2Filename, python2)
        overwriteFile (python3Filename, python3)
        overwriteFile (phpFilename,     php)

        return { className, baseClass }

    } catch (e) {

        log.red ('\nFailed to transpile source code from', filename.yellow)
        log.red ('See https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md on how to build this library properly\n')
        throw e // rethrow it
    }
}
function transpileDerivedExchangeFile (folder, filename) {

    try {

        let contents = fs.readFileSync (folder + filename, 'utf8')

        let { python2, python3, php, className, baseClass } = transpileDerivedExchangeClass (contents)

        const python2Filename = python2Folder + filename.replace ('.js', '.py')
        const python3Filename = python3Folder + filename.replace ('.js', '.py')
        const phpFilename     = phpFolder     + filename.replace ('.js', '.php')

        log.cyan ('Transpiling from', filename.yellow)

        overwriteFile (python2Filename, python2)
        overwriteFile (python3Filename, python3)
        overwriteFile (phpFilename,     php)

        return { className, baseClass }

    } catch (e) {

        log.red ('\nFailed to transpile source code from', filename.yellow)
        log.red ('See https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md on how to build this library properly\n')
        throw e // rethrow it
    }
}
function transpileDerivedExchangeFile ( folder , filename ) { try { let contents = fs . readFileSync ( folder + filename , 'utf8' ) let { python2 , python3 , php , className , baseClass } = transpileDerivedExchangeClass ( contents ) const python2Filename = python2Folder + filename . replace ( '.js' , '.py' ) const python3Filename = python3Folder + filename . replace ( '.js' , '.py' ) const phpFilename = phpFolder + filename . replace ( '.js' , '.php' ) log . cyan ( 'Transpiling from' , filename . yellow ) overwriteFile ( python2Filename , python2 ) overwriteFile ( python3Filename , python3 ) overwriteFile ( phpFilename , php ) return { className , baseClass } } catch ( e ) { log . red ( '\nFailed to transpile source code from' , filename . yellow ) log . red ( 'See https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md on how to build this library properly\n' ) throw e // rethrow it } }
----------------------------------------------------------------------------
----------------------------------------------------------------------------
transpiles a file from a folder