cli-router
Advanced tools
Comparing version 0.1.0 to 0.1.1
@@ -60,2 +60,2 @@ 'use strict'; | ||
}); | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsaV9jb250cm9sbGVyX3NwZWMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7MEJBQWMsZUFBZTs7OztpQ0FFQyx1QkFBdUI7O0FBRXJELFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxZQUFXO0FBQzFDLElBQUUsQ0FBQywrQ0FBK0MsRUFBRSxZQUFXO1FBQ3ZELHdCQUF3QjtlQUF4Qix3QkFBd0I7OEJBQXhCLHdCQUF3Qjs7Ozs7OztnQkFBeEIsd0JBQXdCOzttQkFBeEIsd0JBQXdCOztlQUN2QixlQUFDLElBQUksRUFBRTtBQUNWLGlCQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNoQjs7O2VBRVksdUJBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtBQUMxQixjQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZCLDRDQVBFLHdCQUF3QiwrQ0FPQyxNQUFNLEVBQUUsSUFBSSxFQUFFO1NBQzFDOzs7ZUFFVyxzQkFBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQzNCLDRDQVhFLHdCQUF3Qiw4Q0FXQSxNQUFNLE9BQUssTUFBTSxpQkFBYztTQUMxRDs7O2FBWkcsd0JBQXdCOzBCQUp6QixhQUFhOztBQW1CbEIsUUFBSSxVQUFVLEdBQUcsSUFBSSx3QkFBd0IsRUFBRSxDQUFDO0FBQ2hELFFBQUksTUFBTSxHQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztBQUNuRSw0QkFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0dBQzdDLENBQUMsQ0FBQztDQUNKLENBQUMsQ0FBQyIsImZpbGUiOiJjbGlfY29udHJvbGxlcl9zcGVjLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGggZnJvbSAnLi9zcGVjLWhlbHBlcic7XG5cbmltcG9ydCB7IENsaUNvbnRyb2xsZXIgfSBmcm9tICcuLi9zcmMvY2xpX2NvbnRyb2xsZXInO1xuXG5kZXNjcmliZSgnQ2xpQ29udHJvbGxlciBtb2R1bGUnLCBmdW5jdGlvbigpIHtcbiAgaXQoXCJzaG91bGQgY2FsbCBob29rcyBiZWZvcmUgYW5kIGFmdGVyIHJ1biBhY3Rpb25cIiwgZnVuY3Rpb24oKSB7XG4gICAgY2xhc3MgQmVmb3JlQW5kQWZ0ZXJDb250cm9sbGVyIGV4dGVuZHMgQ2xpQ29udHJvbGxlciB7XG4gICAgICBpbmRleChhcmdzKSB7XG4gICAgICAgIHJldHVybiBhcmdzWzBdO1xuICAgICAgfVxuXG4gICAgICBiZWZvcmVfYWN0aW9uKGFjdGlvbiwgYXJncykge1xuICAgICAgICBhcmdzLnVuc2hpZnQoJ2JlZm9yZScpO1xuICAgICAgICByZXR1cm4gc3VwZXIuYmVmb3JlX2FjdGlvbihhY3Rpb24sIGFyZ3MpO1xuICAgICAgfVxuXG4gICAgICBhZnRlcl9hY3Rpb24oYWN0aW9uLCByZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmFmdGVyX2FjdGlvbihhY3Rpb24sIGAke3Jlc3VsdH0gYW5kIGFmdGVyYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGNvbnRyb2xsZXIgPSBuZXcgQmVmb3JlQW5kQWZ0ZXJDb250cm9sbGVyKCk7XG4gICAgdmFyIHJlc3VsdCAgICAgPSBjb250cm9sbGVyLnJ1bl9hY3Rpb24oJ2luZGV4JywgWydub3Qgc2hvdyB0aGlzJ10pO1xuICAgIGguZXhwZWN0KHJlc3VsdCkudG8uZXFsKCdiZWZvcmUgYW5kIGFmdGVyJyk7XG4gIH0pO1xufSk7XG4iXSwic291cmNlUm9vdCI6Ii9jbGktcm91dGVyOjAuMC4xMC9zcGVjIn0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsaV9jb250cm9sbGVyX3NwZWMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7MEJBQWMsZUFBZTs7OztpQ0FFQyx1QkFBdUI7O0FBRXJELFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxZQUFXO0FBQzFDLElBQUUsQ0FBQywrQ0FBK0MsRUFBRSxZQUFXO1FBQ3ZELHdCQUF3QjtlQUF4Qix3QkFBd0I7OEJBQXhCLHdCQUF3Qjs7Ozs7OztnQkFBeEIsd0JBQXdCOzttQkFBeEIsd0JBQXdCOztlQUN2QixlQUFDLElBQUksRUFBRTtBQUNWLGlCQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNoQjs7O2VBRVksdUJBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtBQUMxQixjQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZCLDRDQVBFLHdCQUF3QiwrQ0FPQyxNQUFNLEVBQUUsSUFBSSxFQUFFO1NBQzFDOzs7ZUFFVyxzQkFBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQzNCLDRDQVhFLHdCQUF3Qiw4Q0FXQSxNQUFNLE9BQUssTUFBTSxpQkFBYztTQUMxRDs7O2FBWkcsd0JBQXdCOzBCQUp6QixhQUFhOztBQW1CbEIsUUFBSSxVQUFVLEdBQUcsSUFBSSx3QkFBd0IsRUFBRSxDQUFDO0FBQ2hELFFBQUksTUFBTSxHQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztBQUNuRSw0QkFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0dBQzdDLENBQUMsQ0FBQztDQUNKLENBQUMsQ0FBQyIsImZpbGUiOiJjbGlfY29udHJvbGxlcl9zcGVjLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGggZnJvbSAnLi9zcGVjLWhlbHBlcic7XG5cbmltcG9ydCB7IENsaUNvbnRyb2xsZXIgfSBmcm9tICcuLi9zcmMvY2xpX2NvbnRyb2xsZXInO1xuXG5kZXNjcmliZSgnQ2xpQ29udHJvbGxlciBtb2R1bGUnLCBmdW5jdGlvbigpIHtcbiAgaXQoXCJzaG91bGQgY2FsbCBob29rcyBiZWZvcmUgYW5kIGFmdGVyIHJ1biBhY3Rpb25cIiwgZnVuY3Rpb24oKSB7XG4gICAgY2xhc3MgQmVmb3JlQW5kQWZ0ZXJDb250cm9sbGVyIGV4dGVuZHMgQ2xpQ29udHJvbGxlciB7XG4gICAgICBpbmRleChhcmdzKSB7XG4gICAgICAgIHJldHVybiBhcmdzWzBdO1xuICAgICAgfVxuXG4gICAgICBiZWZvcmVfYWN0aW9uKGFjdGlvbiwgYXJncykge1xuICAgICAgICBhcmdzLnVuc2hpZnQoJ2JlZm9yZScpO1xuICAgICAgICByZXR1cm4gc3VwZXIuYmVmb3JlX2FjdGlvbihhY3Rpb24sIGFyZ3MpO1xuICAgICAgfVxuXG4gICAgICBhZnRlcl9hY3Rpb24oYWN0aW9uLCByZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmFmdGVyX2FjdGlvbihhY3Rpb24sIGAke3Jlc3VsdH0gYW5kIGFmdGVyYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGNvbnRyb2xsZXIgPSBuZXcgQmVmb3JlQW5kQWZ0ZXJDb250cm9sbGVyKCk7XG4gICAgdmFyIHJlc3VsdCAgICAgPSBjb250cm9sbGVyLnJ1bl9hY3Rpb24oJ2luZGV4JywgWydub3Qgc2hvdyB0aGlzJ10pO1xuICAgIGguZXhwZWN0KHJlc3VsdCkudG8uZXFsKCdiZWZvcmUgYW5kIGFmdGVyJyk7XG4gIH0pO1xufSk7XG4iXSwic291cmNlUm9vdCI6Ii9jbGktcm91dGVyOjAuMS4wL3NwZWMifQ== |
@@ -11,3 +11,2 @@ 'use strict'; | ||
var R = require('ramda'); | ||
var path = require('path'); | ||
@@ -21,177 +20,167 @@ | ||
it('shoud ordered src of routes', function () { | ||
var cli_router = new _srcCli_router.CliRouter(controllers_root).add('/agent', function () {}).add('/agent/stop', function () {}).add('/start', function () {}).add('/stop', function () {}); | ||
var cli_router = new _srcCli_router.CliRouter(controllers_root).add('help', function (p) { | ||
return p.help || p['--help']; | ||
}).add('agent_start', function (p, args) { | ||
return p.agent && args[1] === 'start'; | ||
}, 'agent.start').add('agent').add('start', null, function () { | ||
var params = arguments[0] === undefined ? {} : arguments[0]; | ||
return 'start ' + params.system; | ||
}).add('vm'); | ||
_specHelper2['default'].expect(cli_router.routes[0].params).to.eql({ controller: 'agent', action: undefined }); | ||
_specHelper2['default'].expect(cli_router.routes[1].params).to.eql({ controller: 'agent', action: 'stop' }); | ||
_specHelper2['default'].expect(cli_router.routes[2].params).to.eql({ controller: 'start', action: undefined }); | ||
_specHelper2['default'].expect(cli_router.routes[3].params).to.eql({ controller: 'stop', action: undefined }); | ||
}); | ||
describe('should ordered routes and check', function () { | ||
it('controller', function () { | ||
_specHelper2['default'].expect(cli_router.routes[0]).to.have.property('controller', 'help'); | ||
_specHelper2['default'].expect(cli_router.routes[1]).to.have.property('controller', 'agent'); | ||
_specHelper2['default'].expect(cli_router.routes[2]).to.have.property('controller', 'agent'); | ||
_specHelper2['default'].expect(cli_router.routes[3]).to.have.property('controller', undefined); | ||
}); | ||
it('should route with agent controller', function () { | ||
var action = '/agent'; | ||
var cli_router = new _srcCli_router.CliRouter(controllers_root).add(action); | ||
it('actions', function () { | ||
_specHelper2['default'].expect(cli_router.routes[0].actions).to.deep.eql([]); | ||
_specHelper2['default'].expect(cli_router.routes[1].actions).to.deep.eql(['start']); | ||
_specHelper2['default'].expect(cli_router.routes[2].actions).to.deep.eql([]); | ||
_specHelper2['default'].expect(cli_router.routes[3].actions).to.deep.eql([]); | ||
}); | ||
var params = cli_router.match(action).params; | ||
var route = cli_router.findRouteByParams(params); | ||
_specHelper2['default'].expect(route).to.have.deep.property('Controller'); | ||
_specHelper2['default'].expect(route).to.have.deep.property('params.controller', 'agent'); | ||
_specHelper2['default'].expect(route).to.have.deep.property('params.action', undefined); | ||
it('fn', function () { | ||
_specHelper2['default'].expect(cli_router.routes[0].fn).to.deep.eql(undefined); | ||
_specHelper2['default'].expect(cli_router.routes[1].fn).to.deep.eql(undefined); | ||
_specHelper2['default'].expect(cli_router.routes[2].fn).to.deep.eql(undefined); | ||
_specHelper2['default'].expect(cli_router.routes[3].fn()).to.deep.eql((function () { | ||
return 'start undefined'; | ||
})()); | ||
}); | ||
}); | ||
it('should route with agent controller and start action', function () { | ||
var action = '/agent/start'; | ||
var cli_router = new _srcCli_router.CliRouter(controllers_root).add(action); | ||
describe('should find route', function () { | ||
it('agent to `agent` command', function () { | ||
var command = 'agent'; | ||
var args = [command]; | ||
var params = {}; | ||
params[command] = true; | ||
var route = cli_router.find(args, params); | ||
var params = cli_router.match(action).params; | ||
var route = cli_router.findRouteByParams(params); | ||
_specHelper2['default'].expect(route).to.have.deep.property('name', command); | ||
_specHelper2['default'].expect(route).to.have.deep.property('controller', command); | ||
_specHelper2['default'].expect(route.actions).to.have.deep.eql([]); | ||
}); | ||
_specHelper2['default'].expect(route).to.have.deep.property('params.controller', 'agent'); | ||
_specHelper2['default'].expect(route).to.have.deep.property('params.action', 'start'); | ||
}); | ||
it('agent_start to `agent start` command', function () { | ||
var command = 'agent'; | ||
var args = [command, 'start']; | ||
var params = { start: true }; | ||
params[command] = true; | ||
var route = cli_router.find(args, params); | ||
it('should fn result of route /agent', function () { | ||
var action = '/agent'; | ||
var cli_router = new _srcCli_router.CliRouter(controllers_root).add(action); | ||
var args = { | ||
agent: true }; | ||
_specHelper2['default'].expect(route).to.have.deep.property('name', 'agent_start'); | ||
_specHelper2['default'].expect(route).to.have.deep.property('controller', command); | ||
_specHelper2['default'].expect(route.actions).to.have.deep.eql(['start']); | ||
}); | ||
var Controller = require(path.join(controllers_root, action)); | ||
var obj = new Controller(); | ||
var data = cli_router.controller(args); | ||
var result = cli_router.getFn(data)(); | ||
it('help to `help` command', function () { | ||
var command = 'help'; | ||
var args = [command]; | ||
var params = {}; | ||
params[command] = true; | ||
var route = cli_router.find(args, params); | ||
_specHelper2['default'].expect(result).to.eql(obj.index()); | ||
}); | ||
_specHelper2['default'].expect(route).to.have.deep.property('name', command); | ||
_specHelper2['default'].expect(route).to.have.deep.property('controller', command); | ||
_specHelper2['default'].expect(route.actions).to.have.deep.eql([]); | ||
}); | ||
describe('run with options', function () { | ||
var should_options = { | ||
'--': false, | ||
'--help': false, | ||
'--log': false, | ||
'--no-daemon': false, | ||
'--open': false, | ||
'--quiet': false, | ||
'--rebuild': false, | ||
'--reload-vm': false, | ||
'--reprovision': false, | ||
'--verbose': 0, | ||
'--version': false, | ||
'<ssh-options>': [], | ||
'<system>': null, | ||
'<to>': null, | ||
agent: false, | ||
help: false, | ||
remove: false, | ||
scale: false, | ||
ssh: false, | ||
start: false, | ||
status: false, | ||
stop: false, | ||
vm: false | ||
}; | ||
it('help to `agent --help` command', function () { | ||
var command = 'agent'; | ||
var args = [command, '--help']; | ||
var params = { '--help': true }; | ||
params[command] = true; | ||
var route = cli_router.find(args, params); | ||
it('should run `agent start demo`', function () { | ||
var options = R.merge(should_options, { | ||
agent: true, | ||
start: true, | ||
'<system>': 'demo' | ||
}); | ||
var cli_router = new _srcCli_router.CliRouter(controllers_root).add('/agent').add('/start', function () { | ||
return 'start'; | ||
}); | ||
_specHelper2['default'].expect(route).to.have.deep.property('name', 'help'); | ||
_specHelper2['default'].expect(route).to.have.deep.property('controller', 'help'); | ||
_specHelper2['default'].expect(route.actions).to.have.deep.eql([]); | ||
}); | ||
var result = cli_router.run(options, controller_opts); | ||
it('agent and get fn to `agent` command', function () { | ||
var command = 'agent'; | ||
var args = [command]; | ||
var params = {}; | ||
params[command] = true; | ||
var route = cli_router.find(args, params); | ||
_specHelper2['default'].expect(result).to.eql('agent start demo'); | ||
}); | ||
var Controller = require(path.join(controllers_root, command)); | ||
var obj = new Controller(); | ||
var result = cli_router.getFn(route, args, { params: params })(); | ||
it('should run `agent start` with function', function () { | ||
var options = R.merge(should_options, { | ||
agent: true, | ||
start: true | ||
}); | ||
var cli_router = new _srcCli_router.CliRouter(controllers_root).add('/agent').add('/agent/start', function () { | ||
return 'agent no start'; | ||
}).add('/start', function () { | ||
return 'start'; | ||
}); | ||
var result = cli_router.run(options, controller_opts); | ||
_specHelper2['default'].expect(result).to.eql('agent no start'); | ||
_specHelper2['default'].expect(result).to.eql(obj.index()); | ||
}); | ||
it('should run `system start` with function', function () { | ||
var options = R.merge(should_options, { | ||
system: true, | ||
start: true }); | ||
var cli_router = new _srcCli_router.CliRouter(controllers_root).add('/system').add('/system/start', function () { | ||
return 'system start'; | ||
}).add('/start', function () { | ||
return 'start'; | ||
}); | ||
it('agent and call sub fn to `agent subagent subcommand` command', function () { | ||
var command = 'agent'; | ||
var args = [command, 'subagent', 'subcommand']; | ||
var params = { | ||
subagent: true, | ||
subcommand: true | ||
}; | ||
params[command] = true; | ||
var route = cli_router.find(args, params); | ||
var result = cli_router.run(options, controller_opts); | ||
_specHelper2['default'].expect(result).to.eql('system start'); | ||
}); | ||
var Controller = require(path.join(controllers_root, command)); | ||
var obj = new Controller(); | ||
var result = cli_router.getFn(route, args, { params: params })(); | ||
it('should run `vm ssh -- echo terminal`', function () { | ||
var options = R.merge(should_options, { | ||
'<ssh-options>': ['echo', 'terminal'], | ||
vm: true, | ||
ssh: true }); | ||
var cli_router = new _srcCli_router.CliRouter(controllers_root).add('/vm'); | ||
var result = cli_router.run(options, controller_opts); | ||
_specHelper2['default'].expect(result).to.eql('echo terminal'); | ||
_specHelper2['default'].expect(result).to.eql(obj.subagent.subcommand()); | ||
}); | ||
}); | ||
it('should run `vm echo -- echo test` with function', function () { | ||
var options = R.merge(should_options, { | ||
'<ssh-options>': ['echo', 'test'], | ||
vm: true, | ||
echo: true }); | ||
var cli_router = new _srcCli_router.CliRouter(controllers_root).add('/vm/echo', function (params) { | ||
return params['ssh-options'].join(' '); | ||
}); | ||
describe('should run', function () { | ||
it('`agent stop demo`', function () { | ||
var args = ['agent', 'stop', 'demo']; | ||
var params = { | ||
agent: true, | ||
stop: true, | ||
'<system>': 'demo' | ||
}; | ||
var result = cli_router.run(options, controller_opts); | ||
_specHelper2['default'].expect(result).to.eql('echo test'); | ||
var result = cli_router.run(args, params, controller_opts); | ||
_specHelper2['default'].expect(result).to.eql('agent stop demo'); | ||
}); | ||
}); | ||
describe('should extracted cmds', function () { | ||
var action = '/agent'; | ||
var cli_router = new _srcCli_router.CliRouter(controllers_root).add(action); | ||
it('from args without options', function () { | ||
var args = { '--': false, | ||
'--no-daemon': false, | ||
'--quiet': false, | ||
'--verbose': 0, | ||
'--version': false, | ||
it('`agent start demo -v`', function () { | ||
var args = ['agent', 'start', 'demo', '-v']; | ||
var params = { | ||
agent: true, | ||
ssh: false, | ||
start: true, | ||
vm: false | ||
'<system>': 'demo', | ||
'--verbose': true | ||
}; | ||
_specHelper2['default'].expect(cli_router.extractCommands(args)).to.eql(['agent', 'start']); | ||
var result = cli_router.run(args, params, controller_opts); | ||
_specHelper2['default'].expect(result).to.eql('agent start demo'); | ||
}); | ||
it('from args with multiple options', function () { | ||
var args = { '--': false, | ||
'--no-daemon': true, | ||
'--quiet': false, | ||
'--verbose': 0, | ||
'--version': true, | ||
agent: true, | ||
ssh: false, | ||
it('`start old -f`', function () { | ||
var args = ['start', 'old', '-f']; | ||
var params = { | ||
start: true, | ||
vm: false | ||
'<system>': 'old', | ||
'--force': true | ||
}; | ||
_specHelper2['default'].expect(cli_router.extractCommands(args)).to.eql(['agent', 'start']); | ||
var result = cli_router.run(args, params, controller_opts); | ||
_specHelper2['default'].expect(result).to.eql('start old'); | ||
}); | ||
it('`vm ssh -- echo terminal`', function () { | ||
var args = ['vm', 'ssh', '--', 'echo', 'terminal']; | ||
var params = { | ||
vm: true, | ||
ssh: true, | ||
'<ssh-options>': ['echo', 'terminal'] }; | ||
var result = cli_router.run(args, params, controller_opts); | ||
_specHelper2['default'].expect(result).to.eql('echo terminal'); | ||
}); | ||
}); | ||
}); | ||
//# sourceMappingURL=data:application/json;base64,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O0FBQ3RCLHFCQUFhLEVBQUUsSUFBSTtBQUNuQixpQkFBUyxFQUFFLEtBQUs7QUFDaEIsbUJBQVcsRUFBRSxDQUFDO0FBQ2QsbUJBQVcsRUFBRSxJQUFJO0FBQ2pCLGFBQUssRUFBRSxJQUFJO0FBQ1gsV0FBRyxFQUFFLEtBQUs7QUFDVixhQUFLLEVBQUUsSUFBSTtBQUNYLFVBQUUsRUFBRSxLQUFLO09BQ1YsQ0FBQztBQUNGLDhCQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0tBQ3ZFLENBQUMsQ0FBQztHQUNKLENBQUMsQ0FBQztDQUNKLENBQUMsQ0FBQyIsImZpbGUiOiJjbGlfcm91dGVyX3NwZWMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaCBmcm9tICcuL3NwZWMtaGVscGVyJztcbmltcG9ydCB7IENsaVJvdXRlciB9IGZyb20gJy4uL3NyYy9jbGlfcm91dGVyJztcblxudmFyIFIgICAgPSByZXF1aXJlKCdyYW1kYScpO1xudmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5cbmRlc2NyaWJlKCdDbGlSb3V0ZXIgbW9kdWxlJywgZnVuY3Rpb24oKSB7XG4gIHZhciBjb250cm9sbGVyc19yb290ID0gaC5maXh0dXJlX3JlcXVpcmVfcGF0aCgnY29udHJvbGxlcnMnKTtcbiAgdmFyIGNvbnRyb2xsZXJfb3B0cyA9IHtcbiAgICBjd2Q6IHByb2Nlc3MuY3dkKClcbiAgfTtcblxuICBpdCgnc2hvdWQgb3JkZXJlZCBzcmMgb2Ygcm91dGVzJywgZnVuY3Rpb24oKSB7XG4gICAgdmFyIGNsaV9yb3V0ZXIgPSBuZXcgQ2xpUm91dGVyKGNvbnRyb2xsZXJzX3Jvb3QpXG4gICAgICAuYWRkKCcvYWdlbnQnLCAoKSA9PiB7fSlcbiAgICAgIC5hZGQoJy9hZ2VudC9zdG9wJywgKCkgPT4ge30pXG4gICAgICAuYWRkKCcvc3RhcnQnLCAoKSA9PiB7fSlcbiAgICAgIC5hZGQoJy9zdG9wJyAsICgpID0+IHt9KTtcblxuICAgIGguZXhwZWN0KGNsaV9yb3V0ZXIucm91dGVzWzBdLnBhcmFtcykudG8uZXFsKHsgY29udHJvbGxlcjogJ2FnZW50JywgYWN0aW9uOiB1bmRlZmluZWQgfSk7XG4gICAgaC5leHBlY3QoY2xpX3JvdXRlci5yb3V0ZXNbMV0ucGFyYW1zKS50by5lcWwoeyBjb250cm9sbGVyOiAnYWdlbnQnLCBhY3Rpb246ICdzdG9wJyB9KTtcbiAgICBoLmV4cGVjdChjbGlfcm91dGVyLnJvdXRlc1syXS5wYXJhbXMpLnRvLmVxbCh7IGNvbnRyb2xsZXI6ICdzdGFydCcsIGFjdGlvbjogdW5kZWZpbmVkIH0pO1xuICAgIGguZXhwZWN0KGNsaV9yb3V0ZXIucm91dGVzWzNdLnBhcmFtcykudG8uZXFsKHsgY29udHJvbGxlcjogJ3N0b3AnICwgYWN0aW9uOiB1bmRlZmluZWQgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcm91dGUgd2l0aCBhZ2VudCBjb250cm9sbGVyJywgZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFjdGlvbiAgICAgPSAnL2FnZW50JztcbiAgICB2YXIgY2xpX3JvdXRlciA9IG5ldyBDbGlSb3V0ZXIoY29udHJvbGxlcnNfcm9vdClcbiAgICAgIC5hZGQoYWN0aW9uKTtcblxuICAgIHZhciBwYXJhbXMgPSBjbGlfcm91dGVyLm1hdGNoKGFjdGlvbikucGFyYW1zO1xuICAgIHZhciByb3V0ZSAgPSBjbGlfcm91dGVyLmZpbmRSb3V0ZUJ5UGFyYW1zKHBhcmFtcyk7XG5cbiAgICBoLmV4cGVjdChyb3V0ZSkudG8uaGF2ZS5kZWVwLnByb3BlcnR5KCdDb250cm9sbGVyJyk7XG4gICAgaC5leHBlY3Qocm91dGUpLnRvLmhhdmUuZGVlcC5wcm9wZXJ0eSgncGFyYW1zLmNvbnRyb2xsZXInLCAnYWdlbnQnKTtcbiAgICBoLmV4cGVjdChyb3V0ZSkudG8uaGF2ZS5kZWVwLnByb3BlcnR5KCdwYXJhbXMuYWN0aW9uJywgdW5kZWZpbmVkKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByb3V0ZSB3aXRoIGFnZW50IGNvbnRyb2xsZXIgYW5kIHN0YXJ0IGFjdGlvbicsIGZ1bmN0aW9uKCkge1xuICAgIHZhciBhY3Rpb24gICAgID0gJy9hZ2VudC9zdGFydCc7XG4gICAgdmFyIGNsaV9yb3V0ZXIgPSBuZXcgQ2xpUm91dGVyKGNvbnRyb2xsZXJzX3Jvb3QpXG4gICAgICAuYWRkKGFjdGlvbik7XG5cbiAgICB2YXIgcGFyYW1zID0gY2xpX3JvdXRlci5tYXRjaChhY3Rpb24pLnBhcmFtcztcbiAgICB2YXIgcm91dGUgID0gY2xpX3JvdXRlci5maW5kUm91dGVCeVBhcmFtcyhwYXJhbXMpO1xuXG4gICAgaC5leHBlY3Qocm91dGUpLnRvLmhhdmUuZGVlcC5wcm9wZXJ0eSgncGFyYW1zLmNvbnRyb2xsZXInLCAnYWdlbnQnKTtcbiAgICBoLmV4cGVjdChyb3V0ZSkudG8uaGF2ZS5kZWVwLnByb3BlcnR5KCdwYXJhbXMuYWN0aW9uJywgJ3N0YXJ0Jyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZm4gcmVzdWx0IG9mIHJvdXRlIC9hZ2VudCcsIGZ1bmN0aW9uKCkge1xuICAgIHZhciBhY3Rpb24gICAgID0gJy9hZ2VudCc7XG4gICAgdmFyIGNsaV9yb3V0ZXIgPSBuZXcgQ2xpUm91dGVyKGNvbnRyb2xsZXJzX3Jvb3QpXG4gICAgICAuYWRkKGFjdGlvbik7XG4gICAgdmFyIGFyZ3MgPSB7XG4gICAgICBhZ2VudDogdHJ1ZSxcbiAgICB9O1xuXG4gICAgdmFyIENvbnRyb2xsZXIgPSByZXF1aXJlKHBhdGguam9pbihjb250cm9sbGVyc19yb290LCBhY3Rpb24pKTtcbiAgICB2YXIgb2JqICAgID0gbmV3IENvbnRyb2xsZXIoKTtcbiAgICB2YXIgZGF0YSAgID0gY2xpX3JvdXRlci5jb250cm9sbGVyKGFyZ3MpO1xuICAgIHZhciByZXN1bHQgPSBjbGlfcm91dGVyLmdldEZuKGRhdGEpKCk7XG5cbiAgICBoLmV4cGVjdChyZXN1bHQpLnRvLmVxbChvYmouaW5kZXgoKSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdydW4gd2l0aCBvcHRpb25zJywgZnVuY3Rpb24gKCkge1xuICAgIHZhciBzaG91bGRfb3B0aW9ucyA9IHtcbiAgICAgICctLSc6IGZhbHNlLFxuICAgICAgJy0taGVscCc6IGZhbHNlLFxuICAgICAgJy0tbG9nJzogZmFsc2UsXG4gICAgICAnLS1uby1kYWVtb24nOiBmYWxzZSxcbiAgICAgICctLW9wZW4nOiBmYWxzZSxcbiAgICAgICctLXF1aWV0JzogZmFsc2UsXG4gICAgICAnLS1yZWJ1aWxkJzogZmFsc2UsXG4gICAgICAnLS1yZWxvYWQtdm0nOiBmYWxzZSxcbiAgICAgICctLXJlcHJvdmlzaW9uJzogZmFsc2UsXG4gICAgICAnLS12ZXJib3NlJzogMCxcbiAgICAgICctLXZlcnNpb24nOiBmYWxzZSxcbiAgICAgICc8c3NoLW9wdGlvbnM+JzogW10sXG4gICAgICAnPHN5c3RlbT4nOiBudWxsLFxuICAgICAgJzx0bz4nOiBudWxsLFxuICAgICAgYWdlbnQ6IGZhbHNlLFxuICAgICAgaGVscDogZmFsc2UsXG4gICAgICByZW1vdmU6IGZhbHNlLFxuICAgICAgc2NhbGU6IGZhbHNlLFxuICAgICAgc3NoOiBmYWxzZSxcbiAgICAgIHN0YXJ0OiBmYWxzZSxcbiAgICAgIHN0YXR1czogZmFsc2UsXG4gICAgICBzdG9wOiBmYWxzZSxcbiAgICAgIHZtOiBmYWxzZVxuICAgIH07XG5cbiAgICBpdCgnc2hvdWxkIHJ1biBgYWdlbnQgc3RhcnQgZGVtb2AnLCBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBvcHRpb25zID0gUi5tZXJnZShzaG91bGRfb3B0aW9ucywge1xuICAgICAgICBhZ2VudDogdHJ1ZSxcbiAgICAgICAgc3RhcnQ6IHRydWUsXG4gICAgICAgICc8c3lzdGVtPic6ICdkZW1vJ1xuICAgICAgfSk7XG4gICAgICB2YXIgY2xpX3JvdXRlciA9IG5ldyBDbGlSb3V0ZXIoY29udHJvbGxlcnNfcm9vdClcbiAgICAgICAgLmFkZCgnL2FnZW50JylcbiAgICAgICAgLmFkZCgnL3N0YXJ0JywgKCkgPT4gJ3N0YXJ0Jyk7XG5cbiAgICAgIHZhciByZXN1bHQgPSBjbGlfcm91dGVyLnJ1bihvcHRpb25zLCBjb250cm9sbGVyX29wdHMpO1xuXG4gICAgICBoLmV4cGVjdChyZXN1bHQpLnRvLmVxbCgnYWdlbnQgc3RhcnQgZGVtbycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBydW4gYGFnZW50IHN0YXJ0YCB3aXRoIGZ1bmN0aW9uJywgZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgb3B0aW9ucyA9IFIubWVyZ2Uoc2hvdWxkX29wdGlvbnMsIHtcbiAgICAgICAgYWdlbnQ6IHRydWUsXG4gICAgICAgIHN0YXJ0OiB0cnVlXG4gICAgICB9KTtcbiAgICAgIHZhciBjbGlfcm91dGVyID0gbmV3IENsaVJvdXRlcihjb250cm9sbGVyc19yb290KVxuICAgICAgICAuYWRkKCcvYWdlbnQnKVxuICAgICAgICAuYWRkKCcvYWdlbnQvc3RhcnQnLCAoKSA9PiAnYWdlbnQgbm8gc3RhcnQnKVxuICAgICAgICAuYWRkKCcvc3RhcnQnLCAoKSA9PiAnc3RhcnQnKTtcblxuICAgICAgdmFyIHJlc3VsdCA9IGNsaV9yb3V0ZXIucnVuKG9wdGlvbnMsIGNvbnRyb2xsZXJfb3B0cyk7XG4gICAgICBoLmV4cGVjdChyZXN1bHQpLnRvLmVxbCgnYWdlbnQgbm8gc3RhcnQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcnVuIGBzeXN0ZW0gc3RhcnRgIHdpdGggZnVuY3Rpb24nLCBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBvcHRpb25zID0gUi5tZXJnZShzaG91bGRfb3B0aW9ucywge1xuICAgICAgICBzeXN0ZW06IHRydWUsXG4gICAgICAgIHN0YXJ0OiB0cnVlLFxuICAgICAgfSk7XG4gICAgICB2YXIgY2xpX3JvdXRlciA9IG5ldyBDbGlSb3V0ZXIoY29udHJvbGxlcnNfcm9vdClcbiAgICAgICAgLmFkZCgnL3N5c3RlbScpXG4gICAgICAgIC5hZGQoJy9zeXN0ZW0vc3RhcnQnLCAoKSA9PiAnc3lzdGVtIHN0YXJ0JylcbiAgICAgICAgLmFkZCgnL3N0YXJ0JywgKCkgPT4gJ3N0YXJ0Jyk7XG5cbiAgICAgIHZhciByZXN1bHQgPSBjbGlfcm91dGVyLnJ1bihvcHRpb25zLCBjb250cm9sbGVyX29wdHMpO1xuICAgICAgaC5leHBlY3QocmVzdWx0KS50by5lcWwoJ3N5c3RlbSBzdGFydCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBydW4gYHZtIHNzaCAtLSBlY2hvIHRlcm1pbmFsYCcsIGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIG9wdGlvbnMgPSBSLm1lcmdlKHNob3VsZF9vcHRpb25zLCB7XG4gICAgICAgICc8c3NoLW9wdGlvbnM+JzogWydlY2hvJywgJ3Rlcm1pbmFsJ10sXG4gICAgICAgIHZtOiB0cnVlLFxuICAgICAgICBzc2g6IHRydWUsXG4gICAgICB9KTtcbiAgICAgIHZhciBjbGlfcm91dGVyID0gbmV3IENsaVJvdXRlcihjb250cm9sbGVyc19yb290KVxuICAgICAgICAuYWRkKCcvdm0nKTtcblxuICAgICAgdmFyIHJlc3VsdCA9IGNsaV9yb3V0ZXIucnVuKG9wdGlvbnMsIGNvbnRyb2xsZXJfb3B0cyk7XG4gICAgICBoLmV4cGVjdChyZXN1bHQpLnRvLmVxbCgnZWNobyB0ZXJtaW5hbCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBydW4gYHZtIGVjaG8gLS0gZWNobyB0ZXN0YCB3aXRoIGZ1bmN0aW9uJywgZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgb3B0aW9ucyA9IFIubWVyZ2Uoc2hvdWxkX29wdGlvbnMsIHtcbiAgICAgICAgJzxzc2gtb3B0aW9ucz4nOiBbJ2VjaG8nLCAndGVzdCddLFxuICAgICAgICB2bTogdHJ1ZSxcbiAgICAgICAgZWNobzogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgdmFyIGNsaV9yb3V0ZXIgPSBuZXcgQ2xpUm91dGVyKGNvbnRyb2xsZXJzX3Jvb3QpXG4gICAgICAgIC5hZGQoJy92bS9lY2hvJywgKHBhcmFtcykgPT4ge1xuICAgICAgICAgIHJldHVybiBwYXJhbXNbJ3NzaC1vcHRpb25zJ10uam9pbignICcpO1xuICAgICAgICB9KTtcblxuICAgICAgdmFyIHJlc3VsdCA9IGNsaV9yb3V0ZXIucnVuKG9wdGlvbnMsIGNvbnRyb2xsZXJfb3B0cyk7XG4gICAgICBoLmV4cGVjdChyZXN1bHQpLnRvLmVxbCgnZWNobyB0ZXN0Jyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzaG91bGQgZXh0cmFjdGVkIGNtZHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFjdGlvbiA9ICcvYWdlbnQnO1xuICAgIHZhciBjbGlfcm91dGVyID0gbmV3IENsaVJvdXRlcihjb250cm9sbGVyc19yb290KVxuICAgICAgLmFkZChhY3Rpb24pO1xuXG4gICAgaXQoJ2Zyb20gYXJncyB3aXRob3V0IG9wdGlvbnMnLCBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBhcmdzID0geyAnLS0nOiBmYWxzZSxcbiAgICAgICAgJy0tbm8tZGFlbW9uJzogZmFsc2UsXG4gICAgICAgICctLXF1aWV0JzogZmFsc2UsXG4gICAgICAgICctLXZlcmJvc2UnOiAwLFxuICAgICAgICAnLS12ZXJzaW9uJzogZmFsc2UsXG4gICAgICAgIGFnZW50OiB0cnVlLFxuICAgICAgICBzc2g6IGZhbHNlLFxuICAgICAgICBzdGFydDogdHJ1ZSxcbiAgICAgICAgdm06IGZhbHNlXG4gICAgICB9O1xuICAgICAgaC5leHBlY3QoY2xpX3JvdXRlci5leHRyYWN0Q29tbWFuZHMoYXJncykpLnRvLmVxbChbJ2FnZW50JywgJ3N0YXJ0J10pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2Zyb20gYXJncyB3aXRoIG11bHRpcGxlIG9wdGlvbnMnLCBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBhcmdzID0geyAnLS0nOiBmYWxzZSxcbiAgICAgICAgJy0tbm8tZGFlbW9uJzogdHJ1ZSxcbiAgICAgICAgJy0tcXVpZXQnOiBmYWxzZSxcbiAgICAgICAgJy0tdmVyYm9zZSc6IDAsXG4gICAgICAgICctLXZlcnNpb24nOiB0cnVlLFxuICAgICAgICBhZ2VudDogdHJ1ZSxcbiAgICAgICAgc3NoOiBmYWxzZSxcbiAgICAgICAgc3RhcnQ6IHRydWUsXG4gICAgICAgIHZtOiBmYWxzZVxuICAgICAgfTtcbiAgICAgIGguZXhwZWN0KGNsaV9yb3V0ZXIuZXh0cmFjdENvbW1hbmRzKGFyZ3MpKS50by5lcWwoWydhZ2VudCcsICdzdGFydCddKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJzb3VyY2VSb290IjoiL2NsaS1yb3V0ZXI6MC4wLjEwL3NwZWMifQ== | ||
//# sourceMappingURL=data:application/json;base64,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WCxVQUFFLEVBQUUsSUFBSTtBQUNSLFdBQUcsRUFBRSxJQUFJO0FBQ1QsdUJBQWUsRUFBRSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsRUFDdEMsQ0FBQzs7QUFFRixVQUFJLE1BQU0sR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFDM0QsOEJBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7S0FDMUMsQ0FBQyxDQUFDO0dBQ0osQ0FBQyxDQUFDO0NBQ0osQ0FBQyxDQUFDIiwiZmlsZSI6ImNsaV9yb3V0ZXJfc3BlYy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBoIGZyb20gJy4vc3BlYy1oZWxwZXInO1xuaW1wb3J0IHsgQ2xpUm91dGVyIH0gZnJvbSAnLi4vc3JjL2NsaV9yb3V0ZXInO1xuXG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcblxuZGVzY3JpYmUoJ0NsaVJvdXRlciBtb2R1bGUnLCBmdW5jdGlvbigpIHtcbiAgdmFyIGNvbnRyb2xsZXJzX3Jvb3QgPSBoLmZpeHR1cmVfcmVxdWlyZV9wYXRoKCdjb250cm9sbGVycycpO1xuICB2YXIgY29udHJvbGxlcl9vcHRzID0ge1xuICAgIGN3ZDogcHJvY2Vzcy5jd2QoKVxuICB9O1xuXG4gIHZhciBjbGlfcm91dGVyID0gbmV3IENsaVJvdXRlcihjb250cm9sbGVyc19yb290KVxuICAgIC5hZGQoJ2hlbHAnLCAocCkgPT4gcC5oZWxwIHx8IHBbJy0taGVscCddKVxuICAgIC5hZGQoJ2FnZW50X3N0YXJ0JywgKHAsIGFyZ3MpID0+IHAuYWdlbnQgJiYgYXJnc1sxXSA9PT0gJ3N0YXJ0JywgJ2FnZW50LnN0YXJ0JylcbiAgICAuYWRkKCdhZ2VudCcpXG4gICAgLmFkZCgnc3RhcnQnLCBudWxsLCAocGFyYW1zPXt9KSA9PiBgc3RhcnQgJHtwYXJhbXMuc3lzdGVtfWApXG4gICAgLmFkZCgndm0nKTtcblxuICBkZXNjcmliZSgnc2hvdWxkIG9yZGVyZWQgcm91dGVzIGFuZCBjaGVjaycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnY29udHJvbGxlcicsIGZ1bmN0aW9uKCkge1xuICAgICAgaC5leHBlY3QoY2xpX3JvdXRlci5yb3V0ZXNbMF0pLnRvLmhhdmUucHJvcGVydHkoJ2NvbnRyb2xsZXInLCAnaGVscCcpO1xuICAgICAgaC5leHBlY3QoY2xpX3JvdXRlci5yb3V0ZXNbMV0pLnRvLmhhdmUucHJvcGVydHkoJ2NvbnRyb2xsZXInLCAnYWdlbnQnKTtcbiAgICAgIGguZXhwZWN0KGNsaV9yb3V0ZXIucm91dGVzWzJdKS50by5oYXZlLnByb3BlcnR5KCdjb250cm9sbGVyJywgJ2FnZW50Jyk7XG4gICAgICBoLmV4cGVjdChjbGlfcm91dGVyLnJvdXRlc1szXSkudG8uaGF2ZS5wcm9wZXJ0eSgnY29udHJvbGxlcicsIHVuZGVmaW5lZCk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWN0aW9ucycsIGZ1bmN0aW9uKCkge1xuICAgICAgaC5leHBlY3QoY2xpX3JvdXRlci5yb3V0ZXNbMF0uYWN0aW9ucykudG8uZGVlcC5lcWwoW10pO1xuICAgICAgaC5leHBlY3QoY2xpX3JvdXRlci5yb3V0ZXNbMV0uYWN0aW9ucykudG8uZGVlcC5lcWwoWydzdGFydCddKTtcbiAgICAgIGguZXhwZWN0KGNsaV9yb3V0ZXIucm91dGVzWzJdLmFjdGlvbnMpLnRvLmRlZXAuZXFsKFtdKTtcbiAgICAgIGguZXhwZWN0KGNsaV9yb3V0ZXIucm91dGVzWzNdLmFjdGlvbnMpLnRvLmRlZXAuZXFsKFtdKTtcbiAgICB9KTtcblxuICAgIGl0KCdmbicsIGZ1bmN0aW9uKCkge1xuICAgICAgaC5leHBlY3QoY2xpX3JvdXRlci5yb3V0ZXNbMF0uZm4pLnRvLmRlZXAuZXFsKHVuZGVmaW5lZCk7XG4gICAgICBoLmV4cGVjdChjbGlfcm91dGVyLnJvdXRlc1sxXS5mbikudG8uZGVlcC5lcWwodW5kZWZpbmVkKTtcbiAgICAgIGguZXhwZWN0KGNsaV9yb3V0ZXIucm91dGVzWzJdLmZuKS50by5kZWVwLmVxbCh1bmRlZmluZWQpO1xuICAgICAgaC5leHBlY3QoY2xpX3JvdXRlci5yb3V0ZXNbM10uZm4oKSkudG8uZGVlcC5lcWwoKCgpID0+ICdzdGFydCB1bmRlZmluZWQnKSgpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Nob3VsZCBmaW5kIHJvdXRlJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdhZ2VudCB0byBgYWdlbnRgIGNvbW1hbmQnLCBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBjb21tYW5kID0gJ2FnZW50JztcbiAgICAgIHZhciBhcmdzICAgID0gWyBjb21tYW5kIF07XG4gICAgICB2YXIgcGFyYW1zICA9IHt9O1xuICAgICAgcGFyYW1zW2NvbW1hbmRdID0gdHJ1ZTtcbiAgICAgIHZhciByb3V0ZSAgPSBjbGlfcm91dGVyLmZpbmQoYXJncywgcGFyYW1zKTtcblxuICAgICAgaC5leHBlY3Qocm91dGUpLnRvLmhhdmUuZGVlcC5wcm9wZXJ0eSgnbmFtZScsIGNvbW1hbmQpO1xuICAgICAgaC5leHBlY3Qocm91dGUpLnRvLmhhdmUuZGVlcC5wcm9wZXJ0eSgnY29udHJvbGxlcicsIGNvbW1hbmQpO1xuICAgICAgaC5leHBlY3Qocm91dGUuYWN0aW9ucykudG8uaGF2ZS5kZWVwLmVxbChbXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWdlbnRfc3RhcnQgdG8gYGFnZW50IHN0YXJ0YCBjb21tYW5kJywgZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgY29tbWFuZCA9ICdhZ2VudCc7XG4gICAgICB2YXIgYXJncyAgICA9IFsgY29tbWFuZCwgJ3N0YXJ0JyBdO1xuICAgICAgdmFyIHBhcmFtcyAgPSB7IHN0YXJ0OiB0cnVlIH07XG4gICAgICBwYXJhbXNbY29tbWFuZF0gPSB0cnVlO1xuICAgICAgdmFyIHJvdXRlICA9IGNsaV9yb3V0ZXIuZmluZChhcmdzLCBwYXJhbXMpO1xuXG4gICAgICBoLmV4cGVjdChyb3V0ZSkudG8uaGF2ZS5kZWVwLnByb3BlcnR5KCduYW1lJywgJ2FnZW50X3N0YXJ0Jyk7XG4gICAgICBoLmV4cGVjdChyb3V0ZSkudG8uaGF2ZS5kZWVwLnByb3BlcnR5KCdjb250cm9sbGVyJywgY29tbWFuZCk7XG4gICAgICBoLmV4cGVjdChyb3V0ZS5hY3Rpb25zKS50by5oYXZlLmRlZXAuZXFsKFsnc3RhcnQnXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGVscCB0byBgaGVscGAgY29tbWFuZCcsIGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGNvbW1hbmQgPSAnaGVscCc7XG4gICAgICB2YXIgYXJncyAgICA9IFsgY29tbWFuZCBdO1xuICAgICAgdmFyIHBhcmFtcyAgPSB7fTtcbiAgICAgIHBhcmFtc1tjb21tYW5kXSA9IHRydWU7XG4gICAgICB2YXIgcm91dGUgID0gY2xpX3JvdXRlci5maW5kKGFyZ3MsIHBhcmFtcyk7XG5cbiAgICAgIGguZXhwZWN0KHJvdXRlKS50by5oYXZlLmRlZXAucHJvcGVydHkoJ25hbWUnLCBjb21tYW5kKTtcbiAgICAgIGguZXhwZWN0KHJvdXRlKS50by5oYXZlLmRlZXAucHJvcGVydHkoJ2NvbnRyb2xsZXInLCBjb21tYW5kKTtcbiAgICAgIGguZXhwZWN0KHJvdXRlLmFjdGlvbnMpLnRvLmhhdmUuZGVlcC5lcWwoW10pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hlbHAgdG8gYGFnZW50IC0taGVscGAgY29tbWFuZCcsIGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGNvbW1hbmQgPSAnYWdlbnQnO1xuICAgICAgdmFyIGFyZ3MgICAgPSBbIGNvbW1hbmQsICctLWhlbHAnIF07XG4gICAgICB2YXIgcGFyYW1zICA9IHsgJy0taGVscCc6IHRydWUgfTtcbiAgICAgIHBhcmFtc1tjb21tYW5kXSAgID0gdHJ1ZTtcbiAgICAgIHZhciByb3V0ZSAgPSBjbGlfcm91dGVyLmZpbmQoYXJncywgcGFyYW1zKTtcblxuICAgICAgaC5leHBlY3Qocm91dGUpLnRvLmhhdmUuZGVlcC5wcm9wZXJ0eSgnbmFtZScsICdoZWxwJyk7XG4gICAgICBoLmV4cGVjdChyb3V0ZSkudG8uaGF2ZS5kZWVwLnByb3BlcnR5KCdjb250cm9sbGVyJywgJ2hlbHAnKTtcbiAgICAgIGguZXhwZWN0KHJvdXRlLmFjdGlvbnMpLnRvLmhhdmUuZGVlcC5lcWwoW10pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FnZW50IGFuZCBnZXQgZm4gdG8gYGFnZW50YCBjb21tYW5kJywgZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgY29tbWFuZCA9ICdhZ2VudCc7XG4gICAgICB2YXIgYXJncyAgICA9IFsgY29tbWFuZCBdO1xuICAgICAgdmFyIHBhcmFtcyAgPSB7fTtcbiAgICAgIHBhcmFtc1tjb21tYW5kXSA9IHRydWU7XG4gICAgICB2YXIgcm91dGUgID0gY2xpX3JvdXRlci5maW5kKGFyZ3MsIHBhcmFtcyk7XG5cbiAgICAgIHZhciBDb250cm9sbGVyID0gcmVxdWlyZShwYXRoLmpvaW4oY29udHJvbGxlcnNfcm9vdCwgY29tbWFuZCkpO1xuICAgICAgdmFyIG9iaiAgICA9IG5ldyBDb250cm9sbGVyKCk7XG4gICAgICB2YXIgcmVzdWx0ID0gY2xpX3JvdXRlci5nZXRGbihyb3V0ZSwgYXJncywgeyBwYXJhbXMgfSkoKTtcblxuICAgICAgaC5leHBlY3QocmVzdWx0KS50by5lcWwob2JqLmluZGV4KCkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FnZW50IGFuZCBjYWxsIHN1YiBmbiB0byBgYWdlbnQgc3ViYWdlbnQgc3ViY29tbWFuZGAgY29tbWFuZCcsIGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGNvbW1hbmQgPSAnYWdlbnQnO1xuICAgICAgdmFyIGFyZ3MgICAgPSBbIGNvbW1hbmQsICdzdWJhZ2VudCcsICdzdWJjb21tYW5kJyBdO1xuICAgICAgdmFyIHBhcmFtcyAgPSB7XG4gICAgICAgIHN1YmFnZW50OiB0cnVlLFxuICAgICAgICBzdWJjb21tYW5kOiB0cnVlXG4gICAgICB9O1xuICAgICAgcGFyYW1zW2NvbW1hbmRdID0gdHJ1ZTtcbiAgICAgIHZhciByb3V0ZSAgPSBjbGlfcm91dGVyLmZpbmQoYXJncywgcGFyYW1zKTtcblxuICAgICAgdmFyIENvbnRyb2xsZXIgPSByZXF1aXJlKHBhdGguam9pbihjb250cm9sbGVyc19yb290LCBjb21tYW5kKSk7XG4gICAgICB2YXIgb2JqICAgID0gbmV3IENvbnRyb2xsZXIoKTtcbiAgICAgIHZhciByZXN1bHQgPSBjbGlfcm91dGVyLmdldEZuKHJvdXRlLCBhcmdzLCB7IHBhcmFtcyB9KSgpO1xuXG4gICAgICBoLmV4cGVjdChyZXN1bHQpLnRvLmVxbChvYmouc3ViYWdlbnQuc3ViY29tbWFuZCgpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Nob3VsZCBydW4nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ2BhZ2VudCBzdG9wIGRlbW9gJywgZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgYXJncyAgID0gWyAnYWdlbnQnLCAnc3RvcCcsICdkZW1vJyBdO1xuICAgICAgdmFyIHBhcmFtcyA9IHtcbiAgICAgICAgYWdlbnQ6IHRydWUsXG4gICAgICAgIHN0b3A6IHRydWUsXG4gICAgICAgICc8c3lzdGVtPic6ICdkZW1vJ1xuICAgICAgfTtcblxuICAgICAgdmFyIHJlc3VsdCA9IGNsaV9yb3V0ZXIucnVuKGFyZ3MsIHBhcmFtcywgY29udHJvbGxlcl9vcHRzKTtcbiAgICAgIGguZXhwZWN0KHJlc3VsdCkudG8uZXFsKCdhZ2VudCBzdG9wIGRlbW8nKTtcbiAgICB9KTtcblxuICAgIGl0KCdgYWdlbnQgc3RhcnQgZGVtbyAtdmAnLCBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBhcmdzICAgPSBbICdhZ2VudCcsICdzdGFydCcsICdkZW1vJywgJy12JyBdO1xuICAgICAgdmFyIHBhcmFtcyA9IHtcbiAgICAgICAgYWdlbnQ6IHRydWUsXG4gICAgICAgIHN0YXJ0OiB0cnVlLFxuICAgICAgICAnPHN5c3RlbT4nOiAnZGVtbycsXG4gICAgICAgICctLXZlcmJvc2UnOiB0cnVlXG4gICAgICB9O1xuXG4gICAgICB2YXIgcmVzdWx0ID0gY2xpX3JvdXRlci5ydW4oYXJncywgcGFyYW1zLCBjb250cm9sbGVyX29wdHMpO1xuICAgICAgaC5leHBlY3QocmVzdWx0KS50by5lcWwoJ2FnZW50IHN0YXJ0IGRlbW8nKTtcbiAgICB9KTtcblxuICAgIGl0KCdgc3RhcnQgb2xkIC1mYCcsIGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGFyZ3MgICA9IFsgJ3N0YXJ0JywgJ29sZCcsICctZicgXTtcbiAgICAgIHZhciBwYXJhbXMgPSB7XG4gICAgICAgIHN0YXJ0OiB0cnVlLFxuICAgICAgICAnPHN5c3RlbT4nOiAnb2xkJyxcbiAgICAgICAgJy0tZm9yY2UnOiB0cnVlXG4gICAgICB9O1xuXG4gICAgICB2YXIgcmVzdWx0ID0gY2xpX3JvdXRlci5ydW4oYXJncywgcGFyYW1zLCBjb250cm9sbGVyX29wdHMpO1xuICAgICAgaC5leHBlY3QocmVzdWx0KS50by5lcWwoJ3N0YXJ0IG9sZCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2B2bSBzc2ggLS0gZWNobyB0ZXJtaW5hbGAnLCBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBhcmdzID0gWyd2bScsICdzc2gnLCAnLS0nLCAnZWNobycsICd0ZXJtaW5hbCddO1xuICAgICAgdmFyIHBhcmFtcyA9IHtcbiAgICAgICAgdm06IHRydWUsXG4gICAgICAgIHNzaDogdHJ1ZSxcbiAgICAgICAgJzxzc2gtb3B0aW9ucz4nOiBbJ2VjaG8nLCAndGVybWluYWwnXSxcbiAgICAgIH07XG5cbiAgICAgIHZhciByZXN1bHQgPSBjbGlfcm91dGVyLnJ1bihhcmdzLCBwYXJhbXMsIGNvbnRyb2xsZXJfb3B0cyk7XG4gICAgICBoLmV4cGVjdChyZXN1bHQpLnRvLmVxbCgnZWNobyB0ZXJtaW5hbCcpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIvY2xpLXJvdXRlcjowLjEuMC9zcGVjIn0= |
'use strict'; | ||
var _get = function get(_x3, _x4, _x5) { var _again = true; _function: while (_again) { desc = parent = getter = undefined; _again = false; var object = _x3, | ||
property = _x4, | ||
receiver = _x5; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x3 = parent; _x4 = property; _x5 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; | ||
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); | ||
@@ -11,5 +15,5 @@ | ||
var Agent = (function (_CliController) { | ||
function Agent() { | ||
_classCallCheck(this, Agent); | ||
var SubAgent = (function (_CliController) { | ||
function SubAgent() { | ||
_classCallCheck(this, SubAgent); | ||
@@ -21,4 +25,28 @@ if (_CliController != null) { | ||
_inherits(Agent, _CliController); | ||
_inherits(SubAgent, _CliController); | ||
_createClass(SubAgent, [{ | ||
key: 'subcommand', | ||
value: function subcommand() { | ||
return 'subcommand'; | ||
} | ||
}]); | ||
return SubAgent; | ||
})(_srcCli_controller.CliController); | ||
var Agent = (function (_CliController2) { | ||
function Agent() { | ||
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { | ||
args[_key] = arguments[_key]; | ||
} | ||
_classCallCheck(this, Agent); | ||
_get(Object.getPrototypeOf(Agent.prototype), 'constructor', this).apply(this, args); | ||
this.subagent = new SubAgent(); | ||
} | ||
_inherits(Agent, _CliController2); | ||
_createClass(Agent, [{ | ||
@@ -39,3 +67,5 @@ key: 'index', | ||
value: function stop() { | ||
return 'agent stop'; | ||
var params = arguments[0] === undefined ? {} : arguments[0]; | ||
return 'agent stop ' + params.system; | ||
} | ||
@@ -48,2 +78,2 @@ }]); | ||
module.exports = Agent; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpeHR1cmVzL2NvbnRyb2xsZXJzL2FnZW50LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O2lDQUE4Qiw2QkFBNkI7O0lBRXJELEtBQUs7V0FBTCxLQUFLOzBCQUFMLEtBQUs7Ozs7Ozs7WUFBTCxLQUFLOztlQUFMLEtBQUs7O1dBQ0osaUJBQUc7QUFDTixhQUFPLE9BQU8sQ0FBQztLQUNoQjs7O1dBRUksaUJBQVk7VUFBWCxNQUFNLGdDQUFDLEVBQUU7O0FBQ2IsOEJBQXNCLE1BQU0sQ0FBQyxNQUFNLENBQUc7S0FDdkM7OztXQUVHLGdCQUFHO0FBQ0wsYUFBTyxZQUFZLENBQUM7S0FDckI7OztTQVhHLEtBQUs7c0JBRkYsYUFBYTs7QUFnQnRCLE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDIiwiZmlsZSI6ImZpeHR1cmVzL2NvbnRyb2xsZXJzL2FnZW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2xpQ29udHJvbGxlciB9IGZyb20gJy4uLy4uLy4uL3NyYy9jbGlfY29udHJvbGxlcic7XG5cbmNsYXNzIEFnZW50IGV4dGVuZHMgQ2xpQ29udHJvbGxlciB7XG4gIGluZGV4KCkge1xuICAgIHJldHVybiAnYWdlbnQnO1xuICB9XG5cbiAgc3RhcnQocGFyYW1zPXt9KSB7XG4gICAgcmV0dXJuIGBhZ2VudCBzdGFydCAke3BhcmFtcy5zeXN0ZW19YDtcbiAgfVxuXG4gIHN0b3AoKSB7XG4gICAgcmV0dXJuICdhZ2VudCBzdG9wJztcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEFnZW50O1xuIl0sInNvdXJjZVJvb3QiOiIvY2xpLXJvdXRlcjowLjAuMTAvc3BlYyJ9 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpeHR1cmVzL2NvbnRyb2xsZXJzL2FnZW50LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztpQ0FBOEIsNkJBQTZCOztJQUVyRCxRQUFRO1dBQVIsUUFBUTswQkFBUixRQUFROzs7Ozs7O1lBQVIsUUFBUTs7ZUFBUixRQUFROztXQUNGLHNCQUFHO0FBQ1gsYUFBTyxZQUFZLENBQUM7S0FDckI7OztTQUhHLFFBQVE7c0JBRkwsYUFBYTs7SUFRaEIsS0FBSztBQUNFLFdBRFAsS0FBSyxHQUNZO3NDQUFOLElBQUk7QUFBSixVQUFJOzs7MEJBRGYsS0FBSzs7QUFFUCwrQkFGRSxLQUFLLDhDQUVFLElBQUksRUFBRTtBQUNmLFFBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztHQUNoQzs7WUFKRyxLQUFLOztlQUFMLEtBQUs7O1dBTUosaUJBQUc7QUFDTixhQUFPLE9BQU8sQ0FBQztLQUNoQjs7O1dBRUksaUJBQVk7VUFBWCxNQUFNLGdDQUFDLEVBQUU7O0FBQ2IsOEJBQXNCLE1BQU0sQ0FBQyxNQUFNLENBQUc7S0FDdkM7OztXQUVHLGdCQUFZO1VBQVgsTUFBTSxnQ0FBQyxFQUFFOztBQUNaLDZCQUFxQixNQUFNLENBQUMsTUFBTSxDQUFHO0tBQ3RDOzs7U0FoQkcsS0FBSztzQkFSRixhQUFhOztBQTJCdEIsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMiLCJmaWxlIjoiZml4dHVyZXMvY29udHJvbGxlcnMvYWdlbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbGlDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2NsaV9jb250cm9sbGVyJztcblxuY2xhc3MgU3ViQWdlbnQgZXh0ZW5kcyBDbGlDb250cm9sbGVyIHtcbiAgc3ViY29tbWFuZCgpIHtcbiAgICByZXR1cm4gJ3N1YmNvbW1hbmQnO1xuICB9XG59XG5cbmNsYXNzIEFnZW50IGV4dGVuZHMgQ2xpQ29udHJvbGxlciB7XG4gIGNvbnN0cnVjdG9yKC4uLmFyZ3MpIHtcbiAgICBzdXBlciguLi5hcmdzKTtcbiAgICB0aGlzLnN1YmFnZW50ID0gbmV3IFN1YkFnZW50KCk7XG4gIH1cblxuICBpbmRleCgpIHtcbiAgICByZXR1cm4gJ2FnZW50JztcbiAgfVxuXG4gIHN0YXJ0KHBhcmFtcz17fSkge1xuICAgIHJldHVybiBgYWdlbnQgc3RhcnQgJHtwYXJhbXMuc3lzdGVtfWA7XG4gIH1cblxuICBzdG9wKHBhcmFtcz17fSkge1xuICAgIHJldHVybiBgYWdlbnQgc3RvcCAke3BhcmFtcy5zeXN0ZW19YDtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEFnZW50O1xuIl0sInNvdXJjZVJvb3QiOiIvY2xpLXJvdXRlcjowLjEuMC9zcGVjIn0= |
@@ -35,2 +35,2 @@ 'use strict'; | ||
module.exports = VM; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpeHR1cmVzL2NvbnRyb2xsZXJzL3ZtLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O2lDQUE4Qiw2QkFBNkI7O0lBRXJELEVBQUU7V0FBRixFQUFFOzBCQUFGLEVBQUU7Ozs7Ozs7WUFBRixFQUFFOztlQUFGLEVBQUU7O1dBQ0gsZUFBWTtVQUFYLE1BQU0sZ0NBQUMsRUFBRTs7QUFDWCxhQUFPLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDeEM7OztTQUhHLEVBQUU7c0JBRkMsYUFBYTs7QUFRdEIsTUFBTSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMiLCJmaWxlIjoiZml4dHVyZXMvY29udHJvbGxlcnMvdm0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbGlDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2NsaV9jb250cm9sbGVyJztcblxuY2xhc3MgVk0gZXh0ZW5kcyBDbGlDb250cm9sbGVyIHtcbiAgc3NoKHBhcmFtcz17fSkge1xuICAgIHJldHVybiBwYXJhbXNbJ3NzaC1vcHRpb25zJ10uam9pbignICcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gVk07XG4iXSwic291cmNlUm9vdCI6Ii9jbGktcm91dGVyOjAuMC4xMC9zcGVjIn0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpeHR1cmVzL2NvbnRyb2xsZXJzL3ZtLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O2lDQUE4Qiw2QkFBNkI7O0lBRXJELEVBQUU7V0FBRixFQUFFOzBCQUFGLEVBQUU7Ozs7Ozs7WUFBRixFQUFFOztlQUFGLEVBQUU7O1dBQ0gsZUFBWTtVQUFYLE1BQU0sZ0NBQUMsRUFBRTs7QUFDWCxhQUFPLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDeEM7OztTQUhHLEVBQUU7c0JBRkMsYUFBYTs7QUFRdEIsTUFBTSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMiLCJmaWxlIjoiZml4dHVyZXMvY29udHJvbGxlcnMvdm0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbGlDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2NsaV9jb250cm9sbGVyJztcblxuY2xhc3MgVk0gZXh0ZW5kcyBDbGlDb250cm9sbGVyIHtcbiAgc3NoKHBhcmFtcz17fSkge1xuICAgIHJldHVybiBwYXJhbXNbJ3NzaC1vcHRpb25zJ10uam9pbignICcpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gVk07XG4iXSwic291cmNlUm9vdCI6Ii9jbGktcm91dGVyOjAuMS4wL3NwZWMifQ== |
@@ -60,7 +60,6 @@ 'use strict'; | ||
cli_options.path = _specHelper2['default'].fixture_path('usage.txt'); | ||
var cli = new TestCli(cli_options); | ||
var doc_opts = { exit: false }; | ||
describe('without version', function () { | ||
var cli = new TestCli(cli_options); | ||
it('show options', function () { | ||
@@ -70,6 +69,8 @@ doc_opts.argv = '--version'; | ||
var options = cli.docopt(doc_opts); | ||
var result = cli.run(doc_opts); | ||
var result = function result() { | ||
return cli.run(doc_opts); | ||
}; | ||
_specHelper2['default'].expect(options).to.have.property('--version', true); | ||
_specHelper2['default'].expect(result).to.eql(undefined); | ||
_specHelper2['default'].expect(result).to['throw'](Error, /Invalid route/); | ||
}); | ||
@@ -95,3 +96,5 @@ }); | ||
var options = cli.docopt(doc_opts); | ||
var result = cli.run(doc_opts); | ||
var result = function result() { | ||
return cli.run(doc_opts); | ||
}; | ||
@@ -102,3 +105,3 @@ _specHelper2['default'].expect(options).to.eql({ | ||
help: false }); | ||
_specHelper2['default'].expect(result).to.eql(undefined); | ||
_specHelper2['default'].expect(result).to['throw'](Error, /Invalid route/); | ||
}); | ||
@@ -124,12 +127,13 @@ | ||
cli_options.path = _specHelper2['default'].fixture_path('usage_full.txt'); | ||
var cli = new TestCli(cli_options).route('agent'); | ||
var doc_opts = { exit: false }; | ||
it('should route /agent', function () { | ||
var cli = new TestCli(cli_options).route('/agent'); | ||
it('should route agent', function () { | ||
doc_opts.argv = ['agent', 'start']; | ||
var result = cli.run(doc_opts, controller_opts); | ||
_specHelper2['default'].expect(cli.routes[0].params).to.eql({ controller: 'agent', action: undefined }); | ||
_specHelper2['default'].expect(cli.routes[0]).to.have.property('controller', 'agent'); | ||
_specHelper2['default'].expect(cli.routes[0].actions).to.deep.eql([]); | ||
_specHelper2['default'].expect(cli.routes[0].fn).to.deep.eql(undefined); | ||
_specHelper2['default'].expect(result).to.eql('agent start null'); | ||
@@ -139,2 +143,2 @@ }); | ||
}); | ||
//# sourceMappingURL=data:application/json;base64,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QyxDQUFDOztBQUVuQixjQUFRLENBQUMsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ25DLFVBQUksTUFBTSxHQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFDOztBQUVqRCw4QkFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztBQUNsRiw4QkFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0tBQzdDLENBQUMsQ0FBQztHQUNKLENBQUMsQ0FBQztDQUNKLENBQUMsQ0FBQyIsImZpbGUiOiJpbmRleF9zcGVjLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGggZnJvbSAnLi9zcGVjLWhlbHBlcic7XG5cbmltcG9ydCB7IENsaSB9IGZyb20gJy4uL3NyYyc7XG5cbmNsYXNzIFRlc3RDbGkgZXh0ZW5kcyBDbGkge1xuICBkb2NvcHQoLi4uYXJncykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gc3VwZXIuZG9jb3B0KC4uLmFyZ3MpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBlLm1lc3NhZ2U7XG4gICAgfVxuICB9XG59XG5cbmRlc2NyaWJlKCdDbGkgbW9kdWxlJywgZnVuY3Rpb24oKSB7XG4gIHZhciBjbGlfb3B0aW9ucyA9IHtcbiAgICBjb250cm9sbGVyc19yb290OiBoLmZpeHR1cmVfcmVxdWlyZV9wYXRoKCdjb250cm9sbGVycycpXG4gIH07XG4gIHZhciBjb250cm9sbGVyX29wdHMgPSB7XG4gICAgY3dkOiBwcm9jZXNzLmN3ZCgpXG4gIH07XG5cbiAgZGVzY3JpYmUoJ3NpbXBsZSB1c2FnZScsIGZ1bmN0aW9uICgpIHtcbiAgICBjbGlfb3B0aW9ucy5wYXRoID0gaC5maXh0dXJlX3BhdGgoJ3VzYWdlLnR4dCcpO1xuICAgIHZhciBkb2Nfb3B0cyA9IHsgZXhpdDogZmFsc2UgfTtcblxuICAgIGRlc2NyaWJlKCd3aXRob3V0IHZlcnNpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgY2xpID0gbmV3IFRlc3RDbGkoY2xpX29wdGlvbnMpO1xuXG4gICAgICBpdCgnc2hvdyBvcHRpb25zJywgZnVuY3Rpb24oKSB7XG4gICAgICAgIGRvY19vcHRzLmFyZ3YgPSAnLS12ZXJzaW9uJztcblxuICAgICAgICB2YXIgb3B0aW9ucyA9IGNsaS5kb2NvcHQoZG9jX29wdHMpO1xuICAgICAgICB2YXIgcmVzdWx0ICA9IGNsaS5ydW4oZG9jX29wdHMpO1xuXG4gICAgICAgIGguZXhwZWN0KG9wdGlvbnMpLnRvLmhhdmUucHJvcGVydHkoXCItLXZlcnNpb25cIiwgdHJ1ZSk7XG4gICAgICAgIGguZXhwZWN0KHJlc3VsdCkudG8uZXFsKHVuZGVmaW5lZCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCd3aXRoIHZlcnNpb24nLCBmdW5jdGlvbigpIHtcbiAgICAgIGNsaV9vcHRpb25zLnZlcnNpb24gPSAnMC4wLjEnO1xuICAgICAgdmFyIGNsaSA9IG5ldyBUZXN0Q2xpKGNsaV9vcHRpb25zKTtcblxuICAgICAgaXQoJ3Nob3cgdmVyc2lvbicsIGZ1bmN0aW9uKCkge1xuICAgICAgICBkb2Nfb3B0cy5hcmd2ID0gJy0tdmVyc2lvbic7XG5cbiAgICAgICAgdmFyIG9wdGlvbnMgPSBjbGkuZG9jb3B0KGRvY19vcHRzKTtcbiAgICAgICAgdmFyIHJlc3VsdCAgPSBjbGkucnVuKGRvY19vcHRzKTtcblxuICAgICAgICBoLmV4cGVjdChvcHRpb25zKS50by5lcWwoXCIwLjAuMVwiKTtcbiAgICAgICAgaC5leHBlY3QocmVzdWx0KS50by5lcWwoJzAuMC4xJyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3dpdGhvdXQgYXJncycsIGZ1bmN0aW9uKCkge1xuICAgICAgICBkb2Nfb3B0cy5hcmd2ID0gW107XG4gICAgICAgIHZhciBvcHRpb25zID0gY2xpLmRvY29wdChkb2Nfb3B0cyk7XG4gICAgICAgIHZhciByZXN1bHQgID0gY2xpLnJ1bihkb2Nfb3B0cyk7XG5cbiAgICAgICAgaC5leHBlY3Qob3B0aW9ucykudG8uZXFsKHtcbiAgICAgICAgICAnLS1oZWxwJzogZmFsc2UsXG4gICAgICAgICAgJy0tdmVyc2lvbic6IGZhbHNlLFxuICAgICAgICAgIGhlbHA6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgaC5leHBlY3QocmVzdWx0KS50by5lcWwodW5kZWZpbmVkKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHNob3cgLS1oZWxwJywgZnVuY3Rpb24oKSB7XG4gICAgICAgIGRvY19vcHRzLmFyZ3YgPSAnLS1oZWxwJztcbiAgICAgICAgdmFyIG91dHB1dCAgPSBjbGkucnVuKGRvY19vcHRzKTtcblxuICAgICAgICBoLmV4cGVjdChvdXRwdXQpLnRvLmVxbChjbGkuaGVscCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBzaG93IGNsaSB2ZXJzaW9uJywgZnVuY3Rpb24oKSB7XG4gICAgICAgIGRvY19vcHRzLmFyZ3YgPSAnLS12ZXJzaW9uJztcbiAgICAgICAgdmFyIG9wdGlvbnMgPSBjbGkuZG9jb3B0KGRvY19vcHRzKTtcblxuICAgICAgICBoLmV4cGVjdChvcHRpb25zKS50by5lcWwoYCR7Y2xpLnZlcnNpb259YCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2Z1bGwgdXNhZ2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgY2xpX29wdGlvbnMucGF0aCA9IGguZml4dHVyZV9wYXRoKCd1c2FnZV9mdWxsLnR4dCcpO1xuXG4gICAgdmFyIGRvY19vcHRzID0geyBleGl0OiBmYWxzZSB9O1xuXG4gICAgaXQoJ3Nob3VsZCByb3V0ZSAvYWdlbnQnLCBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBjbGkgPSBuZXcgVGVzdENsaShjbGlfb3B0aW9ucylcbiAgICAgICAgLnJvdXRlKCcvYWdlbnQnKTtcblxuICAgICAgZG9jX29wdHMuYXJndiA9IFsnYWdlbnQnLCAnc3RhcnQnXTtcbiAgICAgIHZhciByZXN1bHQgID0gY2xpLnJ1bihkb2Nfb3B0cywgY29udHJvbGxlcl9vcHRzKTtcblxuICAgICAgaC5leHBlY3QoY2xpLnJvdXRlc1swXS5wYXJhbXMpLnRvLmVxbCh7IGNvbnRyb2xsZXI6ICdhZ2VudCcsIGFjdGlvbjogdW5kZWZpbmVkIH0pO1xuICAgICAgaC5leHBlY3QocmVzdWx0KS50by5lcWwoJ2FnZW50IHN0YXJ0IG51bGwnKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJzb3VyY2VSb290IjoiL2NsaS1yb3V0ZXI6MC4wLjEwL3NwZWMifQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4X3NwZWMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7MEJBQWMsZUFBZTs7OzttQkFFVCxRQUFROztJQUV0QixPQUFPO1dBQVAsT0FBTzswQkFBUCxPQUFPOzs7Ozs7O1lBQVAsT0FBTzs7ZUFBUCxPQUFPOztXQUNMLGtCQUFVO3dDQUFOLElBQUk7QUFBSixZQUFJOzs7QUFDWixVQUFJO0FBQ0YsMENBSEEsT0FBTyx5Q0FHZ0IsSUFBSSxFQUFFO09BQzlCLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDVixlQUFPLENBQUMsQ0FBQyxPQUFPLENBQUM7T0FDbEI7S0FDRjs7O1NBUEcsT0FBTztRQUZKLEdBQUc7O0FBWVosUUFBUSxDQUFDLFlBQVksRUFBRSxZQUFXO0FBQ2hDLE1BQUksV0FBVyxHQUFHO0FBQ2hCLG9CQUFnQixFQUFFLHdCQUFFLG9CQUFvQixDQUFDLGFBQWEsQ0FBQztHQUN4RCxDQUFDO0FBQ0YsTUFBSSxlQUFlLEdBQUc7QUFDcEIsT0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUU7R0FDbkIsQ0FBQzs7QUFFRixVQUFRLENBQUMsY0FBYyxFQUFFLFlBQVk7QUFDbkMsZUFBVyxDQUFDLElBQUksR0FBRyx3QkFBRSxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDL0MsUUFBSSxHQUFHLEdBQVEsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDeEMsUUFBSSxRQUFRLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7O0FBRS9CLFlBQVEsQ0FBQyxpQkFBaUIsRUFBRSxZQUFZO0FBQ3RDLFFBQUUsQ0FBQyxjQUFjLEVBQUUsWUFBVztBQUM1QixnQkFBUSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUM7O0FBRTVCLFlBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbkMsWUFBSSxNQUFNLEdBQUcsU0FBVCxNQUFNO2lCQUFTLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1NBQUEsQ0FBQzs7QUFFckMsZ0NBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN0RCxnQ0FBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxTQUFNLENBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxDQUFDO09BQ25ELENBQUMsQ0FBQztLQUNKLENBQUMsQ0FBQzs7QUFFSCxZQUFRLENBQUMsY0FBYyxFQUFFLFlBQVc7QUFDbEMsaUJBQVcsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQzlCLFVBQUksR0FBRyxHQUFHLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDOztBQUVuQyxRQUFFLENBQUMsY0FBYyxFQUFFLFlBQVc7QUFDNUIsZ0JBQVEsQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDOztBQUU1QixZQUFJLE9BQU8sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ25DLFlBQUksTUFBTSxHQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7O0FBRWhDLGdDQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2xDLGdDQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO09BQ2xDLENBQUMsQ0FBQzs7QUFFSCxRQUFFLENBQUMsY0FBYyxFQUFFLFlBQVc7QUFDNUIsZ0JBQVEsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ25CLFlBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbkMsWUFBSSxNQUFNLEdBQUcsU0FBVCxNQUFNO2lCQUFTLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1NBQUEsQ0FBQzs7QUFFckMsZ0NBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7QUFDdkIsa0JBQVEsRUFBRSxLQUFLO0FBQ2YscUJBQVcsRUFBRSxLQUFLO0FBQ2xCLGNBQUksRUFBRSxLQUFLLEVBQ1osQ0FBQyxDQUFDO0FBQ0gsZ0NBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsU0FBTSxDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsQ0FBQztPQUNuRCxDQUFDLENBQUM7O0FBRUgsUUFBRSxDQUFDLG9CQUFvQixFQUFFLFlBQVc7QUFDbEMsZ0JBQVEsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO0FBQ3pCLFlBQUksTUFBTSxHQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7O0FBRWhDLGdDQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUNuQyxDQUFDLENBQUM7O0FBRUgsUUFBRSxDQUFDLHlCQUF5QixFQUFFLFlBQVc7QUFDdkMsZ0JBQVEsQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDO0FBQzVCLFlBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7O0FBRW5DLGdDQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUcsQ0FBQztPQUM1QyxDQUFDLENBQUM7S0FDSixDQUFDLENBQUM7R0FDSixDQUFDLENBQUM7O0FBRUgsVUFBUSxDQUFDLFlBQVksRUFBRSxZQUFZO0FBQ2pDLGVBQVcsQ0FBQyxJQUFJLEdBQUcsd0JBQUUsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDcEQsUUFBSSxHQUFHLEdBQUcsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQy9CLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQzs7QUFFbEIsUUFBSSxRQUFRLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7O0FBRS9CLE1BQUUsQ0FBQyxvQkFBb0IsRUFBRSxZQUFXO0FBQ2xDLGNBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDbkMsVUFBSSxNQUFNLEdBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUM7O0FBRWpELDhCQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2hFLDhCQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hELDhCQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2xELDhCQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7S0FDN0MsQ0FBQyxDQUFDO0dBQ0osQ0FBQyxDQUFDO0NBQ0osQ0FBQyxDQUFDIiwiZmlsZSI6ImluZGV4X3NwZWMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaCBmcm9tICcuL3NwZWMtaGVscGVyJztcblxuaW1wb3J0IHsgQ2xpIH0gZnJvbSAnLi4vc3JjJztcblxuY2xhc3MgVGVzdENsaSBleHRlbmRzIENsaSB7XG4gIGRvY29wdCguLi5hcmdzKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBzdXBlci5kb2NvcHQoLi4uYXJncyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGUubWVzc2FnZTtcbiAgICB9XG4gIH1cbn1cblxuZGVzY3JpYmUoJ0NsaSBtb2R1bGUnLCBmdW5jdGlvbigpIHtcbiAgdmFyIGNsaV9vcHRpb25zID0ge1xuICAgIGNvbnRyb2xsZXJzX3Jvb3Q6IGguZml4dHVyZV9yZXF1aXJlX3BhdGgoJ2NvbnRyb2xsZXJzJylcbiAgfTtcbiAgdmFyIGNvbnRyb2xsZXJfb3B0cyA9IHtcbiAgICBjd2Q6IHByb2Nlc3MuY3dkKClcbiAgfTtcblxuICBkZXNjcmliZSgnc2ltcGxlIHVzYWdlJywgZnVuY3Rpb24gKCkge1xuICAgIGNsaV9vcHRpb25zLnBhdGggPSBoLmZpeHR1cmVfcGF0aCgndXNhZ2UudHh0Jyk7XG4gICAgdmFyIGNsaSAgICAgID0gbmV3IFRlc3RDbGkoY2xpX29wdGlvbnMpO1xuICAgIHZhciBkb2Nfb3B0cyA9IHsgZXhpdDogZmFsc2UgfTtcblxuICAgIGRlc2NyaWJlKCd3aXRob3V0IHZlcnNpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnc2hvdyBvcHRpb25zJywgZnVuY3Rpb24oKSB7XG4gICAgICAgIGRvY19vcHRzLmFyZ3YgPSAnLS12ZXJzaW9uJztcblxuICAgICAgICB2YXIgb3B0aW9ucyA9IGNsaS5kb2NvcHQoZG9jX29wdHMpO1xuICAgICAgICB2YXIgcmVzdWx0ID0gKCkgPT4gY2xpLnJ1bihkb2Nfb3B0cyk7XG5cbiAgICAgICAgaC5leHBlY3Qob3B0aW9ucykudG8uaGF2ZS5wcm9wZXJ0eShcIi0tdmVyc2lvblwiLCB0cnVlKTtcbiAgICAgICAgaC5leHBlY3QocmVzdWx0KS50by50aHJvdyhFcnJvciwgL0ludmFsaWQgcm91dGUvKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3dpdGggdmVyc2lvbicsIGZ1bmN0aW9uKCkge1xuICAgICAgY2xpX29wdGlvbnMudmVyc2lvbiA9ICcwLjAuMSc7XG4gICAgICB2YXIgY2xpID0gbmV3IFRlc3RDbGkoY2xpX29wdGlvbnMpO1xuXG4gICAgICBpdCgnc2hvdyB2ZXJzaW9uJywgZnVuY3Rpb24oKSB7XG4gICAgICAgIGRvY19vcHRzLmFyZ3YgPSAnLS12ZXJzaW9uJztcblxuICAgICAgICB2YXIgb3B0aW9ucyA9IGNsaS5kb2NvcHQoZG9jX29wdHMpO1xuICAgICAgICB2YXIgcmVzdWx0ICA9IGNsaS5ydW4oZG9jX29wdHMpO1xuXG4gICAgICAgIGguZXhwZWN0KG9wdGlvbnMpLnRvLmVxbChcIjAuMC4xXCIpO1xuICAgICAgICBoLmV4cGVjdChyZXN1bHQpLnRvLmVxbCgnMC4wLjEnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnd2l0aG91dCBhcmdzJywgZnVuY3Rpb24oKSB7XG4gICAgICAgIGRvY19vcHRzLmFyZ3YgPSBbXTtcbiAgICAgICAgdmFyIG9wdGlvbnMgPSBjbGkuZG9jb3B0KGRvY19vcHRzKTtcbiAgICAgICAgdmFyIHJlc3VsdCA9ICgpID0+IGNsaS5ydW4oZG9jX29wdHMpO1xuXG4gICAgICAgIGguZXhwZWN0KG9wdGlvbnMpLnRvLmVxbCh7XG4gICAgICAgICAgJy0taGVscCc6IGZhbHNlLFxuICAgICAgICAgICctLXZlcnNpb24nOiBmYWxzZSxcbiAgICAgICAgICBoZWxwOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGguZXhwZWN0KHJlc3VsdCkudG8udGhyb3coRXJyb3IsIC9JbnZhbGlkIHJvdXRlLyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBzaG93IC0taGVscCcsIGZ1bmN0aW9uKCkge1xuICAgICAgICBkb2Nfb3B0cy5hcmd2ID0gJy0taGVscCc7XG4gICAgICAgIHZhciBvdXRwdXQgID0gY2xpLnJ1bihkb2Nfb3B0cyk7XG5cbiAgICAgICAgaC5leHBlY3Qob3V0cHV0KS50by5lcWwoY2xpLmhlbHApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgc2hvdyBjbGkgdmVyc2lvbicsIGZ1bmN0aW9uKCkge1xuICAgICAgICBkb2Nfb3B0cy5hcmd2ID0gJy0tdmVyc2lvbic7XG4gICAgICAgIHZhciBvcHRpb25zID0gY2xpLmRvY29wdChkb2Nfb3B0cyk7XG5cbiAgICAgICAgaC5leHBlY3Qob3B0aW9ucykudG8uZXFsKGAke2NsaS52ZXJzaW9ufWApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdmdWxsIHVzYWdlJywgZnVuY3Rpb24gKCkge1xuICAgIGNsaV9vcHRpb25zLnBhdGggPSBoLmZpeHR1cmVfcGF0aCgndXNhZ2VfZnVsbC50eHQnKTtcbiAgICB2YXIgY2xpID0gbmV3IFRlc3RDbGkoY2xpX29wdGlvbnMpXG4gICAgICAucm91dGUoJ2FnZW50Jyk7XG5cbiAgICB2YXIgZG9jX29wdHMgPSB7IGV4aXQ6IGZhbHNlIH07XG5cbiAgICBpdCgnc2hvdWxkIHJvdXRlIGFnZW50JywgZnVuY3Rpb24oKSB7XG4gICAgICBkb2Nfb3B0cy5hcmd2ID0gWydhZ2VudCcsICdzdGFydCddO1xuICAgICAgdmFyIHJlc3VsdCAgPSBjbGkucnVuKGRvY19vcHRzLCBjb250cm9sbGVyX29wdHMpO1xuXG4gICAgICBoLmV4cGVjdChjbGkucm91dGVzWzBdKS50by5oYXZlLnByb3BlcnR5KCdjb250cm9sbGVyJywgJ2FnZW50Jyk7XG4gICAgICBoLmV4cGVjdChjbGkucm91dGVzWzBdLmFjdGlvbnMpLnRvLmRlZXAuZXFsKFtdKTtcbiAgICAgIGguZXhwZWN0KGNsaS5yb3V0ZXNbMF0uZm4pLnRvLmRlZXAuZXFsKHVuZGVmaW5lZCk7XG4gICAgICBoLmV4cGVjdChyZXN1bHQpLnRvLmVxbCgnYWdlbnQgc3RhcnQgbnVsbCcpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIvY2xpLXJvdXRlcjowLjEuMC9zcGVjIn0= |
@@ -29,2 +29,2 @@ 'use strict'; | ||
module.exports = exports['default']; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNwZWMtaGVscGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDOztBQUUzQixJQUFJLE9BQU8sR0FBRztBQUNaLFFBQU0sRUFBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTTs7QUFFdkMsY0FBWSxFQUFBLHdCQUFhO3NDQUFULE9BQU87QUFBUCxhQUFPOzs7QUFDckIsV0FBTyxJQUFJLENBQUMsT0FBTyxNQUFBLENBQVosSUFBSSxHQUNULEdBQUcsRUFBRSxNQUFNLEVBQUUsVUFBVSxTQUFLLE9BQU8sRUFDcEMsQ0FBQztHQUNIOztBQUVELHNCQUFvQixFQUFBLGdDQUFhO3VDQUFULE9BQU87QUFBUCxhQUFPOzs7QUFDN0IsV0FBTyxJQUFJLENBQUMsT0FBTyxNQUFBLENBQVosSUFBSSxHQUNULEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsU0FBSyxPQUFPLEVBQzNDLENBQUM7R0FDSCxFQUNGLENBQUM7O3FCQUVhLE9BQU8iLCJmaWxlIjoic3BlYy1oZWxwZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcblxudmFyIEhlbHBlcnMgPSB7XG4gIGV4cGVjdCA6IHJlcXVpcmUoJ2F6ay1kZXYvY2hhaScpLmV4cGVjdCxcblxuICBmaXh0dXJlX3BhdGgoLi4uZml4dHVyZSkge1xuICAgIHJldHVybiBwYXRoLnJlc29sdmUoXG4gICAgICAnLicsICdzcGVjJywgJ2ZpeHR1cmVzJywgLi4uZml4dHVyZVxuICAgICk7XG4gIH0sXG5cbiAgZml4dHVyZV9yZXF1aXJlX3BhdGgoLi4uZml4dHVyZSkge1xuICAgIHJldHVybiBwYXRoLnJlc29sdmUoXG4gICAgICAnLicsICdsaWInLCAnc3BlYycsICdmaXh0dXJlcycsIC4uLmZpeHR1cmVcbiAgICApO1xuICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgSGVscGVycztcbiJdLCJzb3VyY2VSb290IjoiL2NsaS1yb3V0ZXI6MC4wLjEwL3NwZWMifQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNwZWMtaGVscGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDOztBQUUzQixJQUFJLE9BQU8sR0FBRztBQUNaLFFBQU0sRUFBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTTs7QUFFdkMsY0FBWSxFQUFBLHdCQUFhO3NDQUFULE9BQU87QUFBUCxhQUFPOzs7QUFDckIsV0FBTyxJQUFJLENBQUMsT0FBTyxNQUFBLENBQVosSUFBSSxHQUNULEdBQUcsRUFBRSxNQUFNLEVBQUUsVUFBVSxTQUFLLE9BQU8sRUFDcEMsQ0FBQztHQUNIOztBQUVELHNCQUFvQixFQUFBLGdDQUFhO3VDQUFULE9BQU87QUFBUCxhQUFPOzs7QUFDN0IsV0FBTyxJQUFJLENBQUMsT0FBTyxNQUFBLENBQVosSUFBSSxHQUNULEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsU0FBSyxPQUFPLEVBQzNDLENBQUM7R0FDSCxFQUNGLENBQUM7O3FCQUVhLE9BQU8iLCJmaWxlIjoic3BlYy1oZWxwZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcblxudmFyIEhlbHBlcnMgPSB7XG4gIGV4cGVjdCA6IHJlcXVpcmUoJ2F6ay1kZXYvY2hhaScpLmV4cGVjdCxcblxuICBmaXh0dXJlX3BhdGgoLi4uZml4dHVyZSkge1xuICAgIHJldHVybiBwYXRoLnJlc29sdmUoXG4gICAgICAnLicsICdzcGVjJywgJ2ZpeHR1cmVzJywgLi4uZml4dHVyZVxuICAgICk7XG4gIH0sXG5cbiAgZml4dHVyZV9yZXF1aXJlX3BhdGgoLi4uZml4dHVyZSkge1xuICAgIHJldHVybiBwYXRoLnJlc29sdmUoXG4gICAgICAnLicsICdsaWInLCAnc3BlYycsICdmaXh0dXJlcycsIC4uLmZpeHR1cmVcbiAgICApO1xuICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgSGVscGVycztcbiJdLCJzb3VyY2VSb290IjoiL2NsaS1yb3V0ZXI6MC4xLjAvc3BlYyJ9 |
@@ -66,2 +66,2 @@ 'use strict'; | ||
exports.CliController = CliController; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsaV9jb250cm9sbGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFJLENBQUMsR0FBTSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7O0lBRWYsYUFBYTtBQUNiLFdBREEsYUFBYSxHQUNEOzs7UUFBWCxJQUFJLGdDQUFHLEVBQUU7OzBCQURWLGFBQWE7O0FBRXRCLFVBQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQUMsR0FBRyxFQUFLO0FBQ2pDLFVBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUM1QixjQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztPQUN2QjtLQUNGLENBQUMsQ0FBQztHQUNKOztlQVBVLGFBQWE7O1dBU25CLGlCQUFHO0FBQ04sWUFBTSxJQUFJLEtBQUssQ0FBQyxpRUFBZ0UsQ0FBQyxDQUFDO0tBQ25GOzs7V0FFUyxvQkFBQyxXQUFXLEVBQVc7d0NBQU4sSUFBSTtBQUFKLFlBQUk7OztBQUM3QixVQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRTtBQUM5RCxtQkFBVyxHQUFHLE9BQU8sQ0FBQztPQUN2QjtBQUNELGFBQU8sSUFBSSxDQUFDLGFBQWEsTUFBQSxDQUFsQixJQUFJLEdBQWUsV0FBVyxTQUFLLElBQUksRUFBQyxDQUFDO0tBQ2pEOzs7V0FFWSx1QkFBQyxXQUFXLEVBQVc7eUNBQU4sSUFBSTtBQUFKLFlBQUk7OztBQUNoQyxVQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN4RCxhQUFPLElBQUksQ0FBQyxZQUFZLE1BQUEsQ0FBakIsSUFBSSxHQUFjLFdBQVcsRUFBRSxhQUFhLFNBQUssSUFBSSxFQUFDLENBQUM7S0FDL0Q7OztXQUVXLHNCQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUU7QUFDdkMsYUFBTyxhQUFhLENBQUM7S0FDdEI7OztTQTNCVSxhQUFhOzs7UUFBYixhQUFhLEdBQWIsYUFBYSIsImZpbGUiOiJjbGlfY29udHJvbGxlci5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBSICAgID0gcmVxdWlyZSgncmFtZGEnKTtcblxuZXhwb3J0IGNsYXNzIENsaUNvbnRyb2xsZXIge1xuICBjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcbiAgICBPYmplY3Qua2V5cyhvcHRzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGlmIChvcHRzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgdGhpc1trZXldID0gb3B0c1trZXldO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaW5kZXgoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiRG9uJ3QgdXNlIENsaUNvbnRyb2xsZXIgZGlyZWN0bHksIGltcGxlbWVudGUgdGhlIGluZGV4IGFjdGlvbi5cIik7XG4gIH1cblxuICBydW5fYWN0aW9uKGFjdGlvbl9uYW1lLCAuLi5hcmdzKSB7XG4gICAgaWYgKFIuaXNOaWwoYWN0aW9uX25hbWUpIHx8ICFSLmlzKEZ1bmN0aW9uLCB0aGlzW2FjdGlvbl9uYW1lXSkpIHtcbiAgICAgIGFjdGlvbl9uYW1lID0gJ2luZGV4JztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYmVmb3JlX2FjdGlvbihhY3Rpb25fbmFtZSwgLi4uYXJncyk7XG4gIH1cblxuICBiZWZvcmVfYWN0aW9uKGFjdGlvbl9uYW1lLCAuLi5hcmdzKSB7XG4gICAgdmFyIGFjdGlvbl9yZXN1bHQgPSB0aGlzW2FjdGlvbl9uYW1lXS5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICByZXR1cm4gdGhpcy5hZnRlcl9hY3Rpb24oYWN0aW9uX25hbWUsIGFjdGlvbl9yZXN1bHQsIC4uLmFyZ3MpO1xuICB9XG5cbiAgYWZ0ZXJfYWN0aW9uKGFjdGlvbl9uYW1lLCBhY3Rpb25fcmVzdWx0KSB7XG4gICAgcmV0dXJuIGFjdGlvbl9yZXN1bHQ7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiL2NsaS1yb3V0ZXI6MC4wLjEwL3NyYyJ9 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsaV9jb250cm9sbGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFJLENBQUMsR0FBTSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7O0lBRWYsYUFBYTtBQUNiLFdBREEsYUFBYSxHQUNEOzs7UUFBWCxJQUFJLGdDQUFHLEVBQUU7OzBCQURWLGFBQWE7O0FBRXRCLFVBQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQUMsR0FBRyxFQUFLO0FBQ2pDLFVBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUM1QixjQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztPQUN2QjtLQUNGLENBQUMsQ0FBQztHQUNKOztlQVBVLGFBQWE7O1dBU25CLGlCQUFHO0FBQ04sWUFBTSxJQUFJLEtBQUssQ0FBQyxpRUFBZ0UsQ0FBQyxDQUFDO0tBQ25GOzs7V0FFUyxvQkFBQyxXQUFXLEVBQVc7d0NBQU4sSUFBSTtBQUFKLFlBQUk7OztBQUM3QixVQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRTtBQUM5RCxtQkFBVyxHQUFHLE9BQU8sQ0FBQztPQUN2QjtBQUNELGFBQU8sSUFBSSxDQUFDLGFBQWEsTUFBQSxDQUFsQixJQUFJLEdBQWUsV0FBVyxTQUFLLElBQUksRUFBQyxDQUFDO0tBQ2pEOzs7V0FFWSx1QkFBQyxXQUFXLEVBQVc7eUNBQU4sSUFBSTtBQUFKLFlBQUk7OztBQUNoQyxVQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN4RCxhQUFPLElBQUksQ0FBQyxZQUFZLE1BQUEsQ0FBakIsSUFBSSxHQUFjLFdBQVcsRUFBRSxhQUFhLFNBQUssSUFBSSxFQUFDLENBQUM7S0FDL0Q7OztXQUVXLHNCQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUU7QUFDdkMsYUFBTyxhQUFhLENBQUM7S0FDdEI7OztTQTNCVSxhQUFhOzs7UUFBYixhQUFhLEdBQWIsYUFBYSIsImZpbGUiOiJjbGlfY29udHJvbGxlci5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBSICAgID0gcmVxdWlyZSgncmFtZGEnKTtcblxuZXhwb3J0IGNsYXNzIENsaUNvbnRyb2xsZXIge1xuICBjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcbiAgICBPYmplY3Qua2V5cyhvcHRzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGlmIChvcHRzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgdGhpc1trZXldID0gb3B0c1trZXldO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaW5kZXgoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiRG9uJ3QgdXNlIENsaUNvbnRyb2xsZXIgZGlyZWN0bHksIGltcGxlbWVudGUgdGhlIGluZGV4IGFjdGlvbi5cIik7XG4gIH1cblxuICBydW5fYWN0aW9uKGFjdGlvbl9uYW1lLCAuLi5hcmdzKSB7XG4gICAgaWYgKFIuaXNOaWwoYWN0aW9uX25hbWUpIHx8ICFSLmlzKEZ1bmN0aW9uLCB0aGlzW2FjdGlvbl9uYW1lXSkpIHtcbiAgICAgIGFjdGlvbl9uYW1lID0gJ2luZGV4JztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYmVmb3JlX2FjdGlvbihhY3Rpb25fbmFtZSwgLi4uYXJncyk7XG4gIH1cblxuICBiZWZvcmVfYWN0aW9uKGFjdGlvbl9uYW1lLCAuLi5hcmdzKSB7XG4gICAgdmFyIGFjdGlvbl9yZXN1bHQgPSB0aGlzW2FjdGlvbl9uYW1lXS5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICByZXR1cm4gdGhpcy5hZnRlcl9hY3Rpb24oYWN0aW9uX25hbWUsIGFjdGlvbl9yZXN1bHQsIC4uLmFyZ3MpO1xuICB9XG5cbiAgYWZ0ZXJfYWN0aW9uKGFjdGlvbl9uYW1lLCBhY3Rpb25fcmVzdWx0KSB7XG4gICAgcmV0dXJuIGFjdGlvbl9yZXN1bHQ7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiL2NsaS1yb3V0ZXI6MC4xLjAvc3JjIn0= |
@@ -11,2 +11,4 @@ 'use strict'; | ||
function _slicedToArray(arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } } | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } | ||
@@ -31,6 +33,7 @@ | ||
this.route_rules = [rule]; | ||
this.commands_limit = rule.keys.length; | ||
this.routes = []; | ||
this.controller_names = []; | ||
// https://regex101.com/r/fM4pO5/2 | ||
this.param_regex = /^(?:[-_]{2})|^<|>$/gm; | ||
// https://regex101.com/r/fM4pO5/3 | ||
this.param_regex = /^(?:[-_]{1,2})|^<|>$/gm; | ||
} | ||
@@ -40,32 +43,47 @@ | ||
key: 'add', | ||
value: function add(pathname, controller, startAt) { | ||
var route = _i402['default'].match(this.route_rules, pathname, startAt); | ||
value: function add(name, filter, controller) { | ||
if (R.isNil(name)) { | ||
throw new Error('Route name not defined'); | ||
} | ||
controller = controller || name; | ||
var actions = []; | ||
var fn; | ||
if (R.is(Function, controller)) { | ||
fn = controller; | ||
controller = undefined; | ||
} else if (/\./.test(controller)) { | ||
actions = controller.split('.'); | ||
controller = actions.shift(0, 1); | ||
} | ||
filter = filter || controller || name; | ||
if (route) { | ||
var controller_name = route.params.controller; | ||
if (!R.isNil(controller_name) && !R.contains(controller_name)(this.controller_names)) { | ||
this.controller_names.push(controller_name); | ||
var route = { name: name, controller: controller, actions: actions, filter: filter, fn: fn }; | ||
this.routes.push(route); | ||
return this; | ||
} | ||
}, { | ||
key: 'find', | ||
value: function find(args, params) { | ||
if (!R.is(Object, params)) { | ||
throw new Error('Invalid type \'' + typeof params + '\' of arguments to filter: ' + params); | ||
} | ||
var route; | ||
for (var i = 0; i < this.routes.length; i++) { | ||
route = this.routes[i]; | ||
if (this.applyFilter(route, args, params)) { | ||
break; | ||
} | ||
controller = controller || pathname; | ||
if (typeof controller === 'string') { | ||
route.Controller = controller; | ||
} else if (typeof controller === 'function') { | ||
route.fn = controller; | ||
} else { | ||
throw new Error(' route ' + pathname.toString() + ' requires a `controller`'); | ||
} | ||
this.routes.push(route); | ||
} else { | ||
throw new Error(' invalid route ' + pathname.toString()); | ||
} | ||
return this; | ||
return route; | ||
} | ||
}, { | ||
key: 'match', | ||
value: function match(pathname, startAt) { | ||
var params = _i402['default'].match(this.route_rules, pathname, startAt); | ||
return params; | ||
key: 'applyFilter', | ||
value: function applyFilter(route, args, params) { | ||
var filter = route.filter; | ||
if (!R.is(Function, filter)) { | ||
filter = function (p) { | ||
return p[route.filter]; | ||
}; | ||
} | ||
return !!filter(params, args); | ||
} | ||
@@ -78,49 +96,41 @@ }, { | ||
}, { | ||
key: 'findRoute', | ||
value: function findRoute(controller, action) { | ||
var routes = []; | ||
for (var i = 0; i < this.routes.length; i++) { | ||
if (this.routes[i].params.controller == controller && this.routes[i].params.action == action) { | ||
routes.push(this.routes[i]); | ||
} | ||
} | ||
return R.last(routes); | ||
} | ||
}, { | ||
key: 'findRouteByParams', | ||
value: function findRouteByParams(params) { | ||
var route = this.findRoute(params.controller, params.action); | ||
if (!route) { | ||
route = this.findRoute(params.controller); | ||
} | ||
return route; | ||
} | ||
}, { | ||
key: 'getFn', | ||
value: function getFn(controller) { | ||
var opts = arguments[1] === undefined ? {} : arguments[1]; | ||
value: function getFn(route, args) { | ||
var _this = this; | ||
controller = controller || {}; | ||
var route = controller.route; | ||
var params = arguments[2] === undefined ? {} : arguments[2]; | ||
if (!R.is(Object, route) || !R.is(Object, route.params)) { | ||
return; | ||
if (!R.is(Object, route) || R.is(Object, route) && R.isNil(route.controller) && R.isNil(route.fn)) { | ||
throw new Error('Invalid route or not contain controller or fn methods: ' + route); | ||
} | ||
route = R.clone(route); | ||
var fn; | ||
var params = route.params; | ||
// Force camelcase actions | ||
params.action = this._camelCase(params.action); | ||
if (!R.isNil(route.controller)) { | ||
// Force camelcase actions | ||
var camelCases = function camelCases(arr) { | ||
return R.map(function (action) { | ||
return _this._camelCase(action); | ||
}, arr || []); | ||
}; | ||
var actions = R.unionWith(function (a, b) { | ||
return a === b; | ||
}, camelCases(route.actions), camelCases(args.slice(1))); | ||
actions = !R.isEmpty(actions) ? actions : ['index']; | ||
route.actions = R.clone(actions); | ||
if (route.hasOwnProperty('Controller')) { | ||
if (R.is(String, route.Controller)) { | ||
route.Controller = this.loadController(route.Controller); | ||
if (!route.hasOwnProperty('Controller')) { | ||
route.Controller = this.loadController(route.controller); | ||
} | ||
opts = R.merge(opts, { | ||
name: params.controller, | ||
route: route, | ||
params: params, | ||
args: controller.args, | ||
full_args: controller.full_args }); | ||
var obj = new route.Controller(opts); | ||
params = R.merge(params, { | ||
name: route.name, | ||
route: route }); | ||
var obj_to_call = new route.Controller(params); | ||
var action = actions.pop(); | ||
var methods = actions.slice(0); | ||
var method; | ||
while (!R.isEmpty(methods)) { | ||
method = methods.shift(); | ||
obj_to_call = obj_to_call[method]; | ||
} | ||
fn = function () { | ||
@@ -131,5 +141,5 @@ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { | ||
return obj.run_action.apply(obj, [params.action].concat(args)); | ||
return obj_to_call.run_action.apply(obj_to_call, [action].concat(args)); | ||
}; | ||
} else if (route.hasOwnProperty('fn')) { | ||
} else if (!R.isNil(route.fn)) { | ||
fn = route.fn; | ||
@@ -140,27 +150,29 @@ } | ||
}, { | ||
key: 'extractCommands', | ||
value: function extractCommands(args) { | ||
var _this = this; | ||
key: 'cleanArgs', | ||
value: function cleanArgs(args, default_params) { | ||
var _this2 = this; | ||
var cmds = []; | ||
for (var i = 0; i < this.controller_names.length; i++) { | ||
var controller_name = this.controller_names[i]; | ||
if (args.hasOwnProperty(controller_name) && !!args[controller_name]) { | ||
cmds.push(controller_name); | ||
var inverted = R.invert(default_params); | ||
var remove_arguments = function remove_arguments(arg) { | ||
var value = R.head(inverted[arg] || []) || ''; | ||
if (!(arg.match(_this2.param_regex) || value.match(_this2.param_regex))) { | ||
return arg; | ||
} | ||
}; | ||
var end_index = args.indexOf('--'); | ||
if (end_index === -1) { | ||
end_index = args.length; | ||
} | ||
// Filter commands and actions (do not start with "-" or between "<>") | ||
R.mapObjIndexed(function (v, k) { | ||
if (R.isNil(k.match(_this.param_regex)) && !!v) { | ||
cmds.push(k); | ||
} | ||
}, args); | ||
return R.uniq(cmds); | ||
var no_doubledash_args = args.slice(0, end_index); | ||
args = R.filter(function (arg) { | ||
return !R.isNil(arg); | ||
}, R.map(remove_arguments, no_doubledash_args)); | ||
return [args, this.cleanParams(default_params)]; | ||
} | ||
}, { | ||
key: 'cleanArgs', | ||
value: function cleanArgs(full_args) { | ||
var args = {}; | ||
for (var key in full_args) { | ||
var value = full_args[key]; | ||
key: 'cleanParams', | ||
value: function cleanParams(default_params) { | ||
var params = {}; | ||
for (var key in default_params) { | ||
var value = default_params[key]; | ||
if (key === '--') { | ||
@@ -171,24 +183,7 @@ key = '__doubledash'; | ||
} | ||
args[key] = value; | ||
params[key] = value; | ||
} | ||
return args; | ||
return params; | ||
} | ||
}, { | ||
key: 'controller', | ||
value: function controller(full_args) { | ||
var route = {}; | ||
var cmds = this.extractCommands(full_args); | ||
if (!R.isNil(cmds) && !R.isEmpty(cmds)) { | ||
var match = this.match('/' + cmds.join('/') + '/'); | ||
if (R.is(Object, match)) { | ||
route = this.findRouteByParams(match.params); | ||
route = R.merge(route, match); | ||
} | ||
} | ||
var args = this.cleanArgs(full_args); | ||
return { route: route, params: route.params, args: args, full_args: full_args }; | ||
} | ||
}, { | ||
key: '_camelCase', | ||
@@ -207,7 +202,15 @@ | ||
key: 'run', | ||
value: function run(args, opts, obj) { | ||
var controller = this.controller(args); | ||
var fn = this.getFn(controller, opts); | ||
value: function run(args, default_params, obj) { | ||
var _cleanArgs = this.cleanArgs(args, default_params); | ||
var _cleanArgs2 = _slicedToArray(_cleanArgs, 2); | ||
var cargs = _cleanArgs2[0]; | ||
var params = _cleanArgs2[1]; | ||
var route = this.find(args, default_params); | ||
var fn = this.getFn(route, cargs, { args: args, params: params, default_params: default_params }); | ||
if (R.is(Function, fn)) { | ||
return fn(controller.args, obj || this); | ||
return fn(params, obj || this); | ||
} | ||
@@ -221,2 +224,2 @@ } | ||
exports.CliRouter = CliRouter; | ||
//# sourceMappingURL=data:application/json;base64,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SSxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsRUFBRTtBQUN0QixlQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFHLEdBQUcsSUFBSSxJQUFJLENBQUUsQ0FBQztPQUMzQztLQUNGOzs7U0FwS1UsU0FBUzs7O1FBQVQsU0FBUyxHQUFULFNBQVMiLCJmaWxlIjoiY2xpX3JvdXRlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSb3V0ZXIgZnJvbSAnaTQwJztcblxudmFyIFIgICAgPSByZXF1aXJlKCdyYW1kYScpO1xudmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5cbmV4cG9ydCBjbGFzcyBDbGlSb3V0ZXIge1xuICBjb25zdHJ1Y3Rvcihjb250cm9sbGVyc19yb290LCByb3V0ZV9yZWdleCkge1xuICAgIHJvdXRlX3JlZ2V4ID0gcm91dGVfcmVnZXggfHwgJy86Y29udHJvbGxlci86YWN0aW9uPyc7XG4gICAgdGhpcy5jb250cm9sbGVyc19yb290ID0gY29udHJvbGxlcnNfcm9vdCB8fCAnLi8nO1xuXG4gICAgdmFyIHJ1bGUgPSBSb3V0ZXIuUm91dGUocm91dGVfcmVnZXgsIDApO1xuXG4gICAgdGhpcy5yb3V0ZV9ydWxlcyAgICAgID0gWyBydWxlIF07XG4gICAgdGhpcy5yb3V0ZXMgICAgICAgICAgID0gW107XG4gICAgdGhpcy5jb250cm9sbGVyX25hbWVzID0gW107XG4gICAgLy8gaHR0cHM6Ly9yZWdleDEwMS5jb20vci9mTTRwTzUvMlxuICAgIHRoaXMucGFyYW1fcmVnZXggPSAvXig/OlstX117Mn0pfF48fD4kL2dtO1xuICB9XG5cbiAgYWRkKHBhdGhuYW1lLCBjb250cm9sbGVyLCBzdGFydEF0KSB7XG4gICAgdmFyIHJvdXRlID0gUm91dGVyLm1hdGNoKHRoaXMucm91dGVfcnVsZXMsIHBhdGhuYW1lLCBzdGFydEF0KTtcblxuICAgIGlmIChyb3V0ZSkge1xuICAgICAgdmFyIGNvbnRyb2xsZXJfbmFtZSA9IHJvdXRlLnBhcmFtcy5jb250cm9sbGVyO1xuICAgICAgaWYgKCFSLmlzTmlsKGNvbnRyb2xsZXJfbmFtZSkgJiYgIVIuY29udGFpbnMoY29udHJvbGxlcl9uYW1lKSh0aGlzLmNvbnRyb2xsZXJfbmFtZXMpKSB7XG4gICAgICAgIHRoaXMuY29udHJvbGxlcl9uYW1lcy5wdXNoKGNvbnRyb2xsZXJfbmFtZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRyb2xsZXIgPSBjb250cm9sbGVyIHx8IHBhdGhuYW1lO1xuXG4gICAgICBpZiAodHlwZW9mIGNvbnRyb2xsZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJvdXRlLkNvbnRyb2xsZXIgPSBjb250cm9sbGVyO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgY29udHJvbGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByb3V0ZS5mbiA9IGNvbnRyb2xsZXI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJyByb3V0ZSAnICsgcGF0aG5hbWUudG9TdHJpbmcoKSArICcgcmVxdWlyZXMgYSBgY29udHJvbGxlcmAnKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yb3V0ZXMucHVzaChyb3V0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignIGludmFsaWQgcm91dGUgJyArIHBhdGhuYW1lLnRvU3RyaW5nKCkpO1xuXG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbWF0Y2gocGF0aG5hbWUsIHN0YXJ0QXQpIHtcbiAgICB2YXIgcGFyYW1zID0gUm91dGVyLm1hdGNoKHRoaXMucm91dGVfcnVsZXMsIHBhdGhuYW1lLCBzdGFydEF0KTtcbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG5cbiAgbG9hZENvbnRyb2xsZXIocGF0aG5hbWUpIHtcbiAgICByZXR1cm4gcmVxdWlyZShwYXRoLmpvaW4odGhpcy5jb250cm9sbGVyc19yb290LCBwYXRobmFtZSkpO1xuICB9XG5cbiAgZmluZFJvdXRlKGNvbnRyb2xsZXIsIGFjdGlvbikge1xuICAgIHZhciByb3V0ZXMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMucm91dGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5yb3V0ZXNbaV0ucGFyYW1zLmNvbnRyb2xsZXIgPT0gY29udHJvbGxlciAmJlxuICAgICAgICB0aGlzLnJvdXRlc1tpXS5wYXJhbXMuYWN0aW9uID09IGFjdGlvbiApIHtcbiAgICAgICAgcm91dGVzLnB1c2godGhpcy5yb3V0ZXNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gUi5sYXN0KHJvdXRlcyk7XG4gIH1cblxuICBmaW5kUm91dGVCeVBhcmFtcyhwYXJhbXMpIHtcbiAgICB2YXIgcm91dGUgPSB0aGlzLmZpbmRSb3V0ZShwYXJhbXMuY29udHJvbGxlciwgcGFyYW1zLmFjdGlvbik7XG4gICAgaWYgKCFyb3V0ZSkge1xuICAgICAgcm91dGUgPSB0aGlzLmZpbmRSb3V0ZShwYXJhbXMuY29udHJvbGxlcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvdXRlO1xuICB9XG5cbiAgZ2V0Rm4oY29udHJvbGxlciwgb3B0cz17fSkge1xuICAgIGNvbnRyb2xsZXIgPSBjb250cm9sbGVyIHx8IHt9O1xuICAgIHZhciByb3V0ZSA9IGNvbnRyb2xsZXIucm91dGU7XG5cbiAgICBpZiAoIVIuaXMoT2JqZWN0LCByb3V0ZSkgfHwgIVIuaXMoT2JqZWN0LCByb3V0ZS5wYXJhbXMpKSB7IHJldHVybjsgfVxuICAgIHZhciBmbjtcbiAgICB2YXIgcGFyYW1zID0gcm91dGUucGFyYW1zO1xuICAgIC8vIEZvcmNlIGNhbWVsY2FzZSBhY3Rpb25zXG4gICAgcGFyYW1zLmFjdGlvbiA9IHRoaXMuX2NhbWVsQ2FzZShwYXJhbXMuYWN0aW9uKTtcblxuICAgIGlmIChyb3V0ZS5oYXNPd25Qcm9wZXJ0eSgnQ29udHJvbGxlcicpKSB7XG4gICAgICBpZiAoUi5pcyhTdHJpbmcsIHJvdXRlLkNvbnRyb2xsZXIpKSB7XG4gICAgICAgIHJvdXRlLkNvbnRyb2xsZXIgPSB0aGlzLmxvYWRDb250cm9sbGVyKHJvdXRlLkNvbnRyb2xsZXIpO1xuICAgICAgfVxuICAgICAgb3B0cyA9IFIubWVyZ2Uob3B0cywge1xuICAgICAgICBuYW1lICAgICA6IHBhcmFtcy5jb250cm9sbGVyLFxuICAgICAgICByb3V0ZSxcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICBhcmdzICAgICA6IGNvbnRyb2xsZXIuYXJncyxcbiAgICAgICAgZnVsbF9hcmdzOiBjb250cm9sbGVyLmZ1bGxfYXJncyxcbiAgICAgIH0pO1xuICAgICAgdmFyIG9iaiA9IG5ldyAocm91dGUuQ29udHJvbGxlcikob3B0cyk7XG4gICAgICBmbiA9ICguLi5hcmdzKSA9PiB7XG4gICAgICAgIHJldHVybiBvYmoucnVuX2FjdGlvbi5hcHBseShvYmosIFtwYXJhbXMuYWN0aW9uLCAuLi5hcmdzXSk7XG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAocm91dGUuaGFzT3duUHJvcGVydHkoJ2ZuJykpIHtcbiAgICAgIGZuID0gcm91dGUuZm47XG4gICAgfVxuICAgIHJldHVybiBmbjtcbiAgfVxuXG4gIGV4dHJhY3RDb21tYW5kcyhhcmdzKSB7XG4gICAgdmFyIGNtZHMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY29udHJvbGxlcl9uYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGNvbnRyb2xsZXJfbmFtZSA9IHRoaXMuY29udHJvbGxlcl9uYW1lc1tpXTtcbiAgICAgIGlmIChhcmdzLmhhc093blByb3BlcnR5KGNvbnRyb2xsZXJfbmFtZSkgJiYgISFhcmdzW2NvbnRyb2xsZXJfbmFtZV0pIHtcbiAgICAgICAgY21kcy5wdXNoKGNvbnRyb2xsZXJfbmFtZSk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEZpbHRlciBjb21tYW5kcyBhbmQgYWN0aW9ucyAoZG8gbm90IHN0YXJ0IHdpdGggXCItXCIgb3IgYmV0d2VlbiBcIjw+XCIpXG4gICAgUi5tYXBPYmpJbmRleGVkKCh2LCBrKSA9PiB7XG4gICAgICBpZiAoUi5pc05pbChrLm1hdGNoKHRoaXMucGFyYW1fcmVnZXgpKSAmJiAhIXYpIHtcbiAgICAgICAgY21kcy5wdXNoKGspO1xuICAgICAgfVxuICAgIH0sIGFyZ3MpO1xuICAgIHJldHVybiBSLnVuaXEoY21kcyk7XG4gIH1cblxuICBjbGVhbkFyZ3MoZnVsbF9hcmdzKSB7XG4gICAgdmFyIGFyZ3MgPSB7fTtcbiAgICBmb3IgKHZhciBrZXkgaW4gZnVsbF9hcmdzKSB7XG4gICAgICB2YXIgdmFsdWUgPSBmdWxsX2FyZ3Nba2V5XTtcbiAgICAgIGlmIChrZXkgPT09ICctLScpIHtcbiAgICAgICAga2V5ID0gJ19fZG91YmxlZGFzaCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBrZXkgPSBrZXkucmVwbGFjZSh0aGlzLnBhcmFtX3JlZ2V4LCAnJyk7XG4gICAgICB9XG4gICAgICBhcmdzW2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGFyZ3M7XG4gIH1cblxuICBjb250cm9sbGVyKGZ1bGxfYXJncykge1xuICAgIHZhciByb3V0ZSA9IHt9O1xuICAgIHZhciBjbWRzID0gdGhpcy5leHRyYWN0Q29tbWFuZHMoZnVsbF9hcmdzKTtcblxuICAgIGlmICghUi5pc05pbChjbWRzKSAmJiAhUi5pc0VtcHR5KGNtZHMpKSB7XG4gICAgICB2YXIgbWF0Y2ggPSB0aGlzLm1hdGNoKGAvJHtjbWRzLmpvaW4oJy8nKX0vYCk7XG4gICAgICBpZiAoUi5pcyhPYmplY3QsIG1hdGNoKSkge1xuICAgICAgICByb3V0ZSA9IHRoaXMuZmluZFJvdXRlQnlQYXJhbXMobWF0Y2gucGFyYW1zKTtcbiAgICAgICAgcm91dGUgPSBSLm1lcmdlKHJvdXRlLCBtYXRjaCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGFyZ3MgPSB0aGlzLmNsZWFuQXJncyhmdWxsX2FyZ3MpO1xuICAgIHJldHVybiB7IHJvdXRlLCBwYXJhbXM6IHJvdXRlLnBhcmFtcywgYXJncywgZnVsbF9hcmdzIH07XG4gIH1cblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vc3Vic3RhY2svY2FtZWxpemUvYmxvYi9tYXN0ZXIvaW5kZXguanMjTDE3LUwyMVxuICBfY2FtZWxDYXNlKHN0cikge1xuICAgIGlmICghUi5pc05pbChzdHIpKSB7XG4gICAgICBzdHIgPSBzdHIucmVwbGFjZSgvW18uLV0oXFx3fCQpL2csIGZ1bmN0aW9uIChfLCB4KSB7XG4gICAgICAgIHJldHVybiB4LnRvVXBwZXJDYXNlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuXG4gIHJ1bihhcmdzLCBvcHRzLCBvYmopIHtcbiAgICB2YXIgY29udHJvbGxlciA9IHRoaXMuY29udHJvbGxlcihhcmdzKTtcbiAgICB2YXIgZm4gICAgICAgICA9IHRoaXMuZ2V0Rm4oY29udHJvbGxlciwgb3B0cyk7XG4gICAgaWYgKFIuaXMoRnVuY3Rpb24sIGZuKSkge1xuICAgICAgcmV0dXJuIGZuKGNvbnRyb2xsZXIuYXJncywgKG9iaiB8fCB0aGlzKSk7XG4gICAgfVxuICB9XG59XG4iXSwic291cmNlUm9vdCI6Ii9jbGktcm91dGVyOjAuMC4xMC9zcmMifQ== | ||
//# sourceMappingURL=data:application/json;base64,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dUJBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDOzs7O1VBQXJELEtBQUs7VUFBRSxNQUFNOztBQUNsQixVQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztBQUM1QyxVQUFJLEVBQUUsR0FBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUosSUFBSSxFQUFFLE1BQU0sRUFBTixNQUFNLEVBQUUsY0FBYyxFQUFkLGNBQWMsRUFBRSxDQUFDLENBQUM7O0FBRXZFLFVBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDdEIsZUFBTyxFQUFFLENBQUMsTUFBTSxFQUFHLEdBQUcsSUFBSSxJQUFJLENBQUUsQ0FBQztPQUNsQztLQUNGOzs7U0F2SlUsU0FBUzs7O1FBQVQsU0FBUyxHQUFULFNBQVMiLCJmaWxlIjoiY2xpX3JvdXRlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSb3V0ZXIgZnJvbSAnaTQwJztcblxudmFyIFIgICAgPSByZXF1aXJlKCdyYW1kYScpO1xudmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5cbmV4cG9ydCBjbGFzcyBDbGlSb3V0ZXIge1xuICBjb25zdHJ1Y3Rvcihjb250cm9sbGVyc19yb290LCByb3V0ZV9yZWdleCkge1xuICAgIHJvdXRlX3JlZ2V4ID0gcm91dGVfcmVnZXggfHwgJy86Y29udHJvbGxlci86YWN0aW9uPyc7XG4gICAgdGhpcy5jb250cm9sbGVyc19yb290ID0gY29udHJvbGxlcnNfcm9vdCB8fCAnLi8nO1xuXG4gICAgdmFyIHJ1bGUgPSBSb3V0ZXIuUm91dGUocm91dGVfcmVnZXgsIDApO1xuXG4gICAgdGhpcy5yb3V0ZV9ydWxlcyAgICAgID0gWyBydWxlIF07XG4gICAgdGhpcy5jb21tYW5kc19saW1pdCAgID0gcnVsZS5rZXlzLmxlbmd0aDtcbiAgICB0aGlzLnJvdXRlcyAgICAgICAgICAgPSBbXTtcbiAgICB0aGlzLmNvbnRyb2xsZXJfbmFtZXMgPSBbXTtcbiAgICAvLyBodHRwczovL3JlZ2V4MTAxLmNvbS9yL2ZNNHBPNS8zXG4gICAgdGhpcy5wYXJhbV9yZWdleCA9IC9eKD86Wy1fXXsxLDJ9KXxePHw+JC9nbTtcbiAgfVxuXG4gIGFkZChuYW1lLCBmaWx0ZXIsIGNvbnRyb2xsZXIpIHtcbiAgICBpZiAoUi5pc05pbChuYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSb3V0ZSBuYW1lIG5vdCBkZWZpbmVkJyk7XG4gICAgfVxuICAgIGNvbnRyb2xsZXIgPSBjb250cm9sbGVyIHx8IG5hbWU7XG4gICAgdmFyIGFjdGlvbnMgPSBbXTtcbiAgICB2YXIgZm47XG4gICAgaWYgKFIuaXMoRnVuY3Rpb24sIGNvbnRyb2xsZXIpKSB7XG4gICAgICBmbiA9IGNvbnRyb2xsZXI7XG4gICAgICBjb250cm9sbGVyID0gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSBpZiAoL1xcLi8udGVzdChjb250cm9sbGVyKSkge1xuICAgICAgYWN0aW9ucyA9IGNvbnRyb2xsZXIuc3BsaXQoJy4nKTtcbiAgICAgIGNvbnRyb2xsZXIgPSBhY3Rpb25zLnNoaWZ0KDAsIDEpO1xuICAgIH1cbiAgICBmaWx0ZXIgPSBmaWx0ZXIgfHwgY29udHJvbGxlciB8fCBuYW1lO1xuXG4gICAgdmFyIHJvdXRlID0geyBuYW1lLCBjb250cm9sbGVyLCBhY3Rpb25zLCBmaWx0ZXIsIGZuIH07XG4gICAgdGhpcy5yb3V0ZXMucHVzaChyb3V0ZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBmaW5kKGFyZ3MsIHBhcmFtcykge1xuICAgIGlmICghUi5pcyhPYmplY3QsIHBhcmFtcykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0eXBlICcke3R5cGVvZiBwYXJhbXN9JyBvZiBhcmd1bWVudHMgdG8gZmlsdGVyOiAke3BhcmFtc31gKTtcbiAgICB9XG4gICAgdmFyIHJvdXRlO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5yb3V0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHJvdXRlID0gdGhpcy5yb3V0ZXNbaV07XG4gICAgICBpZiAodGhpcy5hcHBseUZpbHRlcihyb3V0ZSwgYXJncywgcGFyYW1zKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJvdXRlO1xuICB9XG5cbiAgYXBwbHlGaWx0ZXIocm91dGUsIGFyZ3MsIHBhcmFtcykge1xuICAgIHZhciBmaWx0ZXIgPSByb3V0ZS5maWx0ZXI7XG4gICAgaWYgKCFSLmlzKEZ1bmN0aW9uLCBmaWx0ZXIpKSB7XG4gICAgICBmaWx0ZXIgPSAocCkgPT4gcFtyb3V0ZS5maWx0ZXJdO1xuICAgIH1cbiAgICByZXR1cm4gISFmaWx0ZXIocGFyYW1zLCBhcmdzKTtcbiAgfVxuXG4gIGxvYWRDb250cm9sbGVyKHBhdGhuYW1lKSB7XG4gICAgcmV0dXJuIHJlcXVpcmUocGF0aC5qb2luKHRoaXMuY29udHJvbGxlcnNfcm9vdCwgcGF0aG5hbWUpKTtcbiAgfVxuXG4gIGdldEZuKHJvdXRlLCBhcmdzLCBwYXJhbXM9e30pIHtcbiAgICBpZiAoIVIuaXMoT2JqZWN0LCByb3V0ZSkgfHxcbiAgICAgIChSLmlzKE9iamVjdCwgcm91dGUpICYmIFIuaXNOaWwocm91dGUuY29udHJvbGxlcikgJiYgUi5pc05pbChyb3V0ZS5mbikpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcm91dGUgb3Igbm90IGNvbnRhaW4gY29udHJvbGxlciBvciBmbiBtZXRob2RzOiAke3JvdXRlfWApO1xuICAgIH1cbiAgICByb3V0ZSA9IFIuY2xvbmUocm91dGUpO1xuXG4gICAgdmFyIGZuO1xuICAgIGlmICghUi5pc05pbChyb3V0ZS5jb250cm9sbGVyKSkge1xuICAgICAgLy8gRm9yY2UgY2FtZWxjYXNlIGFjdGlvbnNcbiAgICAgIHZhciBjYW1lbENhc2VzID0gKGFycikgPT4ge1xuICAgICAgICByZXR1cm4gUi5tYXAoKGFjdGlvbikgPT4gdGhpcy5fY2FtZWxDYXNlKGFjdGlvbiksIGFyciB8fCBbXSk7XG4gICAgICB9O1xuICAgICAgdmFyIGFjdGlvbnMgPSBSLnVuaW9uV2l0aCgoYSwgYikgPT4gYSA9PT0gYiwgY2FtZWxDYXNlcyhyb3V0ZS5hY3Rpb25zKSwgY2FtZWxDYXNlcyhhcmdzLnNsaWNlKDEpKSk7XG4gICAgICBhY3Rpb25zID0gIVIuaXNFbXB0eShhY3Rpb25zKSA/IGFjdGlvbnMgOiBbJ2luZGV4J107XG4gICAgICByb3V0ZS5hY3Rpb25zID0gUi5jbG9uZShhY3Rpb25zKTtcblxuICAgICAgaWYgKCFyb3V0ZS5oYXNPd25Qcm9wZXJ0eSgnQ29udHJvbGxlcicpKSB7XG4gICAgICAgIHJvdXRlLkNvbnRyb2xsZXIgPSB0aGlzLmxvYWRDb250cm9sbGVyKHJvdXRlLmNvbnRyb2xsZXIpO1xuICAgICAgfVxuICAgICAgcGFyYW1zID0gUi5tZXJnZShwYXJhbXMsIHtcbiAgICAgICAgbmFtZTogcm91dGUubmFtZSxcbiAgICAgICAgcm91dGUsXG4gICAgICB9KTtcbiAgICAgIHZhciBvYmpfdG9fY2FsbCA9IG5ldyAocm91dGUuQ29udHJvbGxlcikocGFyYW1zKTtcbiAgICAgIHZhciBhY3Rpb24gICAgICA9IGFjdGlvbnMucG9wKCk7XG4gICAgICB2YXIgbWV0aG9kcyAgICAgPSBhY3Rpb25zLnNsaWNlKDApO1xuICAgICAgdmFyIG1ldGhvZDtcbiAgICAgIHdoaWxlICghUi5pc0VtcHR5KG1ldGhvZHMpKSB7XG4gICAgICAgIG1ldGhvZCAgICAgID0gbWV0aG9kcy5zaGlmdCgpO1xuICAgICAgICBvYmpfdG9fY2FsbCA9IG9ial90b19jYWxsW21ldGhvZF07XG4gICAgICB9XG4gICAgICBmbiA9ICguLi5hcmdzKSA9PiB7XG4gICAgICAgIHJldHVybiBvYmpfdG9fY2FsbC5ydW5fYWN0aW9uLmFwcGx5KG9ial90b19jYWxsLCBbYWN0aW9uLCAuLi5hcmdzXSk7XG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoIVIuaXNOaWwocm91dGUuZm4pKSB7XG4gICAgICBmbiA9IHJvdXRlLmZuO1xuICAgIH1cbiAgICByZXR1cm4gZm47XG4gIH1cblxuICBjbGVhbkFyZ3MoYXJncywgZGVmYXVsdF9wYXJhbXMpIHtcbiAgICB2YXIgaW52ZXJ0ZWQgPSBSLmludmVydChkZWZhdWx0X3BhcmFtcyk7XG4gICAgdmFyIHJlbW92ZV9hcmd1bWVudHMgPSAoYXJnKSA9PiB7XG4gICAgICB2YXIgdmFsdWUgPSBSLmhlYWQoaW52ZXJ0ZWRbYXJnXSB8fCBbXSkgfHwgJyc7XG4gICAgICBpZiAoIShhcmcubWF0Y2godGhpcy5wYXJhbV9yZWdleCkgfHwgdmFsdWUubWF0Y2godGhpcy5wYXJhbV9yZWdleCkpKSB7XG4gICAgICAgIHJldHVybiBhcmc7XG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgZW5kX2luZGV4ID0gYXJncy5pbmRleE9mKCctLScpO1xuICAgIGlmIChlbmRfaW5kZXggPT09IC0xKSB7IGVuZF9pbmRleCA9IGFyZ3MubGVuZ3RoOyB9XG4gICAgdmFyIG5vX2RvdWJsZWRhc2hfYXJncyA9IGFyZ3Muc2xpY2UoMCwgZW5kX2luZGV4KTtcbiAgICBhcmdzID0gUi5maWx0ZXIoKGFyZykgPT4gIVIuaXNOaWwoYXJnKSwgUi5tYXAocmVtb3ZlX2FyZ3VtZW50cywgbm9fZG91YmxlZGFzaF9hcmdzKSk7XG4gICAgcmV0dXJuIFthcmdzLCB0aGlzLmNsZWFuUGFyYW1zKGRlZmF1bHRfcGFyYW1zKV07XG4gIH1cblxuICBjbGVhblBhcmFtcyhkZWZhdWx0X3BhcmFtcykge1xuICAgIHZhciBwYXJhbXMgPSB7fTtcbiAgICBmb3IgKHZhciBrZXkgaW4gZGVmYXVsdF9wYXJhbXMpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGRlZmF1bHRfcGFyYW1zW2tleV07XG4gICAgICBpZiAoa2V5ID09PSAnLS0nKSB7XG4gICAgICAgIGtleSA9ICdfX2RvdWJsZWRhc2gnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAga2V5ID0ga2V5LnJlcGxhY2UodGhpcy5wYXJhbV9yZWdleCwgJycpO1xuICAgICAgfVxuICAgICAgcGFyYW1zW2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zdWJzdGFjay9jYW1lbGl6ZS9ibG9iL21hc3Rlci9pbmRleC5qcyNMMTctTDIxXG4gIF9jYW1lbENhc2Uoc3RyKSB7XG4gICAgaWYgKCFSLmlzTmlsKHN0cikpIHtcbiAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9bXy4tXShcXHd8JCkvZywgZnVuY3Rpb24gKF8sIHgpIHtcbiAgICAgICAgcmV0dXJuIHgudG9VcHBlckNhc2UoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc3RyO1xuICB9XG5cbiAgcnVuKGFyZ3MsIGRlZmF1bHRfcGFyYW1zLCBvYmopIHtcbiAgICB2YXIgW2NhcmdzLCBwYXJhbXNdID0gdGhpcy5jbGVhbkFyZ3MoYXJncywgZGVmYXVsdF9wYXJhbXMpO1xuICAgIHZhciByb3V0ZSA9IHRoaXMuZmluZChhcmdzLCBkZWZhdWx0X3BhcmFtcyk7XG4gICAgdmFyIGZuICAgID0gdGhpcy5nZXRGbihyb3V0ZSwgY2FyZ3MsIHsgYXJncywgcGFyYW1zLCBkZWZhdWx0X3BhcmFtcyB9KTtcblxuICAgIGlmIChSLmlzKEZ1bmN0aW9uLCBmbikpIHtcbiAgICAgIHJldHVybiBmbihwYXJhbXMsIChvYmogfHwgdGhpcykpO1xuICAgIH1cbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIvY2xpLXJvdXRlcjowLjEuMC9zcmMifQ== |
@@ -79,5 +79,4 @@ 'use strict'; | ||
var result = this.docopt(args); | ||
if (typeof result !== 'string') { | ||
result = this.router.run(result, opts, obj || this); | ||
result = this.router.run(args.argv, result, obj || this); | ||
} | ||
@@ -93,2 +92,2 @@ | ||
exports.Cli = Cli; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7MEJBQTBCLGNBQWM7O0FBRXhDLElBQUksRUFBRSxHQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFekIsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDOztJQUVsQixHQUFHO0FBQ0gsV0FEQSxHQUFHLENBQ0YsT0FBTyxFQUFFOzBCQURWLEdBQUc7O0FBRVosUUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUU7QUFDL0IsWUFBTSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztLQUMvQyxNQUFNLElBQUksT0FBTyxDQUFDLElBQUksRUFBRTtBQUN2QixVQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0tBQzNELE1BQU0sSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtBQUM5QixVQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7S0FDcEM7O0FBRUQsUUFBSSxDQUFDLE1BQU0sR0FBSyxnQkFoQlgsU0FBUyxDQWdCZ0IsT0FBTyxDQUFDLGdCQUFnQixJQUFJLGVBQWUsQ0FBQyxDQUFDO0FBQzNFLFFBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztHQUNqQzs7ZUFaVSxHQUFHOztTQWNOLFlBQUc7QUFDVCxhQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7S0FDdkI7OztTQUVVLFlBQUc7QUFDWixhQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7S0FDdEI7U0FFVSxVQUFDLENBQUMsRUFBRTtBQUNiLFVBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCLGFBQU8sSUFBSSxDQUFDO0tBQ2I7OztXQUVLLGtCQUFZO1VBQVgsSUFBSSxnQ0FBRyxFQUFFOztBQUNkLFVBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQzVDLGFBQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzVDOzs7V0FFSSxpQkFBVTs7O3dDQUFOLElBQUk7QUFBSixZQUFJOzs7QUFDWCxpQkFBQSxJQUFJLENBQUMsTUFBTSxFQUFDLEdBQUcsTUFBQSxVQUFJLElBQUksQ0FBQyxDQUFDO0FBQ3pCLGFBQU8sSUFBSSxDQUFDO0tBQ2I7OztTQUVTLFlBQUc7QUFDWCxhQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0tBQzNCOzs7V0FFRSxhQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFO0FBQ25CLFVBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUU7QUFDbkQsWUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO09BQ3ZCO0FBQ0QsVUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFL0IsVUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUU7QUFDOUIsY0FBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUcsR0FBRyxJQUFJLElBQUksQ0FBRSxDQUFDO09BQ3ZEOztBQUVELGFBQU8sTUFBTSxDQUFDO0tBQ2Y7OztTQXBEVSxHQUFHOzs7UUFBSCxHQUFHLEdBQUgsR0FBRyIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENsaVJvdXRlciB9IGZyb20gJy4vY2xpX3JvdXRlcic7XG5cbnZhciBmcyAgID0gcmVxdWlyZSgnZnMnKTtcblxudmFyIERvY29wdCA9IHJlcXVpcmUoJ2RvY29wdCcpO1xuXG5leHBvcnQgY2xhc3MgQ2xpIHtcbiAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IEVycm9yKCdVbmRlZmluZWQgb3IgaW52YWxpZCBgb3B0aW9uc2AnKTtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMucGF0aCkge1xuICAgICAgdGhpcy51c2FnZV9kb2MgPSBmcy5yZWFkRmlsZVN5bmMob3B0aW9ucy5wYXRoKS50b1N0cmluZygpO1xuICAgIH0gZWxzZSBpZiAoISFvcHRpb25zLnVzYWdlX2RvYykge1xuICAgICAgdGhpcy51c2FnZV9kb2MgPSBvcHRpb25zLnVzYWdlX2RvYztcbiAgICB9XG5cbiAgICB0aGlzLnJvdXRlciAgID0gbmV3IENsaVJvdXRlcihvcHRpb25zLmNvbnRyb2xsZXJzX3Jvb3QgfHwgJy4vY29udHJvbGxlcnMnKTtcbiAgICB0aGlzLl92ZXJzaW9uID0gb3B0aW9ucy52ZXJzaW9uO1xuICB9XG5cbiAgZ2V0IGhlbHAoKSB7XG4gICAgcmV0dXJuIHRoaXMudXNhZ2VfZG9jO1xuICB9XG5cbiAgZ2V0IHZlcnNpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZlcnNpb247XG4gIH1cblxuICBzZXQgdmVyc2lvbih2KSB7XG4gICAgdGhpcy5fdmVyc2lvbiA9IHY7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBkb2NvcHQob3B0cyA9IHt9KSB7XG4gICAgb3B0cy52ZXJzaW9uID0gb3B0cy52ZXJzaW9uIHx8IHRoaXMudmVyc2lvbjtcbiAgICByZXR1cm4gRG9jb3B0LmRvY29wdCh0aGlzLnVzYWdlX2RvYywgb3B0cyk7XG4gIH1cblxuICByb3V0ZSguLi5hcmdzKSB7XG4gICAgdGhpcy5yb3V0ZXIuYWRkKC4uLmFyZ3MpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0IHJvdXRlcygpIHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIucm91dGVzO1xuICB9XG5cbiAgcnVuKGFyZ3MsIG9wdHMsIG9iaikge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGFyZ3MpIHx8IHR5cGVvZiBhcmdzID09PSAnc3RyaW5nJykge1xuICAgICAgYXJncyA9IHsgYXJndjogYXJncyB9O1xuICAgIH1cbiAgICB2YXIgcmVzdWx0ID0gdGhpcy5kb2NvcHQoYXJncyk7XG5cbiAgICBpZiAodHlwZW9mIHJlc3VsdCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMucm91dGVyLnJ1bihyZXN1bHQsIG9wdHMsIChvYmogfHwgdGhpcykpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiL2NsaS1yb3V0ZXI6MC4wLjEwL3NyYyJ9 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7MEJBQTBCLGNBQWM7O0FBRXhDLElBQUksRUFBRSxHQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFekIsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDOztJQUVsQixHQUFHO0FBQ0gsV0FEQSxHQUFHLENBQ0YsT0FBTyxFQUFFOzBCQURWLEdBQUc7O0FBRVosUUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUU7QUFDL0IsWUFBTSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztLQUMvQyxNQUFNLElBQUksT0FBTyxDQUFDLElBQUksRUFBRTtBQUN2QixVQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0tBQzNELE1BQU0sSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtBQUM5QixVQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7S0FDcEM7O0FBRUQsUUFBSSxDQUFDLE1BQU0sR0FBSyxnQkFoQlgsU0FBUyxDQWdCZ0IsT0FBTyxDQUFDLGdCQUFnQixJQUFJLGVBQWUsQ0FBQyxDQUFDO0FBQzNFLFFBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztHQUNqQzs7ZUFaVSxHQUFHOztTQWNOLFlBQUc7QUFDVCxhQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7S0FDdkI7OztTQUVVLFlBQUc7QUFDWixhQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7S0FDdEI7U0FFVSxVQUFDLENBQUMsRUFBRTtBQUNiLFVBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCLGFBQU8sSUFBSSxDQUFDO0tBQ2I7OztXQUVLLGtCQUFZO1VBQVgsSUFBSSxnQ0FBRyxFQUFFOztBQUNkLFVBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQzVDLGFBQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzVDOzs7V0FFSSxpQkFBVTs7O3dDQUFOLElBQUk7QUFBSixZQUFJOzs7QUFDWCxpQkFBQSxJQUFJLENBQUMsTUFBTSxFQUFDLEdBQUcsTUFBQSxVQUFJLElBQUksQ0FBQyxDQUFDO0FBQ3pCLGFBQU8sSUFBSSxDQUFDO0tBQ2I7OztTQUVTLFlBQUc7QUFDWCxhQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0tBQzNCOzs7V0FFRSxhQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFO0FBQ25CLFVBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUU7QUFDbkQsWUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO09BQ3ZCO0FBQ0QsVUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQixVQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRTtBQUM5QixjQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUcsR0FBRyxJQUFJLElBQUksQ0FBRSxDQUFDO09BQzVEOztBQUVELGFBQU8sTUFBTSxDQUFDO0tBQ2Y7OztTQW5EVSxHQUFHOzs7UUFBSCxHQUFHLEdBQUgsR0FBRyIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENsaVJvdXRlciB9IGZyb20gJy4vY2xpX3JvdXRlcic7XG5cbnZhciBmcyAgID0gcmVxdWlyZSgnZnMnKTtcblxudmFyIERvY29wdCA9IHJlcXVpcmUoJ2RvY29wdCcpO1xuXG5leHBvcnQgY2xhc3MgQ2xpIHtcbiAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IEVycm9yKCdVbmRlZmluZWQgb3IgaW52YWxpZCBgb3B0aW9uc2AnKTtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMucGF0aCkge1xuICAgICAgdGhpcy51c2FnZV9kb2MgPSBmcy5yZWFkRmlsZVN5bmMob3B0aW9ucy5wYXRoKS50b1N0cmluZygpO1xuICAgIH0gZWxzZSBpZiAoISFvcHRpb25zLnVzYWdlX2RvYykge1xuICAgICAgdGhpcy51c2FnZV9kb2MgPSBvcHRpb25zLnVzYWdlX2RvYztcbiAgICB9XG5cbiAgICB0aGlzLnJvdXRlciAgID0gbmV3IENsaVJvdXRlcihvcHRpb25zLmNvbnRyb2xsZXJzX3Jvb3QgfHwgJy4vY29udHJvbGxlcnMnKTtcbiAgICB0aGlzLl92ZXJzaW9uID0gb3B0aW9ucy52ZXJzaW9uO1xuICB9XG5cbiAgZ2V0IGhlbHAoKSB7XG4gICAgcmV0dXJuIHRoaXMudXNhZ2VfZG9jO1xuICB9XG5cbiAgZ2V0IHZlcnNpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZlcnNpb247XG4gIH1cblxuICBzZXQgdmVyc2lvbih2KSB7XG4gICAgdGhpcy5fdmVyc2lvbiA9IHY7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBkb2NvcHQob3B0cyA9IHt9KSB7XG4gICAgb3B0cy52ZXJzaW9uID0gb3B0cy52ZXJzaW9uIHx8IHRoaXMudmVyc2lvbjtcbiAgICByZXR1cm4gRG9jb3B0LmRvY29wdCh0aGlzLnVzYWdlX2RvYywgb3B0cyk7XG4gIH1cblxuICByb3V0ZSguLi5hcmdzKSB7XG4gICAgdGhpcy5yb3V0ZXIuYWRkKC4uLmFyZ3MpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0IHJvdXRlcygpIHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIucm91dGVzO1xuICB9XG5cbiAgcnVuKGFyZ3MsIG9wdHMsIG9iaikge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGFyZ3MpIHx8IHR5cGVvZiBhcmdzID09PSAnc3RyaW5nJykge1xuICAgICAgYXJncyA9IHsgYXJndjogYXJncyB9O1xuICAgIH1cbiAgICB2YXIgcmVzdWx0ID0gdGhpcy5kb2NvcHQoYXJncyk7XG4gICAgaWYgKHR5cGVvZiByZXN1bHQgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXN1bHQgPSB0aGlzLnJvdXRlci5ydW4oYXJncy5hcmd2LCByZXN1bHQsIChvYmogfHwgdGhpcykpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiL2NsaS1yb3V0ZXI6MC4xLjAvc3JjIn0= |
{ | ||
"name": "cli-router", | ||
"version": "0.1.0", | ||
"version": "0.1.1", | ||
"description": "cli-router", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
NPM Shrinkwrap
Supply chain riskPackage contains a shrinkwrap file. This may allow the package to bypass normal install procedures.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
103966
20
826
1
4
1