diff --git a/web/.eslintrc.js b/web/.eslintrc.js index 2873e2f..0191731 100644 --- a/web/.eslintrc.js +++ b/web/.eslintrc.js @@ -9,5 +9,9 @@ module.exports = { browser: true }, rules: { - } + }, + globals: { + chrome: false, + introJs: false + }, }; diff --git a/web/.jshintrc b/web/.jshintrc deleted file mode 100644 index 42624ff..0000000 --- a/web/.jshintrc +++ /dev/null @@ -1,37 +0,0 @@ -{ - "predef": [ - "document", - "window", - "-Promise", - "Dancer", - "ID3", - "FileAPIReader", - "SC", - "introJs" - ], - "browser": true, - "boss": true, - "curly": true, - "debug": false, - "devel": true, - "eqeqeq": true, - "evil": true, - "forin": false, - "immed": false, - "laxbreak": false, - "newcap": true, - "noarg": true, - "noempty": false, - "nonew": false, - "nomen": false, - "onevar": false, - "plusplus": false, - "regexp": false, - "undef": true, - "sub": true, - "strict": false, - "white": false, - "eqnull": true, - "esversion": 6, - "unused": true -} diff --git a/web/app/pods/components/hue-controls/component.js b/web/app/pods/components/hue-controls/component.js index b172e82..bc8a4ba 100644 --- a/web/app/pods/components/hue-controls/component.js +++ b/web/app/pods/components/hue-controls/component.js @@ -1,7 +1,6 @@ -/*global chrome introJs*/ import Ember from 'ember'; -const { A, Component, computed, isEmpty, isNone, run: { later, scheduleOnce }, inject, $, set } = Ember; +const { A, Component, computed, isEmpty, isNone, run: { later, scheduleOnce }, inject, $ } = Ember; export default Component.extend({ classNames: ['container-fluid'], @@ -10,7 +9,7 @@ export default Component.extend({ firstVisitApp: true, activeLights: A(), - tabList: ["Lights", "Music"], + tabList: ['Lights', 'Music'], selectedTab: 1, pauseLightUpdates: false, @@ -18,44 +17,45 @@ export default Component.extend({ notify: inject.service(), - dimmerOnClass: computed('dimmerOn', function () { + dimmerOnClass: computed('dimmerOn', function() { return this.get('dimmerOn') ? 'dimmerOn md-menu-origin' : 'md-menu-origin'; }), - ready: computed('lightsData', 'trial', function () { + ready: computed('lightsData', 'trial', function() { return this.get('trial') || !isNone(this.get('lightsData')); }), - apiURL: computed('bridgeIp', 'bridgeUsername', function () { + apiURL: computed('bridgeIp', 'bridgeUsername', function() { return 'http://' + this.get('bridgeIp') + '/api/' + this.get('bridgeUsername'); }), - tabData: computed('tabList', 'selectedTab', function () { - let tabData = [], selectedTab = this.get('selectedTab'); + tabData: computed('tabList', 'selectedTab', function() { + let tabData = [], + selectedTab = this.get('selectedTab'); - this.get('tabList').forEach(function (tab, i) { + this.get('tabList').forEach(function(tab, i) { let selected = false; if (i === selectedTab) { selected = true; } - tabData.push({ "name": tab, "selected": selected }); + tabData.push({ name: tab, selected: selected }); }); return tabData; }), didInsertElement() { - if (!window.matchMedia || (window.matchMedia("(min-width: 768px)").matches)) { + if (!window.matchMedia || window.matchMedia('(min-width: 768px)').matches) { // here's a weird way to automatically initialize bootstrap tooltips - let observer = new MutationObserver(function (mutations) { - let haveTooltip = !mutations.every(function (mutation) { + let observer = new MutationObserver(function(mutations) { + let haveTooltip = !mutations.every(function(mutation) { return isEmpty(mutation.addedNodes) || isNone(mutation.addedNodes[0].classList) || mutation.addedNodes[0].classList.contains('tooltip'); }); if (haveTooltip) { - scheduleOnce('afterRender', function () { + scheduleOnce('afterRender', function() { $('.bootstrap-tooltip').tooltip(); }); } @@ -68,14 +68,13 @@ export default Component.extend({ init() { this._super(...arguments); - let isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor), - storage = this.get('storage'), + let storage = this.get('storage'), firstVisitApp = storage.get('huegasm.firstVisitApp'); if (!isEmpty(firstVisitApp)) { this.set('firstVisitApp', false); } - + if (!this.get('trial')) { this.updateLightData(); setInterval(this.updateLightData.bind(this), 2000); @@ -94,9 +93,13 @@ export default Component.extend({ this.get('notify').warning({ html: '' }); this.set('displayFailure', false); - later(this, function () { - this.set('displayFailure', true); - }, 30000); + later( + this, + function() { + this.set('displayFailure', true); + }, + 30000 + ); } }; @@ -113,10 +116,10 @@ export default Component.extend({ actions: { tryAndroid() { - window.open("https://play.google.com/store/apps/details?id=com.hoboman313.huegasm", '_blank'); + window.open('https://play.google.com/store/apps/details?id=com.hoboman313.huegasm', '_blank'); }, tryExtension() { - chrome.webstore.install("https://chrome.google.com/webstore/detail/mbjanbdhcpohhfecjgbdpcfhnnbofooj"); + chrome.webstore.install('https://chrome.google.com/webstore/detail/mbjanbdhcpohhfecjgbdpcfhnnbofooj'); }, changeTab(tabName) { let index = this.get('tabList').indexOf(tabName); @@ -140,7 +143,7 @@ export default Component.extend({ location.reload(); }, email() { - window.open("mailto:huegasm.app@gmail.com", '_blank'); + window.open('mailto:huegasm.app@gmail.com', '_blank'); }, startIntro() { let intro = introJs(), @@ -157,13 +160,15 @@ export default Component.extend({ }, { element: '#music-tab', - intro: 'This is the music player. You\'ll use this to play music and synchronize it with your active lights.

' + - 'TIP: Control which lights are active through the Lights tab.' + intro: + "This is the music player. You'll use this to play music and synchronize it with your active lights.

" + + 'TIP: Control which lights are active through the Lights tab.' }, { element: '#playlist', - intro: 'You can add and select music to play from your playlist here. You may listen to local audio files or stream music from Soundcloud.

' + - 'TIP: Songs added through Soundcloud will be saved for when you visit this page again.' + intro: + 'You can add and select music to play from your playlist here. You may listen to local audio files or stream music from Soundcloud.

' + + 'TIP: Songs added through Soundcloud will be saved for when you visit this page again.' }, { element: $('#playlist md-menu')[0], @@ -171,48 +176,52 @@ export default Component.extend({ }, { element: '#player-area', - intro: 'The audio playback may be controlled with the controls here. Basic music visualization effects may be shown here by selecting them from the menu (eyeball icon in the bottom right).' + intro: + 'The audio playback may be controlled with the controls here. Basic music visualization effects may be shown here by selecting them from the menu (eyeball icon in the bottom right).' }, { element: '#beat-option-row', - intro: 'Sensitivity - The sensitivity of the beat detector (higher sensitivity results in more registered beats)
' + - 'Color Range - The color range that the lights may change to on beat.
' + - 'Brightness Range - The minimum (off-beat) and maximum (on-beat) brightness of the lights.
' + - 'Flashing Transitions - Quickly flash the lights on beat
' + - 'Colorloop - Slowly cycle the lights through all the colors while the music is playing
' + - 'Ambience - When turned on, your lights will sporadically change color.
' + - 'Blackout - When turned on, your lghts will turn off after flashing on a detected beat.

' + - 'TIP: Your sensitivity settings are saved per song as indicated by the red star icon in the top left corner.', + intro: + 'Sensitivity - The sensitivity of the beat detector (higher sensitivity results in more registered beats)
' + + 'Color Range - The color range that the lights may change to on beat.
' + + 'Brightness Range - The minimum (off-beat) and maximum (on-beat) brightness of the lights.
' + + 'Flashing Transitions - Quickly flash the lights on beat
' + + 'Colorloop - Slowly cycle the lights through all the colors while the music is playing
' + + 'Ambience - When turned on, your lights will sporadically change color.
' + + 'Blackout - When turned on, your lghts will turn off after flashing on a detected beat.

' + + 'TIP: Your sensitivity settings are saved per song as indicated by the red star icon in the top left corner.', position: 'top' }, { element: '#beat-container', - intro: 'An interactive speaker that will bump when a beat is registered.

' + - 'TIP: Click on the center of the speaker to simulate a beat.', + intro: 'An interactive speaker that will bump when a beat is registered.

' + 'TIP: Click on the center of the speaker to simulate a beat.', position: 'top' }, { element: '#lights-tab', - intro: 'This is the lights tab. Here you\'ll be able to change various light properties:
' + - 'Power - Turn the selected lights on/off
' + - 'Brightness - The brightness level of the selected lights
' + - 'Color - The color of the selected lights
' + - 'Strobe - Selected lights will flash in sequential order
' + - 'Colorloop - Selected lights will slowly cycle through all the colors
' + - 'Randomize Hues - Randomize the hues (colors) of your selected lights
' + intro: + "This is the lights tab. Here you'll be able to change various light properties:
" + + 'Power - Turn the selected lights on/off
' + + 'Brightness - The brightness level of the selected lights
' + + 'Color - The color of the selected lights
' + + 'Strobe - Selected lights will flash in sequential order
' + + 'Colorloop - Selected lights will slowly cycle through all the colors
' + + 'Randomize Hues - Randomize the hues (colors) of your selected lights
' }, { element: '#active-lights', - intro: 'These icons represent the hue lights in your system. Active lights will be controlled by the application while the inactive lights will have a red X over them and will not be controlled.
' + - 'You may toggle a light\'s state by clicking on it.' + intro: + 'These icons represent the hue lights in your system. Active lights will be controlled by the application while the inactive lights will have a red X over them and will not be controlled.
' + + "You may toggle a light's state by clicking on it." }, { element: $('#navigation .ember-basic-dropdown-trigger')[0], - intro: 'A few miscellaneous settings can be found here.

' + - 'WARNING: clearing application settings will restore the application to its original state. This will even delete your playlist and any saved song beat preferences.' + intro: + 'A few miscellaneous settings can be found here.

' + + 'WARNING: clearing application settings will restore the application to its original state. This will even delete your playlist and any saved song beat preferences.' }, { - intro: 'And that\'s it...Hope you enjoy the application. ;)' + intro: "And that's it...Hope you enjoy the application. ;)" } ] }); @@ -221,11 +230,25 @@ export default Component.extend({ $('body').velocity('scroll', { duration: 200 }); }); - intro.onchange((element) => { - if (element.id === '' || element.id === 'music-tab' || element.id === 'playlist' || element.id === 'player-area' || element.id === 'beat-option-row' || element.id === 'beat-option-button-group' || element.id === 'beat-container' || element.id === 'using-mic-audio-tooltip' || element.nodeName === 'MD-MENU') { - $('.navigation-item').eq(1).click(); + intro.onchange(element => { + if ( + element.id === '' || + element.id === 'music-tab' || + element.id === 'playlist' || + element.id === 'player-area' || + element.id === 'beat-option-row' || + element.id === 'beat-option-button-group' || + element.id === 'beat-container' || + element.id === 'using-mic-audio-tooltip' || + element.nodeName === 'MD-MENU' + ) { + $('.navigation-item') + .eq(1) + .click(); } else { - $('.navigation-item').eq(0).click(); + $('.navigation-item') + .eq(0) + .click(); } if (element.id === 'music-tab' || element.id === 'playlist' || element.id === 'player-area') { @@ -238,22 +261,32 @@ export default Component.extend({ }); // skip hidden/missing elements - intro.onafterchange((element) => { - let elem = $(element); - if (elem.html() === '') { - $('.introjs-nextbutton').click(); - } + intro + .onafterchange(element => { + let elem = $(element); + if (elem.html() === '') { + $('.introjs-nextbutton').click(); + } - if (element.id === '') { - later(this, () => { - $('body').velocity('scroll'); - }, 500); - } else { - later(this, () => { - $('.introjs-tooltip').velocity('scroll', { offset: -100 }); - }, 500); - } - }).start(); + if (element.id === '') { + later( + this, + () => { + $('body').velocity('scroll'); + }, + 500 + ); + } else { + later( + this, + () => { + $('.introjs-tooltip').velocity('scroll', { offset: -100 }); + }, + 500 + ); + } + }) + .start(); }, closeNotificationModal() { this.set('firstVisitApp', false); diff --git a/web/app/pods/components/music-tab/mixins/helpers.js b/web/app/pods/components/music-tab/mixins/helpers.js index 5633f4d..aaed46c 100644 --- a/web/app/pods/components/music-tab/mixins/helpers.js +++ b/web/app/pods/components/music-tab/mixins/helpers.js @@ -21,7 +21,7 @@ export default Mixin.create({ values: [0, 0.5], density: 10, format: { - to: function (value) { + to: function(value) { if (value === 0) { value = 'High'; } else { @@ -30,7 +30,9 @@ export default Mixin.create({ return value; }, - from: function (value) { return value; } + from: function(value) { + return value; + } } } }, @@ -43,7 +45,7 @@ export default Mixin.create({ values: [0, 25500, 46920, 65535], density: 10, format: { - to: function (value) { + to: function(value) { if (value === 0 || value === 65535) { value = 'Red'; } else if (value === 25500) { @@ -54,7 +56,9 @@ export default Mixin.create({ return value; }, - from: function (value) { return value; } + from: function(value) { + return value; + } } } }, @@ -67,7 +71,7 @@ export default Mixin.create({ values: [1, 63, 127, 190, 254], density: 10, format: { - to: function (value) { + to: function(value) { if (value === 63) { value = 25; } else if (value === 127) { @@ -80,7 +84,9 @@ export default Mixin.create({ return value; }, - from: function (value) { return value; } + from: function(value) { + return value; + } } } } @@ -91,6 +97,7 @@ export default Mixin.create({ hueRange: [0, 65535], brightnessRange: [1, 254], oldThreshold: null, + playlistColumns: [100], playQueuePointer: -1, playQueue: A(), @@ -136,9 +143,11 @@ export default Mixin.create({ SC_CLIENT_ID: 'aeec0034f58ecd85c2bd1deaecc41594', scUserNotSupportedHtml: '', - tooManySoundCloudFuckUps: '', + tooManySoundCloudFuckUps: + '', notStreamableHtml(fileNames) { - let html = ''; + let html = + ''; return html; }, @@ -152,7 +161,7 @@ export default Mixin.create({ return ''; }, - scUrl: computed('playQueuePointer', 'playQueue.[]', function () { + scUrl: computed('playQueuePointer', 'playQueue.[]', function() { let rtn = null, currentSong = this.get('playQueue')[this.get('playQueuePointer')]; @@ -165,11 +174,11 @@ export default Mixin.create({ playQueueEmpty: computed.empty('playQueue'), playQueueNotEmpty: computed.notEmpty('playQueue'), - playQueueMultiple: computed('playQueue.[]', function () { + playQueueMultiple: computed('playQueue.[]', function() { return this.get('playQueue').length > 1; }), - seekPosition: computed('timeElapsed', 'timeTotal', function () { + seekPosition: computed('timeElapsed', 'timeTotal', function() { let timeTotal = this.get('timeTotal'), timeElapsed = this.get('timeElapsed'); @@ -180,7 +189,7 @@ export default Mixin.create({ return timeElapsed / timeTotal * 100; }), - largeArtworkPic: computed('playQueuePointer', 'currentVisName', function () { + largeArtworkPic: computed('playQueuePointer', 'currentVisName', function() { let pic = '', currentVisName = this.get('currentVisName'), playQueuePointer = this.get('playQueuePointer'), @@ -200,7 +209,7 @@ export default Mixin.create({ return pic; }), - repeatIcon: computed('repeat', function () { + repeatIcon: computed('repeat', function() { if (this.get('repeat') === 2) { return 'repeat-one'; } @@ -208,7 +217,7 @@ export default Mixin.create({ return 'repeat'; }), - playingIcon: computed('playing', function () { + playingIcon: computed('playing', function() { if (this.get('playing')) { return 'pause'; } else if (this.get('timeElapsed') === this.get('timeTotal') && this.get('timeTotal') !== 0) { @@ -218,7 +227,7 @@ export default Mixin.create({ } }), - playListAreaClass: computed('dragging', 'draggingOverPlayListArea', 'dimmerOn', function () { + playListAreaClass: computed('dragging', 'draggingOverPlayListArea', 'dimmerOn', function() { let classes = 'pointer'; if (this.get('dragging')) { @@ -236,11 +245,11 @@ export default Mixin.create({ return classes; }), - dimmerOnClass: computed('dimmerOn', function () { + dimmerOnClass: computed('dimmerOn', function() { return this.get('dimmerOn') ? 'dimmerOn' : null; }), - volumeMutedClass: computed('volumeMuted', function () { + volumeMutedClass: computed('volumeMuted', function() { let classes = 'player-control-icon volumeButton'; if (this.get('volumeMuted')) { @@ -250,29 +259,29 @@ export default Mixin.create({ return classes; }), - repeatClass: computed('repeat', function () { + repeatClass: computed('repeat', function() { return this.get('repeat') !== 0 ? 'player-control-icon active' : 'player-control-icon'; }), - shuffleClass: computed('shuffle', function () { + shuffleClass: computed('shuffle', function() { return this.get('shuffle') ? 'player-control-icon active' : 'player-control-icon'; }), - volumeIcon: computed('volumeMuted', 'volume', function () { + volumeIcon: computed('volumeMuted', 'volume', function() { let volume = this.get('volume'); if (this.get('volumeMuted')) { - return "volume-off"; + return 'volume-off'; } else if (volume >= 70) { - return "volume-up"; + return 'volume-up'; } else if (volume > 10) { - return "volume-down"; + return 'volume-down'; } else { return 'volume-mute'; } }), - beatDetectionAreaArrowIcon: computed('playerBottomDisplayed', function () { + beatDetectionAreaArrowIcon: computed('playerBottomDisplayed', function() { if (!this.get('playerBottomDisplayed')) { return 'keyboard-arrow-down'; } else { @@ -280,20 +289,20 @@ export default Mixin.create({ } }), - timeElapsedTxt: computed('timeElapsed', function () { + timeElapsedTxt: computed('timeElapsed', function() { return this.formatTime(this.get('timeElapsed')); }), - timeTotalTxt: computed('timeTotal', function () { + timeTotalTxt: computed('timeTotal', function() { return this.formatTime(this.get('timeTotal')); }), - onPlayQueueChange: observer('playQueue.length', function () { + onPlayQueueChange: observer('playQueue.length', function() { let playQueueLength = this.get('playQueue.length'); if (playQueueLength > this.get('oldPlayQueueLength')) { run.once(this, () => { - run.next(this, function () { + run.next(this, function() { $(`.track${playQueueLength - 1}`).velocity('scroll', { container: $('#play-list-area'), duration: 200 }); }); }); @@ -302,21 +311,21 @@ export default Mixin.create({ this.set('oldPlayQueueLength', playQueueLength); }), -playerAreaClickIcon: computed('playing', function () { + playerAreaClickIcon: computed('playing', function() { if (this.get('playing')) { return 'play-arrow'; } else { return 'pause'; } }), - - onOptionChange: observer('flashingTransitions', 'playQueue.[]', 'playQueuePointer', 'ambienceMode', 'blackoutMode', function (self, option) { + + onOptionChange: observer('flashingTransitions', 'playQueue.[]', 'playQueuePointer', 'ambienceMode', 'blackoutMode', function(self, option) { option = option.replace('.[]', ''); let value = this.get(option); // can't really save local music if (option === 'playQueue') { - value = value.filter((song) => { + value = value.filter(song => { return !song.url.startsWith('blob:'); }); } else if (option === 'blackoutMode') { @@ -328,7 +337,7 @@ playerAreaClickIcon: computed('playing', function () { } if (this.get('playing')) { - this.get('activeLights').forEach((light) => { + this.get('activeLights').forEach(light => { $.ajax(this.get('apiURL') + '/lights/' + light + '/state', { data: JSON.stringify(options), contentType: 'application/json', @@ -343,71 +352,92 @@ playerAreaClickIcon: computed('playing', function () { this.get('storage').set('huegasm.' + option, value); }), - onRepeatChange: on('init', observer('repeat', function () { - let tooltipTxt = 'Repeat all', type = 'repeat'; + onRepeatChange: on( + 'init', + observer('repeat', function() { + let tooltipTxt = 'Repeat all', + type = 'repeat'; - if (this.get(type) === 1) { - tooltipTxt = 'Repeat one'; - } else if (this.get(type) === 2) { - tooltipTxt = 'Repeat off'; - } + if (this.get(type) === 1) { + tooltipTxt = 'Repeat one'; + } else if (this.get(type) === 2) { + tooltipTxt = 'Repeat off'; + } - this.changeTooltipText(type, tooltipTxt); - })), + this.changeTooltipText(type, tooltipTxt); + }) + ), - onShuffleChange: on('init', observer('shuffle', function () { - let tooltipTxt = 'Shuffle', type = 'shuffle'; + onShuffleChange: on( + 'init', + observer('shuffle', function() { + let tooltipTxt = 'Shuffle', + type = 'shuffle'; - if (this.get(type)) { - this.get('shufflePlayed').clear(); - tooltipTxt = 'Unshuffle'; - } + if (this.get(type)) { + this.get('shufflePlayed').clear(); + tooltipTxt = 'Unshuffle'; + } - this.changeTooltipText(type, tooltipTxt); - })), + this.changeTooltipText(type, tooltipTxt); + }) + ), - onVolumeMutedChange: on('init', observer('volumeMuted', function () { - let tooltipTxt = 'Mute', type = 'volumeMuted', - volumeMuted = this.get(type), dancer = this.get('dancer'), - volume = 0; + onVolumeMutedChange: on( + 'init', + observer('volumeMuted', function() { + let tooltipTxt = 'Mute', + type = 'volumeMuted', + volumeMuted = this.get(type), + dancer = this.get('dancer'), + volume = 0; - if (volumeMuted) { - tooltipTxt = 'Unmute'; - volume = 0; - } else { - volume = this.get('volume') / 100; - } + if (volumeMuted) { + tooltipTxt = 'Unmute'; + volume = 0; + } else { + volume = this.get('volume') / 100; + } - if (this.get('playing')) { - dancer.setVolume(volume); - } + if (this.get('playing')) { + dancer.setVolume(volume); + } - this.changeTooltipText(type, tooltipTxt); - })), + this.changeTooltipText(type, tooltipTxt); + }) + ), - onPrevChange: on('init', observer('timeElapsed', 'playQueueNotEmpty', 'playQueue.[]', function () { - if (this.get('playQueueNotEmpty')) { - let tooltipTxt = 'Previous', type = 'prev'; + onPrevChange: on( + 'init', + observer('timeElapsed', 'playQueueNotEmpty', 'playQueue.[]', function() { + if (this.get('playQueueNotEmpty')) { + let tooltipTxt = 'Previous', + type = 'prev'; - if (this.get('timeElapsed') > 5 || this.get('playQueue').length === 1) { + if (this.get('timeElapsed') > 5 || this.get('playQueue').length === 1) { + tooltipTxt = 'Replay'; + } + + this.changeTooltipText(type, tooltipTxt); + } + }) + ), + + onPlayingChange: on( + 'init', + observer('playing', function() { + let tooltipTxt = 'Play', + type = 'playing'; + + if (this.get(type)) { + tooltipTxt = 'Pause'; + } else if (this.get('timeElapsed') === this.get('timeTotal') && this.get('timeTotal') !== 0) { tooltipTxt = 'Replay'; } this.changeTooltipText(type, tooltipTxt); - } - })), - - onPlayingChange: on('init', observer('playing', function () { - let tooltipTxt = 'Play', type = 'playing'; - - if (this.get(type)) { - tooltipTxt = 'Pause'; - } else if (this.get('timeElapsed') === this.get('timeTotal') && this.get('timeTotal') !== 0) { - tooltipTxt = 'Replay'; - } - - this.changeTooltipText(type, tooltipTxt); - })), + }) + ), changeTooltipText(type, text) { // change the tooltip text if it's already visible @@ -424,5 +454,7 @@ playerAreaClickIcon: computed('playing', function () { return this.pad(Math.floor(time / 60), 2) + ':' + this.pad(time % 60, 2); }, - pad(num, size) { return ('000000000' + num).substr(-size); } + pad(num, size) { + return ('000000000' + num).substr(-size); + } }); diff --git a/web/app/pods/components/music-tab/template.hbs b/web/app/pods/components/music-tab/template.hbs index 4654e5f..1d310a9 100644 --- a/web/app/pods/components/music-tab/template.hbs +++ b/web/app/pods/components/music-tab/template.hbs @@ -94,33 +94,36 @@ {{paper-icon "library-music" class=dimmerOnClass}} {{/if}} - {{#each playQueue as |item index|}} + {{#ember-collection + items=playQueue + cell-layout=(percentage-columns-layout playQueue.length playlistColumns 62) as |item| + }}
- {{#if item.picture}} - + {{#if item.picture}} + + {{else}} + + {{/if}} + +
+ {{#if item.title}} +
{{item.title}}
+
+ {{#if item.artistUrl}} + {{item.artist}} + {{else}} + {{item.artist}} + {{/if}} +
{{else}} - + {{item.fileName}} {{/if}} - -
- {{#if item.title}} -
{{item.title}}
-
- {{#if item.artistUrl}} - {{item.artist}} - {{else}} - {{item.artist}} - {{/if}} -
- {{else}} - {{item.fileName}} - {{/if}} -
- - {{paper-icon "close" classNames="close"}}
- {{/each}} + + {{paper-icon "close" classNames="close"}} +
+ {{/ember-collection}} diff --git a/web/package.json b/web/package.json index 60d159d..512f7e6 100644 --- a/web/package.json +++ b/web/package.json @@ -37,6 +37,7 @@ "ember-cli-shims": "^1.0.2", "ember-cli-sri": "^2.1.0", "ember-cli-uglify": "^2.0.0", + "ember-collection": "^1.0.0-alpha.7", "ember-export-application-global": "^2.0.0", "ember-inline-svg": "^0.1.7", "ember-load-initializers": "^1.0.0", diff --git a/web/yarn.lock b/web/yarn.lock index bf60a20..9596554 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -2,6 +2,13 @@ # yarn lockfile v1 +"@ember/test-helpers@^0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@ember/test-helpers/-/test-helpers-0.7.1.tgz#14ba828ebc5b7b0e6eb7889352cb40af0c995349" + dependencies: + broccoli-funnel "^2.0.1" + ember-cli-babel "^6.8.1" + "@glimmer/di@^0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@glimmer/di/-/di-0.2.0.tgz#73bfd4a6ee4148a80bf092e8a5d29bcac9d4ce7e" @@ -48,7 +55,7 @@ acorn@^4.0.3: version "4.0.13" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" -acorn@^5.1.1: +acorn@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.2.1.tgz#317ac7821826c22c702d66189ab8359675f135d7" @@ -67,9 +74,9 @@ ajv@^4.9.1: co "^4.6.0" json-stable-stringify "^1.0.1" -ajv@^5.1.0, ajv@^5.2.0, ajv@^5.2.3: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.3.0.tgz#4414ff74a50879c208ee5fdc826e32c303549eda" +ajv@^5.1.0, ajv@^5.2.3, ajv@^5.3.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.4.0.tgz#32d1cf08dbc80c432f426f12e10b2511f6b46474" dependencies: co "^4.6.0" fast-deep-equal "^1.0.0" @@ -118,10 +125,6 @@ ansi-escapes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" -ansi-regex@*, ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - ansi-regex@^0.2.0, ansi-regex@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9" @@ -130,6 +133,10 @@ ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + ansi-styles@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de" @@ -336,8 +343,8 @@ async@^1.4.0, async@^1.5.2: resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" async@^2.0.1, async@^2.4.1: - version "2.5.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.5.0.tgz#843190fd6b7357a0b9e1c956edddd5ec8462b54d" + version "2.6.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" dependencies: lodash "^4.14.0" @@ -596,8 +603,8 @@ babel-plugin-debug-macros@^0.1.10, babel-plugin-debug-macros@^0.1.11: semver "^5.3.0" babel-plugin-ember-modules-api-polyfill@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-ember-modules-api-polyfill/-/babel-plugin-ember-modules-api-polyfill-2.2.0.tgz#debf833715a338b5b4f695b5cd788ca4eed71f11" + version "2.2.1" + resolved "https://registry.yarnpkg.com/babel-plugin-ember-modules-api-polyfill/-/babel-plugin-ember-modules-api-polyfill-2.2.1.tgz#e63f90cc3c71cc6b3b69fb51b4f60312d6cf734c" dependencies: ember-rfc176-data "^0.3.0" @@ -1014,8 +1021,8 @@ better-assert@~1.0.0: callsite "1.0.0" binary-extensions@^1.0.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0" + version "1.11.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" "binaryextensions@1 || 2": version "2.0.0" @@ -1185,8 +1192,8 @@ broccoli-brocfile-loader@^0.18.0: findup-sync "^0.4.2" broccoli-builder@^0.18.8: - version "0.18.9" - resolved "https://registry.yarnpkg.com/broccoli-builder/-/broccoli-builder-0.18.9.tgz#635c8fd92a0fb479983e3c05e30162baaba3bace" + version "0.18.10" + resolved "https://registry.yarnpkg.com/broccoli-builder/-/broccoli-builder-0.18.10.tgz#9767e0061ff5b5e6eb1619d1a972ef2c7fd07631" dependencies: heimdalljs "^0.2.0" promise-map-series "^0.2.1" @@ -1259,17 +1266,27 @@ broccoli-config-replace@^1.1.2: fs-extra "^0.24.0" broccoli-debug@^0.6.1, broccoli-debug@^0.6.2, broccoli-debug@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/broccoli-debug/-/broccoli-debug-0.6.3.tgz#1f33bb0eacb5db81366f0492524c82b1217eb578" + version "0.6.4" + resolved "https://registry.yarnpkg.com/broccoli-debug/-/broccoli-debug-0.6.4.tgz#986eb3d2005e00e3bb91f9d0a10ab137210cd150" dependencies: broccoli-plugin "^1.2.1" fs-tree-diff "^0.5.2" heimdalljs "^0.2.1" heimdalljs-logger "^0.1.7" - minimatch "^3.0.3" symlink-or-copy "^1.1.8" tree-sync "^1.2.2" +broccoli-file-creator@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/broccoli-file-creator/-/broccoli-file-creator-1.1.1.tgz#1b35b67d215abdfadd8d49eeb69493c39e6c3450" + dependencies: + broccoli-kitchen-sink-helpers "~0.2.0" + broccoli-plugin "^1.1.0" + broccoli-writer "~0.1.1" + mkdirp "^0.5.1" + rsvp "~3.0.6" + symlink-or-copy "^1.0.1" + broccoli-filter@^1.2.2, broccoli-filter@^1.2.3, broccoli-filter@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/broccoli-filter/-/broccoli-filter-1.2.4.tgz#409afb94b9a3a6da9fac8134e91e205f40cc7330" @@ -1316,7 +1333,7 @@ broccoli-funnel@^1.0.0, broccoli-funnel@^1.0.1, broccoli-funnel@^1.1.0, broccoli symlink-or-copy "^1.0.0" walk-sync "^0.3.1" -broccoli-funnel@^2.0.0: +broccoli-funnel@^2.0.0, broccoli-funnel@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/broccoli-funnel/-/broccoli-funnel-2.0.1.tgz#6823c73b675ef78fffa7ab800f083e768b51d449" dependencies: @@ -1334,7 +1351,7 @@ broccoli-funnel@^2.0.0: symlink-or-copy "^1.0.0" walk-sync "^0.3.1" -broccoli-kitchen-sink-helpers@^0.2.5, broccoli-kitchen-sink-helpers@~0.2.4: +broccoli-kitchen-sink-helpers@^0.2.5, broccoli-kitchen-sink-helpers@~0.2.0, broccoli-kitchen-sink-helpers@~0.2.4: version "0.2.9" resolved "https://registry.yarnpkg.com/broccoli-kitchen-sink-helpers/-/broccoli-kitchen-sink-helpers-0.2.9.tgz#a5e0986ed8d76fb5984b68c3f0450d3a96e36ecc" dependencies: @@ -1348,13 +1365,13 @@ broccoli-kitchen-sink-helpers@^0.3.1: glob "^5.0.10" mkdirp "^0.5.1" -broccoli-lint-eslint@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/broccoli-lint-eslint/-/broccoli-lint-eslint-4.2.0.tgz#9a98a196995c609ca84c2c414d07c7fa8ec3e806" +broccoli-lint-eslint@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/broccoli-lint-eslint/-/broccoli-lint-eslint-4.2.1.tgz#f780dc083a7357a9746a9cfa8f76feb092777477" dependencies: aot-test-generators "^0.1.0" broccoli-concat "^3.2.2" - broccoli-persistent-filter "^1.2.0" + broccoli-persistent-filter "^1.4.3" eslint "^4.0.0" json-stable-stringify "^1.0.1" lodash.defaultsdeep "^4.6.0" @@ -1387,7 +1404,7 @@ broccoli-middleware@^1.0.0: handlebars "^4.0.4" mime "^1.2.11" -broccoli-persistent-filter@^1.0.3, broccoli-persistent-filter@^1.1.6, broccoli-persistent-filter@^1.2.0, broccoli-persistent-filter@^1.4.0, broccoli-persistent-filter@^1.4.2: +broccoli-persistent-filter@^1.0.3, broccoli-persistent-filter@^1.1.6, broccoli-persistent-filter@^1.4.0, broccoli-persistent-filter@^1.4.2, broccoli-persistent-filter@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/broccoli-persistent-filter/-/broccoli-persistent-filter-1.4.3.tgz#3511bc52fc53740cda51621f58a28152d9911bc1" dependencies: @@ -1414,7 +1431,7 @@ broccoli-plugin@1.1.0: rimraf "^2.3.4" symlink-or-copy "^1.0.1" -broccoli-plugin@^1.0.0, broccoli-plugin@^1.2.0, broccoli-plugin@^1.2.1, broccoli-plugin@^1.3.0: +broccoli-plugin@^1.0.0, broccoli-plugin@^1.1.0, broccoli-plugin@^1.2.0, broccoli-plugin@^1.2.1, broccoli-plugin@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/broccoli-plugin/-/broccoli-plugin-1.3.0.tgz#bee704a8e42da08cb58e513aaa436efb7f0ef1ee" dependencies: @@ -1423,9 +1440,9 @@ broccoli-plugin@^1.0.0, broccoli-plugin@^1.2.0, broccoli-plugin@^1.2.1, broccoli rimraf "^2.3.4" symlink-or-copy "^1.1.8" -broccoli-sass-source-maps@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/broccoli-sass-source-maps/-/broccoli-sass-source-maps-2.0.0.tgz#7f25f9f4b296918cec6e00672c63e75abce33d45" +broccoli-sass-source-maps@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/broccoli-sass-source-maps/-/broccoli-sass-source-maps-2.1.1.tgz#5d71d3734234acb102000e5d7776d4c722aad756" dependencies: broccoli-caching-writer "^3.0.3" include-path-searcher "^0.1.0" @@ -1474,8 +1491,8 @@ broccoli-stew@^1.2.0, broccoli-stew@^1.3.3, broccoli-stew@^1.5.0: walk-sync "^0.3.0" broccoli-uglify-sourcemap@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/broccoli-uglify-sourcemap/-/broccoli-uglify-sourcemap-2.0.0.tgz#2dc574e9d330c2e0dcc834b3d24c794b405a3803" + version "2.0.1" + resolved "https://registry.yarnpkg.com/broccoli-uglify-sourcemap/-/broccoli-uglify-sourcemap-2.0.1.tgz#e8f2f6c49e04b6e921f1ecd30e12f06fb75e585f" dependencies: broccoli-plugin "^1.2.1" debug "^3.1.0" @@ -1495,10 +1512,10 @@ broccoli-writer@~0.1.1: rsvp "^3.0.6" browserslist@^2.1.2, browserslist@^2.5.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.6.1.tgz#cc65a05ad6131ebda26f076f2822ba1bc826376b" + version "2.9.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.9.1.tgz#b72d3982ab01b5cd24da62ff6d45573886aff275" dependencies: - caniuse-lite "^1.0.30000755" + caniuse-lite "^1.0.30000770" electron-to-chromium "^1.3.27" bser@^2.0.0: @@ -1572,9 +1589,9 @@ can-symlink@^1.0.0: dependencies: tmp "0.0.28" -caniuse-lite@^1.0.30000748, caniuse-lite@^1.0.30000755: - version "1.0.30000757" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000757.tgz#81e3bc029728a032933501994ef79db1c21159e3" +caniuse-lite@^1.0.30000748, caniuse-lite@^1.0.30000770: + version "1.0.30000770" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000770.tgz#bc8e7f50b073273390db6ab357378909a14e9bdb" capture-exit@^1.1.0: version "1.2.0" @@ -1624,7 +1641,7 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" dependencies: @@ -1632,6 +1649,10 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0: escape-string-regexp "^1.0.5" supports-color "^4.0.0" +chardet@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.0.tgz#0bbe1355ac44d7a3ed4a925707c4ef70f8190f6c" + charm@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/charm/-/charm-1.0.2.tgz#8add367153a6d9a581331052c4090991da995e35" @@ -1742,8 +1763,8 @@ clone@^0.2.0: resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f" clone@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f" clone@^2.0.0: version "2.1.1" @@ -1771,8 +1792,8 @@ code-point-at@^1.0.0: resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" color-convert@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" dependencies: color-name "^1.1.1" @@ -1813,10 +1834,20 @@ commander@2.9.0: dependencies: graceful-readlink ">= 1.0.0" -commander@^2.5.0, commander@^2.6.0, commander@^2.9.0, commander@~2.11.0: +commander@^2.5.0, commander@^2.6.0, commander@^2.9.0: + version "2.12.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.1.tgz#468635c4168d06145b9323356d1da84d14ac4a7a" + +commander@~2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" +common-tags@^1.4.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.5.0.tgz#d8edacc66f870714ddc9f3bfba94cd87d1c9c289" + dependencies: + babel-runtime "^6.26.0" + commoner@~0.10.3: version "0.10.8" resolved "https://registry.yarnpkg.com/commoner/-/commoner-0.10.8.tgz#34fc3672cd24393e8bb47e70caa0293811f4f2c5" @@ -1927,8 +1958,8 @@ continuable-cache@^0.3.1: resolved "https://registry.yarnpkg.com/continuable-cache/-/continuable-cache-0.3.1.tgz#bd727a7faed77e71ff3985ac93351a912733ad0f" convert-source-map@^1.1.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" + version "1.5.1" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" cookie-signature@1.0.6: version "1.0.6" @@ -2060,7 +2091,7 @@ debug@^3.0.1, debug@^3.1.0: dependencies: ms "2.0.0" -debuglog@*, debuglog@^1.0.1: +debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" @@ -2150,8 +2181,8 @@ detect-indent@^4.0.0: repeating "^2.0.0" detect-libc@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.2.tgz#71ad5d204bf17a6a6ca8f450c61454066ef461e1" + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" detective@^4.3.1: version "4.5.0" @@ -2211,10 +2242,19 @@ electron-to-chromium@^1.3.27: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz#78ecb8a399066187bb374eede35d9c70565a803d" ember-basic-dropdown@^0.33.1: - version "0.33.8" - resolved "https://registry.yarnpkg.com/ember-basic-dropdown/-/ember-basic-dropdown-0.33.8.tgz#a82f7eabdf43f626e5cb8534539b7914c05e61fe" + version "0.33.10" + resolved "https://registry.yarnpkg.com/ember-basic-dropdown/-/ember-basic-dropdown-0.33.10.tgz#6c08f9a83e5d657144fd5b0d6a3e170ee269587e" dependencies: - ember-cli-babel "^6.8.1" + ember-cli-babel "^6.8.2" + ember-cli-htmlbars "^2.0.3" + ember-native-dom-helpers "^0.5.4" + ember-wormhole "^0.5.2" + +ember-basic-dropdown@^0.34.0: + version "0.34.0" + resolved "https://registry.yarnpkg.com/ember-basic-dropdown/-/ember-basic-dropdown-0.34.0.tgz#a0371b7c06756cdd3170e7d4a9ed4f4890bc2d59" + dependencies: + ember-cli-babel "^6.8.2" ember-cli-htmlbars "^2.0.3" ember-native-dom-helpers "^0.5.4" ember-wormhole "^0.5.2" @@ -2236,9 +2276,9 @@ ember-cli-babel@^5.1.5, ember-cli-babel@^5.1.6, ember-cli-babel@^5.1.7, ember-cl ember-cli-version-checker "^1.0.2" resolve "^1.1.2" -ember-cli-babel@^6.0.0, ember-cli-babel@^6.0.0-beta.4, ember-cli-babel@^6.0.0-beta.7, ember-cli-babel@^6.3.0, ember-cli-babel@^6.6.0, ember-cli-babel@^6.8.0, ember-cli-babel@^6.8.1, ember-cli-babel@^6.8.2: - version "6.8.2" - resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-6.8.2.tgz#eac2785964f4743f4c815cd53c6288f00cc087d7" +ember-cli-babel@^6.0.0, ember-cli-babel@^6.0.0-beta.4, ember-cli-babel@^6.0.0-beta.7, ember-cli-babel@^6.10.0, ember-cli-babel@^6.3.0, ember-cli-babel@^6.6.0, ember-cli-babel@^6.8.0, ember-cli-babel@^6.8.1, ember-cli-babel@^6.8.2: + version "6.10.0" + resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-6.10.0.tgz#81424acd1d97fb13658168121eeb2007d6edee84" dependencies: amd-name-resolver "0.0.7" babel-plugin-debug-macros "^0.1.11" @@ -2251,7 +2291,8 @@ ember-cli-babel@^6.0.0, ember-cli-babel@^6.0.0-beta.4, ember-cli-babel@^6.0.0-be broccoli-funnel "^1.0.0" broccoli-source "^1.1.0" clone "^2.0.0" - ember-cli-version-checker "^2.0.0" + ember-cli-version-checker "^2.1.0" + semver "^5.4.1" ember-cli-broccoli-sane-watcher@^2.0.4: version "2.0.4" @@ -2264,11 +2305,12 @@ ember-cli-broccoli-sane-watcher@^2.0.4: sane "^1.1.1" ember-cli-dependency-checker@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ember-cli-dependency-checker/-/ember-cli-dependency-checker-2.0.1.tgz#e44cd2f8cdbf6a1043092de1ebfd62e7b8c00dd1" + version "2.1.0" + resolved "https://registry.yarnpkg.com/ember-cli-dependency-checker/-/ember-cli-dependency-checker-2.1.0.tgz#9d66286a7c778e94733eaf21320d129c4fd0dd64" dependencies: chalk "^1.1.3" is-git-url "^1.0.0" + resolve "^1.5.0" semver "^5.3.0" ember-cli-deploy-build@^1.0.0: @@ -2316,10 +2358,10 @@ ember-cli-deploy@^1.0.0: silent-error "^1.0.0" ember-cli-eslint@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/ember-cli-eslint/-/ember-cli-eslint-4.2.1.tgz#1718875632b3c10fa0da2f665d294c08f24b8ca3" + version "4.2.2" + resolved "https://registry.yarnpkg.com/ember-cli-eslint/-/ember-cli-eslint-4.2.2.tgz#4445b3365954e7a90d93d366761e088b0486ae79" dependencies: - broccoli-lint-eslint "^4.1.0" + broccoli-lint-eslint "^4.2.1" ember-cli-version-checker "^2.1.0" rsvp "^4.6.1" walk-sync "^0.3.0" @@ -2352,7 +2394,7 @@ ember-cli-htmlbars@1.3.0: json-stable-stringify "^1.0.0" strip-bom "^2.0.0" -ember-cli-htmlbars@^1.0.3, ember-cli-htmlbars@^1.1.1: +ember-cli-htmlbars@^1.0.1, ember-cli-htmlbars@^1.0.3, ember-cli-htmlbars@^1.1.1: version "1.3.4" resolved "https://registry.yarnpkg.com/ember-cli-htmlbars/-/ember-cli-htmlbars-1.3.4.tgz#461289724b34af372a6a0c4b6635819156963353" dependencies: @@ -2441,19 +2483,11 @@ ember-cli-preprocess-registry@^3.1.0: silent-error "^1.0.0" ember-cli-qunit@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/ember-cli-qunit/-/ember-cli-qunit-4.0.1.tgz#905aa07620ae9fdb417c7e48d45bd2277b62f864" + version "4.1.1" + resolved "https://registry.yarnpkg.com/ember-cli-qunit/-/ember-cli-qunit-4.1.1.tgz#307a157e9f36a0d32621ae247effb891ff951fc7" dependencies: - broccoli-funnel "^2.0.0" - broccoli-merge-trees "^2.0.0" ember-cli-babel "^6.8.1" - ember-cli-test-loader "^2.2.0" - ember-cli-version-checker "^2.0.0" - ember-qunit "^2.2.0" - qunit-notifications "^0.1.1" - qunitjs "^2.4.0" - resolve "^1.4.0" - silent-error "^1.1.0" + ember-qunit "^3.1.0" ember-cli-release@^1.0.0-beta.2: version "1.0.0-beta.2" @@ -2472,20 +2506,23 @@ ember-cli-release@^1.0.0-beta.2: silent-error "^1.0.0" ember-cli-sass@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/ember-cli-sass/-/ember-cli-sass-7.0.0.tgz#24bdf6e6c13610c57cbddb1f077715588aedcf13" + version "7.1.1" + resolved "https://registry.yarnpkg.com/ember-cli-sass/-/ember-cli-sass-7.1.1.tgz#6ae75b0756e5dbc0db61ec27843929500a38343d" dependencies: broccoli-funnel "^1.0.0" broccoli-merge-trees "^1.1.0" - broccoli-sass-source-maps "^2.0.0" + broccoli-sass-source-maps "^2.1.0" + ember-cli-babel "^5.1.7" ember-cli-version-checker "^1.0.2" ember-cli-shims@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ember-cli-shims/-/ember-cli-shims-1.1.0.tgz#0e3b8a048be865b4f81cc81d397ff1eeb13f75b6" + version "1.2.0" + resolved "https://registry.yarnpkg.com/ember-cli-shims/-/ember-cli-shims-1.2.0.tgz#0f53aff0aab80b5f29da3a9731bac56169dd941f" dependencies: - ember-cli-babel "^6.0.0-beta.7" - ember-cli-version-checker "^1.2.0" + broccoli-file-creator "^1.1.1" + broccoli-merge-trees "^2.0.0" + ember-cli-version-checker "^2.0.0" + ember-rfc176-data "^0.3.1" silent-error "^1.0.1" ember-cli-sri@^2.1.0: @@ -2523,7 +2560,7 @@ ember-cli-valid-component-name@^1.0.0: dependencies: silent-error "^1.0.0" -ember-cli-version-checker@^1.0.2, ember-cli-version-checker@^1.1.6, ember-cli-version-checker@^1.1.7, ember-cli-version-checker@^1.2.0, ember-cli-version-checker@^1.3.1: +ember-cli-version-checker@^1.0.2, ember-cli-version-checker@^1.1.7, ember-cli-version-checker@^1.2.0, ember-cli-version-checker@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/ember-cli-version-checker/-/ember-cli-version-checker-1.3.1.tgz#0bc2d134c830142da64bf9627a0eded10b61ae72" dependencies: @@ -2625,6 +2662,14 @@ ember-cli@^2.14.0: walk-sync "^0.3.0" yam "0.0.22" +ember-collection@^1.0.0-alpha.7: + version "1.0.0-alpha.7" + resolved "https://registry.yarnpkg.com/ember-collection/-/ember-collection-1.0.0-alpha.7.tgz#172c2ddaa7d3482fac0781686b434c9c9c42d79a" + dependencies: + ember-cli-babel "^5.1.5" + ember-cli-htmlbars "^1.0.1" + layout-bin-packer "^1.2.0" + ember-composability-tools@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/ember-composability-tools/-/ember-composability-tools-0.0.8.tgz#9122e743c0aed759da7f20f3d5a9711a51bac619" @@ -2634,9 +2679,9 @@ ember-composability-tools@0.0.8: ember-getowner-polyfill "1.1.1" ember-wormhole "0.5.1" -ember-concurrency@^0.8.1: - version "0.8.11" - resolved "https://registry.yarnpkg.com/ember-concurrency/-/ember-concurrency-0.8.11.tgz#a989203d1fa5c5b02d562a03adb4b9d47e0b4583" +ember-concurrency@^0.8.12: + version "0.8.12" + resolved "https://registry.yarnpkg.com/ember-concurrency/-/ember-concurrency-0.8.12.tgz#fb91180e5efeb1024cfa2cfb99d2fe6721930c91" dependencies: babel-core "^6.24.1" ember-cli-babel "^6.8.2" @@ -2655,11 +2700,11 @@ ember-export-application-global@^2.0.0: dependencies: ember-cli-babel "^6.0.0-beta.7" -ember-factory-for-polyfill@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/ember-factory-for-polyfill/-/ember-factory-for-polyfill-1.2.0.tgz#e27752a7d9dbd5336e8b470341bc1c55bbe3e4d2" +ember-factory-for-polyfill@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/ember-factory-for-polyfill/-/ember-factory-for-polyfill-1.3.1.tgz#b446ed64916d293c847a4955240eb2c993b86eae" dependencies: - ember-cli-version-checker "^1.2.0" + ember-cli-version-checker "^2.1.0" ember-getowner-polyfill@1.1.1: version "1.1.1" @@ -2669,11 +2714,11 @@ ember-getowner-polyfill@1.1.1: ember-cli-version-checker "^1.2.0" ember-getowner-polyfill@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ember-getowner-polyfill/-/ember-getowner-polyfill-2.0.1.tgz#9bfe2b4d527ed174e76fef2c8f30937d77cb66fb" + version "2.2.0" + resolved "https://registry.yarnpkg.com/ember-getowner-polyfill/-/ember-getowner-polyfill-2.2.0.tgz#38e7dccbcac69d5ec694000329ec0b2be651d2b2" dependencies: - ember-cli-version-checker "^1.2.0" - ember-factory-for-polyfill "^1.1.0" + ember-cli-version-checker "^2.1.0" + ember-factory-for-polyfill "^1.3.1" ember-inline-svg@^0.1.7: version "0.1.11" @@ -2707,8 +2752,8 @@ ember-maybe-import-regenerator@^0.1.5: regenerator-runtime "^0.9.5" ember-native-dom-helpers@^0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/ember-native-dom-helpers/-/ember-native-dom-helpers-0.5.4.tgz#0bc1506a643fb7adc0abf1d09c44a7914459296b" + version "0.5.5" + resolved "https://registry.yarnpkg.com/ember-native-dom-helpers/-/ember-native-dom-helpers-0.5.5.tgz#979764773a1608a42c3e1ec7e98144e416e35898" dependencies: broccoli-funnel "^1.1.0" ember-cli-babel "^6.6.0" @@ -2746,21 +2791,27 @@ ember-paper@^1.0.0-alpha.19: virtual-each "0.5.1" ember-power-select@^1.8.5: - version "1.9.11" - resolved "https://registry.yarnpkg.com/ember-power-select/-/ember-power-select-1.9.11.tgz#d7aa04e4b6baa93adc9a7b8a8ae989e7a3751eb1" + version "1.10.3" + resolved "https://registry.yarnpkg.com/ember-power-select/-/ember-power-select-1.10.3.tgz#e0b89abd127863a26419a7891f37f69c0c394c13" dependencies: - ember-basic-dropdown "^0.33.1" - ember-cli-babel "^6.8.2" + ember-basic-dropdown "^0.34.0" + ember-cli-babel "^6.10.0" ember-cli-htmlbars "^2.0.1" - ember-concurrency "^0.8.1" - ember-text-measurer "^0.3.3" + ember-concurrency "^0.8.12" + ember-text-measurer "^0.4.0" ember-truth-helpers "^2.0.0" -ember-qunit@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ember-qunit/-/ember-qunit-2.2.0.tgz#3cdf400031c93a38de781a7304819738753b7f99" +ember-qunit@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/ember-qunit/-/ember-qunit-3.1.0.tgz#4995a6207ab66b5d0cf807d0459d48f55f9eee5f" dependencies: - ember-test-helpers "^0.6.3" + "@ember/test-helpers" "^0.7.1" + broccoli-funnel "^2.0.1" + broccoli-merge-trees "^2.0.0" + common-tags "^1.4.0" + ember-cli-babel "^6.3.0" + ember-cli-test-loader "^2.2.0" + qunit "^2.4.1" ember-resolver@^4.0.0: version "4.5.0" @@ -2774,7 +2825,7 @@ ember-resolver@^4.0.0: ember-cli-version-checker "^2.0.0" resolve "^1.3.3" -ember-rfc176-data@^0.3.0: +ember-rfc176-data@^0.3.0, ember-rfc176-data@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/ember-rfc176-data/-/ember-rfc176-data-0.3.1.tgz#6a5a4b8b82ec3af34f3010965fa96b936ca94519" @@ -2811,15 +2862,11 @@ ember-string-ishtmlsafe-polyfill@^1.1.0: ember-cli-babel "^5.1.7" ember-cli-version-checker "^1.2.0" -ember-test-helpers@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/ember-test-helpers/-/ember-test-helpers-0.6.3.tgz#f864cdf6f4e75f3f8768d6537785b5ab6e82d907" - -ember-text-measurer@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/ember-text-measurer/-/ember-text-measurer-0.3.3.tgz#0762809a71c2e1f2e60ab00c53c6eb1b63c9f963" +ember-text-measurer@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/ember-text-measurer/-/ember-text-measurer-0.4.0.tgz#a676195378d4eb4c1617678c2d198a2344b4d12b" dependencies: - ember-cli-babel "^5.1.6" + ember-cli-babel "^6.8.2" ember-truth-helpers@^2.0.0: version "2.0.0" @@ -2827,9 +2874,9 @@ ember-truth-helpers@^2.0.0: dependencies: ember-cli-babel "^6.8.2" -ember-try-config@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ember-try-config/-/ember-try-config-2.1.0.tgz#e0e156229a542346a58ee6f6ad605104c98edfe0" +ember-try-config@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ember-try-config/-/ember-try-config-2.2.0.tgz#6be0af6c71949813e02ac793564fddbf8336b807" dependencies: lodash "^4.6.1" node-fetch "^1.3.3" @@ -2837,15 +2884,14 @@ ember-try-config@^2.0.1: semver "^5.1.0" ember-try@^0.2.15: - version "0.2.17" - resolved "https://registry.yarnpkg.com/ember-try/-/ember-try-0.2.17.tgz#0ffff687630291b4cf94f5b196e728c1a92d8aec" + version "0.2.22" + resolved "https://registry.yarnpkg.com/ember-try/-/ember-try-0.2.22.tgz#3989e9c013c1d5c209ec97f5dfcf4234e594d5e2" dependencies: chalk "^1.0.0" cli-table2 "^0.2.0" core-object "^1.1.0" debug "^2.2.0" - ember-cli-version-checker "^1.1.6" - ember-try-config "^2.0.1" + ember-try-config "^2.2.0" extend "^3.0.0" fs-extra "^0.26.0" promise-map-series "^0.2.1" @@ -2861,13 +2907,20 @@ ember-wormhole@0.5.1: ember-cli-babel "^5.1.6" ember-cli-htmlbars "^1.0.3" -ember-wormhole@0.5.2, ember-wormhole@^0.5.2: +ember-wormhole@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/ember-wormhole/-/ember-wormhole-0.5.2.tgz#cc0ceb7db4f8b8da0fd852edc81d75cb1dcd92f1" dependencies: ember-cli-babel "^6.0.0" ember-cli-htmlbars "^1.1.1" +ember-wormhole@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/ember-wormhole/-/ember-wormhole-0.5.3.tgz#441fdd7729a3b5eed3b0103db84f0ab880ac7f87" + dependencies: + ember-cli-babel "^6.8.2" + ember-cli-htmlbars "^2.0.1" + encodeurl@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" @@ -2939,8 +2992,8 @@ error@^7.0.0: xtend "~4.0.0" es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.35" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.35.tgz#18ee858ce6a3c45c7d79e91c15fcca9ec568494f" + version "0.10.37" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.37.tgz#0ee741d148b80069ba27d020393756af257defc3" dependencies: es6-iterator "~2.0.1" es6-symbol "~3.1.1" @@ -2976,10 +3029,10 @@ eslint-scope@^3.7.1: estraverse "^4.1.1" eslint@^4.0.0: - version "4.10.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.10.0.tgz#f25d0d7955c81968c2309aa5c9a229e045176bb7" + version "4.11.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.11.0.tgz#39a8c82bc0a3783adf5a39fa27fdd9d36fac9a34" dependencies: - ajv "^5.2.0" + ajv "^5.3.0" babel-code-frame "^6.22.0" chalk "^2.1.0" concat-stream "^1.6.0" @@ -2987,7 +3040,7 @@ eslint@^4.0.0: debug "^3.0.1" doctrine "^2.0.0" eslint-scope "^3.7.1" - espree "^3.5.1" + espree "^3.5.2" esquery "^1.0.0" estraverse "^4.2.0" esutils "^2.0.2" @@ -3000,7 +3053,7 @@ eslint@^4.0.0: inquirer "^3.0.6" is-resolvable "^1.0.0" js-yaml "^3.9.1" - json-stable-stringify "^1.0.1" + json-stable-stringify-without-jsonify "^1.0.1" levn "^0.3.0" lodash "^4.17.4" minimatch "^3.0.2" @@ -3017,11 +3070,11 @@ eslint@^4.0.0: table "^4.0.1" text-table "~0.2.0" -espree@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.1.tgz#0c988b8ab46db53100a1954ae4ba995ddd27d87e" +espree@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.2.tgz#756ada8b979e9dcfcdb30aad8d1a9304a905e1ca" dependencies: - acorn "^5.1.1" + acorn "^5.2.1" acorn-jsx "^3.0.0" esprima-fb@~15001.1001.0-dev-harmony-fb: @@ -3181,11 +3234,11 @@ external-editor@^1.1.0: tmp "^0.0.29" external-editor@^2.0.4: - version "2.0.5" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.5.tgz#52c249a3981b9ba187c7cacf5beb50bf1d91a6bc" + version "2.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.1.0.tgz#3d026a21b7f95b5726387d4200ac160d372c3b48" dependencies: + chardet "^0.4.0" iconv-lite "^0.4.17" - jschardet "^1.4.2" tmp "^0.0.33" extglob@^0.3.1: @@ -3473,11 +3526,11 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" fsevents@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4" + version "1.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8" dependencies: nan "^2.3.0" - node-pre-gyp "^0.6.36" + node-pre-gyp "^0.6.39" fstream-ignore@^1.0.0, fstream-ignore@^1.0.5: version "1.0.5" @@ -3627,6 +3680,16 @@ glob@^5.0.10, glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^6.0.4, glob@~6.0.3: + 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.4, 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" @@ -3638,16 +3701,6 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.4, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, gl once "^1.3.0" path-is-absolute "^1.0.0" -glob@~6.0.3: - 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" - global-modules@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" @@ -3725,7 +3778,7 @@ 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.2: +har-validator@~2.0.2, har-validator@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" dependencies: @@ -3785,8 +3838,8 @@ has-unicode@^2.0.0, has-unicode@~2.0.0: resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" hash-for-dep@^1.0.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/hash-for-dep/-/hash-for-dep-1.2.2.tgz#264ceefc4e0ec74248c47ed259c2454fa205112a" + version "1.2.3" + resolved "https://registry.yarnpkg.com/hash-for-dep/-/hash-for-dep-1.2.3.tgz#5ec69fca32c23523972d52acb5bb65ffc3664cab" dependencies: broccoli-kitchen-sink-helpers "^0.3.1" heimdalljs "^0.2.3" @@ -3819,8 +3872,8 @@ heimdalljs-fs-monitor@^0.1.0: heimdalljs-logger "^0.1.7" heimdalljs-graph@^0.3.1: - version "0.3.3" - resolved "https://registry.yarnpkg.com/heimdalljs-graph/-/heimdalljs-graph-0.3.3.tgz#ea801dbba659c8d522fe1cb83b2d605726e4918f" + version "0.3.4" + resolved "https://registry.yarnpkg.com/heimdalljs-graph/-/heimdalljs-graph-0.3.4.tgz#0bd75797beeaa20b0ed59017aed3b2d95312acee" heimdalljs-logger@^0.1.7: version "0.1.9" @@ -3919,7 +3972,7 @@ ignore@^3.3.3: version "3.3.7" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021" -imurmurhash@*, imurmurhash@^0.1.4: +imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -3957,8 +4010,8 @@ inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, i resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" ini@^1.3.4, ini@~1.3.0, ini@~1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" init-package-json@~1.9.1: version "1.9.6" @@ -4262,10 +4315,6 @@ jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" -jschardet@^1.4.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.6.0.tgz#c7d1a71edcff2839db2f9ec30fc5d5ebd3c1a678" - jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" @@ -4294,6 +4343,10 @@ json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" @@ -4363,6 +4416,12 @@ klaw@^1.0.0: optionalDependencies: graceful-fs "^4.1.9" +layout-bin-packer@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/layout-bin-packer/-/layout-bin-packer-1.3.0.tgz#6f232f67db7606b2a405f39ae7197f2931a26c0c" + dependencies: + ember-cli-babel "^5.2.4" + lazy-cache@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" @@ -4519,7 +4578,7 @@ lodash._basefor@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/lodash._basefor/-/lodash._basefor-3.0.3.tgz#7550b4e9218ef09fad24343b612021c79b4c20c2" -lodash._baseindexof@*, lodash._baseindexof@^3.0.0: +lodash._baseindexof@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lodash._baseindexof/-/lodash._baseindexof-3.1.0.tgz#fe52b53a1c6761e42618d654e4a25789ed61822c" @@ -4531,13 +4590,6 @@ lodash._baseisequal@^3.0.0: lodash.istypedarray "^3.0.0" lodash.keys "^3.0.0" -lodash._baseuniq@*: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8" - dependencies: - lodash._createset "~4.0.0" - lodash._root "~3.0.0" - lodash._baseuniq@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-3.0.3.tgz#2123fa0db2d69c28d5beb1c1f36d61522a740234" @@ -4546,11 +4598,11 @@ lodash._baseuniq@^3.0.0: lodash._cacheindexof "^3.0.0" lodash._createcache "^3.0.0" -lodash._bindcallback@*, lodash._bindcallback@^3.0.0: +lodash._bindcallback@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" -lodash._cacheindexof@*, lodash._cacheindexof@^3.0.0: +lodash._cacheindexof@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/lodash._cacheindexof/-/lodash._cacheindexof-3.0.2.tgz#3dc69ac82498d2ee5e3ce56091bafd2adc7bde92" @@ -4562,16 +4614,12 @@ lodash._createassigner@^3.0.0: lodash._isiterateecall "^3.0.0" lodash.restparam "^3.0.0" -lodash._createcache@*, lodash._createcache@^3.0.0: +lodash._createcache@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/lodash._createcache/-/lodash._createcache-3.1.2.tgz#56d6a064017625e79ebca6b8018e17440bdcf093" dependencies: lodash._getnative "^3.0.0" -lodash._createset@~4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26" - lodash._createwrapper@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/lodash._createwrapper/-/lodash._createwrapper-2.3.0.tgz#d1aae1102dadf440e8e06fc133a6edd7fe146075" @@ -4590,7 +4638,7 @@ lodash._escapestringchar@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/lodash._escapestringchar/-/lodash._escapestringchar-2.3.0.tgz#cce73ae60fc6da55d2bf8a0679c23ca2bab149fc" -lodash._getnative@*, lodash._getnative@^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" @@ -4625,10 +4673,6 @@ lodash._reunescapedhtml@~2.3.0: lodash._htmlescapes "~2.3.0" lodash.keys "~2.3.0" -lodash._root@~3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" - lodash._setbinddata@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/lodash._setbinddata/-/lodash._setbinddata-2.3.0.tgz#e5610490acd13277d59858d95b5f2727f1508f04" @@ -4736,14 +4780,10 @@ lodash.identity@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/lodash.identity/-/lodash.identity-2.3.0.tgz#6b01a210c9485355c2a913b48b6711219a173ded" -lodash.isarguments@*, lodash.isarguments@^3.0.0: +lodash.isarguments@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" -lodash.isarray@*: - version "4.0.0" - resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-4.0.0.tgz#2aca496b28c4ca6d726715313590c02e6ea34403" - lodash.isarray@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" @@ -4762,10 +4802,6 @@ lodash.istypedarray@^3.0.0: version "3.0.6" resolved "https://registry.yarnpkg.com/lodash.istypedarray/-/lodash.istypedarray-3.0.6.tgz#c9a477498607501d8e8494d283b87c39281cef62" -lodash.keys@*: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-4.2.0.tgz#a08602ac12e4fb83f91fc1fb7a360a4d9ba35205" - lodash.keys@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" @@ -4816,7 +4852,7 @@ lodash.pairs@^3.0.0: dependencies: lodash.keys "^3.0.0" -lodash.restparam@*, lodash.restparam@^3.0.0: +lodash.restparam@^3.0.0: version "3.6.1" resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" @@ -5083,10 +5119,14 @@ mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, dependencies: mime-db "~1.30.0" -mime@1.4.1, mime@^1.2.11: +mime@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" +mime@^1.2.11: + version "1.5.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.5.0.tgz#59c20e03ae116089edeb7d3b34a6788c5b3cccea" + mimic-fn@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" @@ -5098,7 +5138,7 @@ minimatch@1: lru-cache "2" sigmund "~1.0.0" -"minimatch@2 || 3", 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.4, minimatch@~3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -5143,8 +5183,8 @@ moment-timezone@^0.3.0: moment ">= 2.6.0" "moment@>= 2.6.0": - version "2.19.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.1.tgz#56da1a2d1cbf01d38b7e1afc31c10bcfa1929167" + version "2.19.2" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.2.tgz#8a7f774c95a64550b4c7ebd496683908f9419dbe" morgan@^1.8.1: version "1.9.0" @@ -5185,8 +5225,8 @@ mute-stream@0.0.7, mute-stream@~0.0.4: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" nan@^2.3.0, nan@^2.3.2: - version "2.7.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" + version "2.8.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a" natural-compare@^1.4.0: version "1.4.0" @@ -5261,7 +5301,7 @@ node-notifier@^5.0.1: shellwords "^0.1.0" which "^1.2.12" -node-pre-gyp@^0.6.36: +node-pre-gyp@^0.6.39: version "0.6.39" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" dependencies: @@ -5278,8 +5318,8 @@ node-pre-gyp@^0.6.36: tar-pack "^3.4.0" node-sass@^4.1.0: - version "4.5.3" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.5.3.tgz#d09c9d1179641239d1b97ffc6231fdcec53e1568" + 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" @@ -5296,9 +5336,10 @@ node-sass@^4.1.0: 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" node-uuid@~1.4.7: version "1.4.8" @@ -5800,10 +5841,10 @@ postcss-value-parser@^3.2.3: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" postcss@^6.0.1, postcss@^6.0.13: - version "6.0.13" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.13.tgz#b9ecab4ee00c89db3ec931145bd9590bbf3f125f" + version "6.0.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.14.tgz#5534c72114739e75d0afcf017db853099f562885" dependencies: - chalk "^2.1.0" + chalk "^2.3.0" source-map "^0.6.1" supports-color "^4.4.0" @@ -5886,6 +5927,10 @@ qs@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/qs/-/qs-5.2.1.tgz#801fee030e0b9450d6385adc48a4cc55b44aedfc" +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" @@ -5898,13 +5943,9 @@ quick-temp@^0.1.0, quick-temp@^0.1.2, quick-temp@^0.1.3, quick-temp@^0.1.5, quic rimraf "^2.5.4" underscore.string "~3.3.4" -qunit-notifications@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/qunit-notifications/-/qunit-notifications-0.1.1.tgz#3001afc6a6a77dfbd962ccbcddde12dec5286c09" - -qunitjs@^2.4.0: +qunit@^2.4.1: version "2.4.1" - resolved "https://registry.yarnpkg.com/qunitjs/-/qunitjs-2.4.1.tgz#88aba055a9e2ec3dbebfaad02471b2cb002c530b" + resolved "https://registry.yarnpkg.com/qunit/-/qunit-2.4.1.tgz#373c826b3b91795f3e5479cc94f0f6fa14dedc47" dependencies: chokidar "1.6.1" commander "2.9.0" @@ -6043,7 +6084,7 @@ readable-stream@~2.0.5: string_decoder "~0.10.x" util-deprecate "~1.0.1" -readdir-scoped-modules@*, readdir-scoped-modules@^1.0.0: +readdir-scoped-modules@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz#9fafa37d286be5d92cbaebdee030dc9b5f406747" dependencies: @@ -6201,7 +6242,7 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -request@2, request@^2.47.0, request@^2.79.0: +request@2, request@^2.47.0: version "2.83.0" resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" dependencies: @@ -6280,6 +6321,31 @@ request@~2.67.0: tough-cookie "~2.2.0" tunnel-agent "~0.4.1" +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-dir@^0.3.0: version "0.3.2" resolved "https://registry.yarnpkg.com/require-dir/-/require-dir-0.3.2.tgz#c1d5c75e9fbffde9f2e6b33e383db4f594b5a6a9" @@ -6320,7 +6386,7 @@ resolve@1.3.2: dependencies: path-parse "^1.0.5" -resolve@^1.1.2, resolve@^1.1.6, resolve@^1.3.0, resolve@^1.3.3, resolve@^1.4.0: +resolve@^1.1.2, resolve@^1.1.6, resolve@^1.3.0, resolve@^1.3.3, resolve@^1.4.0, resolve@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" dependencies: @@ -6422,7 +6488,7 @@ sane@^1.1.1, sane@^1.6.0: walker "~1.0.5" watch "~0.10.0" -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: @@ -6442,7 +6508,7 @@ scss-tokenizer@^0.2.3: js-base64 "^2.1.8" source-map "^0.4.2" -"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.1.0, semver@^5.1.1, semver@^5.3.0: +"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.1.0, semver@^5.1.1, semver@^5.3.0, semver@^5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" @@ -6797,12 +6863,6 @@ stringstream@~0.0.4, stringstream@~0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" -strip-ansi@*, strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - dependencies: - ansi-regex "^3.0.0" - strip-ansi@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.3.0.tgz#25f48ea22ca79187f3174a4db8759347bb126220" @@ -6815,6 +6875,12 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.0.0" + strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" @@ -7039,6 +7105,12 @@ trim-right@^1.0.0, 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" + try-resolve@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/try-resolve/-/try-resolve-1.0.1.tgz#cfde6fabd72d63e5797cfaab873abbe8e700e912" @@ -7087,8 +7159,8 @@ uc.micro@^1.0.1, uc.micro@^1.0.3: resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.3.tgz#7ed50d5e0f9a9fb0a573379259f2a77458d50192" uglify-es@^3.1.3: - version "3.1.6" - resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.1.6.tgz#b0f818c055a7e9538abc2286e70c743f2938311f" + version "3.1.10" + resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.1.10.tgz#f1840c3b52771d17555a02ce158cf46f689384bd" dependencies: commander "~2.11.0" source-map "~0.6.1" @@ -7185,7 +7257,7 @@ uuid@^3.0.0, uuid@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" -validate-npm-package-license@*, validate-npm-package-license@^3.0.1: +validate-npm-package-license@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" dependencies: @@ -7268,8 +7340,8 @@ websocket-driver@>=0.5.1: websocket-extensions ">=0.1.1" websocket-extensions@>=0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.2.tgz#0e18781de629a18308ce1481650f67ffa2693a5d" + version "0.1.3" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" whet.extend@~0.9.9: version "0.9.9"