From 9917bd06505b785f42753a3d1c0d31a0443e223c Mon Sep 17 00:00:00 2001 From: Zach Knox Date: Mon, 14 Oct 2019 09:01:36 -0400 Subject: [PATCH 1/6] issue-203 replanning for actionTree --- .../search-algorithms/offline-replanning.js | 10 +++++++++- lib/planner/test-planner.js | 20 ++++++++++++------- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/lib/planner/search-algorithms/offline-replanning.js b/lib/planner/search-algorithms/offline-replanning.js index e1e4889c..b0f187b8 100644 --- a/lib/planner/search-algorithms/offline-replanning.js +++ b/lib/planner/search-algorithms/offline-replanning.js @@ -156,7 +156,15 @@ module.exports = offlineReplanning = { _pruneExistingPlans() { let prunedPlans = []; for (let plan of offlineReplanning._existingPlans) { - let superset = setOperations.isSuperset(offlineReplanning._satisfiedActions, new Set(plan.path)); + let superset; + if (offlineReplanning._algorithm.toLowerCase() === 'actiontree') { + // actionTree plans _are_ the path + superset = setOperations.isSuperset(offlineReplanning._satisfiedActions, new Set(plan)); + } else { // forwardStateSpaceSearchHeuristic + // forwardStateSpaceSearchHeuristic plans contain an object with the plan path + superset = setOperations.isSuperset(offlineReplanning._satisfiedActions, new Set(plan.path)); + } + if (!superset) { prunedPlans.push(plan); } diff --git a/lib/planner/test-planner.js b/lib/planner/test-planner.js index a6caeae9..b768302f 100644 --- a/lib/planner/test-planner.js +++ b/lib/planner/test-planner.js @@ -29,15 +29,20 @@ module.exports = testPlanner = { if (error) { throw error; } - // let testLength = config.get('plannerTestLength'); - let testLength = false; - // TODO: Get offline replanning working with actionTree algorithm + + let testLength = config.get('plannerTestLength'); if (testLength) { - testPlanner.emit('offlineReplanning.replan', finalPlans, - discoveredActions, testPlanner._algorithm, {testLength}); + testPlanner.emit('offlineReplanning.replan', + finalPlans, + discoveredActions, + testPlanner._algorithm, + { + testLength, + } + ); } else { - testPlanner.emit('planner.planningFinished', - finalPlans, discoveredActions, testPlanner._algorithm); + testPlanner + .emit('planner.planningFinished', finalPlans, discoveredActions, testPlanner._algorithm); } }); }); @@ -59,6 +64,7 @@ module.exports = testPlanner = { if (error) { throw error; } + let testLength = config.get('plannerTestLength'); if (testLength) { testPlanner.emit('offlineReplanning.replan', From 1d0f2fe0738ec507f074f8594835fc8f2ce918fe Mon Sep 17 00:00:00 2001 From: Zach Knox Date: Mon, 14 Oct 2019 09:30:55 -0400 Subject: [PATCH 2/6] issue-203 passing replanning unit tests --- .../offline-replanning-tests.js | 45 ++++++++++++++----- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/test/unit/lib/planner/search-algorithms/offline-replanning-tests.js b/test/unit/lib/planner/search-algorithms/offline-replanning-tests.js index dea5b217..baebd2d2 100644 --- a/test/unit/lib/planner/search-algorithms/offline-replanning-tests.js +++ b/test/unit/lib/planner/search-algorithms/offline-replanning-tests.js @@ -1384,24 +1384,46 @@ describe('lib/planner/search-algorithms/offline-replanning.js', function() { }); describe('for each plan in offlineReplanning._existingPlans', function() { - it('should call setOperations.isSuperset once with offlineReplanning._satisfiedActions ' + + describe('if offlineReplanning._algorithm is actiontree', function() { + it('should call setOperations.isSuperset once with offlineReplanning._satisfiedActions ' + + 'and plan as a set', function() { + offlineReplanning._algorithm = 'actionTree'; + offlineReplanning._existingPlans = [['ACTION_ONE']]; + offlineReplanning._satisfiedActions = new Set(['ACTION_ONE']); + + offlineReplanning._pruneExistingPlans(); + + expect(setOperations.isSuperset.args).to.deep.equal([ + [ + new Set(['ACTION_ONE']), + new Set(['ACTION_ONE']), + ], + ]); + }); + }); + + describe('if offlineReplanning._algorithm is forwardstatespacesearchheuristic', function() { + it('should call setOperations.isSuperset once with offlineReplanning._satisfiedActions ' + 'and plan.path as a set', function() { - offlineReplanning._existingPlans = [{path: ['ACTION_ONE']}]; - offlineReplanning._satisfiedActions = new Set(['ACTION_ONE']); + offlineReplanning._algorithm = 'forwardStateSpaceSearchHeuristic'; + offlineReplanning._existingPlans = [{path: ['ACTION_ONE']}]; + offlineReplanning._satisfiedActions = new Set(['ACTION_ONE']); - offlineReplanning._pruneExistingPlans(); + offlineReplanning._pruneExistingPlans(); - expect(setOperations.isSuperset.args).to.deep.equal([ - [ - new Set(['ACTION_ONE']), - new Set(['ACTION_ONE']), - ], - ]); + expect(setOperations.isSuperset.args).to.deep.equal([ + [ + new Set(['ACTION_ONE']), + new Set(['ACTION_ONE']), + ], + ]); + }); }); describe('if setOperations.isSuperset returns a truthy value', function() { it('should not add the plan to the prunedPlans', function() { setOperations.isSuperset.returns(true); + offlineReplanning._algorithm = 'forwardStateSpaceSearchHeuristic'; offlineReplanning._existingPlans = [{path: ['ACTION_ONE']}]; offlineReplanning._satisfiedActions = new Set(['ACTION_ONE']); @@ -1414,6 +1436,7 @@ describe('lib/planner/search-algorithms/offline-replanning.js', function() { describe('if setOperations.isSuperset returns a falsy value', function() { it('should add the the plan to the prunedPlans', function() { setOperations.isSuperset.returns(false); + offlineReplanning._algorithm = 'forwardStateSpaceSearchHeuristic'; offlineReplanning._existingPlans = [{path: ['ACTION_ONE']}]; offlineReplanning._satisfiedActions = new Set(['ACTION_ONE']); @@ -1426,6 +1449,7 @@ describe('lib/planner/search-algorithms/offline-replanning.js', function() { describe('if there are two plans in offlineReplanning._existingPlans', function() { it('should call superOperations.isSuperset twice', function() { + offlineReplanning._algorithm = 'forwardStateSpaceSearchHeuristic'; offlineReplanning._existingPlans = [{path: ['ACTION_ONE']}, {path: ['ACTION_TWO']}]; offlineReplanning._satisfiedActions = new Set(['ACTION_ONE', 'ACTION_TWO']); @@ -1438,6 +1462,7 @@ describe('lib/planner/search-algorithms/offline-replanning.js', function() { it('should only the second plan to the prunedPlans array', function() { setOperations.isSuperset.onCall(0).returns(true); setOperations.isSuperset.onCall(1).returns(false); + offlineReplanning._algorithm = 'forwardStateSpaceSearchHeuristic'; offlineReplanning._existingPlans = [{path: ['ACTION_ONE']}, {path: ['ACTION_TWO']}]; offlineReplanning._satisfiedActions = new Set(['ACTION_ONE', 'ACTION_TWO']); From 647bd46a4ac1b92d0c4d5850302fd762f9ab3ea7 Mon Sep 17 00:00:00 2001 From: Zach Knox Date: Mon, 14 Oct 2019 14:59:26 -0400 Subject: [PATCH 3/6] issue-203 fixing up test output --- .../search-algorithms/offline-replanning.js | 24 +++++++-- .../offline-replanning-tests.js | 50 ++++++++++++++----- 2 files changed, 56 insertions(+), 18 deletions(-) diff --git a/lib/planner/search-algorithms/offline-replanning.js b/lib/planner/search-algorithms/offline-replanning.js index b0f187b8..e9188634 100644 --- a/lib/planner/search-algorithms/offline-replanning.js +++ b/lib/planner/search-algorithms/offline-replanning.js @@ -66,11 +66,25 @@ module.exports = offlineReplanning = { offlineReplanning._savePlan(plan); } - offlineReplanning.emitAsync( - 'planner.planningFinished', - offlineReplanning._plans, - offlineReplanning._discoveredActions - ); + if (offlineReplanning._algorithm.toLowerCase() === 'actiontree') { + let testCases = []; + for (let plan of offlineReplanning._plans) { + testCases.push(plan.testCase); + } + offlineReplanning.emitAsync( + 'planner.planningFinished', + testCases, + offlineReplanning._discoveredActions, + offlineReplanning._algorithm + ); + } else { + offlineReplanning.emitAsync( + 'planner.planningFinished', + offlineReplanning._plans, + offlineReplanning._discoveredActions, + offlineReplanning._algorithm + ); + } }, * _checkForLoopAndBackTrack(plan, callback) { let next = yield; diff --git a/test/unit/lib/planner/search-algorithms/offline-replanning-tests.js b/test/unit/lib/planner/search-algorithms/offline-replanning-tests.js index baebd2d2..ad4bdde7 100644 --- a/test/unit/lib/planner/search-algorithms/offline-replanning-tests.js +++ b/test/unit/lib/planner/search-algorithms/offline-replanning-tests.js @@ -538,21 +538,45 @@ describe('lib/planner/search-algorithms/offline-replanning.js', function() { describe('if offlineReplanning._satisfiedActions.size is equal to offlineReplanning._actionOccurrences ' + '.size', function() { - it('should call offlineReplanning.emitAsync with the event "planningFinished", offlineReplanning._plans, ' + - 'offlineReplanning._discoveredActions', function() { - offlineReplanning._satisfiedActions = new Set(['MY_ACTION']); - offlineReplanning._plans = ['aPlan']; - let generator = offlineReplanning.replan('existingPlans', 'discoveredActions', 'algorithm'); + describe('if offlineReplanning._algorithm is actiontree', function() { + it('should call offlineReplanning.emitAsync with the event "planningFinished", offlineReplanning._plans, ' + + 'offlineReplanning._discoveredActions, offlineReplanning._algorithm', function() { + offlineReplanning._satisfiedActions = new Set(['MY_ACTION']); + offlineReplanning._plans = ['aPlan']; + let generator = offlineReplanning.replan('existingPlans', 'discoveredActions', 'actionTree'); - generator.next(); - generator.next(next); - generator.next({actionOccurrences: new Map([['MY_ACTION', 1]])}); + generator.next(); + generator.next(next); + generator.next({actionOccurrences: new Map([['MY_ACTION', 1]])}); - expect(offlineReplanning.emitAsync.args[1]).to.deep.equal([ - 'planner.planningFinished', - ['aPlan'], - 'discoveredActions', - ]); + expect(offlineReplanning.emitAsync.args[1]).to.deep.equal([ + 'planner.planningFinished', + [undefined], + 'discoveredActions', + 'actionTree', + ]); + }); + }); + + describe('if offlineReplanning._algorithm is forwardstatespacesearchheuristic', function() { + it('should call offlineReplanning.emitAsync with the event "planningFinished", offlineReplanning._plans, ' + + 'offlineReplanning._discoveredActions, offlineReplanning._algorithm', function() { + offlineReplanning._satisfiedActions = new Set(['MY_ACTION']); + offlineReplanning._plans = ['aPlan']; + let generator = offlineReplanning.replan('existingPlans', 'discoveredActions', + 'forwardStateSpaceSearchHeuristic'); + + generator.next(); + generator.next(next); + generator.next({actionOccurrences: new Map([['MY_ACTION', 1]])}); + + expect(offlineReplanning.emitAsync.args[1]).to.deep.equal([ + 'planner.planningFinished', + ['aPlan'], + 'discoveredActions', + 'forwardStateSpaceSearchHeuristic', + ]); + }); }); }); }); From b095ee19d07901966ca15c80eb1e3cfd2c256d25 Mon Sep 17 00:00:00 2001 From: Zach Knox Date: Mon, 14 Oct 2019 15:07:25 -0400 Subject: [PATCH 4/6] issue-203 version bump and changelog update --- CHANGELOG.md | 16 +++++++++++----- package.json | 2 +- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a802591..756c233a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,21 +2,27 @@ ## Pending Version +## 0.8.5 + +* Zach Knox + * Enabled replanning support for actionTree algorithm + * Fixed replanning algorithm to output correctly when running with actionTree algorithm + ## 0.8.4 - * Raghu Dantuluri - * Fixed generated test names to not collide, causing test overwrites +* Raghu Dantuluri + * Fixed generated test names to not collide, causing test overwrites ## 0.8.3 * Raghu Dantuluri - * Added functionality to allow user to pass sauce connect options to the embedded sauce connect tunnel; - * Changed the generated tests' names to be based on the test plan; + * Added functionality to allow user to pass sauce connect options to the embedded sauce connect tunnel; + * Changed the generated tests' names to be based on the test plan; ## 0.8.2 * Raghu Dantuluri - * Exposed 'remote' from 'selenium-webdriver' for use in test execution + * Exposed 'remote' from 'selenium-webdriver' for use in test execution ## 0.8.1 diff --git a/package.json b/package.json index 527e4c1c..f1f3938e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "simulato", - "version": "0.8.4", + "version": "0.8.5", "description": "A model based testing tool", "main": "index.js", "bin": { From 15776b9edce2989e3a868655e564f928d58ffe65 Mon Sep 17 00:00:00 2001 From: Zach Knox Date: Tue, 15 Oct 2019 10:42:17 -0400 Subject: [PATCH 5/6] issue-203 coverage for test-planner --- test/unit/lib/planner/test-planner-tests.js | 261 +++++++++++++++++--- 1 file changed, 230 insertions(+), 31 deletions(-) diff --git a/test/unit/lib/planner/test-planner-tests.js b/test/unit/lib/planner/test-planner-tests.js index 03084e37..200582e2 100644 --- a/test/unit/lib/planner/test-planner-tests.js +++ b/test/unit/lib/planner/test-planner-tests.js @@ -50,6 +50,66 @@ describe('lib/planner/test-planner.js', function() { let testPlanner; let plannerEventDispatch; let config; + let actionTree; + let forwardStateSpaceSearchHeuristic; + + beforeEach(function() { + mockery.enable({useCleanCache: true}); + mockery.registerAllowable('../../../../lib/planner/test-planner.js'); + + Emitter = { + mixIn: function(myObject) { + myObject.emit = sinon.stub(); + }, + }; + sinon.spy(Emitter, 'mixIn'); + plannerEventDispatch = sinon.stub(); + config = { + get: sinon.stub(), + }; + + actionTree = sinon.stub(); + forwardStateSpaceSearchHeuristic = sinon.stub(); + + mockery.registerMock('../util/emitter.js', Emitter); + mockery.registerMock('../util/config/config-handler.js', config); + mockery.registerMock('./planner-event-dispatch/planner-event-dispatch.js', plannerEventDispatch); + + testPlanner = require('../../../../lib/planner/test-planner.js'); + testPlanner._generateActionTree = actionTree; + testPlanner._generateStateSpace = forwardStateSpaceSearchHeuristic; + }); + + afterEach(function() { + mockery.resetCache(); + mockery.deregisterAll(); + mockery.disable(); + }); + + describe('when testPlanner._algorithm is actionTree', function() { + it('should call _generateActionTree()', function() { + config.get.onCall(0).returns('actionTree'); + testPlanner.generateTests(); + + expect(testPlanner._generateActionTree.calledOnce).to.be.true; + }); + }); + + describe('when testPlanner._algorithm is forwardStateSpaceSearchHeuristic', function() { + it('should call _generateStateSpace()', function() { + config.get.onCall(0).returns('forwardStateSpaceSearchHeuristic'); + testPlanner.generateTests(); + + expect(testPlanner._generateStateSpace.calledOnce).to.be.true; + }); + }); + }); + + describe('_generateActionTree', function() { + let Emitter; + let testPlanner; + let plannerEventDispatch; + let config; beforeEach(function() { mockery.enable({useCleanCache: true}); @@ -80,38 +140,28 @@ describe('lib/planner/test-planner.js', function() { }); it('should call testPlanner.emit with the event' + - '\testPlanner.createForwardStateSpaceSearchHeuristicPlans\'', function() { - testPlanner.generateTests(); + '\testPlanner.createActionTreePlans\'', function() { + testPlanner._generateActionTree(); - expect(testPlanner.emit.args[0][0]).to.deep.equal('testPlanner.createForwardStateSpaceSearchHeuristicPlans'); + expect(testPlanner.emit.args[0][0]).to.deep.equal('testPlanner.createActionTreePlans'); }); describe('when the callback for testPlanner.emit with the event ' + - '\'testPlanner.createPlans\' is called', function() { + '\'testPlanner.createActionTreePlans\' is called', function() { describe('if an error is passed in to the callback', function() { it('should throw an error', function() { testPlanner.emit.onCall(0).callsArgWith(1, new Error('An error occurred!')); - expect(testPlanner.generateTests).to.throw('An error occurred!'); + expect(testPlanner._generateActionTree).to.throw('An error occurred!'); }); }); - describe('if a plan is passed in to the callback', function() { - it('should add it to the plans array', function() { - testPlanner.generateTests(); - let callback = testPlanner.emit.args[0][1]; - - callback(null, 'myPlan'); - callback(null, null, true); - expect(testPlanner.emit.args[1][1]).to.deep.equal(['myPlan']); - }); - }); describe('if a truthy value for done is pass in to the callback', function() { it('should call testPlanner.emit with the event \'testPlanner.reduceToMinimumSetOfPlans\', ' + 'plans, and discoveredActions', function() { testPlanner.emit.onCall(0).callsArgWith(1, null, null, true, 'discoveredActions'); - testPlanner.generateTests(); + testPlanner._generateStateSpace(); expect(testPlanner.emit.args[1].slice(0, 2)).to.deep.equal([ 'testPlanner.reduceToMinimumSetOfPlans', @@ -123,59 +173,63 @@ describe('lib/planner/test-planner.js', function() { '\'testPlanner.reduceToMinimumSetOfTestPlans\'', function() { describe('if an error is passed in', function() { it('should throw the error', function() { - testPlanner._algorithm = 'default'; + testPlanner._algorithm = 'actionTree'; testPlanner.emit.onCall(0).callsArgWith(1, null, null, true, 'discoveredActions'); testPlanner.emit.onCall(1).callsArgWith(3, new Error('An error occurred!')); - expect(testPlanner.generateTests).to.throw('An error occurred!'); + expect(testPlanner._generateActionTree).to.throw('An error occurred!'); }); }); + describe('if an error is not passed in', function() { it('should call config.get once with the string "plannerTestLength"', function() { - testPlanner.emit.onCall(0).callsArgWith(1, null, null, true, 'discoveredActions'); + testPlanner.emit.onCall(0).callsArgWith(1, null, null, 'discoveredActions'); testPlanner.emit.onCall(1).callsArgWith(3, null, 'theFinalPlans'); - testPlanner.generateTests(); + testPlanner._generateActionTree(); - expect(config.get.args[1]).to.deep.equal([ + expect(config.get.args[0]).to.deep.equal([ 'plannerTestLength', ]); }); + describe('if testLength is a truthy value', function() { it('should call testPlanner.emit with the event \'offlineReplanning.replan\', ' + 'the finalPlans, discoveredActions, and an object with the testLength', function() { - testPlanner.emit.onCall(0).callsArgWith(1, null, null, true, 'discoveredActions'); + testPlanner.emit.onCall(0).callsArgWith(1, null, null, 'discoveredActions'); testPlanner.emit.onCall(1).callsArgWith(3, null, 'theFinalPlans'); - config.get.onCall(0).returns('algorithm'); - config.get.onCall(1).returns(5); + testPlanner._algorithm = 'actionTree'; + config.get.onCall(0).returns(5); - testPlanner.generateTests(); + testPlanner._generateActionTree(); expect(testPlanner.emit.args[2]).to.deep.equal([ 'offlineReplanning.replan', 'theFinalPlans', 'discoveredActions', - 'algorithm', + 'actionTree', { testLength: 5, }, ]); }); }); - describe('if testLength is a falsy value', function() { + + describe('if testLength is a falsy value', function() { it('should call testPlanner.emit with the event \'testPlanner.planningFinished\', ' + 'the finalPlans, and discoveredActions', function() { - testPlanner.emit.onCall(0).callsArgWith(1, null, null, true, 'discoveredActions'); + testPlanner.emit.onCall(0).callsArgWith(1, null, null, 'discoveredActions'); testPlanner.emit.onCall(1).callsArgWith(3, null, 'theFinalPlans'); - config.get.onCall(0).returns('algorithm'); + testPlanner._algorithm = 'actionTree'; + config.get.onCall(0).returns(undefined); - testPlanner.generateTests(); + testPlanner._generateActionTree(); expect(testPlanner.emit.args[2]).to.deep.equal([ 'planner.planningFinished', 'theFinalPlans', 'discoveredActions', - 'algorithm', + 'actionTree', ]); }); }); @@ -185,3 +239,148 @@ describe('lib/planner/test-planner.js', function() { }); }); }); + +describe('_generateStateSpace', function() { + let Emitter; + let testPlanner; + let plannerEventDispatch; + let config; + + beforeEach(function() { + mockery.enable({useCleanCache: true}); + mockery.registerAllowable('../../../../lib/planner/test-planner.js'); + + Emitter = { + mixIn: function(myObject) { + myObject.emit = sinon.stub(); + }, + }; + sinon.spy(Emitter, 'mixIn'); + plannerEventDispatch = sinon.stub(); + config = { + get: sinon.stub(), + }; + + mockery.registerMock('../util/emitter.js', Emitter); + mockery.registerMock('../util/config/config-handler.js', config); + mockery.registerMock('./planner-event-dispatch/planner-event-dispatch.js', plannerEventDispatch); + + testPlanner = require('../../../../lib/planner/test-planner.js'); + }); + + afterEach(function() { + mockery.resetCache(); + mockery.deregisterAll(); + mockery.disable(); + }); + + it('should call testPlanner.emit with the event' + + '\testPlanner.createForwardStateSpaceSearchHeuristicPlans\'', function() { + testPlanner._generateStateSpace(); + + expect(testPlanner.emit.args[0][0]).to.deep.equal('testPlanner.createForwardStateSpaceSearchHeuristicPlans'); + }); + + describe('when the callback for testPlanner.emit with the event ' + + '\'testPlanner.createPlans\' is called', function() { + describe('if an error is passed in to the callback', function() { + it('should throw an error', function() { + testPlanner.emit.onCall(0).callsArgWith(1, new Error('An error occurred!')); + + expect(testPlanner._generateStateSpace).to.throw('An error occurred!'); + }); + }); + + describe('if a plan is passed in to the callback', function() { + it('should add it to the plans array', function() { + testPlanner._generateStateSpace(); + let callback = testPlanner.emit.args[0][1]; + + callback(null, 'myPlan'); + callback(null, null, true); + + expect(testPlanner.emit.args[1][1]).to.deep.equal(['myPlan']); + }); + }); + + describe('if a truthy value for done is pass in to the callback', function() { + it('should call testPlanner.emit with the event \'testPlanner.reduceToMinimumSetOfPlans\', ' + + 'plans, and discoveredActions', function() { + testPlanner.emit.onCall(0).callsArgWith(1, null, null, true, 'discoveredActions'); + + testPlanner._generateStateSpace(); + + expect(testPlanner.emit.args[1].slice(0, 2)).to.deep.equal([ + 'testPlanner.reduceToMinimumSetOfPlans', + [], + ]); + }); + + describe('when the callback is called for testPlanner.emit with the event ' + + '\'testPlanner.reduceToMinimumSetOfTestPlans\'', function() { + describe('if an error is passed in', function() { + it('should throw the error', function() { + testPlanner._algorithm = 'default'; + testPlanner.emit.onCall(0).callsArgWith(1, null, null, true, 'discoveredActions'); + testPlanner.emit.onCall(1).callsArgWith(3, new Error('An error occurred!')); + + expect(testPlanner._generateStateSpace).to.throw('An error occurred!'); + }); + }); + + describe('if an error is not passed in', function() { + it('should call config.get once with the string "plannerTestLength"', function() { + testPlanner.emit.onCall(0).callsArgWith(1, null, null, true, 'discoveredActions'); + testPlanner.emit.onCall(1).callsArgWith(3, null, 'theFinalPlans'); + + testPlanner._generateStateSpace(); + + expect(config.get.args[0]).to.deep.equal([ + 'plannerTestLength', + ]); + }); + + describe('if testLength is a truthy value', function() { + it('should call testPlanner.emit with the event \'offlineReplanning.replan\', ' + + 'the finalPlans, discoveredActions, and an object with the testLength', function() { + testPlanner.emit.onCall(0).callsArgWith(1, null, null, true, 'discoveredActions'); + testPlanner.emit.onCall(1).callsArgWith(3, null, 'theFinalPlans'); + testPlanner._algorithm = 'forwardStateSpaceSearchHeuristic'; + config.get.onCall(0).returns(5); + + testPlanner._generateStateSpace(); + + expect(testPlanner.emit.args[2]).to.deep.equal([ + 'offlineReplanning.replan', + 'theFinalPlans', + 'discoveredActions', + 'forwardStateSpaceSearchHeuristic', + { + testLength: 5, + }, + ]); + }); + }); + + describe('if testLength is a falsy value', function() { + it('should call testPlanner.emit with the event \'testPlanner.planningFinished\', ' + + 'the finalPlans, and discoveredActions', function() { + testPlanner.emit.onCall(0).callsArgWith(1, null, null, true, 'discoveredActions'); + testPlanner.emit.onCall(1).callsArgWith(3, null, 'theFinalPlans'); + testPlanner._algorithm = 'forwardStateSpaceSearchHeuristic'; + + testPlanner._generateStateSpace(); + + expect(testPlanner.emit.args[2]).to.deep.equal([ + 'planner.planningFinished', + 'theFinalPlans', + 'discoveredActions', + 'forwardStateSpaceSearchHeuristic', + ]); + }); + }); + }); + }); + }); + }); +}); From d9bb40fbf9845d8c0d998bd6589f49ec06e0a866 Mon Sep 17 00:00:00 2001 From: Zach Knox Date: Tue, 15 Oct 2019 13:18:30 -0400 Subject: [PATCH 6/6] issue-203 preparing for release --- docs/pages/home/release-notes.md | 14 +- package-lock.json | 688 ++++++++++++++----------------- 2 files changed, 323 insertions(+), 379 deletions(-) diff --git a/docs/pages/home/release-notes.md b/docs/pages/home/release-notes.md index 6e2ccae6..0437bfe2 100644 --- a/docs/pages/home/release-notes.md +++ b/docs/pages/home/release-notes.md @@ -5,22 +5,28 @@ toc_label: 'Version Number' sidebar: about_sidebar --- +## 0.8.5 + +* Zach Knox + * Enabled replanning support for actionTree algorithm + * Fixed replanning algorithm to output correctly when running with actionTree algorithm + ## 0.8.4 * Raghu Dantuluri - * Fixed generated test names to not collide, causing test overwrites + * Fixed generated test names to not collide, causing test overwrites ## 0.8.3 * Raghu Dantuluri - * Changed generated test names to be based off the test plan; - * Added functionality to allow user to pass sauce connect options to the embedded sauce connect tunnel; + * Changed generated test names to be based off the test plan; + * Added functionality to allow user to pass sauce connect options to the embedded sauce connect tunnel; ## 0.8.2 * Raghu Dantuluri - * Exposed 'remote' from 'selenium-webdriver' for use in test execution + * Exposed 'remote' from 'selenium-webdriver' for use in test execution ## 0.8.1 diff --git a/package-lock.json b/package-lock.json index e8f61797..ab85689d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "simulato", - "version": "0.8.4", + "version": "0.8.5", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -62,16 +62,15 @@ } }, "@babel/generator": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.0.tgz", - "integrity": "sha512-Ms8Mo7YBdMMn1BYuNtKuP/z0TgEIhbcyB8HVR6PPNYp4P61lMsABiS4A3VG1qznjXVCf3r+fVHhm4efTYVsySA==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.4.tgz", + "integrity": "sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w==", "dev": true, "requires": { - "@babel/types": "^7.6.0", + "@babel/types": "^7.6.3", "jsesc": "^2.5.1", "lodash": "^4.17.13", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "source-map": "^0.5.0" }, "dependencies": { "source-map": { @@ -299,13 +298,13 @@ } }, "@babel/helpers": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.6.0.tgz", - "integrity": "sha512-W9kao7OBleOjfXtFGgArGRX6eCP0UEcA2ZWEWNkJdRZnHhW4eEbeswbG3EwaRsnQUAEGWYgMq1HsIXuNNNy2eQ==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.6.2.tgz", + "integrity": "sha512-3/bAUL8zZxYs1cdX2ilEE0WobqbCmKWr/889lf2SS0PpDcpEIY8pb1CCyz0pEcX3pEb+MCbks1jIokz2xLtGTA==", "dev": true, "requires": { "@babel/template": "^7.6.0", - "@babel/traverse": "^7.6.0", + "@babel/traverse": "^7.6.2", "@babel/types": "^7.6.0" } }, @@ -321,9 +320,9 @@ } }, "@babel/parser": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.0.tgz", - "integrity": "sha512-+o2q111WEx4srBs7L9eJmcwi655eD8sXniLqMB93TBK9GrNzGrxDWSjiqz2hLU0Ha8MTXFIP0yd9fNdP+m43ZQ==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.4.tgz", + "integrity": "sha512-D8RHPW5qd0Vbyo3qb+YjO5nvUVRTXFLQ/FsDxJU2Nqz4uB5EnUN0ZQSEYpvTIbRuttig1XbHWU5oMeQwQSAA+A==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { @@ -379,9 +378,9 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz", - "integrity": "sha512-F2DxJJSQ7f64FyTVl5cw/9MWn6naXGdk3Q3UhDbFEEHv+EilCPoeRD3Zh/Utx1CJz4uyKlQ4uH+bJPbEhMV7Zw==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz", + "integrity": "sha512-LDBXlmADCsMZV1Y9OQwMc0MyGZ8Ta/zlD9N67BfQT8uYwkRswiu2hU6nJKrjrt/58aH/vqfQlR/9yId/7A2gWw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -399,14 +398,14 @@ } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz", - "integrity": "sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.6.2.tgz", + "integrity": "sha512-NxHETdmpeSCtiatMRYWVJo7266rrvAC3DTeG5exQBIH/fMIUK7ejDNznBbn3HQl/o9peymRRg7Yqkx6PdUXmMw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" + "regexpu-core": "^4.6.0" } }, "@babel/plugin-syntax-async-generators": { @@ -520,9 +519,9 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.0.tgz", - "integrity": "sha512-tIt4E23+kw6TgL/edACZwP1OUKrjOTyMrFMLoT5IOFrfMRabCgekjqFd5o6PaAMildBu46oFkekIdMuGkkPEpA==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.3.tgz", + "integrity": "sha512-7hvrg75dubcO3ZI2rjYTzUrEuh1E9IyDEhhB6qfcooxhDA33xx2MasuLVgdxzcP6R/lipAC6n9ub9maNW6RKdw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -564,14 +563,14 @@ } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz", - "integrity": "sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.6.2.tgz", + "integrity": "sha512-KGKT9aqKV+9YMZSkowzYoYEiHqgaDhGmPNZlZxX6UeHC4z30nC1J9IrZuGqbYFB1jaIGdv91ujpze0exiVK8bA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" + "regexpu-core": "^4.6.0" } }, "@babel/plugin-transform-duplicate-keys": { @@ -685,12 +684,12 @@ } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.0.tgz", - "integrity": "sha512-jem7uytlmrRl3iCAuQyw8BpB4c4LWvSpvIeXKpMb+7j84lkx4m4mYr5ErAcmN5KM7B6BqrAvRGjBIbbzqCczew==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.3.tgz", + "integrity": "sha512-jTkk7/uE6H2s5w6VlMHeWuH+Pcy2lmdwFoeWCVnvIrDUnB5gQqTVI8WfmEAhF2CDEarGrknZcmSFg1+bkfCoSw==", "dev": true, "requires": { - "regexp-tree": "^0.1.13" + "regexpu-core": "^4.6.0" } }, "@babel/plugin-transform-new-target": { @@ -733,9 +732,9 @@ } }, "@babel/plugin-transform-react-constant-elements": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.6.0.tgz", - "integrity": "sha512-np/nPuII8DHOZWB3u8u+NSeKlEz0eBrOlnVksIQog4C9NGVzXO+NLxMcXn4Eu4GMFzOw2W6Tyo6L3+Wv8z9Y5w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.6.3.tgz", + "integrity": "sha512-1/YogSSU7Tby9rq2VCmhuRg+6pxsHy2rI7w/oo8RKoBt6uBUFG+mk6x13kK+FY1/ggN92HAfg7ADd1v1+NCOKg==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.0.0", @@ -833,9 +832,9 @@ } }, "@babel/plugin-transform-spread": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", - "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.6.2.tgz", + "integrity": "sha512-DpSvPFryKdK1x+EDJYCy28nmAaIMdxmhot62jAXF/o99iA33Zj2Lmcp3vDmz+MUh0LNYVPvfj5iC3feb3/+PFg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" @@ -871,9 +870,9 @@ } }, "@babel/plugin-transform-typescript": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.6.0.tgz", - "integrity": "sha512-yzw7EopOOr6saONZ3KA3lpizKnWRTe+rfBqg4AmQbSow7ik7fqmzrfIqt053osLwLE2AaTqGinLM2tl6+M/uog==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.6.3.tgz", + "integrity": "sha512-aiWINBrPMSC3xTXRNM/dfmyYuPNKY/aexYqBgh0HBI5Y+WO5oRAqW/oROYeYHrF4Zw12r9rK4fMk/ZlAmqx/FQ==", "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.6.0", @@ -882,20 +881,20 @@ } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz", - "integrity": "sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.6.2.tgz", + "integrity": "sha512-orZI6cWlR3nk2YmYdb0gImrgCUwb5cBUwjf6Ks6dvNVvXERkwtJWOQaEOjPiu0Gu1Tq6Yq/hruCZZOOi9F34Dw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" + "regexpu-core": "^4.6.0" } }, "@babel/preset-env": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.6.0.tgz", - "integrity": "sha512-1efzxFv/TcPsNXlRhMzRnkBFMeIqBBgzwmZwlFDw5Ubj0AGLeufxugirwZmkkX/ayi3owsSqoQ4fw8LkfK9SYg==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.6.3.tgz", + "integrity": "sha512-CWQkn7EVnwzlOdR5NOm2+pfgSNEZmvGjOhlCHBDq0J8/EStr+G+FvPEiz9B56dR6MoiUFjXhfE4hjLoAKKJtIQ==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", @@ -903,9 +902,9 @@ "@babel/plugin-proposal-async-generator-functions": "^7.2.0", "@babel/plugin-proposal-dynamic-import": "^7.5.0", "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.5.5", + "@babel/plugin-proposal-object-rest-spread": "^7.6.2", "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.6.2", "@babel/plugin-syntax-async-generators": "^7.2.0", "@babel/plugin-syntax-dynamic-import": "^7.2.0", "@babel/plugin-syntax-json-strings": "^7.2.0", @@ -914,11 +913,11 @@ "@babel/plugin-transform-arrow-functions": "^7.2.0", "@babel/plugin-transform-async-to-generator": "^7.5.0", "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.6.0", + "@babel/plugin-transform-block-scoping": "^7.6.3", "@babel/plugin-transform-classes": "^7.5.5", "@babel/plugin-transform-computed-properties": "^7.2.0", "@babel/plugin-transform-destructuring": "^7.6.0", - "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.6.2", "@babel/plugin-transform-duplicate-keys": "^7.5.0", "@babel/plugin-transform-exponentiation-operator": "^7.2.0", "@babel/plugin-transform-for-of": "^7.4.4", @@ -929,7 +928,7 @@ "@babel/plugin-transform-modules-commonjs": "^7.6.0", "@babel/plugin-transform-modules-systemjs": "^7.5.0", "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.6.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.6.3", "@babel/plugin-transform-new-target": "^7.4.4", "@babel/plugin-transform-object-super": "^7.5.5", "@babel/plugin-transform-parameters": "^7.4.4", @@ -937,12 +936,12 @@ "@babel/plugin-transform-regenerator": "^7.4.5", "@babel/plugin-transform-reserved-words": "^7.2.0", "@babel/plugin-transform-shorthand-properties": "^7.2.0", - "@babel/plugin-transform-spread": "^7.2.0", + "@babel/plugin-transform-spread": "^7.6.2", "@babel/plugin-transform-sticky-regex": "^7.2.0", "@babel/plugin-transform-template-literals": "^7.4.4", "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.4.4", - "@babel/types": "^7.6.0", + "@babel/plugin-transform-unicode-regex": "^7.6.2", + "@babel/types": "^7.6.3", "browserslist": "^4.6.0", "core-js-compat": "^3.1.1", "invariant": "^2.2.2", @@ -951,9 +950,9 @@ } }, "@babel/preset-react": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.0.0.tgz", - "integrity": "sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.6.3.tgz", + "integrity": "sha512-07yQhmkZmRAfwREYIQgW0HEwMY9GBJVuPY4Q12UC72AbfaawuupVWa8zQs2tlL+yun45Nv/1KreII/0PLfEsgA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -974,9 +973,9 @@ } }, "@babel/runtime": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.6.0.tgz", - "integrity": "sha512-89eSBLJsxNxOERC0Op4vd+0Bqm6wRMqMbFtV3i0/fbaWw/mJ8Q3eBvgX0G4SyrOOLCtbu98HspF8o09MRT+KzQ==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.6.3.tgz", + "integrity": "sha512-kq6anf9JGjW8Nt5rYfEuGRaEAaH1mkv3Bbu6rYvLOpPh/RusSJXuKPEAoZ7L7gybZkchE8+NV5g9vKF4AGAtsA==", "dev": true, "requires": { "regenerator-runtime": "^0.13.2" @@ -994,17 +993,17 @@ } }, "@babel/traverse": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.0.tgz", - "integrity": "sha512-93t52SaOBgml/xY74lsmt7xOR4ufYvhb5c5qiM6lu4J/dWGMAfAh6eKw4PjLes6DI6nQgearoxnFJk60YchpvQ==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.3.tgz", + "integrity": "sha512-unn7P4LGsijIxaAJo/wpoU11zN+2IaClkQAxcJWBNCMS6cmVh802IyLHNkAjQ0iYnRS3nnxk5O3fuXW28IMxTw==", "dev": true, "requires": { "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.0", + "@babel/generator": "^7.6.3", "@babel/helper-function-name": "^7.1.0", "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.0", + "@babel/parser": "^7.6.3", + "@babel/types": "^7.6.3", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" @@ -1022,9 +1021,9 @@ } }, "@babel/types": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.1.tgz", - "integrity": "sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", + "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -1075,9 +1074,9 @@ "dev": true }, "@hapi/hoek": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.2.4.tgz", - "integrity": "sha512-Ze5SDNt325yZvNO7s5C4fXDscjJ6dcqLFXJQ/M7dZRQCewuDj2iDUuBi6jLQt+APbW9RjjVEvLr35FXuOEqjow==", + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.3.1.tgz", + "integrity": "sha512-75ocgnI7HG/I01iGA3/rs0y6PXydUA/kxhFZM0HoT8NLSTnt/J8Gq03iKl4a4B/2A3iMG0ctXtxr5Hg9SGr1gw==", "dev": true }, "@hapi/joi": { @@ -1093,12 +1092,12 @@ } }, "@hapi/topo": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.4.tgz", - "integrity": "sha512-aVWQTOI9wBD6zawmOr6f+tdEIxQC8JXfQVLTjgGe8YEStAWGn/GNNVTobKJhbWKveQj2RyYF3oYbO9SC8/eOCA==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", "dev": true, "requires": { - "@hapi/hoek": "8.x.x" + "@hapi/hoek": "^8.3.0" } }, "@jest/console": { @@ -1345,31 +1344,6 @@ "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", "dev": true }, - "@react-bootstrap/react-popper": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@react-bootstrap/react-popper/-/react-popper-1.2.1.tgz", - "integrity": "sha512-4l3q7LcZEhrSkI4d3Ie3g4CdrXqqTexXX4PFT45CB0z5z2JUbaxgRwKNq7r5j2bLdVpZm+uvUGqxJw8d9vgbJQ==", - "dev": true, - "requires": { - "babel-runtime": "6.x.x", - "create-react-context": "^0.2.1", - "popper.js": "^1.14.4", - "prop-types": "^15.6.1", - "typed-styles": "^0.0.5", - "warning": "^3.0.0" - }, - "dependencies": { - "warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", - "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - } - } - }, "@restart/context": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@restart/context/-/context-2.1.4.tgz", @@ -1392,9 +1366,9 @@ } }, "@sinonjs/formatio": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.1.tgz", - "integrity": "sha512-tsHvOB24rvyvV2+zKMmPkZ7dXX6LSLKZ7aOtXY6Edklp0uRcgGpOsQTTGTcWViFyx4uhWc6GV8QdnALbIbIdeQ==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.2.tgz", + "integrity": "sha512-B8SEsgd8gArBLMD6zpRw3juQ2FVSsmdd7qlevyDqzS9WTCtvF55/gAL+h6gue8ZvPYcdiPdvueM/qm//9XzyTQ==", "dev": true, "requires": { "@sinonjs/commons": "^1", @@ -1451,9 +1425,9 @@ "dev": true }, "@svgr/babel-plugin-svg-dynamic-title": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.1.tgz", - "integrity": "sha512-p6z6JJroP989jHWcuraeWpzdejehTmLUpyC9smhTBWyPN0VVGe2phbYxpPTV7Vh8XzmFrcG55idrnfWn/2oQEw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz", + "integrity": "sha512-w3Be6xUNdwgParsvxkkeZb545VhXEwjGMwExMVBIdPQJeyMQHqm9Msnb2a1teHBqUYL66qtwfhNkbj1iarCG7w==", "dev": true }, "@svgr/babel-plugin-svg-em-dimensions": { @@ -1475,28 +1449,28 @@ "dev": true }, "@svgr/babel-preset": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-4.3.1.tgz", - "integrity": "sha512-rPFKLmyhlh6oeBv3j2vEAj2nd2QbWqpoJLKzBLjwQVt+d9aeXajVaPNEqrES2spjXKR4OxfgSs7U0NtmAEkr0Q==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-4.3.3.tgz", + "integrity": "sha512-6PG80tdz4eAlYUN3g5GZiUjg2FMcp+Wn6rtnz5WJG9ITGEF1pmFdzq02597Hn0OmnQuCVaBYQE1OVFAnwOl+0A==", "dev": true, "requires": { "@svgr/babel-plugin-add-jsx-attribute": "^4.2.0", "@svgr/babel-plugin-remove-jsx-attribute": "^4.2.0", "@svgr/babel-plugin-remove-jsx-empty-expression": "^4.2.0", "@svgr/babel-plugin-replace-jsx-attribute-value": "^4.2.0", - "@svgr/babel-plugin-svg-dynamic-title": "^4.3.1", + "@svgr/babel-plugin-svg-dynamic-title": "^4.3.3", "@svgr/babel-plugin-svg-em-dimensions": "^4.2.0", "@svgr/babel-plugin-transform-react-native-svg": "^4.2.0", "@svgr/babel-plugin-transform-svg-component": "^4.2.0" } }, "@svgr/core": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-4.3.2.tgz", - "integrity": "sha512-N+tP5CLFd1hP9RpO83QJPZY3NL8AtrdqNbuhRgBkjE/49RnMrrRsFm1wY8pueUfAGvzn6tSXUq29o6ah8RuR5w==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-4.3.3.tgz", + "integrity": "sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w==", "dev": true, "requires": { - "@svgr/plugin-jsx": "^4.3.2", + "@svgr/plugin-jsx": "^4.3.3", "camelcase": "^5.3.1", "cosmiconfig": "^5.2.1" } @@ -1511,30 +1485,30 @@ } }, "@svgr/plugin-jsx": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-4.3.2.tgz", - "integrity": "sha512-+1GW32RvmNmCsOkMoclA/TppNjHPLMnNZG3/Ecscxawp051XJ2MkO09Hn11VcotdC2EPrDfT8pELGRo+kbZ1Eg==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz", + "integrity": "sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w==", "dev": true, "requires": { "@babel/core": "^7.4.5", - "@svgr/babel-preset": "^4.3.1", + "@svgr/babel-preset": "^4.3.3", "@svgr/hast-util-to-babel-ast": "^4.3.2", "svg-parser": "^2.0.0" }, "dependencies": { "@babel/core": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.6.0.tgz", - "integrity": "sha512-FuRhDRtsd6IptKpHXAa+4WPZYY2ZzgowkbLBecEDDSje1X/apG7jQM33or3NdOmjXBKWGOg4JmSiRfUfuTtHXw==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.6.4.tgz", + "integrity": "sha512-Rm0HGw101GY8FTzpWSyRbki/jzq+/PkNQJ+nSulrdY6gFGOsNseCqD6KHRYe2E+EdzuBdr2pxCp6s4Uk6eJ+XQ==", "dev": true, "requires": { "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.0", - "@babel/helpers": "^7.6.0", - "@babel/parser": "^7.6.0", + "@babel/generator": "^7.6.4", + "@babel/helpers": "^7.6.2", + "@babel/parser": "^7.6.4", "@babel/template": "^7.6.0", - "@babel/traverse": "^7.6.0", - "@babel/types": "^7.6.0", + "@babel/traverse": "^7.6.3", + "@babel/types": "^7.6.3", "convert-source-map": "^1.1.0", "debug": "^4.1.0", "json5": "^2.1.0", @@ -1611,9 +1585,9 @@ } }, "@types/babel__generator": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.0.2.tgz", - "integrity": "sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.0.tgz", + "integrity": "sha512-c1mZUu4up5cp9KROs/QAw0gTeHrw/x7m52LcnvMxxOZ03DmLwPV0MlGmlgzV3cnSdjhJOZsj7E7FHeioai+egw==", "dev": true, "requires": { "@babel/types": "^7.0.0" @@ -1660,12 +1634,28 @@ "@types/istanbul-lib-report": "*" } }, + "@types/prop-types": { + "version": "15.7.3", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", + "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==", + "dev": true + }, "@types/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", "dev": true }, + "@types/react": { + "version": "16.9.6", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.6.tgz", + "integrity": "sha512-ulPWlBFO0DQiObqxEm3t4icozuakPy5O81g6QyHv+Nyo1UPL+QVq2rmq1e4J8oHY7jl0HEtMAHNwNIzv6FRuTQ==", + "dev": true, + "requires": { + "@types/prop-types": "*", + "csstype": "^2.2.0" + } + }, "@types/stack-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", @@ -1673,9 +1663,9 @@ "dev": true }, "@types/yargs": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.2.tgz", - "integrity": "sha512-lwwgizwk/bIIU+3ELORkyuOgDjCh7zuWDFqRtPPhhVgq9N1F7CvLNKg1TX4f2duwtKQ0p044Au9r1PLIXHrIzQ==", + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.3.tgz", + "integrity": "sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ==", "requires": { "@types/yargs-parser": "*" } @@ -1915,9 +1905,9 @@ "dev": true }, "abab": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.1.tgz", - "integrity": "sha512-1zSbbCuoIjafKZ3mblY5ikvAb0ODUbqBnFuUb7f6uLeQhhGJ0vEV4ntmtxKLT2WgXCO94E07BjunsIw1jOMPZw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.2.tgz", + "integrity": "sha512-2scffjvioEmNz0OyDSLGWDfKCVwaKc6l9Pm9kOIREU13ClXZvHpg/nRL5xyjSSSLhOnXqft2HpsAzNEEA8cFFg==", "dev": true }, "abbrev": { @@ -1959,9 +1949,9 @@ } }, "acorn-jsx": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.2.tgz", - "integrity": "sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", + "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==", "dev": true }, "acorn-walk": { @@ -2279,18 +2269,18 @@ "dev": true }, "autoprefixer": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.6.1.tgz", - "integrity": "sha512-aVo5WxR3VyvyJxcJC3h4FKfwCQvQWb1tSI5VHNibddCVWrcD1NvlxEweg3TSgiPztMnWfjpy2FURKA2kvDE+Tw==", + "version": "9.6.5", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.6.5.tgz", + "integrity": "sha512-rGd50YV8LgwFQ2WQp4XzOTG69u1qQsXn0amww7tjqV5jJuNazgFKYEVItEBngyyvVITKOg20zr2V+9VsrXJQ2g==", "dev": true, "requires": { - "browserslist": "^4.6.3", - "caniuse-lite": "^1.0.30000980", + "browserslist": "^4.7.0", + "caniuse-lite": "^1.0.30000999", "chalk": "^2.4.2", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^7.0.17", - "postcss-value-parser": "^4.0.0" + "postcss": "^7.0.18", + "postcss-value-parser": "^4.0.2" }, "dependencies": { "postcss-value-parser": { @@ -2660,6 +2650,19 @@ "semver": "^5.5.0" } }, + "@babel/preset-react": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.0.0.tgz", + "integrity": "sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0" + } + }, "@babel/runtime": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.3.tgz", @@ -2690,6 +2693,12 @@ "regenerator-runtime": "^0.11.0" }, "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==", + "dev": true + }, "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", @@ -2804,9 +2813,9 @@ "dev": true }, "bluebird": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", - "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", + "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==", "dev": true }, "bn.js": { @@ -3191,9 +3200,9 @@ } }, "caniuse-lite": { - "version": "1.0.30000989", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz", - "integrity": "sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw==", + "version": "1.0.30000999", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000999.tgz", + "integrity": "sha512-1CUyKyecPeksKwXZvYw0tEoaMCo/RwBlXmEtN5vVnabvO0KPd9RQLcaAuR9/1F+KDMv6esmOFWlsXuzDk+8rxg==", "dev": true }, "capture-exit": { @@ -3286,9 +3295,9 @@ } }, "chownr": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz", - "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", + "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", "dev": true }, "chrome-trace-event": { @@ -3499,9 +3508,9 @@ } }, "commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "common-tags": { "version": "1.8.0", @@ -3669,18 +3678,18 @@ "dev": true }, "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.1.tgz", + "integrity": "sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw==", "dev": true }, "core-js-compat": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.2.1.tgz", - "integrity": "sha512-MwPZle5CF9dEaMYdDeWm73ao/IflDH+FjeJCWEADcEgFSE9TLimFKwJsfmkwzI8eC0Aj0mgvMDjeQjrElkz4/A==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.3.2.tgz", + "integrity": "sha512-gfiK4QnNXhnnHVOIZst2XHdFfdMTPxtR0EGs0TdILMlGIft+087oH6/Sw2xTTIjpWXC9vEwsJA8VG3XTGcmO5g==", "dev": true, "requires": { - "browserslist": "^4.6.6", + "browserslist": "^4.7.0", "semver": "^6.3.0" }, "dependencies": { @@ -3765,13 +3774,13 @@ } }, "create-react-context": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.2.3.tgz", - "integrity": "sha512-CQBmD0+QGgTaxDL3OX1IDXYqjkp2It4RIbcb99jS6AEg27Ga+a9G3JtK6SIu0HBwPLZlmwt9F7UwWA4Bn92Rag==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.3.0.tgz", + "integrity": "sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw==", "dev": true, "requires": { - "fbjs": "^0.8.0", - "gud": "^1.0.0" + "gud": "^1.0.0", + "warning": "^4.0.3" } }, "cross-spawn": { @@ -4088,9 +4097,9 @@ } }, "csstype": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.6.tgz", - "integrity": "sha512-RpFbQGUE74iyPgvr46U9t1xoQBM8T4BL8SxrN66Le2xYAPSaDJJKeztV3awugusb3g3G9iL8StmkBBXhcbbXhg==", + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.7.tgz", + "integrity": "sha512-9Mcn9sFbGBAdmimWb2gLVDtFJzeKtDGIr76TUqmjZrw9LFXBMSU70lcs+C0/7fyCd6iBDqmksUcCOUIkisPHsQ==", "dev": true }, "cyclist": { @@ -4559,9 +4568,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.264", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.264.tgz", - "integrity": "sha512-z8E7WkrrquCuGYv+kKyybuZIbdms+4PeHp7Zm2uIgEhAigP0bOwqXILItwj0YO73o+QyHY/7XtEfP5DsHOWQgQ==", + "version": "1.3.282", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.282.tgz", + "integrity": "sha512-irSaDeCGgfMu1OA30bhqIBr+dx+pDJjRbwCpob7YWqVZbzXblybNzPGklVnWqv4EXxbkEAzQYqiNCqNTgu00lQ==", "dev": true }, "elliptic": { @@ -4597,33 +4606,36 @@ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", "dev": true }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "dev": true, - "requires": { - "iconv-lite": "~0.4.13" - } - }, "end-of-stream": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.2.tgz", - "integrity": "sha512-gUSUszrsxlDnUbUwEI9Oygyrk4ZEWtVaHQc+uZHphVeNxl+qeqMV/jDWoTkjN1RmGlZ5QWAP7o458p/JMlikQg==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, "requires": { "once": "^1.4.0" } }, "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", "dev": true, "requires": { "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", + "memory-fs": "^0.5.0", "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } } }, "entities": { @@ -4651,9 +4663,9 @@ } }, "es-abstract": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.14.2.tgz", - "integrity": "sha512-DgoQmbpFNOofkjJtKwr87Ma5EW4Dc8fWhD0R+ndq7Oc456ivUfGOOP6oAZTTKl5/CcNMP+EN+e3/iUzgE0veZg==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz", + "integrity": "sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==", "requires": { "es-to-primitive": "^1.2.0", "function-bind": "^1.1.1", @@ -4663,8 +4675,8 @@ "is-regex": "^1.0.4", "object-inspect": "^1.6.0", "object-keys": "^1.1.1", - "string.prototype.trimleft": "^2.0.0", - "string.prototype.trimright": "^2.0.0" + "string.prototype.trimleft": "^2.1.0", + "string.prototype.trimright": "^2.1.0" } }, "es-to-primitive": { @@ -5586,29 +5598,6 @@ "bser": "^2.0.0" } }, - "fbjs": { - "version": "0.8.17", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", - "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", - "dev": true, - "requires": { - "core-js": "^1.0.0", - "isomorphic-fetch": "^2.1.1", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.18" - }, - "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", - "dev": true - } - } - }, "figgy-pudding": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", @@ -6455,9 +6444,9 @@ "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=" }, "get-own-enumerable-property-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz", - "integrity": "sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.1.tgz", + "integrity": "sha512-09/VS4iek66Dh2bctjRkowueRJbY1JDGR1L/zRxO1Qk8Uxs6PnqaNSqalpizPT+CDjre3hnEsuzvhgomz9qYrA==", "dev": true }, "get-stream": { @@ -6636,9 +6625,9 @@ "dev": true }, "handlebars": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.2.1.tgz", - "integrity": "sha512-bqPIlDk06UWbVEIFoYj+LVo42WhK96J+b25l7hbFDpxrOXMphFM3fNIm+cluwg4Pk2jiLjWU5nHQY7igGE75NQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.4.3.tgz", + "integrity": "sha512-B0W4A2U1ww3q7VVthTKfh+epHx+q4mCt6iK+zEAzbMBpWQAwxCeKxEGpj/1oQTpzPXDNSOG7hmG14TsISH50yw==", "dev": true, "requires": { "neo-async": "^2.6.0", @@ -6788,9 +6777,9 @@ } }, "hosted-git-info": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.4.tgz", - "integrity": "sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ==", + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", "dev": true }, "hpack.js": { @@ -7523,16 +7512,6 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, - "isomorphic-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", - "dev": true, - "requires": { - "node-fetch": "^1.0.1", - "whatwg-fetch": ">=0.10.0" - } - }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -8469,9 +8448,9 @@ "dev": true }, "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", + "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", "dev": true, "requires": { "minimist": "^1.2.0" @@ -9410,20 +9389,10 @@ "lower-case": "^1.1.1" } }, - "node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "dev": true, - "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" - } - }, "node-forge": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.2.tgz", - "integrity": "sha512-mXQ9GBq1N3uDCyV1pdSzgIguwgtVpM7f5/5J4ipz12PKWElmPpVWLDuWl8iXmhysr21+WmX/OJ5UKx82wjomgg==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", + "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", "dev": true }, "node-int64": { @@ -9491,12 +9460,20 @@ } }, "node-releases": { - "version": "1.1.32", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.32.tgz", - "integrity": "sha512-VhVknkitq8dqtWoluagsGPn3dxTvN9fwgR59fV3D7sLBHe0JfDramsMI8n8mY//ccq/Kkrf8ZRHRpsyVZ3qw1A==", + "version": "1.1.35", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.35.tgz", + "integrity": "sha512-JGcM/wndCN/2elJlU0IGdVEJQQnJwsLbgPCFd2pY7V0mxf17bZ0Gb/lgOtL29ZQhvEX5shnVhxQyZz3ex94N8w==", "dev": true, "requires": { - "semver": "^5.3.0" + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "nopt": { @@ -9666,15 +9643,15 @@ } }, "object.fromentries": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.0.tgz", - "integrity": "sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.1.tgz", + "integrity": "sha512-PUQv8Hbg3j2QX0IQYv3iAGCbGcu4yY4KQ92/dhA4sFSixBmSmp13UpDLs6jGK8rBtbmhNNIK99LD2k293jpiGA==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.11.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.15.0", "function-bind": "^1.1.1", - "has": "^1.0.1" + "has": "^1.0.3" } }, "object.getownpropertydescriptors": { @@ -11187,12 +11164,12 @@ "dev": true }, "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.0.3.tgz", + "integrity": "sha512-HeRDUL1RJiLhyA0/grn+PTShlBAcLuh/1BJGtrvjwbvRDCTLLMEz9rOGCV+R3vHY4MixIuoMEd9Yq/XvsTPcjw==", "dev": true, "requires": { - "asap": "~2.0.3" + "asap": "~2.0.6" } }, "promise-inflight": { @@ -11402,9 +11379,9 @@ } }, "react": { - "version": "16.9.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.9.0.tgz", - "integrity": "sha512-+7LQnFBwkiw+BobzOF6N//BdoNw0ouwmSJTEm9cglOOmsg/TMiFHZLe2sEoN5M7LgJTj9oHH0gxklfnQe66S1w==", + "version": "16.10.2", + "resolved": "https://registry.npmjs.org/react/-/react-16.10.2.tgz", + "integrity": "sha512-MFVIq0DpIhrHFyqLU0S3+4dIcBhhOvBE8bJ/5kHPVOVaGdo0KuiQzpcjCPsf585WvhypqtrMILyoE2th6dT+Lw==", "dev": true, "requires": { "loose-envify": "^1.1.0", @@ -11413,9 +11390,9 @@ } }, "react-app-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-1.0.3.tgz", - "integrity": "sha512-ICvAU2vtO0k+kU0oCS7L7btUcAReTddvEiRiJDmAKc+d98Fy9Z1g6cjkdcKyfLWwopzBsUMcDwxoiNtrtLMs0Q==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-1.0.4.tgz", + "integrity": "sha512-5Vte6ki7jpNsNCUKaboyofAhmURmCn2Y6Hu7ydJ6Iu4dct1CIGoh/1FT7gUZKAbowVX2lxVPlijvp1nKxfAl4w==", "dev": true, "requires": { "core-js": "3.2.1", @@ -11424,35 +11401,18 @@ "raf": "3.4.1", "regenerator-runtime": "0.13.3", "whatwg-fetch": "3.0.0" - }, - "dependencies": { - "core-js": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.1.tgz", - "integrity": "sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw==", - "dev": true - }, - "promise": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.0.3.tgz", - "integrity": "sha512-HeRDUL1RJiLhyA0/grn+PTShlBAcLuh/1BJGtrvjwbvRDCTLLMEz9rOGCV+R3vHY4MixIuoMEd9Yq/XvsTPcjw==", - "dev": true, - "requires": { - "asap": "~2.0.6" - } - } } }, "react-bootstrap": { - "version": "1.0.0-beta.12", - "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-1.0.0-beta.12.tgz", - "integrity": "sha512-qBEAthAzqM+OTS2h5ZCfV5/yZUadQcMlaep4iPyPqsu92JzdcznhSDjw6b+asiepsyQgiS33t8OPeLLRiIDh9Q==", + "version": "1.0.0-beta.14", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-1.0.0-beta.14.tgz", + "integrity": "sha512-UGK5f78FE8wAei1YL/oSwFlJZLqxJ/h4S8DCwHyY8hQjFCrjEW5PoEBTOOhQ6PQL6WOsZe1jkiOJG7L5TZWu+w==", "dev": true, "requires": { "@babel/runtime": "^7.4.2", - "@react-bootstrap/react-popper": "1.2.1", "@restart/context": "^2.1.4", "@restart/hooks": "^0.3.11", + "@types/react": "^16.8.23", "classnames": "^2.2.6", "dom-helpers": "^3.4.0", "invariant": "^2.2.4", @@ -11473,9 +11433,9 @@ "dev": true }, "react-dev-utils": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-9.0.4.tgz", - "integrity": "sha512-VwR+mBUXPLdYk/rOz6s6qpasIFGd7GW0KXd/3bih+/qGcMQvPG19XxtjDMtiAg0zWiFwp1ugCzAjLThbzFjVqw==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-9.1.0.tgz", + "integrity": "sha512-X2KYF/lIGyGwP/F/oXgGDF24nxDA2KC4b7AFto+eqzc/t838gpSGiaU8trTqHXOohuLxxc5qi1eDzsl9ucPDpg==", "dev": true, "requires": { "@babel/code-frame": "7.5.5", @@ -11497,7 +11457,7 @@ "loader-utils": "1.2.3", "open": "^6.3.0", "pkg-up": "2.0.0", - "react-error-overlay": "^6.0.2", + "react-error-overlay": "^6.0.3", "recursive-readdir": "2.2.2", "shell-quote": "1.7.2", "sockjs-client": "1.4.0", @@ -11538,27 +11498,33 @@ } }, "react-dom": { - "version": "16.9.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.9.0.tgz", - "integrity": "sha512-YFT2rxO9hM70ewk9jq0y6sQk8cL02xm4+IzYBz75CQGlClQQ1Bxq0nhHF6OtSbit+AIahujJgb/CPRibFkMNJQ==", + "version": "16.10.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.10.2.tgz", + "integrity": "sha512-kWGDcH3ItJK4+6Pl9DZB16BXYAZyrYQItU4OMy0jAkv5aNqc+mAKb4TpFtAteI6TJZu+9ZlNhaeNQSVQDHJzkw==", "dev": true, "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2", - "scheduler": "^0.15.0" + "scheduler": "^0.16.2" } }, "react-error-overlay": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.2.tgz", - "integrity": "sha512-DHRuRk3K4Lg9obI6J4Y+nKvtwjasYRU9CFL3ud42x9YJG1HbQjSNublapC/WBJOA726gNUbqbj0U2df9+uzspQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.3.tgz", + "integrity": "sha512-bOUvMWFQVk5oz8Ded9Xb7WVdEi3QGLC8tH7HmYP0Fdp4Bn3qw0tRFmr5TW6mvahzvmrK4a6bqWGfCevBflP+Xw==", "dev": true }, "react-is": { - "version": "16.9.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.9.0.tgz", - "integrity": "sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw==" + "version": "16.10.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.10.2.tgz", + "integrity": "sha512-INBT1QEgtcCCgvccr5/86CfD71fw9EPmDxgiJX4I2Ddr6ZsV6iFXsuby+qWJPtmNuMY0zByTsG4468P7nHuNWA==" + }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==", + "dev": true }, "react-overlays": { "version": "1.2.0", @@ -11600,24 +11566,6 @@ "prop-types": "^15.6.1", "typed-styles": "^0.0.7", "warning": "^4.0.2" - }, - "dependencies": { - "create-react-context": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.3.0.tgz", - "integrity": "sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw==", - "dev": true, - "requires": { - "gud": "^1.0.0", - "warning": "^4.0.3" - } - }, - "typed-styles": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz", - "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==", - "dev": true - } } }, "react-scripts": { @@ -11817,12 +11765,6 @@ "safe-regex": "^1.1.0" } }, - "regexp-tree": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.13.tgz", - "integrity": "sha512-hwdV/GQY5F8ReLZWO+W1SRoN5YfpOKY6852+tBFcma72DKBIcHjPRIlIvQN35bCOljuAfP2G2iB0FC/w236mUw==", - "dev": true - }, "regexp.prototype.flags": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz", @@ -12297,9 +12239,9 @@ } }, "scheduler": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.15.0.tgz", - "integrity": "sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg==", + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-BqYVWqwz6s1wZMhjFvLfVR5WXP7ZY32M/wYPo04CcuPM7XZEbV2TBNW7Z0UkguPTl0dWMA59VbNXxK6q+pHItg==", "dev": true, "requires": { "loose-envify": "^1.1.0", @@ -12335,12 +12277,12 @@ } }, "selfsigned": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.6.tgz", - "integrity": "sha512-i3+CeqxL7DpAazgVpAGdKMwHuL63B5nhJMh9NQ7xmChGkA3jNFflq6Jyo1LLJYcr3idWiNOPWHCrm4zMayLG4w==", + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", + "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", "dev": true, "requires": { - "node-forge": "0.8.2" + "node-forge": "0.9.0" } }, "semver": { @@ -13392,9 +13334,9 @@ } }, "thunky": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz", - "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, "timers-browserify": { @@ -13494,12 +13436,6 @@ "punycode": "^2.1.0" } }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, "ts-pnp": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.1.4.tgz", @@ -13567,9 +13503,9 @@ } }, "typed-styles": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.5.tgz", - "integrity": "sha512-ht+rEe5UsdEBAa3gr64+QjUOqjOLJfWLvl5HZR5Ev9uo/OnD3p43wPeFSB1hNFc13GXQF/JU1Bn0YHLUqBRIlw==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz", + "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==", "dev": true }, "typedarray": { @@ -13578,23 +13514,24 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, - "ua-parser-js": { - "version": "0.7.20", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.20.tgz", - "integrity": "sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw==", - "dev": true - }, "uglify-js": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz", - "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.1.tgz", + "integrity": "sha512-+dSJLJpXBb6oMHP+Yvw8hUgElz4gLTh82XuX68QiJVTXaE5ibl6buzhNkQdYhBlIhozWOC9ge16wyRmjG4TwVQ==", "dev": true, "optional": true, "requires": { - "commander": "~2.20.0", + "commander": "2.20.0", "source-map": "~0.6.1" }, "dependencies": { + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "dev": true, + "optional": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -13605,13 +13542,14 @@ } }, "uncontrollable": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.0.1.tgz", - "integrity": "sha512-MGlbii7jczJYfY2GbmZi4j1JmB/6giM0Xc/WcKfxEN5W86KS8NPH/Fq/AD1nKjiFEMq7/MRwTCtzKWCeYgiWMA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.0.2.tgz", + "integrity": "sha512-7fa8OBQ5+X4VAcp0os6BD74bCeUPQSHmr4Rqy75Me98NnlD5kNShCqqx4xWo4OmlAMiT2/YSMklLFC4FCuoGYg==", "dev": true, "requires": { "@babel/runtime": "^7.4.5", - "invariant": "^2.2.4" + "invariant": "^2.2.4", + "react-lifecycles-compat": "^3.0.4" } }, "unicode-canonical-property-names-ecmascript": { @@ -13997,9 +13935,9 @@ } }, "webpack-dev-middleware": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.1.tgz", - "integrity": "sha512-5MWu9SH1z3hY7oHOV6Kbkz5x7hXbxK56mGHNqHTe6d+ewxOwKUxoUJBs7QIaJb33lPjl9bJZ3X0vCoooUzC36A==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", "dev": true, "requires": { "memory-fs": "^0.4.1", @@ -14654,9 +14592,9 @@ "dev": true }, "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, "yargs": {