{"version":3,"sources":["jsdelivr-header.js","/npm/nodbg@0.0.4/tool/cli.js"],"names":[],"mappings":"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","file":"/npm/nodbg@0.0.4/tool/cli.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/nodbg@0.0.4/tool/cli.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","#!/usr/bin/env node\n\nvar DebugConnect = require('../lib/connector');\nvar program = require('commander');\nvar request = require('request');\nvar open = require('open')\n\nprogram\n    .version('0.0.1')\n    .option('--attach <dest>', 'Attach to an existing process at <dest> (host:port)')\n    .option('--port <port>', 'Port to run debugger on (default: 5858)', 5858)\n    .option('--pid <pid>', 'Attach to an existing process on <pid>')\n    .option('--serverport <port>', 'Port to start web server on (default: 3000)', 3000)\n    .option('--debugport <port>', 'Port to start debug server on (default: 8888)', 8888)\n    .option('--nobrowser', 'Don\\'t open a browser automatically when connected')\n    \nvar spawnChild = function(path, port, brk) {\n    var spawn = require('child_process').spawn;\n    \n    debuggee = spawn('node', ['--debug-brk=' + port, path]);\n    debuggee.on(\"exit\", function() {\n        console.log(\"- debuggee exited!\");\n    })\n    \n    debuggee.stdout.on('data', function (data) {\n        process.stdout.write(data);\n    });\n    \n    debuggee.stderr.on('data', function (data) {\n        process.stderr.write(data);\n    });\n    \n    process.on(\"exit\", function() {\n        debuggee.kill();\n    });\n    \n    return process.pid;\n};\nvar openBrowser = function(url) {    \n    if (!program.nobrowser) {\n        open(url);\n    }\n}\n\nvar spawnServer = function() {\n    process.env.PORT = program.serverport || 3000;\n    process.env.DEBUG_PORT = program.debugport || 8888;\n    \n    var spawn = require('child_process').spawn;\n    var server = spawn('node', [__dirname+'/../server.js']);\n    process.on(\"exit\", function() {\n        server.kill();\n    });\n    server.on(\"exit\", function() {\n        console.log(\"ERROR: webserver died!\");\n    });\n}\n\nvar attachToPid = function(server, serverport, port, pid, id) {\n    process._debugProcess(pid);\n    var connector = new DebugConnect(id, server, serverport, pid, port);\n}\n\nvar attachToChild = function(server, serverport, port, pid, id) { \n    var connector = new DebugConnect(id, server, serverport, pid, port);\n};\n    \nvar register = function(server, cb) {\n    request(\"http://\" + server + \"/register\", function(err, response, body) {\n        if (err) {\n            cb(err);\n        }\n        else {\n            cb(null, JSON.parse(body));\n        }\n    });\n};\n    \nvar doRemote = function(cmd) {\n    var options = program;\n    if (!cmd && !options.attach) {\n        console.log(\"Must supply either a script to run or an attach destination\");\n        return;\n    }\n    \n    var pidAttach = !!options.pid;\n    var pid = options.pid;\n    var attach = options.attach; \n    \n    if (!attach && !pid) {\n        var port = options.port;\n        var brk = options.brk;\n        \n        pid = spawnChild(cmd, port, brk);\n        attach = \"localhost:\" + port;\n    }\n    \n    if (!attach) {\n        attach = \"localhost:5858\";\n    }\n    \n    var host = attach.slice(0, attach.indexOf(\":\"));\n    var port = attach.slice(attach.indexOf(\":\") + 1);\n    \n    if (!host || !port) {\n        console.log(\"Must supply a valid attach destination:\", attach);\n        return;\n    }\n    \n    port = parseInt(port);\n    \n    register(\"www.nodbg.com\", function(err, info) {\n        if (err) {\n            console.log(\"There was an error:\", err);\n            return;\n        }\n        \n        if (!pidAttach) {\n            // no --pid\n            attachToChild(\"www.nodbg.com\", info.debugport, port, pid, info.id);\n        }\n        else {\n            // --pid\n            attachToPid(\"www.nodbg.com\", info.debugport, port, pid, info.id);\n        }\n\n        var params = {\n            name: info.id,\n            serverhost: \"www.nodbg.com\",\n            serverport: program.serverport,\n            debugserverport: info.debugport,\n            debugport: port,\n            debugpid: pid\n        }\n        \n        console.log(\"- nodbg params:\", JSON.stringify(params));\n        console.log(\"- nodbg started!\");\n        console.log(\"- Connect to http://www.nodbg.com/debug/\" + info.id);\n        console.log();\n        \n        openBrowser(\"http://www.nodbg.com/debug/\" + info.id);\n    });\n};\n\nvar doLocal = function(cmd, config) {\n    var options = program;\n    if (!cmd && !options.attach) {\n        console.log(\"Must supply either a script to run or an attach destination\");\n        return;\n    }\n    spawnServer();\n    setTimeout(function() { \n        var pidAttach = !!options.pid;\n        var pid = options.pid;\n        var attach = options.attach; \n        \n        if (!attach && !pid) {\n            var port = options.port;\n            var brk = options.brk;\n            \n            pid = spawnChild(cmd, port, brk);\n            attach = \"localhost:\" + port;\n        }\n        \n        if (!attach) {\n            attach = \"localhost:5858\";\n        }\n        \n        var host = attach.slice(0, attach.indexOf(\":\"));\n        var port = attach.slice(attach.indexOf(\":\") + 1);\n        \n        if (!host || !port) {\n            console.log(\"Must supply a valid attach destination:\", attach);\n            return;\n        }\n        \n        port = parseInt(port);\n        \n        register(\"127.0.0.1:\" + program.serverport, function(err, info) {\n            if (err) {\n                console.log(\"There was an error:\", err);\n                return;\n            }\n            \n            if (!pidAttach) {\n                // no --pid\n                attachToChild(\"127.0.0.1\", info.debugport, port, pid, info.id);\n            }\n            else {\n                // --pid\n                attachToPid(\"127.0.0.1\", info.debugport, port, pid, info.id);\n            }\n            \n            var params = {\n                name: info.id,\n                serverhost: \"127.0.0.1\",\n                serverport: program.serverport,\n                debugserverport: info.debugport,\n                debugport: port,\n                debugpid: pid\n            }\n            \n            console.log(\"- nodbg params:\", JSON.stringify(params));\n            console.log(\"- nodbg started!\");\n            console.log(\"- Connect to http://localhost:\" + program.serverport + \"/debug/\" + info.id);\n            console.log();\n            \n            openBrowser(\"http://localhost:\" + program.serverport + \"/debug/\" + info.id);\n        });\n    }, 500);\n};\n    \nprogram\n    .command('remote [cmd]')\n    .description('debug and connect to www.nodbg.com')\n    .action(doRemote);\n    \nprogram\n    .command('local [cmd]')\n    .description('debug and connect locally')\n    .action(doLocal);\n\nprogram\n    .command('*')\n    .description('debug and connect to www.nodbg.com')\n    .action(doRemote);\n    \nprogram\n    .command('help')\n    .description(\"display help\")\n    .action(function() {\n        program.help();\n    });\n    \nprogram\n    .command('*')\n    .action(function() {\n        console.log(\"  Unknown command:\", program.args[0]);\n        program.help();\n    });\n    \nprogram.parse(process.argv);\n\nif (program.args.length === 0) {\n    program.help();\n}\n"]}