diff --git a/configurations/default/settings.yml b/configurations/default/settings.yml index ce82a2e..149bcc3 100644 --- a/configurations/default/settings.yml +++ b/configurations/default/settings.yml @@ -1,7 +1,7 @@ cloudfront: EJKZ46R7IC1BB entries: - src/index.js:assets/index.js - - src/containers/indianapolis/style.css:assets/index.css + - src/index.css:assets/index.css env: development flyle: true s3bucket: taui diff --git a/package.json b/package.json index b566184..debe378 100644 --- a/package.json +++ b/package.json @@ -24,11 +24,11 @@ }, "homepage": "https://github.com/conveyal/taui", "devDependencies": { - "mastarm": "^2.0.0", - "semantic-release": "^4.3.5" + "mastarm": "^3.0.0", + "semantic-release": "^6.3.2" }, "dependencies": { - "@conveyal/woonerf": "^0.2.1", + "@conveyal/woonerf": "^0.3.1", "browsochrones": "^0.9.1", "color": "^0.11.1", "debug": "^2.2.0", diff --git a/src/actions/index.js b/src/actions/index.js index 7b13893..3a52a1f 100644 --- a/src/actions/index.js +++ b/src/actions/index.js @@ -5,7 +5,7 @@ import {createAction} from 'redux-actions' import fetch, { incrementFetches as incrementWork, decrementFetches as decrementWork -} from '@conveyal/woonerf/build/lib/fetch' +} from '@conveyal/woonerf/fetch' import featureToLabel from '../utils/feature-to-label' import {setKeyTo} from '../utils/hash' diff --git a/src/containers/indianapolis/index.js b/src/components/application.js similarity index 82% rename from src/containers/indianapolis/index.js rename to src/components/application.js index f84e302..ee0fcaf 100644 --- a/src/containers/indianapolis/index.js +++ b/src/components/application.js @@ -1,28 +1,17 @@ import lonlng from 'lonlng' import React, {Component, PropTypes} from 'react' -import {connect} from 'react-redux' -import { - clearEnd, - clearIsochrone, - clearStart, - setBaseActive, - setComparisonActive, - updateDestination, - updateOrigin, - updateSelectedTimeCutoff -} from '../../actions' -import featureToLabel from '../../utils/feature-to-label' +import featureToLabel from '../utils/feature-to-label' import Form from './form' -import Fullscreen from '../../components/fullscreen' -import Icon from '../../components/icon' -import Log from '../../components/log' +import Fullscreen from './fullscreen' +import Icon from './icon' +import Log from './log' import Map from './map' -import messages from '../../utils/messages' -import RouteCard from '../../components/route-card' -import initializeBrowsochrones from '../../utils/initialize-browsochrones' +import messages from '../utils/messages' +import RouteCard from './route-card' +import initializeBrowsochrones from '../utils/initialize-browsochrones' -class Indianapolis extends Component { +export default class Application extends Component { static propTypes = { actionLog: PropTypes.arrayOf(PropTypes.object), browsochrones: PropTypes.object.isRequired, @@ -245,23 +234,3 @@ class Indianapolis extends Component { ) } } - -function mapStateToProps (state, ownProps) { - return state -} - -function mapDispatchToProps (dispatch, ownProps) { - return { - clearEnd: () => dispatch(clearEnd()), - clearIsochrone: () => dispatch(clearIsochrone()), - clearStart: () => dispatch(clearStart()), - initializeBrowsochrones: (actions) => dispatch(actions), - moveOrigin: (options) => dispatch(updateOrigin(options)), - moveDestination: (options) => dispatch(updateDestination(options)), - onTimeCutoffChange: (options) => dispatch(updateSelectedTimeCutoff(options)), - setBaseActive: () => dispatch(setBaseActive()), - setComparisonActive: () => dispatch(setComparisonActive()) - } -} - -export default connect(mapStateToProps, mapDispatchToProps)(Indianapolis) diff --git a/src/components/deep-equal.js b/src/components/deep-equal.js deleted file mode 100644 index 7636209..0000000 --- a/src/components/deep-equal.js +++ /dev/null @@ -1,14 +0,0 @@ -import isEqual from 'lodash.isequal' -import {Component} from 'react' - -function shouldComponentUpdate (newProps, newState) { - return !isEqual(newProps, this.props) || !isEqual(newState, this.state) -} - -export default class DeepEqual extends Component {} -DeepEqual.prototype.shouldComponentUpdate = shouldComponentUpdate - -export function pure (Component) { - Component.prototype.shouldComponentUpdate = shouldComponentUpdate - return Component -} diff --git a/src/containers/indianapolis/form.js b/src/components/form.js similarity index 89% rename from src/containers/indianapolis/form.js rename to src/components/form.js index d716633..fa026be 100644 --- a/src/containers/indianapolis/form.js +++ b/src/components/form.js @@ -1,12 +1,12 @@ +import Pure from '@conveyal/woonerf/components/pure' import React from 'react' import Geocoder from 'react-select-geocoder' -import DeepEqual from '../../components/deep-equal' -import featureToLabel from '../../utils/feature-to-label' -import {search} from '../../utils/mapbox-geocoder' -import messages from '../../utils/messages' +import featureToLabel from '../utils/feature-to-label' +import {search} from '../utils/mapbox-geocoder' +import messages from '../utils/messages' -export default class Form extends DeepEqual { +export default class Form extends Pure { render () { const { geocoder, diff --git a/src/components/fullscreen/index.js b/src/components/fullscreen/index.js index 1d27268..54f31a0 100644 --- a/src/components/fullscreen/index.js +++ b/src/components/fullscreen/index.js @@ -1,7 +1,8 @@ +import Pure from '@conveyal/woonerf/components/pure' import React from 'react' -import {pure} from '../deep-equal' - -const Fullscreen = (props) =>
{props.children}
- -export default pure(Fullscreen) +export default class Fullscreen extends Pure { + render () { + return
{this.props.children}
+ } +} diff --git a/src/components/icon.js b/src/components/icon.js index 197a18d..317718f 100644 --- a/src/components/icon.js +++ b/src/components/icon.js @@ -1,15 +1,17 @@ +import Pure from '@conveyal/woonerf/components/pure' import React from 'react' -import {pure} from './deep-equal' +export default class Icon extends Pure { + render () { + const { + className = '', + type, + ...props + } = this.props -const Icon = ({ - className = '', - type, - ...props -}) => - - -export default pure(Icon) + return + } +} diff --git a/src/components/log-item/index.js b/src/components/log-item/index.js index 14ec012..388c5ec 100644 --- a/src/components/log-item/index.js +++ b/src/components/log-item/index.js @@ -1,11 +1,10 @@ +import Pure from '@conveyal/woonerf/components/pure' import React, {PropTypes} from 'react' import moment from 'moment' -import DeepEqual from '../deep-equal' - const format = 'HH:mm:ss' -export default class LogItem extends DeepEqual { +export default class LogItem extends Pure { static propTypes = { createdAt: PropTypes.object, level: PropTypes.string, diff --git a/src/components/log/index.js b/src/components/log/index.js index 4ad95cf..8442a84 100644 --- a/src/components/log/index.js +++ b/src/components/log/index.js @@ -1,9 +1,9 @@ +import Pure from '@conveyal/woonerf/components/pure' import React, {PropTypes} from 'react' -import DeepEqual from '../deep-equal' import LogItem from '../log-item' -export default class Log extends DeepEqual { +export default class Log extends Pure { static propTypes = { items: PropTypes.arrayOf(PropTypes.object).isRequired }; diff --git a/src/containers/indianapolis/map.js b/src/components/map.js similarity index 88% rename from src/containers/indianapolis/map.js rename to src/components/map.js index 2c34781..a6201a1 100644 --- a/src/containers/indianapolis/map.js +++ b/src/components/map.js @@ -1,24 +1,25 @@ +import Pure from '@conveyal/woonerf/components/pure' import {Browser} from 'leaflet' -import {mapbox} from 'mapbox.js' import React, {PropTypes} from 'react' import {GeoJson, Map as LeafletMap, Marker, Popup, TileLayer, ZoomControl} from 'react-leaflet' -import DeepEqual from '../../components/deep-equal' -import Icon from '../../components/icon' -import messages from '../../utils/messages' -import TransitiveLayer from '../../components/transitive-map-layer' -import transitiveStyle from './transitive-style' +import Icon from './icon' +import leafletIcon from '../utils/leaflet-icons' +import messages from '../utils/messages' +import TransitiveLayer from './transitive-map-layer' +import transitiveStyle from '../transitive-style' -const startIcon = mapbox.marker.icon({ - 'marker-size': 'large', - 'marker-symbol': 'star', - 'marker-color': '#4269a4' +const startIcon = leafletIcon({ + icon: 'play', + markerColor: 'darkblue' }) -const endIcon = mapbox.marker.icon({ - 'marker-color': '#ff8c00' + +const endIcon = leafletIcon({ + icon: 'stop', + markerColor: 'orange' }) -export default class Map extends DeepEqual { +export default class Map extends Pure { static propTypes = { centerCoordinates: PropTypes.arrayOf(PropTypes.number), clearStartAndEnd: PropTypes.func.isRequired, diff --git a/src/components/route-card.js b/src/components/route-card.js index 73f6844..c4f8aa1 100644 --- a/src/components/route-card.js +++ b/src/components/route-card.js @@ -1,14 +1,14 @@ +import Pure from '@conveyal/woonerf/components/pure' import Color from 'color' import React from 'react' import toCapitalCase from 'lodash.capitalize' import toSpaceCase from 'lodash.lowercase' import unique from 'lodash.uniq' -import DeepEqual from './deep-equal' import Icon from './icon' import messages from '../utils/messages' -export default class RouteCard extends DeepEqual { +export default class RouteCard extends Pure { render () { const { active, diff --git a/src/components/timecutoff-select.js b/src/components/timecutoff-select.js deleted file mode 100644 index 3342837..0000000 --- a/src/components/timecutoff-select.js +++ /dev/null @@ -1,32 +0,0 @@ -import React, {PropTypes} from 'react' -import {connect} from 'react-redux' - -import DeepEqual from './deep-equal' - -class TimeCutoffSelect extends DeepEqual { - static propTypes = { - className: PropTypes.string, - onChange: PropTypes.func.isRequired, - times: PropTypes.arrayOf(PropTypes.object).isRequired, - selected: PropTypes.number - }; - - render () { - const {className, onChange, times, selected} = this.props - - return ( - - ) - } -} - -function mapStateToProps (state, currentProps) { - return state.timeCutoff -} - -export default connect(mapStateToProps)(TimeCutoffSelect) diff --git a/src/containers/application.js b/src/containers/application.js new file mode 100644 index 0000000..4512471 --- /dev/null +++ b/src/containers/application.js @@ -0,0 +1,33 @@ +import {connect} from 'react-redux' + +import { + clearEnd, + clearIsochrone, + clearStart, + setBaseActive, + setComparisonActive, + updateDestination, + updateOrigin, + updateSelectedTimeCutoff +} from '../actions' +import Application from '../components/application' + +function mapStateToProps (state, ownProps) { + return state +} + +function mapDispatchToProps (dispatch, ownProps) { + return { + clearEnd: () => dispatch(clearEnd()), + clearIsochrone: () => dispatch(clearIsochrone()), + clearStart: () => dispatch(clearStart()), + initializeBrowsochrones: (actions) => dispatch(actions), + moveOrigin: (options) => dispatch(updateOrigin(options)), + moveDestination: (options) => dispatch(updateDestination(options)), + onTimeCutoffChange: (options) => dispatch(updateSelectedTimeCutoff(options)), + setBaseActive: () => dispatch(setBaseActive()), + setComparisonActive: () => dispatch(setComparisonActive()) + } +} + +export default connect(mapStateToProps, mapDispatchToProps)(Application) diff --git a/src/containers/indianapolis/style.css b/src/index.css similarity index 98% rename from src/containers/indianapolis/style.css rename to src/index.css index b085900..98c2b63 100644 --- a/src/containers/indianapolis/style.css +++ b/src/index.css @@ -8,6 +8,7 @@ @import url(src/components/log/style.css); @import url(src/components/log-item/style.css); @import url(src/components/transitive-map-layer/style.css); +@import url(src/utils/leaflet-icons/index.css); body { font-size: 16px; diff --git a/src/index.js b/src/index.js index 764c439..0ae2515 100644 --- a/src/index.js +++ b/src/index.js @@ -1,9 +1,9 @@ -import mount from '@conveyal/woonerf/build/lib/mount' +import mount from '@conveyal/woonerf/mount' -import Indianapolis from './containers/indianapolis' +import Application from './containers/application' import reducers from './reducers' mount({ - app: Indianapolis, + app: Application, reducers }) diff --git a/src/reducers/ui.js b/src/reducers/ui.js index 17ce603..38e5bb7 100644 --- a/src/reducers/ui.js +++ b/src/reducers/ui.js @@ -1,4 +1,4 @@ -import {DECREMENT_FETCH, INCREMENT_FETCH} from '@conveyal/woonerf/build/lib/fetch' +import {DECREMENT_FETCH, INCREMENT_FETCH} from '@conveyal/woonerf/fetch' import {handleActions} from 'redux-actions' export default handleActions({ diff --git a/src/containers/indianapolis/transitive-style.js b/src/transitive-style.js similarity index 100% rename from src/containers/indianapolis/transitive-style.js rename to src/transitive-style.js diff --git a/src/utils/leaflet-icons/images/markers-matte.png b/src/utils/leaflet-icons/images/markers-matte.png new file mode 100644 index 0000000..1782586 Binary files /dev/null and b/src/utils/leaflet-icons/images/markers-matte.png differ diff --git a/src/utils/leaflet-icons/images/markers-matte@2x.png b/src/utils/leaflet-icons/images/markers-matte@2x.png new file mode 100644 index 0000000..c981244 Binary files /dev/null and b/src/utils/leaflet-icons/images/markers-matte@2x.png differ diff --git a/src/utils/leaflet-icons/images/markers-plain.png b/src/utils/leaflet-icons/images/markers-plain.png new file mode 100644 index 0000000..763f358 Binary files /dev/null and b/src/utils/leaflet-icons/images/markers-plain.png differ diff --git a/src/utils/leaflet-icons/images/markers-shadow.png b/src/utils/leaflet-icons/images/markers-shadow.png new file mode 100644 index 0000000..33cf955 Binary files /dev/null and b/src/utils/leaflet-icons/images/markers-shadow.png differ diff --git a/src/utils/leaflet-icons/images/markers-shadow@2x.png b/src/utils/leaflet-icons/images/markers-shadow@2x.png new file mode 100644 index 0000000..1116503 Binary files /dev/null and b/src/utils/leaflet-icons/images/markers-shadow@2x.png differ diff --git a/src/utils/leaflet-icons/images/markers-soft.png b/src/utils/leaflet-icons/images/markers-soft.png new file mode 100644 index 0000000..9ee4c34 Binary files /dev/null and b/src/utils/leaflet-icons/images/markers-soft.png differ diff --git a/src/utils/leaflet-icons/images/markers-soft@2x.png b/src/utils/leaflet-icons/images/markers-soft@2x.png new file mode 100644 index 0000000..540ce63 Binary files /dev/null and b/src/utils/leaflet-icons/images/markers-soft@2x.png differ diff --git a/src/utils/leaflet-icons/index.css b/src/utils/leaflet-icons/index.css new file mode 100644 index 0000000..1d7d3e7 --- /dev/null +++ b/src/utils/leaflet-icons/index.css @@ -0,0 +1,119 @@ + +/* Marker setup */ +.awesome-marker { + background: url('images/markers-soft.png') no-repeat 0 0; + width: 35px; + height: 46px; + position:absolute; + left:0; + top:0; + display: block; + text-align: center; +} + +.awesome-marker-shadow { + background: url('images/markers-shadow.png') no-repeat 0 0; + width: 36px; + height: 16px; +} + +/* Retina displays */ +@media (min--moz-device-pixel-ratio: 1.5),(-o-min-device-pixel-ratio: 3/2), +(-webkit-min-device-pixel-ratio: 1.5),(min-device-pixel-ratio: 1.5),(min-resolution: 1.5dppx) { + .awesome-marker { + background-image: url('images/markers-soft@2x.png'); + background-size: 720px 46px; + } + .awesome-marker-shadow { + background-image: url('images/markers-shadow@2x.png'); + background-size: 35px 16px; + } +} + +.awesome-marker i { + color: #333; + margin-top: 10px; + display: inline-block; + font-size: 14px; +} + +.awesome-marker .icon-white { + color: #fff; +} + +/* Colors */ +.awesome-marker-icon-red { + background-position: 0 0; +} + +.awesome-marker-icon-darkred { + background-position: -180px 0; +} + +.awesome-marker-icon-lightred { + background-position: -360px 0; +} + +.awesome-marker-icon-orange { + background-position: -36px 0; +} + +.awesome-marker-icon-beige { + background-position: -396px 0; +} + +.awesome-marker-icon-green { + background-position: -72px 0; +} + +.awesome-marker-icon-darkgreen { + background-position: -252px 0; +} + +.awesome-marker-icon-lightgreen { + background-position: -432px 0; +} + +.awesome-marker-icon-blue { + background-position: -108px 0; +} + +.awesome-marker-icon-darkblue { + background-position: -216px 0; +} + +.awesome-marker-icon-lightblue { + background-position: -468px 0; +} + +.awesome-marker-icon-purple { + background-position: -144px 0; +} + +.awesome-marker-icon-darkpurple { + background-position: -288px 0; +} + +.awesome-marker-icon-pink { + background-position: -504px 0; +} + +.awesome-marker-icon-cadetblue { + background-position: -324px 0; +} + +.awesome-marker-icon-white { + background-position: -574px 0; +} + +.awesome-marker-icon-gray { + background-position: -648px 0; +} + +.awesome-marker-icon-lightgray { + background-position: -612px 0; +} + +.awesome-marker-icon-black { + background-position: -682px 0; +} diff --git a/src/utils/leaflet-icons/index.js b/src/utils/leaflet-icons/index.js new file mode 100644 index 0000000..f249152 --- /dev/null +++ b/src/utils/leaflet-icons/index.js @@ -0,0 +1,103 @@ +import L from 'leaflet' + +const Icon = L.Icon.extend({ + options: { + iconSize: [35, 45], + iconAnchor: [17, 42], + popupAnchor: [1, -32], + shadowAnchor: [10, 12], + shadowSize: [36, 16], + className: 'awesome-marker', + prefix: 'fa', + spinClass: 'fa-spin', + extraClasses: '', + icon: 'home', + markerColor: 'blue', + iconColor: 'white' + }, + + initialize: function (options) { + options = L.Util.setOptions(this, options) + }, + + createIcon: function () { + const div = document.createElement('div') + const options = this.options + + if (options.icon) { + div.innerHTML = this._createInner() + } + + if (options.bgPos) { + div.style.backgroundPosition = (-options.bgPos.x) + 'px ' + (-options.bgPos.y) + 'px' + } + + this._setIconStyles(div, 'icon-' + options.markerColor) + return div + }, + + _createInner: function () { + let iconClass + let iconSpinClass = '' + let iconColorClass = '' + let iconColorStyle = '' + const options = this.options + + if (options.icon.slice(0, options.prefix.length + 1) === options.prefix + '-') { + iconClass = options.icon + } else { + iconClass = options.prefix + '-' + options.icon + } + + if (options.spin && typeof options.spinClass === 'string') { + iconSpinClass = options.spinClass + } + + if (options.iconColor) { + if (options.iconColor === 'white' || options.iconColor === 'black') { + iconColorClass = 'icon-' + options.iconColor + } else { + iconColorStyle = "style='color: " + options.iconColor + "' " + } + } + + return `` + }, + + _setIconStyles: function (img, name) { + const options = this.options + const size = L.point(options[name === 'shadow' ? 'shadowSize' : 'iconSize']) + let anchor + + if (name === 'shadow') { + anchor = L.point(options.shadowAnchor || options.iconAnchor) + } else { + anchor = L.point(options.iconAnchor) + } + + if (!anchor && size) { + anchor = size.divideBy(2, true) + } + + img.className = 'awesome-marker-' + name + ' ' + options.className + + if (anchor) { + img.style.marginLeft = (-anchor.x) + 'px' + img.style.marginTop = (-anchor.y) + 'px' + } + + if (size) { + img.style.width = size.x + 'px' + img.style.height = size.y + 'px' + } + }, + + createShadow: function () { + const div = document.createElement('div') + + this._setIconStyles(div, 'shadow') + return div + } +}) + +export default function (options) { return new Icon(options) } diff --git a/yarn.lock b/yarn.lock index c4232c1..e835d33 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,9 +2,13 @@ # yarn lockfile v1 -"@conveyal/woonerf@^0.2.1": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@conveyal/woonerf/-/woonerf-0.2.1.tgz#6147da15aabf6f2747dea1dfb39d66c393be814a" +"@bahmutov/parse-github-repo-url@^0.1.0": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@bahmutov/parse-github-repo-url/-/parse-github-repo-url-0.1.2.tgz#6311dfbe7fe00ac464b9069d0e2684a739aeb69b" + +"@conveyal/woonerf@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@conveyal/woonerf/-/woonerf-0.3.1.tgz#a2d2e74783df51398918c5751e7918f43b1d8a68" dependencies: auth0-js "^7.3.0" auth0-lock "^10.5.1" @@ -15,6 +19,7 @@ react "^15.3.2" react-addons-perf "^15.3.2" react-dom "^15.3.2" + react-redux "^4.4.5" react-router "^3.0.0" react-router-redux "^4.0.6" redux "^3.6.0" @@ -27,12 +32,13 @@ dependencies: conventional-changelog "0.0.17" -"@semantic-release/condition-travis@^4.1.2": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@semantic-release/condition-travis/-/condition-travis-4.1.4.tgz#d5de6aca17819420dfc32ed542295a97f977f963" +"@semantic-release/condition-travis@^5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@semantic-release/condition-travis/-/condition-travis-5.0.2.tgz#f4bb777a6c6db5565d70754a9b629233bd4a6597" dependencies: "@semantic-release/error" "^1.0.0" semver "^5.0.3" + travis-deploy-once "1.0.0-node-0.10-support" "@semantic-release/error@^1.0.0": version "1.0.0" @@ -301,6 +307,12 @@ async@1.x, async@^1.4.0, async@^1.4.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" +async@^2.0.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4" + dependencies: + lodash "^4.14.0" + async@~0.2.6: version "0.2.10" resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" @@ -931,9 +943,17 @@ babel-plugin-transform-system-register@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-system-register/-/babel-plugin-transform-system-register-0.0.1.tgz#9dff40390c2763ac518f0b2ad7c5ea4f65a5be25" -babel-preset-env@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-0.0.6.tgz#cda63a020069098fad12272a7a447a7c5bafb3c8" +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-preset-env@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-0.0.7.tgz#c3026e3022f1014c400d6ae7fe002e0e1cdb8661" dependencies: babel-plugin-check-es2015-constants "^6.3.13" babel-plugin-syntax-trailing-function-commas "^6.13.0" @@ -1094,7 +1114,7 @@ binary-extensions@^1.0.0: version "1.7.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.7.0.tgz#6c1610db163abfb34edfe42fa423343a1e01185d" -bl@^1.0.0: +bl@^1.0.0, bl@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398" dependencies: @@ -1106,7 +1126,7 @@ block-stream@*: dependencies: inherits "~2.0.0" -bluebird@^3.0.5, bluebird@^3.3.4: +bluebird@^3.0.5, bluebird@^3.3.4, bluebird@^3.4.1, bluebird@^3.4.6: version "3.4.6" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.6.tgz#01da8d821d87813d158967e743d5fe6c62cf8c0f" @@ -2593,6 +2613,14 @@ forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" +form-data@~1.0.0-rc4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-1.0.1.tgz#ae315db9a4907fa065502304a66d7733475ee37c" + dependencies: + async "^2.0.1" + combined-stream "^1.0.5" + mime-types "^2.1.11" + form-data@~2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4" @@ -2759,6 +2787,10 @@ github@^0.2.4: dependencies: mime "^1.2.11" +github@~0.1.10: + version "0.1.16" + resolved "https://registry.yarnpkg.com/github/-/github-0.1.16.tgz#895d2a85b0feb7980d89ac0ce4f44dcaa03f17b5" + glob-base@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" @@ -4091,14 +4123,18 @@ lodash@4.15.0: version "4.15.0" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.15.0.tgz#3162391d8f0140aa22cf8f6b3c34d6b7f63d3aa9" -lodash@^3.6.0, lodash@^3.9.3: +lodash@^3.6.0: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" -lodash@^4.0.0, lodash@^4.1.0, lodash@^4.13.1, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0: +lodash@^4.0.0, lodash@^4.1.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0: version "4.17.2" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.2.tgz#34a3055babe04ce42467b607d700072c7ff6bf42" +lodash@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.3.1.tgz#a4663b53686b895ff074e2ba504dfb76a8e2b770" + lodash@~3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.5.0.tgz#19bb3f4d51278f0b8c818ed145c74ecf9fe40e6d" @@ -4182,9 +4218,9 @@ marked@^0.3.6: version "0.3.6" resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.6.tgz#b2c6c618fccece4ef86c4fc6cb8a7cbf5aeda8d7" -mastarm@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mastarm/-/mastarm-2.0.0.tgz#4688e28616849c9b4438dd002e8b2c426bafed7f" +mastarm@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mastarm/-/mastarm-3.0.0.tgz#34cd141da7f08dd6c283e05a823001789ca17589" dependencies: aws-sdk "^2.4.2" babel-core "^6.10.4" @@ -4192,7 +4228,7 @@ mastarm@^2.0.0: babel-jest "^16.0.0" babel-plugin-add-module-exports "^0.2.1" babel-plugin-transform-runtime "^6.9.0" - babel-preset-env "^0.0.6" + babel-preset-env "^0.0.7" babel-preset-react "^6.5.0" babel-preset-stage-2 "^6.17.0" babelify "^7.3.0" @@ -4285,7 +4321,7 @@ mime-db@~1.24.0: version "1.24.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.24.0.tgz#e2d13f939f0016c6e4e9ad25a8652f126c467f0c" -mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.7: +mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.7: version "2.1.12" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.12.tgz#152ba256777020dd4663f54c2e7bc26381e71729" dependencies: @@ -4470,7 +4506,7 @@ nopt@3.x, nopt@^3.0.3, nopt@~3.0.1, nopt@~3.0.6: dependencies: abbrev "1" -normalize-package-data@^1.0.3, "normalize-package-data@~1.0.1 || ^2.0.0": +normalize-package-data@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-1.0.3.tgz#8be955b8907af975f1a4584ea8bb9b41492312f5" dependencies: @@ -4478,7 +4514,7 @@ normalize-package-data@^1.0.3, "normalize-package-data@~1.0.1 || ^2.0.0": github-url-from-username-repo "^1.0.0" semver "2 || 3 || 4" -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, "normalize-package-data@~1.0.1 || ^2.0.0": version "2.3.5" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df" dependencies: @@ -4713,10 +4749,6 @@ parse-filepath@^1.0.1: map-cache "^0.2.0" path-root "^0.1.1" -parse-github-repo-url@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.3.0.tgz#d4de02d68e2e60f0d6a182e7a8cb21b6f38c730b" - parse-glob@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" @@ -5230,6 +5262,10 @@ qs@~5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/qs/-/qs-5.1.0.tgz#4d932e5c7ea411cca76a312d39a606200fd50cd9" +qs@~6.2.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.1.tgz#ce03c5ff0935bc1d9d69a9f14cbd18e568d67625" + query-string@^4.2.2: version "4.2.3" resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.2.3.tgz#9f27273d207a25a8ee4c7b8c74dcd45d556db822" @@ -5572,7 +5608,21 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -request@^2.55.0, request@^2.58.0, request@^2.67.0, request@^2.74.0, request@^2.75.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@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/request-promise/-/request-promise-4.1.1.tgz#26021e4f6f56fd4c309f6bf1ebd8c97a95ac1fb5" + dependencies: + bluebird "^3.4.1" + request-promise-core "1.1.1" + stealthy-require "^1.0.0" + +request@^2.55.0, request@^2.58.0, request@^2.67.0, request@^2.74.0, request@^2.75.0, request@^2.78.0: version "2.78.0" resolved "https://registry.yarnpkg.com/request/-/request-2.78.0.tgz#e1c8dec346e1c81923b24acdb337f11decabe9cc" dependencies: @@ -5597,6 +5647,32 @@ request@^2.55.0, request@^2.58.0, request@^2.67.0, request@^2.74.0, request@^2.7 tough-cookie "~2.3.0" tunnel-agent "~0.4.1" +request@~2.74.0: + version "2.74.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.74.0.tgz#7693ca768bbb0ea5c8ce08c084a45efa05b892ab" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + bl "~1.1.2" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~1.0.0-rc4" + 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" + node-uuid "~1.4.7" + oauth-sign "~0.8.1" + qs "~6.2.0" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "~0.4.1" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -5712,9 +5788,9 @@ run-async@^2.2.0: is-promise "^2.1.0" pinkie-promise "^2.0.0" -run-auto@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/run-auto/-/run-auto-1.1.3.tgz#c2d5163fec1ab78b6345cdd3992fce032f671f88" +run-auto@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/run-auto/-/run-auto-2.0.0.tgz#5f4353f58adbd6b74926489b4f259e1dad6a78d6" dependencies: dezalgo "^1.0.1" @@ -5722,7 +5798,7 @@ run-parallel@^1.1.2: version "1.1.6" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.6.tgz#29003c9a2163e01e2d2dfc90575f2c6c1d61a039" -run-series@^1.1.2: +run-series@^1.1.3: version "1.1.4" resolved "https://registry.yarnpkg.com/run-series/-/run-series-1.1.4.tgz#89a73ddc5e75c9ef8ab6320c0a1600d6a41179b9" @@ -5753,27 +5829,28 @@ sax@1.1.5, sax@>=0.6.0, sax@^1.1.4: version "1.1.5" resolved "https://registry.yarnpkg.com/sax/-/sax-1.1.5.tgz#1da50a8d00cdecd59405659f5ff85349fe773743" -semantic-release@^4.3.5: - version "4.3.5" - resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-4.3.5.tgz#df7319e7b18cb980829e9492e78d1962af6e3911" +semantic-release@^6.3.2: + version "6.3.3" + resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-6.3.3.tgz#d94c62e7438fb9de59c76e23c3db60044da247b4" dependencies: + "@bahmutov/parse-github-repo-url" "^0.1.0" "@semantic-release/commit-analyzer" "^2.0.0" - "@semantic-release/condition-travis" "^4.1.2" + "@semantic-release/condition-travis" "^5.0.2" "@semantic-release/error" "^1.0.0" "@semantic-release/last-release-npm" "^1.2.1" "@semantic-release/release-notes-generator" "^2.0.0" git-head "^1.2.1" github "^0.2.4" - lodash "^3.9.3" + lodash "^4.0.0" nerf-dart "^1.0.0" nopt "^3.0.3" + normalize-package-data "^2.3.4" npmconf "^2.1.2" - npmlog "^1.2.1" - parse-github-repo-url "^1.0.0" + npmlog "^4.0.0" require-relative "^0.8.7" - run-auto "^1.1.2" - run-series "^1.1.2" - semver "^5.0.1" + run-auto "^2.0.0" + run-series "^1.1.3" + semver "^5.0.3" "semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0: version "5.3.0" @@ -6015,6 +6092,10 @@ stdout-stream@^1.4.0: dependencies: readable-stream "^2.0.1" +stealthy-require@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.0.0.tgz#1a8ed8fc19a8b56268f76f5a1a3e3832b0c26200" + stream-browserify@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" @@ -6363,6 +6444,25 @@ transitive-js@^0.9.2: debug "^2.2.0" priorityqueuejs "1.0.0" +travis-ci@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/travis-ci/-/travis-ci-2.1.1.tgz#98696265af827ae3576f31aa06d876e74b4b082e" + dependencies: + github "~0.1.10" + lodash "~1.3.1" + request "~2.74.0" + underscore.string "~2.2.0rc" + +travis-deploy-once@1.0.0-node-0.10-support: + version "1.0.0-node-0.10-support" + resolved "https://registry.yarnpkg.com/travis-deploy-once/-/travis-deploy-once-1.0.0-node-0.10-support.tgz#98ecce7d95b2f4ba5dcdeeebf54b9df87713d5e6" + dependencies: + babel-polyfill "^6.16.0" + bluebird "^3.4.6" + request "^2.78.0" + request-promise "^4.1.1" + travis-ci "^2.1.1" + trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" @@ -6463,15 +6563,15 @@ unc-path-regex@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" +underscore.string@~2.2.0rc: + version "2.2.1" + resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.2.1.tgz#d7c0fa2af5d5a1a67f4253daee98132e733f0f19" + underscore.string@~2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.4.0.tgz#8cdd8fbac4e2d2ea1e7e2e8097c42f442280f85b" -underscore@^1.6.0: - version "1.8.3" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" - -underscore@~1.7.0: +underscore@^1.6.0, underscore@~1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209"