diff options
136 files changed, 4367 insertions, 2348 deletions
| diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..8259981f8 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,30 @@ +FROM debian:stable-slim + +ENV RAILS_ENV=production RAILS_SERVE_STATIC_FILES=true RAILS_LOG_TO_STDOUT=true + +RUN apt-get update && \ +    apt-get install -y --no-install-recommends ruby2.3 && \ +    apt-get install -y --no-install-recommends libpq5 libxml2 zlib1g imagemagick libproj12 && \ +    apt-get install -y --no-install-recommends cron && \ +    apt-get clean && rm -rf /var/lib/apt/lists/* && \ +    gem2.3 install bundler + + +COPY stif-boiv-release.tar.gz / +RUN mkdir /app && apt-get update &&\ +    apt-get -y install --no-install-recommends build-essential ruby2.3-dev libpq-dev libxml2-dev zlib1g-dev libproj-dev&& \ +    tar -C /app -zxf stif-boiv-release.tar.gz && \ +    cd /app && bundle install --local && \ +    apt-get -y remove build-essential ruby2.3-dev libpq-dev libxml2-dev zlib1g-dev && \ +    apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* && \ +    cd /app && rm config/database.yml && mv config/database.yml.docker config/database.yml && \ +    cd /app && rm config/secrets.yml && mv config/secrets.yml.docker config/secrets.yml && \ +    mv script/launch-cron /app && \ +    bundle exec whenever --output '/proc/1/fd/1' --update-crontab stif-boiv --set 'environment=production&bundle_command=bundle exec' --roles=app,db,web + +WORKDIR /app +VOLUME /app/public/uploads + +EXPOSE 3000 + +CMD ["sh", "-c", "bundle exec rake db:migrate && bundle exec rails server -b 0.0.0.0"] @@ -60,7 +60,7 @@ gem 'faraday', '~> 0.9.1'  platforms :ruby do    gem 'therubyracer', '~> 0.12'    gem 'pg' -  gem 'sqlite3' +  #gem 'sqlite3'  end  gem 'activerecord-postgis-adapter', "~> 3.0.0" @@ -139,6 +139,7 @@ gem 'rake'  gem 'devise-async'  gem 'apartment', '~> 1.0.0'  gem 'aasm' +gem 'puma', '~> 3.10.0'  gem 'newrelic_rpm'  gem 'letter_opener' @@ -158,6 +159,7 @@ group :development do    gem 'bundler-audit'    gem 'spring-commands-rspec'    gem 'dbshell-rails' +  gem 'rack-livereload'    platforms :ruby_20, :ruby_21, :ruby_22 do      gem 'better_errors' diff --git a/Gemfile.lock b/Gemfile.lock index ade052d8a..ba1a90a5a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -356,6 +356,7 @@ GEM        pry (~> 0.10)      pry-rails (0.3.6)        pry (>= 0.10.4) +    puma (3.10.0)      pundit (1.1.0)        activesupport (>= 3.0.0)      quiet_assets (1.1.0) @@ -363,6 +364,8 @@ GEM      rabl (0.13.1)        activesupport (>= 2.3.14)      rack (1.6.8) +    rack-livereload (0.3.16) +      rack      rack-protection (1.5.3)        rack      rack-proxy (0.6.2) @@ -522,7 +525,6 @@ GEM        actionpack (>= 3.0)        activesupport (>= 3.0)        sprockets (>= 2.8, < 4.0) -    sqlite3 (1.3.13)      teaspoon (1.1.5)        railties (>= 3.2.5, < 6)      teaspoon-jasmine (2.3.4) @@ -648,9 +650,11 @@ DEPENDENCIES    polylines    pry-byebug    pry-rails +  puma (~> 3.10.0)    pundit    quiet_assets    rabl +  rack-livereload    rails (~> 4.2.8)    rails-assets-bootstrap-sass-official (~> 3.3.0)!    rails-assets-footable (~> 2.0.3)! @@ -686,7 +690,6 @@ DEPENDENCIES    slim-rails (~> 3.1)    spring    spring-commands-rspec -  sqlite3    teaspoon-jasmine    therubyracer (~> 0.12)    timecop diff --git a/app/assets/stylesheets/base/_config.sass b/app/assets/stylesheets/base/_config.sass index ec1c43e7f..2c226357f 100644 --- a/app/assets/stylesheets/base/_config.sass +++ b/app/assets/stylesheets/base/_config.sass @@ -16,7 +16,7 @@ $blue: #007fbb  $darkgrey: #4b4b4b  $grey: #a4a4a4 -$lightgrey: rgba($grey, 0.15) +$lightgrey: lighten($grey, 25)  $green: #70b12b  $red: #da2f36 diff --git a/app/assets/stylesheets/components/_forms.sass b/app/assets/stylesheets/components/_forms.sass index 47faf19b1..b7f720963 100644 --- a/app/assets/stylesheets/components/_forms.sass +++ b/app/assets/stylesheets/components/_forms.sass @@ -284,6 +284,7 @@ table, .table    height: $cbx-size    width: $cbx-size    margin: 0 auto +  transition: transform 0.2s, background-color 0.2s    > input[type='checkbox']      &:not(:checked), &:checked @@ -461,6 +462,20 @@ table, .table      > .form-group.select2ed        width: 300px +    &.name-filter +      .checkbox_list +        .form-group +          padding: 10px +          width: 100px +          &.to +            width: 20px +            color: $grey +            text-align: center +          input +            width: 100% +          & + .form-group +            padding-left: 0px +    > .actions      position: absolute      right: 15px diff --git a/app/assets/stylesheets/modules/_jp_collection.sass b/app/assets/stylesheets/modules/_jp_collection.sass index f579cf87b..14a6b9205 100644 --- a/app/assets/stylesheets/modules/_jp_collection.sass +++ b/app/assets/stylesheets/modules/_jp_collection.sass @@ -5,6 +5,7 @@  #journey_patterns    .table-2entries      .t2e-head +        > .td          position: relative          padding-left: 25px @@ -99,32 +100,195 @@          top: 50%          margin-top: -8px -  // Errors -  .table-2entries .t2e-item-list -    .t2e-item -      position: relative +  .table-2entries +    .t2e-item-list +      & > div +        overflow: visible +      .td +        overflow: hidden +         +      .t2e-item +        position: relative -      .th .vj_tt -        display: inline-block -        vertical-align: top +        .th .vj_tt +          display: inline-block +          vertical-align: top -        + .vj_tt -          margin-left: 5px +          + .vj_tt +            margin-left: 5px -      &.has-error -        &:before -          content: '' -          position: absolute -          top: 0 -          left: 0 -          right: 0 -          bottom: 0 -          border: 2px solid $red - -        > .th -          > div:first-child, > div:first-child + div -            color: $red - -        // Reset default behaviour -        .form-control -          border-color: #ccc +        &.with-costs +          .td +            padding: 15px 8px + +          $link-size: 10px +          .link +            position: absolute +            left: 50px +            width: 10px +            top: -15px +            bottom: -15px +            background: $blue +            z-index: 3 +            opacity: 0.5 +            &:after +              content: "" +              width: $link-size +              height: $link-size +              position: absolute +              top: 50% +              bottom: 50% +              margin-top: -$link-size/2 +              border-top: $link-size/2 solid transparent +              border-left: $link-size/2 solid transparent +              border-right: $link-size/2 solid $blue +              border-bottom: $link-size/2 solid $blue +              transform: rotate(135deg) +              left: 0% +              opacity: 0 +              transition: left 0.2s, opacity 0.2s + +          .headlined .link +            top: 0 +            bottom: -15px + +            &:after +              top: 75% +              margin-top: -$link-size/2 - 1px + +          .activated .link +            &:after +              left: -50% +              opacity: 1 + +          & > div +            position: relative + +          .link +            left: 35px + +          .has_radio +            margin-right: 150px + +          .costs +            background: $blue +            opacity: 0.5 +            padding: 5px +            color: white +            position: absolute +            cursor: not-allowed +            left: 75px +            top: -1px +            transform: translateY(-50%) +            font-size: 0.75em +            transition: background 0.1s +            border: 1px solid white + +            &:hover +              opacity: 1 +              &:after +                opacity: 1 + +            &:after +              opacity: 0.5 +              content: "" +              height: 2px +              position: absolute +              left: -23px +              background: $blue +              right: 100% +              top: 50% +              transition: background 0.1s + +            p +              display: block +              border: none +              margin-bottom: 0 +              i +                margin-right: 3px +                width: 12px +              & + p +                position: relative +                z-index: 2 +                padding-right: 0 +                margin: 0 +                border-right: none + +              input +                display: inline-block +                width: 40px +                border: none +                margin-right: 5px +                color: black + +        .edit-mode +          .costs +            cursor: pointer +            p +              margin-bottom: 5px +              & + p +                margin-bottom: 0 + +            opacity: 1 +            &:after +              opacity: 1 + +          .link +            opacity: 1 + +        .with-headline + .costs +          top: 25% + +        .deactivated .costs +          display: none + +        &.has-error +          &:before +            content: '' +            position: absolute +            top: 0 +            left: 0 +            right: 0 +            bottom: 0 +            border: 2px solid $red + +          > .th +            > div:first-child, > div:first-child + div +              color: $red + +          // Reset default behaviour +          .form-control +            border-color: #ccc + +    .t2e-head +      .td.with-costs +        & > div +          &:not(.headlined) +            height: calc(100% + 6px) +          & > span +            &:after +              top: -15px +              bottom: -9px + +        div.headlined +          &:before +            margin-bottom: 0 +          & > span +            height: calc(100% - (1.4em + 15px)) +            &:after +              top: calc((1.4em + 30px) * -1) +              bottom: 0 + +    .td.with-costs, .with-costs .td +      padding-top: 15px +      padding-bottom: 15px + +      & > div +        height: calc(100% + 15px) +        &.headlined +          &:before +            padding-top: 15px +            padding-bottom: 15px +            height: calc(1.4em + 30px) +            margin-top: -15px +            margin-bottom: 15px diff --git a/app/controllers/journey_patterns_collections_controller.rb b/app/controllers/journey_patterns_collections_controller.rb index 5fe78766c..b37ac6cd0 100644 --- a/app/controllers/journey_patterns_collections_controller.rb +++ b/app/controllers/journey_patterns_collections_controller.rb @@ -17,35 +17,48 @@ class JourneyPatternsCollectionsController < ChouetteController    alias_method :vehicle_journey, :resource    def show -    @q = route.journey_patterns.search(params[:q]).result(distinct: true).includes(:stop_points) +    @q = route.journey_patterns +    if params[:q].present? +      ids = @q.search(params[:q]).result(distinct: true).pluck(:id) +      @q = @q.where(id: ids) +    end +    @q = @q.includes(:stop_points)      @ppage = 10      @journey_patterns ||= @q.paginate(page: params[:page], per_page: @ppage).order(:name) - -    @stop_points_list = [] -    route.stop_points.each do |sp| -      @stop_points_list << { -        :id => sp.stop_area.id, -        :route_id => sp.try(:route_id), -        :object_id => sp.try(:objectid), -        :position => sp.try(:position), -        :for_boarding => sp.try(:for_boarding), -        :for_alighting => sp.try(:for_alighting), -        :name => sp.stop_area.try(:name), -        :zip_code => sp.stop_area.try(:zip_code), -        :city_name => sp.stop_area.try(:city_name), -        :comment => sp.stop_area.try(:comment), -        :area_type => sp.stop_area.try(:area_type), -        :registration_number => sp.stop_area.try(:registration_number), -        :nearest_topic_name => sp.stop_area.try(:nearest_topic_name), -        :fare_code => sp.stop_area.try(:fare_code), -        :longitude => sp.stop_area.try(:longitude), -        :latitude => sp.stop_area.try(:latitude), -        :long_lat_type => sp.stop_area.try(:long_lat_type), -        :country_code => sp.stop_area.try(:country_code), -        :street_name => sp.stop_area.try(:street_name) -      } +    respond_to do |format| +      format.json do +        @journey_patterns = @journey_patterns.includes(stop_points: {stop_area: :stop_area_referential}) +      end +      format.html do +        @stop_points_list = [] +        route.stop_points.includes(:stop_area).each do |sp| +          @stop_points_list << { +            :id => sp.stop_area.id, +            :route_id => sp.try(:route_id), +            :object_id => sp.try(:objectid), +            :stop_area_object_id => sp.stop_area.try(:objectid), +            :position => sp.try(:position), +            :for_boarding => sp.try(:for_boarding), +            :for_alighting => sp.try(:for_alighting), +            :name => sp.stop_area.try(:name), +            :zip_code => sp.stop_area.try(:zip_code), +            :city_name => sp.stop_area.try(:city_name), +            :country_name => sp.stop_area.try(:country_name), +            :comment => sp.stop_area.try(:comment), +            :area_type => sp.stop_area.try(:area_type), +            :registration_number => sp.stop_area.try(:registration_number), +            :nearest_topic_name => sp.stop_area.try(:nearest_topic_name), +            :fare_code => sp.stop_area.try(:fare_code), +            :longitude => sp.stop_area.try(:longitude), +            :latitude => sp.stop_area.try(:latitude), +            :long_lat_type => sp.stop_area.try(:long_lat_type), +            :country_code => sp.stop_area.try(:country_code), +            :street_name => sp.stop_area.try(:street_name) +          } +        end +        @stop_points_list = @stop_points_list.sort_by {|a| a[:position] } +      end      end -    @stop_points_list = @stop_points_list.sort_by {|a| a[:position] }    end    def user_permissions diff --git a/app/controllers/merges_controller.rb b/app/controllers/merges_controller.rb index 26e2c2e3c..a95768139 100644 --- a/app/controllers/merges_controller.rb +++ b/app/controllers/merges_controller.rb @@ -15,6 +15,12 @@ class MergesController < ChouetteController      Rails.logger.debug "Mergeables: #{@mergeable_referentials.inspect}"    end +  def build_resource +    super.tap do |merge| +      merge.creator = current_user.name +    end +  end +    # def build_resource    #   @import ||= WorkbenchImport.new(*resource_params) do |import|    #     import.workbench = parent diff --git a/app/controllers/referential_vehicle_journeys_controller.rb b/app/controllers/referential_vehicle_journeys_controller.rb index ad08699a5..217fb9629 100644 --- a/app/controllers/referential_vehicle_journeys_controller.rb +++ b/app/controllers/referential_vehicle_journeys_controller.rb @@ -11,7 +11,8 @@ class ReferentialVehicleJourneysController < ChouetteController    def collection      @q ||= end_of_association_chain.ransack(params[:q]) -    @vehicle_journeys ||= @q.result.includes(:vehicle_journey_at_stops).paginate page: params[:page], per_page: 10 +    @vehicle_journeys ||= @q.result.order(:published_journey_name).includes(:vehicle_journey_at_stops).paginate page: params[:page], per_page: 10 +    @all_companies = Chouette::Company.where("id IN (#{@referential.vehicle_journeys.select(:company_id).to_sql})").distinct    end  end diff --git a/app/controllers/vehicle_journeys_controller.rb b/app/controllers/vehicle_journeys_controller.rb index c03db0c7f..887131557 100644 --- a/app/controllers/vehicle_journeys_controller.rb +++ b/app/controllers/vehicle_journeys_controller.rb @@ -69,6 +69,7 @@ class VehicleJourneysController < ChouetteController              :latitude => sp.stop_area.try(:latitude),              :long_lat_type => sp.stop_area.try(:long_lat_type),              :country_code => sp.stop_area.try(:country_code), +            :country_name => sp.stop_area.try(:country_name),              :street_name => sp.stop_area.try(:street_name)            }          end diff --git a/app/decorators/import_decorator.rb b/app/decorators/import_decorator.rb index e748f830d..8b00234d2 100644 --- a/app/decorators/import_decorator.rb +++ b/app/decorators/import_decorator.rb @@ -16,14 +16,6 @@ class ImportDecorator < Draper::Decorator      links = []      links << Link.new( -      content: h.t('imports.actions.show'), -      href: h.workbench_import_path( -        context[:workbench], -        object -      ) -    ) - -    links << Link.new(        content: h.t('imports.actions.download'),        href: object.file.url      ) diff --git a/app/helpers/compliance_check_sets_helper.rb b/app/helpers/compliance_check_sets_helper.rb index b255aee63..690bee80e 100644 --- a/app/helpers/compliance_check_sets_helper.rb +++ b/app/helpers/compliance_check_sets_helper.rb @@ -20,9 +20,9 @@ module ComplianceCheckSetsHelper        content_tag :span, '', class: "fa fa-clock-o"      else        cls ='' -      cls = 'success' if status == 'OK' -      cls = 'warning' if status == 'WARNING' -      cls = 'danger' if %w[ERROR IGNORED].include? status +      cls = 'success' if status == 'successful' +      cls = 'warning' if status == 'warning' +      cls = 'danger' if %w[failed aborted canceled].include? status        content_tag :span, '', class: "fa fa-circle text-#{cls}"      end diff --git a/app/javascript/helpers/stop_area_header_manager.js b/app/javascript/helpers/stop_area_header_manager.js new file mode 100644 index 000000000..54d957be9 --- /dev/null +++ b/app/javascript/helpers/stop_area_header_manager.js @@ -0,0 +1,42 @@ +import React, { Component } from 'react' + +export default class StopAreaHeaderManager { +  constructor(ids_list, stopPointsList, features) { +    this.ids_list = ids_list +    this.stopPointsList = stopPointsList +    this.features = features +  } + +  hasFeature(key) { +    return this.features[key] +  } + +  stopPointHeader(object_id) { +    let index = this.ids_list.indexOf(object_id) +    let sp = this.stopPointsList[index] +    let showHeadline = this.showHeader(object_id) +    return ( +      <div +        className={(showHeadline) ? 'headlined' : ''} +        data-headline={showHeadline} +        title={sp.city_name + ' (' + sp.zip_code +')'} +      > +        <span><span>{sp.name}</span></span> +      </div> +    ) +  } + +  showHeader(object_id) { +    let showHeadline = false +    let headline = "" +    let attribute_to_check = this.hasFeature('long_distance_routes') ? "country_code" : "city_name" +    let index = this.ids_list.indexOf(object_id) +    let sp = this.stopPointsList[index] +    let previousBreakpoint = this.stopPointsList[index - 1] +    if(index == 0 || (sp[attribute_to_check] != previousBreakpoint[attribute_to_check])){ +      showHeadline = true +      headline = this.hasFeature('long_distance_routes') ? sp.country_name : sp.city_name +    } +    return showHeadline ? headline : "" +  } +} diff --git a/app/javascript/journey_patterns/actions/index.js b/app/javascript/journey_patterns/actions/index.js index 1c2eb68b2..a70a2e6f2 100644 --- a/app/javascript/journey_patterns/actions/index.js +++ b/app/javascript/journey_patterns/actions/index.js @@ -64,6 +64,11 @@ const actions = {      type : 'DELETE_JOURNEYPATTERN',      index,    }), +  updateJourneyPatternCosts : (index, costs) => ({ +    type : 'UPDATE_JOURNEYPATTERN_COSTS', +    index, +    costs +  }),    closeModal : () => ({      type : 'CLOSE_MODAL'    }), @@ -194,16 +199,13 @@ const actions = {                    }                  })                } -              journeyPatterns.push({ -                name: val.name, -                object_id: val.object_id, -                short_id: val.short_id, -                checksum: val.checksum, -                published_name: val.published_name, -                registration_number: val.registration_number, -                stop_points: val.route_short_description.stop_points, -                deletable: false -              }) +              journeyPatterns.push( +                _.assign({}, val, { +                  stop_points: val.route_short_description.stop_points, +                  costs: val.costs || {}, +                  deletable: false +                }) +              )              }            }            window.currentItemsLength = journeyPatterns.length diff --git a/app/javascript/journey_patterns/components/ConfirmModal.js b/app/javascript/journey_patterns/components/ConfirmModal.js index 2cc1bef44..ccd0a9384 100644 --- a/app/javascript/journey_patterns/components/ConfirmModal.js +++ b/app/javascript/journey_patterns/components/ConfirmModal.js @@ -1,4 +1,6 @@ -import React, { PropTypes } from 'react' +import React from 'react' +import PropTypes from 'prop-types' +  export default function ConfirmModal({dispatch, modal, onModalAccept, onModalCancel, journeyPatterns}) {    return ( diff --git a/app/javascript/journey_patterns/components/CreateModal.js b/app/javascript/journey_patterns/components/CreateModal.js index d0eff6e57..a6c1b608a 100644 --- a/app/javascript/journey_patterns/components/CreateModal.js +++ b/app/javascript/journey_patterns/components/CreateModal.js @@ -1,4 +1,5 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  import actions from '../actions'  export default class CreateModal extends Component { diff --git a/app/javascript/journey_patterns/components/EditModal.js b/app/javascript/journey_patterns/components/EditModal.js index 7a5d24fba..c960cb41c 100644 --- a/app/javascript/journey_patterns/components/EditModal.js +++ b/app/javascript/journey_patterns/components/EditModal.js @@ -1,4 +1,5 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  import actions from '../actions'  export default class EditModal extends Component { diff --git a/app/javascript/journey_patterns/components/JourneyPattern.js b/app/javascript/journey_patterns/components/JourneyPattern.js index d4c9816ec..2ae9f5552 100644 --- a/app/javascript/journey_patterns/components/JourneyPattern.js +++ b/app/javascript/journey_patterns/components/JourneyPattern.js @@ -1,10 +1,22 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  import actions from '../actions'  export default class JourneyPattern extends Component{    constructor(props){      super(props)      this.previousCity = undefined +    this.previousSpId = undefined +    this.updateCosts = this.updateCosts.bind(this) +  } + +  updateCosts(e) { +    let costs = { +      [e.target.dataset.costsKey]: { +        [e.target.name]: parseFloat(e.target.value) +      } +    } +    this.props.onUpdateJourneyPatternCosts(costs)    }    vehicleJourneyURL(jpOid) { @@ -16,16 +28,20 @@ export default class JourneyPattern extends Component{      )    } -  cityNameChecker(sp) { -    let bool = false -    if(sp.city_name != this.previousCity){ -      bool = true -      this.previousCity = sp.city_name -    } +  hasFeature(key) { +    return this.props.status.features[key] +  } + +  cityNameChecker(sp, i) { +    return this.props.journeyPatterns.showHeader(sp.object_id + "-" + i) +  } + +  spNode(sp, headlined){      return (        <div -        className={(bool) ? 'headlined' : ''} +        className={(headlined) ? 'headlined' : ''}        > +        <div className={'link '}></div>          <span className='has_radio'>            <input              onChange = {(e) => this.props.onCheckboxChange(e)} @@ -61,9 +77,9 @@ export default class JourneyPattern extends Component{    render() {      this.previousCity = undefined - +    this.previousSpId = undefined      return ( -      <div className={'t2e-item' + (this.props.value.deletable ? ' disabled' : '') + (this.props.value.object_id ? '' : ' to_record') + (this.props.value.errors ? ' has-error': '')}> +      <div className={'t2e-item' + (this.props.value.deletable ? ' disabled' : '') + (this.props.value.object_id ? '' : ' to_record') + (this.props.value.errors ? ' has-error': '') + (this.hasFeature('costs_in_journey_patterns') ? ' with-costs' : '')}>          {/* Errors */}          {/* this.props.value.errors ? this.getErrors(this.props.value.errors) : '' */} @@ -112,9 +128,49 @@ export default class JourneyPattern extends Component{            </div>            {this.props.value.stop_points.map((stopPoint, i) =>{ +            let costs = null +            let costsKey = null +            let time = null +            let distance = null +            let time_in_words = null +            if(this.previousSpId && stopPoint.checked){ +              costsKey = this.previousSpId + "-" + stopPoint.id +              costs = this.props.value.costs[costsKey] || {distance: 0, time: 0} +              time = costs['time'] || 0 +              distance = costs['distance'] || 0 +              if(time < 60){ +                time_in_words = time + " min" +              } +              else{ +                let hours = parseInt(time/60) +                time_in_words = hours + " h " + (time - 60*hours) + " min" +              } +            } +            if(stopPoint.checked){ +              this.previousSpId = stopPoint.id +            } +            let headlined = this.cityNameChecker(stopPoint, i)              return ( -              <div key={i} className='td'> -                {this.cityNameChecker(stopPoint)} +              <div key={i} className={(stopPoint.checked ? 'activated' : 'deactivated') + (this.props.editMode ? ' edit-mode' : '')}> +                <div className={'td' + (headlined ? ' with-headline' : '')}> +                  {this.spNode(stopPoint, headlined)} +                </div> +                {this.hasFeature('costs_in_journey_patterns') && costs && <div className='costs' id={'costs-' + this.props.value.id + '-' + costsKey }> +                  {this.props.editMode && <div> +                    <p> +                      <input type="number" value={costs['distance'] || 0} min='0' name="distance" step="0.01" onChange={this.updateCosts} data-costs-key={costsKey}/> +                      <span>km</span> +                    </p> +                    <p> +                      <input type="number" value={costs['time'] || 0} min='0' name="time" onChange={this.updateCosts} data-costs-key={costsKey}/> +                      <span>min</span> +                    </p> +                  </div>} +                  {!this.props.editMode && <div> +                    <p><i className="fa fa-arrows-h"></i>{(costs['distance'] || 0) + " km"}</p> +                    <p><i className="fa fa-clock-o"></i>{time_in_words}</p> +                  </div>} +                </div>}                </div>              )            })} @@ -128,5 +184,6 @@ JourneyPattern.propTypes = {    index: PropTypes.number,    onCheckboxChange: PropTypes.func.isRequired,    onOpenEditModal: PropTypes.func.isRequired, -  onDeleteJourneyPattern: PropTypes.func.isRequired -}
\ No newline at end of file +  onDeleteJourneyPattern: PropTypes.func.isRequired, +  journeyPatterns: PropTypes.object.isRequired +} diff --git a/app/javascript/journey_patterns/components/JourneyPatterns.js b/app/javascript/journey_patterns/components/JourneyPatterns.js index 4b2badabb..31727fefc 100644 --- a/app/javascript/journey_patterns/components/JourneyPatterns.js +++ b/app/javascript/journey_patterns/components/JourneyPatterns.js @@ -1,16 +1,23 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  import _ from 'lodash'  import JourneyPattern from './JourneyPattern' - +import StopAreaHeaderManager from '../../helpers/stop_area_header_manager'  export default class JourneyPatterns extends Component {    constructor(props){      super(props) -    this.previousCity = undefined +    this.headerManager = new StopAreaHeaderManager( +      _.map(this.props.stopPointsList, (sp, i)=>{return sp.stop_area_object_id + "-" + i}), +      this.props.stopPointsList, +      this.props.status.features +    )    } +    componentDidMount() {      this.props.onLoadFirstPage()    } +    componentDidUpdate(prevProps, prevState) {      if(this.props.status.isFetching == false){        $('.table-2entries').each(function() { @@ -54,21 +61,12 @@ export default class JourneyPatterns extends Component {      }    } -  cityNameChecker(sp) { -    let bool = false -    if(sp.city_name != this.previousCity){ -      bool = true -      this.previousCity = sp.city_name -    } -    return ( -      <div -        className={(bool) ? 'headlined' : ''} -        data-headline={(bool) ? sp.city_name : ''} -        title={sp.city_name + ' (' + sp.zip_code +')'} -      > -        <span><span>{sp.name}</span></span> -      </div> -    ) +  showHeader(object_id) { +    return this.headerManager.showHeader(object_id) +  } + +  hasFeature(key) { +    return this.props.status.features[key]    }    render() { @@ -115,8 +113,8 @@ export default class JourneyPatterns extends Component {                  </div>                  {this.props.stopPointsList.map((sp, i) =>{                    return ( -                    <div key={i} className='td'> -                      {this.cityNameChecker(sp)} +                    <div key={i} className={'td' + (this.hasFeature('costs_in_journey_patterns') ? ' with-costs' : '')}> +                      {this.headerManager.stopPointHeader(sp.stop_area_object_id + "-" + i)}                      </div>                    )                  })} @@ -131,8 +129,10 @@ export default class JourneyPatterns extends Component {                        onCheckboxChange= {(e) => this.props.onCheckboxChange(e, index)}                        onOpenEditModal= {() => this.props.onOpenEditModal(index, journeyPattern)}                        onDeleteJourneyPattern={() => this.props.onDeleteJourneyPattern(index)} +                      onUpdateJourneyPatternCosts={(costs) => this.props.onUpdateJourneyPatternCosts(index, costs)}                        status= {this.props.status}                        editMode= {this.props.editMode} +                      journeyPatterns= {this}                        />                    )}                  </div> @@ -152,4 +152,4 @@ JourneyPatterns.propTypes = {    onCheckboxChange: PropTypes.func.isRequired,    onLoadFirstPage: PropTypes.func.isRequired,    onOpenEditModal: PropTypes.func.isRequired -}
\ No newline at end of file +} diff --git a/app/javascript/journey_patterns/components/Navigate.js b/app/javascript/journey_patterns/components/Navigate.js index f2fdd668f..78f324a7d 100644 --- a/app/javascript/journey_patterns/components/Navigate.js +++ b/app/javascript/journey_patterns/components/Navigate.js @@ -1,4 +1,5 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  import actions from '../actions'  export default function Navigate({ dispatch, journeyPatterns, pagination, status }) { diff --git a/app/javascript/journey_patterns/components/SaveJourneyPattern.js b/app/javascript/journey_patterns/components/SaveJourneyPattern.js index d071fa542..7e4492e0e 100644 --- a/app/javascript/journey_patterns/components/SaveJourneyPattern.js +++ b/app/javascript/journey_patterns/components/SaveJourneyPattern.js @@ -1,4 +1,5 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  import actions from '../actions'  export default class SaveJourneyPattern extends Component { diff --git a/app/javascript/journey_patterns/containers/JourneyPatternList.js b/app/javascript/journey_patterns/containers/JourneyPatternList.js index d98734407..d338345f2 100644 --- a/app/javascript/journey_patterns/containers/JourneyPatternList.js +++ b/app/javascript/journey_patterns/containers/JourneyPatternList.js @@ -25,7 +25,10 @@ const mapDispatchToProps = (dispatch) => {      },      onDeleteJourneyPattern: (index) =>{        dispatch(actions.deleteJourneyPattern(index)) -    } +    }, +    onUpdateJourneyPatternCosts: (index, costs) =>{ +      dispatch(actions.updateJourneyPatternCosts(index, costs)) +    },    }  } diff --git a/app/javascript/journey_patterns/reducers/journeyPatterns.js b/app/javascript/journey_patterns/reducers/journeyPatterns.js index 0bbcba976..1ce069522 100644 --- a/app/javascript/journey_patterns/reducers/journeyPatterns.js +++ b/app/javascript/journey_patterns/reducers/journeyPatterns.js @@ -17,6 +17,7 @@ const journeyPattern = (state = {}, action) =>{          published_name: action.data.published_name.value,          registration_number: action.data.registration_number.value,          stop_points: stopPoints, +        costs: {},          deletable: false        }      case 'UPDATE_CHECKBOX_VALUE': @@ -67,6 +68,19 @@ export default function journeyPatterns (state = [], action)  {            return j          }        }) +    case 'UPDATE_JOURNEYPATTERN_COSTS': +      return state.map((j, i) =>{ +        if(i == action.index) { +          const new_costs = Object.assign({}, j.costs) +          Object.keys(action.costs).map((key) => { +            let new_costs_for_key = Object.assign({}, j.costs[key] || {}, action.costs[key]) +            new_costs[key] = new_costs_for_key +          }) +          return _.assign({}, j, {costs: new_costs}) +        } else { +          return j +        } +      })      case 'ADD_JOURNEYPATTERN':        return [          journeyPattern(state, action), @@ -87,4 +101,4 @@ export default function journeyPatterns (state = [], action)  {      default:        return state    } -}
\ No newline at end of file +} diff --git a/app/javascript/packs/journey_patterns/index.js b/app/javascript/packs/journey_patterns/index.js index fde28b45d..367a8830f 100644 --- a/app/javascript/packs/journey_patterns/index.js +++ b/app/javascript/packs/journey_patterns/index.js @@ -16,6 +16,7 @@ var initialState = {    editMode: false,    status: {      policy: window.perms, +    features: window.features,      fetchSuccess: true,      isFetching: false    }, diff --git a/app/javascript/packs/routes/edit.js b/app/javascript/packs/routes/edit.js index d6ceed60f..b787bec97 100644 --- a/app/javascript/packs/routes/edit.js +++ b/app/javascript/packs/routes/edit.js @@ -1,4 +1,6 @@ -import React, { PropTypes } from 'react' +import React from 'react' +import PropTypes from 'prop-types' +  import { render } from 'react-dom'  import { Provider } from 'react-redux'  import { createStore } from 'redux' @@ -12,7 +14,7 @@ datas = JSON.parse(decodeURIComponent(datas))  // logger, DO NOT REMOVE  var applyMiddleware = require('redux').applyMiddleware -var createLogger = require('redux-logger') +import {createLogger} from 'redux-logger';  var thunkMiddleware = require('redux-thunk').default  var promise = require('redux-promise') diff --git a/app/javascript/routes/components/App.js b/app/javascript/routes/components/App.js index 0f5786407..26e69bf53 100644 --- a/app/javascript/routes/components/App.js +++ b/app/javascript/routes/components/App.js @@ -1,4 +1,5 @@ -import React, { Component, PropTypes } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  import AddStopPoint from '../containers/AddStopPoint'  import VisibleStopPoints from'../containers/VisibleStopPoints'  import clone  from '../../helpers/clone' @@ -16,8 +17,8 @@ export default class App extends Component {          <VisibleStopPoints />          <AddStopPoint />        </div> -    )   -  }  +    ) +  }  }  App.childContextTypes = { diff --git a/app/javascript/routes/components/BSelect2.js b/app/javascript/routes/components/BSelect2.js index 0d8d7787f..158deaa17 100644 --- a/app/javascript/routes/components/BSelect2.js +++ b/app/javascript/routes/components/BSelect2.js @@ -1,6 +1,7 @@  import _ from'lodash' -import React, { Component, PropTypes } from 'react' -import Select2 from 'react-select2' +import React, { Component } from 'react' +import PropTypes from 'prop-types' +import Select2 from 'react-select2-wrapper'  // get JSON full path diff --git a/app/javascript/routes/components/OlMap.js b/app/javascript/routes/components/OlMap.js index 2c01dfa7f..056bddbcb 100644 --- a/app/javascript/routes/components/OlMap.js +++ b/app/javascript/routes/components/OlMap.js @@ -1,5 +1,6 @@  import _ from 'lodash' -import React, { Component, PropTypes } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  export default class OlMap extends Component{    constructor(props, context){ diff --git a/app/javascript/routes/components/StopPoint.js b/app/javascript/routes/components/StopPoint.js index 606121f99..2d47e802b 100644 --- a/app/javascript/routes/components/StopPoint.js +++ b/app/javascript/routes/components/StopPoint.js @@ -1,4 +1,6 @@ -import React, { PropTypes } from 'react' +import React from 'react' +import PropTypes from 'prop-types' +  import BSelect2 from './BSelect2'  import OlMap from './OlMap' diff --git a/app/javascript/routes/components/StopPointList.js b/app/javascript/routes/components/StopPointList.js index 68af16f57..43a027084 100644 --- a/app/javascript/routes/components/StopPointList.js +++ b/app/javascript/routes/components/StopPointList.js @@ -1,4 +1,6 @@ -import React, { PropTypes } from 'react' +import React from 'react' +import PropTypes from 'prop-types' +  import StopPoint from './StopPoint'  export default function StopPointList({ stopPoints, onDeleteClick, onMoveUpClick, onMoveDownClick, onChange, onSelectChange, onToggleMap, onToggleEdit, onSelectMarker, onUnselectMarker, onUpdateViaOlMap }, {I18n}) { diff --git a/app/javascript/time_tables/components/ConfirmModal.js b/app/javascript/time_tables/components/ConfirmModal.js index d89170ee7..845e7ed1b 100644 --- a/app/javascript/time_tables/components/ConfirmModal.js +++ b/app/javascript/time_tables/components/ConfirmModal.js @@ -1,4 +1,6 @@ -import React, { PropTypes } from 'react' +import React from 'react' +import PropTypes from 'prop-types' +  export default function ConfirmModal({dispatch, modal, onModalAccept, onModalCancel, timetable, metas}, {I18n}) {    return ( diff --git a/app/javascript/time_tables/components/ErrorModal.js b/app/javascript/time_tables/components/ErrorModal.js index e810f49ab..543177e54 100644 --- a/app/javascript/time_tables/components/ErrorModal.js +++ b/app/javascript/time_tables/components/ErrorModal.js @@ -1,4 +1,6 @@ -import React, { PropTypes } from 'react' +import React from 'react' +import PropTypes from 'prop-types' +  import actions from '../actions'  export default function ErrorModal({dispatch, modal, onModalClose}, {I18n}) { diff --git a/app/javascript/time_tables/components/ExceptionsInDay.js b/app/javascript/time_tables/components/ExceptionsInDay.js index 3335ee89d..f5ed625be 100644 --- a/app/javascript/time_tables/components/ExceptionsInDay.js +++ b/app/javascript/time_tables/components/ExceptionsInDay.js @@ -1,4 +1,5 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  import actions from '../actions'  export default class ExceptionsInDay extends Component { diff --git a/app/javascript/time_tables/components/Metas.js b/app/javascript/time_tables/components/Metas.js index 7098d2b82..4170ba493 100644 --- a/app/javascript/time_tables/components/Metas.js +++ b/app/javascript/time_tables/components/Metas.js @@ -1,4 +1,6 @@ -import React, { PropTypes } from 'react' +import React from 'react' +import PropTypes from 'prop-types' +  import actions from '../actions'  import TagsSelect2 from './TagsSelect2' diff --git a/app/javascript/time_tables/components/Navigate.js b/app/javascript/time_tables/components/Navigate.js index 7307d819b..64f05cb41 100644 --- a/app/javascript/time_tables/components/Navigate.js +++ b/app/javascript/time_tables/components/Navigate.js @@ -1,4 +1,5 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  import map from 'lodash/map'  import actions from '../actions' diff --git a/app/javascript/time_tables/components/PeriodForm.js b/app/javascript/time_tables/components/PeriodForm.js index d9f1d3437..085654a88 100644 --- a/app/javascript/time_tables/components/PeriodForm.js +++ b/app/javascript/time_tables/components/PeriodForm.js @@ -1,4 +1,6 @@ -import React, { PropTypes } from 'react' +import React from 'react' +import PropTypes from 'prop-types' +  import filter from 'lodash/filter'  let monthsArray = ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'] diff --git a/app/javascript/time_tables/components/PeriodManager.js b/app/javascript/time_tables/components/PeriodManager.js index 9922ce2c4..6b817fe73 100644 --- a/app/javascript/time_tables/components/PeriodManager.js +++ b/app/javascript/time_tables/components/PeriodManager.js @@ -1,4 +1,5 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  import actions from '../actions'  export default class PeriodManager extends Component { diff --git a/app/javascript/time_tables/components/PeriodsInDay.js b/app/javascript/time_tables/components/PeriodsInDay.js index 888537579..1aed5c969 100644 --- a/app/javascript/time_tables/components/PeriodsInDay.js +++ b/app/javascript/time_tables/components/PeriodsInDay.js @@ -1,4 +1,5 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  import PeriodManager from './PeriodManager'  export default class PeriodsInDay extends Component { diff --git a/app/javascript/time_tables/components/SaveTimetable.js b/app/javascript/time_tables/components/SaveTimetable.js index d5a57bd1c..704590abd 100644 --- a/app/javascript/time_tables/components/SaveTimetable.js +++ b/app/javascript/time_tables/components/SaveTimetable.js @@ -1,4 +1,5 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  import actions from '../actions'  export default class SaveTimetable extends Component{ diff --git a/app/javascript/time_tables/components/TagsSelect2.js b/app/javascript/time_tables/components/TagsSelect2.js index 70a748a04..dc3739d58 100644 --- a/app/javascript/time_tables/components/TagsSelect2.js +++ b/app/javascript/time_tables/components/TagsSelect2.js @@ -1,9 +1,10 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  import mapKeys from 'lodash/mapKeys'  import map from 'lodash/map'  import filter from 'lodash/filter'  import assign from 'lodash/assign' -import Select2 from 'react-select2' +import Select2 from 'react-select2-wrapper'  // get JSON full path  let origin = window.location.origin diff --git a/app/javascript/time_tables/components/TimeTableDay.js b/app/javascript/time_tables/components/TimeTableDay.js index 165c7b848..498e7d0cd 100644 --- a/app/javascript/time_tables/components/TimeTableDay.js +++ b/app/javascript/time_tables/components/TimeTableDay.js @@ -1,4 +1,5 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  export default class TimeTableDay extends Component {    constructor(props) { diff --git a/app/javascript/time_tables/components/Timetable.js b/app/javascript/time_tables/components/Timetable.js index df6e6016b..c44f2a134 100644 --- a/app/javascript/time_tables/components/Timetable.js +++ b/app/javascript/time_tables/components/Timetable.js @@ -1,4 +1,5 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  import actions from '../actions'  import TimeTableDay from './TimeTableDay'  import PeriodsInDay from './PeriodsInDay' diff --git a/app/javascript/time_tables/containers/App.js b/app/javascript/time_tables/containers/App.js index 235dccb50..5963f8f1d 100644 --- a/app/javascript/time_tables/containers/App.js +++ b/app/javascript/time_tables/containers/App.js @@ -1,4 +1,5 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  import { connect } from'react-redux'  import actions from '../actions'  import Metas from './Metas' diff --git a/app/javascript/vehicle_journeys/components/App.js b/app/javascript/vehicle_journeys/components/App.js index 8e5f7aa9d..44559c7c6 100644 --- a/app/javascript/vehicle_journeys/components/App.js +++ b/app/javascript/vehicle_journeys/components/App.js @@ -35,4 +35,4 @@ export default function App() {        <ConfirmModal />      </div>    ) -}
\ No newline at end of file +} diff --git a/app/javascript/vehicle_journeys/components/ConfirmModal.js b/app/javascript/vehicle_journeys/components/ConfirmModal.js index df3c96c48..3bfc852fb 100644 --- a/app/javascript/vehicle_journeys/components/ConfirmModal.js +++ b/app/javascript/vehicle_journeys/components/ConfirmModal.js @@ -1,4 +1,5 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  export default function ConfirmModal({dispatch, modal, onModalAccept, onModalCancel, vehicleJourneys}) {    return ( diff --git a/app/javascript/vehicle_journeys/components/Filters.js b/app/javascript/vehicle_journeys/components/Filters.js index 3bc4f7ff7..b6c255c53 100644 --- a/app/javascript/vehicle_journeys/components/Filters.js +++ b/app/javascript/vehicle_journeys/components/Filters.js @@ -1,4 +1,6 @@ -import React, { PropTypes } from 'react' +import React from 'react' +import PropTypes from 'prop-types' +  import MissionSelect2 from'./tools/select2s/MissionSelect2'  import VJSelect2 from'./tools/select2s/VJSelect2'  import TimetableSelect2 from'./tools/select2s/TimetableSelect2' diff --git a/app/javascript/vehicle_journeys/components/Navigate.js b/app/javascript/vehicle_journeys/components/Navigate.js index 7493b705b..0158b8392 100644 --- a/app/javascript/vehicle_journeys/components/Navigate.js +++ b/app/javascript/vehicle_journeys/components/Navigate.js @@ -1,4 +1,5 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  import actions from'../actions'  export default function Navigate({ dispatch, vehicleJourneys, pagination, status, filters}) { diff --git a/app/javascript/vehicle_journeys/components/SaveVehicleJourneys.js b/app/javascript/vehicle_journeys/components/SaveVehicleJourneys.js index 6dba5618c..c5161b917 100644 --- a/app/javascript/vehicle_journeys/components/SaveVehicleJourneys.js +++ b/app/javascript/vehicle_journeys/components/SaveVehicleJourneys.js @@ -1,4 +1,5 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  import actions from '../actions'  export default class SaveVehicleJourneys extends Component{ diff --git a/app/javascript/vehicle_journeys/components/ToggleArrivals.js b/app/javascript/vehicle_journeys/components/ToggleArrivals.js index e26ceec3a..9e7089be5 100644 --- a/app/javascript/vehicle_journeys/components/ToggleArrivals.js +++ b/app/javascript/vehicle_journeys/components/ToggleArrivals.js @@ -1,4 +1,6 @@ -import React, { PropTypes } from 'react' +import React from 'react' +import PropTypes from 'prop-types' +  export default function ToggleArrivals({filters, onToggleArrivals}) {    return ( @@ -24,4 +26,4 @@ export default function ToggleArrivals({filters, onToggleArrivals}) {  ToggleArrivals.propTypes = {    filters : PropTypes.object.isRequired,    onToggleArrivals: PropTypes.func.isRequired -}
\ No newline at end of file +} diff --git a/app/javascript/vehicle_journeys/components/Tools.js b/app/javascript/vehicle_journeys/components/Tools.js index d6e04f00e..ee02e5a68 100644 --- a/app/javascript/vehicle_journeys/components/Tools.js +++ b/app/javascript/vehicle_journeys/components/Tools.js @@ -1,4 +1,5 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  import actions from '../actions'  import AddVehicleJourney from '../containers/tools/AddVehicleJourney'  import DeleteVehicleJourneys from '../containers/tools/DeleteVehicleJourneys' diff --git a/app/javascript/vehicle_journeys/components/VehicleJourney.js b/app/javascript/vehicle_journeys/components/VehicleJourney.js index 7ac2a7ce7..d240757a3 100644 --- a/app/javascript/vehicle_journeys/components/VehicleJourney.js +++ b/app/javascript/vehicle_journeys/components/VehicleJourney.js @@ -1,4 +1,5 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  import actions from '../actions'  export default class VehicleJourney extends Component { @@ -8,13 +9,7 @@ export default class VehicleJourney extends Component {    }    cityNameChecker(sp) { -    let bool = false -    if(sp.stop_area_cityname != this.previousCity){ -      bool = true -      this.previousCity = sp.stop_area_cityname -    } - -    return bool +    return this.props.vehicleJourneys.showHeader(sp.stop_point_objectid)    }    hasFeature(key) { @@ -69,8 +64,8 @@ export default class VehicleJourney extends Component {            >            <div className='strong mb-xs'>{this.props.value.short_id || '-'}</div>            <div>{this.props.value.published_journey_name && this.props.value.published_journey_name != "non renseigné" ? this.props.value.published_journey_name : '-'}</div> -          <div>{this.props.value.company ? this.props.value.company.name : '-'}</div>            <div>{this.props.value.journey_pattern.short_id || '-'}</div> +          <div>{this.props.value.company ? this.props.value.company.name : '-'}</div>            <div>              {time_tables.slice(0,3).map((tt, i)=>                <span key={i} className='vj_tt'>{this.timeTableURL(tt)}</span> @@ -109,9 +104,8 @@ export default class VehicleJourney extends Component {                        min='00'                        max='23'                        className='form-control' -                      disabled={this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false} +                      disabled={!this.props.editMode || this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false}                        readOnly={!this.props.editMode && !vj.dummy} -                      disabled={!this.props.editMode && !vj.dummy}                        onChange={(e) => {this.props.onUpdateTime(e, i, this.props.index, 'hour', false, false)}}                        value={vj.arrival_time['hour']}                        /> @@ -121,9 +115,8 @@ export default class VehicleJourney extends Component {                        min='00'                        max='59'                        className='form-control' -                      disabled={this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false} +                      disabled={!this.props.editMode || this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false}                        readOnly={!this.props.editMode && !vj.dummy} -                      disabled={!this.props.editMode && !vj.dummy}                        onChange={(e) => {this.props.onUpdateTime(e, i, this.props.index, 'minute', false, false)}}                        value={vj.arrival_time['minute']}                        /> @@ -142,9 +135,8 @@ export default class VehicleJourney extends Component {                        min='00'                        max='23'                        className='form-control' -                      disabled={this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false} +                      disabled={!this.props.editMode || this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false}                        readOnly={!this.props.editMode && !vj.dummy} -                      disabled={!this.props.editMode && !vj.dummy}                        onChange={(e) => {this.props.onUpdateTime(e, i, this.props.index, 'hour', true, this.props.filters.toggleArrivals)}}                        value={vj.departure_time['hour']}                        /> @@ -154,9 +146,8 @@ export default class VehicleJourney extends Component {                        min='00'                        max='59'                        className='form-control' -                      disabled={this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false} +                      disabled={!this.props.editMode || this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false}                        readOnly={!this.props.editMode && !vj.dummy} -                      disabled={!this.props.editMode && !vj.dummy}                        onChange={(e) => {this.props.onUpdateTime(e, i, this.props.index, "minute", true,  this.props.filters.toggleArrivals)}}                        value={vj.departure_time['minute']}                        /> @@ -175,5 +166,6 @@ VehicleJourney.propTypes = {    filters: PropTypes.object.isRequired,    index: PropTypes.number.isRequired,    onUpdateTime: PropTypes.func.isRequired, -  onSelectVehicleJourney: PropTypes.func.isRequired +  onSelectVehicleJourney: PropTypes.func.isRequired, +  vehicleJourneys: PropTypes.object.isRequired,  } diff --git a/app/javascript/vehicle_journeys/components/VehicleJourneys.js b/app/javascript/vehicle_journeys/components/VehicleJourneys.js index 0cac0344c..b188962c2 100644 --- a/app/javascript/vehicle_journeys/components/VehicleJourneys.js +++ b/app/javascript/vehicle_journeys/components/VehicleJourneys.js @@ -1,13 +1,19 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  import _ from 'lodash'  import VehicleJourney from './VehicleJourney' - +import StopAreaHeaderManager from '../../helpers/stop_area_header_manager'  export default class VehicleJourneys extends Component {    constructor(props){      super(props) -    this.previousCity = undefined +    this.headerManager = new StopAreaHeaderManager( +      _.map(this.props.stopPointsList, (sp)=>{return sp.object_id}), +      this.props.stopPointsList, +      this.props.filters.features +    )    } +    componentDidMount() {      this.props.onLoadFirstPage(this.props.filters)    } @@ -16,6 +22,10 @@ export default class VehicleJourneys extends Component {      return this.props.filters.features[key]    } +  showHeader(object_id) { +    return this.headerManager.showHeader(object_id) +  } +    componentDidUpdate(prevProps, prevState) {      if(this.props.status.isFetching == false){        $('.table-2entries').each(function() { @@ -59,25 +69,8 @@ export default class VehicleJourneys extends Component {      }    } -  cityNameChecker(sp) { -    let bool = false -    if(sp.city_name != this.previousCity){ -      bool = true -      this.previousCity = sp.city_name -    } -    return ( -      <div -        className={(bool) ? 'headlined' : ''} -        data-headline={(bool) ? sp.city_name : ''} -        title={sp.city_name + ' (' + sp.zip_code +')'} -      > -        <span><span>{sp.name}</span></span> -      </div> -    ) -  } -    render() { -    this.previousCity = undefined +    this.previousBreakpoint = undefined      if(this.props.status.isFetching == true) {        return ( @@ -124,7 +117,7 @@ export default class VehicleJourneys extends Component {                  {this.props.stopPointsList.map((sp, i) =>{                    return (                      <div key={i} className='td'> -                      {this.cityNameChecker(sp)} +                      {this.headerManager.stopPointHeader(sp.object_id)}                      </div>                    )                  })} @@ -142,6 +135,7 @@ export default class VehicleJourneys extends Component {                        features={this.props.features}                        onUpdateTime={this.props.onUpdateTime}                        onSelectVehicleJourney={this.props.onSelectVehicleJourney} +                      vehicleJourneys={this}                        />                    )}                  </div> diff --git a/app/javascript/vehicle_journeys/components/tools/CreateModal.js b/app/javascript/vehicle_journeys/components/tools/CreateModal.js index cd593cdff..61012d199 100644 --- a/app/javascript/vehicle_journeys/components/tools/CreateModal.js +++ b/app/javascript/vehicle_journeys/components/tools/CreateModal.js @@ -1,4 +1,5 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  import actions from '../../actions'  import MissionSelect2 from './select2s/MissionSelect2'  import CompanySelect2 from './select2s/CompanySelect2' diff --git a/app/javascript/vehicle_journeys/components/tools/DeleteVehicleJourneys.js b/app/javascript/vehicle_journeys/components/tools/DeleteVehicleJourneys.js index fc13ae964..4815003d3 100644 --- a/app/javascript/vehicle_journeys/components/tools/DeleteVehicleJourneys.js +++ b/app/javascript/vehicle_journeys/components/tools/DeleteVehicleJourneys.js @@ -1,4 +1,6 @@ -import React, { PropTypes } from 'react' +import React from 'react' +import PropTypes from 'prop-types' +  import actions from '../../actions'  export default function DeleteVehicleJourneys({onDeleteVehicleJourneys, vehicleJourneys, disabled}) { diff --git a/app/javascript/vehicle_journeys/components/tools/DuplicateVehicleJourney.js b/app/javascript/vehicle_journeys/components/tools/DuplicateVehicleJourney.js index 8083defb9..102a87d85 100644 --- a/app/javascript/vehicle_journeys/components/tools/DuplicateVehicleJourney.js +++ b/app/javascript/vehicle_journeys/components/tools/DuplicateVehicleJourney.js @@ -1,4 +1,5 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  import actions from '../../actions'  import _ from 'lodash' diff --git a/app/javascript/vehicle_journeys/components/tools/EditVehicleJourney.js b/app/javascript/vehicle_journeys/components/tools/EditVehicleJourney.js index cad04ed0e..36dbb98d5 100644 --- a/app/javascript/vehicle_journeys/components/tools/EditVehicleJourney.js +++ b/app/javascript/vehicle_journeys/components/tools/EditVehicleJourney.js @@ -1,4 +1,5 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  import actions from '../../actions'  import CompanySelect2 from './select2s/CompanySelect2' diff --git a/app/javascript/vehicle_journeys/components/tools/NotesEditVehicleJourney.js b/app/javascript/vehicle_journeys/components/tools/NotesEditVehicleJourney.js index de97bc403..880542216 100644 --- a/app/javascript/vehicle_journeys/components/tools/NotesEditVehicleJourney.js +++ b/app/javascript/vehicle_journeys/components/tools/NotesEditVehicleJourney.js @@ -1,4 +1,5 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  import actions from '../../actions'  import _ from 'lodash' diff --git a/app/javascript/vehicle_journeys/components/tools/PurchaseWindowsEditVehicleJourney.js b/app/javascript/vehicle_journeys/components/tools/PurchaseWindowsEditVehicleJourney.js index d61c7a34b..ce9a4cde9 100644 --- a/app/javascript/vehicle_journeys/components/tools/PurchaseWindowsEditVehicleJourney.js +++ b/app/javascript/vehicle_journeys/components/tools/PurchaseWindowsEditVehicleJourney.js @@ -1,4 +1,5 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  import actions from '../../actions'  import TimetableSelect2 from './select2s/TimetableSelect2' diff --git a/app/javascript/vehicle_journeys/components/tools/ShiftVehicleJourney.js b/app/javascript/vehicle_journeys/components/tools/ShiftVehicleJourney.js index a54e40502..6574bfa2d 100644 --- a/app/javascript/vehicle_journeys/components/tools/ShiftVehicleJourney.js +++ b/app/javascript/vehicle_journeys/components/tools/ShiftVehicleJourney.js @@ -1,4 +1,5 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  import actions from '../../actions'  export default class ShiftVehicleJourney extends Component { diff --git a/app/javascript/vehicle_journeys/components/tools/TimetablesEditVehicleJourney.js b/app/javascript/vehicle_journeys/components/tools/TimetablesEditVehicleJourney.js index fdaa5aeed..e2fcd27d5 100644 --- a/app/javascript/vehicle_journeys/components/tools/TimetablesEditVehicleJourney.js +++ b/app/javascript/vehicle_journeys/components/tools/TimetablesEditVehicleJourney.js @@ -1,4 +1,5 @@ -import React, { PropTypes, Component } from 'react' +import React, { Component } from 'react' +import PropTypes from 'prop-types'  import actions from '../../actions'  import TimetableSelect2 from './select2s/TimetableSelect2' diff --git a/app/javascript/vehicle_journeys/components/tools/select2s/CompanySelect2.js b/app/javascript/vehicle_journeys/components/tools/select2s/CompanySelect2.js index 79ba8f094..28a092945 100644 --- a/app/javascript/vehicle_journeys/components/tools/select2s/CompanySelect2.js +++ b/app/javascript/vehicle_journeys/components/tools/select2s/CompanySelect2.js @@ -1,6 +1,7 @@  import _ from 'lodash' -import React, { PropTypes, Component } from 'react' -import Select2 from 'react-select2' +import React, { Component } from 'react' +import PropTypes from 'prop-types' +import Select2 from 'react-select2-wrapper'  import actions from '../../../actions'  // get JSON full path diff --git a/app/javascript/vehicle_journeys/components/tools/select2s/MissionSelect2.js b/app/javascript/vehicle_journeys/components/tools/select2s/MissionSelect2.js index fa847886c..2a06df77e 100644 --- a/app/javascript/vehicle_journeys/components/tools/select2s/MissionSelect2.js +++ b/app/javascript/vehicle_journeys/components/tools/select2s/MissionSelect2.js @@ -1,6 +1,7 @@  import _ from 'lodash' -import React, { PropTypes, Component } from 'react' -import Select2 from 'react-select2' +import React, { Component } from 'react' +import PropTypes from 'prop-types' +import Select2 from 'react-select2-wrapper'  import actions from '../../../actions'  // get JSON full path diff --git a/app/javascript/vehicle_journeys/components/tools/select2s/TimetableSelect2.js b/app/javascript/vehicle_journeys/components/tools/select2s/TimetableSelect2.js index eb8651be2..0339455ca 100644 --- a/app/javascript/vehicle_journeys/components/tools/select2s/TimetableSelect2.js +++ b/app/javascript/vehicle_journeys/components/tools/select2s/TimetableSelect2.js @@ -1,6 +1,7 @@  import _ from 'lodash' -import React, { PropTypes, Component } from 'react' -import Select2 from 'react-select2' +import React, { Component } from 'react' +import PropTypes from 'prop-types' +import Select2 from 'react-select2-wrapper'  import actions from '../../../actions'  // get JSON full path diff --git a/app/javascript/vehicle_journeys/components/tools/select2s/VJSelect2.js b/app/javascript/vehicle_journeys/components/tools/select2s/VJSelect2.js index b063abeca..ccb4c9595 100644 --- a/app/javascript/vehicle_journeys/components/tools/select2s/VJSelect2.js +++ b/app/javascript/vehicle_journeys/components/tools/select2s/VJSelect2.js @@ -1,6 +1,7 @@  import _ from 'lodash' -import React, { PropTypes, Component } from 'react' -import Select2 from 'react-select2' +import React, { Component } from 'react' +import PropTypes from 'prop-types' +import Select2 from 'react-select2-wrapper'  import actions from '../../../actions'  // get JSON full path diff --git a/app/jobs/mailer_job.rb b/app/jobs/mailer_job.rb index 3918745b8..eb3250a27 100644 --- a/app/jobs/mailer_job.rb +++ b/app/jobs/mailer_job.rb @@ -1,6 +1,9 @@  class MailerJob < ActiveJob::Base    # No need to specify queue it's already used mailers queue +  # This job will be retried, unlike Sidekiq jobs which are configured +  # to not retry +    def perform klass, action, params      klass.constantize.public_send(action, *params).deliver_later    end diff --git a/app/models/chouette/journey_pattern.rb b/app/models/chouette/journey_pattern.rb index 366fde188..1ddf7c9fb 100644 --- a/app/models/chouette/journey_pattern.rb +++ b/app/models/chouette/journey_pattern.rb @@ -58,14 +58,14 @@ module Chouette        {          name: item['name'],          published_name: item['published_name'], -        registration_number: item['registration_number'] +        registration_number: item['registration_number'], +        costs: item['costs']        }      end      def self.state_create_instance route, item        # Flag new record, so we can unset object_id if transaction rollback        jp = route.journey_patterns.create(state_permited_attributes(item)) -        # FIXME        # DefaultAttributesSupport will trigger some weird validation on after save        # wich will call to valid?, wich will populate errors @@ -146,5 +146,9 @@ module Chouette          vjas.destroy        end      end + +    def costs +      read_attribute(:costs) || {} +    end    end  end diff --git a/app/models/chouette/stop_area.rb b/app/models/chouette/stop_area.rb index 4f1359ff8..52602be9f 100644 --- a/app/models/chouette/stop_area.rb +++ b/app/models/chouette/stop_area.rb @@ -49,8 +49,10 @@ module Chouette      def parent_area_type_must_be_greater        return unless self.parent -      if Chouette::AreaType.find(self.area_type) >= Chouette::AreaType.find(self.parent.area_type) -        errors.add(:parent_id, I18n.t('stop_areas.errors.parent_area_type', area_type: self.parent.area_type)) + +      parent_area_type = Chouette::AreaType.find(self.parent.area_type) +      if Chouette::AreaType.find(self.area_type) >= parent_area_type +        errors.add(:parent_id, I18n.t('stop_areas.errors.parent_area_type', area_type: parent_area_type.label))        end      end @@ -355,5 +357,12 @@ module Chouette      def deactivate!        update_attribute :deleted_at, Time.now      end + +    def country_name +      return unless country_code + +      country = ISO3166::Country[country_code] +      country.translations[I18n.locale.to_s] || country.name +    end    end  end diff --git a/app/models/chouette/vehicle_journey.rb b/app/models/chouette/vehicle_journey.rb index d4dc82a56..11da77948 100644 --- a/app/models/chouette/vehicle_journey.rb +++ b/app/models/chouette/vehicle_journey.rb @@ -243,6 +243,14 @@ module Chouette        end      end +    def custom_fields +      CustomField.where(resource_type: self.class.name.split("::").last) +    end + +    def custom_field_value key +      (custom_field_values || {})[key.to_s] +    end +      def self.matrix(vehicle_journeys)        Hash[*VehicleJourneyAtStop.where(vehicle_journey_id: vehicle_journeys.pluck(:id)).map do |vjas|          [ "#{vjas.vehicle_journey_id}-#{vjas.stop_point_id}", vjas] diff --git a/app/models/custom_field.rb b/app/models/custom_field.rb new file mode 100644 index 000000000..e8e76c6b5 --- /dev/null +++ b/app/models/custom_field.rb @@ -0,0 +1,7 @@ +class CustomField < ActiveRecord::Base + +  extend Enumerize +  enumerize :field_type, in: %i{list}  + +  validates :name, uniqueness: {scope: :resource_type} +end diff --git a/app/models/merge.rb b/app/models/merge.rb index 4cbbd18ab..8051eed4d 100644 --- a/app/models/merge.rb +++ b/app/models/merge.rb @@ -17,7 +17,7 @@ class Merge < ActiveRecord::Base    end    def name -    "Dummy" # FIXME +    referentials.first(3).map { |r| r.name.truncate(10) }.join(',')    end    attr_reader :new diff --git a/app/models/referential.rb b/app/models/referential.rb index 932000174..3eb5d3283 100644 --- a/app/models/referential.rb +++ b/app/models/referential.rb @@ -360,8 +360,18 @@ class Referential < ActiveRecord::Base          Apartment::Tenant.create slug        end -      Rails.logger.info("Schema create benchmark: '#{slug}'\t#{report}") -      Rails.logger.error( "Schema migrations count for Referential #{slug} " + Referential.connection.select_value("select count(*) from #{slug}.schema_migrations;").to_s ) +      check_migration_count(report) +    end +  end + +  def check_migration_count(report) +    Rails.logger.info("Schema create benchmark: '#{slug}'\t#{report}") +    Rails.logger.info("Schema migrations count for Referential #{slug}: #{migration_count || '-'}") +  end + +  def migration_count +    if self.class.connection.table_exists?("#{slug}.schema_migrations") +      self.class.connection.select_value("select count(*) from #{slug}.schema_migrations;")      end    end @@ -451,7 +461,7 @@ class Referential < ActiveRecord::Base      # No explicit unlock is needed as it will be released at the end of the      # transaction.      ActiveRecord::Base.connection.execute( -      'LOCK referentials IN ACCESS EXCLUSIVE MODE' +      'LOCK public.referentials IN ACCESS EXCLUSIVE MODE'      )    end  end diff --git a/app/models/referential_cloning.rb b/app/models/referential_cloning.rb index a2b23e819..d4b74bd52 100644 --- a/app/models/referential_cloning.rb +++ b/app/models/referential_cloning.rb @@ -19,9 +19,12 @@ class ReferentialCloning < ActiveRecord::Base    end    def clone! -    AF83::SchemaCloner -      .new(source_referential.slug, target_referential.slug) -      .clone_schema +    report = Benchmark.measure do +      AF83::SchemaCloner +        .new(source_referential.slug, target_referential.slug) +        .clone_schema +    end +    target_referential.check_migration_count(report)    end    private diff --git a/app/models/workbench.rb b/app/models/workbench.rb index 3190246ae..f49f4e7cf 100644 --- a/app/models/workbench.rb +++ b/app/models/workbench.rb @@ -4,6 +4,7 @@ class Workbench < ActiveRecord::Base    belongs_to :line_referential    belongs_to :stop_area_referential    belongs_to :output, class_name: 'ReferentialSuite' +  belongs_to :workgroup    has_many :lines, -> (workbench) { Stif::MyWorkbenchScopes.new(workbench).line_scope(self) }, through: :line_referential    has_many :networks, through: :line_referential diff --git a/app/models/workgroup.rb b/app/models/workgroup.rb new file mode 100644 index 000000000..995917fac --- /dev/null +++ b/app/models/workgroup.rb @@ -0,0 +1,14 @@ +class Workgroup < ActiveRecord::Base +  belongs_to :line_referential +  belongs_to :stop_area_referential + +  has_many :workbenches +  has_many :organisations, through: :workbenches + +  validates_uniqueness_of :name + +  validates_presence_of :line_referential_id +  validates_presence_of :stop_area_referential_id + +  has_many :custom_fields +end diff --git a/app/views/api/v1/journey_patterns/show.rabl b/app/views/api/v1/journey_patterns/show.rabl index 86876f3fb..815b1cf0b 100644 --- a/app/views/api/v1/journey_patterns/show.rabl +++ b/app/views/api/v1/journey_patterns/show.rabl @@ -5,16 +5,21 @@ extends "api/v1/trident_objects/show"    attributes attr, :unless => lambda { |m| m.send( attr).nil?}  end +if has_feature? :costs_in_journey_patterns +  attribute :costs +end +  node(:route_short_description) do |journey_pattern|    partial("api/v1/routes/short_description", :object => journey_pattern.route)  end  node(:vehicle_journey_object_ids) do |journey_pattern| -  journey_pattern.vehicle_journeys.map(&:objectid) +  journey_pattern.vehicle_journeys.pluck(:objectid)  end unless root_object.vehicle_journeys.empty?  child :stop_points => :stop_area_short_descriptions do |stop_points|    node do |stop_point| +    cache stop_point.stop_area_id      partial("api/v1/stop_areas/short_description", :object => stop_point.stop_area)    end  end diff --git a/app/views/imports/index.html.slim b/app/views/imports/index.html.slim index 79452bbfc..856b715e0 100644 --- a/app/views/imports/index.html.slim +++ b/app/views/imports/index.html.slim @@ -34,7 +34,7 @@                  attribute: 'creator' \                ) \              ], -            links: [], +            links: [:show],              cls: 'table has-search'            = new_pagination @imports, 'pull-right' diff --git a/app/views/merges/_form.html.slim b/app/views/merges/_form.html.slim index ff85ad76b..b97a4b03e 100644 --- a/app/views/merges/_form.html.slim +++ b/app/views/merges/_form.html.slim @@ -4,4 +4,9 @@      .col-lg-12        = form.input :referentials, :collection => @mergeable_referentials, include_blank: false, input_html: { multiple: true, 'data-select2ed': true } + +  .row +    .col-lg-12 +      = form.input :creator, input_html: { disabled: true } +    = form.button :submit, t('actions.submit'), class: 'btn btn-default formSubmitr', form: 'wb_merge_form' diff --git a/app/views/merges/show.html.slim b/app/views/merges/show.html.slim index 579995ebf..47e5aa029 100644 --- a/app/views/merges/show.html.slim +++ b/app/views/merges/show.html.slim @@ -7,7 +7,8 @@        .col-lg-6.col-md-6.col-sm-12.col-xs-12          = definition_list t('metadatas'),            { @merge.class.human_attribute_name(:referentials) => @merge.referentials.map(&:name).join(', '), +            @merge.class.human_attribute_name(:operator) => @merge.creator,              @merge.class.human_attribute_name(:status) => @merge.status, -            @merge.class.human_attribute_name(:created_at) => @merge.created_at, -            @merge.class.human_attribute_name(:started_at) => @merge.started_at, -            @merge.class.human_attribute_name(:ended_at) => @merge.ended_at } +            @merge.class.human_attribute_name(:created_at) => @merge.created_at ? l(@merge.created_at) : '-', +            @merge.class.human_attribute_name(:started_at) => @merge.started_at ? l(@merge.started_at) : '-', +            @merge.class.human_attribute_name(:ended_at) => @merge.ended_at ? l(@merge.ended_at) : '-' } diff --git a/app/views/referential_vehicle_journeys/_filters.html.slim b/app/views/referential_vehicle_journeys/_filters.html.slim index 963da8cea..4506251c3 100644 --- a/app/views/referential_vehicle_journeys/_filters.html.slim +++ b/app/views/referential_vehicle_journeys/_filters.html.slim @@ -5,6 +5,16 @@        span.input-group-btn          button.btn.btn-default#search-btn type='submit'            span.fa.fa-search +  .ffg-row +    .form-group.togglable +      = f.label Chouette::VehicleJourney.human_attribute_name(:company), required: false, class: 'control-label' +      = f.input :company_id_eq_any, collection: @all_companies.select(:id, :name).order(name: :asc), as: :check_boxes, label: false, label_method: lambda{|l| ("<span>" + l.name + "</span>").html_safe}, required: false, wrapper_html: { class: 'checkbox_list'} +    .form-group.togglable.name-filter +      = f.label Chouette::VehicleJourney.human_attribute_name(:published_journey_name), required: false, class: 'control-label' +      .inputs.form-inline.checkbox_list +        = f.input :published_journey_name_gteq, label: false, wrapper_html: { class: 'w45'} +        .form-group.w10.to= I18n.t('vehicle_journeys.form.to') +        = f.input :published_journey_name_lteq, label: false, wrapper_html: { class: 'w45'}    .actions      = link_to 'Effacer', referential_vehicle_journeys_path(@referential), class: 'btn btn-link' diff --git a/app/views/referentials/_form.html.slim b/app/views/referentials/_form.html.slim index 1611ee6dd..9927f05bd 100644 --- a/app/views/referentials/_form.html.slim +++ b/app/views/referentials/_form.html.slim @@ -51,4 +51,8 @@    .hidden = form.input :workbench_id, as: :hidden -  = form.button :submit, t('actions.submit'), class: 'btn btn-default formSubmitr', form: 'referential_form' +  = form.button :submit, +      t('actions.submit'), +      class: 'btn btn-default formSubmitr', +      data: { disable_with: t('actions.processing') }, +      form: 'referential_form' diff --git a/app/views/workbench_outputs/show.html.slim b/app/views/workbench_outputs/show.html.slim index 67dc6e8d4..dc0a54204 100644 --- a/app/views/workbench_outputs/show.html.slim +++ b/app/views/workbench_outputs/show.html.slim @@ -19,10 +19,21 @@                  attribute: Proc.new { |n| import_status(n.status) }, \                ), \                TableBuilderHelper::Column.new( \ +                key: :name, \ +                attribute: 'name', \ +                link_to: lambda do |merge| \ +                  workbench_merge_path merge.workbench, merge \ +                end \ +              ), \ +              TableBuilderHelper::Column.new( \                  key: :started_at, \                  attribute: Proc.new { |n| l(n.started_at, format: :long) if n.started_at }, \                ), \                TableBuilderHelper::Column.new( \ +                key: :ended_at, \ +                attribute: Proc.new { |n| l(n.ended_at, format: :long) if n.ended_at }, \ +              ), \ +              TableBuilderHelper::Column.new( \                  key: :creator, \                  attribute: 'creator' \                ) \ diff --git a/app/workers/clean_up_worker.rb b/app/workers/clean_up_worker.rb index 2d76b3a68..9a7c3aa5a 100644 --- a/app/workers/clean_up_worker.rb +++ b/app/workers/clean_up_worker.rb @@ -1,6 +1,5 @@  class CleanUpWorker    include Sidekiq::Worker -  sidekiq_options :retry => false    def perform(id)      cleaner = CleanUp.find id diff --git a/app/workers/line_referential_sync_worker.rb b/app/workers/line_referential_sync_worker.rb index 253b8a53c..1303a63fd 100644 --- a/app/workers/line_referential_sync_worker.rb +++ b/app/workers/line_referential_sync_worker.rb @@ -1,6 +1,6 @@  class LineReferentialSyncWorker    include Sidekiq::Worker -  sidekiq_options :retry => false +  sidekiq_options retry: true    def process_time      Process.clock_gettime(Process::CLOCK_MONOTONIC, :second) diff --git a/app/workers/stop_area_referential_sync_worker.rb b/app/workers/stop_area_referential_sync_worker.rb index 08bcf4f5f..3de351a91 100644 --- a/app/workers/stop_area_referential_sync_worker.rb +++ b/app/workers/stop_area_referential_sync_worker.rb @@ -1,6 +1,6 @@  class StopAreaReferentialSyncWorker    include Sidekiq::Worker -  sidekiq_options :retry => false +  sidekiq_options retry: true    def process_time      Process.clock_gettime(Process::CLOCK_MONOTONIC, :second) diff --git a/config/database.yml b/config/database.yml index 2a3ddf5d0..60f1d032f 100644 --- a/config/database.yml +++ b/config/database.yml @@ -21,6 +21,7 @@ test: &test  production:    <<: *default +  adapter: <%= ENV.fetch 'RAILS_DB_ADAPTER', 'postgis' %>    database: chouette2  cucumber: diff --git a/config/database.yml.docker b/config/database.yml.docker new file mode 100644 index 000000000..f49b22b87 --- /dev/null +++ b/config/database.yml.docker @@ -0,0 +1,11 @@ +<%= ENV.fetch 'RAILS_ENV', 'production' %>: +  adapter: <%= ENV.fetch 'RAILS_DB_ADAPTER', 'postgis' %> +  encoding: unicode +  pool: <%= ENV.fetch 'RAILS_DB_POOLSIZE', '5' %> +  host: <%= ENV.fetch 'RAILS_DB_HOST', 'db' %> +  port: <%= ENV.fetch 'RAILS_DB_PORT', '5432' %> +  schema_search_path: 'public,shared_extensions' +  postgis_schema: 'shared_extensions' +  database: <%= ENV.fetch 'RAILS_DB_NAME', 'chouette' %> +  username: <%= ENV.fetch 'RAILS_DB_USER', 'chouette' %> +  password: <%= ENV.fetch 'RAILS_DB_PASSWORD' %> diff --git a/config/deploy/staging.rb b/config/deploy/staging.rb index d0a1edc42..5307ce55a 100644 --- a/config/deploy/staging.rb +++ b/config/deploy/staging.rb @@ -1,2 +1,2 @@ -server "stif-boiv-staging.af83.priv", :app, :web, :db, :primary => true +server "stif-boiv-worker-staging.af83.priv", :app, :web, :db, :primary => true, :user => 'deploy'  set :branch, 'staging' diff --git a/config/environments/development.rb b/config/environments/development.rb index e9cd16c34..24a4ed6b8 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -93,4 +93,6 @@ Rails.application.configure do    config.validation_spec = "http://www.chouette.mobi/neptune-validation/v21/"    config.i18n.available_locales = [:fr, :en] + +  config.middleware.insert_after(ActionDispatch::Static, Rack::LiveReload) if ENV['LIVERELOAD']  end diff --git a/config/environments/production.rb b/config/environments/production.rb index 8e21f0919..57a8e1483 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -19,7 +19,9 @@ Rails.application.configure do    # config.action_dispatch.rack_cache = true    # Disable Rails's static asset server (Apache or nginx will already do this). -  config.serve_static_files = false +  # config.serve_static_files = false +  config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present? +  # config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?    # Compress JavaScripts and CSS.    config.assets.js_compressor = :uglifier @@ -53,9 +55,10 @@ Rails.application.configure do    #if ENV['OS'] == 'Windows_NT'    #  # args = log_path,number of files,file sizes    #  config.logger = Logger.new("C:/chouette/logs/chouette2.log", 5, 10.megabytes) -  config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new("rails/chouette2").tap do |syslog| -                                                     syslog.level = Logger::INFO -                                                   end) +  config.logger = Logger.new(STDOUT) +  #config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new("rails/chouette2").tap do |syslog| +  #                                                   syslog.level = Logger::INFO +  #                                                 end)    # Use a different cache store in production.    # config.cache_store = :mem_cache_store @@ -84,42 +87,31 @@ Rails.application.configure do    config.active_record.dump_schema_after_migration = false -  config.action_mailer.default_url_options = { :host => 'my-domain-name.com' } +  config.action_mailer.default_url_options = { :host => ENV.fetch('MAIL_HOST','iboo.stif.info') }    # Configure the e-mail address which will be shown in Devise::Maile -  config.mailer_sender = "chouette-production@my-domain-name.com" - -  ActionMailer::Base.smtp_settings = { -    :address        => "smtp.sample.com", -    :port           => 25, -    :domain         => "sample.com", -    :user_name      => "smtp_user", -    :password       => "smtp_password", -    :authentication => :login -  } +  config.mailer_sender = ENV.fetch('MAIL_FROM', 'STIF Iboo <noreply@stif.info>') +  config.action_mailer.default_options = { from: ENV.fetch('MAIL_FROM', 'STIF Iboo <noreply@stif.info>') } +  config.action_mailer.smtp_settings = { address: ENV.fetch('SMTP_HOST', 'mail.stif.info') } +  config.action_mailer.asset_host          = ENV.fetch('MAIL_ASSETS_URL_BASE','http://iboo.stif.info')    # Specific theme for each company    # AFIMB -  config.company_name = "afimb" -  config.company_theme = "#61970b" # AFIMB color -  config.company_contact = "http://www.chouette.mobi/club-utilisateurs/contact-support/" -  config.accept_user_creation = true - -  # CITYWAY -  # config.company_name = "cityway" -  # config.company_theme = "#32adb0" -  # config.company_contact = "http://www.cityway.fr/contact/?rub_code=14" -  # config.accept_user_creation = false - -  config.chouette_authentication_settings = { -    type: "cas", -    cas_server: "https://portail-server/sessions", -    cas_validate_url: "http://portail-server/sessions/proxyValidate" -  } -  config.stif_portail_api = { -    key: "api_token_for_portail_goes_here", -    url: "http://portail-server" -  } +  config.company_name = ENV.fetch('COMPANY_NAME',"STIF") +  config.company_theme = ENV.fetch('COMPANY_THEME',"#61970b") # AFIMB color +  config.company_contact = ENV.fetch('COMPANY_CONTACT',"http://www.chouette.mobi/club-utilisateurs/contact-support/") +  config.accept_user_creation = ENV.fetch('ACCEPT_USER_CREATION','0')=='1'?true:false + +  config.chouette_authentication_settings = JSON.parse(ENV.fetch('AUTH_SETTINGS','{ +    "type": "cas", +    "cas_server": "https://portail.stif.info/sessions", +    "cas_validate_url": "http://portail.stif.info/sessions/proxyValidate" +  }'),{symbolize_names: true}) + +  config.stif_portail_api = JSON.parse(ENV.fetch('SESAME_API_SETTINGS','{ +    "key": "xxxxxxxxxxx", +    "url": "http://portail.stif.info" +  }'),{symbolize_names: true})    # file to data for demo    # config.demo_data = "/path/to/demo.zip" @@ -135,13 +127,13 @@ Rails.application.configure do    config.i18n.available_locales = [:fr, :en]    # REFLEX api url -  config.reflex_api_url = "https://pprod.reflex.stif.info/ws/reflex/V1/service=getData" +  config.reflex_api_url = ENV.fetch('REFLEX_API_URL',"https://pprod.reflex.stif.info/ws/reflex/V1/service=getData")    # CODIFLIGNE api url -  config.codifligne_api_url = "https://pprod.codifligne.stif.info/rest/v1/lc/getlist" +  config.codifligne_api_url = ENV.fetch('CODIFLIGNE_API_URL',"https://pprod.codifligne.stif.info/rest/v1/lc/getlist")    # IEV -  config.iev_url = "http://worker-server:8080" -  config.rails_host = ENV.fetch('RAILS_HOST') +  config.iev_url = ENV.fetch('IEV_URL',"http://iev:8080") +  config.rails_host = ENV.fetch('RAILS_HOST','http://front:3000')    # Set node env for browserify-rails    # config.browserify_rails.node_env = "production" diff --git a/config/initializers/apartment.rb b/config/initializers/apartment.rb index 8becd23c2..2d06fb88b 100644 --- a/config/initializers/apartment.rb +++ b/config/initializers/apartment.rb @@ -39,6 +39,7 @@ Apartment.configure do |config|      'Chouette::Network',      'ReferentialCloning',      'Workbench', +    'Workgroup',      'CleanUp',      'CleanUpResult',      'Calendar', @@ -78,7 +79,8 @@ Apartment.configure do |config|      'ComplianceCheckBlock',      'ComplianceCheckResource',      'ComplianceCheckMessage', -    'Merge' +    'Merge', +    'CustomField',    ]    # use postgres schemas? diff --git a/config/initializers/sidekiq.rb b/config/initializers/sidekiq.rb index e44d8df52..a177e7091 100644 --- a/config/initializers/sidekiq.rb +++ b/config/initializers/sidekiq.rb @@ -7,4 +7,11 @@ Sidekiq.configure_server do |config|        pendings.map { |sync| sync.failed({error: 'Failed by Sidekiq reboot', processing_time: 0}) }      end    end +  config.redis = { url: ENV.fetch('SIDEKIQ_REDIS_URL', 'redis://localhost:6379/12') }  end + +Sidekiq.configure_client do |config| +  config.redis = { url: ENV.fetch('SIDEKIQ_REDIS_URL', 'redis://localhost:6379/12') } +end + +Sidekiq.default_worker_options = { retry: false } diff --git a/config/initializers/simple_form/safe_submit.rb b/config/initializers/simple_form/safe_submit.rb new file mode 100644 index 000000000..64b9f1e6e --- /dev/null +++ b/config/initializers/simple_form/safe_submit.rb @@ -0,0 +1,12 @@ +::SimpleForm::FormBuilder.class_eval do +  def button_with_safe_submit(type, *args, &block) +    options = args.extract_options!.dup +    if type == :submit +      options[:data] ||= {} +      options[:data][:disable_with] ||= I18n.t('actions.wait_for_submission') +    end +    args << options +    button_without_safe_submit type, *args, &block +  end +  alias_method_chain :button, :safe_submit +end diff --git a/config/initializers/stif.rb b/config/initializers/stif.rb index 60db50083..a73e4931b 100644 --- a/config/initializers/stif.rb +++ b/config/initializers/stif.rb @@ -1,3 +1,4 @@ +# coding: utf-8  Rails.application.config.to_prepare do    Organisation.after_create do |organisation|      line_referential      = LineReferential.find_by(name: "CodifLigne") @@ -6,10 +7,16 @@ Rails.application.config.to_prepare do      line_referential.organisations << organisation      stop_area_referential.organisations << organisation -    organisation.workbenches.find_or_create_by(name: "Gestion de l'offre") do |workbench| -      workbench.line_referential      = line_referential -      workbench.stop_area_referential = stop_area_referential -      workbench.objectid_format = Workbench.objectid_format.stif_netex +    workgroup = Workgroup.find_or_create_by(name: "Gestion de l'offre théorique IDFm") do |w| +      w.line_referential      = line_referential +      w.stop_area_referential = stop_area_referential +    end + +    workbench = organisation.workbenches.find_or_create_by(name: "Gestion de l'offre") do |w| +      w.line_referential      = line_referential +      w.stop_area_referential = stop_area_referential +      w.objectid_format       = Workbench.objectid_format.stif_netex +      w.workgroup             = workgroup        Rails.logger.debug "Create Workbench for #{organisation.name}"      end diff --git a/config/locales/actions.en.yml b/config/locales/actions.en.yml index f5f48db22..278915526 100644 --- a/config/locales/actions.en.yml +++ b/config/locales/actions.en.yml @@ -7,6 +7,7 @@ en:      delete: "Delete"      search: "Search"      submit: "Submit" +    processing: "Processing…"      add: "Add new"      new: "Add new"      show: "See" @@ -24,6 +25,7 @@ en:      erase: 'Erase'      create_api_key: "Create an API key"      select: Select +    wait_for_submission: "Please wait..."    or: "or"    cancel: "Cancel"    back: "Go Back" diff --git a/config/locales/actions.fr.yml b/config/locales/actions.fr.yml index 4b3ac6901..92e16f21e 100644 --- a/config/locales/actions.fr.yml +++ b/config/locales/actions.fr.yml @@ -7,6 +7,7 @@ fr:      delete: 'Supprimer'      search: "Chercher"      submit: "Valider" +    processing: "En cours…"      add: 'Créer'      new: 'Créer'      show: 'Consulter' @@ -24,6 +25,7 @@ fr:      erase: 'Effacer'      create_api_key: "Créer une clé d'API"      select: Sélectionner +    wait_for_submission: "Validation..."    or: "ou"    cancel: "Annuler"    back: "Retour" diff --git a/config/locales/compliance_controls.en.yml b/config/locales/compliance_controls.en.yml index 3392afab5..ca9d83872 100644 --- a/config/locales/compliance_controls.en.yml +++ b/config/locales/compliance_controls.en.yml @@ -106,7 +106,7 @@ en:      vehicle_journey_control/vehicle_journey_at_stops:        messages:          3_vehiclejourney_5_1: "The vehicle journey with %{source_objectid} objectid has an arrival time %{error_value} greater than the departure time %{reference_value} at the stop point %{target_0_label} (%{target_0_objectid})" -        3_vehiclejourney_5_2: "The vehicle journey with %{source_objectid} objectid has an departure time %{error_value} at stop point %{target_0_label} (%{target_0_objectid}) greater than the arrival % at the next stop point" +        3_vehiclejourney_5_2: "The vehicle journey with %{source_objectid} objectid has an departure time %{error_value} at stop point %{target_0_label} (%{target_0_objectid}) greater than the arrival %{reference_value} at the next stop point"        description: "The arrival time of a stop point must be smaller than the departure time of this stop point AND the departure time of the stop points must be in chronological order"      routing_constraint_zone_control/vehicle_journey_at_stops:        messages: @@ -127,16 +127,16 @@ en:        prerequisite: Lign has multiple routes      generic_attribute_control/pattern:        messages: -        3_generic_1: "%{source_objectid} : the %{source_label} attribute value (%{error_value}) does not respect the following pattern : %{reference_value}" +        3_generic_1: "%{source_objectid} : the %{source_attribute} attribute value (%{error_value}) does not respect the following pattern : %{reference_value}"        description: "The object attribute must respect a patten (regular expression)"      generic_attribute_control/min_max:        messages: -        3_generic_2_1: "%{source_objectid}  : the %{source_label} attributes's value (%{error_value}) is greater than the authorized maximum value : %{reference_value}" -        3_generic_2_2: "%{source_objectid}  : the %{source_label} attributes's value (%{error_value}) is smaller than the authorized minimum value %{reference_value}" +        3_generic_2_1: "%{source_objectid}  : the %{source_attribute} attributes's value (%{error_value}) is greater than the authorized maximum value : %{reference_value}" +        3_generic_2_2: "%{source_objectid}  : the %{source_attribute} attributes's value (%{error_value}) is smaller than the authorized minimum value %{reference_value}"        description: "The numeric value of an attribute must be contained between 2 values"      generic_attribute_control/uniqueness:        messages: -        3_generic_3: "%{source_objectid}  : the %{source_label} attribute's value (%{error_value}) is in conflict with : %{reference_value}" +        3_generic_3: "%{source_objectid}  : the %{source_attribute} attribute (%{error_value}) has a value shared with : %{target_0_objectid}"        description: "The attribute's value must be unique compared to the other objects ofthe same type (related to the same line)"      shape_control:        3_shape_1: "Tracé %{source_objectid} : le tracé passe trop loin de l'arrêt %{target_0_label} (%{target_0_objectid}) : %{error_value} > %{reference_value}" diff --git a/config/locales/compliance_controls.fr.yml b/config/locales/compliance_controls.fr.yml index cde75aaf5..220f0dc48 100644 --- a/config/locales/compliance_controls.fr.yml +++ b/config/locales/compliance_controls.fr.yml @@ -91,8 +91,8 @@ fr:        description: "La durée d’attente, en minutes, à un arrêt ne doit pas être trop grande"      vehicle_journey_control/speed:        messages: -        3_vehiclejourney_2_1: "Sur la course %{source_objectid}, la vitesse calculée %{error_value} entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid}) est supérieur au seuil toléré (%{reference_value})" -        3_vehiclejourney_2_2: "Sur la course %{source_objectid}, la vitesse calculée %{error_value} entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid}) est inférieur au seuil toléré (%{reference_value})" +        3_vehiclejourney_2_1: "Sur la course %{source_objectid}, la vitesse calculée %{error_value} entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid}) est supérieure au seuil toléré (%{reference_value})" +        3_vehiclejourney_2_2: "Sur la course %{source_objectid}, la vitesse calculée %{error_value} entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid}) est inférieure au seuil toléré (%{reference_value})"        description: "La vitesse entre deux arrêts doit être dans une fourchette paramétrable"      vehicle_journey_control/delta:        messages: @@ -105,7 +105,7 @@ fr:      vehicle_journey_control/vehicle_journey_at_stops:        messages:          3_vehiclejourney_5_1: "La course %{source_objectid} a un horaire d'arrivé %{error_value} supérieur à l'horaire de départ %{reference_value} à l'arrêt %{target_0_label} (%{target_0_objectid})" -        3_vehiclejourney_5_2: "La course %{source_objectid} a un horaire de départ %{error_value} à l'arrêt %{target_0_label} (%{target_0_objectid}) supérieur à l'horaire d'arrivé % à l'arrêt suivant" +        3_vehiclejourney_5_2: "La course %{source_objectid} a un horaire de départ %{error_value} à l'arrêt %{target_0_label} (%{target_0_objectid}) supérieur à l'horaire d'arrivé %{reference_value} à l'arrêt suivant"        description: "L'horaire d'arrivée à un arrêt doit être antérieur à l'horaire de départ de cet arrêt ET les horaires de départ aux arrêts doivent être dans l'ordre chronologique croissant."      routing_constraint_zone_control/unactivated_stop_point:        messages: @@ -126,16 +126,16 @@ fr:        prerequisite: Ligne disposant de plusieurs itinéraires      generic_attribute_control/pattern:        messages: -        3_generic_1: "%{source_objectid} : l'attribut % à une valeur %{error_value} qui ne respecte pas le motif %{reference_value}" +        3_generic_1: "%{source_objectid} : l'attribut %{source_attribute} a une valeur %{error_value} qui ne respecte pas le motif %{reference_value}"        description: "l'attribut de l'objet doit respecter un motif (expression régulière)"      generic_attribute_control/min_max:        messages: -        3_generic_2_1: "%{source_objectid} : l'attribut %{source_label} à une valeur %{error_value} supérieure à la valeur maximale autorisée %{reference_value}" -        3_generic_2_2: "%{source_objectid} : l'attribut %{source_label} à une valeur %{error_value} inférieure à la valeur minimale autorisée %{reference_value}" +        3_generic_2_1: "%{source_objectid} : l'attribut %{source_attribute} a une valeur %{error_value} supérieure à la valeur maximale autorisée %{reference_value}" +        3_generic_2_2: "%{source_objectid} : l'attribut %{source_attribute} a une valeur %{error_value} inférieure à la valeur minimale autorisée %{reference_value}"        description: "La valeur numérique de l'attribut doit rester comprise entre 2 valeurs"      generic_attribute_control/uniqueness:        messages: -        3_generic_3: "%{source_objectid} : l'attribut %{source_label} à une valeur %{error_value}en conflit avec %{reference_value}" +        3_generic_3: "%{source_objectid} : l'attribut %{source_attribute} a une valeur %{error_value} partagée avec %{target_0_objectid}"        description: "La valeur de l'attribut doit être unique au sein des objets de la ligne"      shape_control:        3_shape_1: "Tracé %{source_objectid} : le tracé passe trop loin de l'arrêt %{target_0_label} (%{target_0_objectid}) : %{error_value} > %{reference_value}" diff --git a/config/locales/imports.en.yml b/config/locales/imports.en.yml index 462b17196..d9f1984fe 100644 --- a/config/locales/imports.en.yml +++ b/config/locales/imports.en.yml @@ -15,7 +15,7 @@ en:        title: "Imports"        warning: ""      new: -      title: "Imports" +      title: "Generate a new import"      show:        title: "Import %{name}"        report: "Report" diff --git a/config/locales/imports.fr.yml b/config/locales/imports.fr.yml index b545f90df..9795b2190 100644 --- a/config/locales/imports.fr.yml +++ b/config/locales/imports.fr.yml @@ -15,7 +15,7 @@ fr:        title: "Imports"        warning: ""      new: -      title: "Imports" +      title: "Générer un import"      show:        title: "Import %{name}"        report: "Rapport" diff --git a/config/locales/merges.yml b/config/locales/merges.yml index 1e2df2459..00af5f65d 100644 --- a/config/locales/merges.yml +++ b/config/locales/merges.yml @@ -4,6 +4,10 @@ fr:        title: "Finalisations de l'offre"      new:        title: "Nouvelle finalisation de l'offre" +    show: +      title: "Finalisation de l'offre %{name}" +    actions: +      create: "Finaliser des Jeux de Données"    activerecord:      models:        merge: "Finalisation de l'offre" @@ -11,7 +15,8 @@ fr:        merge:          created_at: "Créé le"          started_at: Démarrage +        name: Nom          ended_at: Achevé à          status: "Etat" -        creator: "Opérateur" +        creator: "Demandeur"          referentials: "Jeux de données" diff --git a/config/locales/workbenches.fr.yml b/config/locales/workbenches.fr.yml index eff53c2d6..58fc8e416 100644 --- a/config/locales/workbenches.fr.yml +++ b/config/locales/workbenches.fr.yml @@ -7,10 +7,11 @@ fr:        one: "1 jeu de données dans cet espace de travail"        other: "#{count} jeux de données dans cet espace de travail"      actions: -      show_output: "Offre finalisée" +      show_output: "Finaliser l'Offre"    workbench_outputs:      show:        title: "Finalisations de l'offre" +      see_current_output: "Voir l'Offre actuelle"    activerecord:      models:        workbench: diff --git a/config/schedule.rb b/config/schedule.rb index 8aa21076f..08488c255 100644 --- a/config/schedule.rb +++ b/config/schedule.rb @@ -42,3 +42,7 @@ end  every 5.minutes do    rake "import:notify_parent"  end + +every 1.minute do +  command "/bin/echo HeartBeat" +end diff --git a/config/secrets.yml.docker b/config/secrets.yml.docker new file mode 100644 index 000000000..1bef794a8 --- /dev/null +++ b/config/secrets.yml.docker @@ -0,0 +1,16 @@ +# Be sure to restart your server when you modify this file. + +# Your secret key is used for verifying the integrity of signed cookies. +# If you change this key, all old signed cookies will become invalid! + +# Make sure the secret is at least 30 characters and all random, +# no regular words or you'll be exposed to dictionary attacks. +# You can use `rake secret` to generate a secure secret key. + +# Make sure the secrets in this file are kept private +# if you're sharing your code publicly. + +<%= ENV.fetch 'RAILS_ENV', 'production' %>: +  secret_key_base: <%= ENV.fetch 'SECRET_KEY_BASE', 'change_this_string_for_something_more_secure' %> +  api_endpoint: <%= ENV.fetch 'IEV_API_ENDPOINT', 'http://iev:8080/chouette_iev/' %> +  api_token: <%= ENV.fetch 'IEV_API_TOKEN', 'change this according to IEV configuration' %> diff --git a/db/migrate/20180103084612_add_costs_to_journey_patterns.rb b/db/migrate/20180103084612_add_costs_to_journey_patterns.rb new file mode 100644 index 000000000..6795e3671 --- /dev/null +++ b/db/migrate/20180103084612_add_costs_to_journey_patterns.rb @@ -0,0 +1,5 @@ +class AddCostsToJourneyPatterns < ActiveRecord::Migration +  def change +    add_column :journey_patterns, :costs, :json +  end +end diff --git a/db/migrate/20180108132310_create_workgroups.rb b/db/migrate/20180108132310_create_workgroups.rb new file mode 100644 index 000000000..717f05856 --- /dev/null +++ b/db/migrate/20180108132310_create_workgroups.rb @@ -0,0 +1,11 @@ +class CreateWorkgroups < ActiveRecord::Migration +  def change +    create_table :workgroups do |t| +      t.string :name +      t.integer :line_referential_id,  limit: 8 +      t.integer :stop_area_referential_id, limit: 8 + +      t.timestamps null: false +    end +  end +end diff --git a/db/migrate/20180109133022_add_workgroup_id_to_workbenches.rb b/db/migrate/20180109133022_add_workgroup_id_to_workbenches.rb new file mode 100644 index 000000000..8736f7fbb --- /dev/null +++ b/db/migrate/20180109133022_add_workgroup_id_to_workbenches.rb @@ -0,0 +1,6 @@ +class AddWorkgroupIdToWorkbenches < ActiveRecord::Migration +  def change +    add_column :workbenches, :workgroup_id, :integer, limit: 8 +    add_index :workbenches, :workgroup_id +  end +end diff --git a/db/migrate/20180109144120_create_custom_fields.rb b/db/migrate/20180109144120_create_custom_fields.rb new file mode 100644 index 000000000..49df645c5 --- /dev/null +++ b/db/migrate/20180109144120_create_custom_fields.rb @@ -0,0 +1,14 @@ +class CreateCustomFields < ActiveRecord::Migration +  def change +    create_table :custom_fields do |t| +      t.string :code +      t.string :resource_type +      t.string :name +      t.string :field_type +      t.json :options +      t.bigint :workgroup_id + +      t.timestamps null: false +    end +  end +end diff --git a/db/migrate/20180109173815_add_index_resource_type_on_custom_fields.rb b/db/migrate/20180109173815_add_index_resource_type_on_custom_fields.rb new file mode 100644 index 000000000..326e85806 --- /dev/null +++ b/db/migrate/20180109173815_add_index_resource_type_on_custom_fields.rb @@ -0,0 +1,5 @@ +class AddIndexResourceTypeOnCustomFields < ActiveRecord::Migration +  def change +    add_index :custom_fields, :resource_type +  end +end diff --git a/db/migrate/20180109180350_add_custom_field_values_to_vehicle_journeys.rb b/db/migrate/20180109180350_add_custom_field_values_to_vehicle_journeys.rb new file mode 100644 index 000000000..873dc97d4 --- /dev/null +++ b/db/migrate/20180109180350_add_custom_field_values_to_vehicle_journeys.rb @@ -0,0 +1,5 @@ +class AddCustomFieldValuesToVehicleJourneys < ActiveRecord::Migration +  def change +    add_column :vehicle_journeys, :custom_field_values, :jsonb, default: {} +  end +end diff --git a/db/schema.rb b/db/schema.rb index 667b95c84..f55800c8b 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@  #  # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20171227113809) do +ActiveRecord::Schema.define(version: 20180109180350) do    # These are extensions that must be enabled in order to support this database    enable_extension "plpgsql" @@ -281,6 +281,19 @@ ActiveRecord::Schema.define(version: 20171227113809) do    add_index "connection_links", ["objectid"], name: "connection_links_objectid_key", unique: true, using: :btree +  create_table "custom_fields", id: :bigserial, force: :cascade do |t| +    t.string   "code" +    t.string   "resource_type" +    t.string   "name" +    t.string   "field_type" +    t.json     "options" +    t.integer  "workgroup_id",  limit: 8 +    t.datetime "created_at",              null: false +    t.datetime "updated_at",              null: false +  end + +  add_index "custom_fields", ["resource_type"], name: "index_custom_fields_on_resource_type", using: :btree +    create_table "exports", id: :bigserial, force: :cascade do |t|      t.integer  "referential_id",  limit: 8      t.string   "status" @@ -442,6 +455,7 @@ ActiveRecord::Schema.define(version: 20171227113809) do      t.string   "checksum"      t.text     "checksum_source"      t.string   "data_source_ref" +    t.json     "costs"    end    add_index "journey_patterns", ["objectid"], name: "journey_patterns_objectid_key", unique: true, using: :btree @@ -941,7 +955,7 @@ ActiveRecord::Schema.define(version: 20171227113809) do      t.integer  "route_id",                        limit: 8      t.integer  "journey_pattern_id",              limit: 8      t.integer  "company_id",                      limit: 8 -    t.string   "objectid",                                              null: false +    t.string   "objectid",                                               null: false      t.integer  "object_version",                  limit: 8      t.string   "comment"      t.string   "status_value" @@ -953,12 +967,13 @@ ActiveRecord::Schema.define(version: 20171227113809) do      t.integer  "number",                          limit: 8      t.boolean  "mobility_restricted_suitability"      t.boolean  "flexible_service" -    t.integer  "journey_category",                          default: 0, null: false +    t.integer  "journey_category",                          default: 0,  null: false      t.datetime "created_at"      t.datetime "updated_at"      t.string   "checksum"      t.text     "checksum_source"      t.string   "data_source_ref" +    t.jsonb    "custom_field_values",                       default: {}    end    add_index "vehicle_journeys", ["objectid"], name: "vehicle_journeys_objectid_key", unique: true, using: :btree @@ -984,11 +999,21 @@ ActiveRecord::Schema.define(version: 20171227113809) do      t.integer  "stop_area_referential_id", limit: 8      t.integer  "output_id",                limit: 8      t.string   "objectid_format" +    t.integer  "workgroup_id",             limit: 8    end    add_index "workbenches", ["line_referential_id"], name: "index_workbenches_on_line_referential_id", using: :btree    add_index "workbenches", ["organisation_id"], name: "index_workbenches_on_organisation_id", using: :btree    add_index "workbenches", ["stop_area_referential_id"], name: "index_workbenches_on_stop_area_referential_id", using: :btree +  add_index "workbenches", ["workgroup_id"], name: "index_workbenches_on_workgroup_id", using: :btree + +  create_table "workgroups", id: :bigserial, force: :cascade do |t| +    t.string   "name" +    t.integer  "line_referential_id",      limit: 8 +    t.integer  "stop_area_referential_id", limit: 8 +    t.datetime "created_at",                         null: false +    t.datetime "updated_at",                         null: false +  end    add_foreign_key "access_links", "access_points", name: "aclk_acpt_fkey"    add_foreign_key "api_keys", "organisations" diff --git a/db/seeds/stif.seeds.rb b/db/seeds/stif.seeds.rb index 464601557..c87bb7970 100644 --- a/db/seeds/stif.seeds.rb +++ b/db/seeds/stif.seeds.rb @@ -5,6 +5,13 @@  stop_area_referential = StopAreaReferential.find_or_create_by!(name: "Reflex", objectid_format: "stif_netex")  line_referential = LineReferential.find_or_create_by!(name: "CodifLigne", objectid_format: "stif_netex") +workgroup = Workgroup.find_or_create_by!(name: "Gestion de l'offre théorique IDFm") do |w| +  w.line_referential      = line_referential +  w.stop_area_referential = stop_area_referential +end + +Workbench.update_all workgroup_id: workgroup +  # Organisations  stif = Organisation.find_or_create_by!(code: "STIF") do |org|    org.name = 'STIF' diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..3c3367a01 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,73 @@ +version: "3.0" +services: +  front: +    image: registry.af83.io/stif-iboo:latest +    environment: +      RAILS_DB_HOST: "192.168.15.98" +      RAILS_DB_USER: "chouette" +      RAILS_DB_NAME: "chouette2" +      RAILS_DB_PASSWORD: "chouette" +      SECRET_KEY_BASE: "KSKSJDHF0QDKJDSfkSJDFKSJDfh98SDF" +      SIDEKIQ_REDIS_URL: "redis://redis:6379/12" +      MAIL_HOST: "iboo-rec.af83.priv" +      MAIL_ASSETS_URL_BASE: "http://iboo-rec.af83.priv" +      MAIL_FROM: "docker <infra+docker@af83.com>" +      SMTP_HOST: "mail.af83.priv" +      REDIS_CACHE_STORE: "redis://redis:6379/0/cache" +      SESAME_API_URL: '{"key":"1234567890azertyuiop","url":"http://172.28.100.18:3001/"}' +      AUTH_SETTINGS: '{"type":"cas","cas_server":"http://172.28.100.18:3001/sessions","cas_validate_url":"http://172.28.100.18:3001/sessions/proxyValidate"}' +    volumes: +      - /data/iboo/uploads:/app/public/uploads +    ports: +      - "3004:3000" +    restart: always +    depends_on: +      - redis +  async: +    image: registry.af83.io/stif-iboo:latest +    environment: +      RAILS_DB_HOST: "192.168.15.98" +      RAILS_DB_USER: "chouette" +      RAILS_DB_NAME: "chouette2" +      RAILS_DB_PASSWORD: "chouette" +      SECRET_KEY_BASE: "KSKSJDHF0QDKJDSfkSJDFKSJDfh98SDF" +      SIDEKIQ_REDIS_URL: "redis://redis:6379/12" +      MAIL_HOST: "iboo-rec.af83.priv" +      MAIL_ASSETS_URL_BASE: "http://iboo-rec.af83.priv" +      MAIL_FROM: "docker <infra+docker@af83.com>" +      SMTP_HOST: "mail.af83.priv" +      SESAME_API_URL: '{"key":"1234567890azertyuiop","url":"http://172.28.100.18:3001/"}' +      AUTH_SETTINGS: '{"type":"cas","cas_server":"http://172.28.100.18:3001/sessions","cas_validate_url":"http://172.28.100.18:3001/sessions/proxyValidate"}' +    command: bundle exec sidekiq -e production +    restart: always +    depends_on: +      - redis +  sync: +    image: registry.af83.io/stif-iboo:latest +    environment: +      RAILS_DB_HOST: "192.168.15.98" +      RAILS_DB_USER: "chouette" +      RAILS_DB_NAME: "chouette2" +      RAILS_DB_PASSWORD: "chouette" +      SECRET_KEY_BASE: "KSKSJDHF0QDKJDSfkSJDFKSJDfh98SDF" +      SIDEKIQ_REDIS_URL: "redis://redis:6379/12" +      MAIL_HOST: "iboo-rec.af83.priv" +      MAIL_ASSETS_URL_BASE: "http://iboo-rec.af83.priv" +      MAIL_FROM: "docker <infra+docker@af83.com>" +      SMTP_HOST: "mail.af83.priv" +      SESAME_API_URL: '{"key":"1234567890azertyuiop","url":"http://172.28.100.18:3001/"}' +      AUTH_SETTINGS: '{"type":"cas","cas_server":"http://172.28.100.18:3001/sessions","cas_validate_url":"http://172.28.100.18:3001/sessions/proxyValidate"}' +    command: bash launch-cron +    restart: always +    depends_on: +      - redis +  redis: +    image: redis:latest +#  db: +#    image: mdillon/postgis +#    environment: +#      POSTGRES_USER: iboo +#      POSTGRES_PASSWORD: stif_iboo_db +#    volumes: +#     - /data/iboo/postgresql:/var/lib/postgresql/data +#    restart: always diff --git a/lib/tasks/install.rake b/lib/tasks/install.rake index ccc6f2450..1150825b2 100644 --- a/lib/tasks/install.rake +++ b/lib/tasks/install.rake @@ -11,6 +11,7 @@ task :package do    sh "bundle exec rake assets:precompile RAILS_ENV=production"    sh "tar -rf tmp/package/stif-boiv-release-#{release_name}.tar vendor/cache"    sh "tar -rf tmp/package/stif-boiv-release-#{release_name}.tar public/assets" +  sh "tar -rf tmp/package/stif-boiv-release-#{release_name}.tar public/packs"    %w{deploy-helper.sh README sidekiq-stif-boiv.service stif-boiv.conf stif-boiv-setup.sh template-stif-boiv.sql}.each do |f|      cp "install/#{f}", "tmp/package/#{f}" @@ -21,3 +22,26 @@ task :package do    sh "tar -czf stif-boiv-#{release_name}.tar.gz -C tmp/package ."    sh "rm -rf tmp/package vendor/cache"  end + +desc "generate all-in-1 tar.gz package for docker" +task :pkg4docker do +  release_name = Time.now.strftime('%Y%m%d%H%M%S') + +  rm_rf "tmp/package" +  mkdir_p "tmp/package" + +  sh "git archive --format=tar --output=tmp/package/stif-boiv-release-#{release_name}.tar HEAD" + +  sh "bundle package --all" +#  sh "RAILS_DB_ADAPTER=nulldb bundle exec rake assets:clobber RAILS_ENV=production" +#  sh "RAILS_DB_ADAPTER=nulldb bundle exec rake assets:precompile RAILS_ENV=production" +  sh "bundle exec rake assets:clobber RAILS_ENV=production" +  sh "bundle exec rake assets:precompile RAILS_ENV=production" +  sh "tar -rf tmp/package/stif-boiv-release-#{release_name}.tar vendor/cache" +  sh "tar -rf tmp/package/stif-boiv-release-#{release_name}.tar public/assets" +  sh "tar -rf tmp/package/stif-boiv-release-#{release_name}.tar public/packs" + +  sh "gzip -c tmp/package/stif-boiv-release-#{release_name}.tar > tmp/stif-boiv-release.tar.gz" + +  sh "rm -rf tmp/package vendor/cache" +end diff --git a/package-lock.json b/package-lock.json index 8e72558d7..35d2de450 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3,10 +3,58 @@    "requires": true,    "lockfileVersion": 1,    "dependencies": { +    "@babel/code-frame": { +      "version": "7.0.0-beta.36", +      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.36.tgz", +      "integrity": "sha512-sW77BFwJ48YvQp3Gzz5xtAUiXuYOL2aMJKDwiaY3OcvdqBFurtYfOpSa4QrNyDxmOGRFSYzUpabU2m9QrlWE7w==", +      "dev": true, +      "requires": { +        "chalk": "2.3.0", +        "esutils": "2.0.2", +        "js-tokens": "3.0.2" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "dev": true, +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "dev": true, +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", +          "dev": true +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "dev": true, +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    },      "@rails/webpacker": { -      "version": "3.0.2", -      "resolved": "https://registry.npmjs.org/@rails/webpacker/-/webpacker-3.0.2.tgz", -      "integrity": "sha1-V0sCHB89cAtAqTRXbJvaxcn5x0Q=", +      "version": "3.2.0", +      "resolved": "https://registry.npmjs.org/@rails/webpacker/-/webpacker-3.2.0.tgz", +      "integrity": "sha512-SeeKl54LQs1YjwUlHr3I/Nz9OEludpVWe/dBXo1qJpFGs+99KsRE8flDlQ+B/YLJaF7n9W22PGRnbLS4TGsMiw==",        "requires": {          "babel-core": "6.26.0",          "babel-loader": "7.1.2", @@ -15,41 +63,22 @@          "babel-plugin-transform-object-rest-spread": "6.26.0",          "babel-polyfill": "6.26.0",          "babel-preset-env": "1.6.1", -        "coffee-loader": "0.8.0", -        "compression-webpack-plugin": "1.0.1", +        "case-sensitive-paths-webpack-plugin": "2.1.1", +        "compression-webpack-plugin": "1.1.3",          "css-loader": "0.28.7",          "extract-text-webpack-plugin": "3.0.2", -        "file-loader": "0.11.2", +        "file-loader": "1.1.6",          "glob": "7.1.2",          "js-yaml": "3.10.0",          "node-sass": "4.7.2",          "path-complete-extname": "0.1.0",          "postcss-cssnext": "3.0.2", +        "postcss-import": "11.0.0",          "postcss-loader": "2.0.9", -        "postcss-smart-import": "0.7.6", -        "rails-erb-loader": "5.2.1", -        "resolve-url-loader": "2.2.1",          "sass-loader": "6.0.6", -        "style-loader": "0.18.2", +        "style-loader": "0.19.1",          "webpack": "3.10.0",          "webpack-manifest-plugin": "1.3.2" -      }, -      "dependencies": { -        "babel-polyfill": { -          "version": "6.26.0", -          "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", -          "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", -          "requires": { -            "babel-runtime": "6.26.0", -            "core-js": "2.5.2", -            "regenerator-runtime": "0.10.5" -          } -        }, -        "regenerator-runtime": { -          "version": "0.10.5", -          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", -          "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" -        }        }      },      "@std/esm": { @@ -57,6 +86,12 @@        "resolved": "https://registry.npmjs.org/@std/esm/-/esm-0.16.0.tgz",        "integrity": "sha512-JokzOdnTmxUWJ81VWp0OuSR+VZGuvM9lmnefiPoeTwrOH/wworkRvwkXMpSuso0zYQ0LcbGUKLEdkoKwkYyohg=="      }, +    "@types/node": { +      "version": "8.5.2", +      "resolved": "https://registry.npmjs.org/@types/node/-/node-8.5.2.tgz", +      "integrity": "sha512-KA4GKOpgXnrqEH2eCVhiv2CsxgXGQJgV1X0vsGlh+WCnxbeAE1GT44ZsTU1IN5dEeV/gDupKa7gWo08V5IxWVQ==", +      "dev": true +    },      "abab": {        "version": "1.0.4",        "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", @@ -79,9 +114,9 @@        }      },      "acorn": { -      "version": "5.2.1", -      "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", -      "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==" +      "version": "5.3.0", +      "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz", +      "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug=="      },      "acorn-dynamic-import": {        "version": "2.0.2", @@ -99,68 +134,18 @@        }      },      "acorn-globals": { -      "version": "3.1.0", -      "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", -      "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", +      "version": "4.1.0", +      "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.1.0.tgz", +      "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==",        "dev": true,        "requires": { -        "acorn": "4.0.13" -      }, -      "dependencies": { -        "acorn": { -          "version": "4.0.13", -          "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", -          "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", -          "dev": true -        } -      } -    }, -    "adjust-sourcemap-loader": { -      "version": "1.1.0", -      "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-1.1.0.tgz", -      "integrity": "sha1-QS2SQE62HkETY1ASy6U6M9AI4OI=", -      "requires": { -        "assert": "1.4.1", -        "camelcase": "1.2.1", -        "loader-utils": "1.1.0", -        "lodash.assign": "4.2.0", -        "lodash.defaults": "3.1.2", -        "object-path": "0.9.2", -        "regex-parser": "2.2.8" -      }, -      "dependencies": { -        "camelcase": { -          "version": "1.2.1", -          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", -          "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" -        }, -        "lodash.defaults": { -          "version": "3.1.2", -          "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-3.1.2.tgz", -          "integrity": "sha1-xzCLGNv4vJNy1wGnNJPGEZK9Liw=", -          "requires": { -            "lodash.assign": "3.2.0", -            "lodash.restparam": "3.6.1" -          }, -          "dependencies": { -            "lodash.assign": { -              "version": "3.2.0", -              "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", -              "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", -              "requires": { -                "lodash._baseassign": "3.2.0", -                "lodash._createassigner": "3.1.1", -                "lodash.keys": "3.1.2" -              } -            } -          } -        } +        "acorn": "5.3.0"        }      },      "ajv": { -      "version": "5.5.1", -      "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz", -      "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=", +      "version": "5.5.2", +      "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", +      "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",        "requires": {          "co": "4.6.0",          "fast-deep-equal": "1.0.0", @@ -220,11 +205,6 @@        "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",        "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="      }, -    "any-promise": { -      "version": "0.1.0", -      "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-0.1.0.tgz", -      "integrity": "sha1-gwtoCqflbzNFHUsEnzvYBESY7ic=" -    },      "anymatch": {        "version": "1.3.2",        "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", @@ -370,9 +350,9 @@        "dev": true      },      "async": { -      "version": "2.4.1", -      "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", -      "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", +      "version": "2.6.0", +      "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", +      "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",        "requires": {          "lodash": "4.17.4"        } @@ -392,18 +372,13 @@        "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",        "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="      }, -    "atob": { -      "version": "1.1.3", -      "resolved": "https://registry.npmjs.org/atob/-/atob-1.1.3.tgz", -      "integrity": "sha1-lfE2KbEsOlGl0hWr3OKqnzL4B3M=" -    },      "autoprefixer": {        "version": "6.7.7",        "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz",        "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=",        "requires": {          "browserslist": "1.7.7", -        "caniuse-db": "1.0.30000782", +        "caniuse-db": "1.0.30000784",          "normalize-range": "0.1.2",          "num2fraction": "1.2.2",          "postcss": "5.2.18", @@ -415,8 +390,8 @@            "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",            "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",            "requires": { -            "caniuse-db": "1.0.30000782", -            "electron-to-chromium": "1.3.28" +            "caniuse-db": "1.0.30000784", +            "electron-to-chromium": "1.3.30"            }          }        } @@ -618,12 +593,12 @@        }      },      "babel-jest": { -      "version": "21.2.0", -      "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-21.2.0.tgz", -      "integrity": "sha512-O0W2qLoWu1QOoOGgxiR2JID4O6WSpxPiQanrkyi9SSlM0PJ60Ptzlck47lhtnr9YZO3zYOsxHwnyeWJ6AffoBQ==", +      "version": "22.0.4", +      "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-22.0.4.tgz", +      "integrity": "sha512-/Yt61fUpdFjetYlnpj280BPKEsPnK4mqzxDdo8DybPvrPNrLurbAF/WBjn2nnoi1Hc2Ippsf12/aOp8ys/Vl1A==",        "requires": {          "babel-plugin-istanbul": "4.1.5", -        "babel-preset-jest": "21.2.0" +        "babel-preset-jest": "22.0.3"        }      },      "babel-loader": { @@ -663,9 +638,9 @@        }      },      "babel-plugin-jest-hoist": { -      "version": "21.2.0", -      "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-21.2.0.tgz", -      "integrity": "sha512-yi5QuiVyyvhBUDLP4ButAnhYzkdrUwWDtvUJv71hjH3fclhnZg4HkDeqaitcR2dZZx/E67kGkRcPVjtVu+SJfQ==" +      "version": "22.0.3", +      "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.0.3.tgz", +      "integrity": "sha512-Z0pOZFs0xDctwF0bPEKrnAzvbbgDi2vDFbQ0EdofnLI2bOa3P1H66gNLb2vMJJaa00VDjfiGhIocsHvBkqtyEQ=="      },      "babel-plugin-syntax-async-functions": {        "version": "6.13.0", @@ -1022,19 +997,19 @@        }      },      "babel-polyfill": { -      "version": "6.16.0", -      "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.16.0.tgz", -      "integrity": "sha1-LUUCHfh+JqN0ttTRqcZZZNF/JCI=", +      "version": "6.26.0", +      "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", +      "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=",        "requires": {          "babel-runtime": "6.26.0",          "core-js": "2.5.2", -        "regenerator-runtime": "0.9.6" +        "regenerator-runtime": "0.10.5"        },        "dependencies": {          "regenerator-runtime": { -          "version": "0.9.6", -          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz", -          "integrity": "sha1-0z65XQ0gAaS+OWWXB8UbDLcc4Ck=" +          "version": "0.10.5", +          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", +          "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg="          }        }      }, @@ -1076,9 +1051,9 @@        }      },      "babel-preset-es2015": { -      "version": "6.18.0", -      "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.18.0.tgz", -      "integrity": "sha1-uMcN+E7JSMQ9zyv3cOmI632ogxI=", +      "version": "6.24.1", +      "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", +      "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=",        "requires": {          "babel-plugin-check-es2015-constants": "6.22.0",          "babel-plugin-transform-es2015-arrow-functions": "6.22.0", @@ -1115,11 +1090,11 @@        }      },      "babel-preset-jest": { -      "version": "21.2.0", -      "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-21.2.0.tgz", -      "integrity": "sha512-hm9cBnr2h3J7yXoTtAVV0zg+3vg0Q/gT2GYuzlreTU0EPkJRtlNgKJJ3tBKEn0+VjAi3JykV6xCJkuUYttEEfA==", +      "version": "22.0.3", +      "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-22.0.3.tgz", +      "integrity": "sha512-FbMMniSMXFvkKldCf+e4Tuol/v3XMaIpIp8xiT1WFlEW3ZapTKDW9YgVt3hqcpZXsIGFf6eUF3Owxom7yFlI8w==",        "requires": { -        "babel-plugin-jest-hoist": "21.2.0", +        "babel-plugin-jest-hoist": "22.0.3",          "babel-plugin-syntax-object-rest-spread": "6.13.0"        }      }, @@ -1199,13 +1174,9 @@        }      },      "babelify": { -      "version": "7.3.0", -      "resolved": "https://registry.npmjs.org/babelify/-/babelify-7.3.0.tgz", -      "integrity": "sha1-qlau3nBn/XvVSWZu4W3ChQh+iOU=", -      "requires": { -        "babel-core": "6.26.0", -        "object-assign": "4.1.1" -      } +      "version": "8.0.0", +      "resolved": "https://registry.npmjs.org/babelify/-/babelify-8.0.0.tgz", +      "integrity": "sha512-xVr63fKEvMWUrrIbqlHYsMcc5Zdw4FSVesAHgkgajyCE1W8gbm9rbMakqavhxKvikGYMhEcqxTwB/gQmQ6lBtw=="      },      "babylon": {        "version": "6.18.0", @@ -1247,6 +1218,13 @@        "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz",        "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU="      }, +    "bindings": { +      "version": "1.3.0", +      "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz", +      "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw==", +      "dev": true, +      "optional": true +    },      "block-stream": {        "version": "0.0.9",        "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", @@ -1255,6 +1233,11 @@          "inherits": "2.0.3"        }      }, +    "bluebird": { +      "version": "3.5.1", +      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", +      "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" +    },      "bn.js": {        "version": "4.11.8",        "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", @@ -1337,6 +1320,12 @@        "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",        "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8="      }, +    "browser-process-hrtime": { +      "version": "0.1.2", +      "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz", +      "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=", +      "dev": true +    },      "browser-resolve": {        "version": "1.11.2",        "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", @@ -1423,8 +1412,8 @@        "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.10.0.tgz",        "integrity": "sha512-WyvzSLsuAVPOjbljXnyeWl14Ae+ukAT8MUuagKVzIDvwBxl4UAwD1xqtyQs2eWYPGUKMeC3Ol62goqYuKqTTcw==",        "requires": { -        "caniuse-lite": "1.0.30000782", -        "electron-to-chromium": "1.3.28" +        "caniuse-lite": "1.0.30000784", +        "electron-to-chromium": "1.3.30"        }      },      "bser": { @@ -1473,6 +1462,26 @@        "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",        "dev": true      }, +    "cacache": { +      "version": "10.0.1", +      "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.1.tgz", +      "integrity": "sha512-dRHYcs9LvG9cHgdPzjiI+/eS7e1xRhULrcyOx04RZQsszNJXU2SL9CyG60yLnge282Qq5nwTv+ieK2fH+WPZmA==", +      "requires": { +        "bluebird": "3.5.1", +        "chownr": "1.0.1", +        "glob": "7.1.2", +        "graceful-fs": "4.1.11", +        "lru-cache": "4.1.1", +        "mississippi": "1.3.0", +        "mkdirp": "0.5.1", +        "move-concurrently": "1.0.1", +        "promise-inflight": "1.0.1", +        "rimraf": "2.6.2", +        "ssri": "5.0.0", +        "unique-filename": "1.1.0", +        "y18n": "3.2.1" +      } +    },      "callsites": {        "version": "2.0.0",        "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", @@ -1499,7 +1508,7 @@        "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=",        "requires": {          "browserslist": "1.7.7", -        "caniuse-db": "1.0.30000782", +        "caniuse-db": "1.0.30000784",          "lodash.memoize": "4.1.2",          "lodash.uniq": "4.5.0"        }, @@ -1509,21 +1518,26 @@            "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",            "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",            "requires": { -            "caniuse-db": "1.0.30000782", -            "electron-to-chromium": "1.3.28" +            "caniuse-db": "1.0.30000784", +            "electron-to-chromium": "1.3.30"            }          }        }      },      "caniuse-db": { -      "version": "1.0.30000782", -      "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000782.tgz", -      "integrity": "sha1-2IFbzhV4w1Cs7REyUHMBIF4Pq1M=" +      "version": "1.0.30000784", +      "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000784.tgz", +      "integrity": "sha1-G+lQEtlInHcZB0+BruV9vf/mNhs="      },      "caniuse-lite": { -      "version": "1.0.30000782", -      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000782.tgz", -      "integrity": "sha1-W4K4w4XyU0h0XEccpRMgr7G38lQ=" +      "version": "1.0.30000784", +      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000784.tgz", +      "integrity": "sha1-EpztdOmhKApEGIC2zSvOMO9Z5sA=" +    }, +    "case-sensitive-paths-webpack-plugin": { +      "version": "2.1.1", +      "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.1.1.tgz", +      "integrity": "sha1-PSnO2MHxJL9vU4Rvs/WJRzH9yQk="      },      "caseless": {        "version": "0.11.0", @@ -1574,6 +1588,11 @@          "readdirp": "2.1.0"        }      }, +    "chownr": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", +      "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=" +    },      "ci-info": {        "version": "1.1.2",        "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz", @@ -1650,18 +1669,10 @@        "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",        "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="      }, -    "coffee-loader": { -      "version": "0.8.0", -      "resolved": "https://registry.npmjs.org/coffee-loader/-/coffee-loader-0.8.0.tgz", -      "integrity": "sha512-jMxsuxagYouuhTcf1EoLz8pONTIl5gwuyIdTIOCuArGLQiNc2fS6G7KfTfadb8+hiOfwslhD60wjih2knTnAww==", -      "requires": { -        "loader-utils": "1.1.0" -      } -    },      "coffeescript": { -      "version": "1.12.7", -      "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.12.7.tgz", -      "integrity": "sha512-pLXHFxQMPklVoEekowk8b3erNynC+DVJzChxS/LCBBgR6/8AJkHivkm//zbowcfc7BTCAjryuhx6gPqPRfsFoA==" +      "version": "2.1.0", +      "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-2.1.0.tgz", +      "integrity": "sha512-RuEF4gFUV9QSFPREl8gx6w0vS6Ncnr0Nd71lOmxSHfKQFQI66meE54Y636TACbe55j2Lwi6R1O8lOa0dD550GA=="      },      "color": {        "version": "0.11.4", @@ -1752,11 +1763,14 @@        }      },      "compression-webpack-plugin": { -      "version": "1.0.1", -      "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-1.0.1.tgz", -      "integrity": "sha512-ABF2AFb31gpIBeEy/w6Ct0u+K+jY8jFRfGwjUWGxVTidA9pf7iH/JzjcVBQ+KB1gNMycujMxA56/PznMPUV5jw==", +      "version": "1.1.3", +      "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-1.1.3.tgz", +      "integrity": "sha512-DIvTIkihu1tyoPdoan5Lh9GVvXgcNMDEgXSfyjlAriW3UaILoPhUFHFTU7Zsui+rPEexmFNlTyiLe0TCkQFJGg==",        "requires": { -        "async": "2.4.1", +        "async": "2.6.0", +        "cacache": "10.0.1", +        "find-cache-dir": "1.0.0", +        "serialize-javascript": "1.4.0",          "webpack-sources": "1.1.0"        }      }, @@ -1765,6 +1779,16 @@        "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",        "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="      }, +    "concat-stream": { +      "version": "1.6.0", +      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", +      "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", +      "requires": { +        "inherits": "2.0.3", +        "readable-stream": "2.3.3", +        "typedarray": "0.0.6" +      } +    },      "connect-history-api-fallback": {        "version": "1.5.0",        "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", @@ -1824,6 +1848,19 @@        "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",        "dev": true      }, +    "copy-concurrently": { +      "version": "1.0.5", +      "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", +      "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", +      "requires": { +        "aproba": "1.2.0", +        "fs-write-stream-atomic": "1.0.10", +        "iferr": "0.1.5", +        "mkdirp": "0.5.1", +        "rimraf": "2.6.2", +        "run-queue": "1.0.3" +      } +    },      "core-js": {        "version": "2.5.2",        "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.2.tgz", @@ -1923,27 +1960,6 @@          "randomfill": "1.0.3"        }      }, -    "css": { -      "version": "2.2.1", -      "resolved": "https://registry.npmjs.org/css/-/css-2.2.1.tgz", -      "integrity": "sha1-c6TIHehdtmTU7mdPfUcIXjstVdw=", -      "requires": { -        "inherits": "2.0.3", -        "source-map": "0.1.43", -        "source-map-resolve": "0.3.1", -        "urix": "0.1.0" -      }, -      "dependencies": { -        "source-map": { -          "version": "0.1.43", -          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", -          "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", -          "requires": { -            "amdefine": "1.0.1" -          } -        } -      } -    },      "css-color-function": {        "version": "1.3.3",        "resolved": "https://registry.npmjs.org/css-color-function/-/css-color-function-1.3.3.tgz", @@ -2099,6 +2115,11 @@          "array-find-index": "1.0.2"        }      }, +    "cyclist": { +      "version": "0.2.2", +      "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", +      "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=" +    },      "d": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", @@ -2151,9 +2172,9 @@        "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="      },      "deep-diff": { -      "version": "0.3.4", -      "resolved": "https://registry.npmjs.org/deep-diff/-/deep-diff-0.3.4.tgz", -      "integrity": "sha1-qsXDmVIjar5fA3ojSQYLoBsArkg=" +      "version": "0.3.8", +      "resolved": "https://registry.npmjs.org/deep-diff/-/deep-diff-0.3.8.tgz", +      "integrity": "sha1-wB3mPvsO7JeYgB1Ax+Da4ltYLIQ="      },      "deep-equal": {        "version": "1.0.1", @@ -2244,6 +2265,12 @@          "repeating": "2.0.1"        }      }, +    "detect-newline": { +      "version": "2.1.0", +      "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", +      "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", +      "dev": true +    },      "detect-node": {        "version": "2.0.3",        "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", @@ -2296,6 +2323,23 @@        "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz",        "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw="      }, +    "domexception": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.0.tgz", +      "integrity": "sha512-WpwuBlZ2lQRFa4H/4w49deb9rJLot9KmqrKKjMc9qBl7CID+DdC2swoa34ccRl+anL2B6bLp6TjFdIdnzekMBQ==", +      "dev": true +    }, +    "duplexify": { +      "version": "3.5.1", +      "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz", +      "integrity": "sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==", +      "requires": { +        "end-of-stream": "1.4.0", +        "inherits": "2.0.3", +        "readable-stream": "2.3.3", +        "stream-shift": "1.0.0" +      } +    },      "ecc-jsbn": {        "version": "0.1.1",        "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", @@ -2311,10 +2355,18 @@        "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",        "dev": true      }, +    "electron-releases": { +      "version": "2.1.0", +      "resolved": "https://registry.npmjs.org/electron-releases/-/electron-releases-2.1.0.tgz", +      "integrity": "sha512-cyKFD1bTE/UgULXfaueIN1k5EPFzs+FRc/rvCY5tIynefAPqopQEgjr0EzY+U3Dqrk/G4m9tXSPuZ77v6dL/Rw==" +    },      "electron-to-chromium": { -      "version": "1.3.28", -      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.28.tgz", -      "integrity": "sha1-jdTmRYCGZE6fnwoc8y4qH53/2e4=" +      "version": "1.3.30", +      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.30.tgz", +      "integrity": "sha512-zx1Prv7kYLfc4OA60FhxGbSo4qrEjgSzpo1/37i7l9ltXPYOoQBtjQxY9KmsgfHnBxHlBGXwLlsbt/gub1w5lw==", +      "requires": { +        "electron-releases": "2.1.0" +      }      },      "elliptic": {        "version": "6.4.0", @@ -2349,6 +2401,14 @@          "iconv-lite": "0.4.19"        }      }, +    "end-of-stream": { +      "version": "1.4.0", +      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", +      "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", +      "requires": { +        "once": "1.4.0" +      } +    },      "enhanced-resolve": {        "version": "3.4.1",        "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", @@ -2361,9 +2421,9 @@        }      },      "errno": { -      "version": "0.1.5", -      "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.5.tgz", -      "integrity": "sha512-tv2H+e3KBnMmNRuoVG24uorOj3XfYo+/nJJd07PUISRr0kaMKQKL5kyD+6ANXk1ZIIsvbORsjvHnCfC4KIc7uQ==", +      "version": "0.1.6", +      "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.6.tgz", +      "integrity": "sha512-IsORQDpaaSwcDP4ZZnHxgE85werpo34VYn1Ud3mq+eUsF593faR8oCZNXrROVkpFu2TsbrNhHin0aUrTsQ9vNw==",        "requires": {          "prr": "1.0.1"        } @@ -2433,9 +2493,9 @@        }      },      "es6-object-assign": { -      "version": "1.0.3", -      "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.0.3.tgz", -      "integrity": "sha1-QKGS4P2l7kTujPb1tdm0fND2mxQ=", +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", +      "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=",        "dev": true      },      "es6-set": { @@ -2645,17 +2705,17 @@        }      },      "expect": { -      "version": "21.2.1", -      "resolved": "https://registry.npmjs.org/expect/-/expect-21.2.1.tgz", -      "integrity": "sha512-orfQQqFRTX0jH7znRIGi8ZMR8kTNpXklTTz8+HGTpmTKZo3Occ6JNB5FXMb8cRuiiC/GyDqsr30zUa66ACYlYw==", +      "version": "22.0.3", +      "resolved": "https://registry.npmjs.org/expect/-/expect-22.0.3.tgz", +      "integrity": "sha512-QapzeQkcA3jCx4pDnD07I4SPPxScKbey8TD/WwrnzmpHmL5q0dUtXfUt5OIFOjVBCg+C4zn4Y1zK9Rb9SIDL1g==",        "dev": true,        "requires": {          "ansi-styles": "3.2.0", -        "jest-diff": "21.2.1", -        "jest-get-type": "21.2.0", -        "jest-matcher-utils": "21.2.1", -        "jest-message-util": "21.2.1", -        "jest-regex-util": "21.2.0" +        "jest-diff": "22.0.3", +        "jest-get-type": "22.0.3", +        "jest-matcher-utils": "22.0.3", +        "jest-message-util": "22.0.3", +        "jest-regex-util": "22.0.3"        },        "dependencies": {          "ansi-styles": { @@ -2713,6 +2773,12 @@            "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",            "dev": true          }, +        "path-to-regexp": { +          "version": "0.1.7", +          "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", +          "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", +          "dev": true +        },          "qs": {            "version": "6.5.1",            "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", @@ -2739,7 +2805,7 @@        "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz",        "integrity": "sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==",        "requires": { -        "async": "2.4.1", +        "async": "2.6.0",          "loader-utils": "1.1.0",          "schema-utils": "0.3.0",          "webpack-sources": "1.1.0" @@ -2811,11 +2877,12 @@        }      },      "file-loader": { -      "version": "0.11.2", -      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.11.2.tgz", -      "integrity": "sha512-N+uhF3mswIFeziHQjGScJ/yHXYt3DiLBeC+9vWW+WjUBiClMSOlV1YrXQi+7KM2aA3Rn4Bybgv+uXFQbfkzpvg==", +      "version": "1.1.6", +      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.6.tgz", +      "integrity": "sha512-873ztuL+/hfvXbLDJ262PGO6XjERnybJu2gW1/5j8HUfxSiFJI9Hj/DhZ50ZGRUxBvuNiazb/cM2rh9pqrxP6Q==",        "requires": { -        "loader-utils": "1.1.0" +        "loader-utils": "1.1.0", +        "schema-utils": "0.3.0"        }      },      "filename-regex": { @@ -2917,6 +2984,15 @@        "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz",        "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I="      }, +    "flush-write-stream": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.2.tgz", +      "integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=", +      "requires": { +        "inherits": "2.0.3", +        "readable-stream": "2.3.3" +      } +    },      "flux-standard-action": {        "version": "0.6.1",        "resolved": "https://registry.npmjs.org/flux-standard-action/-/flux-standard-action-0.6.1.tgz", @@ -2960,12 +3036,12 @@        }      },      "formatio": { -      "version": "1.1.1", -      "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.1.1.tgz", -      "integrity": "sha1-XtPM1jZVEJc4NGXZlhmRAOhhYek=", +      "version": "1.2.0", +      "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", +      "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=",        "dev": true,        "requires": { -        "samsam": "1.1.2" +        "samsam": "1.3.0"        }      },      "forwarded": { @@ -2980,6 +3056,15 @@        "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",        "dev": true      }, +    "from2": { +      "version": "2.3.0", +      "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", +      "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", +      "requires": { +        "inherits": "2.0.3", +        "readable-stream": "2.3.3" +      } +    },      "fs-extra": {        "version": "0.30.0",        "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", @@ -2992,6 +3077,17 @@          "rimraf": "2.6.2"        }      }, +    "fs-write-stream-atomic": { +      "version": "1.0.10", +      "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", +      "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", +      "requires": { +        "graceful-fs": "4.1.11", +        "iferr": "0.1.5", +        "imurmurhash": "0.1.4", +        "readable-stream": "2.3.3" +      } +    },      "fs.realpath": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -3009,14 +3105,12 @@        "dependencies": {          "abbrev": {            "version": "1.1.0", -          "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", -          "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", +          "bundled": true,            "optional": true          },          "ajv": {            "version": "4.11.8", -          "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", -          "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", +          "bundled": true,            "optional": true,            "requires": {              "co": "4.6.0", @@ -3025,19 +3119,16 @@          },          "ansi-regex": {            "version": "2.1.1", -          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", -          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" +          "bundled": true          },          "aproba": {            "version": "1.1.1", -          "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz", -          "integrity": "sha1-ldNgDwdxCqDpKYxyatXs8urLq6s=", +          "bundled": true,            "optional": true          },          "are-we-there-yet": {            "version": "1.1.4", -          "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", -          "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", +          "bundled": true,            "optional": true,            "requires": {              "delegates": "1.0.0", @@ -3046,43 +3137,36 @@          },          "asn1": {            "version": "0.2.3", -          "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", -          "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", +          "bundled": true,            "optional": true          },          "assert-plus": {            "version": "0.2.0", -          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", -          "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", +          "bundled": true,            "optional": true          },          "asynckit": {            "version": "0.4.0", -          "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", -          "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", +          "bundled": true,            "optional": true          },          "aws-sign2": {            "version": "0.6.0", -          "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", -          "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", +          "bundled": true,            "optional": true          },          "aws4": {            "version": "1.6.0", -          "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", -          "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", +          "bundled": true,            "optional": true          },          "balanced-match": {            "version": "0.4.2", -          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", -          "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" +          "bundled": true          },          "bcrypt-pbkdf": {            "version": "1.0.1", -          "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", -          "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", +          "bundled": true,            "optional": true,            "requires": {              "tweetnacl": "0.14.5" @@ -3090,24 +3174,21 @@          },          "block-stream": {            "version": "0.0.9", -          "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", -          "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", +          "bundled": true,            "requires": {              "inherits": "2.0.3"            }          },          "boom": {            "version": "2.10.1", -          "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", -          "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", +          "bundled": true,            "requires": {              "hoek": "2.16.3"            }          },          "brace-expansion": {            "version": "1.1.7", -          "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", -          "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", +          "bundled": true,            "requires": {              "balanced-match": "0.4.2",              "concat-map": "0.0.1" @@ -3115,61 +3196,51 @@          },          "buffer-shims": {            "version": "1.0.0", -          "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", -          "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" +          "bundled": true          },          "caseless": {            "version": "0.12.0", -          "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", -          "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", +          "bundled": true,            "optional": true          },          "co": {            "version": "4.6.0", -          "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", -          "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", +          "bundled": true,            "optional": true          },          "code-point-at": {            "version": "1.1.0", -          "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", -          "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" +          "bundled": true          },          "combined-stream": {            "version": "1.0.5", -          "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", -          "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", +          "bundled": true,            "requires": {              "delayed-stream": "1.0.0"            }          },          "concat-map": {            "version": "0.0.1", -          "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", -          "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" +          "bundled": true          },          "console-control-strings": {            "version": "1.1.0", -          "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", -          "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" +          "bundled": true          },          "core-util-is": {            "version": "1.0.2", -          "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", -          "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" +          "bundled": true          },          "cryptiles": {            "version": "2.0.5", -          "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", -          "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", +          "bundled": true,            "requires": {              "boom": "2.10.1"            }          },          "dashdash": {            "version": "1.14.1", -          "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", -          "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", +          "bundled": true,            "optional": true,            "requires": {              "assert-plus": "1.0.0" @@ -3177,16 +3248,14 @@            "dependencies": {              "assert-plus": {                "version": "1.0.0", -              "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", -              "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", +              "bundled": true,                "optional": true              }            }          },          "debug": {            "version": "2.6.8", -          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", -          "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", +          "bundled": true,            "optional": true,            "requires": {              "ms": "2.0.0" @@ -3194,31 +3263,26 @@          },          "deep-extend": {            "version": "0.4.2", -          "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", -          "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", +          "bundled": true,            "optional": true          },          "delayed-stream": {            "version": "1.0.0", -          "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", -          "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" +          "bundled": true          },          "delegates": {            "version": "1.0.0", -          "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", -          "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", +          "bundled": true,            "optional": true          },          "detect-libc": {            "version": "1.0.2", -          "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.2.tgz", -          "integrity": "sha1-ca1dIEvxempsqPRQxhRUBm70YeE=", +          "bundled": true,            "optional": true          },          "ecc-jsbn": {            "version": "0.1.1", -          "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", -          "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", +          "bundled": true,            "optional": true,            "requires": {              "jsbn": "0.1.1" @@ -3226,25 +3290,21 @@          },          "extend": {            "version": "3.0.1", -          "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", -          "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", +          "bundled": true,            "optional": true          },          "extsprintf": {            "version": "1.0.2", -          "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", -          "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=" +          "bundled": true          },          "forever-agent": {            "version": "0.6.1", -          "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", -          "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", +          "bundled": true,            "optional": true          },          "form-data": {            "version": "2.1.4", -          "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", -          "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", +          "bundled": true,            "optional": true,            "requires": {              "asynckit": "0.4.0", @@ -3254,13 +3314,11 @@          },          "fs.realpath": {            "version": "1.0.0", -          "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", -          "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" +          "bundled": true          },          "fstream": {            "version": "1.0.11", -          "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", -          "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", +          "bundled": true,            "requires": {              "graceful-fs": "4.1.11",              "inherits": "2.0.3", @@ -3270,8 +3328,7 @@          },          "fstream-ignore": {            "version": "1.0.5", -          "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", -          "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", +          "bundled": true,            "optional": true,            "requires": {              "fstream": "1.0.11", @@ -3281,8 +3338,7 @@          },          "gauge": {            "version": "2.7.4", -          "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", -          "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", +          "bundled": true,            "optional": true,            "requires": {              "aproba": "1.1.1", @@ -3297,8 +3353,7 @@          },          "getpass": {            "version": "0.1.7", -          "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", -          "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", +          "bundled": true,            "optional": true,            "requires": {              "assert-plus": "1.0.0" @@ -3306,16 +3361,14 @@            "dependencies": {              "assert-plus": {                "version": "1.0.0", -              "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", -              "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", +              "bundled": true,                "optional": true              }            }          },          "glob": {            "version": "7.1.2", -          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", -          "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", +          "bundled": true,            "requires": {              "fs.realpath": "1.0.0",              "inflight": "1.0.6", @@ -3327,19 +3380,16 @@          },          "graceful-fs": {            "version": "4.1.11", -          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", -          "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" +          "bundled": true          },          "har-schema": {            "version": "1.0.5", -          "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", -          "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", +          "bundled": true,            "optional": true          },          "har-validator": {            "version": "4.2.1", -          "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", -          "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", +          "bundled": true,            "optional": true,            "requires": {              "ajv": "4.11.8", @@ -3348,14 +3398,12 @@          },          "has-unicode": {            "version": "2.0.1", -          "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", -          "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", +          "bundled": true,            "optional": true          },          "hawk": {            "version": "3.1.3", -          "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", -          "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", +          "bundled": true,            "requires": {              "boom": "2.10.1",              "cryptiles": "2.0.5", @@ -3365,13 +3413,11 @@          },          "hoek": {            "version": "2.16.3", -          "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", -          "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" +          "bundled": true          },          "http-signature": {            "version": "1.1.1", -          "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", -          "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", +          "bundled": true,            "optional": true,            "requires": {              "assert-plus": "0.2.0", @@ -3381,8 +3427,7 @@          },          "inflight": {            "version": "1.0.6", -          "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", -          "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", +          "bundled": true,            "requires": {              "once": "1.4.0",              "wrappy": "1.0.2" @@ -3390,44 +3435,37 @@          },          "inherits": {            "version": "2.0.3", -          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", -          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" +          "bundled": true          },          "ini": {            "version": "1.3.4", -          "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", -          "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", +          "bundled": true,            "optional": true          },          "is-fullwidth-code-point": {            "version": "1.0.0", -          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", -          "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", +          "bundled": true,            "requires": {              "number-is-nan": "1.0.1"            }          },          "is-typedarray": {            "version": "1.0.0", -          "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", -          "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", +          "bundled": true,            "optional": true          },          "isarray": {            "version": "1.0.0", -          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", -          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" +          "bundled": true          },          "isstream": {            "version": "0.1.2", -          "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", -          "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", +          "bundled": true,            "optional": true          },          "jodid25519": {            "version": "1.0.2", -          "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", -          "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", +          "bundled": true,            "optional": true,            "requires": {              "jsbn": "0.1.1" @@ -3435,20 +3473,17 @@          },          "jsbn": {            "version": "0.1.1", -          "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", -          "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", +          "bundled": true,            "optional": true          },          "json-schema": {            "version": "0.2.3", -          "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", -          "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", +          "bundled": true,            "optional": true          },          "json-stable-stringify": {            "version": "1.0.1", -          "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", -          "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", +          "bundled": true,            "optional": true,            "requires": {              "jsonify": "0.0.0" @@ -3456,20 +3491,17 @@          },          "json-stringify-safe": {            "version": "5.0.1", -          "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", -          "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", +          "bundled": true,            "optional": true          },          "jsonify": {            "version": "0.0.0", -          "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", -          "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", +          "bundled": true,            "optional": true          },          "jsprim": {            "version": "1.4.0", -          "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", -          "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", +          "bundled": true,            "optional": true,            "requires": {              "assert-plus": "1.0.0", @@ -3480,56 +3512,48 @@            "dependencies": {              "assert-plus": {                "version": "1.0.0", -              "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", -              "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", +              "bundled": true,                "optional": true              }            }          },          "mime-db": {            "version": "1.27.0", -          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", -          "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=" +          "bundled": true          },          "mime-types": {            "version": "2.1.15", -          "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", -          "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", +          "bundled": true,            "requires": {              "mime-db": "1.27.0"            }          },          "minimatch": {            "version": "3.0.4", -          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", -          "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", +          "bundled": true,            "requires": {              "brace-expansion": "1.1.7"            }          },          "minimist": {            "version": "0.0.8", -          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", -          "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" +          "bundled": true          },          "mkdirp": {            "version": "0.5.1", -          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", -          "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", +          "bundled": true,            "requires": {              "minimist": "0.0.8"            }          },          "ms": {            "version": "2.0.0", -          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", -          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", +          "bundled": true,            "optional": true          },          "node-pre-gyp": {            "version": "0.6.39", -          "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz", -          "integrity": "sha512-OsJV74qxnvz/AMGgcfZoDaeDXKD3oY3QVIbBmwszTFkRisTSXbMQyn4UWzUMOtA5SVhrBZOTp0wcoSBgfMfMmQ==", +          "bundled": true,            "optional": true,            "requires": {              "detect-libc": "1.0.2", @@ -3547,8 +3571,7 @@          },          "nopt": {            "version": "4.0.1", -          "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", -          "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", +          "bundled": true,            "optional": true,            "requires": {              "abbrev": "1.1.0", @@ -3557,8 +3580,7 @@          },          "npmlog": {            "version": "4.1.0", -          "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", -          "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", +          "bundled": true,            "optional": true,            "requires": {              "are-we-there-yet": "1.1.4", @@ -3569,45 +3591,38 @@          },          "number-is-nan": {            "version": "1.0.1", -          "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", -          "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" +          "bundled": true          },          "oauth-sign": {            "version": "0.8.2", -          "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", -          "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", +          "bundled": true,            "optional": true          },          "object-assign": {            "version": "4.1.1", -          "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", -          "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", +          "bundled": true,            "optional": true          },          "once": {            "version": "1.4.0", -          "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", -          "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", +          "bundled": true,            "requires": {              "wrappy": "1.0.2"            }          },          "os-homedir": {            "version": "1.0.2", -          "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", -          "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", +          "bundled": true,            "optional": true          },          "os-tmpdir": {            "version": "1.0.2", -          "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", -          "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", +          "bundled": true,            "optional": true          },          "osenv": {            "version": "0.1.4", -          "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", -          "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", +          "bundled": true,            "optional": true,            "requires": {              "os-homedir": "1.0.2", @@ -3616,36 +3631,30 @@          },          "path-is-absolute": {            "version": "1.0.1", -          "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", -          "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" +          "bundled": true          },          "performance-now": {            "version": "0.2.0", -          "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", -          "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", +          "bundled": true,            "optional": true          },          "process-nextick-args": {            "version": "1.0.7", -          "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", -          "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" +          "bundled": true          },          "punycode": {            "version": "1.4.1", -          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", -          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", +          "bundled": true,            "optional": true          },          "qs": {            "version": "6.4.0", -          "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", -          "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", +          "bundled": true,            "optional": true          },          "rc": {            "version": "1.2.1", -          "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", -          "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", +          "bundled": true,            "optional": true,            "requires": {              "deep-extend": "0.4.2", @@ -3656,16 +3665,14 @@            "dependencies": {              "minimist": {                "version": "1.2.0", -              "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", -              "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", +              "bundled": true,                "optional": true              }            }          },          "readable-stream": {            "version": "2.2.9", -          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", -          "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", +          "bundled": true,            "requires": {              "buffer-shims": "1.0.0",              "core-util-is": "1.0.2", @@ -3678,8 +3685,7 @@          },          "request": {            "version": "2.81.0", -          "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", -          "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", +          "bundled": true,            "optional": true,            "requires": {              "aws-sign2": "0.6.0", @@ -3708,47 +3714,40 @@          },          "rimraf": {            "version": "2.6.1", -          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", -          "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", +          "bundled": true,            "requires": {              "glob": "7.1.2"            }          },          "safe-buffer": {            "version": "5.0.1", -          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", -          "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=" +          "bundled": true          },          "semver": {            "version": "5.3.0", -          "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", -          "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", +          "bundled": true,            "optional": true          },          "set-blocking": {            "version": "2.0.0", -          "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", -          "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", +          "bundled": true,            "optional": true          },          "signal-exit": {            "version": "3.0.2", -          "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", -          "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", +          "bundled": true,            "optional": true          },          "sntp": {            "version": "1.0.9", -          "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", -          "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", +          "bundled": true,            "requires": {              "hoek": "2.16.3"            }          },          "sshpk": {            "version": "1.13.0", -          "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", -          "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", +          "bundled": true,            "optional": true,            "requires": {              "asn1": "0.2.3", @@ -3764,16 +3763,14 @@            "dependencies": {              "assert-plus": {                "version": "1.0.0", -              "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", -              "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", +              "bundled": true,                "optional": true              }            }          },          "string-width": {            "version": "1.0.2", -          "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", -          "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", +          "bundled": true,            "requires": {              "code-point-at": "1.1.0",              "is-fullwidth-code-point": "1.0.0", @@ -3782,36 +3779,31 @@          },          "string_decoder": {            "version": "1.0.1", -          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", -          "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", +          "bundled": true,            "requires": {              "safe-buffer": "5.0.1"            }          },          "stringstream": {            "version": "0.0.5", -          "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", -          "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", +          "bundled": true,            "optional": true          },          "strip-ansi": {            "version": "3.0.1", -          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", -          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", +          "bundled": true,            "requires": {              "ansi-regex": "2.1.1"            }          },          "strip-json-comments": {            "version": "2.0.1", -          "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", -          "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", +          "bundled": true,            "optional": true          },          "tar": {            "version": "2.2.1", -          "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", -          "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", +          "bundled": true,            "requires": {              "block-stream": "0.0.9",              "fstream": "1.0.11", @@ -3820,8 +3812,7 @@          },          "tar-pack": {            "version": "3.4.0", -          "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", -          "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", +          "bundled": true,            "optional": true,            "requires": {              "debug": "2.6.8", @@ -3836,8 +3827,7 @@          },          "tough-cookie": {            "version": "2.3.2", -          "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", -          "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", +          "bundled": true,            "optional": true,            "requires": {              "punycode": "1.4.1" @@ -3845,8 +3835,7 @@          },          "tunnel-agent": {            "version": "0.6.0", -          "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", -          "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", +          "bundled": true,            "optional": true,            "requires": {              "safe-buffer": "5.0.1" @@ -3854,31 +3843,26 @@          },          "tweetnacl": {            "version": "0.14.5", -          "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", -          "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", +          "bundled": true,            "optional": true          },          "uid-number": {            "version": "0.0.6", -          "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", -          "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", +          "bundled": true,            "optional": true          },          "util-deprecate": {            "version": "1.0.2", -          "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", -          "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" +          "bundled": true          },          "uuid": {            "version": "3.0.1", -          "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", -          "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", +          "bundled": true,            "optional": true          },          "verror": {            "version": "1.3.6", -          "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", -          "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", +          "bundled": true,            "optional": true,            "requires": {              "extsprintf": "1.0.2" @@ -3886,8 +3870,7 @@          },          "wide-align": {            "version": "1.1.2", -          "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", -          "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", +          "bundled": true,            "optional": true,            "requires": {              "string-width": "1.0.2" @@ -3895,8 +3878,7 @@          },          "wrappy": {            "version": "1.0.2", -          "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", -          "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" +          "bundled": true          }        }      }, @@ -4054,21 +4036,6 @@          "minimatch": "3.0.4"        }      }, -    "gonzales-pe": { -      "version": "4.2.3", -      "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.2.3.tgz", -      "integrity": "sha512-Kjhohco0esHQnOiqqdJeNz/5fyPkOMD/d6XVjwTAoPGUFh0mCollPUTUTa2OZy4dYNAqlPIQdTiNzJTWdd9Htw==", -      "requires": { -        "minimist": "1.1.3" -      }, -      "dependencies": { -        "minimist": { -          "version": "1.1.3", -          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz", -          "integrity": "sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag=" -        } -      } -    },      "graceful-fs": {        "version": "4.1.11",        "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", @@ -4363,6 +4330,12 @@          }        }      }, +    "har-schema": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", +      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", +      "dev": true +    },      "har-validator": {        "version": "2.0.6",        "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", @@ -4370,7 +4343,7 @@        "requires": {          "chalk": "1.1.3",          "commander": "2.12.2", -        "is-my-json-valid": "2.16.1", +        "is-my-json-valid": "2.17.1",          "pinkie-promise": "2.0.1"        }      }, @@ -4444,9 +4417,9 @@        "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="      },      "hoist-non-react-statics": { -      "version": "1.2.0", -      "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz", -      "integrity": "sha1-qkSM8JhtVcxAdzsXF0t90GbLfPs=" +      "version": "2.3.1", +      "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.3.1.tgz", +      "integrity": "sha1-ND24TGAYxlB3iJgkATWhQg7iLOA="      },      "home-or-tmp": {        "version": "2.0.0", @@ -4657,11 +4630,25 @@        "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz",        "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q="      }, +    "iferr": { +      "version": "0.1.5", +      "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", +      "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" +    }, +    "import-local": { +      "version": "0.1.1", +      "resolved": "https://registry.npmjs.org/import-local/-/import-local-0.1.1.tgz", +      "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=", +      "dev": true, +      "requires": { +        "pkg-dir": "2.0.0", +        "resolve-cwd": "2.0.0" +      } +    },      "imurmurhash": {        "version": "0.1.4",        "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", -      "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", -      "dev": true +      "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="      },      "in-publish": {        "version": "2.0.0", @@ -4844,9 +4831,9 @@        }      },      "is-my-json-valid": { -      "version": "2.16.1", -      "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", -      "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", +      "version": "2.17.1", +      "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz", +      "integrity": "sha512-Q2khNw+oBlWuaYvEEHtKSw/pCxD2L5Rc1C+UQme9X6JdRDh7m5D7HkozA0qa3DUkQ6VzCnEm8mVIQPyIRkI5sQ==",        "requires": {          "generate-function": "2.0.0",          "generate-object-property": "1.2.0", @@ -4998,7 +4985,7 @@        "integrity": "sha512-oFCwXvd65amgaPCzqrR+a2XjanS1MvpXN6l/MlMUTv6uiA1NOgGX+I0uyq8Lg3GDxsxPsaP1049krz3hIJ5+KA==",        "dev": true,        "requires": { -        "async": "2.4.1", +        "async": "2.6.0",          "fileset": "2.0.3",          "istanbul-lib-coverage": "1.1.1",          "istanbul-lib-hook": "1.1.0", @@ -5096,12 +5083,12 @@        }      },      "jest": { -      "version": "21.2.1", -      "resolved": "https://registry.npmjs.org/jest/-/jest-21.2.1.tgz", -      "integrity": "sha512-mXN0ppPvWYoIcC+R+ctKxAJ28xkt/Z5Js875padm4GbgUn6baeR5N4Ng6LjatIRpUQDZVJABT7Y4gucFjPryfw==", +      "version": "22.0.4", +      "resolved": "https://registry.npmjs.org/jest/-/jest-22.0.4.tgz", +      "integrity": "sha512-S0tmgK5psULvt/11QzgAZWGpY5y5TkMRzd3T21Q13JzTx37Vx6F0Nw022c9Kc/IbEy+AHkKkGFVO5QafE8MrDg==",        "dev": true,        "requires": { -        "jest-cli": "21.2.1" +        "jest-cli": "22.0.4"        },        "dependencies": {          "ansi-regex": { @@ -5149,9 +5136,9 @@            "dev": true          },          "jest-cli": { -          "version": "21.2.1", -          "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-21.2.1.tgz", -          "integrity": "sha512-T1BzrbFxDIW/LLYQqVfo94y/hhaj1NzVQkZgBumAC+sxbjMROI7VkihOdxNR758iYbQykL2ZOWUBurFgkQrzdg==", +          "version": "22.0.4", +          "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-22.0.4.tgz", +          "integrity": "sha512-f1lZRM13IwIINzjE3RebXQKtQLiKncpSrbJZ/aTZJXmzEWGdgSayW4ESyhU+xK3uGiJEUSzbHjwPY6nGJ8VbUA==",            "dev": true,            "requires": {              "ansi-escapes": "3.0.0", @@ -5163,46 +5150,28 @@              "istanbul-lib-coverage": "1.1.1",              "istanbul-lib-instrument": "1.9.1",              "istanbul-lib-source-maps": "1.2.2", -            "jest-changed-files": "21.2.0", -            "jest-config": "21.2.1", -            "jest-environment-jsdom": "21.2.1", -            "jest-haste-map": "21.2.0", -            "jest-message-util": "21.2.1", -            "jest-regex-util": "21.2.0", -            "jest-resolve-dependencies": "21.2.0", -            "jest-runner": "21.2.1", -            "jest-runtime": "21.2.1", -            "jest-snapshot": "21.2.1", -            "jest-util": "21.2.1", +            "jest-changed-files": "22.0.3", +            "jest-config": "22.0.4", +            "jest-environment-jsdom": "22.0.4", +            "jest-get-type": "22.0.3", +            "jest-haste-map": "22.0.3", +            "jest-message-util": "22.0.3", +            "jest-regex-util": "22.0.3", +            "jest-resolve-dependencies": "22.0.3", +            "jest-runner": "22.0.4", +            "jest-runtime": "22.0.4", +            "jest-snapshot": "22.0.3", +            "jest-util": "22.0.4", +            "jest-worker": "22.0.3",              "micromatch": "2.3.11",              "node-notifier": "5.1.2", -            "pify": "3.0.0", +            "realpath-native": "1.0.0", +            "rimraf": "2.6.2",              "slash": "1.0.0",              "string-length": "2.0.0",              "strip-ansi": "4.0.0",              "which": "1.3.0", -            "worker-farm": "1.5.2", -            "yargs": "9.0.1" -          } -        }, -        "load-json-file": { -          "version": "2.0.0", -          "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", -          "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", -          "dev": true, -          "requires": { -            "graceful-fs": "4.1.11", -            "parse-json": "2.2.0", -            "pify": "2.3.0", -            "strip-bom": "3.0.0" -          }, -          "dependencies": { -            "pify": { -              "version": "2.3.0", -              "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", -              "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", -              "dev": true -            } +            "yargs": "10.0.3"            }          },          "os-locale": { @@ -5216,44 +5185,6 @@              "mem": "1.1.0"            }          }, -        "path-type": { -          "version": "2.0.0", -          "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", -          "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", -          "dev": true, -          "requires": { -            "pify": "2.3.0" -          }, -          "dependencies": { -            "pify": { -              "version": "2.3.0", -              "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", -              "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", -              "dev": true -            } -          } -        }, -        "read-pkg": { -          "version": "2.0.0", -          "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", -          "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", -          "dev": true, -          "requires": { -            "load-json-file": "2.0.0", -            "normalize-package-data": "2.4.0", -            "path-type": "2.0.0" -          } -        }, -        "read-pkg-up": { -          "version": "2.0.0", -          "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", -          "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", -          "dev": true, -          "requires": { -            "find-up": "2.1.0", -            "read-pkg": "2.0.0" -          } -        },          "string-width": {            "version": "2.1.1",            "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -5273,12 +5204,6 @@              "ansi-regex": "3.0.0"            }          }, -        "strip-bom": { -          "version": "3.0.0", -          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", -          "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", -          "dev": true -        },          "supports-color": {            "version": "4.5.0",            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", @@ -5295,30 +5220,29 @@            "dev": true          },          "yargs": { -          "version": "9.0.1", -          "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", -          "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", +          "version": "10.0.3", +          "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", +          "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==",            "dev": true,            "requires": { -            "camelcase": "4.1.0",              "cliui": "3.2.0",              "decamelize": "1.2.0", +            "find-up": "2.1.0",              "get-caller-file": "1.0.2",              "os-locale": "2.1.0", -            "read-pkg-up": "2.0.0",              "require-directory": "2.1.1",              "require-main-filename": "1.0.1",              "set-blocking": "2.0.0",              "string-width": "2.1.1",              "which-module": "2.0.0",              "y18n": "3.2.1", -            "yargs-parser": "7.0.0" +            "yargs-parser": "8.1.0"            }          },          "yargs-parser": { -          "version": "7.0.0", -          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", -          "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", +          "version": "8.1.0", +          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", +          "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==",            "dev": true,            "requires": {              "camelcase": "4.1.0" @@ -5327,31 +5251,31 @@        }      },      "jest-changed-files": { -      "version": "21.2.0", -      "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-21.2.0.tgz", -      "integrity": "sha512-+lCNP1IZLwN1NOIvBcV5zEL6GENK6TXrDj4UxWIeLvIsIDa+gf6J7hkqsW2qVVt/wvH65rVvcPwqXdps5eclTQ==", +      "version": "22.0.3", +      "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-22.0.3.tgz", +      "integrity": "sha512-CG7eNJNO9x1O/3J4Uhe2QXra1MnC9+KS1f2NeOg+7iQ+8dDCgxCtpusmKfu44TnEyKwkIDhDr6htPfPaI+Fwbw==",        "dev": true,        "requires": {          "throat": "4.1.0"        }      },      "jest-config": { -      "version": "21.2.1", -      "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-21.2.1.tgz", -      "integrity": "sha512-fJru5HtlD/5l2o25eY9xT0doK3t2dlglrqoGpbktduyoI0T5CwuB++2YfoNZCrgZipTwPuAGonYv0q7+8yDc/A==", +      "version": "22.0.4", +      "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-22.0.4.tgz", +      "integrity": "sha512-NcBeixqHjHDZO9+pUj+365LQV2s65d2f0/IrwlUyv0xaJovRNc6eDvoJ/r2UUlHnqjP3Go+R0ECUsXPXjk4SHw==",        "dev": true,        "requires": {          "chalk": "2.3.0",          "glob": "7.1.2", -        "jest-environment-jsdom": "21.2.1", -        "jest-environment-node": "21.2.1", -        "jest-get-type": "21.2.0", -        "jest-jasmine2": "21.2.1", -        "jest-regex-util": "21.2.0", -        "jest-resolve": "21.2.0", -        "jest-util": "21.2.1", -        "jest-validate": "21.2.1", -        "pretty-format": "21.2.1" +        "jest-environment-jsdom": "22.0.4", +        "jest-environment-node": "22.0.4", +        "jest-get-type": "22.0.3", +        "jest-jasmine2": "22.0.4", +        "jest-regex-util": "22.0.3", +        "jest-resolve": "22.0.4", +        "jest-util": "22.0.4", +        "jest-validate": "22.0.3", +        "pretty-format": "22.0.3"        },        "dependencies": {          "ansi-styles": { @@ -5398,15 +5322,15 @@        "dev": true      },      "jest-diff": { -      "version": "21.2.1", -      "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-21.2.1.tgz", -      "integrity": "sha512-E5fu6r7PvvPr5qAWE1RaUwIh/k6Zx/3OOkZ4rk5dBJkEWRrUuSgbMt2EO8IUTPTd6DOqU3LW6uTIwX5FRvXoFA==", +      "version": "22.0.3", +      "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-22.0.3.tgz", +      "integrity": "sha512-Y7xN9Lc/NgFvR14lvjrJXB6x2x1LLe5NnMyzLvilBSSOyjy9uAVnR2Bt1YgzdfRrfaxsx7xFUVcqXLUnPkrJcA==",        "dev": true,        "requires": {          "chalk": "2.3.0",          "diff": "3.4.0", -        "jest-get-type": "21.2.0", -        "pretty-format": "21.2.1" +        "jest-get-type": "22.0.3", +        "pretty-format": "22.0.3"        },        "dependencies": {          "ansi-styles": { @@ -5447,66 +5371,70 @@        }      },      "jest-docblock": { -      "version": "21.2.0", -      "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz", -      "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==", -      "dev": true +      "version": "22.0.3", +      "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-22.0.3.tgz", +      "integrity": "sha512-LhviP2rqIg2IzS6m97W7T032oMrT699Tr6Njjhhl4FCLj+75BUy9CsSmGgfoVEql1uc+myBkssvcbn7T9xDR+A==", +      "dev": true, +      "requires": { +        "detect-newline": "2.1.0" +      }      },      "jest-environment-jsdom": { -      "version": "21.2.1", -      "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-21.2.1.tgz", -      "integrity": "sha512-mecaeNh0eWmzNrUNMWARysc0E9R96UPBamNiOCYL28k7mksb1d0q6DD38WKP7ABffjnXyUWJPVaWRgUOivwXwg==", +      "version": "22.0.4", +      "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-22.0.4.tgz", +      "integrity": "sha512-vnjefLZlsNsmnjKcaXkx2IxTBNG40vfRVOdMfcfkPkq85JxFB7wzNtjLx+RIfiNpIZd04C1PXbF0aJIenY85Ng==",        "dev": true,        "requires": { -        "jest-mock": "21.2.0", -        "jest-util": "21.2.1", -        "jsdom": "9.12.0" +        "jest-mock": "22.0.3", +        "jest-util": "22.0.4", +        "jsdom": "11.5.1"        }      },      "jest-environment-node": { -      "version": "21.2.1", -      "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-21.2.1.tgz", -      "integrity": "sha512-R211867wx9mVBVHzrjGRGTy5cd05K7eqzQl/WyZixR/VkJ4FayS8qkKXZyYnwZi6Rxo6WEV81cDbiUx/GfuLNw==", +      "version": "22.0.4", +      "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-22.0.4.tgz", +      "integrity": "sha512-9vjNKb86UivvKCZCudMNixQgdMnOG7ql6iVYnaiK0CmvZ0WQD+mlM10NvgiWpRv4HstcnRL1pY/GSIHXAD6qXw==",        "dev": true,        "requires": { -        "jest-mock": "21.2.0", -        "jest-util": "21.2.1" +        "jest-mock": "22.0.3", +        "jest-util": "22.0.4"        }      },      "jest-get-type": { -      "version": "21.2.0", -      "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-21.2.0.tgz", -      "integrity": "sha512-y2fFw3C+D0yjNSDp7ab1kcd6NUYfy3waPTlD8yWkAtiocJdBRQqNoRqVfMNxgj+IjT0V5cBIHJO0z9vuSSZ43Q==", +      "version": "22.0.3", +      "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.0.3.tgz", +      "integrity": "sha512-TaJnc/lnJQ3jwry+NUWkqaJmKrM/Ut3XdK89HfiqdI3DMRLd6Zb4wyKjwuNP37MEQqlNg0YWH4sbBR8D4exjCA==",        "dev": true      },      "jest-haste-map": { -      "version": "21.2.0", -      "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-21.2.0.tgz", -      "integrity": "sha512-5LhsY/loPH7wwOFRMs+PT4aIAORJ2qwgbpMFlbWbxfN0bk3ZCwxJ530vrbSiTstMkYLao6JwBkLhCJ5XbY7ZHw==", +      "version": "22.0.3", +      "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-22.0.3.tgz", +      "integrity": "sha512-VosIMOFQFu1rTF+MvOWVuv2KVmZ9eTkRgfwW2yUAs6/AhwmIfXRl/tih+fIOYcHzU4Auu1G8Fvl2kkF5g0k6/A==",        "dev": true,        "requires": {          "fb-watchman": "2.0.0",          "graceful-fs": "4.1.11", -        "jest-docblock": "21.2.0", +        "jest-docblock": "22.0.3", +        "jest-worker": "22.0.3",          "micromatch": "2.3.11", -        "sane": "2.2.0", -        "worker-farm": "1.5.2" +        "sane": "2.2.0"        }      },      "jest-jasmine2": { -      "version": "21.2.1", -      "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-21.2.1.tgz", -      "integrity": "sha512-lw8FXXIEekD+jYNlStfgNsUHpfMWhWWCgHV7n0B7mA/vendH7vBFs8xybjQsDzJSduptBZJHqQX9SMssya9+3A==", +      "version": "22.0.4", +      "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-22.0.4.tgz", +      "integrity": "sha512-pn1XPHUkffHK6oNY1Dfl/+Rg0UuTdlg3aGDnjyK6dZzGEBeiH1uKuSgZEjy3Lj461l3atpzsQyw7ilXPyjFnUw==",        "dev": true,        "requires": { +        "callsites": "2.0.0",          "chalk": "2.3.0", -        "expect": "21.2.1", +        "expect": "22.0.3",          "graceful-fs": "4.1.11", -        "jest-diff": "21.2.1", -        "jest-matcher-utils": "21.2.1", -        "jest-message-util": "21.2.1", -        "jest-snapshot": "21.2.1", -        "p-cancelable": "0.3.0" +        "jest-diff": "22.0.3", +        "jest-matcher-utils": "22.0.3", +        "jest-message-util": "22.0.3", +        "jest-snapshot": "22.0.3", +        "source-map-support": "0.5.0"        },        "dependencies": {          "ansi-styles": { @@ -5535,6 +5463,21 @@            "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",            "dev": true          }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", +          "dev": true +        }, +        "source-map-support": { +          "version": "0.5.0", +          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.0.tgz", +          "integrity": "sha512-vUoN3I7fHQe0R/SJLKRdKYuEdRGogsviXFkHHo17AWaTGv17VLnxw+CFXvqy+y4ORZ3doWLQcxRYfwKrsd/H7Q==", +          "dev": true, +          "requires": { +            "source-map": "0.6.1" +          } +        },          "supports-color": {            "version": "4.5.0",            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", @@ -5546,15 +5489,25 @@          }        }      }, +    "jest-leak-detector": { +      "version": "22.0.3", +      "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-22.0.3.tgz", +      "integrity": "sha512-xyVdAmcG8M3jWtVeadDUU6MAHLBrjkP4clz2UtTZ1gpe5bRLk27VjQOpzTwK20MkV/6iZQhSuRVuzHS5kD0HpA==", +      "dev": true, +      "requires": { +        "pretty-format": "22.0.3", +        "weak": "1.0.1" +      } +    },      "jest-matcher-utils": { -      "version": "21.2.1", -      "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-21.2.1.tgz", -      "integrity": "sha512-kn56My+sekD43dwQPrXBl9Zn9tAqwoy25xxe7/iY4u+mG8P3ALj5IK7MLHZ4Mi3xW7uWVCjGY8cm4PqgbsqMCg==", +      "version": "22.0.3", +      "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-22.0.3.tgz", +      "integrity": "sha512-FJbKpCR3K7YYE/Pnvy5OrLFgPEswpYWIfVtdwT2NC6pBARbYGX39KF3bTxS9yg2mv0YL2zHe3UbwzFsi9nFpVA==",        "dev": true,        "requires": {          "chalk": "2.3.0", -        "jest-get-type": "21.2.0", -        "pretty-format": "21.2.1" +        "jest-get-type": "22.0.3", +        "pretty-format": "22.0.3"        },        "dependencies": {          "ansi-styles": { @@ -5595,14 +5548,16 @@        }      },      "jest-message-util": { -      "version": "21.2.1", -      "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-21.2.1.tgz", -      "integrity": "sha512-EbC1X2n0t9IdeMECJn2BOg7buOGivCvVNjqKMXTzQOu7uIfLml+keUfCALDh8o4rbtndIeyGU8/BKfoTr/LVDQ==", +      "version": "22.0.3", +      "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-22.0.3.tgz", +      "integrity": "sha512-AVBdCx7Oj5wBpMOH089lx7Zgwpdz9HbReA82HuVAlIT4kEQRvCy6Sl9yVWDGJwHTgB/OYQGkgmbv/P/K8TkWNw==",        "dev": true,        "requires": { +        "@babel/code-frame": "7.0.0-beta.36",          "chalk": "2.3.0",          "micromatch": "2.3.11", -        "slash": "1.0.0" +        "slash": "1.0.0", +        "stack-utils": "1.0.1"        },        "dependencies": {          "ansi-styles": { @@ -5643,26 +5598,25 @@        }      },      "jest-mock": { -      "version": "21.2.0", -      "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-21.2.0.tgz", -      "integrity": "sha512-aZDfyVf0LEoABWiY6N0d+O963dUQSyUa4qgzurHR3TBDPen0YxKCJ6l2i7lQGh1tVdsuvdrCZ4qPj+A7PievCw==", +      "version": "22.0.3", +      "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-22.0.3.tgz", +      "integrity": "sha512-donODXcDG03EAEavc9xfJ7fBF/LNVjoZYkmj9DLrQ1B9YcT6wh8Xx7IYg25b8V/8F/eXPMAE0KK5q6Fqe6yAeg==",        "dev": true      },      "jest-regex-util": { -      "version": "21.2.0", -      "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-21.2.0.tgz", -      "integrity": "sha512-BKQ1F83EQy0d9Jen/mcVX7D+lUt2tthhK/2gDWRgLDJRNOdRgSp1iVqFxP8EN1ARuypvDflRfPzYT8fQnoBQFQ==", +      "version": "22.0.3", +      "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-22.0.3.tgz", +      "integrity": "sha512-mplC9chiAotES3ClzNhy0SJcfHB2DivooKJZW+2hDdvP8LLB+OUI+D6bJd7sncbKUsyFcmblEvpm/zz/hef7HA==",        "dev": true      },      "jest-resolve": { -      "version": "21.2.0", -      "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-21.2.0.tgz", -      "integrity": "sha512-vefQ/Lr+VdNvHUZFQXWtOqHX3HEdOc2MtSahBO89qXywEbUxGPB9ZLP9+BHinkxb60UT2Q/tTDOS6rYc6Mwigw==", +      "version": "22.0.4", +      "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-22.0.4.tgz", +      "integrity": "sha512-yoxHsX4MTT2Ra/dFia9VCunzsA/4jMBENMmLjREIUkCIP1edk/PZUOGVVf680Gw04CtmT5stETylcbmbL7hJBw==",        "dev": true,        "requires": {          "browser-resolve": "1.11.2", -        "chalk": "2.3.0", -        "is-builtin-module": "1.0.0" +        "chalk": "2.3.0"        },        "dependencies": {          "ansi-styles": { @@ -5703,55 +5657,56 @@        }      },      "jest-resolve-dependencies": { -      "version": "21.2.0", -      "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-21.2.0.tgz", -      "integrity": "sha512-ok8ybRFU5ScaAcfufIQrCbdNJSRZ85mkxJ1EhUp8Bhav1W1/jv/rl1Q6QoVQHObNxmKnbHVKrfLZbCbOsXQ+bQ==", +      "version": "22.0.3", +      "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-22.0.3.tgz", +      "integrity": "sha512-u9MUNJIa9GJ0YFhvM0+Scr4tyX84nC42d3w18Cly1doY7pTT+9momm+TncpuDlFyB2aNmS8SfdEbiLr1e6tBwg==",        "dev": true,        "requires": { -        "jest-regex-util": "21.2.0" +        "jest-regex-util": "22.0.3"        }      },      "jest-runner": { -      "version": "21.2.1", -      "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-21.2.1.tgz", -      "integrity": "sha512-Anb72BOQlHqF/zETqZ2K20dbYsnqW/nZO7jV8BYENl+3c44JhMrA8zd1lt52+N7ErnsQMd2HHKiVwN9GYSXmrg==", -      "dev": true, -      "requires": { -        "jest-config": "21.2.1", -        "jest-docblock": "21.2.0", -        "jest-haste-map": "21.2.0", -        "jest-jasmine2": "21.2.1", -        "jest-message-util": "21.2.1", -        "jest-runtime": "21.2.1", -        "jest-util": "21.2.1", -        "pify": "3.0.0", -        "throat": "4.1.0", -        "worker-farm": "1.5.2" +      "version": "22.0.4", +      "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-22.0.4.tgz", +      "integrity": "sha512-srBkbqmiSB+jzSaG652fmi3kS6rV6wS/4fOG8dxxBg3dCqNQcM2/L3TI3ZK0SwIAcdGJh5Gybs8aDboT8K9Cdw==", +      "dev": true, +      "requires": { +        "jest-config": "22.0.4", +        "jest-docblock": "22.0.3", +        "jest-haste-map": "22.0.3", +        "jest-jasmine2": "22.0.4", +        "jest-leak-detector": "22.0.3", +        "jest-message-util": "22.0.3", +        "jest-runtime": "22.0.4", +        "jest-util": "22.0.4", +        "jest-worker": "22.0.3", +        "throat": "4.1.0"        }      },      "jest-runtime": { -      "version": "21.2.1", -      "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-21.2.1.tgz", -      "integrity": "sha512-6omlpA3+NSE+rHwD0PQjNEjZeb2z+oRmuehMfM1tWQVum+E0WV3pFt26Am0DUfQkkPyTABvxITRjCUclYgSOsA==", +      "version": "22.0.4", +      "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-22.0.4.tgz", +      "integrity": "sha512-+7uEwf/4f8k1E/eViyGK6/M5yA4O3f6TdWViuqF9MV7vXwG2OVJu8YEZa5239nEnHJiwinXp4eZXX+HB4pQRPg==",        "dev": true,        "requires": {          "babel-core": "6.26.0", -        "babel-jest": "21.2.0", +        "babel-jest": "22.0.4",          "babel-plugin-istanbul": "4.1.5",          "chalk": "2.3.0",          "convert-source-map": "1.5.1",          "graceful-fs": "4.1.11", -        "jest-config": "21.2.1", -        "jest-haste-map": "21.2.0", -        "jest-regex-util": "21.2.0", -        "jest-resolve": "21.2.0", -        "jest-util": "21.2.1", +        "jest-config": "22.0.4", +        "jest-haste-map": "22.0.3", +        "jest-regex-util": "22.0.3", +        "jest-resolve": "22.0.4", +        "jest-util": "22.0.4",          "json-stable-stringify": "1.0.1",          "micromatch": "2.3.11", +        "realpath-native": "1.0.0",          "slash": "1.0.0",          "strip-bom": "3.0.0",          "write-file-atomic": "2.3.0", -        "yargs": "9.0.1" +        "yargs": "10.0.3"        },        "dependencies": {          "ansi-regex": { @@ -5798,18 +5753,6 @@            "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",            "dev": true          }, -        "load-json-file": { -          "version": "2.0.0", -          "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", -          "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", -          "dev": true, -          "requires": { -            "graceful-fs": "4.1.11", -            "parse-json": "2.2.0", -            "pify": "2.3.0", -            "strip-bom": "3.0.0" -          } -        },          "os-locale": {            "version": "2.1.0",            "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", @@ -5821,42 +5764,6 @@              "mem": "1.1.0"            }          }, -        "path-type": { -          "version": "2.0.0", -          "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", -          "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", -          "dev": true, -          "requires": { -            "pify": "2.3.0" -          } -        }, -        "pify": { -          "version": "2.3.0", -          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", -          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", -          "dev": true -        }, -        "read-pkg": { -          "version": "2.0.0", -          "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", -          "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", -          "dev": true, -          "requires": { -            "load-json-file": "2.0.0", -            "normalize-package-data": "2.4.0", -            "path-type": "2.0.0" -          } -        }, -        "read-pkg-up": { -          "version": "2.0.0", -          "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", -          "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", -          "dev": true, -          "requires": { -            "find-up": "2.1.0", -            "read-pkg": "2.0.0" -          } -        },          "string-width": {            "version": "2.1.1",            "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -5898,30 +5805,29 @@            "dev": true          },          "yargs": { -          "version": "9.0.1", -          "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", -          "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", +          "version": "10.0.3", +          "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", +          "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==",            "dev": true,            "requires": { -            "camelcase": "4.1.0",              "cliui": "3.2.0",              "decamelize": "1.2.0", +            "find-up": "2.1.0",              "get-caller-file": "1.0.2",              "os-locale": "2.1.0", -            "read-pkg-up": "2.0.0",              "require-directory": "2.1.1",              "require-main-filename": "1.0.1",              "set-blocking": "2.0.0",              "string-width": "2.1.1",              "which-module": "2.0.0",              "y18n": "3.2.1", -            "yargs-parser": "7.0.0" +            "yargs-parser": "8.1.0"            }          },          "yargs-parser": { -          "version": "7.0.0", -          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", -          "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", +          "version": "8.1.0", +          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", +          "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==",            "dev": true,            "requires": {              "camelcase": "4.1.0" @@ -5936,17 +5842,17 @@        "dev": true      },      "jest-snapshot": { -      "version": "21.2.1", -      "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-21.2.1.tgz", -      "integrity": "sha512-bpaeBnDpdqaRTzN8tWg0DqOTo2DvD3StOemxn67CUd1p1Po+BUpvePAp44jdJ7Pxcjfg+42o4NHw1SxdCA2rvg==", +      "version": "22.0.3", +      "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-22.0.3.tgz", +      "integrity": "sha512-e/a/EvMsY5XROWy4QWX6PvYziuJ8ttD6+QcnbogODWtx2LGhvVQOb7pmqGTo0tL/p0vzFetZA9GlZSh/EfMepg==",        "dev": true,        "requires": {          "chalk": "2.3.0", -        "jest-diff": "21.2.1", -        "jest-matcher-utils": "21.2.1", +        "jest-diff": "22.0.3", +        "jest-matcher-utils": "22.0.3",          "mkdirp": "0.5.1",          "natural-compare": "1.4.0", -        "pretty-format": "21.2.1" +        "pretty-format": "22.0.3"        },        "dependencies": {          "ansi-styles": { @@ -5987,17 +5893,17 @@        }      },      "jest-util": { -      "version": "21.2.1", -      "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-21.2.1.tgz", -      "integrity": "sha512-r20W91rmHY3fnCoO7aOAlyfC51x2yeV3xF+prGsJAUsYhKeV670ZB8NO88Lwm7ASu8SdH0S+U+eFf498kjhA4g==", +      "version": "22.0.4", +      "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-22.0.4.tgz", +      "integrity": "sha512-gNNPtcCFkVh7daKIl3/06eoQ90QXGXCyDOfyZ3IEyTWmHBdX3GvklcOtyGcdOvrYEubaZTfMcMKmEeo/6sRTog==",        "dev": true,        "requires": {          "callsites": "2.0.0",          "chalk": "2.3.0",          "graceful-fs": "4.1.11", -        "jest-message-util": "21.2.1", -        "jest-mock": "21.2.0", -        "jest-validate": "21.2.1", +        "is-ci": "1.0.10", +        "jest-message-util": "22.0.3", +        "jest-validate": "22.0.3",          "mkdirp": "0.5.1"        },        "dependencies": { @@ -6039,15 +5945,15 @@        }      },      "jest-validate": { -      "version": "21.2.1", -      "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-21.2.1.tgz", -      "integrity": "sha512-k4HLI1rZQjlU+EC682RlQ6oZvLrE5SCh3brseQc24vbZTxzT/k/3urar5QMCVgjadmSO7lECeGdc6YxnM3yEGg==", +      "version": "22.0.3", +      "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-22.0.3.tgz", +      "integrity": "sha512-GmlLmPCtrSQ3iB4A1uxcfjawaaQnwESCDcUg5tMxJKeBbmPdcWPAb6EWzvANxULPUV7hfPKLwg4xIPpi7cx1/g==",        "dev": true,        "requires": {          "chalk": "2.3.0", -        "jest-get-type": "21.2.0", +        "jest-get-type": "22.0.3",          "leven": "2.1.0", -        "pretty-format": "21.2.1" +        "pretty-format": "22.0.3"        },        "dependencies": {          "ansi-styles": { @@ -6087,6 +5993,15 @@          }        }      }, +    "jest-worker": { +      "version": "22.0.3", +      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-22.0.3.tgz", +      "integrity": "sha512-fPdCTnogFQiR0CP6whEsIly2RfcHxvalqyLjhui6qa1SnOmHiX7L8k4Umo8CBIp5ndWY0+ej1o7OTE5MlzPabg==", +      "dev": true, +      "requires": { +        "merge-stream": "1.0.1" +      } +    },      "jquery": {        "version": "3.2.1",        "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz", @@ -6130,37 +6045,187 @@        "optional": true      },      "jsdom": { -      "version": "9.12.0", -      "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz", -      "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=", +      "version": "11.5.1", +      "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.5.1.tgz", +      "integrity": "sha512-89ztIZ03aYK9f1uUrLXLsZndRge/JnZjzjpaN+lrse3coqz+8PR/dX4WLHpbF5fIKTXhDjFODOJw2328lPJ90g==",        "dev": true,        "requires": {          "abab": "1.0.4", -        "acorn": "4.0.13", -        "acorn-globals": "3.1.0", +        "acorn": "5.3.0", +        "acorn-globals": "4.1.0",          "array-equal": "1.0.0", +        "browser-process-hrtime": "0.1.2",          "content-type-parser": "1.0.2",          "cssom": "0.3.2",          "cssstyle": "0.2.37", +        "domexception": "1.0.0",          "escodegen": "1.9.0",          "html-encoding-sniffer": "1.0.2", +        "left-pad": "1.2.0",          "nwmatcher": "1.4.3", -        "parse5": "1.5.1", -        "request": "2.79.0", +        "parse5": "3.0.3", +        "pn": "1.0.0", +        "request": "2.83.0", +        "request-promise-native": "1.0.5",          "sax": "1.2.4",          "symbol-tree": "3.2.2",          "tough-cookie": "2.3.3",          "webidl-conversions": "4.0.2",          "whatwg-encoding": "1.0.3", -        "whatwg-url": "4.8.0", +        "whatwg-url": "6.4.0",          "xml-name-validator": "2.0.1"        },        "dependencies": { -        "acorn": { -          "version": "4.0.13", -          "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", -          "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", +        "assert-plus": { +          "version": "1.0.0", +          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", +          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", +          "dev": true +        }, +        "aws-sign2": { +          "version": "0.7.0", +          "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", +          "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", +          "dev": true +        }, +        "boom": { +          "version": "4.3.1", +          "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", +          "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", +          "dev": true, +          "requires": { +            "hoek": "4.2.0" +          } +        }, +        "caseless": { +          "version": "0.12.0", +          "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", +          "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",            "dev": true +        }, +        "cryptiles": { +          "version": "3.1.2", +          "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", +          "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", +          "dev": true, +          "requires": { +            "boom": "5.2.0" +          }, +          "dependencies": { +            "boom": { +              "version": "5.2.0", +              "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", +              "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", +              "dev": true, +              "requires": { +                "hoek": "4.2.0" +              } +            } +          } +        }, +        "form-data": { +          "version": "2.3.1", +          "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", +          "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", +          "dev": true, +          "requires": { +            "asynckit": "0.4.0", +            "combined-stream": "1.0.5", +            "mime-types": "2.1.17" +          } +        }, +        "har-validator": { +          "version": "5.0.3", +          "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", +          "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", +          "dev": true, +          "requires": { +            "ajv": "5.5.2", +            "har-schema": "2.0.0" +          } +        }, +        "hawk": { +          "version": "6.0.2", +          "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", +          "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", +          "dev": true, +          "requires": { +            "boom": "4.3.1", +            "cryptiles": "3.1.2", +            "hoek": "4.2.0", +            "sntp": "2.1.0" +          } +        }, +        "hoek": { +          "version": "4.2.0", +          "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", +          "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==", +          "dev": true +        }, +        "http-signature": { +          "version": "1.2.0", +          "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", +          "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", +          "dev": true, +          "requires": { +            "assert-plus": "1.0.0", +            "jsprim": "1.4.1", +            "sshpk": "1.13.1" +          } +        }, +        "qs": { +          "version": "6.5.1", +          "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", +          "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", +          "dev": true +        }, +        "request": { +          "version": "2.83.0", +          "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", +          "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", +          "dev": true, +          "requires": { +            "aws-sign2": "0.7.0", +            "aws4": "1.6.0", +            "caseless": "0.12.0", +            "combined-stream": "1.0.5", +            "extend": "3.0.1", +            "forever-agent": "0.6.1", +            "form-data": "2.3.1", +            "har-validator": "5.0.3", +            "hawk": "6.0.2", +            "http-signature": "1.2.0", +            "is-typedarray": "1.0.0", +            "isstream": "0.1.2", +            "json-stringify-safe": "5.0.1", +            "mime-types": "2.1.17", +            "oauth-sign": "0.8.2", +            "performance-now": "2.1.0", +            "qs": "6.5.1", +            "safe-buffer": "5.1.1", +            "stringstream": "0.0.5", +            "tough-cookie": "2.3.3", +            "tunnel-agent": "0.6.0", +            "uuid": "3.1.0" +          } +        }, +        "sntp": { +          "version": "2.1.0", +          "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", +          "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", +          "dev": true, +          "requires": { +            "hoek": "4.2.0" +          } +        }, +        "tunnel-agent": { +          "version": "0.6.0", +          "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", +          "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", +          "dev": true, +          "requires": { +            "safe-buffer": "5.1.1" +          }          }        }      }, @@ -6246,6 +6311,18 @@          }        }      }, +    "just-extend": { +      "version": "1.1.27", +      "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.27.tgz", +      "integrity": "sha512-mJVp13Ix6gFo3SBAy9U/kL+oeZqzlYYYLQBwXVBlVzIsZwBqGREnOro24oC/8s8aox+rJhtZ2DiQof++IrkA+g==", +      "dev": true +    }, +    "killable": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", +      "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=", +      "dev": true +    },      "kind-of": {        "version": "3.2.2",        "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -6275,6 +6352,12 @@          "invert-kv": "1.0.0"        }      }, +    "left-pad": { +      "version": "1.2.0", +      "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.2.0.tgz", +      "integrity": "sha1-0wpzxrggHY99jnlWupYWCHpo4O4=", +      "dev": true +    },      "leven": {        "version": "2.1.0",        "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", @@ -6350,50 +6433,11 @@        "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.4.tgz",        "integrity": "sha1-3MHXVS4VCgZABzupyzHXDwMpUOc="      }, -    "lodash._baseassign": { -      "version": "3.2.0", -      "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", -      "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", -      "requires": { -        "lodash._basecopy": "3.0.1", -        "lodash.keys": "3.1.2" -      } -    }, -    "lodash._basecopy": { -      "version": "3.0.1", -      "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", -      "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" -    },      "lodash._basefor": {        "version": "3.0.3",        "resolved": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.3.tgz",        "integrity": "sha1-dVC06SGO8J+tJDQ7YSAhx5tMIMI="      }, -    "lodash._bindcallback": { -      "version": "3.0.1", -      "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", -      "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=" -    }, -    "lodash._createassigner": { -      "version": "3.1.1", -      "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", -      "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", -      "requires": { -        "lodash._bindcallback": "3.0.1", -        "lodash._isiterateecall": "3.0.9", -        "lodash.restparam": "3.6.1" -      } -    }, -    "lodash._getnative": { -      "version": "3.9.1", -      "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", -      "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" -    }, -    "lodash._isiterateecall": { -      "version": "3.0.9", -      "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", -      "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=" -    },      "lodash._reinterpolate": {        "version": "3.0.0",        "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", @@ -6414,10 +6458,11 @@        "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",        "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8="      }, -    "lodash.defaults": { -      "version": "4.2.0", -      "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", -      "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" +    "lodash.get": { +      "version": "4.4.2", +      "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", +      "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", +      "dev": true      },      "lodash.isarguments": {        "version": "3.1.0", @@ -6439,16 +6484,6 @@          "lodash.keysin": "3.0.8"        }      }, -    "lodash.keys": { -      "version": "3.1.2", -      "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", -      "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", -      "requires": { -        "lodash._getnative": "3.9.1", -        "lodash.isarguments": "3.1.0", -        "lodash.isarray": "3.0.4" -      } -    },      "lodash.keysin": {        "version": "3.0.8",        "resolved": "https://registry.npmjs.org/lodash.keysin/-/lodash.keysin-3.0.8.tgz", @@ -6468,10 +6503,11 @@        "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz",        "integrity": "sha1-FQzwoWeR9ZA7iJHqsVRgknS96lU="      }, -    "lodash.restparam": { -      "version": "3.6.1", -      "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", -      "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" +    "lodash.sortby": { +      "version": "4.7.0", +      "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", +      "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", +      "dev": true      },      "lodash.tail": {        "version": "4.1.1", @@ -6507,9 +6543,9 @@        "dev": true      },      "lolex": { -      "version": "1.3.2", -      "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.3.2.tgz", -      "integrity": "sha1-fD2mL/yzDw9agKJWbKJORdigHzE=", +      "version": "2.3.1", +      "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.3.1.tgz", +      "integrity": "sha512-mQuW55GhduF3ppo+ZRUTz1PRjEh1hS5BbqU7d8D0ez2OKxHDod7StPPeAVKisZR5aLkHZjdGWSL42LSONUJsZw==",        "dev": true      },      "longest": { @@ -6614,7 +6650,7 @@        "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",        "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",        "requires": { -        "errno": "0.1.5", +        "errno": "0.1.6",          "readable-stream": "2.3.3"        }      }, @@ -6654,6 +6690,15 @@        "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",        "dev": true      }, +    "merge-stream": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", +      "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", +      "dev": true, +      "requires": { +        "readable-stream": "2.3.3" +      } +    },      "methods": {        "version": "1.1.2",        "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -6736,6 +6781,23 @@        "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",        "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="      }, +    "mississippi": { +      "version": "1.3.0", +      "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-1.3.0.tgz", +      "integrity": "sha1-0gFYPrEjJ+PFwWQqQEqcrPlONPU=", +      "requires": { +        "concat-stream": "1.6.0", +        "duplexify": "3.5.1", +        "end-of-stream": "1.4.0", +        "flush-write-stream": "1.0.2", +        "from2": "2.3.0", +        "parallel-transform": "1.1.0", +        "pump": "1.0.3", +        "pumpify": "1.3.5", +        "stream-each": "1.2.2", +        "through2": "2.0.3" +      } +    },      "mixin-object": {        "version": "2.0.1",        "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", @@ -6760,6 +6822,19 @@          "minimist": "0.0.8"        }      }, +    "move-concurrently": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", +      "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", +      "requires": { +        "aproba": "1.2.0", +        "copy-concurrently": "1.0.5", +        "fs-write-stream-atomic": "1.0.10", +        "mkdirp": "0.5.1", +        "rimraf": "2.6.2", +        "run-queue": "1.0.3" +      } +    },      "ms": {        "version": "2.0.0",        "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -6798,6 +6873,27 @@        "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",        "dev": true      }, +    "nise": { +      "version": "1.2.0", +      "resolved": "https://registry.npmjs.org/nise/-/nise-1.2.0.tgz", +      "integrity": "sha512-q9jXh3UNsMV28KeqI43ILz5+c3l+RiNW8mhurEwCKckuHQbL+hTJIKKTiUlCPKlgQ/OukFvSnKB/Jk3+sFbkGA==", +      "dev": true, +      "requires": { +        "formatio": "1.2.0", +        "just-extend": "1.1.27", +        "lolex": "1.6.0", +        "path-to-regexp": "1.7.0", +        "text-encoding": "0.6.4" +      }, +      "dependencies": { +        "lolex": { +          "version": "1.6.0", +          "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz", +          "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=", +          "dev": true +        } +      } +    },      "node-fetch": {        "version": "1.7.3",        "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", @@ -7008,10 +7104,15 @@        "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=",        "dev": true      }, -    "object-path": { -      "version": "0.9.2", -      "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.9.2.tgz", -      "integrity": "sha1-D9mnT8X60a45aLWGvaXGMr1sBaU=" +    "object.getownpropertydescriptors": { +      "version": "2.0.3", +      "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", +      "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", +      "dev": true, +      "requires": { +        "define-properties": "1.1.2", +        "es-abstract": "1.10.0" +      }      },      "object.omit": {        "version": "2.0.1", @@ -7160,12 +7261,6 @@          "os-tmpdir": "1.0.2"        }      }, -    "p-cancelable": { -      "version": "0.3.0", -      "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", -      "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", -      "dev": true -    },      "p-finally": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -7195,6 +7290,16 @@        "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz",        "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg=="      }, +    "parallel-transform": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", +      "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", +      "requires": { +        "cyclist": "0.2.2", +        "inherits": "2.0.3", +        "readable-stream": "2.3.3" +      } +    },      "parse-asn1": {        "version": "5.1.0",        "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", @@ -7227,10 +7332,13 @@        }      },      "parse5": { -      "version": "1.5.1", -      "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", -      "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", -      "dev": true +      "version": "3.0.3", +      "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", +      "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", +      "dev": true, +      "requires": { +        "@types/node": "8.5.2" +      }      },      "parseurl": {        "version": "1.3.2", @@ -7275,10 +7383,21 @@        "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME="      },      "path-to-regexp": { -      "version": "0.1.7", -      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", -      "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", -      "dev": true +      "version": "1.7.0", +      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", +      "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", +      "dev": true, +      "requires": { +        "isarray": "0.0.1" +      }, +      "dependencies": { +        "isarray": { +          "version": "0.0.1", +          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", +          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", +          "dev": true +        } +      }      },      "path-type": {        "version": "1.1.0", @@ -7309,6 +7428,12 @@          "sha.js": "2.4.9"        }      }, +    "performance-now": { +      "version": "2.1.0", +      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", +      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", +      "dev": true +    },      "pify": {        "version": "3.0.0",        "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", @@ -7450,6 +7575,12 @@          }        }      }, +    "pn": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/pn/-/pn-1.0.0.tgz", +      "integrity": "sha1-HPWjCw2AbNGPiPxBprXUrWFbO6k=", +      "dev": true +    },      "portfinder": {        "version": "1.0.13",        "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", @@ -7680,11 +7811,11 @@        }      },      "postcss-color-gray": { -      "version": "4.0.0", -      "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-4.0.0.tgz", -      "integrity": "sha1-aBvzBQl91mv+8OHmKC1dmbWsyV0=", +      "version": "4.1.0", +      "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-4.1.0.tgz", +      "integrity": "sha512-L4iLKQLdqChz6ZOgGb6dRxkBNw78JFYcJmBz1orHpZoeLtuhDDGegRtX9gSyfoCIM7rWZ3VNOyiqqvk83BEN+w==",        "requires": { -        "color": "1.0.3", +        "color": "2.0.1",          "postcss": "6.0.14",          "postcss-message-helpers": "2.0.0",          "reduce-function-call": "1.0.2" @@ -7709,9 +7840,9 @@            }          },          "color": { -          "version": "1.0.3", -          "resolved": "https://registry.npmjs.org/color/-/color-1.0.3.tgz", -          "integrity": "sha1-5I6DLYXxTvaU+0aIEcLVz+cptV0=", +          "version": "2.0.1", +          "resolved": "https://registry.npmjs.org/color/-/color-2.0.1.tgz", +          "integrity": "sha512-ubUCVVKfT7r2w2D3qtHakj8mbmKms+tThR8gI8zEYCbUBl8/voqFGt3kgBqGwXAopgXybnkuOq+qMYCRrp4cXw==",            "requires": {              "color-convert": "1.9.1",              "color-string": "1.5.2" @@ -8163,7 +8294,7 @@        "resolved": "https://registry.npmjs.org/postcss-cssnext/-/postcss-cssnext-3.0.2.tgz",        "integrity": "sha512-jA6kGdcUMZqLUgw6MdpyNWGFhk0LIITVhC/jTnLRZLoXSTR88qT2cFOn3LbY06udt1PVdTCHDG3plBjxVKf8BQ==",        "requires": { -        "autoprefixer": "7.2.2", +        "autoprefixer": "7.2.3",          "caniuse-api": "2.0.0",          "chalk": "2.3.0",          "pixrem": "4.0.1", @@ -8173,7 +8304,7 @@          "postcss-attribute-case-insensitive": "2.0.0",          "postcss-calc": "6.0.1",          "postcss-color-function": "4.0.1", -        "postcss-color-gray": "4.0.0", +        "postcss-color-gray": "4.1.0",          "postcss-color-hex-alpha": "3.0.0",          "postcss-color-hsl": "2.0.0",          "postcss-color-hwb": "3.0.0", @@ -8205,12 +8336,12 @@            }          },          "autoprefixer": { -          "version": "7.2.2", -          "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.2.tgz", -          "integrity": "sha512-eTVoSHiGp2cDytg7RS7gtqAnfH+WFcNQMTjywGNu+hH7ViQZ/ZKsvNz2C1oVhCtd9DjMIC15iatpxmtp5Kxvpg==", +          "version": "7.2.3", +          "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.3.tgz", +          "integrity": "sha512-dqzVGiz3v934+s3YZA6nk7tAs9xuTz5wMJbX1M+L4cY/MTNkOUqP61c1GWkEVlUL/PEy1pKRSCFuoRZrXYx9qA==",            "requires": {              "browserslist": "2.10.0", -            "caniuse-lite": "1.0.30000782", +            "caniuse-lite": "1.0.30000784",              "normalize-range": "0.1.2",              "num2fraction": "1.2.2",              "postcss": "6.0.14", @@ -8223,7 +8354,7 @@            "integrity": "sha1-sd21pZZrFvSNxJmERNS7xsfZ2DQ=",            "requires": {              "browserslist": "2.10.0", -            "caniuse-lite": "1.0.30000782", +            "caniuse-lite": "1.0.30000784",              "lodash.memoize": "4.1.2",              "lodash.uniq": "4.5.0"            } @@ -8680,6 +8811,65 @@          }        }      }, +    "postcss-import": { +      "version": "11.0.0", +      "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-11.0.0.tgz", +      "integrity": "sha1-qWLi34LTvFptpqOGhBdHIE9B71s=", +      "requires": { +        "postcss": "6.0.14", +        "postcss-value-parser": "3.3.0", +        "read-cache": "1.0.0", +        "resolve": "1.5.0" +      }, +      "dependencies": { +        "ansi-styles": { +          "version": "3.2.0", +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", +          "requires": { +            "color-convert": "1.9.1" +          } +        }, +        "chalk": { +          "version": "2.3.0", +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", +          "requires": { +            "ansi-styles": "3.2.0", +            "escape-string-regexp": "1.0.5", +            "supports-color": "4.5.0" +          } +        }, +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" +        }, +        "postcss": { +          "version": "6.0.14", +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", +          "requires": { +            "chalk": "2.3.0", +            "source-map": "0.6.1", +            "supports-color": "4.5.0" +          } +        }, +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "requires": { +            "has-flag": "2.0.0" +          } +        } +      } +    },      "postcss-initial": {        "version": "2.0.0",        "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-2.0.0.tgz", @@ -8921,8 +9111,8 @@            "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",            "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",            "requires": { -            "caniuse-db": "1.0.30000782", -            "electron-to-chromium": "1.3.28" +            "caniuse-db": "1.0.30000784", +            "electron-to-chromium": "1.3.30"            }          }        } @@ -9480,119 +9670,6 @@          }        }      }, -    "postcss-sass": { -      "version": "0.2.0", -      "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.2.0.tgz", -      "integrity": "sha512-cUmYzkP747fPCQE6d+CH2l1L4VSyIlAzZsok3HPjb5Gzsq3jE+VjpAdGlPsnQ310WKWI42sw+ar0UNN59/f3hg==", -      "requires": { -        "gonzales-pe": "4.2.3", -        "postcss": "6.0.14" -      }, -      "dependencies": { -        "ansi-styles": { -          "version": "3.2.0", -          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", -          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", -          "requires": { -            "color-convert": "1.9.1" -          } -        }, -        "chalk": { -          "version": "2.3.0", -          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", -          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", -          "requires": { -            "ansi-styles": "3.2.0", -            "escape-string-regexp": "1.0.5", -            "supports-color": "4.5.0" -          } -        }, -        "has-flag": { -          "version": "2.0.0", -          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", -          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" -        }, -        "postcss": { -          "version": "6.0.14", -          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", -          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", -          "requires": { -            "chalk": "2.3.0", -            "source-map": "0.6.1", -            "supports-color": "4.5.0" -          } -        }, -        "source-map": { -          "version": "0.6.1", -          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", -          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" -        }, -        "supports-color": { -          "version": "4.5.0", -          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", -          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", -          "requires": { -            "has-flag": "2.0.0" -          } -        } -      } -    }, -    "postcss-scss": { -      "version": "1.0.2", -      "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-1.0.2.tgz", -      "integrity": "sha1-/0XPM1S4ee6JpOtoaA9GrJuxT5Q=", -      "requires": { -        "postcss": "6.0.14" -      }, -      "dependencies": { -        "ansi-styles": { -          "version": "3.2.0", -          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", -          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", -          "requires": { -            "color-convert": "1.9.1" -          } -        }, -        "chalk": { -          "version": "2.3.0", -          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", -          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", -          "requires": { -            "ansi-styles": "3.2.0", -            "escape-string-regexp": "1.0.5", -            "supports-color": "4.5.0" -          } -        }, -        "has-flag": { -          "version": "2.0.0", -          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", -          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" -        }, -        "postcss": { -          "version": "6.0.14", -          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", -          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", -          "requires": { -            "chalk": "2.3.0", -            "source-map": "0.6.1", -            "supports-color": "4.5.0" -          } -        }, -        "source-map": { -          "version": "0.6.1", -          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", -          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" -        }, -        "supports-color": { -          "version": "4.5.0", -          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", -          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", -          "requires": { -            "has-flag": "2.0.0" -          } -        } -      } -    },      "postcss-selector-matches": {        "version": "3.0.1",        "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-3.0.1.tgz", @@ -9727,72 +9804,6 @@          "uniq": "1.0.1"        }      }, -    "postcss-smart-import": { -      "version": "0.7.6", -      "resolved": "https://registry.npmjs.org/postcss-smart-import/-/postcss-smart-import-0.7.6.tgz", -      "integrity": "sha512-9OpXaQ1uMMHWafUh0RWIpAKa3xxUDC2yyxicUPpGffH33nzbZG4/z+nk5Ocw5gGZ+3qkXV91iDV23Cmxf2Jhew==", -      "requires": { -        "babel-runtime": "6.26.0", -        "lodash": "4.17.4", -        "object-assign": "4.1.1", -        "postcss": "6.0.14", -        "postcss-sass": "0.2.0", -        "postcss-scss": "1.0.2", -        "postcss-value-parser": "3.3.0", -        "promise-each": "2.2.0", -        "read-cache": "1.0.0", -        "resolve": "1.5.0", -        "sugarss": "1.0.1" -      }, -      "dependencies": { -        "ansi-styles": { -          "version": "3.2.0", -          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", -          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", -          "requires": { -            "color-convert": "1.9.1" -          } -        }, -        "chalk": { -          "version": "2.3.0", -          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", -          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", -          "requires": { -            "ansi-styles": "3.2.0", -            "escape-string-regexp": "1.0.5", -            "supports-color": "4.5.0" -          } -        }, -        "has-flag": { -          "version": "2.0.0", -          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", -          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" -        }, -        "postcss": { -          "version": "6.0.14", -          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", -          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", -          "requires": { -            "chalk": "2.3.0", -            "source-map": "0.6.1", -            "supports-color": "4.5.0" -          } -        }, -        "source-map": { -          "version": "0.6.1", -          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", -          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" -        }, -        "supports-color": { -          "version": "4.5.0", -          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", -          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", -          "requires": { -            "has-flag": "2.0.0" -          } -        } -      } -    },      "postcss-svgo": {        "version": "2.1.6",        "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", @@ -9846,9 +9857,9 @@        "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks="      },      "pretty-format": { -      "version": "21.2.1", -      "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz", -      "integrity": "sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==", +      "version": "22.0.3", +      "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-22.0.3.tgz", +      "integrity": "sha512-qXbDFJ2/Kk3HFIaLdOblbsCKQ09kZu4MKbXB+m/EaqD7PZ/wXe2XcRREmQleMh4wmerxlma6eJTh3nxCXYUmmA==",        "dev": true,        "requires": {          "ansi-regex": "3.0.0", @@ -9895,18 +9906,25 @@          "asap": "2.0.6"        }      }, -    "promise-each": { -      "version": "2.2.0", -      "resolved": "https://registry.npmjs.org/promise-each/-/promise-each-2.2.0.tgz", -      "integrity": "sha1-M1MXTv8mlEgQN+BOAfd6oPttG2A=", -      "requires": { -        "any-promise": "0.1.0" -      } +    "promise-inflight": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", +      "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM="      },      "promise-polyfill": { -      "version": "6.0.2", -      "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-6.0.2.tgz", -      "integrity": "sha1-2chtPcTcLfkBboiUbe/Wm0m0EWI=" +      "version": "7.0.0", +      "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-7.0.0.tgz", +      "integrity": "sha1-xmW22h+X4hw/L3qgVDyQIJEnyxU=" +    }, +    "prop-types": { +      "version": "15.6.0", +      "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", +      "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", +      "requires": { +        "fbjs": "0.8.16", +        "loose-envify": "1.3.1", +        "object-assign": "4.1.1" +      }      },      "proxy-addr": {        "version": "2.0.2", @@ -9940,6 +9958,25 @@          "randombytes": "2.0.5"        }      }, +    "pump": { +      "version": "1.0.3", +      "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", +      "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", +      "requires": { +        "end-of-stream": "1.4.0", +        "once": "1.4.0" +      } +    }, +    "pumpify": { +      "version": "1.3.5", +      "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.3.5.tgz", +      "integrity": "sha1-G2ccYZlAq8rqwK0OOjwWS+dgmTs=", +      "requires": { +        "duplexify": "3.5.1", +        "inherits": "2.0.3", +        "pump": "1.0.3" +      } +    },      "punycode": {        "version": "1.4.1",        "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -9980,15 +10017,6 @@        "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=",        "dev": true      }, -    "rails-erb-loader": { -      "version": "5.2.1", -      "resolved": "https://registry.npmjs.org/rails-erb-loader/-/rails-erb-loader-5.2.1.tgz", -      "integrity": "sha1-OZt3gbiMEpvGIaglYyntL4VTmOk=", -      "requires": { -        "loader-utils": "1.1.0", -        "lodash.defaults": "4.2.0" -      } -    },      "randomatic": {        "version": "1.1.7",        "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", @@ -10062,54 +10090,67 @@        }      },      "react": { -      "version": "15.3.2", -      "resolved": "https://registry.npmjs.org/react/-/react-15.3.2.tgz", -      "integrity": "sha1-p7zNL+6K8SawMX4iLCjR1UUo0J4=", +      "version": "16.2.0", +      "resolved": "https://registry.npmjs.org/react/-/react-16.2.0.tgz", +      "integrity": "sha512-ZmIomM7EE1DvPEnSFAHZn9Vs9zJl5A9H7el0EGTE6ZbW9FKe/14IYAlPbC8iH25YarEQxZL+E8VW7Mi7kfQrDQ==",        "requires": {          "fbjs": "0.8.16",          "loose-envify": "1.3.1", -        "object-assign": "4.1.1" +        "object-assign": "4.1.1", +        "prop-types": "15.6.0"        }      },      "react-addons-test-utils": { -      "version": "15.3.2", -      "resolved": "https://registry.npmjs.org/react-addons-test-utils/-/react-addons-test-utils-15.3.2.tgz", -      "integrity": "sha1-wJpE9YNCWkqcGzhETXpsPm8PQfY=", +      "version": "15.6.2", +      "resolved": "https://registry.npmjs.org/react-addons-test-utils/-/react-addons-test-utils-15.6.2.tgz", +      "integrity": "sha1-wStu/cIkfBDae4dw0YUICnsEcVY=",        "dev": true      },      "react-dom": { -      "version": "15.3.2", -      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.3.2.tgz", -      "integrity": "sha1-xGsKpTgNe4OOelnEp77/LtMVUx8=" +      "version": "16.2.0", +      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.2.0.tgz", +      "integrity": "sha512-zpGAdwHVn9K0091d+hr+R0qrjoJ84cIBFL2uU60KvWBPfZ7LPSrfqviTxGHWN0sjPZb2hxWzMexwrvJdKePvjg==", +      "requires": { +        "fbjs": "0.8.16", +        "loose-envify": "1.3.1", +        "object-assign": "4.1.1", +        "prop-types": "15.6.0" +      }      },      "react-redux": { -      "version": "4.4.5", -      "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-4.4.5.tgz", -      "integrity": "sha1-9QmimBviJS0QxinvfFWTR6SuxFc=", +      "version": "5.0.6", +      "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-5.0.6.tgz", +      "integrity": "sha512-8taaaGu+J7PMJQDJrk/xiWEYQmdo3mkXw6wPr3K3LxvXis3Fymiq7c13S+Tpls/AyNUAsoONkU81AP0RA6y6Vw==",        "requires": { -        "hoist-non-react-statics": "1.2.0", +        "hoist-non-react-statics": "2.3.1",          "invariant": "2.2.2",          "lodash": "4.17.4", -        "loose-envify": "1.3.1" -      } -    }, -    "react-select2": { -      "version": "4.0.3", -      "resolved": "https://registry.npmjs.org/react-select2/-/react-select2-4.0.3.tgz", -      "integrity": "sha1-icx55+r83/Gi8x8Jbo3rSDt1A+o=", -      "requires": { -        "react-select2-wrapper": "1.0.3" +        "lodash-es": "4.17.4", +        "loose-envify": "1.3.1", +        "prop-types": "15.6.0"        }      },      "react-select2-wrapper": { -      "version": "1.0.3", -      "resolved": "https://registry.npmjs.org/react-select2-wrapper/-/react-select2-wrapper-1.0.3.tgz", -      "integrity": "sha1-Z/R/81Cr19M5Yyrnzz65KWBMl5o=", +      "version": "1.0.4-beta5", +      "resolved": "https://registry.npmjs.org/react-select2-wrapper/-/react-select2-wrapper-1.0.4-beta5.tgz", +      "integrity": "sha1-UHFPYYqc7zecVPbt34vYLUu6Tao=",        "requires": { +        "prop-types": "15.6.0",          "select2": "4.0.5",          "shallow-equal-fuzzy": "0.0.2"        }      }, +    "react-test-renderer": { +      "version": "16.2.0", +      "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.2.0.tgz", +      "integrity": "sha512-Kd4gJFtpNziR9ElOE/C23LeflKLZPRpNQYWP3nQBY43SJ5a+xyEGSeMrm2zxNKXcnCbBS/q1UpD9gqd5Dv+rew==", +      "dev": true, +      "requires": { +        "fbjs": "0.8.16", +        "object-assign": "4.1.1", +        "prop-types": "15.6.0" +      } +    },      "read-cache": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -10188,6 +10229,15 @@          "set-immediate-shim": "1.0.1"        }      }, +    "realpath-native": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.0.tgz", +      "integrity": "sha512-XJtlRJ9jf0E1H1SLeJyQ9PGzQD7S65h1pRXEcAeK48doKOnKxcgPeNohJvD5u/2sI9J1oke6E8bZHS/fmW1UiQ==", +      "dev": true, +      "requires": { +        "util.promisify": "1.0.0" +      } +    },      "redent": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", @@ -10230,9 +10280,9 @@        }      },      "redux": { -      "version": "3.6.0", -      "resolved": "https://registry.npmjs.org/redux/-/redux-3.6.0.tgz", -      "integrity": "sha1-iHwrPQub2G7KK+cFccJ2VMGeGI0=", +      "version": "3.7.2", +      "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz", +      "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==",        "requires": {          "lodash": "4.17.4",          "lodash-es": "4.17.4", @@ -10241,11 +10291,11 @@        }      },      "redux-logger": { -      "version": "2.7.4", -      "resolved": "https://registry.npmjs.org/redux-logger/-/redux-logger-2.7.4.tgz", -      "integrity": "sha1-iR5dKefxEdCLV4GiN7mWW1hYx/g=", +      "version": "3.0.6", +      "resolved": "https://registry.npmjs.org/redux-logger/-/redux-logger-3.0.6.tgz", +      "integrity": "sha1-91VZZvMJjzyIYExEnPC69XeCdL8=",        "requires": { -        "deep-diff": "0.3.4" +        "deep-diff": "0.3.8"        }      },      "redux-promise": { @@ -10257,9 +10307,9 @@        }      },      "redux-thunk": { -      "version": "2.1.0", -      "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.1.0.tgz", -      "integrity": "sha1-xyS/7nXb41LaLjupvBQwK63Ympg=" +      "version": "2.2.0", +      "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.2.0.tgz", +      "integrity": "sha1-5hWhbha0ehmlFXZhM9Hj6Zt4UuU="      },      "regenerate": {        "version": "1.3.3", @@ -10289,11 +10339,6 @@          "is-equal-shallow": "0.1.3"        }      }, -    "regex-parser": { -      "version": "2.2.8", -      "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.8.tgz", -      "integrity": "sha1-2kwM2lqChVkJQWiTD0VfUytv+6w=" -    },      "regexpu-core": {        "version": "2.0.0",        "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", @@ -10374,6 +10419,26 @@          "uuid": "3.1.0"        }      }, +    "request-promise-core": { +      "version": "1.1.1", +      "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", +      "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", +      "dev": true, +      "requires": { +        "lodash": "4.17.4" +      } +    }, +    "request-promise-native": { +      "version": "1.0.5", +      "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", +      "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", +      "dev": true, +      "requires": { +        "request-promise-core": "1.1.1", +        "stealthy-require": "1.1.1", +        "tough-cookie": "2.3.3" +      } +    },      "require-directory": {        "version": "2.1.1",        "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -10403,54 +10468,20 @@          "path-parse": "1.0.5"        }      }, -    "resolve-url": { -      "version": "0.2.1", -      "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", -      "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" -    }, -    "resolve-url-loader": { -      "version": "2.2.1", -      "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-2.2.1.tgz", -      "integrity": "sha512-ywToZt/yttp4qG/SiiGMLAgaGuSaWSujAaf3WCadXehvQLxIgKFmMOSegaoH9Laa70Ayl4kti0zCAqLR48H/Mw==", -      "requires": { -        "adjust-sourcemap-loader": "1.1.0", -        "camelcase": "4.1.0", -        "convert-source-map": "1.5.1", -        "loader-utils": "1.1.0", -        "lodash.defaults": "4.2.0", -        "rework": "1.0.1", -        "rework-visit": "1.0.0", -        "source-map": "0.5.7", -        "urix": "0.1.0" -      }, -      "dependencies": { -        "camelcase": { -          "version": "4.1.0", -          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", -          "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" -        } -      } -    }, -    "rework": { -      "version": "1.0.1", -      "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", -      "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=", +    "resolve-cwd": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", +      "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", +      "dev": true,        "requires": { -        "convert-source-map": "0.3.5", -        "css": "2.2.1" -      }, -      "dependencies": { -        "convert-source-map": { -          "version": "0.3.5", -          "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", -          "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=" -        } +        "resolve-from": "3.0.0"        }      }, -    "rework-visit": { -      "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", -      "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=" +    "resolve-from": { +      "version": "3.0.0", +      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", +      "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", +      "dev": true      },      "rgb": {        "version": "0.1.0", @@ -10487,15 +10518,23 @@          "inherits": "2.0.3"        }      }, +    "run-queue": { +      "version": "1.0.3", +      "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", +      "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", +      "requires": { +        "aproba": "1.2.0" +      } +    },      "safe-buffer": {        "version": "5.1.1",        "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",        "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="      },      "samsam": { -      "version": "1.1.2", -      "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.2.tgz", -      "integrity": "sha1-vsEf3IOp/aBjQBIQ5AF2wwJNFWc=", +      "version": "1.3.0", +      "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", +      "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==",        "dev": true      },      "sane": { @@ -10538,7 +10577,7 @@        "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-6.0.6.tgz",        "integrity": "sha512-c3/Zc+iW+qqDip6kXPYLEgsAu2lf4xz0EZDplB7EmSUMda12U1sGJPetH55B/j9eu0bTtKzKlNPWWyYC7wFNyQ==",        "requires": { -        "async": "2.4.1", +        "async": "2.6.0",          "clone-deep": "0.3.0",          "loader-utils": "1.1.0",          "lodash.tail": "4.1.1", @@ -10555,7 +10594,7 @@        "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz",        "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=",        "requires": { -        "ajv": "5.5.1" +        "ajv": "5.5.2"        }      },      "scss-tokenizer": { @@ -10627,6 +10666,11 @@          "statuses": "1.3.1"        }      }, +    "serialize-javascript": { +      "version": "1.4.0", +      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.4.0.tgz", +      "integrity": "sha1-fJWFFNtqwkQ6irwGLcn3iGp/YAU=" +    },      "serve-index": {        "version": "1.9.1",        "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", @@ -10750,15 +10794,35 @@        }      },      "sinon": { -      "version": "1.17.7", -      "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.17.7.tgz", -      "integrity": "sha1-RUKk9JugxFwF6y6d2dID4rjv4L8=", +      "version": "4.1.3", +      "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.1.3.tgz", +      "integrity": "sha512-c7u0ZuvBRX1eXuB4jN3BRCAOGiUTlM8SE3TxbJHrNiHUKL7wonujMOB6Fi1gQc00U91IscFORQHDga/eccqpbw==",        "dev": true,        "requires": { -        "formatio": "1.1.1", -        "lolex": "1.3.2", -        "samsam": "1.1.2", -        "util": "0.10.3" +        "diff": "3.4.0", +        "formatio": "1.2.0", +        "lodash.get": "4.4.2", +        "lolex": "2.3.1", +        "nise": "1.2.0", +        "supports-color": "4.5.0", +        "type-detect": "4.0.5" +      }, +      "dependencies": { +        "has-flag": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", +          "dev": true +        }, +        "supports-color": { +          "version": "4.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", +          "dev": true, +          "requires": { +            "has-flag": "2.0.0" +          } +        }        }      },      "slash": { @@ -10835,17 +10899,6 @@        "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",        "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="      }, -    "source-map-resolve": { -      "version": "0.3.1", -      "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.3.1.tgz", -      "integrity": "sha1-YQ9hIqRFuN1RU1oqcbeD38Ekh2E=", -      "requires": { -        "atob": "1.1.3", -        "resolve-url": "0.2.1", -        "source-map-url": "0.3.0", -        "urix": "0.1.0" -      } -    },      "source-map-support": {        "version": "0.4.18",        "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", @@ -10854,11 +10907,6 @@          "source-map": "0.5.7"        }      }, -    "source-map-url": { -      "version": "0.3.0", -      "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.3.0.tgz", -      "integrity": "sha1-fsrxO1e80J2opAxdJp2zN5nUqvk=" -    },      "spdx-correct": {        "version": "1.0.2",        "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", @@ -10933,6 +10981,20 @@          }        }      }, +    "ssri": { +      "version": "5.0.0", +      "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.0.0.tgz", +      "integrity": "sha512-728D4yoQcQm1ooZvSbywLkV1RjfITZXh0oWrhM/lnsx3nAHx7LsRGJWB/YyvoceAYRq98xqbstiN4JBv1/wNHg==", +      "requires": { +        "safe-buffer": "5.1.1" +      } +    }, +    "stack-utils": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", +      "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", +      "dev": true +    },      "statuses": {        "version": "1.3.1",        "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", @@ -10947,6 +11009,12 @@          "readable-stream": "2.3.3"        }      }, +    "stealthy-require": { +      "version": "1.1.1", +      "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", +      "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", +      "dev": true +    },      "stream-browserify": {        "version": "2.0.1",        "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", @@ -10956,6 +11024,15 @@          "readable-stream": "2.3.3"        }      }, +    "stream-each": { +      "version": "1.2.2", +      "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", +      "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", +      "requires": { +        "end-of-stream": "1.4.0", +        "stream-shift": "1.0.0" +      } +    },      "stream-http": {        "version": "2.7.2",        "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", @@ -10968,6 +11045,11 @@          "xtend": "4.0.1"        }      }, +    "stream-shift": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", +      "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" +    },      "strict-uri-encode": {        "version": "1.1.0",        "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", @@ -11053,70 +11135,14 @@        }      },      "style-loader": { -      "version": "0.18.2", -      "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.18.2.tgz", -      "integrity": "sha512-WPpJPZGUxWYHWIUMNNOYqql7zh85zGmr84FdTVWq52WTIkqlW9xSxD3QYWi/T31cqn9UNSsietVEgGn2aaSCzw==", +      "version": "0.19.1", +      "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.19.1.tgz", +      "integrity": "sha512-IRE+ijgojrygQi3rsqT0U4dd+UcPCqcVvauZpCnQrGAlEe+FUIyrK93bUDScamesjP08JlQNsFJU+KmPedP5Og==",        "requires": {          "loader-utils": "1.1.0",          "schema-utils": "0.3.0"        }      }, -    "sugarss": { -      "version": "1.0.1", -      "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-1.0.1.tgz", -      "integrity": "sha512-3qgLZytikQQEVn1/FrhY7B68gPUUGY3R1Q1vTiD5xT+Ti1DP/8iZuwFet9ONs5+bmL8pZoDQ6JrQHVgrNlK6mA==", -      "requires": { -        "postcss": "6.0.14" -      }, -      "dependencies": { -        "ansi-styles": { -          "version": "3.2.0", -          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", -          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", -          "requires": { -            "color-convert": "1.9.1" -          } -        }, -        "chalk": { -          "version": "2.3.0", -          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", -          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", -          "requires": { -            "ansi-styles": "3.2.0", -            "escape-string-regexp": "1.0.5", -            "supports-color": "4.5.0" -          } -        }, -        "has-flag": { -          "version": "2.0.0", -          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", -          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" -        }, -        "postcss": { -          "version": "6.0.14", -          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", -          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==", -          "requires": { -            "chalk": "2.3.0", -            "source-map": "0.6.1", -            "supports-color": "4.5.0" -          } -        }, -        "source-map": { -          "version": "0.6.1", -          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", -          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" -        }, -        "supports-color": { -          "version": "4.5.0", -          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", -          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", -          "requires": { -            "has-flag": "2.0.0" -          } -        } -      } -    },      "supports-color": {        "version": "2.0.0",        "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -11185,12 +11211,27 @@          "require-main-filename": "1.0.1"        }      }, +    "text-encoding": { +      "version": "0.6.4", +      "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", +      "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", +      "dev": true +    },      "throat": {        "version": "4.1.0",        "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz",        "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=",        "dev": true      }, +    "through2": { +      "version": "2.0.3", +      "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", +      "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", +      "requires": { +        "readable-stream": "2.3.3", +        "xtend": "4.0.1" +      } +    },      "thunky": {        "version": "0.1.0",        "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", @@ -11340,10 +11381,21 @@        }      },      "tr46": { -      "version": "0.0.3", -      "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", -      "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", -      "dev": true +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", +      "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", +      "dev": true, +      "requires": { +        "punycode": "2.1.0" +      }, +      "dependencies": { +        "punycode": { +          "version": "2.1.0", +          "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", +          "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", +          "dev": true +        } +      }      },      "trim-newlines": {        "version": "1.0.0", @@ -11402,6 +11454,12 @@          "prelude-ls": "1.1.2"        }      }, +    "type-detect": { +      "version": "4.0.5", +      "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.5.tgz", +      "integrity": "sha512-N9IvkQslUGYGC24RkJk1ba99foK6TkwC2FHAEBlQFBP0RxQZS8ZpJuAZcwiY/w9ZJHFQb1aOXBI60OdxhTrwEQ==", +      "dev": true +    },      "type-is": {        "version": "1.6.15",        "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", @@ -11412,25 +11470,30 @@          "mime-types": "2.1.17"        }      }, +    "typedarray": { +      "version": "0.0.6", +      "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", +      "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" +    },      "ua-parser-js": {        "version": "0.7.17",        "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz",        "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g=="      },      "uglify-js": { -      "version": "3.1.3", -      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.1.3.tgz", -      "integrity": "sha512-5ZUOgufCHjN2mBBLfz63UtWTP6va2sSzBpNCM+/iqI6RnPzEhANmB0EKiKBYdQbc3v7KeomXJ2DJx0Xq9gvUvA==", +      "version": "3.3.2", +      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.2.tgz", +      "integrity": "sha512-uZp2gduFfZDDfx0iIAmfKgRTANCooWcFjnFmJ2n8x/+RpBNk97lac1HU5wvZxWZCBbwHmTFDpWAsEhKnQpsM2A==",        "dev": true,        "requires": { -        "commander": "2.11.0", -        "source-map": "0.5.7" +        "commander": "2.12.2", +        "source-map": "0.6.1"        },        "dependencies": { -        "commander": { -          "version": "2.11.0", -          "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", -          "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", +        "source-map": { +          "version": "0.6.1", +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",            "dev": true          }        } @@ -11513,6 +11576,22 @@        "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz",        "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI="      }, +    "unique-filename": { +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", +      "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", +      "requires": { +        "unique-slug": "2.0.0" +      } +    }, +    "unique-slug": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", +      "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", +      "requires": { +        "imurmurhash": "0.1.4" +      } +    },      "units-css": {        "version": "0.4.0",        "resolved": "https://registry.npmjs.org/units-css/-/units-css-0.4.0.tgz", @@ -11528,11 +11607,6 @@        "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",        "dev": true      }, -    "urix": { -      "version": "0.1.0", -      "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", -      "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" -    },      "url": {        "version": "0.11.0",        "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", @@ -11587,6 +11661,16 @@        "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",        "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="      }, +    "util.promisify": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", +      "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", +      "dev": true, +      "requires": { +        "define-properties": "1.1.2", +        "object.getownpropertydescriptors": "2.0.3" +      } +    },      "utils-merge": {        "version": "1.0.1",        "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -11680,7 +11764,7 @@        "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz",        "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=",        "requires": { -        "async": "2.4.1", +        "async": "2.6.0",          "chokidar": "1.7.0",          "graceful-fs": "4.1.11"        } @@ -11694,6 +11778,17 @@          "minimalistic-assert": "1.0.0"        }      }, +    "weak": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/weak/-/weak-1.0.1.tgz", +      "integrity": "sha1-q5mqswcGlZqgIAy4z1RbucszuZ4=", +      "dev": true, +      "optional": true, +      "requires": { +        "bindings": "1.3.0", +        "nan": "2.8.0" +      } +    },      "webidl-conversions": {        "version": "4.0.2",        "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", @@ -11705,11 +11800,11 @@        "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.10.0.tgz",        "integrity": "sha512-fxxKXoicjdXNUMY7LIdY89tkJJJ0m1Oo8PQutZ5rLgWbV5QVKI15Cn7+/IHnRTd3vfKfiwBx6SBqlorAuNA8LA==",        "requires": { -        "acorn": "5.2.1", +        "acorn": "5.3.0",          "acorn-dynamic-import": "2.0.2", -        "ajv": "5.5.1", +        "ajv": "5.5.2",          "ajv-keywords": "2.1.1", -        "async": "2.4.1", +        "async": "2.6.0",          "enhanced-resolve": "3.4.1",          "escope": "3.6.0",          "interpret": "1.1.0", @@ -11889,9 +11984,9 @@        }      },      "webpack-dev-server": { -      "version": "2.9.1", -      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.9.1.tgz", -      "integrity": "sha512-qFKs4Wg6JI6FkAQ6WFqeDCCxXEBLsDHkqJB3f9tmlqx8C68Y9vQWwcaMT4Q9H8WF32Q6QUNmgK4qQkdHfXvj/g==", +      "version": "2.9.7", +      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.9.7.tgz", +      "integrity": "sha512-Pu7uoQFgQj5RE5wmlfkpYSzihMKxulwEuO2xCsaMnAnyRSApwoVi3B8WCm9XbigyWTHaIMzYGkB90Vr6leAeTQ==",        "dev": true,        "requires": {          "ansi-html": "0.0.7", @@ -11900,12 +11995,15 @@          "chokidar": "1.7.0",          "compression": "1.7.1",          "connect-history-api-fallback": "1.5.0", +        "debug": "3.1.0",          "del": "3.0.0",          "express": "4.16.2",          "html-entities": "1.2.1",          "http-proxy-middleware": "0.17.4", +        "import-local": "0.1.1",          "internal-ip": "1.2.0",          "ip": "1.1.5", +        "killable": "1.0.0",          "loglevel": "1.6.0",          "opn": "5.1.0",          "portfinder": "1.0.13", @@ -11926,6 +12024,15 @@            "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",            "dev": true          }, +        "debug": { +          "version": "3.1.0", +          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", +          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", +          "dev": true, +          "requires": { +            "ms": "2.0.0" +          } +        },          "has-flag": {            "version": "2.0.0",            "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", @@ -12029,21 +12136,14 @@        "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ="      },      "whatwg-url": { -      "version": "4.8.0", -      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", -      "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", +      "version": "6.4.0", +      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.4.0.tgz", +      "integrity": "sha512-Z0CVh/YE217Foyb488eo+iBv+r7eAQ0wSTyApi9n06jhcA3z6Nidg/EGvl0UFkg7kMdKxfBzzr+o9JF+cevgMg==",        "dev": true,        "requires": { -        "tr46": "0.0.3", -        "webidl-conversions": "3.0.1" -      }, -      "dependencies": { -        "webidl-conversions": { -          "version": "3.0.1", -          "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", -          "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", -          "dev": true -        } +        "lodash.sortby": "4.7.0", +        "tr46": "1.0.1", +        "webidl-conversions": "4.0.2"        }      },      "whet.extend": { @@ -12082,16 +12182,6 @@        "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",        "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8="      }, -    "worker-farm": { -      "version": "1.5.2", -      "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.2.tgz", -      "integrity": "sha512-XxiQ9kZN5n6mmnW+mFJ+wXjNNI/Nx4DIdaAKLX1Bn6LYBWlN/zaBhu34DQYPZ1AJobQuu67S2OfDdNSVULvXkQ==", -      "dev": true, -      "requires": { -        "errno": "0.1.5", -        "xtend": "4.0.1" -      } -    },      "wrap-ansi": {        "version": "2.1.0",        "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", diff --git a/package.json b/package.json index 89c194653..01625839c 100644 --- a/package.json +++ b/package.json @@ -1,25 +1,26 @@  {    "name": "stif-boiv",    "dependencies": { -    "@rails/webpacker": "3.0.2", -    "babel-jest": "21.2.0", -    "babel-polyfill": "6.16.0", -    "babel-preset-es2015": "6.18.0", +    "@rails/webpacker": "3.2.0", +    "babel-jest": "22.0.4", +    "babel-polyfill": "6.26.0", +    "babel-preset-es2015": "6.24.1",      "babel-preset-react": "6.24.1", -    "babelify": "7.3.0", +    "babelify": "8.0.0",      "bootstrap": "3", -    "coffeescript": "1.12.7", +    "coffeescript": "2.1.0",      "jquery": "3.2.1",      "lodash": "4.17.4", -    "promise-polyfill": "6.0.2", -    "react": "15.3.2", -    "react-dom": "15.3.2", -    "react-redux": "4.4.5", -    "react-select2": "4.0.3", -    "redux": "3.6.0", -    "redux-logger": "2.7.4", +    "promise-polyfill": "7.0.0", +    "prop-types": "^15.6.0", +    "react": "16.2.0", +    "react-dom": "16.2.0", +    "react-redux": "5.0.6", +    "react-select2-wrapper": "^1.0.4-beta5", +    "redux": "3.7.2", +    "redux-logger": "3.0.6",      "redux-promise": "0.5.3", -    "redux-thunk": "2.1.0", +    "redux-thunk": "2.2.0",      "whatwg-fetch": "2.0.3"    },    "license": "MIT", @@ -28,17 +29,18 @@    },    "devDependencies": {      "clean-webpack-plugin": "0.1.17", -    "es6-object-assign": "1.0.3", +    "es6-object-assign": "1.1.0",      "grunt": "^1.0.1",      "grunt-contrib-watch": "^1.0.0",      "grunt-watch-change": "^0.1.1", -    "jest": "21.2.1", +    "jest": "22.0.4",      "jest-context": "^2.1.0",      "jest-set": "^2.0.0", -    "react-addons-test-utils": "15.3.2", -    "sinon": "1.17.7", -    "uglify-js": "3.1.3", -    "webpack-dev-server": "2.9.1" +    "react-addons-test-utils": "15.6.2", +    "react-test-renderer": "^16.2.0", +    "sinon": "4.1.3", +    "uglify-js": "3.3.2", +    "webpack-dev-server": "2.9.7"    },    "jest": {      "testRegex": "(/test/.*|(\\_|/)spec)\\.js$", diff --git a/script/launch-cron b/script/launch-cron new file mode 100644 index 000000000..183e5a331 --- /dev/null +++ b/script/launch-cron @@ -0,0 +1,20 @@ +#!/bin/bash + +function append_var_if_defined +{ +    VAR_NAME=$1 +    OUTPUT=$2 +    grep -qE "^${VAR_NAME}=" ${OUTPUT}||env|grep -E "^${VAR_NAME}=">>${OUTPUT} +} +VAR_LIST="RAILS_DB_HOST RAILS_DB_PORT RAILS_DB_USER RAILS_DB_PASSWORD RAILS_DB_NAME MAIL_HOST MAIL_ASSETS_URL_BASE MAIL_FROM SMTP_HOST SECRET_BASE SIDEKIQ_REDIS_URL CODIFLIGNE_API_URL REDIS_CACHE_STORE_URL RAILS_LOG_TO_STDOUT PATH" + +TMPF=$(tempfile) +for v in $VAR_LIST; do +    append_var_if_defined $v $TMPF    +done + +crontab -l >> $TMPF +cat $TMPF |crontab - +rm $TMPF + +exec cron -f diff --git a/spec/controllers/journey_patterns_collections_controller_spec.rb b/spec/controllers/journey_patterns_collections_controller_spec.rb index a3efbc23f..e2adc59f4 100644 --- a/spec/controllers/journey_patterns_collections_controller_spec.rb +++ b/spec/controllers/journey_patterns_collections_controller_spec.rb @@ -25,4 +25,20 @@ RSpec.describe JourneyPatternsCollectionsController, :type => :controller do                                                     'journey_patterns.update'  => true }.to_json)      end    end + +  context "get show" do +    login_user + +    let( :referential ){ Referential.first } +    let( :line ){ create(:line) } +    let( :route ){ create(:route, line: line) } + +    let(:request){ +      get :show, referential_id: referential.id, line_id: line.id, route_id: route.id, format: :json +    } +    it 'should be successful' do +      request +      expect(response).to be_success +    end +  end  end diff --git a/spec/factories/chouette_journey_pattern.rb b/spec/factories/chouette_journey_pattern.rb index 05d8d536a..d96302e7f 100644 --- a/spec/factories/chouette_journey_pattern.rb +++ b/spec/factories/chouette_journey_pattern.rb @@ -13,6 +13,12 @@ FactoryGirl.define do          j.stop_point_ids = j.route.stop_points.map(&:id)          j.departure_stop_point_id = j.route.stop_points.first.id          j.arrival_stop_point_id = j.route.stop_points.last.id +        j.costs = { +          "1-2": { +            distance: 10, +            time: 10 +          } +        }        end      end @@ -35,5 +41,3 @@ FactoryGirl.define do    end  end - - diff --git a/spec/factories/custom_fields.rb b/spec/factories/custom_fields.rb new file mode 100644 index 000000000..2f5fae555 --- /dev/null +++ b/spec/factories/custom_fields.rb @@ -0,0 +1,9 @@ +FactoryGirl.define do +  factory :custom_field do +    code "code" +    resource_type "VehicleJourney" +    sequence(:name){|n| "custom field ##{n}"} +    field_type "list" +    options( { "capacity" => "0" } ) +  end +end diff --git a/spec/factories/workbenches.rb b/spec/factories/workbenches.rb index 0f26559d8..98fdd6ad9 100644 --- a/spec/factories/workbenches.rb +++ b/spec/factories/workbenches.rb @@ -7,5 +7,6 @@ FactoryGirl.define do      association :line_referential      association :stop_area_referential      association :output, factory: :referential_suite +    association :workgroup    end  end diff --git a/spec/factories/workgroups.rb b/spec/factories/workgroups.rb new file mode 100644 index 000000000..792deddf8 --- /dev/null +++ b/spec/factories/workgroups.rb @@ -0,0 +1,7 @@ +FactoryGirl.define do +  factory :workgroup do +    sequence(:name) { |n| "Workgroup ##{n}" } +    association :line_referential +    association :stop_area_referential +  end +end diff --git a/spec/features/safe_submit_spec.rb b/spec/features/safe_submit_spec.rb new file mode 100644 index 000000000..9968d4310 --- /dev/null +++ b/spec/features/safe_submit_spec.rb @@ -0,0 +1,9 @@ +RSpec.describe 'SafeSubmit', type: :feature do +  login_user + +  let( :path ){ new_api_key_path() } +  it 'view shows the corresponding buttons' do +    visit path +    expect(page).to have_css('input[type=submit][data-disable-with]') +  end +end diff --git a/spec/javascript/journey_patterns/actions_spec.js b/spec/javascript/journey_patterns/actions_spec.js index 2542fa2f4..60d6d88bb 100644 --- a/spec/javascript/journey_patterns/actions_spec.js +++ b/spec/javascript/journey_patterns/actions_spec.js @@ -112,6 +112,22 @@ describe('when clicking on a journey pattern delete button', () => {      expect(actions.deleteJourneyPattern(index)).toEqual(expectedAction)    })  }) +describe('when changing on a journey pattern costs', () => { +  it('should create an action to update journey pattern', () => { +    const index = 1 +    const costs = { +      "1-2": { +        distance: 1 +      } +    } +    const expectedAction = { +      type: 'UPDATE_JOURNEYPATTERN_COSTS', +      index, +      costs +    } +    expect(actions.updateJourneyPatternCosts(index, costs)).toEqual(expectedAction) +  }) +})  describe('when clicking on validate button inside edit modal', () => {    it('should create an action to save journey pattern modifications', () => {      const index = 1 diff --git a/spec/javascript/journey_patterns/components/JourneyPatterns_spec.js b/spec/javascript/journey_patterns/components/JourneyPatterns_spec.js new file mode 100644 index 000000000..0c852deff --- /dev/null +++ b/spec/javascript/journey_patterns/components/JourneyPatterns_spec.js @@ -0,0 +1,77 @@ +import React, { Component } from 'react' +import JourneyPatterns from '../../../../app/javascript/journey_patterns/components/JourneyPatterns' +import renderer from 'react-test-renderer' + +describe('stopPointHeader', () => { +  set('features', () => { +    return {} +  }) +  set('component', () => { +    let props = { +      status: { +        features: features +      }, +      onCheckboxChange: ()=>{}, +      onLoadFirstPage: ()=>{}, +      onOpenEditModal: ()=>{}, +      stopPointsList: [stop_point, same_city_stop_point, other_country_stop_point], +      journeyPatterns: [] +    } +    let list = renderer.create( +      <JourneyPatterns +        status={props.status} +        journeyPatterns={props.journeyPatterns} +        stopPointsList={props.stopPointsList} +        onCheckboxChange={props.onCheckboxChange} +        onLoadFirstPage={props.onLoadFirstPage} +        onOpenEditModal={props.onOpenEditModal} +      /> +    ).toJSON() + +    return list +  }) + +  set('stop_point', () => { +    return { +      name: "Stop point", +      city_name: "City Name", +      zip_code: "12345", +      country_code: "FR", +      country_name: "france", +      object_id: "sp-FR" +    } +  }) + +  set('same_city_stop_point', () => { +    return { +      name: "Antother stop point", +      city_name: stop_point.city_name, +      zip_code: stop_point.zip_code, +      country_code: stop_point.country_code, +      country_name: stop_point.country_name, +      object_id: stop_point.object_id + "-2" +    } +  }) + +  set('other_country_stop_point', () => { +    return { +      name: "Antother stop point", +      city_name: "New York", +      zip_code: "232323", +      country_code: "US", +      country_name: "USA", +      object_id: "sp-USA" +    } +  }) +  it('should display the city name', () => { +    expect(component).toMatchSnapshot() +  }) +  context('with the "long_distance_routes" feature', () => { +    set('features', () => { +      return { long_distance_routes: true } +    }) +    it('should display the country name', () => { +      expect(component).toMatchSnapshot() +    }) +  }) +}) diff --git a/spec/javascript/journey_patterns/components/__snapshots__/JourneyPatterns_spec.js.snap b/spec/javascript/journey_patterns/components/__snapshots__/JourneyPatterns_spec.js.snap new file mode 100644 index 000000000..a332e7d80 --- /dev/null +++ b/spec/javascript/journey_patterns/components/__snapshots__/JourneyPatterns_spec.js.snap @@ -0,0 +1,169 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`stopPointHeader should display the city name 1`] = ` +<div +  className="row" +> +  <div +    className="col-lg-12" +  > +    <div +      className="table table-2entries mt-sm mb-sm no_result" +    > +      <div +        className="t2e-head w20" +      > +        <div +          className="th" +        > +          <div +            className="strong mb-xs" +          > +            ID Mission +          </div> +          <div> +            Code mission +          </div> +          <div> +            Nb arrêts +          </div> +        </div> +        <div +          className="td" +        > +          <div +            className="headlined" +            data-headline="City Name" +            title="City Name (12345)" +          > +            <span> +              <span> +                Stop point +              </span> +            </span> +          </div> +        </div> +        <div +          className="td" +        > +          <div +            className="" +            data-headline="" +            title="City Name (12345)" +          > +            <span> +              <span> +                Antother stop point +              </span> +            </span> +          </div> +        </div> +        <div +          className="td" +        > +          <div +            className="headlined" +            data-headline="New York" +            title="New York (232323)" +          > +            <span> +              <span> +                Antother stop point +              </span> +            </span> +          </div> +        </div> +      </div> +      <div +        className="t2e-item-list w80" +      > +        <div /> +      </div> +    </div> +  </div> +</div> +`; + +exports[`stopPointHeader with the "long_distance_routes" feature should display the country name 1`] = ` +<div +  className="row" +> +  <div +    className="col-lg-12" +  > +    <div +      className="table table-2entries mt-sm mb-sm no_result" +    > +      <div +        className="t2e-head w20" +      > +        <div +          className="th" +        > +          <div +            className="strong mb-xs" +          > +            ID Mission +          </div> +          <div> +            Code mission +          </div> +          <div> +            Nb arrêts +          </div> +        </div> +        <div +          className="td" +        > +          <div +            className="headlined" +            data-headline="france" +            title="City Name (12345)" +          > +            <span> +              <span> +                Stop point +              </span> +            </span> +          </div> +        </div> +        <div +          className="td" +        > +          <div +            className="" +            data-headline="" +            title="City Name (12345)" +          > +            <span> +              <span> +                Antother stop point +              </span> +            </span> +          </div> +        </div> +        <div +          className="td" +        > +          <div +            className="headlined" +            data-headline="USA" +            title="New York (232323)" +          > +            <span> +              <span> +                Antother stop point +              </span> +            </span> +          </div> +        </div> +      </div> +      <div +        className="t2e-item-list w80" +      > +        <div /> +      </div> +    </div> +  </div> +</div> +`; diff --git a/spec/javascript/journey_patterns/reducers/journey_patterns_spec.js b/spec/javascript/journey_patterns/reducers/journey_patterns_spec.js index 24780ab5a..bfa87d24a 100644 --- a/spec/javascript/journey_patterns/reducers/journey_patterns_spec.js +++ b/spec/javascript/journey_patterns/reducers/journey_patterns_spec.js @@ -47,7 +47,10 @@ describe('journeyPatterns reducer', () => {          object_id : 'o1',          published_name: 'M1',          registration_number: '', -        stop_points: fakeStopPoints +        stop_points: fakeStopPoints, +        costs: { + +        }        },        {          deletable: false, @@ -55,7 +58,13 @@ describe('journeyPatterns reducer', () => {          object_id : 'o2',          published_name: 'M2',          registration_number: '', -        stop_points: fakeStopPoints +        stop_points: fakeStopPoints, +        costs: { +          "1-2": { +            distance: 0, +            time: 10, +          } +        }        }      ]    }) @@ -83,7 +92,8 @@ describe('journeyPatterns reducer', () => {        published_name: 'M3',        registration_number: '',        deletable: false, -      stop_points: stopPoints +      stop_points: stopPoints, +      costs: {}      }, ...state])    }) @@ -100,6 +110,28 @@ describe('journeyPatterns reducer', () => {      ).toEqual([newState, state[1]])    }) +  it('should handle UPDATE_JOURNEYPATTERN_COSTS', () => { +    const costs = { +      "1-2": { +        distance: 1 +      } +    } +    const new_costs = { +      "1-2": { +        distance: 1, +        time: 10, +      } +    } +    const new_state = Object.assign({}, state[1], {costs: new_costs}) +    expect( +      jpReducer(state, { +        type: 'UPDATE_JOURNEYPATTERN_COSTS', +        index: 1, +        costs +      }) +    ).toEqual([state[0], new_state]) +  }) +    it('should handle DELETE_JOURNEYPATTERN', () => {      expect(        jpReducer(state, { diff --git a/spec/javascript/vehicle_journeys/components/VehicleJourneys_spec.js b/spec/javascript/vehicle_journeys/components/VehicleJourneys_spec.js new file mode 100644 index 000000000..87151c64b --- /dev/null +++ b/spec/javascript/vehicle_journeys/components/VehicleJourneys_spec.js @@ -0,0 +1,80 @@ +import React, { Component } from 'react' +import VehicleJourneys from '../../../../app/javascript/vehicle_journeys/components/VehicleJourneys' +import renderer from 'react-test-renderer' + +describe('stopPointHeader', () => { +  set('features', () => { +    return {} +  }) +  set('component', () => { +    let props = { +      status: {}, +      filters: { +        permissions: {}, +        features: features +      }, +      onLoadFirstPage: ()=>{}, +      onUpdateTime: ()=>{}, +      onSelectVehicleJourney: ()=>{}, +      stopPointsList: [stop_point, same_city_stop_point, other_country_stop_point], +      vehicleJourneys: [] +    } +    let list = renderer.create( +      <VehicleJourneys +        status={props.status} +        filters={props.filters} +        onLoadFirstPage={props.onLoadFirstPage} +        onUpdateTime={props.onUpdateTime} +        onSelectVehicleJourney={props.onSelectVehicleJourney} +        stopPointsList={props.stopPointsList} +        vehicleJourneys={props.vehicleJourneys} +      /> +    ).toJSON() + +    return list +  }) + +  set('stop_point', () => { +    return { +      name: "Stop point", +      city_name: "City Name", +      zip_code: "12345", +      country_code: "FR", +      country_name: "france", +      object_id: "sp-FR" +    } +  }) + +  set('same_city_stop_point', () => { +    return { +      name: "Antother stop point", +      city_name: stop_point.city_name, +      zip_code: stop_point.zip_code, +      country_code: stop_point.country_code, +      country_name: stop_point.country_name, +      object_id: stop_point.object_id + "-2" +    } +  }) + +  set('other_country_stop_point', () => { +    return { +      name: "Antother stop point", +      city_name: "New York", +      zip_code: "232323", +      country_code: "US", +      country_name: "USA", +      object_id: "sp-USA" +    } +  }) +  it('should display the city name', () => { +    expect(component).toMatchSnapshot() +  }) +  context('with the "long_distance_routes" feature', () => { +    set('features', () => { +      return { long_distance_routes: true } +    }) +    it('should display the country name', () => { +      expect(component).toMatchSnapshot() +    }) +  }) +}) diff --git a/spec/javascript/vehicle_journeys/components/__snapshots__/VehicleJourneys_spec.js.snap b/spec/javascript/vehicle_journeys/components/__snapshots__/VehicleJourneys_spec.js.snap new file mode 100644 index 000000000..703f727d7 --- /dev/null +++ b/spec/javascript/vehicle_journeys/components/__snapshots__/VehicleJourneys_spec.js.snap @@ -0,0 +1,181 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`stopPointHeader should display the city name 1`] = ` +<div +  className="row" +> +  <div +    className="col-lg-12" +  > +    <div +      className="table table-2entries mt-sm mb-sm no_result" +    > +      <div +        className="t2e-head w20" +      > +        <div +          className="th" +        > +          <div +            className="strong mb-xs" +          > +            ID course +          </div> +          <div> +            Nom course +          </div> +          <div> +            ID mission +          </div> +          <div> +            Transporteur +          </div> +          <div> +            Calendriers +          </div> +        </div> +        <div +          className="td" +        > +          <div +            className="headlined" +            data-headline="City Name" +            title="City Name (12345)" +          > +            <span> +              <span> +                Stop point +              </span> +            </span> +          </div> +        </div> +        <div +          className="td" +        > +          <div +            className="" +            data-headline="" +            title="City Name (12345)" +          > +            <span> +              <span> +                Antother stop point +              </span> +            </span> +          </div> +        </div> +        <div +          className="td" +        > +          <div +            className="headlined" +            data-headline="New York" +            title="New York (232323)" +          > +            <span> +              <span> +                Antother stop point +              </span> +            </span> +          </div> +        </div> +      </div> +      <div +        className="t2e-item-list w80" +      > +        <div /> +      </div> +    </div> +  </div> +</div> +`; + +exports[`stopPointHeader with the "long_distance_routes" feature should display the country name 1`] = ` +<div +  className="row" +> +  <div +    className="col-lg-12" +  > +    <div +      className="table table-2entries mt-sm mb-sm no_result" +    > +      <div +        className="t2e-head w20" +      > +        <div +          className="th" +        > +          <div +            className="strong mb-xs" +          > +            ID course +          </div> +          <div> +            Nom course +          </div> +          <div> +            ID mission +          </div> +          <div> +            Transporteur +          </div> +          <div> +            Calendriers +          </div> +        </div> +        <div +          className="td" +        > +          <div +            className="headlined" +            data-headline="france" +            title="City Name (12345)" +          > +            <span> +              <span> +                Stop point +              </span> +            </span> +          </div> +        </div> +        <div +          className="td" +        > +          <div +            className="" +            data-headline="" +            title="City Name (12345)" +          > +            <span> +              <span> +                Antother stop point +              </span> +            </span> +          </div> +        </div> +        <div +          className="td" +        > +          <div +            className="headlined" +            data-headline="USA" +            title="New York (232323)" +          > +            <span> +              <span> +                Antother stop point +              </span> +            </span> +          </div> +        </div> +      </div> +      <div +        className="t2e-item-list w80" +      > +        <div /> +      </div> +    </div> +  </div> +</div> +`; diff --git a/spec/models/chouette/journey_pattern_spec.rb b/spec/models/chouette/journey_pattern_spec.rb index ea7c2a2e9..077c85e85 100644 --- a/spec/models/chouette/journey_pattern_spec.rb +++ b/spec/models/chouette/journey_pattern_spec.rb @@ -39,6 +39,7 @@ describe Chouette::JourneyPattern, :type => :model do          item['stop_points'] = jp.stop_points.map do |sp|            { 'id' => sp.stop_area_id }          end +        item['costs'] = jp.costs        end      end @@ -72,6 +73,14 @@ describe Chouette::JourneyPattern, :type => :model do        expect(new_state['new_record']).to be_truthy      end +    it 'should create journey_pattern with state_update' do +      new_state = journey_pattern_to_state(build(:journey_pattern, objectid: nil, route: route)) +      collection = [new_state] +      expect { +        Chouette::JourneyPattern.state_update route, collection +      }.to change{Chouette::JourneyPattern.count}.by(1) +    end +      it 'should delete journey_pattern' do        state['deletable'] = true        collection = [state] diff --git a/spec/models/chouette/stop_area_spec.rb b/spec/models/chouette/stop_area_spec.rb index 9db0f11a5..a90e5d816 100644 --- a/spec/models/chouette/stop_area_spec.rb +++ b/spec/models/chouette/stop_area_spec.rb @@ -1,3 +1,4 @@ +# coding: utf-8  require 'spec_helper'  describe Chouette::StopArea, :type => :model do @@ -460,6 +461,14 @@ describe Chouette::StopArea, :type => :model do        expect(stop_area.errors).to have_key(:parent_id)      end +    it "use parent area type label in validation error message" do +      stop_area.area_type = 'zdep' +      stop_area.parent.area_type = 'zdep' + +      stop_area.valid? +      expect(stop_area.errors[:parent_id].first).to include(Chouette::AreaType.find(stop_area.parent.area_type).label) +    end +    end    describe '#waiting_time' do diff --git a/spec/models/chouette/vehicle_journey_spec.rb b/spec/models/chouette/vehicle_journey_spec.rb index eb2a31794..3ec2387e5 100644 --- a/spec/models/chouette/vehicle_journey_spec.rb +++ b/spec/models/chouette/vehicle_journey_spec.rb @@ -399,8 +399,7 @@ describe Chouette::VehicleJourney, :type => :model do    end    describe ".where_departure_time_between" do -    it "selects vehicle journeys whose departure times are between the -        specified range" do +    it "selects vehicle journeys whose departure times are between the specified range" do        journey_early = create(          :vehicle_journey,          stop_departure_time: '02:00:00' @@ -415,7 +414,7 @@ describe Chouette::VehicleJourney, :type => :model do          journey_pattern: journey_pattern,          stop_departure_time: '03:00:00'        ) -      journey_late = create( +      create(          :vehicle_journey,          route: route,          journey_pattern: journey_pattern, diff --git a/spec/models/custom_field_spec.rb b/spec/models/custom_field_spec.rb new file mode 100644 index 000000000..80873683c --- /dev/null +++ b/spec/models/custom_field_spec.rb @@ -0,0 +1,27 @@ +require 'rails_helper' + +RSpec.describe CustomField, type: :model do +  let( :vj ){ create :vehicle_journey, custom_field_values: {energy: 99} } + +  context "validates" do +    it { should validate_uniqueness_of(:name).scoped_to(:resource_type) } +  end + +  context "field access" do +    let( :custom_field ){ build_stubbed :custom_field } + +    it "option's values can be accessed by a key" do +      expect( custom_field.options['capacity'] ).to eq("0") +    end +  end + + +  context "custom fields for a resource" do +    let!( :fields ){ (1..2).map{ create :custom_field } } +    it { expect(vj.custom_fields).to eq(fields) } +  end + +  context "custom field_values for a resource" do +    it { expect(vj.custom_field_value("energy")).to eq(99) } +  end +end diff --git a/spec/models/workbench_spec.rb b/spec/models/workbench_spec.rb index caff00ae4..2f1fe39da 100644 --- a/spec/models/workbench_spec.rb +++ b/spec/models/workbench_spec.rb @@ -12,6 +12,7 @@ RSpec.describe Workbench, :type => :model do    it { should belong_to(:organisation) }    it { should belong_to(:line_referential) }    it { should belong_to(:stop_area_referential) } +  it { should belong_to(:workgroup) }    it { should belong_to(:output).class_name('ReferentialSuite') }    it { should have_many(:lines).through(:line_referential) } diff --git a/spec/models/workgroup_spec.rb b/spec/models/workgroup_spec.rb new file mode 100644 index 000000000..ac8d3fc98 --- /dev/null +++ b/spec/models/workgroup_spec.rb @@ -0,0 +1,30 @@ +require 'rails_helper' + +RSpec.describe Workgroup, type: :model do +  context "associations" do +    let( :workgroup ){ build_stubbed :workgroup, line_referential_id: 53, stop_area_referential_id: 42 } + +    it{ should have_many(:workbenches) } +    it{ should validate_uniqueness_of(:name) } + +    it 'is not valid without a stop_area_referential' do +      workgroup.stop_area_referential_id = nil +      expect( workgroup ).not_to be_valid +    end +    it 'is not valid without a line_referential' do +      workgroup.line_referential_id = nil +      expect( workgroup ).not_to be_valid +    end +    it 'is valid with both assoications' do +      expect( workgroup ).to be_valid +    end +  end + +  context "find organisations" do +    let( :workgroup ){ create :workgroup } +    let!( :workbench1 ){ create :workbench, workgroup: workgroup } +    let!( :workbench2 ){ create :workbench, workgroup: workgroup } + +    it{ expect( Set.new(workgroup.organisations) ).to eq(Set.new([ workbench1.organisation, workbench2.organisation ])) } +  end +end diff --git a/tmp/pids/.gitkeep b/tmp/pids/.gitkeep new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/tmp/pids/.gitkeep @@ -2,9 +2,17 @@  # yarn lockfile v1 -"@rails/webpacker@3.0.2": -  version "3.0.2" -  resolved "https://registry.yarnpkg.com/@rails/webpacker/-/webpacker-3.0.2.tgz#574b021c1f3d700b40a934576c9bdac5c9f9c744" +"@babel/code-frame@^7.0.0-beta.35": +  version "7.0.0-beta.37" +  resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.37.tgz#2da1dd3b1b57bfdea777ddc378df7cd12fe40171" +  dependencies: +    chalk "^2.0.0" +    esutils "^2.0.2" +    js-tokens "^3.0.0" + +"@rails/webpacker@3.2.0": +  version "3.2.0" +  resolved "https://registry.yarnpkg.com/@rails/webpacker/-/webpacker-3.2.0.tgz#e9e98a4da4a3e09441c71d2cbd66461659971055"    dependencies:      babel-core "^6.26.0"      babel-loader "^7.1.2" @@ -12,25 +20,27 @@      babel-plugin-transform-class-properties "^6.24.1"      babel-plugin-transform-object-rest-spread "^6.26.0"      babel-polyfill "^6.26.0" -    babel-preset-env "^1.6.0" -    coffee-loader "^0.8.0" -    compression-webpack-plugin "^1.0.0" -    css-loader "^0.28.5" -    extract-text-webpack-plugin "^3.0.0" -    file-loader "^0.11.2" +    babel-preset-env "^1.6.1" +    case-sensitive-paths-webpack-plugin "^2.1.1" +    compression-webpack-plugin "^1.0.1" +    css-loader "^0.28.7" +    extract-text-webpack-plugin "^3.0.2" +    file-loader "^1.1.5"      glob "^7.1.2" -    js-yaml "^3.9.1" -    node-sass "^4.5.3" +    js-yaml "^3.10.0" +    node-sass "^4.7.2"      path-complete-extname "^0.1.0"      postcss-cssnext "^3.0.2" -    postcss-loader "^2.0.6" -    postcss-smart-import "^0.7.5" -    rails-erb-loader "^5.2.1" -    resolve-url-loader "^2.1.0" +    postcss-import "^11.0.0" +    postcss-loader "^2.0.9"      sass-loader "^6.0.6" -    style-loader "^0.18.2" -    webpack "^3.5.5" -    webpack-manifest-plugin "^1.3.1" +    style-loader "^0.19.0" +    webpack "^3.10.0" +    webpack-manifest-plugin "^1.3.2" + +"@types/node@*": +  version "9.3.0" +  resolved "https://registry.yarnpkg.com/@types/node/-/node-9.3.0.tgz#3a129cda7c4e5df2409702626892cb4b96546dd5"  abab@^1.0.3:    version "1.0.4" @@ -53,13 +63,13 @@ acorn-dynamic-import@^2.0.0:    dependencies:      acorn "^4.0.3" -acorn-globals@^3.1.0: -  version "3.1.0" -  resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf" +acorn-globals@^4.0.0: +  version "4.1.0" +  resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.1.0.tgz#ab716025dbe17c54d3ef81d32ece2b2d99fe2538"    dependencies: -    acorn "^4.0.4" +    acorn "^5.0.0" -acorn@^4.0.3, acorn@^4.0.4: +acorn@^4.0.3:    version "4.0.13"    resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" @@ -67,17 +77,9 @@ acorn@^5.0.0:    version "5.1.2"    resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.2.tgz#911cb53e036807cf0fa778dc5d370fbd864246d7" -adjust-sourcemap-loader@^1.1.0: -  version "1.1.0" -  resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-1.1.0.tgz#412d92404eb61e4113635012cba53a33d008e0e2" -  dependencies: -    assert "^1.3.0" -    camelcase "^1.2.1" -    loader-utils "^1.0.2" -    lodash.assign "^4.0.1" -    lodash.defaults "^3.1.2" -    object-path "^0.9.2" -    regex-parser "^2.2.1" +acorn@^5.1.2: +  version "5.3.0" +  resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.3.0.tgz#7446d39459c54fb49a80e6ee6478149b940ec822"  ajv-keywords@^2.0.0:    version "2.1.0" @@ -145,10 +147,6 @@ ansi-styles@^3.1.0, ansi-styles@^3.2.0:    dependencies:      color-convert "^1.9.0" -any-promise@^0.1.0: -  version "0.1.0" -  resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-0.1.0.tgz#830b680aa7e56f33451d4b049f3bd8044498ee27" -  anymatch@^1.3.0:    version "1.3.2"    resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" @@ -162,7 +160,7 @@ append-transform@^0.4.0:    dependencies:      default-require-extensions "^1.0.0" -aproba@^1.0.3: +aproba@^1.0.3, aproba@^1.1.1:    version "1.2.0"    resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" @@ -173,7 +171,7 @@ are-we-there-yet@~1.1.2:      delegates "^1.0.0"      readable-stream "^2.0.6" -argparse@^1.0.7: +argparse@^1.0.2, argparse@^1.0.7:    version "1.0.9"    resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86"    dependencies: @@ -254,7 +252,7 @@ assert-plus@^0.2.0:    version "0.2.0"    resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" -assert@^1.1.1, assert@^1.3.0: +assert@^1.1.1:    version "1.4.1"    resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"    dependencies: @@ -272,13 +270,7 @@ async-foreach@^0.1.3:    version "0.1.3"    resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" -async@2.4.1: -  version "2.4.1" -  resolved "https://registry.yarnpkg.com/async/-/async-2.4.1.tgz#62a56b279c98a11d0987096a01cc3eeb8eb7bbd7" -  dependencies: -    lodash "^4.14.0" - -async@^1.4.0, async@^1.5.2: +async@^1.4.0, async@^1.5.0, async@^1.5.2, async@~1.5.2:    version "1.5.2"    resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -292,10 +284,6 @@ asynckit@^0.4.0:    version "0.4.0"    resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" -atob@~1.1.0: -  version "1.1.3" -  resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773" -  autoprefixer@^6.3.1:    version "6.7.7"    resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" @@ -330,7 +318,7 @@ aws4@^1.2.1, aws4@^1.6.0:    version "1.6.0"    resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" -babel-code-frame@^6.11.0, babel-code-frame@^6.26.0: +babel-code-frame@^6.26.0:    version "6.26.0"    resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"    dependencies: @@ -338,7 +326,7 @@ babel-code-frame@^6.11.0, babel-code-frame@^6.26.0:      esutils "^2.0.2"      js-tokens "^3.0.2" -babel-core@^6.0.0, babel-core@^6.0.14, babel-core@^6.26.0: +babel-core@^6.0.0, babel-core@^6.26.0:    version "6.26.0"    resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8"    dependencies: @@ -484,12 +472,12 @@ babel-helpers@^6.24.1:      babel-runtime "^6.22.0"      babel-template "^6.24.1" -babel-jest@21.2.0, babel-jest@^21.2.0: -  version "21.2.0" -  resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-21.2.0.tgz#2ce059519a9374a2c46f2455b6fbef5ad75d863e" +babel-jest@22.0.4, babel-jest@^22.0.4: +  version "22.0.4" +  resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-22.0.4.tgz#533c46de37d7c9d7612f408c76314be9277e0c26"    dependencies: -    babel-plugin-istanbul "^4.0.0" -    babel-preset-jest "^21.2.0" +    babel-plugin-istanbul "^4.1.5" +    babel-preset-jest "^22.0.3"  babel-loader@^7.1.2:    version "7.1.2" @@ -505,13 +493,13 @@ babel-messages@^6.23.0:    dependencies:      babel-runtime "^6.22.0" -babel-plugin-check-es2015-constants@^6.22.0, babel-plugin-check-es2015-constants@^6.3.13: +babel-plugin-check-es2015-constants@^6.22.0:    version "6.22.0"    resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a"    dependencies:      babel-runtime "^6.22.0" -babel-plugin-istanbul@^4.0.0: +babel-plugin-istanbul@^4.1.5:    version "4.1.5"    resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz#6760cdd977f411d3e175bb064f2bc327d99b2b6e"    dependencies: @@ -519,9 +507,9 @@ babel-plugin-istanbul@^4.0.0:      istanbul-lib-instrument "^1.7.5"      test-exclude "^4.1.1" -babel-plugin-jest-hoist@^21.2.0: -  version "21.2.0" -  resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-21.2.0.tgz#2cef637259bd4b628a6cace039de5fcd14dbb006" +babel-plugin-jest-hoist@^22.0.3: +  version "22.0.3" +  resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.0.3.tgz#62cde5fe962fd41ae89c119f481ca5cd7dd48bb4"  babel-plugin-syntax-async-functions@^6.8.0:    version "6.13.0" @@ -572,19 +560,19 @@ babel-plugin-transform-class-properties@^6.24.1:      babel-runtime "^6.22.0"      babel-template "^6.24.1" -babel-plugin-transform-es2015-arrow-functions@^6.22.0, babel-plugin-transform-es2015-arrow-functions@^6.3.13: +babel-plugin-transform-es2015-arrow-functions@^6.22.0:    version "6.22.0"    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221"    dependencies:      babel-runtime "^6.22.0" -babel-plugin-transform-es2015-block-scoped-functions@^6.22.0, babel-plugin-transform-es2015-block-scoped-functions@^6.3.13: +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0:    version "6.22.0"    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141"    dependencies:      babel-runtime "^6.22.0" -babel-plugin-transform-es2015-block-scoping@^6.18.0, babel-plugin-transform-es2015-block-scoping@^6.23.0: +babel-plugin-transform-es2015-block-scoping@^6.23.0, babel-plugin-transform-es2015-block-scoping@^6.24.1:    version "6.26.0"    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f"    dependencies: @@ -594,7 +582,7 @@ babel-plugin-transform-es2015-block-scoping@^6.18.0, babel-plugin-transform-es20      babel-types "^6.26.0"      lodash "^4.17.4" -babel-plugin-transform-es2015-classes@^6.18.0, babel-plugin-transform-es2015-classes@^6.23.0: +babel-plugin-transform-es2015-classes@^6.23.0, babel-plugin-transform-es2015-classes@^6.24.1:    version "6.24.1"    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db"    dependencies: @@ -608,33 +596,33 @@ babel-plugin-transform-es2015-classes@^6.18.0, babel-plugin-transform-es2015-cla      babel-traverse "^6.24.1"      babel-types "^6.24.1" -babel-plugin-transform-es2015-computed-properties@^6.22.0, babel-plugin-transform-es2015-computed-properties@^6.3.13: +babel-plugin-transform-es2015-computed-properties@^6.22.0, babel-plugin-transform-es2015-computed-properties@^6.24.1:    version "6.24.1"    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3"    dependencies:      babel-runtime "^6.22.0"      babel-template "^6.24.1" -babel-plugin-transform-es2015-destructuring@^6.18.0, babel-plugin-transform-es2015-destructuring@^6.23.0: +babel-plugin-transform-es2015-destructuring@^6.22.0, babel-plugin-transform-es2015-destructuring@^6.23.0:    version "6.23.0"    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d"    dependencies:      babel-runtime "^6.22.0" -babel-plugin-transform-es2015-duplicate-keys@^6.22.0, babel-plugin-transform-es2015-duplicate-keys@^6.6.0: +babel-plugin-transform-es2015-duplicate-keys@^6.22.0, babel-plugin-transform-es2015-duplicate-keys@^6.24.1:    version "6.24.1"    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e"    dependencies:      babel-runtime "^6.22.0"      babel-types "^6.24.1" -babel-plugin-transform-es2015-for-of@^6.18.0, babel-plugin-transform-es2015-for-of@^6.23.0: +babel-plugin-transform-es2015-for-of@^6.22.0, babel-plugin-transform-es2015-for-of@^6.23.0:    version "6.23.0"    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691"    dependencies:      babel-runtime "^6.22.0" -babel-plugin-transform-es2015-function-name@^6.22.0, babel-plugin-transform-es2015-function-name@^6.9.0: +babel-plugin-transform-es2015-function-name@^6.22.0, babel-plugin-transform-es2015-function-name@^6.24.1:    version "6.24.1"    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b"    dependencies: @@ -642,13 +630,13 @@ babel-plugin-transform-es2015-function-name@^6.22.0, babel-plugin-transform-es20      babel-runtime "^6.22.0"      babel-types "^6.24.1" -babel-plugin-transform-es2015-literals@^6.22.0, babel-plugin-transform-es2015-literals@^6.3.13: +babel-plugin-transform-es2015-literals@^6.22.0:    version "6.22.0"    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e"    dependencies:      babel-runtime "^6.22.0" -babel-plugin-transform-es2015-modules-amd@^6.18.0, babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: +babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1:    version "6.24.1"    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154"    dependencies: @@ -656,7 +644,7 @@ babel-plugin-transform-es2015-modules-amd@^6.18.0, babel-plugin-transform-es2015      babel-runtime "^6.22.0"      babel-template "^6.24.1" -babel-plugin-transform-es2015-modules-commonjs@^6.18.0, babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: +babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1:    version "6.26.0"    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a"    dependencies: @@ -665,7 +653,7 @@ babel-plugin-transform-es2015-modules-commonjs@^6.18.0, babel-plugin-transform-e      babel-template "^6.26.0"      babel-types "^6.26.0" -babel-plugin-transform-es2015-modules-systemjs@^6.18.0, babel-plugin-transform-es2015-modules-systemjs@^6.23.0: +babel-plugin-transform-es2015-modules-systemjs@^6.23.0, babel-plugin-transform-es2015-modules-systemjs@^6.24.1:    version "6.24.1"    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23"    dependencies: @@ -673,7 +661,7 @@ babel-plugin-transform-es2015-modules-systemjs@^6.18.0, babel-plugin-transform-e      babel-runtime "^6.22.0"      babel-template "^6.24.1" -babel-plugin-transform-es2015-modules-umd@^6.18.0, babel-plugin-transform-es2015-modules-umd@^6.23.0: +babel-plugin-transform-es2015-modules-umd@^6.23.0, babel-plugin-transform-es2015-modules-umd@^6.24.1:    version "6.24.1"    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468"    dependencies: @@ -681,14 +669,14 @@ babel-plugin-transform-es2015-modules-umd@^6.18.0, babel-plugin-transform-es2015      babel-runtime "^6.22.0"      babel-template "^6.24.1" -babel-plugin-transform-es2015-object-super@^6.22.0, babel-plugin-transform-es2015-object-super@^6.3.13: +babel-plugin-transform-es2015-object-super@^6.22.0, babel-plugin-transform-es2015-object-super@^6.24.1:    version "6.24.1"    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d"    dependencies:      babel-helper-replace-supers "^6.24.1"      babel-runtime "^6.22.0" -babel-plugin-transform-es2015-parameters@^6.18.0, babel-plugin-transform-es2015-parameters@^6.23.0: +babel-plugin-transform-es2015-parameters@^6.23.0, babel-plugin-transform-es2015-parameters@^6.24.1:    version "6.24.1"    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b"    dependencies: @@ -699,20 +687,20 @@ babel-plugin-transform-es2015-parameters@^6.18.0, babel-plugin-transform-es2015-      babel-traverse "^6.24.1"      babel-types "^6.24.1" -babel-plugin-transform-es2015-shorthand-properties@^6.18.0, babel-plugin-transform-es2015-shorthand-properties@^6.22.0: +babel-plugin-transform-es2015-shorthand-properties@^6.22.0, babel-plugin-transform-es2015-shorthand-properties@^6.24.1:    version "6.24.1"    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0"    dependencies:      babel-runtime "^6.22.0"      babel-types "^6.24.1" -babel-plugin-transform-es2015-spread@^6.22.0, babel-plugin-transform-es2015-spread@^6.3.13: +babel-plugin-transform-es2015-spread@^6.22.0:    version "6.22.0"    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1"    dependencies:      babel-runtime "^6.22.0" -babel-plugin-transform-es2015-sticky-regex@^6.22.0, babel-plugin-transform-es2015-sticky-regex@^6.3.13: +babel-plugin-transform-es2015-sticky-regex@^6.22.0, babel-plugin-transform-es2015-sticky-regex@^6.24.1:    version "6.24.1"    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc"    dependencies: @@ -720,19 +708,19 @@ babel-plugin-transform-es2015-sticky-regex@^6.22.0, babel-plugin-transform-es201      babel-runtime "^6.22.0"      babel-types "^6.24.1" -babel-plugin-transform-es2015-template-literals@^6.22.0, babel-plugin-transform-es2015-template-literals@^6.6.0: +babel-plugin-transform-es2015-template-literals@^6.22.0:    version "6.22.0"    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d"    dependencies:      babel-runtime "^6.22.0" -babel-plugin-transform-es2015-typeof-symbol@^6.18.0, babel-plugin-transform-es2015-typeof-symbol@^6.23.0: +babel-plugin-transform-es2015-typeof-symbol@^6.22.0, babel-plugin-transform-es2015-typeof-symbol@^6.23.0:    version "6.23.0"    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372"    dependencies:      babel-runtime "^6.22.0" -babel-plugin-transform-es2015-unicode-regex@^6.22.0, babel-plugin-transform-es2015-unicode-regex@^6.3.13: +babel-plugin-transform-es2015-unicode-regex@^6.22.0, babel-plugin-transform-es2015-unicode-regex@^6.24.1:    version "6.24.1"    resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9"    dependencies: @@ -790,7 +778,7 @@ babel-plugin-transform-react-jsx@^6.24.1:      babel-plugin-syntax-jsx "^6.8.0"      babel-runtime "^6.22.0" -babel-plugin-transform-regenerator@^6.16.0, babel-plugin-transform-regenerator@^6.22.0: +babel-plugin-transform-regenerator@^6.22.0, babel-plugin-transform-regenerator@^6.24.1:    version "6.26.0"    resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f"    dependencies: @@ -803,15 +791,7 @@ babel-plugin-transform-strict-mode@^6.24.1:      babel-runtime "^6.22.0"      babel-types "^6.24.1" -babel-polyfill@6.16.0: -  version "6.16.0" -  resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.16.0.tgz#2d45021df87e26a374b6d4d1a9c65964d17f2422" -  dependencies: -    babel-runtime "^6.9.1" -    core-js "^2.4.0" -    regenerator-runtime "^0.9.5" - -babel-polyfill@^6.26.0: +babel-polyfill@6.26.0, babel-polyfill@^6.26.0:    version "6.26.0"    resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153"    dependencies: @@ -819,9 +799,9 @@ babel-polyfill@^6.26.0:      core-js "^2.5.0"      regenerator-runtime "^0.10.5" -babel-preset-env@^1.6.0: -  version "1.6.0" -  resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.0.tgz#2de1c782a780a0a5d605d199c957596da43c44e4" +babel-preset-env@^1.6.1: +  version "1.6.1" +  resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48"    dependencies:      babel-plugin-check-es2015-constants "^6.22.0"      babel-plugin-syntax-trailing-function-commas "^6.22.0" @@ -854,34 +834,34 @@ babel-preset-env@^1.6.0:      invariant "^2.2.2"      semver "^5.3.0" -babel-preset-es2015@6.18.0: -  version "6.18.0" -  resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.18.0.tgz#b8c70df84ec948c43dcf2bf770e988eb7da88312" -  dependencies: -    babel-plugin-check-es2015-constants "^6.3.13" -    babel-plugin-transform-es2015-arrow-functions "^6.3.13" -    babel-plugin-transform-es2015-block-scoped-functions "^6.3.13" -    babel-plugin-transform-es2015-block-scoping "^6.18.0" -    babel-plugin-transform-es2015-classes "^6.18.0" -    babel-plugin-transform-es2015-computed-properties "^6.3.13" -    babel-plugin-transform-es2015-destructuring "^6.18.0" -    babel-plugin-transform-es2015-duplicate-keys "^6.6.0" -    babel-plugin-transform-es2015-for-of "^6.18.0" -    babel-plugin-transform-es2015-function-name "^6.9.0" -    babel-plugin-transform-es2015-literals "^6.3.13" -    babel-plugin-transform-es2015-modules-amd "^6.18.0" -    babel-plugin-transform-es2015-modules-commonjs "^6.18.0" -    babel-plugin-transform-es2015-modules-systemjs "^6.18.0" -    babel-plugin-transform-es2015-modules-umd "^6.18.0" -    babel-plugin-transform-es2015-object-super "^6.3.13" -    babel-plugin-transform-es2015-parameters "^6.18.0" -    babel-plugin-transform-es2015-shorthand-properties "^6.18.0" -    babel-plugin-transform-es2015-spread "^6.3.13" -    babel-plugin-transform-es2015-sticky-regex "^6.3.13" -    babel-plugin-transform-es2015-template-literals "^6.6.0" -    babel-plugin-transform-es2015-typeof-symbol "^6.18.0" -    babel-plugin-transform-es2015-unicode-regex "^6.3.13" -    babel-plugin-transform-regenerator "^6.16.0" +babel-preset-es2015@6.24.1: +  version "6.24.1" +  resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" +  dependencies: +    babel-plugin-check-es2015-constants "^6.22.0" +    babel-plugin-transform-es2015-arrow-functions "^6.22.0" +    babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" +    babel-plugin-transform-es2015-block-scoping "^6.24.1" +    babel-plugin-transform-es2015-classes "^6.24.1" +    babel-plugin-transform-es2015-computed-properties "^6.24.1" +    babel-plugin-transform-es2015-destructuring "^6.22.0" +    babel-plugin-transform-es2015-duplicate-keys "^6.24.1" +    babel-plugin-transform-es2015-for-of "^6.22.0" +    babel-plugin-transform-es2015-function-name "^6.24.1" +    babel-plugin-transform-es2015-literals "^6.22.0" +    babel-plugin-transform-es2015-modules-amd "^6.24.1" +    babel-plugin-transform-es2015-modules-commonjs "^6.24.1" +    babel-plugin-transform-es2015-modules-systemjs "^6.24.1" +    babel-plugin-transform-es2015-modules-umd "^6.24.1" +    babel-plugin-transform-es2015-object-super "^6.24.1" +    babel-plugin-transform-es2015-parameters "^6.24.1" +    babel-plugin-transform-es2015-shorthand-properties "^6.24.1" +    babel-plugin-transform-es2015-spread "^6.22.0" +    babel-plugin-transform-es2015-sticky-regex "^6.24.1" +    babel-plugin-transform-es2015-template-literals "^6.22.0" +    babel-plugin-transform-es2015-typeof-symbol "^6.22.0" +    babel-plugin-transform-es2015-unicode-regex "^6.24.1" +    babel-plugin-transform-regenerator "^6.24.1"  babel-preset-flow@^6.23.0:    version "6.23.0" @@ -889,11 +869,11 @@ babel-preset-flow@^6.23.0:    dependencies:      babel-plugin-transform-flow-strip-types "^6.22.0" -babel-preset-jest@^21.2.0: -  version "21.2.0" -  resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-21.2.0.tgz#ff9d2bce08abd98e8a36d9a8a5189b9173b85638" +babel-preset-jest@^22.0.3: +  version "22.0.3" +  resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-22.0.3.tgz#e2bb6f6b4a509d3ea0931f013db78c5a84856693"    dependencies: -    babel-plugin-jest-hoist "^21.2.0" +    babel-plugin-jest-hoist "^22.0.3"      babel-plugin-syntax-object-rest-spread "^6.13.0"  babel-preset-react@6.24.1: @@ -919,7 +899,7 @@ babel-register@^6.26.0:      mkdirp "^0.5.1"      source-map-support "^0.4.15" -babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0, babel-runtime@^6.9.1: +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0:    version "6.26.0"    resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"    dependencies: @@ -959,12 +939,9 @@ babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26      lodash "^4.17.4"      to-fast-properties "^1.0.3" -babelify@7.3.0: -  version "7.3.0" -  resolved "https://registry.yarnpkg.com/babelify/-/babelify-7.3.0.tgz#aa56aede7067fd7bd549666ee16dc285087e88e5" -  dependencies: -    babel-core "^6.0.14" -    object-assign "^4.0.0" +babelify@8.0.0: +  version "8.0.0" +  resolved "https://registry.yarnpkg.com/babelify/-/babelify-8.0.0.tgz#6f60f5f062bfe7695754ef2403b842014a580ed3"  babylon@^6.18.0:    version "6.18.0" @@ -1010,6 +987,10 @@ block-stream@*:    dependencies:      inherits "~2.0.0" +bluebird@^3.5.0: +  version "3.5.1" +  resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" +  bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:    version "4.11.8"    resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" @@ -1029,6 +1010,21 @@ body-parser@1.18.2:      raw-body "2.3.2"      type-is "~1.6.15" +body-parser@~1.14.0: +  version "1.14.2" +  resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.14.2.tgz#1015cb1fe2c443858259581db53332f8d0cf50f9" +  dependencies: +    bytes "2.2.0" +    content-type "~1.0.1" +    debug "~2.2.0" +    depd "~1.1.0" +    http-errors "~1.3.1" +    iconv-lite "0.4.13" +    on-finished "~2.3.0" +    qs "5.2.0" +    raw-body "~2.1.5" +    type-is "~1.6.10" +  bonjour@^3.5.0:    version "3.5.0"    resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" @@ -1081,6 +1077,10 @@ brorand@^1.0.1:    version "1.1.0"    resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" +browser-process-hrtime@^0.1.2: +  version "0.1.2" +  resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz#425d68a58d3447f02a04aa894187fce8af8b7b8e" +  browser-resolve@^1.11.2:    version "1.11.2"    resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" @@ -1183,10 +1183,36 @@ builtin-status-codes@^3.0.0:    version "3.0.0"    resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" +bytes@2.2.0: +  version "2.2.0" +  resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.2.0.tgz#fd35464a403f6f9117c2de3609ecff9cae000588" + +bytes@2.4.0: +  version "2.4.0" +  resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339" +  bytes@3.0.0:    version "3.0.0"    resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" +cacache@^10.0.1: +  version "10.0.2" +  resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.2.tgz#105a93a162bbedf3a25da42e1939ed99ffb145f8" +  dependencies: +    bluebird "^3.5.0" +    chownr "^1.0.1" +    glob "^7.1.2" +    graceful-fs "^4.1.11" +    lru-cache "^4.1.1" +    mississippi "^1.3.0" +    mkdirp "^0.5.1" +    move-concurrently "^1.0.1" +    promise-inflight "^1.0.1" +    rimraf "^2.6.1" +    ssri "^5.0.0" +    unique-filename "^1.1.0" +    y18n "^3.2.1" +  callsites@^2.0.0:    version "2.0.0"    resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" @@ -1198,7 +1224,7 @@ camelcase-keys@^2.0.0:      camelcase "^2.0.0"      map-obj "^1.0.0" -camelcase@^1.0.2, camelcase@^1.2.1: +camelcase@^1.0.2:    version "1.2.1"    resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" @@ -1210,7 +1236,7 @@ camelcase@^3.0.0:    version "3.0.0"    resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" -camelcase@^4.0.0, camelcase@^4.1.0: +camelcase@^4.1.0:    version "4.1.0"    resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" @@ -1240,6 +1266,14 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000744:    version "1.0.30000746"    resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000746.tgz#c64f95a3925cfd30207a308ed76c1ae96ea09ea0" +case-sensitive-paths-webpack-plugin@^2.1.1: +  version "2.1.1" +  resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.1.1.tgz#3d29ced8c1f124bf6f53846fb3f5894731fdc909" + +caseless@~0.11.0: +  version "0.11.0" +  resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" +  caseless@~0.12.0:    version "0.12.0"    resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -1251,7 +1285,7 @@ center-align@^0.1.1:      align-text "^0.1.3"      lazy-cache "^1.0.3" -chalk@^1.1.1, chalk@^1.1.3: +chalk@^1.1.1, chalk@^1.1.3, chalk@~1.1.1:    version "1.1.3"    resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"    dependencies: @@ -1261,6 +1295,14 @@ chalk@^1.1.1, chalk@^1.1.3:      strip-ansi "^3.0.0"      supports-color "^2.0.0" +chalk@^2.0.0: +  version "2.3.0" +  resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" +  dependencies: +    ansi-styles "^3.1.0" +    escape-string-regexp "^1.0.5" +    supports-color "^4.0.0" +  chalk@^2.0.1, chalk@^2.1.0:    version "2.1.0"    resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" @@ -1284,6 +1326,10 @@ chokidar@^1.6.0, chokidar@^1.7.0:    optionalDependencies:      fsevents "^1.0.0" +chownr@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" +  ci-info@^1.0.0:    version "1.1.1"    resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.1.tgz#47b44df118c48d2597b56d342e7e25791060171a" @@ -1323,6 +1369,14 @@ cliui@^3.2.0:      strip-ansi "^3.0.1"      wrap-ansi "^2.0.0" +cliui@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.0.0.tgz#743d4650e05f36d1ed2575b59638d87322bfbbcc" +  dependencies: +    string-width "^2.1.1" +    strip-ansi "^4.0.0" +    wrap-ansi "^2.0.0" +  clone-deep@^0.3.0:    version "0.3.0"    resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.3.0.tgz#348c61ae9cdbe0edfe053d91ff4cc521d790ede8" @@ -1350,15 +1404,13 @@ code-point-at@^1.0.0:    version "1.1.0"    resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" -coffee-loader@^0.8.0: -  version "0.8.0" -  resolved "https://registry.yarnpkg.com/coffee-loader/-/coffee-loader-0.8.0.tgz#ec48e7327da8e3a99047a99d9bdcfcac12df3694" -  dependencies: -    loader-utils "^1.0.2" +coffee-script@~1.10.0: +  version "1.10.0" +  resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.10.0.tgz#12938bcf9be1948fa006f92e0c4c9e81705108c0" -coffeescript@1.12.7: -  version "1.12.7" -  resolved "https://registry.yarnpkg.com/coffeescript/-/coffeescript-1.12.7.tgz#e57ee4c4867cf7f606bfc4a0f2d550c0981ddd27" +coffeescript@2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/coffeescript/-/coffeescript-2.1.0.tgz#8cb7ce12021ab9f84d8c524f54edbd6141374606"  color-convert@^1.3.0, color-convert@^1.8.2, color-convert@^1.9.0:    version "1.9.0" @@ -1416,29 +1468,28 @@ combined-stream@^1.0.5, combined-stream@~1.0.5:    dependencies:      delayed-stream "~1.0.0" -commander@~2.11.0: -  version "2.11.0" -  resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" +commander@^2.9.0, commander@~2.12.1: +  version "2.12.2" +  resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555"  commondir@^1.0.1:    version "1.0.1"    resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" -complex.js@2.0.4: -  version "2.0.4" -  resolved "https://registry.yarnpkg.com/complex.js/-/complex.js-2.0.4.tgz#d8e7cfb9652d1e853e723386421c1a0ca7a48373" -  compressible@~2.0.11:    version "2.0.11"    resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.11.tgz#16718a75de283ed8e604041625a2064586797d8a"    dependencies:      mime-db ">= 1.29.0 < 2" -compression-webpack-plugin@^1.0.0: -  version "1.0.1" -  resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-1.0.1.tgz#7f0a2af9f642b4f87b5989516a3b9e9b41bb4b3f" +compression-webpack-plugin@^1.0.1: +  version "1.1.3" +  resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-1.1.3.tgz#4b936c627eda09304e3153499ece7830289ab95a"    dependencies: -    async "2.4.1" +    async "^2.4.1" +    cacache "^10.0.1" +    find-cache-dir "^1.0.0" +    serialize-javascript "^1.4.0"      webpack-sources "^1.0.1"  compression@^1.5.2: @@ -1457,6 +1508,14 @@ concat-map@0.0.1:    version "0.0.1"    resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" +concat-stream@^1.5.0: +  version "1.6.0" +  resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" +  dependencies: +    inherits "^2.0.3" +    readable-stream "^2.2.2" +    typedarray "^0.0.6" +  connect-history-api-fallback@^1.3.0:    version "1.3.0"    resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169" @@ -1483,15 +1542,11 @@ content-type-parser@^1.0.1:    version "1.0.1"    resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.1.tgz#c3e56988c53c65127fb46d4032a3a900246fdc94" -content-type@~1.0.4: +content-type@~1.0.1, content-type@~1.0.4:    version "1.0.4"    resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" -convert-source-map@^0.3.3: -  version "0.3.5" -  resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" - -convert-source-map@^1.1.1, convert-source-map@^1.4.0, convert-source-map@^1.5.0: +convert-source-map@^1.4.0, convert-source-map@^1.5.0:    version "1.5.0"    resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" @@ -1503,6 +1558,17 @@ cookie@0.3.1:    version "0.3.1"    resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" +copy-concurrently@^1.0.0: +  version "1.0.5" +  resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" +  dependencies: +    aproba "^1.1.1" +    fs-write-stream-atomic "^1.0.8" +    iferr "^0.1.5" +    mkdirp "^0.5.1" +    rimraf "^2.5.4" +    run-queue "^1.0.0" +  core-js@^1.0.0:    version "1.2.7"    resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" @@ -1609,22 +1675,22 @@ css-color-names@0.0.4:    version "0.0.4"    resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" -css-loader@^0.28.5: -  version "0.28.7" -  resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.7.tgz#5f2ee989dd32edd907717f953317656160999c1b" +css-loader@^0.28.7: +  version "0.28.8" +  resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.8.tgz#ff36381464dea18fe60f2601a060ba6445886bd5"    dependencies: -    babel-code-frame "^6.11.0" +    babel-code-frame "^6.26.0"      css-selector-tokenizer "^0.7.0" -    cssnano ">=2.6.1 <4" +    cssnano "^3.10.0"      icss-utils "^2.1.0"      loader-utils "^1.0.2"      lodash.camelcase "^4.3.0" -    object-assign "^4.0.1" +    object-assign "^4.1.1"      postcss "^5.0.6" -    postcss-modules-extract-imports "^1.0.0" -    postcss-modules-local-by-default "^1.0.1" -    postcss-modules-scope "^1.0.0" -    postcss-modules-values "^1.1.0" +    postcss-modules-extract-imports "^1.1.0" +    postcss-modules-local-by-default "^1.2.0" +    postcss-modules-scope "^1.1.0" +    postcss-modules-values "^1.3.0"      postcss-value-parser "^3.3.0"      source-list-map "^2.0.0" @@ -1640,20 +1706,11 @@ css-unit-converter@^1.1.1:    version "1.1.1"    resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996" -css@^2.0.0: -  version "2.2.1" -  resolved "https://registry.yarnpkg.com/css/-/css-2.2.1.tgz#73a4c81de85db664d4ee674f7d47085e3b2d55dc" -  dependencies: -    inherits "^2.0.1" -    source-map "^0.1.38" -    source-map-resolve "^0.3.0" -    urix "^0.1.0" -  cssesc@^0.1.0:    version "0.1.0"    resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" -"cssnano@>=2.6.1 <4": +cssnano@^3.10.0:    version "3.10.0"    resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38"    dependencies: @@ -1713,6 +1770,10 @@ currently-unhandled@^0.4.1:    dependencies:      array-find-index "^1.0.1" +cyclist@~0.2.2: +  version "0.2.2" +  resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" +  d@1:    version "1.0.0"    resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" @@ -1729,6 +1790,13 @@ date-now@^0.1.4:    version "0.1.4"    resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" +dateformat@~1.0.12: +  version "1.0.12" +  resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" +  dependencies: +    get-stdin "^4.0.1" +    meow "^3.3.0" +  debug@2.6.9, debug@^2.2.0, debug@^2.6.3, debug@^2.6.6, debug@^2.6.8:    version "2.6.9"    resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -1741,17 +1809,19 @@ debug@^3.1.0:    dependencies:      ms "2.0.0" +debug@~2.2.0: +  version "2.2.0" +  resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" +  dependencies: +    ms "0.7.1" +  decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:    version "1.2.0"    resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" -decimal.js@7.2.3: -  version "7.2.3" -  resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-7.2.3.tgz#6434c3b8a8c375780062fc633d0d2bbdb264cc78" - -deep-diff@0.3.4: -  version "0.3.4" -  resolved "https://registry.yarnpkg.com/deep-diff/-/deep-diff-0.3.4.tgz#aac5c39952236abe5f037a2349060ba01b00ae48" +deep-diff@^0.3.5: +  version "0.3.8" +  resolved "https://registry.yarnpkg.com/deep-diff/-/deep-diff-0.3.8.tgz#c01de63efb0eec9798801d40c7e0dae25b582c84"  deep-equal@^1.0.1:    version "1.0.1" @@ -1801,7 +1871,7 @@ delegates@^1.0.0:    version "1.0.0"    resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" -depd@1.1.1, depd@~1.1.1: +depd@1.1.1, depd@~1.1.0, depd@~1.1.1:    version "1.1.1"    resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" @@ -1822,11 +1892,15 @@ detect-indent@^4.0.0:    dependencies:      repeating "^2.0.0" +detect-newline@^2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" +  detect-node@^2.0.3:    version "2.0.3"    resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127" -diff@^3.2.0: +diff@^3.1.0, diff@^3.2.0:    version "3.4.0"    resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c" @@ -1859,6 +1933,19 @@ domain-browser@^1.1.1:    version "1.1.7"    resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" +domexception@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.0.tgz#81fe5df81b3f057052cde3a9fa9bf536a85b9ab0" + +duplexify@^3.1.2, duplexify@^3.4.2: +  version "3.5.1" +  resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.1.tgz#4e1516be68838bc90a49994f0b39a6e5960befcd" +  dependencies: +    end-of-stream "^1.0.0" +    inherits "^2.0.1" +    readable-stream "^2.0.0" +    stream-shift "^1.0.0" +  ecc-jsbn@~0.1.1:    version "0.1.1"    resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" @@ -1899,6 +1986,12 @@ encoding@^0.1.11:    dependencies:      iconv-lite "~0.4.13" +end-of-stream@^1.0.0, end-of-stream@^1.1.0: +  version "1.4.0" +  resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206" +  dependencies: +    once "^1.4.0" +  enhanced-resolve@^3.4.0:    version "3.4.1"    resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" @@ -1908,7 +2001,7 @@ enhanced-resolve@^3.4.0:      object-assign "^4.0.1"      tapable "^0.2.7" -errno@^0.1.3, errno@^0.1.4: +errno@^0.1.3:    version "0.1.4"    resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d"    dependencies: @@ -1920,6 +2013,16 @@ error-ex@^1.2.0:    dependencies:      is-arrayish "^0.2.1" +es-abstract@^1.5.1: +  version "1.10.0" +  resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.10.0.tgz#1ecb36c197842a00d8ee4c2dfd8646bb97d60864" +  dependencies: +    es-to-primitive "^1.1.1" +    function-bind "^1.1.1" +    has "^1.0.1" +    is-callable "^1.1.3" +    is-regex "^1.0.4" +  es-abstract@^1.7.0:    version "1.9.0"    resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.9.0.tgz#690829a07cae36b222e7fd9b75c0d0573eb25227" @@ -1964,9 +2067,9 @@ es6-map@^0.1.3:      es6-symbol "~3.1.1"      event-emitter "~0.3.5" -es6-object-assign@1.0.3: -  version "1.0.3" -  resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.0.3.tgz#40a192e0fda5ee44ee8cf6f5b5d9b47cd0f69b14" +es6-object-assign@1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c"  es6-set@~0.1.5:    version "0.1.5" @@ -2002,7 +2105,7 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:    version "1.0.5"    resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" -escodegen@^1.6.1: +escodegen@^1.9.0:    version "1.9.0"    resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.0.tgz#9811a2f265dc1cd3894420ee3717064b632b8852"    dependencies: @@ -2060,6 +2163,10 @@ event-emitter@~0.3.5:      d "1"      es5-ext "~0.10.14" +eventemitter2@~0.4.13: +  version "0.4.14" +  resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-0.4.14.tgz#8f61b75cde012b2e9eb284d4545583b5643b61ab" +  eventemitter3@1.x.x:    version "1.2.0"    resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" @@ -2099,6 +2206,10 @@ execa@^0.7.0:      signal-exit "^3.0.0"      strip-eof "^1.0.0" +exit@~0.1.1: +  version "0.1.2" +  resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" +  expand-brackets@^0.1.4:    version "0.1.5"    resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" @@ -2111,18 +2222,18 @@ expand-range@^1.8.1:    dependencies:      fill-range "^2.1.0" -expect@^21.2.1: -  version "21.2.1" -  resolved "https://registry.yarnpkg.com/expect/-/expect-21.2.1.tgz#003ac2ac7005c3c29e73b38a272d4afadd6d1d7b" +expect@^22.0.5: +  version "22.0.5" +  resolved "https://registry.yarnpkg.com/expect/-/expect-22.0.5.tgz#a7b64c689e430c8af49a3460eb98adf0e51b5196"    dependencies:      ansi-styles "^3.2.0" -    jest-diff "^21.2.1" -    jest-get-type "^21.2.0" -    jest-matcher-utils "^21.2.1" -    jest-message-util "^21.2.1" -    jest-regex-util "^21.2.0" +    jest-diff "^22.0.5" +    jest-get-type "^22.0.3" +    jest-matcher-utils "^22.0.5" +    jest-message-util "^22.0.3" +    jest-regex-util "^22.0.5" -express@^4.13.3: +express@^4.16.2:    version "4.16.2"    resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c"    dependencies: @@ -2167,9 +2278,9 @@ extglob@^0.3.1:    dependencies:      is-extglob "^1.0.0" -extract-text-webpack-plugin@^3.0.0: -  version "3.0.1" -  resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.1.tgz#605a8893faca1dd49bb0d2ca87493f33fd43d102" +extract-text-webpack-plugin@^3.0.2: +  version "3.0.2" +  resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz#5f043eaa02f9750a9258b78c0a6e0dc1408fb2f7"    dependencies:      async "^2.4.1"      loader-utils "^1.1.0" @@ -2192,7 +2303,7 @@ fastparse@^1.1.1:    version "1.1.1"    resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" -faye-websocket@^0.10.0: +faye-websocket@^0.10.0, faye-websocket@~0.10.0:    version "0.10.0"    resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4"    dependencies: @@ -2210,7 +2321,7 @@ fb-watchman@^2.0.0:    dependencies:      bser "^2.0.0" -fbjs@^0.8.4: +fbjs@^0.8.16:    version "0.8.16"    resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db"    dependencies: @@ -2222,11 +2333,12 @@ fbjs@^0.8.4:      setimmediate "^1.0.5"      ua-parser-js "^0.7.9" -file-loader@^0.11.2: -  version "0.11.2" -  resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.11.2.tgz#4ff1df28af38719a6098093b88c82c71d1794a34" +file-loader@^1.1.5: +  version "1.1.6" +  resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.6.tgz#7b9a8f2c58f00a77fddf49e940f7ac978a3ea0e8"    dependencies:      loader-utils "^1.0.2" +    schema-utils "^0.3.0"  filename-regex@^2.0.0:    version "2.0.1" @@ -2282,10 +2394,23 @@ find-up@^2.0.0, find-up@^2.1.0:    dependencies:      locate-path "^2.0.0" +findup-sync@~0.3.0: +  version "0.3.0" +  resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16" +  dependencies: +    glob "~5.0.0" +  flatten@^1.0.2:    version "1.0.2"    resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" +flush-write-stream@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.2.tgz#c81b90d8746766f1a609a46809946c45dd8ae417" +  dependencies: +    inherits "^2.0.1" +    readable-stream "^2.0.4" +  flux-standard-action@^0.6.1:    version "0.6.1"    resolved "https://registry.yarnpkg.com/flux-standard-action/-/flux-standard-action-0.6.1.tgz#6f34211b94834ea1c3cc30f4e7afad3d0fbf71a2" @@ -2336,24 +2461,27 @@ form-data@~2.3.1:      combined-stream "^1.0.5"      mime-types "^2.1.12" -formatio@1.1.1: -  version "1.1.1" -  resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.1.1.tgz#5ed3ccd636551097383465d996199100e86161e9" +formatio@1.2.0, formatio@^1.2.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.2.0.tgz#f3b2167d9068c4698a8d51f4f760a39a54d818eb"    dependencies: -    samsam "~1.1" +    samsam "1.x"  forwarded@~0.1.2:    version "0.1.2"    resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" -fraction.js@4.0.2: -  version "4.0.2" -  resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.0.2.tgz#0eae896626f334b1bde763371347a83b5575d7f0" -  fresh@0.5.2:    version "0.5.2"    resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" +from2@^2.1.0: +  version "2.3.0" +  resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" +  dependencies: +    inherits "^2.0.1" +    readable-stream "^2.0.0" +  fs-extra@^0.30.0:    version "0.30.0"    resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" @@ -2364,6 +2492,15 @@ fs-extra@^0.30.0:      path-is-absolute "^1.0.0"      rimraf "^2.2.8" +fs-write-stream-atomic@^1.0.8: +  version "1.0.10" +  resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" +  dependencies: +    graceful-fs "^4.1.2" +    iferr "^0.1.5" +    imurmurhash "^0.1.4" +    readable-stream "1 || 2" +  fs.realpath@^1.0.0:    version "1.0.0"    resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -2415,6 +2552,16 @@ gaze@^1.0.0:    dependencies:      globule "^1.0.0" +generate-function@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" + +generate-object-property@^1.1.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" +  dependencies: +    is-property "^1.0.0" +  get-caller-file@^1.0.1:    version "1.0.2"    resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" @@ -2427,6 +2574,10 @@ get-stream@^3.0.0:    version "3.0.0"    resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" +getobject@~0.1.0: +  version "0.1.0" +  resolved "https://registry.yarnpkg.com/getobject/-/getobject-0.1.0.tgz#047a449789fa160d018f5486ed91320b6ec7885c" +  getpass@^0.1.1:    version "0.1.7"    resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -2446,6 +2597,16 @@ glob-parent@^2.0.0:    dependencies:      is-glob "^2.0.0" +glob@^6.0.4: +  version "6.0.4" +  resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" +  dependencies: +    inflight "^1.0.4" +    inherits "2" +    minimatch "2 || 3" +    once "^1.3.0" +    path-is-absolute "^1.0.0" +  glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1:    version "7.1.2"    resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" @@ -2457,6 +2618,27 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1:      once "^1.3.0"      path-is-absolute "^1.0.0" +glob@~5.0.0: +  version "5.0.15" +  resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" +  dependencies: +    inflight "^1.0.4" +    inherits "2" +    minimatch "2 || 3" +    once "^1.3.0" +    path-is-absolute "^1.0.0" + +glob@~7.0.0: +  version "7.0.6" +  resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" +  dependencies: +    fs.realpath "^1.0.0" +    inflight "^1.0.4" +    inherits "2" +    minimatch "^3.0.2" +    once "^1.3.0" +    path-is-absolute "^1.0.0" +  globals@^9.18.0:    version "9.18.0"    resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -2479,12 +2661,6 @@ globule@^1.0.0:      lodash "~4.17.4"      minimatch "~3.0.2" -gonzales-pe@^4.0.3: -  version "4.2.2" -  resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.2.2.tgz#f50a8c17842f13a9007909b7cb32188266e4d74c" -  dependencies: -    minimist "1.1.x" -  graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9:    version "4.1.11"    resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -2493,6 +2669,82 @@ growly@^1.3.0:    version "1.3.0"    resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" +grunt-cli@~1.2.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/grunt-cli/-/grunt-cli-1.2.0.tgz#562b119ebb069ddb464ace2845501be97b35b6a8" +  dependencies: +    findup-sync "~0.3.0" +    grunt-known-options "~1.1.0" +    nopt "~3.0.6" +    resolve "~1.1.0" + +grunt-contrib-watch@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/grunt-contrib-watch/-/grunt-contrib-watch-1.0.0.tgz#84a1a7a1d6abd26ed568413496c73133e990018f" +  dependencies: +    async "^1.5.0" +    gaze "^1.0.0" +    lodash "^3.10.1" +    tiny-lr "^0.2.1" + +grunt-known-options@~1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/grunt-known-options/-/grunt-known-options-1.1.0.tgz#a4274eeb32fa765da5a7a3b1712617ce3b144149" + +grunt-legacy-log-utils@~1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/grunt-legacy-log-utils/-/grunt-legacy-log-utils-1.0.0.tgz#a7b8e2d0fb35b5a50f4af986fc112749ebc96f3d" +  dependencies: +    chalk "~1.1.1" +    lodash "~4.3.0" + +grunt-legacy-log@~1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/grunt-legacy-log/-/grunt-legacy-log-1.0.0.tgz#fb86f1809847bc07dc47843f9ecd6cacb62df2d5" +  dependencies: +    colors "~1.1.2" +    grunt-legacy-log-utils "~1.0.0" +    hooker "~0.2.3" +    lodash "~3.10.1" +    underscore.string "~3.2.3" + +grunt-legacy-util@~1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/grunt-legacy-util/-/grunt-legacy-util-1.0.0.tgz#386aa78dc6ed50986c2b18957265b1b48abb9b86" +  dependencies: +    async "~1.5.2" +    exit "~0.1.1" +    getobject "~0.1.0" +    hooker "~0.2.3" +    lodash "~4.3.0" +    underscore.string "~3.2.3" +    which "~1.2.1" + +grunt-watch-change@^0.1.1: +  version "0.1.1" +  resolved "https://registry.yarnpkg.com/grunt-watch-change/-/grunt-watch-change-0.1.1.tgz#fab1281eb66f44aef02a7f2f1335944c6c05ec08" + +grunt@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/grunt/-/grunt-1.0.1.tgz#e8778764e944b18f32bb0f10b9078475c9dfb56b" +  dependencies: +    coffee-script "~1.10.0" +    dateformat "~1.0.12" +    eventemitter2 "~0.4.13" +    exit "~0.1.1" +    findup-sync "~0.3.0" +    glob "~7.0.0" +    grunt-cli "~1.2.0" +    grunt-known-options "~1.1.0" +    grunt-legacy-log "~1.0.0" +    grunt-legacy-util "~1.0.0" +    iconv-lite "~0.4.13" +    js-yaml "~3.5.2" +    minimatch "~3.0.0" +    nopt "~3.0.6" +    path-is-absolute "~1.0.0" +    rimraf "~2.2.8" +  handle-thing@^1.2.5:    version "1.2.5"    resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" @@ -2515,6 +2767,15 @@ har-schema@^2.0.0:    version "2.0.0"    resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" +har-validator@~2.0.6: +  version "2.0.6" +  resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" +  dependencies: +    chalk "^1.1.1" +    commander "^2.9.0" +    is-my-json-valid "^2.12.4" +    pinkie-promise "^2.0.0" +  har-validator@~4.2.1:    version "4.2.1"    resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" @@ -2607,9 +2868,9 @@ hoek@4.x.x:    version "4.2.0"    resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" -hoist-non-react-statics@^1.0.3: -  version "1.2.0" -  resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb" +hoist-non-react-statics@^2.2.1: +  version "2.3.1" +  resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.3.1.tgz#343db84c6018c650778898240135a1420ee22ce0"  home-or-tmp@^2.0.0:    version "2.0.0" @@ -2618,6 +2879,10 @@ home-or-tmp@^2.0.0:      os-homedir "^1.0.0"      os-tmpdir "^1.0.1" +hooker@~0.2.3: +  version "0.2.3" +  resolved "https://registry.yarnpkg.com/hooker/-/hooker-0.2.3.tgz#b834f723cc4a242aa65963459df6d984c5d3d959" +  hosted-git-info@^2.1.4:    version "2.5.0"    resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" @@ -2658,6 +2923,13 @@ http-errors@1.6.2, http-errors@~1.6.2:      setprototypeof "1.0.3"      statuses ">= 1.3.1 < 2" +http-errors@~1.3.1: +  version "1.3.1" +  resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.3.1.tgz#197e22cdebd4198585e8694ef6786197b91ed942" +  dependencies: +    inherits "~2.0.1" +    statuses "1" +  http-parser-js@>=0.4.0:    version "0.4.9"    resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.9.tgz#ea1a04fb64adff0242e9974f297dd4c3cad271e1" @@ -2720,6 +2992,17 @@ ieee754@^1.1.4:    version "1.1.8"    resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" +iferr@^0.1.5: +  version "0.1.5" +  resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + +import-local@^0.1.1: +  version "0.1.1" +  resolved "https://registry.yarnpkg.com/import-local/-/import-local-0.1.1.tgz#b1179572aacdc11c6a91009fb430dbcab5f668a8" +  dependencies: +    pkg-dir "^2.0.0" +    resolve-cwd "^2.0.0" +  imurmurhash@^0.1.4:    version "0.1.4"    resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -2873,6 +3156,10 @@ is-fullwidth-code-point@^2.0.0:    version "2.0.0"    resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" +is-generator-fn@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a" +  is-glob@^2.0.0, is-glob@^2.0.1:    version "2.0.1"    resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" @@ -2885,6 +3172,15 @@ is-glob@^3.1.0:    dependencies:      is-extglob "^2.1.0" +is-my-json-valid@^2.12.4: +  version "2.17.1" +  resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz#3da98914a70a22f0a8563ef1511a246c6fc55471" +  dependencies: +    generate-function "^2.0.0" +    generate-object-property "^1.1.0" +    jsonpointer "^4.0.0" +    xtend "^4.0.0" +  is-number@^2.1.0:    version "2.1.0"    resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" @@ -2931,6 +3227,10 @@ is-primitive@^2.0.0:    version "2.0.0"    resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" +is-property@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" +  is-regex@^1.0.4:    version "1.0.4"    resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" @@ -2963,6 +3263,10 @@ is-wsl@^1.1.0:    version "1.1.0"    resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" +isarray@0.0.1: +  version "0.0.1" +  resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" +  isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:    version "1.0.0"    resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -2996,33 +3300,33 @@ isstream@~0.1.2:    version "0.1.2"    resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" -istanbul-api@^1.1.1: -  version "1.1.14" -  resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.1.14.tgz#25bc5701f7c680c0ffff913de46e3619a3a6e680" +istanbul-api@^1.1.14: +  version "1.2.1" +  resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.2.1.tgz#0c60a0515eb11c7d65c6b50bba2c6e999acd8620"    dependencies:      async "^2.1.4"      fileset "^2.0.2"      istanbul-lib-coverage "^1.1.1" -    istanbul-lib-hook "^1.0.7" -    istanbul-lib-instrument "^1.8.0" -    istanbul-lib-report "^1.1.1" -    istanbul-lib-source-maps "^1.2.1" -    istanbul-reports "^1.1.2" +    istanbul-lib-hook "^1.1.0" +    istanbul-lib-instrument "^1.9.1" +    istanbul-lib-report "^1.1.2" +    istanbul-lib-source-maps "^1.2.2" +    istanbul-reports "^1.1.3"      js-yaml "^3.7.0"      mkdirp "^0.5.1"      once "^1.4.0" -istanbul-lib-coverage@^1.0.1, istanbul-lib-coverage@^1.1.1: +istanbul-lib-coverage@^1.1.1:    version "1.1.1"    resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da" -istanbul-lib-hook@^1.0.7: -  version "1.0.7" -  resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz#dd6607f03076578fe7d6f2a630cf143b49bacddc" +istanbul-lib-hook@^1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz#8538d970372cb3716d53e55523dd54b557a8d89b"    dependencies:      append-transform "^0.4.0" -istanbul-lib-instrument@^1.4.2, istanbul-lib-instrument@^1.7.5, istanbul-lib-instrument@^1.8.0: +istanbul-lib-instrument@^1.7.5, istanbul-lib-instrument@^1.8.0:    version "1.8.0"    resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.8.0.tgz#66f6c9421cc9ec4704f76f2db084ba9078a2b532"    dependencies: @@ -3034,16 +3338,28 @@ istanbul-lib-instrument@^1.4.2, istanbul-lib-instrument@^1.7.5, istanbul-lib-ins      istanbul-lib-coverage "^1.1.1"      semver "^5.3.0" -istanbul-lib-report@^1.1.1: -  version "1.1.1" -  resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#f0e55f56655ffa34222080b7a0cd4760e1405fc9" +istanbul-lib-instrument@^1.9.1: +  version "1.9.1" +  resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz#250b30b3531e5d3251299fdd64b0b2c9db6b558e" +  dependencies: +    babel-generator "^6.18.0" +    babel-template "^6.16.0" +    babel-traverse "^6.18.0" +    babel-types "^6.18.0" +    babylon "^6.18.0" +    istanbul-lib-coverage "^1.1.1" +    semver "^5.3.0" + +istanbul-lib-report@^1.1.2: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz#922be27c13b9511b979bd1587359f69798c1d425"    dependencies:      istanbul-lib-coverage "^1.1.1"      mkdirp "^0.5.1"      path-parse "^1.0.5"      supports-color "^3.1.2" -istanbul-lib-source-maps@^1.1.0, istanbul-lib-source-maps@^1.2.1: +istanbul-lib-source-maps@^1.2.1:    version "1.2.1"    resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz#a6fe1acba8ce08eebc638e572e294d267008aa0c"    dependencies: @@ -3053,240 +3369,275 @@ istanbul-lib-source-maps@^1.1.0, istanbul-lib-source-maps@^1.2.1:      rimraf "^2.6.1"      source-map "^0.5.3" -istanbul-reports@^1.1.2: -  version "1.1.2" -  resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.2.tgz#0fb2e3f6aa9922bd3ce45d05d8ab4d5e8e07bd4f" +istanbul-lib-source-maps@^1.2.2: +  version "1.2.2" +  resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz#750578602435f28a0c04ee6d7d9e0f2960e62c1c"    dependencies: -    handlebars "^4.0.3" +    debug "^3.1.0" +    istanbul-lib-coverage "^1.1.1" +    mkdirp "^0.5.1" +    rimraf "^2.6.1" +    source-map "^0.5.3" -javascript-natural-sort@0.7.1: -  version "0.7.1" -  resolved "https://registry.yarnpkg.com/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz#f9e2303d4507f6d74355a73664d1440fb5a0ef59" +istanbul-reports@^1.1.3: +  version "1.1.3" +  resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.3.tgz#3b9e1e8defb6d18b1d425da8e8b32c5a163f2d10" +  dependencies: +    handlebars "^4.0.3" -jest-changed-files@^21.2.0: -  version "21.2.0" -  resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-21.2.0.tgz#5dbeecad42f5d88b482334902ce1cba6d9798d29" +jest-changed-files@^22.0.5: +  version "22.0.5" +  resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-22.0.5.tgz#ff944a1100172e9095869f4f5432e3fff09ab4ab"    dependencies:      throat "^4.0.0" -jest-cli@^21.2.1: -  version "21.2.1" -  resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-21.2.1.tgz#9c528b6629d651911138d228bdb033c157ec8c00" +jest-cli@^22.0.4: +  version "22.0.5" +  resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-22.0.5.tgz#a8c7e8bf9371cb0997fa3da97e13e01da8a47593"    dependencies:      ansi-escapes "^3.0.0"      chalk "^2.0.1"      glob "^7.1.2"      graceful-fs "^4.1.11"      is-ci "^1.0.10" -    istanbul-api "^1.1.1" -    istanbul-lib-coverage "^1.0.1" -    istanbul-lib-instrument "^1.4.2" -    istanbul-lib-source-maps "^1.1.0" -    jest-changed-files "^21.2.0" -    jest-config "^21.2.1" -    jest-environment-jsdom "^21.2.1" -    jest-haste-map "^21.2.0" -    jest-message-util "^21.2.1" -    jest-regex-util "^21.2.0" -    jest-resolve-dependencies "^21.2.0" -    jest-runner "^21.2.1" -    jest-runtime "^21.2.1" -    jest-snapshot "^21.2.1" -    jest-util "^21.2.1" +    istanbul-api "^1.1.14" +    istanbul-lib-coverage "^1.1.1" +    istanbul-lib-instrument "^1.8.0" +    istanbul-lib-source-maps "^1.2.1" +    jest-changed-files "^22.0.5" +    jest-config "^22.0.5" +    jest-environment-jsdom "^22.0.5" +    jest-get-type "^22.0.3" +    jest-haste-map "^22.0.3" +    jest-message-util "^22.0.3" +    jest-regex-util "^22.0.5" +    jest-resolve-dependencies "^22.0.5" +    jest-runner "^22.0.5" +    jest-runtime "^22.0.5" +    jest-snapshot "^22.0.5" +    jest-util "^22.0.5" +    jest-worker "^22.0.3"      micromatch "^2.3.11" -    node-notifier "^5.0.2" -    pify "^3.0.0" +    node-notifier "^5.1.2" +    realpath-native "^1.0.0" +    rimraf "^2.5.4"      slash "^1.0.0"      string-length "^2.0.0"      strip-ansi "^4.0.0"      which "^1.2.12" -    worker-farm "^1.3.1" -    yargs "^9.0.0" +    yargs "^10.0.3" -jest-config@^21.2.1: -  version "21.2.1" -  resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-21.2.1.tgz#c7586c79ead0bcc1f38c401e55f964f13bf2a480" +jest-config@^22.0.5: +  version "22.0.5" +  resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-22.0.5.tgz#86471137c5172f1fafdbe3af07f9d516873c8d11"    dependencies:      chalk "^2.0.1"      glob "^7.1.1" -    jest-environment-jsdom "^21.2.1" -    jest-environment-node "^21.2.1" -    jest-get-type "^21.2.0" -    jest-jasmine2 "^21.2.1" -    jest-regex-util "^21.2.0" -    jest-resolve "^21.2.0" -    jest-util "^21.2.1" -    jest-validate "^21.2.1" -    pretty-format "^21.2.1" - -jest-diff@^21.2.1: -  version "21.2.1" -  resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-21.2.1.tgz#46cccb6cab2d02ce98bc314011764bb95b065b4f" +    jest-environment-jsdom "^22.0.5" +    jest-environment-node "^22.0.5" +    jest-get-type "^22.0.3" +    jest-jasmine2 "^22.0.5" +    jest-regex-util "^22.0.5" +    jest-resolve "^22.0.4" +    jest-util "^22.0.5" +    jest-validate "^22.0.5" +    pretty-format "^22.0.5" + +jest-context@^2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/jest-context/-/jest-context-2.1.0.tgz#8d92b636323ce0698f801b6282029feb987c9545" + +jest-diff@^22.0.5: +  version "22.0.5" +  resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-22.0.5.tgz#dbd7e7ff28601179a87777291c1020a3140d9ad4"    dependencies:      chalk "^2.0.1"      diff "^3.2.0" -    jest-get-type "^21.2.0" -    pretty-format "^21.2.1" +    jest-get-type "^22.0.3" +    pretty-format "^22.0.5" -jest-docblock@^21.2.0: -  version "21.2.0" -  resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414" +jest-docblock@^22.0.3: +  version "22.0.3" +  resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-22.0.3.tgz#c33aa22682b9fc68a5373f5f82994428a2ded601" +  dependencies: +    detect-newline "^2.1.0" -jest-environment-jsdom@^21.2.1: -  version "21.2.1" -  resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-21.2.1.tgz#38d9980c8259b2a608ec232deee6289a60d9d5b4" +jest-environment-jsdom@^22.0.5: +  version "22.0.5" +  resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-22.0.5.tgz#7b479452e387aef5b4bf8b9fe03e8be77493f5ea"    dependencies: -    jest-mock "^21.2.0" -    jest-util "^21.2.1" -    jsdom "^9.12.0" +    jest-mock "^22.0.5" +    jest-util "^22.0.5" +    jsdom "^11.5.1" -jest-environment-node@^21.2.1: -  version "21.2.1" -  resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-21.2.1.tgz#98c67df5663c7fbe20f6e792ac2272c740d3b8c8" +jest-environment-node@^22.0.5: +  version "22.0.5" +  resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-22.0.5.tgz#3d77468c5ce763455a46f9469532e35a2f1d94d4"    dependencies: -    jest-mock "^21.2.0" -    jest-util "^21.2.1" +    jest-mock "^22.0.5" +    jest-util "^22.0.5" -jest-get-type@^21.2.0: -  version "21.2.0" -  resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-21.2.0.tgz#f6376ab9db4b60d81e39f30749c6c466f40d4a23" +jest-get-type@^22.0.3: +  version "22.0.3" +  resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.0.3.tgz#fa894b677c0fcd55eff3fd8ee28c7be942e32d36" -jest-haste-map@^21.2.0: -  version "21.2.0" -  resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-21.2.0.tgz#1363f0a8bb4338f24f001806571eff7a4b2ff3d8" +jest-haste-map@^22.0.3: +  version "22.0.3" +  resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-22.0.3.tgz#c9ecb5c871c5465d4bde4139e527fa0dc784aa2d"    dependencies:      fb-watchman "^2.0.0"      graceful-fs "^4.1.11" -    jest-docblock "^21.2.0" +    jest-docblock "^22.0.3" +    jest-worker "^22.0.3"      micromatch "^2.3.11"      sane "^2.0.0" -    worker-farm "^1.3.1" -jest-jasmine2@^21.2.1: -  version "21.2.1" -  resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-21.2.1.tgz#9cc6fc108accfa97efebce10c4308548a4ea7592" +jest-jasmine2@^22.0.5: +  version "22.0.5" +  resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-22.0.5.tgz#daf1c91f6ecc3d1e04bc9e52eef11bd04adfeff3"    dependencies: +    callsites "^2.0.0"      chalk "^2.0.1" -    expect "^21.2.1" +    co "^4.6.0" +    expect "^22.0.5"      graceful-fs "^4.1.11" -    jest-diff "^21.2.1" -    jest-matcher-utils "^21.2.1" -    jest-message-util "^21.2.1" -    jest-snapshot "^21.2.1" -    p-cancelable "^0.3.0" +    is-generator-fn "^1.0.0" +    jest-diff "^22.0.5" +    jest-matcher-utils "^22.0.5" +    jest-message-util "^22.0.3" +    jest-snapshot "^22.0.5" +    source-map-support "^0.5.0" + +jest-leak-detector@^22.0.5: +  version "22.0.5" +  resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-22.0.5.tgz#277f792b6a71fa3a412ddfbd5d14aa190c29bea5" +  dependencies: +    pretty-format "^22.0.5" -jest-matcher-utils@^21.2.1: -  version "21.2.1" -  resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-21.2.1.tgz#72c826eaba41a093ac2b4565f865eb8475de0f64" +jest-matcher-utils@^22.0.5: +  version "22.0.5" +  resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-22.0.5.tgz#f65628364b345703e6042d27fd9cf158f6eb23d3"    dependencies:      chalk "^2.0.1" -    jest-get-type "^21.2.0" -    pretty-format "^21.2.1" +    jest-get-type "^22.0.3" +    pretty-format "^22.0.5" -jest-message-util@^21.2.1: -  version "21.2.1" -  resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-21.2.1.tgz#bfe5d4692c84c827d1dcf41823795558f0a1acbe" +jest-message-util@^22.0.3: +  version "22.0.3" +  resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-22.0.3.tgz#bf674b2762ef2dd53facf2136423fcca264976df"    dependencies: +    "@babel/code-frame" "^7.0.0-beta.35"      chalk "^2.0.1"      micromatch "^2.3.11"      slash "^1.0.0" +    stack-utils "^1.0.1" -jest-mock@^21.2.0: -  version "21.2.0" -  resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-21.2.0.tgz#7eb0770e7317968165f61ea2a7281131534b3c0f" +jest-mock@^22.0.5: +  version "22.0.5" +  resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-22.0.5.tgz#c05b87c1ecc98de5b1eb88d4fcd01ee512a6963a" -jest-regex-util@^21.2.0: -  version "21.2.0" -  resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-21.2.0.tgz#1b1e33e63143babc3e0f2e6c9b5ba1eb34b2d530" +jest-regex-util@^22.0.5: +  version "22.0.5" +  resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-22.0.5.tgz#e05eef614d7211d6320ac443f2996064890aa224" -jest-resolve-dependencies@^21.2.0: -  version "21.2.0" -  resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-21.2.0.tgz#9e231e371e1a736a1ad4e4b9a843bc72bfe03d09" +jest-resolve-dependencies@^22.0.5: +  version "22.0.5" +  resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-22.0.5.tgz#d25e2e97ffbb3002c4a2f215520e0e44718b6cb0"    dependencies: -    jest-regex-util "^21.2.0" +    jest-regex-util "^22.0.5" -jest-resolve@^21.2.0: -  version "21.2.0" -  resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-21.2.0.tgz#068913ad2ba6a20218e5fd32471f3874005de3a6" +jest-resolve@^22.0.4: +  version "22.0.4" +  resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-22.0.4.tgz#a6e47f55e9388c7341b5e9732aedc6fe30906121"    dependencies:      browser-resolve "^1.11.2"      chalk "^2.0.1" -    is-builtin-module "^1.0.0" -jest-runner@^21.2.1: -  version "21.2.1" -  resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-21.2.1.tgz#194732e3e518bfb3d7cbfc0fd5871246c7e1a467" -  dependencies: -    jest-config "^21.2.1" -    jest-docblock "^21.2.0" -    jest-haste-map "^21.2.0" -    jest-jasmine2 "^21.2.1" -    jest-message-util "^21.2.1" -    jest-runtime "^21.2.1" -    jest-util "^21.2.1" -    pify "^3.0.0" +jest-runner@^22.0.5: +  version "22.0.5" +  resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-22.0.5.tgz#69c352828aa8d5ac7ea62b9ac2d8a36cf4a63c53" +  dependencies: +    jest-config "^22.0.5" +    jest-docblock "^22.0.3" +    jest-haste-map "^22.0.3" +    jest-jasmine2 "^22.0.5" +    jest-leak-detector "^22.0.5" +    jest-message-util "^22.0.3" +    jest-runtime "^22.0.5" +    jest-util "^22.0.5" +    jest-worker "^22.0.3"      throat "^4.0.0" -    worker-farm "^1.3.1" -jest-runtime@^21.2.1: -  version "21.2.1" -  resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-21.2.1.tgz#99dce15309c670442eee2ebe1ff53a3cbdbbb73e" +jest-runtime@^22.0.5: +  version "22.0.5" +  resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-22.0.5.tgz#e155adb25f4a5f099987dad502acd597790e5096"    dependencies:      babel-core "^6.0.0" -    babel-jest "^21.2.0" -    babel-plugin-istanbul "^4.0.0" +    babel-jest "^22.0.4" +    babel-plugin-istanbul "^4.1.5"      chalk "^2.0.1"      convert-source-map "^1.4.0"      graceful-fs "^4.1.11" -    jest-config "^21.2.1" -    jest-haste-map "^21.2.0" -    jest-regex-util "^21.2.0" -    jest-resolve "^21.2.0" -    jest-util "^21.2.1" +    jest-config "^22.0.5" +    jest-haste-map "^22.0.3" +    jest-regex-util "^22.0.5" +    jest-resolve "^22.0.4" +    jest-util "^22.0.5"      json-stable-stringify "^1.0.1"      micromatch "^2.3.11" +    realpath-native "^1.0.0"      slash "^1.0.0"      strip-bom "3.0.0"      write-file-atomic "^2.1.0" -    yargs "^9.0.0" +    yargs "^10.0.3" -jest-snapshot@^21.2.1: -  version "21.2.1" -  resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-21.2.1.tgz#29e49f16202416e47343e757e5eff948c07fd7b0" +jest-set@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/jest-set/-/jest-set-2.0.0.tgz#977c2120120e83086e86519c1a84c2a1c800f419" + +jest-snapshot@^22.0.5: +  version "22.0.5" +  resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-22.0.5.tgz#ab52cc5c65c9caacdbc0c6369dc653ffbcace5ed"    dependencies:      chalk "^2.0.1" -    jest-diff "^21.2.1" -    jest-matcher-utils "^21.2.1" +    jest-diff "^22.0.5" +    jest-matcher-utils "^22.0.5"      mkdirp "^0.5.1"      natural-compare "^1.4.0" -    pretty-format "^21.2.1" +    pretty-format "^22.0.5" -jest-util@^21.2.1: -  version "21.2.1" -  resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-21.2.1.tgz#a274b2f726b0897494d694a6c3d6a61ab819bb78" +jest-util@^22.0.5: +  version "22.0.5" +  resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-22.0.5.tgz#d124387b714bfcf3cd46a5b1aa00cc5491d26716"    dependencies:      callsites "^2.0.0"      chalk "^2.0.1"      graceful-fs "^4.1.11" -    jest-message-util "^21.2.1" -    jest-mock "^21.2.0" -    jest-validate "^21.2.1" +    is-ci "^1.0.10" +    jest-message-util "^22.0.3" +    jest-validate "^22.0.5"      mkdirp "^0.5.1" -jest-validate@^21.2.1: -  version "21.2.1" -  resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-21.2.1.tgz#cc0cbca653cd54937ba4f2a111796774530dd3c7" +jest-validate@^22.0.5: +  version "22.0.5" +  resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-22.0.5.tgz#fbc6b9c0d2f583f73070f079e0c53be1c88adba5"    dependencies:      chalk "^2.0.1" -    jest-get-type "^21.2.0" +    jest-get-type "^22.0.3"      leven "^2.1.0" -    pretty-format "^21.2.1" +    pretty-format "^22.0.5" + +jest-worker@^22.0.3: +  version "22.0.3" +  resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-22.0.3.tgz#30433faca67814a8f80559f75ab2ceaa61332fd2" +  dependencies: +    merge-stream "^1.0.1" -jest@21.2.1: -  version "21.2.1" -  resolved "https://registry.yarnpkg.com/jest/-/jest-21.2.1.tgz#c964e0b47383768a1438e3ccf3c3d470327604e1" +jest@22.0.4: +  version "22.0.4" +  resolved "https://registry.yarnpkg.com/jest/-/jest-22.0.4.tgz#d3cf560ece6b825b115dce80b9826ceb40f87961"    dependencies: -    jest-cli "^21.2.1" +    jest-cli "^22.0.4"  jquery-mousewheel@~3.1.13:    version "3.1.13" @@ -3304,13 +3655,20 @@ js-tokens@^3.0.0, js-tokens@^3.0.2:    version "3.0.2"    resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.9.1: +js-yaml@^3.10.0, js-yaml@^3.4.3, js-yaml@^3.7.0:    version "3.10.0"    resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc"    dependencies:      argparse "^1.0.7"      esprima "^4.0.0" +js-yaml@~3.5.2: +  version "3.5.5" +  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.5.5.tgz#0377c38017cabc7322b0d1fbcd25a491641f2fbe" +  dependencies: +    argparse "^1.0.2" +    esprima "^2.6.0" +  js-yaml@~3.7.0:    version "3.7.0"    resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" @@ -3322,28 +3680,33 @@ jsbn@~0.1.0:    version "0.1.1"    resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" -jsdom@^9.12.0: -  version "9.12.0" -  resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.12.0.tgz#e8c546fffcb06c00d4833ca84410fed7f8a097d4" +jsdom@^11.5.1: +  version "11.5.1" +  resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.5.1.tgz#5df753b8d0bca20142ce21f4f6c039f99a992929"    dependencies:      abab "^1.0.3" -    acorn "^4.0.4" -    acorn-globals "^3.1.0" +    acorn "^5.1.2" +    acorn-globals "^4.0.0"      array-equal "^1.0.0" +    browser-process-hrtime "^0.1.2"      content-type-parser "^1.0.1"      cssom ">= 0.3.2 < 0.4.0"      cssstyle ">= 0.2.37 < 0.3.0" -    escodegen "^1.6.1" +    domexception "^1.0.0" +    escodegen "^1.9.0"      html-encoding-sniffer "^1.0.1" -    nwmatcher ">= 1.3.9 < 2.0.0" -    parse5 "^1.5.1" -    request "^2.79.0" +    left-pad "^1.2.0" +    nwmatcher "^1.4.3" +    parse5 "^3.0.2" +    pn "^1.0.0" +    request "^2.83.0" +    request-promise-native "^1.0.3"      sax "^1.2.1"      symbol-tree "^3.2.1" -    tough-cookie "^2.3.2" -    webidl-conversions "^4.0.0" +    tough-cookie "^2.3.3" +    webidl-conversions "^4.0.2"      whatwg-encoding "^1.0.1" -    whatwg-url "^4.3.0" +    whatwg-url "^6.3.0"      xml-name-validator "^2.0.1"  jsesc@^1.3.0: @@ -3394,6 +3757,10 @@ jsonify@~0.0.0:    version "0.0.0"    resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" +jsonpointer@^4.0.0: +  version "4.0.1" +  resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" +  jsprim@^1.2.2:    version "1.4.1"    resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -3403,6 +3770,14 @@ jsprim@^1.2.2:      json-schema "0.2.3"      verror "1.10.0" +just-extend@^1.1.26: +  version "1.1.27" +  resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-1.1.27.tgz#ec6e79410ff914e472652abfa0e603c03d60e905" + +killable@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.0.tgz#da8b84bd47de5395878f95d64d02f2449fe05e6b" +  kind-of@^2.0.1:    version "2.0.1"    resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" @@ -3441,6 +3816,10 @@ lcid@^1.0.0:    dependencies:      invert-kv "^1.0.0" +left-pad@^1.2.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.2.0.tgz#d30a73c6b8201d8f7d8e7956ba9616087a68e0ee" +  leven@^2.1.0:    version "2.1.0"    resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" @@ -3452,6 +3831,10 @@ levn@~0.3.0:      prelude-ls "~1.1.2"      type-check "~0.3.2" +livereload-js@^2.2.0: +  version "2.2.2" +  resolved "https://registry.yarnpkg.com/livereload-js/-/livereload-js-2.2.2.tgz#6c87257e648ab475bc24ea257457edcc1f8d0bc2" +  load-json-file@^1.0.0:    version "1.1.0"    resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -3475,7 +3858,7 @@ loader-runner@^2.3.0:    version "2.3.0"    resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" -loader-utils@^1.0.0, loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0: +loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0:    version "1.1.0"    resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd"    dependencies: @@ -3490,58 +3873,19 @@ locate-path@^2.0.0:      p-locate "^2.0.0"      path-exists "^3.0.0" -lodash-es@^4.2.1: +lodash-es@^4.2.0, lodash-es@^4.2.1:    version "4.17.4"    resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.4.tgz#dcc1d7552e150a0640073ba9cb31d70f032950e7" -lodash._baseassign@^3.0.0: -  version "3.2.0" -  resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" -  dependencies: -    lodash._basecopy "^3.0.0" -    lodash.keys "^3.0.0" - -lodash._basecopy@^3.0.0: -  version "3.0.1" -  resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" -  lodash._basefor@^3.0.0:    version "3.0.3"    resolved "https://registry.yarnpkg.com/lodash._basefor/-/lodash._basefor-3.0.3.tgz#7550b4e9218ef09fad24343b612021c79b4c20c2" -lodash._bindcallback@^3.0.0: -  version "3.0.1" -  resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" - -lodash._createassigner@^3.0.0: -  version "3.1.1" -  resolved "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11" -  dependencies: -    lodash._bindcallback "^3.0.0" -    lodash._isiterateecall "^3.0.0" -    lodash.restparam "^3.0.0" - -lodash._getnative@^3.0.0: -  version "3.9.1" -  resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" - -lodash._isiterateecall@^3.0.0: -  version "3.0.9" -  resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" -  lodash._reinterpolate@~3.0.0:    version "3.0.0"    resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" -lodash.assign@^3.0.0: -  version "3.2.0" -  resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz#3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa" -  dependencies: -    lodash._baseassign "^3.0.0" -    lodash._createassigner "^3.0.0" -    lodash.keys "^3.0.0" - -lodash.assign@^4.0.1, lodash.assign@^4.2.0: +lodash.assign@^4.2.0:    version "4.2.0"    resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" @@ -3553,16 +3897,9 @@ lodash.clonedeep@^4.3.2:    version "4.5.0"    resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" -lodash.defaults@^3.1.2: -  version "3.1.2" -  resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-3.1.2.tgz#c7308b18dbf8bc9372d701a73493c61192bd2e2c" -  dependencies: -    lodash.assign "^3.0.0" -    lodash.restparam "^3.0.0" - -lodash.defaults@^4.0.0, lodash.defaults@^4.2.0: -  version "4.2.0" -  resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" +lodash.get@^4.4.2: +  version "4.4.2" +  resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"  lodash.isarguments@^3.0.0:    version "3.1.0" @@ -3580,14 +3917,6 @@ lodash.isplainobject@^3.2.0:      lodash.isarguments "^3.0.0"      lodash.keysin "^3.0.0" -lodash.keys@^3.0.0: -  version "3.1.2" -  resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" -  dependencies: -    lodash._getnative "^3.0.0" -    lodash.isarguments "^3.0.0" -    lodash.isarray "^3.0.0" -  lodash.keysin@^3.0.0:    version "3.0.8"    resolved "https://registry.yarnpkg.com/lodash.keysin/-/lodash.keysin-3.0.8.tgz#22c4493ebbedb1427962a54b445b2c8a767fb47f" @@ -3603,9 +3932,9 @@ lodash.mergewith@^4.6.0:    version "4.6.0"    resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55" -lodash.restparam@^3.0.0: -  version "3.6.1" -  resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" +lodash.sortby@^4.7.0: +  version "4.7.0" +  resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"  lodash.tail@^4.1.1:    version "4.1.1" @@ -3628,23 +3957,35 @@ lodash.uniq@^4.5.0:    version "4.5.0"    resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" -lodash@4.17.4, "lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@~4.17.4: +lodash@4.17.4, "lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@~4.17.4:    version "4.17.4"    resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" +lodash@^3.10.1, lodash@~3.10.1: +  version "3.10.1" +  resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" + +lodash@~4.3.0: +  version "4.3.0" +  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.3.0.tgz#efd9c4a6ec53f3b05412429915c3e4824e4d25a4" +  loglevel@^1.4.1:    version "1.5.1"    resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.5.1.tgz#189078c94ab9053ee215a0acdbf24244ea0f6502" -lolex@1.3.2: -  version "1.3.2" -  resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.3.2.tgz#7c3da62ffcb30f0f5a80a2566ca24e45d8a01f31" +lolex@^1.6.0: +  version "1.6.0" +  resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.6.0.tgz#3a9a0283452a47d7439e72731b9e07d7386e49f6" + +lolex@^2.2.0: +  version "2.3.1" +  resolved "https://registry.yarnpkg.com/lolex/-/lolex-2.3.1.tgz#3d2319894471ea0950ef64692ead2a5318cff362"  longest@^1.0.1:    version "1.0.1"    resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" -loose-envify@^1.0.0, loose-envify@^1.1.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1:    version "1.3.1"    resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"    dependencies: @@ -3657,7 +3998,7 @@ loud-rejection@^1.0.0:      currently-unhandled "^0.4.1"      signal-exit "^3.0.0" -lru-cache@^4.0.1: +lru-cache@^4.0.1, lru-cache@^4.1.1:    version "4.1.1"    resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55"    dependencies: @@ -3688,18 +4029,6 @@ math-expression-evaluator@^1.2.14:    version "1.2.17"    resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" -mathjs@^3.11.5: -  version "3.16.4" -  resolved "https://registry.yarnpkg.com/mathjs/-/mathjs-3.16.4.tgz#6223a5e423ff79a8f5da0b4f2991c78044bdf3de" -  dependencies: -    complex.js "2.0.4" -    decimal.js "7.2.3" -    fraction.js "4.0.2" -    javascript-natural-sort "0.7.1" -    seed-random "2.2.0" -    tiny-emitter "2.0.0" -    typed-function "0.10.5" -  md5.js@^1.3.4:    version "1.3.4"    resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" @@ -3743,6 +4072,12 @@ merge-descriptors@1.0.1:    version "1.0.1"    resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" +merge-stream@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" +  dependencies: +    readable-stream "^2.0.1" +  merge@^1.1.3:    version "1.2.0"    resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" @@ -3802,7 +4137,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:    version "1.0.1"    resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" -minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.0, minimatch@~3.0.2:    version "3.0.4"    resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"    dependencies: @@ -3812,10 +4147,6 @@ minimist@0.0.8:    version "0.0.8"    resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@1.1.x: -  version "1.1.3" -  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8" -  minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0:    version "1.2.0"    resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" @@ -3824,6 +4155,21 @@ minimist@~0.0.1:    version "0.0.10"    resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" +mississippi@^1.3.0: +  version "1.3.0" +  resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-1.3.0.tgz#d201583eb12327e3c5c1642a404a9cacf94e34f5" +  dependencies: +    concat-stream "^1.5.0" +    duplexify "^3.4.2" +    end-of-stream "^1.1.0" +    flush-write-stream "^1.0.0" +    from2 "^2.1.0" +    parallel-transform "^1.1.0" +    pump "^1.0.0" +    pumpify "^1.3.3" +    stream-each "^1.1.0" +    through2 "^2.0.0" +  mixin-object@^2.0.1:    version "2.0.1"    resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" @@ -3837,6 +4183,21 @@ mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkd    dependencies:      minimist "0.0.8" +move-concurrently@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" +  dependencies: +    aproba "^1.1.1" +    copy-concurrently "^1.0.0" +    fs-write-stream-atomic "^1.0.8" +    mkdirp "^0.5.1" +    rimraf "^2.5.4" +    run-queue "^1.0.3" + +ms@0.7.1: +  version "0.7.1" +  resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" +  ms@2.0.0:    version "2.0.0"    resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -3864,6 +4225,16 @@ negotiator@0.6.1:    version "0.6.1"    resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" +nise@^1.2.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/nise/-/nise-1.2.0.tgz#079d6cadbbcb12ba30e38f1c999f36ad4d6baa53" +  dependencies: +    formatio "^1.2.0" +    just-extend "^1.1.26" +    lolex "^1.6.0" +    path-to-regexp "^1.7.0" +    text-encoding "^0.6.4" +  node-fetch@^1.0.1:    version "1.7.3"    resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" @@ -3925,7 +4296,7 @@ node-libs-browser@^2.0.0:      util "^0.10.3"      vm-browserify "0.0.4" -node-notifier@^5.0.2: +node-notifier@^5.1.2:    version "5.1.2"    resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.1.2.tgz#2fa9e12605fa10009d44549d6fcd8a63dde0e4ff"    dependencies: @@ -3949,9 +4320,9 @@ node-pre-gyp@^0.6.36:      tar "^2.2.1"      tar-pack "^3.4.0" -node-sass@^4.5.3: -  version "4.5.3" -  resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.5.3.tgz#d09c9d1179641239d1b97ffc6231fdcec53e1568" +node-sass@^4.7.2: +  version "4.7.2" +  resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.7.2.tgz#9366778ba1469eb01438a9e8592f4262bcb6794e"    dependencies:      async-foreach "^0.1.3"      chalk "^1.1.1" @@ -3968,11 +4339,12 @@ node-sass@^4.5.3:      nan "^2.3.2"      node-gyp "^3.3.1"      npmlog "^4.0.0" -    request "^2.79.0" -    sass-graph "^2.1.1" +    request "~2.79.0" +    sass-graph "^2.2.4"      stdout-stream "^1.4.0" +    "true-case-path" "^1.0.2" -"nopt@2 || 3": +"nopt@2 || 3", nopt@~3.0.6:    version "3.0.6"    resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"    dependencies: @@ -4036,7 +4408,7 @@ number-is-nan@^1.0.0:    version "1.0.1"    resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" -"nwmatcher@>= 1.3.9 < 2.0.0": +nwmatcher@^1.4.3:    version "1.4.3"    resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.3.tgz#64348e3b3d80f035b40ac11563d278f8b72db89c" @@ -4044,7 +4416,7 @@ oauth-sign@~0.8.1, oauth-sign@~0.8.2:    version "0.8.2"    resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" -object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:    version "4.1.1"    resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -4052,9 +4424,12 @@ object-keys@^1.0.8:    version "1.0.11"    resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" -object-path@^0.9.2: -  version "0.9.2" -  resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.9.2.tgz#0fd9a74fc5fad1ae3968b586bda5c632bd6c05a5" +object.getownpropertydescriptors@^2.0.3: +  version "2.0.3" +  resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" +  dependencies: +    define-properties "^1.1.2" +    es-abstract "^1.5.1"  object.omit@^2.0.0:    version "2.0.1" @@ -4077,7 +4452,7 @@ on-headers@~1.0.1:    version "1.0.1"    resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" -once@^1.3.0, once@^1.3.3, once@^1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0:    version "1.4.0"    resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"    dependencies: @@ -4150,10 +4525,6 @@ osenv@0, osenv@^0.1.4:      os-homedir "^1.0.0"      os-tmpdir "^1.0.0" -p-cancelable@^0.3.0: -  version "0.3.0" -  resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" -  p-finally@^1.0.0:    version "1.0.0"    resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -4176,6 +4547,14 @@ pako@~0.2.0:    version "0.2.9"    resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" +parallel-transform@^1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" +  dependencies: +    cyclist "~0.2.2" +    inherits "^2.0.3" +    readable-stream "^2.1.5" +  parse-asn1@^5.0.0:    version "5.1.0"    resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" @@ -4201,11 +4580,13 @@ parse-json@^2.2.0:    dependencies:      error-ex "^1.2.0" -parse5@^1.5.1: -  version "1.5.1" -  resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" +parse5@^3.0.2: +  version "3.0.3" +  resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" +  dependencies: +    "@types/node" "*" -parseurl@~1.3.2: +parseurl@~1.3.0, parseurl@~1.3.2:    version "1.3.2"    resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" @@ -4227,7 +4608,7 @@ path-exists@^3.0.0:    version "3.0.0"    resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1, path-is-absolute@~1.0.0:    version "1.0.1"    resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -4247,6 +4628,12 @@ path-to-regexp@0.1.7:    version "0.1.7"    resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" +path-to-regexp@^1.7.0: +  version "1.7.0" +  resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" +  dependencies: +    isarray "0.0.1" +  path-type@^1.0.0:    version "1.1.0"    resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" @@ -4318,6 +4705,10 @@ pleeease-filters@^4.0.0:      onecolor "^3.0.4"      postcss "^6.0.1" +pn@^1.0.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" +  portfinder@^1.0.9:    version "1.0.13"    resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9" @@ -4553,6 +4944,15 @@ postcss-image-set-polyfill@^0.3.5:      postcss "^6.0.1"      postcss-media-query-parser "^0.2.3" +postcss-import@^11.0.0: +  version "11.0.0" +  resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-11.0.0.tgz#a962e2df82d3bc5a6da6a386841747204f41ef5b" +  dependencies: +    postcss "^6.0.1" +    postcss-value-parser "^3.2.3" +    read-cache "^1.0.0" +    resolve "^1.1.7" +  postcss-initial@^2.0.0:    version "2.0.0"    resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-2.0.0.tgz#72715f7336e0bb79351d99ee65c4a253a8441ba4" @@ -4583,9 +4983,9 @@ postcss-load-plugins@^2.3.0:      cosmiconfig "^2.1.1"      object-assign "^4.1.0" -postcss-loader@^2.0.6: -  version "2.0.7" -  resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.0.7.tgz#4d2da1489cee0a14f72c0d9440c9ee7eded34345" +postcss-loader@^2.0.9: +  version "2.0.10" +  resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.0.10.tgz#090db0540140bd56a7a7f717c41bc29aeef4c674"    dependencies:      loader-utils "^1.1.0"      postcss "^6.0.0" @@ -4663,27 +5063,27 @@ postcss-minify-selectors@^2.0.4:      postcss "^5.0.14"      postcss-selector-parser "^2.0.0" -postcss-modules-extract-imports@^1.0.0: -  version "1.2.0" -  resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz#66140ecece38ef06bf0d3e355d69bf59d141ea85" +postcss-modules-extract-imports@^1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz#b614c9720be6816eaee35fb3a5faa1dba6a05ddb"    dependencies:      postcss "^6.0.1" -postcss-modules-local-by-default@^1.0.1: +postcss-modules-local-by-default@^1.2.0:    version "1.2.0"    resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069"    dependencies:      css-selector-tokenizer "^0.7.0"      postcss "^6.0.1" -postcss-modules-scope@^1.0.0: +postcss-modules-scope@^1.1.0:    version "1.1.0"    resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90"    dependencies:      css-selector-tokenizer "^0.7.0"      postcss "^6.0.1" -postcss-modules-values@^1.1.0: +postcss-modules-values@^1.3.0:    version "1.3.0"    resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20"    dependencies: @@ -4758,20 +5158,6 @@ postcss-replace-overflow-wrap@^2.0.0:    dependencies:      postcss "^6.0.1" -postcss-sass@^0.1.0: -  version "0.1.0" -  resolved "https://registry.yarnpkg.com/postcss-sass/-/postcss-sass-0.1.0.tgz#0d2a655b5d241ec8f419bb3da38de5ca11746ddb" -  dependencies: -    gonzales-pe "^4.0.3" -    mathjs "^3.11.5" -    postcss "^5.2.6" - -postcss-scss@^1.0.2: -  version "1.0.2" -  resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-1.0.2.tgz#ff45cf3354b879ee89a4eb68680f46ac9bb14f94" -  dependencies: -    postcss "^6.0.3" -  postcss-selector-matches@^3.0.0, postcss-selector-matches@^3.0.1:    version "3.0.1"    resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-3.0.1.tgz#e5634011e13950881861bbdd58c2d0111ffc96ab" @@ -4794,22 +5180,6 @@ postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2, postcss-selector      indexes-of "^1.0.1"      uniq "^1.0.1" -postcss-smart-import@^0.7.5: -  version "0.7.5" -  resolved "https://registry.yarnpkg.com/postcss-smart-import/-/postcss-smart-import-0.7.5.tgz#df9a9c6dd60d916e5e0670d1c57d03af5d3dcc31" -  dependencies: -    babel-runtime "^6.23.0" -    lodash "^4.17.4" -    object-assign "^4.1.1" -    postcss "^6.0.6" -    postcss-sass "^0.1.0" -    postcss-scss "^1.0.2" -    postcss-value-parser "^3.3.0" -    promise-each "^2.2.0" -    read-cache "^1.0.0" -    resolve "^1.3.3" -    sugarss "^1.0.0" -  postcss-svgo@^2.1.1:    version "2.1.6"    resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" @@ -4839,7 +5209,7 @@ postcss-zindex@^2.0.1:      postcss "^5.0.4"      uniqs "^2.0.0" -postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16, postcss@^5.2.6: +postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16:    version "5.2.18"    resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5"    dependencies: @@ -4848,7 +5218,7 @@ postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0      source-map "^0.5.6"      supports-color "^3.2.3" -postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.11, postcss@^6.0.13, postcss@^6.0.3, postcss@^6.0.5, postcss@^6.0.6: +postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.11, postcss@^6.0.13, postcss@^6.0.5, postcss@^6.0.6:    version "6.0.13"    resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.13.tgz#b9ecab4ee00c89db3ec931145bd9590bbf3f125f"    dependencies: @@ -4868,9 +5238,9 @@ preserve@^0.2.0:    version "0.2.0"    resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" -pretty-format@^21.2.1: -  version "21.2.1" -  resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-21.2.1.tgz#ae5407f3cf21066cd011aa1ba5fce7b6a2eddb36" +pretty-format@^22.0.5: +  version "22.0.5" +  resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-22.0.5.tgz#8bad3f12b2b84c76fc57a976bde6770eb4043c69"    dependencies:      ansi-regex "^3.0.0"      ansi-styles "^3.2.0" @@ -4887,15 +5257,13 @@ process@^0.11.0:    version "0.11.10"    resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" -promise-each@^2.2.0: -  version "2.2.0" -  resolved "https://registry.yarnpkg.com/promise-each/-/promise-each-2.2.0.tgz#3353174eff2694481037e04e01f77aa0fb6d1b60" -  dependencies: -    any-promise "^0.1.0" +promise-inflight@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" -promise-polyfill@6.0.2: -  version "6.0.2" -  resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-6.0.2.tgz#d9c86d3dc4dc2df9016e88946defd69b49b41162" +promise-polyfill@7.0.0: +  version "7.0.0" +  resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-7.0.0.tgz#c665b6da1f97e21c3f2f7aa0543c90209127cb15"  promise@^7.1.1:    version "7.3.1" @@ -4903,6 +5271,14 @@ promise@^7.1.1:    dependencies:      asap "~2.0.3" +prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0: +  version "15.6.0" +  resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856" +  dependencies: +    fbjs "^0.8.16" +    loose-envify "^1.3.1" +    object-assign "^4.1.1" +  proxy-addr@~2.0.2:    version "2.0.2"    resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.2.tgz#6571504f47bb988ec8180253f85dd7e14952bdec" @@ -4928,6 +5304,21 @@ public-encrypt@^4.0.0:      parse-asn1 "^5.0.0"      randombytes "^2.0.1" +pump@^1.0.0: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" +  dependencies: +    end-of-stream "^1.1.0" +    once "^1.3.1" + +pumpify@^1.3.3: +  version "1.3.5" +  resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.3.5.tgz#1b671c619940abcaeac0ad0e3a3c164be760993b" +  dependencies: +    duplexify "^3.1.2" +    inherits "^2.0.1" +    pump "^1.0.0" +  punycode@1.3.2:    version "1.3.2"    resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" @@ -4936,14 +5327,30 @@ punycode@^1.2.4, punycode@^1.4.1:    version "1.4.1"    resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" +punycode@^2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" +  q@^1.1.2:    version "1.5.0"    resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" +qs@5.2.0: +  version "5.2.0" +  resolved "https://registry.yarnpkg.com/qs/-/qs-5.2.0.tgz#a9f31142af468cb72b25b30136ba2456834916be" +  qs@6.5.1, qs@~6.5.1:    version "6.5.1"    resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" +qs@~5.1.0: +  version "5.1.0" +  resolved "https://registry.yarnpkg.com/qs/-/qs-5.1.0.tgz#4d932e5c7ea411cca76a312d39a606200fd50cd9" + +qs@~6.3.0: +  version "6.3.2" +  resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c" +  qs@~6.4.0:    version "6.4.0"    resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" @@ -4971,13 +5378,6 @@ querystringify@~1.0.0:    version "1.0.0"    resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz#6286242112c5b712fa654e526652bf6a13ff05cb" -rails-erb-loader@^5.2.1: -  version "5.2.1" -  resolved "https://registry.yarnpkg.com/rails-erb-loader/-/rails-erb-loader-5.2.1.tgz#399b7781b88c129bc621a8256329ed2f855398e9" -  dependencies: -    loader-utils "^1.1.0" -    lodash.defaults "^4.2.0" -  randomatic@^1.1.3:    version "1.1.7"    resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" @@ -5004,6 +5404,14 @@ raw-body@2.3.2:      iconv-lite "0.4.19"      unpipe "1.0.0" +raw-body@~2.1.5: +  version "2.1.7" +  resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.1.7.tgz#adfeace2e4fb3098058014d08c072dcc59758774" +  dependencies: +    bytes "2.4.0" +    iconv-lite "0.4.13" +    unpipe "1.0.0" +  rc@^1.1.7:    version "1.2.1"    resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" @@ -5013,43 +5421,54 @@ rc@^1.1.7:      minimist "^1.2.0"      strip-json-comments "~2.0.1" -react-addons-test-utils@15.3.2: -  version "15.3.2" -  resolved "https://registry.yarnpkg.com/react-addons-test-utils/-/react-addons-test-utils-15.3.2.tgz#c09a44f583425a4a9c1b38444d7a6c3e6f0f41f6" +react-addons-test-utils@15.6.2: +  version "15.6.2" +  resolved "https://registry.yarnpkg.com/react-addons-test-utils/-/react-addons-test-utils-15.6.2.tgz#c12b6efdc2247c10da7b8770d185080a7b047156" -react-dom@15.3.2: -  version "15.3.2" -  resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.3.2.tgz#c46b0aa5380d7b838e7a59c4a7beff2ed315531f" +react-dom@16.2.0: +  version "16.2.0" +  resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.2.0.tgz#69003178601c0ca19b709b33a83369fe6124c044" +  dependencies: +    fbjs "^0.8.16" +    loose-envify "^1.1.0" +    object-assign "^4.1.1" +    prop-types "^15.6.0" -react-redux@4.4.5: -  version "4.4.5" -  resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-4.4.5.tgz#f509a2981be2252d10c629ef7c559347a4aec457" +react-redux@5.0.6: +  version "5.0.6" +  resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.0.6.tgz#23ed3a4f986359d68b5212eaaa681e60d6574946"    dependencies: -    hoist-non-react-statics "^1.0.3" +    hoist-non-react-statics "^2.2.1"      invariant "^2.0.0"      lodash "^4.2.0" +    lodash-es "^4.2.0"      loose-envify "^1.1.0" +    prop-types "^15.5.10" -react-select2-wrapper@^1.0.3: -  version "1.0.3" -  resolved "https://registry.yarnpkg.com/react-select2-wrapper/-/react-select2-wrapper-1.0.3.tgz#67f47ff350abd7d339632ae7cf3eb929604c979a" +react-select2-wrapper@^1.0.4-beta5: +  version "1.0.4-beta5" +  resolved "https://registry.yarnpkg.com/react-select2-wrapper/-/react-select2-wrapper-1.0.4-beta5.tgz#50714f618a9cef379c54f6eddf8bd82d4bba4daa"    dependencies: +    prop-types "^15.5.8"      select2 "^4.0.0"      shallow-equal-fuzzy "^0.0.2" -react-select2@4.0.3: -  version "4.0.3" -  resolved "https://registry.yarnpkg.com/react-select2/-/react-select2-4.0.3.tgz#89cc79e7eafcdff1a2f31f096e8deb483b7503ea" +react-test-renderer@^16.2.0: +  version "16.2.0" +  resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.2.0.tgz#bddf259a6b8fcd8555f012afc8eacc238872a211"    dependencies: -    react-select2-wrapper "^1.0.3" +    fbjs "^0.8.16" +    object-assign "^4.1.1" +    prop-types "^15.6.0" -react@15.3.2: -  version "15.3.2" -  resolved "https://registry.yarnpkg.com/react/-/react-15.3.2.tgz#a7bccd2fee8af126b0317e222c28d1d54528d09e" +react@16.2.0: +  version "16.2.0" +  resolved "https://registry.yarnpkg.com/react/-/react-16.2.0.tgz#a31bd2dab89bff65d42134fa187f24d054c273ba"    dependencies: -    fbjs "^0.8.4" +    fbjs "^0.8.16"      loose-envify "^1.1.0" -    object-assign "^4.1.0" +    object-assign "^4.1.1" +    prop-types "^15.6.0"  read-cache@^1.0.0:    version "1.0.0" @@ -5087,7 +5506,7 @@ read-pkg@^2.0.0:      normalize-package-data "^2.3.2"      path-type "^2.0.0" -readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.6, readable-stream@^2.2.9: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6, readable-stream@^2.2.9:    version "2.3.3"    resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c"    dependencies: @@ -5108,6 +5527,12 @@ readdirp@^2.0.0:      readable-stream "^2.0.2"      set-immediate-shim "^1.0.1" +realpath-native@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.0.tgz#7885721a83b43bd5327609f0ddecb2482305fdf0" +  dependencies: +    util.promisify "^1.0.0" +  redent@^1.0.0:    version "1.0.0"    resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" @@ -5136,11 +5561,11 @@ reduce-function-call@^1.0.1, reduce-function-call@^1.0.2:    dependencies:      balanced-match "^0.4.2" -redux-logger@2.7.4: -  version "2.7.4" -  resolved "https://registry.yarnpkg.com/redux-logger/-/redux-logger-2.7.4.tgz#891e5d29e7f111d08b5781a237b9965b5858c7f8" +redux-logger@3.0.6: +  version "3.0.6" +  resolved "https://registry.yarnpkg.com/redux-logger/-/redux-logger-3.0.6.tgz#f7555966f3098f3c88604c449cf0baf5778274bf"    dependencies: -    deep-diff "0.3.4" +    deep-diff "^0.3.5"  redux-promise@0.5.3:    version "0.5.3" @@ -5148,18 +5573,18 @@ redux-promise@0.5.3:    dependencies:      flux-standard-action "^0.6.1" -redux-thunk@2.1.0: -  version "2.1.0" -  resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.1.0.tgz#c724bfee75dbe352da2e3ba9bc14302badd89a98" +redux-thunk@2.2.0: +  version "2.2.0" +  resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.2.0.tgz#e615a16e16b47a19a515766133d1e3e99b7852e5" -redux@3.6.0: -  version "3.6.0" -  resolved "https://registry.yarnpkg.com/redux/-/redux-3.6.0.tgz#887c2b3d0b9bd86eca2be70571c27654c19e188d" +redux@3.7.2: +  version "3.7.2" +  resolved "https://registry.yarnpkg.com/redux/-/redux-3.7.2.tgz#06b73123215901d25d065be342eb026bc1c8537b"    dependencies:      lodash "^4.2.1"      lodash-es "^4.2.1"      loose-envify "^1.1.0" -    symbol-observable "^1.0.2" +    symbol-observable "^1.0.3"  regenerate@^1.2.1:    version "1.3.3" @@ -5173,10 +5598,6 @@ regenerator-runtime@^0.11.0:    version "0.11.0"    resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" -regenerator-runtime@^0.9.5: -  version "0.9.6" -  resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz#d33eb95d0d2001a4be39659707c51b0cb71ce029" -  regenerator-transform@^0.10.0:    version "0.10.1"    resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" @@ -5191,10 +5612,6 @@ regex-cache@^0.4.2:    dependencies:      is-equal-shallow "^0.1.3" -regex-parser@^2.2.1: -  version "2.2.8" -  resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.8.tgz#da4c0cda5a828559094168930f455f532b6ffbac" -  regexpu-core@^1.0.0:    version "1.0.0"    resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" @@ -5239,7 +5656,21 @@ repeating@^2.0.0:    dependencies:      is-finite "^1.0.0" -request@2, request@^2.79.0: +request-promise-core@1.1.1: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6" +  dependencies: +    lodash "^4.13.1" + +request-promise-native@^1.0.3: +  version "1.0.5" +  resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz#5281770f68e0c9719e5163fd3fab482215f4fda5" +  dependencies: +    request-promise-core "1.1.1" +    stealthy-require "^1.1.0" +    tough-cookie ">=2.3.3" + +request@2, request@^2.83.0:    version "2.83.0"    resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356"    dependencies: @@ -5293,6 +5724,31 @@ request@2.81.0:      tunnel-agent "^0.6.0"      uuid "^3.0.0" +request@~2.79.0: +  version "2.79.0" +  resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" +  dependencies: +    aws-sign2 "~0.6.0" +    aws4 "^1.2.1" +    caseless "~0.11.0" +    combined-stream "~1.0.5" +    extend "~3.0.0" +    forever-agent "~0.6.1" +    form-data "~2.1.1" +    har-validator "~2.0.6" +    hawk "~3.1.3" +    http-signature "~1.1.0" +    is-typedarray "~1.0.0" +    isstream "~0.1.2" +    json-stringify-safe "~5.0.1" +    mime-types "~2.1.7" +    oauth-sign "~0.8.1" +    qs "~6.3.0" +    stringstream "~0.0.4" +    tough-cookie "~2.3.0" +    tunnel-agent "~0.4.1" +    uuid "^3.0.0" +  require-directory@^2.1.1:    version "2.1.1"    resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -5309,45 +5765,26 @@ requires-port@1.0.x, requires-port@1.x.x:    version "1.0.0"    resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" -resolve-url-loader@^2.1.0: -  version "2.1.1" -  resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-2.1.1.tgz#5354e87381aae348371e555172c50816708e6c1c" -  dependencies: -    adjust-sourcemap-loader "^1.1.0" -    camelcase "^4.0.0" -    convert-source-map "^1.1.1" -    loader-utils "^1.0.0" -    lodash.defaults "^4.0.0" -    rework "^1.0.1" -    rework-visit "^1.0.0" -    source-map "^0.5.6" -    urix "^0.1.0" +resolve-cwd@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" +  dependencies: +    resolve-from "^3.0.0" -resolve-url@~0.2.1: -  version "0.2.1" -  resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" +resolve-from@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" -resolve@1.1.7: +resolve@1.1.7, resolve@~1.1.0:    version "1.1.7"    resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" -resolve@^1.3.3: -  version "1.4.0" -  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86" +resolve@^1.1.7: +  version "1.5.0" +  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36"    dependencies:      path-parse "^1.0.5" -rework-visit@^1.0.0: -  version "1.0.0" -  resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" - -rework@^1.0.1: -  version "1.0.1" -  resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" -  dependencies: -    convert-source-map "^0.3.3" -    css "^2.0.0" -  rgb-hex@^2.1.0:    version "2.1.0"    resolved "https://registry.yarnpkg.com/rgb-hex/-/rgb-hex-2.1.0.tgz#c773c5fe2268a25578d92539a82a7a5ce53beda6" @@ -5362,12 +5799,16 @@ right-align@^0.1.1:    dependencies:      align-text "^0.1.1" -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.6.1: +rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1:    version "2.6.2"    resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"    dependencies:      glob "^7.0.5" +rimraf@~2.2.8: +  version "2.2.8" +  resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" +  ripemd160@^2.0.0, ripemd160@^2.0.1:    version "2.0.1"    resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" @@ -5375,17 +5816,19 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:      hash-base "^2.0.0"      inherits "^2.0.1" +run-queue@^1.0.0, run-queue@^1.0.3: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" +  dependencies: +    aproba "^1.1.1" +  safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1:    version "5.1.1"    resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" -samsam@1.1.2: -  version "1.1.2" -  resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.1.2.tgz#bec11fdc83a9fda063401210e40176c3024d1567" - -samsam@~1.1: -  version "1.1.3" -  resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.1.3.tgz#9f5087419b4d091f232571e7fa52e90b0f552621" +samsam@1.x: +  version "1.3.0" +  resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.3.0.tgz#8d1d9350e25622da30de3e44ba692b5221ab7c50"  sane@^2.0.0:    version "2.2.0" @@ -5401,7 +5844,7 @@ sane@^2.0.0:    optionalDependencies:      fsevents "^1.1.1" -sass-graph@^2.1.1: +sass-graph@^2.2.4:    version "2.2.4"    resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49"    dependencies: @@ -5437,10 +5880,6 @@ scss-tokenizer@^0.2.3:      js-base64 "^2.1.8"      source-map "^0.4.2" -seed-random@2.2.0: -  version "2.2.0" -  resolved "https://registry.yarnpkg.com/seed-random/-/seed-random-2.2.0.tgz#2a9b19e250a817099231a5b99a4daf80b7fbed54" -  select-hose@^2.0.0:    version "2.0.0"    resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -5484,6 +5923,10 @@ send@0.16.1:      range-parser "~1.2.0"      statuses "~1.3.1" +serialize-javascript@^1.4.0: +  version "1.4.0" +  resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.4.0.tgz#7c958514db6ac2443a8abc062dc9f7886a7f6005" +  serve-index@^1.7.2:    version "1.9.1"    resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" @@ -5569,14 +6012,17 @@ simple-swizzle@^0.2.2:    dependencies:      is-arrayish "^0.3.1" -sinon@1.17.7: -  version "1.17.7" -  resolved "https://registry.yarnpkg.com/sinon/-/sinon-1.17.7.tgz#4542a4f49ba0c45c05eb2e9dd9d203e2b8efe0bf" +sinon@4.1.3: +  version "4.1.3" +  resolved "https://registry.yarnpkg.com/sinon/-/sinon-4.1.3.tgz#fc599eda47ed9f1a694ce774b94ab44260bd7ac5"    dependencies: -    formatio "1.1.1" -    lolex "1.3.2" -    samsam "1.1.2" -    util ">=0.10.3 <1" +    diff "^3.1.0" +    formatio "1.2.0" +    lodash.get "^4.4.2" +    lolex "^2.2.0" +    nise "^1.2.0" +    supports-color "^4.4.0" +    type-detect "^4.0.5"  slash@^1.0.0:    version "1.0.0" @@ -5622,30 +6068,17 @@ source-list-map@^2.0.0:    version "2.0.0"    resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" -source-map-resolve@^0.3.0: -  version "0.3.1" -  resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.3.1.tgz#610f6122a445b8dd51535a2a71b783dfc1248761" -  dependencies: -    atob "~1.1.0" -    resolve-url "~0.2.1" -    source-map-url "~0.3.0" -    urix "~0.1.0" -  source-map-support@^0.4.15:    version "0.4.18"    resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f"    dependencies:      source-map "^0.5.6" -source-map-url@~0.3.0: -  version "0.3.0" -  resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9" - -source-map@^0.1.38: -  version "0.1.43" -  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" +source-map-support@^0.5.0: +  version "0.5.0" +  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.0.tgz#2018a7ad2bdf8faf2691e5fddab26bed5a2bacab"    dependencies: -    amdefine ">=0.0.4" +    source-map "^0.6.0"  source-map@^0.4.2, source-map@^0.4.4:    version "0.4.4" @@ -5657,7 +6090,7 @@ source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3, sour    version "0.5.7"    resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" -source-map@^0.6.1: +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:    version "0.6.1"    resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" @@ -5716,6 +6149,20 @@ sshpk@^1.7.0:      jsbn "~0.1.0"      tweetnacl "~0.14.0" +ssri@^5.0.0: +  version "5.0.0" +  resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.0.0.tgz#13c19390b606c821f2a10d02b351c1729b94d8cf" +  dependencies: +    safe-buffer "^5.1.0" + +stack-utils@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620" + +statuses@1: +  version "1.4.0" +  resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" +  "statuses@>= 1.3.1 < 2", statuses@~1.3.1:    version "1.3.1"    resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" @@ -5726,6 +6173,10 @@ stdout-stream@^1.4.0:    dependencies:      readable-stream "^2.0.1" +stealthy-require@^1.1.0: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" +  stream-browserify@^2.0.1:    version "2.0.1"    resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" @@ -5733,6 +6184,13 @@ stream-browserify@^2.0.1:      inherits "~2.0.1"      readable-stream "^2.0.2" +stream-each@^1.1.0: +  version "1.2.2" +  resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.2.tgz#8e8c463f91da8991778765873fe4d960d8f616bd" +  dependencies: +    end-of-stream "^1.1.0" +    stream-shift "^1.0.0" +  stream-http@^2.3.1:    version "2.7.2"    resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad" @@ -5743,6 +6201,10 @@ stream-http@^2.3.1:      to-arraybuffer "^1.0.0"      xtend "^4.0.0" +stream-shift@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" +  strict-uri-encode@^1.0.0:    version "1.1.0"    resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" @@ -5762,7 +6224,7 @@ string-width@^1.0.1, string-width@^1.0.2:      is-fullwidth-code-point "^1.0.0"      strip-ansi "^3.0.0" -string-width@^2.0.0: +string-width@^2.0.0, string-width@^2.1.1:    version "2.1.1"    resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"    dependencies: @@ -5819,19 +6281,13 @@ strip-json-comments@~2.0.1:    version "2.0.1"    resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" -style-loader@^0.18.2: -  version "0.18.2" -  resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.18.2.tgz#cc31459afbcd6d80b7220ee54b291a9fd66ff5eb" +style-loader@^0.19.0: +  version "0.19.1" +  resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.19.1.tgz#591ffc80bcefe268b77c5d9ebc0505d772619f85"    dependencies:      loader-utils "^1.0.2"      schema-utils "^0.3.0" -sugarss@^1.0.0: -  version "1.0.0" -  resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-1.0.0.tgz#65e51b3958432fb70d5451a68bb33e32d0cf1ef7" -  dependencies: -    postcss "^6.0.0" -  supports-color@^2.0.0:    version "2.0.0"    resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -5860,9 +6316,9 @@ svgo@^0.7.0:      sax "~1.2.1"      whet.extend "~0.9.9" -symbol-observable@^1.0.2: -  version "1.0.4" -  resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" +symbol-observable@^1.0.3: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.1.0.tgz#5c68fd8d54115d9dfb72a84720549222e8db9b32"  symbol-tree@^3.2.1:    version "3.2.2" @@ -5903,10 +6359,21 @@ test-exclude@^4.1.1:      read-pkg-up "^1.0.1"      require-main-filename "^1.0.1" +text-encoding@^0.6.4: +  version "0.6.4" +  resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19" +  throat@^4.0.0:    version "4.1.0"    resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" +through2@^2.0.0: +  version "2.0.3" +  resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" +  dependencies: +    readable-stream "^2.1.5" +    xtend "~4.0.1" +  thunky@^0.1.0:    version "0.1.0"    resolved "https://registry.yarnpkg.com/thunky/-/thunky-0.1.0.tgz#bf30146824e2b6e67b0f2d7a4ac8beb26908684e" @@ -5921,9 +6388,16 @@ timers-browserify@^2.0.2:    dependencies:      setimmediate "^1.0.4" -tiny-emitter@2.0.0: -  version "2.0.0" -  resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.0.0.tgz#bad327adb1804b42a231afa741532bd884cd09ad" +tiny-lr@^0.2.1: +  version "0.2.1" +  resolved "https://registry.yarnpkg.com/tiny-lr/-/tiny-lr-0.2.1.tgz#b3fdba802e5d56a33c2f6f10794b32e477ac729d" +  dependencies: +    body-parser "~1.14.0" +    debug "~2.2.0" +    faye-websocket "~0.10.0" +    livereload-js "^2.2.0" +    parseurl "~1.3.0" +    qs "~5.1.0"  tmpl@1.0.x:    version "1.0.4" @@ -5937,15 +6411,17 @@ to-fast-properties@^1.0.3:    version "1.0.3"    resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" -tough-cookie@^2.3.2, tough-cookie@~2.3.0, tough-cookie@~2.3.3: +tough-cookie@>=2.3.3, tough-cookie@^2.3.3, tough-cookie@~2.3.0, tough-cookie@~2.3.3:    version "2.3.3"    resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561"    dependencies:      punycode "^1.4.1" -tr46@~0.0.3: -  version "0.0.3" -  resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" +tr46@^1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" +  dependencies: +    punycode "^2.1.0"  trim-newlines@^1.0.0:    version "1.0.0" @@ -5955,6 +6431,12 @@ trim-right@^1.0.1:    version "1.0.1"    resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" +"true-case-path@^1.0.2": +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.2.tgz#7ec91130924766c7f573be3020c34f8fdfd00d62" +  dependencies: +    glob "^6.0.4" +  tty-browserify@0.0.0:    version "0.0.0"    resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" @@ -5965,6 +6447,10 @@ tunnel-agent@^0.6.0:    dependencies:      safe-buffer "^5.0.1" +tunnel-agent@~0.4.1: +  version "0.4.3" +  resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" +  tweetnacl@^0.14.3, tweetnacl@~0.14.0:    version "0.14.5"    resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" @@ -5975,27 +6461,31 @@ type-check@~0.3.2:    dependencies:      prelude-ls "~1.1.2" -type-is@~1.6.15: +type-detect@^4.0.5: +  version "4.0.5" +  resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.5.tgz#d70e5bc81db6de2a381bcaca0c6e0cbdc7635de2" + +type-is@~1.6.10, type-is@~1.6.15:    version "1.6.15"    resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410"    dependencies:      media-typer "0.3.0"      mime-types "~2.1.15" -typed-function@0.10.5: -  version "0.10.5" -  resolved "https://registry.yarnpkg.com/typed-function/-/typed-function-0.10.5.tgz#2e0f18abd065219fab694a446a65c6d1981832c0" +typedarray@^0.0.6: +  version "0.0.6" +  resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"  ua-parser-js@^0.7.9:    version "0.7.16"    resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.16.tgz#50bce6df788dc5f13cdd2e1241332ffe18092243" -uglify-js@3.1.3: -  version "3.1.3" -  resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.1.3.tgz#d61f0453b4718cab01581f3162aa90bab7520b42" +uglify-js@3.3.2: +  version "3.3.2" +  resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.2.tgz#517af20aad7abe15e1e4c9aa33c0cc72aa0107ab"    dependencies: -    commander "~2.11.0" -    source-map "~0.5.1" +    commander "~2.12.1" +    source-map "~0.6.1"  uglify-js@^2.6, uglify-js@^2.8.29:    version "2.8.29" @@ -6022,6 +6512,10 @@ uid-number@^0.0.6:    version "0.0.6"    resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" +underscore.string@~3.2.3: +  version "3.2.3" +  resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.2.3.tgz#806992633665d5e5fcb4db1fb3a862eb68e9e6da" +  uniq@^1.0.1:    version "1.0.1"    resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" @@ -6036,6 +6530,18 @@ uniqs@^2.0.0:    version "2.0.0"    resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" +unique-filename@^1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3" +  dependencies: +    unique-slug "^2.0.0" + +unique-slug@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab" +  dependencies: +    imurmurhash "^0.1.4" +  units-css@^0.4.0:    version "0.4.0"    resolved "https://registry.yarnpkg.com/units-css/-/units-css-0.4.0.tgz#d6228653a51983d7c16ff28f8b9dc3b1ffed3a07" @@ -6047,10 +6553,6 @@ unpipe@1.0.0, unpipe@~1.0.0:    version "1.0.0"    resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" -urix@^0.1.0, urix@~0.1.0: -  version "0.1.0" -  resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" -  url-parse@1.0.x:    version "1.0.5"    resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b" @@ -6076,7 +6578,14 @@ util-deprecate@~1.0.1:    version "1.0.2"    resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" -util@0.10.3, "util@>=0.10.3 <1", util@^0.10.3: +util.promisify@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" +  dependencies: +    define-properties "^1.1.2" +    object.getownpropertydescriptors "^2.0.3" + +util@0.10.3, util@^0.10.3:    version "0.10.3"    resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"    dependencies: @@ -6154,11 +6663,7 @@ wbuf@^1.1.0, wbuf@^1.7.2:    dependencies:      minimalistic-assert "^1.0.0" -webidl-conversions@^3.0.0: -  version "3.0.1" -  resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - -webidl-conversions@^4.0.0: +webidl-conversions@^4.0.1, webidl-conversions@^4.0.2:    version "4.0.2"    resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" @@ -6172,9 +6677,9 @@ webpack-dev-middleware@^1.11.0:      range-parser "^1.0.3"      time-stamp "^2.0.0" -webpack-dev-server@2.9.1: -  version "2.9.1" -  resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.9.1.tgz#7ac9320b61b00eb65b2109f15c82747fc5b93585" +webpack-dev-server@2.9.7: +  version "2.9.7" +  resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.9.7.tgz#100ad6a14775478924d417ca6dcfb9d52a98faed"    dependencies:      ansi-html "0.0.7"      array-includes "^3.0.3" @@ -6182,12 +6687,15 @@ webpack-dev-server@2.9.1:      chokidar "^1.6.0"      compression "^1.5.2"      connect-history-api-fallback "^1.3.0" +    debug "^3.1.0"      del "^3.0.0" -    express "^4.13.3" +    express "^4.16.2"      html-entities "^1.2.0"      http-proxy-middleware "~0.17.4" +    import-local "^0.1.1"      internal-ip "1.2.0"      ip "^1.1.5" +    killable "^1.0.0"      loglevel "^1.4.1"      opn "^5.1.0"      portfinder "^1.0.9" @@ -6201,7 +6709,7 @@ webpack-dev-server@2.9.1:      webpack-dev-middleware "^1.11.0"      yargs "^6.6.0" -webpack-manifest-plugin@^1.3.1: +webpack-manifest-plugin@^1.3.2:    version "1.3.2"    resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-1.3.2.tgz#5ea8ee5756359ddc1d98814324fe43496349a7d4"    dependencies: @@ -6215,9 +6723,9 @@ webpack-sources@^1.0.1:      source-list-map "^2.0.0"      source-map "~0.5.3" -webpack@^3.5.5: -  version "3.7.1" -  resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.7.1.tgz#6046b5c415ff7df7a0dc54c5b6b86098e8b952da" +webpack@^3.10.0: +  version "3.10.0" +  resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.10.0.tgz#5291b875078cf2abf42bdd23afe3f8f96c17d725"    dependencies:      acorn "^5.0.0"      acorn-dynamic-import "^2.0.0" @@ -6263,12 +6771,13 @@ whatwg-fetch@2.0.3, whatwg-fetch@>=0.10.0:    version "2.0.3"    resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" -whatwg-url@^4.3.0: -  version "4.8.0" -  resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-4.8.0.tgz#d2981aa9148c1e00a41c5a6131166ab4683bbcc0" +whatwg-url@^6.3.0: +  version "6.4.0" +  resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.4.0.tgz#08fdf2b9e872783a7a1f6216260a1d66cc722e08"    dependencies: -    tr46 "~0.0.3" -    webidl-conversions "^3.0.0" +    lodash.sortby "^4.7.0" +    tr46 "^1.0.0" +    webidl-conversions "^4.0.1"  whet.extend@~0.9.9:    version "0.9.9" @@ -6288,6 +6797,12 @@ which@1, which@^1.2.12, which@^1.2.9:    dependencies:      isexe "^2.0.0" +which@~1.2.1: +  version "1.2.14" +  resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" +  dependencies: +    isexe "^2.0.0" +  wide-align@^1.1.0:    version "1.1.2"    resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" @@ -6310,13 +6825,6 @@ wordwrap@~1.0.0:    version "1.0.0"    resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" -worker-farm@^1.3.1: -  version "1.5.0" -  resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.0.tgz#adfdf0cd40581465ed0a1f648f9735722afd5c8d" -  dependencies: -    errno "^0.1.4" -    xtend "^4.0.1" -  wrap-ansi@^2.0.0:    version "2.1.0"    resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -6340,7 +6848,7 @@ xml-name-validator@^2.0.1:    version "2.0.1"    resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" -xtend@^4.0.0, xtend@^4.0.1: +xtend@^4.0.0, xtend@~4.0.1:    version "4.0.1"    resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" @@ -6370,6 +6878,29 @@ yargs-parser@^7.0.0:    dependencies:      camelcase "^4.1.0" +yargs-parser@^8.1.0: +  version "8.1.0" +  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950" +  dependencies: +    camelcase "^4.1.0" + +yargs@^10.0.3: +  version "10.1.1" +  resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.1.1.tgz#5fe1ea306985a099b33492001fa19a1e61efe285" +  dependencies: +    cliui "^4.0.0" +    decamelize "^1.1.1" +    find-up "^2.1.0" +    get-caller-file "^1.0.1" +    os-locale "^2.0.0" +    require-directory "^2.1.1" +    require-main-filename "^1.0.1" +    set-blocking "^2.0.0" +    string-width "^2.0.0" +    which-module "^2.0.0" +    y18n "^3.2.1" +    yargs-parser "^8.1.0" +  yargs@^6.6.0:    version "6.6.0"    resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" @@ -6424,24 +6955,6 @@ yargs@^8.0.2:      y18n "^3.2.1"      yargs-parser "^7.0.0" -yargs@^9.0.0: -  version "9.0.1" -  resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.1.tgz#52acc23feecac34042078ee78c0c007f5085db4c" -  dependencies: -    camelcase "^4.1.0" -    cliui "^3.2.0" -    decamelize "^1.1.1" -    get-caller-file "^1.0.1" -    os-locale "^2.0.0" -    read-pkg-up "^2.0.0" -    require-directory "^2.1.1" -    require-main-filename "^1.0.1" -    set-blocking "^2.0.0" -    string-width "^2.0.0" -    which-module "^2.0.0" -    y18n "^3.2.1" -    yargs-parser "^7.0.0" -  yargs@~3.10.0:    version "3.10.0"    resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" | 
