aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2018-04-17 10:35:08 +0200
committerChocobozzz <me@florianbigard.com>2018-04-17 10:35:08 +0200
commitcc1561f9f7b33d739d66b23bacae23ea49f2fa12 (patch)
tree4ba9e905eaff4c80e9412b1ccf344c81c8c41ea8
parente6f627975bebd00d396d11442e582d80856bc6bd (diff)
downloadPeerTube-cc1561f9f7b33d739d66b23bacae23ea49f2fa12.tar.gz
PeerTube-cc1561f9f7b33d739d66b23bacae23ea49f2fa12.tar.zst
PeerTube-cc1561f9f7b33d739d66b23bacae23ea49f2fa12.zip
Simplify client syndications
-rw-r--r--client/package.json2
-rw-r--r--client/src/app/account/account-videos/account-videos.component.ts4
-rw-r--r--client/src/app/shared/video/abstract-video-list.scss5
-rw-r--r--client/src/app/shared/video/abstract-video-list.ts5
-rw-r--r--client/src/app/shared/video/video-feed.component.html9
-rw-r--r--client/src/app/shared/video/video-feed.component.ts8
-rw-r--r--client/src/app/shared/video/video.service.ts64
-rw-r--r--client/src/app/videos/+video-watch/video-watch.component.ts14
-rw-r--r--client/src/app/videos/video-list/video-local.component.ts6
-rw-r--r--client/src/app/videos/video-list/video-recently-added.component.ts6
-rw-r--r--client/src/app/videos/video-list/video-trending.component.ts8
-rw-r--r--client/yarn.lock90
-rwxr-xr-xscripts/watch/server.sh2
13 files changed, 105 insertions, 118 deletions
diff --git a/client/package.json b/client/package.json
index eb82030fb..07de7db6c 100644
--- a/client/package.json
+++ b/client/package.json
@@ -47,7 +47,7 @@
47 "@types/sanitize-html": "^1.14.0", 47 "@types/sanitize-html": "^1.14.0",
48 "@types/video.js": "6.2.4", 48 "@types/video.js": "6.2.4",
49 "@types/webtorrent": "^0.98.4", 49 "@types/webtorrent": "^0.98.4",
50 "angular2-notifications": "^0.9.6", 50 "angular2-notifications": "^1.0.0",
51 "awesome-typescript-loader": "5.0.0", 51 "awesome-typescript-loader": "5.0.0",
52 "bootstrap-sass": "^3.3.7", 52 "bootstrap-sass": "^3.3.7",
53 "codelyzer": "^4.0.2", 53 "codelyzer": "^4.0.2",
diff --git a/client/src/app/account/account-videos/account-videos.component.ts b/client/src/app/account/account-videos/account-videos.component.ts
index b9a3bea3f..07f5b7f0b 100644
--- a/client/src/app/account/account-videos/account-videos.component.ts
+++ b/client/src/app/account/account-videos/account-videos.component.ts
@@ -27,8 +27,6 @@ export class AccountVideosComponent extends AbstractVideoList implements OnInit,
27 totalItems: null 27 totalItems: null
28 } 28 }
29 29
30 syndicationItems = {}
31
32 protected baseVideoWidth = -1 30 protected baseVideoWidth = -1
33 protected baseVideoHeight = 155 31 protected baseVideoHeight = 155
34 32
@@ -43,6 +41,8 @@ export class AccountVideosComponent extends AbstractVideoList implements OnInit,
43 41
44 ngOnInit () { 42 ngOnInit () {
45 super.ngOnInit() 43 super.ngOnInit()
44
45 // this.generateSyndicationList()
46 } 46 }
47 47
48 ngOnDestroy () { 48 ngOnDestroy () {
diff --git a/client/src/app/shared/video/abstract-video-list.scss b/client/src/app/shared/video/abstract-video-list.scss
index b75907dc9..913fcfe22 100644
--- a/client/src/app/shared/video/abstract-video-list.scss
+++ b/client/src/app/shared/video/abstract-video-list.scss
@@ -8,9 +8,12 @@
8 } 8 }
9} 9}
10 10
11.title-page.title-page-single {
12 margin-right: 5px;
13}
14
11my-video-feed { 15my-video-feed {
12 display: inline-block; 16 display: inline-block;
13 margin-left: -45px;
14} 17}
15 18
16@media screen and (max-width: 500px) { 19@media screen and (max-width: 500px) {
diff --git a/client/src/app/shared/video/abstract-video-list.ts b/client/src/app/shared/video/abstract-video-list.ts
index 024834dfc..c1c07e628 100644
--- a/client/src/app/shared/video/abstract-video-list.ts
+++ b/client/src/app/shared/video/abstract-video-list.ts
@@ -3,7 +3,6 @@ import { ActivatedRoute, Router } from '@angular/router'
3import { isInMobileView } from '@app/shared/misc/utils' 3import { isInMobileView } from '@app/shared/misc/utils'
4import { InfiniteScrollerDirective } from '@app/shared/video/infinite-scroller.directive' 4import { InfiniteScrollerDirective } from '@app/shared/video/infinite-scroller.directive'
5import { NotificationsService } from 'angular2-notifications' 5import { NotificationsService } from 'angular2-notifications'
6import { PopoverModule } from 'ngx-bootstrap/popover'
7import 'rxjs/add/operator/debounceTime' 6import 'rxjs/add/operator/debounceTime'
8import { Observable } from 'rxjs/Observable' 7import { Observable } from 'rxjs/Observable'
9import { fromEvent } from 'rxjs/observable/fromEvent' 8import { fromEvent } from 'rxjs/observable/fromEvent'
@@ -12,8 +11,6 @@ import { AuthService } from '../../core/auth'
12import { ComponentPagination } from '../rest/component-pagination.model' 11import { ComponentPagination } from '../rest/component-pagination.model'
13import { SortField } from './sort-field.type' 12import { SortField } from './sort-field.type'
14import { Video } from './video.model' 13import { Video } from './video.model'
15import { FeedFormat } from '../../../../../shared'
16import { VideoFeedComponent } from '@app/shared/video/video-feed.component'
17 14
18export abstract class AbstractVideoList implements OnInit, OnDestroy { 15export abstract class AbstractVideoList implements OnInit, OnDestroy {
19 private static LINES_PER_PAGE = 4 16 private static LINES_PER_PAGE = 4
@@ -28,7 +25,7 @@ export abstract class AbstractVideoList implements OnInit, OnDestroy {
28 } 25 }
29 sort: SortField = '-createdAt' 26 sort: SortField = '-createdAt'
30 defaultSort: SortField = '-createdAt' 27 defaultSort: SortField = '-createdAt'
31 syndicationItems = {} 28 syndicationItems = []
32 29
33 loadOnInit = true 30 loadOnInit = true
34 pageHeight: number 31 pageHeight: number
diff --git a/client/src/app/shared/video/video-feed.component.html b/client/src/app/shared/video/video-feed.component.html
index 7733ef221..5ef13e1ed 100644
--- a/client/src/app/shared/video/video-feed.component.html
+++ b/client/src/app/shared/video/video-feed.component.html
@@ -1,14 +1,13 @@
1<div class="video-feed"> 1<div class="video-feed">
2 <span *ngIf="(syndicationItems | myObjectLength) >= 1" class="icon icon-syndication" 2 <span *ngIf="syndicationItems.length !== 0" class="icon icon-syndication"
3 [popover]="feedsList" 3 [popover]="feedsList"
4 placement="bottom" 4 placement="bottom"
5 [outsideClick]="true"> 5 [outsideClick]="true">
6 </span> 6 </span>
7 7
8 <ng-template #feedsList> 8 <ng-template #feedsList>
9 <div *ngFor="let key of syndicationItems | keys"> 9 <div *ngFor="let item of syndicationItems">
10 <a [href]="syndicationItems[key]">{{ key }}</a> 10 <a [href]="item.url" target="_blank" rel="noopener noreferrer">{{ item.label }}</a>
11 </div> 11 </div>
12 </ng-template> 12 </ng-template>
13</div> 13</div> \ No newline at end of file
14 \ No newline at end of file
diff --git a/client/src/app/shared/video/video-feed.component.ts b/client/src/app/shared/video/video-feed.component.ts
index 41257ca99..6922153c0 100644
--- a/client/src/app/shared/video/video-feed.component.ts
+++ b/client/src/app/shared/video/video-feed.component.ts
@@ -1,14 +1,10 @@
1import { Component, Input, OnChanges, SimpleChanges } from '@angular/core' 1import { Component, Input } from '@angular/core'
2 2
3@Component({ 3@Component({
4 selector: 'my-video-feed', 4 selector: 'my-video-feed',
5 styleUrls: [ './video-feed.component.scss' ], 5 styleUrls: [ './video-feed.component.scss' ],
6 templateUrl: './video-feed.component.html' 6 templateUrl: './video-feed.component.html'
7}) 7})
8export class VideoFeedComponent implements OnChanges { 8export class VideoFeedComponent {
9 @Input() syndicationItems 9 @Input() syndicationItems
10
11 ngOnChanges (changes: SimpleChanges) {
12 this.syndicationItems = changes.syndicationItems.currentValue
13 }
14} 10}
diff --git a/client/src/app/shared/video/video.service.ts b/client/src/app/shared/video/video.service.ts
index 009155410..4c19c3765 100644
--- a/client/src/app/shared/video/video.service.ts
+++ b/client/src/app/shared/video/video.service.ts
@@ -117,45 +117,53 @@ export class VideoService {
117 .catch((res) => this.restExtractor.handleError(res)) 117 .catch((res) => this.restExtractor.handleError(res))
118 } 118 }
119 119
120 baseFeed () { 120 buildBaseFeedUrls () {
121 const feed = {} 121 const feeds = [
122 122 {
123 for (let item in FeedFormat) { 123 label: 'rss 2.0',
124 feed[FeedFormat[item]] = VideoService.BASE_FEEDS_URL + item.toLowerCase() 124 url: VideoService.BASE_FEEDS_URL + FeedFormat.RSS.toLowerCase()
125 } 125 },
126 126 {
127 return feed 127 label: 'atom 1.0',
128 } 128 url: VideoService.BASE_FEEDS_URL + FeedFormat.ATOM.toLowerCase()
129 129 },
130 getFeed ( 130 {
131 filter?: VideoFilter 131 label: 'json 1.0',
132 ) { 132 url: VideoService.BASE_FEEDS_URL + FeedFormat.JSON.toLowerCase()
133 }
134 ]
135
136 return feeds
137 }
138
139 getVideoFeedUrls (filter?: VideoFilter) {
133 let params = this.restService.addRestGetParams(new HttpParams()) 140 let params = this.restService.addRestGetParams(new HttpParams())
134 const feed = this.baseFeed() 141 const feeds = this.buildBaseFeedUrls()
135 142
136 if (filter) { 143 if (filter) params = params.set('filter', filter)
137 params = params.set('filter', filter) 144
138 } 145 if (params.keys().length !== 0) {
139 for (let item in feed) { 146 for (let item of feeds) {
140 feed[item] = feed[item] + ((params.toString().length === 0) ? '' : '?') + params.toString() 147 item.url += `?${params.toString()}`
148 }
141 } 149 }
142 150
143 return feed 151 return feeds
144 } 152 }
145 153
146 getAccountFeed ( 154 getAccountFeedUrls (accountId: number) {
147 accountId: number,
148 host?: string
149 ) {
150 let params = this.restService.addRestGetParams(new HttpParams()) 155 let params = this.restService.addRestGetParams(new HttpParams())
151 const feed = this.baseFeed() 156 const feeds = this.buildBaseFeedUrls()
152 157
153 params = params.set('accountId', accountId.toString()) 158 params = params.set('accountId', accountId.toString())
154 for (let item in feed) { 159
155 feed[item] = feed[item] + ((params.toString().length === 0) ? '' : '?') + params.toString() 160 if (params.keys().length !== 0) {
161 for (let item of feeds) {
162 item.url += `?${params.toString()}`
163 }
156 } 164 }
157 165
158 return feed 166 return feeds
159 } 167 }
160 168
161 searchVideos ( 169 searchVideos (
diff --git a/client/src/app/videos/+video-watch/video-watch.component.ts b/client/src/app/videos/+video-watch/video-watch.component.ts
index b3ebe3e4b..182703cdf 100644
--- a/client/src/app/videos/+video-watch/video-watch.component.ts
+++ b/client/src/app/videos/+video-watch/video-watch.component.ts
@@ -1,4 +1,4 @@
1import { Component, ElementRef, NgZone, OnDestroy, OnInit, ViewChild, OnChanges } from '@angular/core' 1import { Component, ElementRef, NgZone, OnDestroy, OnInit, ViewChild } from '@angular/core'
2import { ActivatedRoute, Router } from '@angular/router' 2import { ActivatedRoute, Router } from '@angular/router'
3import { RedirectService } from '@app/core/routing/redirect.service' 3import { RedirectService } from '@app/core/routing/redirect.service'
4import { peertubeLocalStorage } from '@app/shared/misc/peertube-local-storage' 4import { peertubeLocalStorage } from '@app/shared/misc/peertube-local-storage'
@@ -9,20 +9,18 @@ import { Subscription } from 'rxjs/Subscription'
9import * as videojs from 'video.js' 9import * as videojs from 'video.js'
10import 'videojs-hotkeys' 10import 'videojs-hotkeys'
11import * as WebTorrent from 'webtorrent' 11import * as WebTorrent from 'webtorrent'
12import { UserVideoRateType, VideoRateType, FeedFormat } from '../../../../../shared' 12import { UserVideoRateType, VideoRateType } from '../../../../../shared'
13import '../../../assets/player/peertube-videojs-plugin' 13import '../../../assets/player/peertube-videojs-plugin'
14import { AuthService, ConfirmService } from '../../core' 14import { AuthService, ConfirmService } from '../../core'
15import { VideoBlacklistService } from '../../shared' 15import { VideoBlacklistService } from '../../shared'
16import { Account } from '../../shared/account/account.model' 16import { Account } from '../../shared/account/account.model'
17import { VideoDetails } from '../../shared/video/video-details.model' 17import { VideoDetails } from '../../shared/video/video-details.model'
18import { VideoFeedComponent } from '../../shared/video/video-feed.component'
19import { Video } from '../../shared/video/video.model' 18import { Video } from '../../shared/video/video.model'
20import { VideoService } from '../../shared/video/video.service' 19import { VideoService } from '../../shared/video/video.service'
21import { MarkdownService } from '../shared' 20import { MarkdownService } from '../shared'
22import { VideoDownloadComponent } from './modal/video-download.component' 21import { VideoDownloadComponent } from './modal/video-download.component'
23import { VideoReportComponent } from './modal/video-report.component' 22import { VideoReportComponent } from './modal/video-report.component'
24import { VideoShareComponent } from './modal/video-share.component' 23import { VideoShareComponent } from './modal/video-share.component'
25import { environment } from '../../../environments/environment'
26import { getVideojsOptions } from '../../../assets/player/peertube-player' 24import { getVideojsOptions } from '../../../assets/player/peertube-player'
27 25
28@Component({ 26@Component({
@@ -248,13 +246,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
248 } 246 }
249 247
250 generateSyndicationList () { 248 generateSyndicationList () {
251 const feeds = this.videoService.getAccountFeed( 249 this.syndicationItems = this.videoService.getAccountFeedUrls(this.video.account.id)
252 this.video.account.id,
253 (this.video.isLocal) ? environment.apiUrl : this.video.account.host
254 )
255 this.syndicationItems['rss 2.0'] = feeds[FeedFormat.RSS]
256 this.syndicationItems['atom 1.0'] = feeds[FeedFormat.ATOM]
257 this.syndicationItems['json 1.0'] = feeds[FeedFormat.JSON]
258 } 250 }
259 251
260 isVideoRemovable () { 252 isVideoRemovable () {
diff --git a/client/src/app/videos/video-list/video-local.component.ts b/client/src/app/videos/video-list/video-local.component.ts
index 9d626abd1..90eb96afe 100644
--- a/client/src/app/videos/video-list/video-local.component.ts
+++ b/client/src/app/videos/video-list/video-local.component.ts
@@ -30,6 +30,7 @@ export class VideoLocalComponent extends AbstractVideoList implements OnInit, On
30 30
31 ngOnInit () { 31 ngOnInit () {
32 super.ngOnInit() 32 super.ngOnInit()
33
33 this.generateSyndicationList() 34 this.generateSyndicationList()
34 } 35 }
35 36
@@ -44,9 +45,6 @@ export class VideoLocalComponent extends AbstractVideoList implements OnInit, On
44 } 45 }
45 46
46 generateSyndicationList () { 47 generateSyndicationList () {
47 const feeds = this.videoService.getFeed('local') 48 this.syndicationItems = this.videoService.getVideoFeedUrls('local')
48 this.syndicationItems['rss 2.0'] = feeds[FeedFormat.RSS]
49 this.syndicationItems['atom 1.0'] = feeds[FeedFormat.ATOM]
50 this.syndicationItems['json 1.0'] = feeds[FeedFormat.JSON]
51 } 49 }
52} 50}
diff --git a/client/src/app/videos/video-list/video-recently-added.component.ts b/client/src/app/videos/video-list/video-recently-added.component.ts
index 2bdc20d92..3b8108b00 100644
--- a/client/src/app/videos/video-list/video-recently-added.component.ts
+++ b/client/src/app/videos/video-list/video-recently-added.component.ts
@@ -29,6 +29,7 @@ export class VideoRecentlyAddedComponent extends AbstractVideoList implements On
29 29
30 ngOnInit () { 30 ngOnInit () {
31 super.ngOnInit() 31 super.ngOnInit()
32
32 this.generateSyndicationList() 33 this.generateSyndicationList()
33 } 34 }
34 35
@@ -43,9 +44,6 @@ export class VideoRecentlyAddedComponent extends AbstractVideoList implements On
43 } 44 }
44 45
45 generateSyndicationList () { 46 generateSyndicationList () {
46 const feeds = this.videoService.getFeed('local') 47 this.syndicationItems = this.videoService.getVideoFeedUrls()
47 this.syndicationItems['rss 2.0'] = feeds[FeedFormat.RSS]
48 this.syndicationItems['atom 1.0'] = feeds[FeedFormat.ATOM]
49 this.syndicationItems['json 1.0'] = feeds[FeedFormat.JSON]
50 } 48 }
51} 49}
diff --git a/client/src/app/videos/video-list/video-trending.component.ts b/client/src/app/videos/video-list/video-trending.component.ts
index 905c75ab0..6358ef91f 100644
--- a/client/src/app/videos/video-list/video-trending.component.ts
+++ b/client/src/app/videos/video-list/video-trending.component.ts
@@ -6,8 +6,6 @@ import { AuthService } from '../../core/auth'
6import { AbstractVideoList } from '../../shared/video/abstract-video-list' 6import { AbstractVideoList } from '../../shared/video/abstract-video-list'
7import { SortField } from '../../shared/video/sort-field.type' 7import { SortField } from '../../shared/video/sort-field.type'
8import { VideoService } from '../../shared/video/video.service' 8import { VideoService } from '../../shared/video/video.service'
9import { FeedFormat } from '../../../../../shared/models/feeds/feed-format.enum'
10import * as url from 'url'
11 9
12@Component({ 10@Component({
13 selector: 'my-videos-trending', 11 selector: 'my-videos-trending',
@@ -29,6 +27,7 @@ export class VideoTrendingComponent extends AbstractVideoList implements OnInit,
29 27
30 ngOnInit () { 28 ngOnInit () {
31 super.ngOnInit() 29 super.ngOnInit()
30
32 this.generateSyndicationList() 31 this.generateSyndicationList()
33 } 32 }
34 33
@@ -42,9 +41,6 @@ export class VideoTrendingComponent extends AbstractVideoList implements OnInit,
42 } 41 }
43 42
44 generateSyndicationList () { 43 generateSyndicationList () {
45 const feeds = this.videoService.getFeed('local') 44 this.syndicationItems = this.videoService.getVideoFeedUrls()
46 this.syndicationItems['rss 2.0'] = feeds[FeedFormat.RSS]
47 this.syndicationItems['atom 1.0'] = feeds[FeedFormat.ATOM]
48 this.syndicationItems['json 1.0'] = feeds[FeedFormat.JSON]
49 } 45 }
50} 46}
diff --git a/client/yarn.lock b/client/yarn.lock
index 3ae0b73c7..c889ec703 100644
--- a/client/yarn.lock
+++ b/client/yarn.lock
@@ -28,8 +28,8 @@
28 rxjs "^5.5.6" 28 rxjs "^5.5.6"
29 29
30"@angular/animations@~5.2.2": 30"@angular/animations@~5.2.2":
31 version "5.2.9" 31 version "5.2.10"
32 resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-5.2.9.tgz#220db9fb5a52a193db0023d721b23ddd25a75770" 32 resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-5.2.10.tgz#61718792e0922ac622fd7c6dfb0afbb996638692"
33 dependencies: 33 dependencies:
34 tslib "^1.7.1" 34 tslib "^1.7.1"
35 35
@@ -99,14 +99,14 @@
99 node-sass "^4.7.2" 99 node-sass "^4.7.2"
100 100
101"@angular/common@~5.2.2": 101"@angular/common@~5.2.2":
102 version "5.2.9" 102 version "5.2.10"
103 resolved "https://registry.yarnpkg.com/@angular/common/-/common-5.2.9.tgz#beb25d4434498abae56bd8dc2c01ade3f6c45e81" 103 resolved "https://registry.yarnpkg.com/@angular/common/-/common-5.2.10.tgz#828308df8505a31f219a6895ff91dbb178ebac98"
104 dependencies: 104 dependencies:
105 tslib "^1.7.1" 105 tslib "^1.7.1"
106 106
107"@angular/compiler-cli@~5.2.2": 107"@angular/compiler-cli@~5.2.2":
108 version "5.2.9" 108 version "5.2.10"
109 resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-5.2.9.tgz#36a069937d50a8a294eda233b5b1b2c71139751f" 109 resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-5.2.10.tgz#7e9dead0730dc20f7658e110a558b557b60e7be2"
110 dependencies: 110 dependencies:
111 chokidar "^1.4.2" 111 chokidar "^1.4.2"
112 minimist "^1.2.0" 112 minimist "^1.2.0"
@@ -114,54 +114,54 @@
114 tsickle "^0.27.2" 114 tsickle "^0.27.2"
115 115
116"@angular/compiler@~5.2.2": 116"@angular/compiler@~5.2.2":
117 version "5.2.9" 117 version "5.2.10"
118 resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-5.2.9.tgz#1d03bc1e8b38c259bc58114d691c2140d244f8f5" 118 resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-5.2.10.tgz#1cd9914436f0707957823531c4418ce5b7e6a130"
119 dependencies: 119 dependencies:
120 tslib "^1.7.1" 120 tslib "^1.7.1"
121 121
122"@angular/core@~5.2.2": 122"@angular/core@~5.2.2":
123 version "5.2.9" 123 version "5.2.10"
124 resolved "https://registry.yarnpkg.com/@angular/core/-/core-5.2.9.tgz#3daf13ef9aa754b9954ed21da3eb322e8b20f667" 124 resolved "https://registry.yarnpkg.com/@angular/core/-/core-5.2.10.tgz#a6eba06cae7267efbd2666e3fa5e42b84c2261de"
125 dependencies: 125 dependencies:
126 tslib "^1.7.1" 126 tslib "^1.7.1"
127 127
128"@angular/forms@~5.2.2": 128"@angular/forms@~5.2.2":
129 version "5.2.9" 129 version "5.2.10"
130 resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-5.2.9.tgz#12c45b3a02c398b354f09cc740d914cd904c0c9c" 130 resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-5.2.10.tgz#6a4cf9c87b57005599c0ec59a79b7f1b06375591"
131 dependencies: 131 dependencies:
132 tslib "^1.7.1" 132 tslib "^1.7.1"
133 133
134"@angular/http@~5.2.2": 134"@angular/http@~5.2.2":
135 version "5.2.9" 135 version "5.2.10"
136 resolved "https://registry.yarnpkg.com/@angular/http/-/http-5.2.9.tgz#2ffea536e181bc97e2867593d57425ea7853285b" 136 resolved "https://registry.yarnpkg.com/@angular/http/-/http-5.2.10.tgz#d80d60fc205b043f72bd61ba22e7aa386d6a51ec"
137 dependencies: 137 dependencies:
138 tslib "^1.7.1" 138 tslib "^1.7.1"
139 139
140"@angular/language-service@^5.1.0": 140"@angular/language-service@^5.1.0":
141 version "5.2.9" 141 version "5.2.10"
142 resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-5.2.9.tgz#4838bb6319c99e8f5beb08bdfb392ee9a1173766" 142 resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-5.2.10.tgz#5699af9d46033faccefeb21d4d168524d2180a8c"
143 143
144"@angular/platform-browser-dynamic@~5.2.2": 144"@angular/platform-browser-dynamic@~5.2.2":
145 version "5.2.9" 145 version "5.2.10"
146 resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-5.2.9.tgz#86075b7bb694861f722ceda29aae186b045c6b7d" 146 resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-5.2.10.tgz#bec4c0ca9fb16c34adee851caa187989953216ca"
147 dependencies: 147 dependencies:
148 tslib "^1.7.1" 148 tslib "^1.7.1"
149 149
150"@angular/platform-browser@~5.2.2": 150"@angular/platform-browser@~5.2.2":
151 version "5.2.9" 151 version "5.2.10"
152 resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-5.2.9.tgz#9ee76327b1b3affad68ffa839058661b7704bc2c" 152 resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-5.2.10.tgz#92883803de7362e635748a440dd5f6172fc2394a"
153 dependencies: 153 dependencies:
154 tslib "^1.7.1" 154 tslib "^1.7.1"
155 155
156"@angular/router@~5.2.2": 156"@angular/router@~5.2.2":
157 version "5.2.9" 157 version "5.2.10"
158 resolved "https://registry.yarnpkg.com/@angular/router/-/router-5.2.9.tgz#0369df6e60c6da3a5842c6eb35e3958d4ffe727e" 158 resolved "https://registry.yarnpkg.com/@angular/router/-/router-5.2.10.tgz#cb36c32de0a233a9b49789e11ca0f96c5304f25a"
159 dependencies: 159 dependencies:
160 tslib "^1.7.1" 160 tslib "^1.7.1"
161 161
162"@angular/service-worker@^5.2.4": 162"@angular/service-worker@^5.2.4":
163 version "5.2.9" 163 version "5.2.10"
164 resolved "https://registry.yarnpkg.com/@angular/service-worker/-/service-worker-5.2.9.tgz#47ee439f2f896ac701fee271d046589a6c46b6af" 164 resolved "https://registry.yarnpkg.com/@angular/service-worker/-/service-worker-5.2.10.tgz#ef861929e2ca5f1241f44be1ad5295544486514c"
165 dependencies: 165 dependencies:
166 tslib "^1.7.1" 166 tslib "^1.7.1"
167 167
@@ -397,9 +397,9 @@ amdefine@>=0.0.4:
397 version "1.0.1" 397 version "1.0.1"
398 resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" 398 resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
399 399
400angular2-notifications@^0.9.6: 400angular2-notifications@^1.0.0:
401 version "0.9.8" 401 version "1.0.0"
402 resolved "https://registry.yarnpkg.com/angular2-notifications/-/angular2-notifications-0.9.8.tgz#04e4744fcd7f6ada2eeeb8897fc9e3d5eb6e08c7" 402 resolved "https://registry.yarnpkg.com/angular2-notifications/-/angular2-notifications-1.0.0.tgz#07e2f970e32f0a67d67419a4dca21ecc9a452e3f"
403 403
404ansi-escapes@^1.0.0: 404ansi-escapes@^1.0.0:
405 version "1.4.0" 405 version "1.4.0"
@@ -1759,8 +1759,8 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
1759 supports-color "^2.0.0" 1759 supports-color "^2.0.0"
1760 1760
1761chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.3.2: 1761chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.3.2:
1762 version "2.3.2" 1762 version "2.4.0"
1763 resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.2.tgz#250dc96b07491bfd601e648d66ddf5f60c7a5c65" 1763 resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.0.tgz#a060a297a6b57e15b61ca63ce84995daa0fe6e52"
1764 dependencies: 1764 dependencies:
1765 ansi-styles "^3.2.1" 1765 ansi-styles "^3.2.1"
1766 escape-string-regexp "^1.0.5" 1766 escape-string-regexp "^1.0.5"
@@ -3864,8 +3864,8 @@ html-entities@^1.2.0:
3864 resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" 3864 resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f"
3865 3865
3866html-minifier@^3.2.3: 3866html-minifier@^3.2.3:
3867 version "3.5.14" 3867 version "3.5.15"
3868 resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.14.tgz#88653b24b344274e3e3d7052f1541ebea054ac60" 3868 resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.15.tgz#f869848d4543cbfd84f26d5514a2a87cbf9a05e0"
3869 dependencies: 3869 dependencies:
3870 camel-case "3.0.x" 3870 camel-case "3.0.x"
3871 clean-css "4.1.x" 3871 clean-css "4.1.x"
@@ -6206,8 +6206,8 @@ postcss-load-plugins@^2.3.0:
6206 object-assign "^4.1.0" 6206 object-assign "^4.1.0"
6207 6207
6208postcss-loader@^2.0.10: 6208postcss-loader@^2.0.10:
6209 version "2.1.3" 6209 version "2.1.4"
6210 resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.1.3.tgz#eb210da734e475a244f76ccd61f9860f5bb3ee09" 6210 resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.1.4.tgz#f44a6390e03c84108b2b2063182d1a1011b2ce76"
6211 dependencies: 6211 dependencies:
6212 loader-utils "^1.1.0" 6212 loader-utils "^1.1.0"
6213 postcss "^6.0.0" 6213 postcss "^6.0.0"
@@ -6410,8 +6410,8 @@ postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.14, postcss@^6.0.16, postcss@^6.0.1
6410 supports-color "^5.3.0" 6410 supports-color "^5.3.0"
6411 6411
6412prebuild-install@~2.5.0: 6412prebuild-install@~2.5.0:
6413 version "2.5.1" 6413 version "2.5.3"
6414 resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-2.5.1.tgz#0f234140a73760813657c413cdccdda58296b1da" 6414 resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-2.5.3.tgz#9f65f242782d370296353710e9bc843490c19f69"
6415 dependencies: 6415 dependencies:
6416 detect-libc "^1.0.3" 6416 detect-libc "^1.0.3"
6417 expand-template "^1.0.2" 6417 expand-template "^1.0.2"
@@ -6442,8 +6442,8 @@ preserve@^0.2.0:
6442 resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" 6442 resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
6443 6443
6444prettier@^1.5.3: 6444prettier@^1.5.3:
6445 version "1.12.0" 6445 version "1.12.1"
6446 resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.12.0.tgz#d26fc5894b9230de97629b39cae225b503724ce8" 6446 resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.12.1.tgz#c1ad20e803e7749faf905a409d2367e06bbe7325"
6447 6447
6448pretty-bytes@^4.0.2: 6448pretty-bytes@^4.0.2:
6449 version "4.0.2" 6449 version "4.0.2"
@@ -6695,8 +6695,8 @@ rc@^1.1.6, rc@^1.1.7:
6695 strip-json-comments "~2.0.1" 6695 strip-json-comments "~2.0.1"
6696 6696
6697react-dom@^16.2.0: 6697react-dom@^16.2.0:
6698 version "16.3.1" 6698 version "16.3.2"
6699 resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.3.1.tgz#6a3c90a4fb62f915bdbcf6204422d93a7d4ca573" 6699 resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.3.2.tgz#cb90f107e09536d683d84ed5d4888e9640e0e4df"
6700 dependencies: 6700 dependencies:
6701 fbjs "^0.8.16" 6701 fbjs "^0.8.16"
6702 loose-envify "^1.1.0" 6702 loose-envify "^1.1.0"
@@ -6704,8 +6704,8 @@ react-dom@^16.2.0:
6704 prop-types "^15.6.0" 6704 prop-types "^15.6.0"
6705 6705
6706react@^16.2.0: 6706react@^16.2.0:
6707 version "16.3.1" 6707 version "16.3.2"
6708 resolved "https://registry.yarnpkg.com/react/-/react-16.3.1.tgz#4a2da433d471251c69b6033ada30e2ed1202cfd8" 6708 resolved "https://registry.yarnpkg.com/react/-/react-16.3.2.tgz#fdc8420398533a1e58872f59091b272ce2f91ea9"
6709 dependencies: 6709 dependencies:
6710 fbjs "^0.8.16" 6710 fbjs "^0.8.16"
6711 loose-envify "^1.1.0" 6711 loose-envify "^1.1.0"
@@ -7956,8 +7956,8 @@ supports-color@^4.0.0, supports-color@^4.2.1:
7956 has-flag "^2.0.0" 7956 has-flag "^2.0.0"
7957 7957
7958supports-color@^5.1.0, supports-color@^5.3.0: 7958supports-color@^5.1.0, supports-color@^5.3.0:
7959 version "5.3.0" 7959 version "5.4.0"
7960 resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.3.0.tgz#5b24ac15db80fa927cf5227a4a33fd3c4c7676c0" 7960 resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54"
7961 dependencies: 7961 dependencies:
7962 has-flag "^3.0.0" 7962 has-flag "^3.0.0"
7963 7963
@@ -8071,8 +8071,8 @@ timed-out@^4.0.0, timed-out@^4.0.1:
8071 resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" 8071 resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
8072 8072
8073timers-browserify@^2.0.4: 8073timers-browserify@^2.0.4:
8074 version "2.0.6" 8074 version "2.0.7"
8075 resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.6.tgz#241e76927d9ca05f4d959819022f5b3664b64bae" 8075 resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.7.tgz#e74093629cb62c20332af587ddc0c86b4ba97a05"
8076 dependencies: 8076 dependencies:
8077 setimmediate "^1.0.4" 8077 setimmediate "^1.0.4"
8078 8078
diff --git a/scripts/watch/server.sh b/scripts/watch/server.sh
index 42a594d85..6250fb9a4 100755
--- a/scripts/watch/server.sh
+++ b/scripts/watch/server.sh
@@ -4,4 +4,4 @@ set -eu
4 4
5NODE_ENV=test concurrently -k \ 5NODE_ENV=test concurrently -k \
6 "npm run tsc -- --sourceMap && npm run nodemon -- --delay 2 --watch ./dist dist/server" \ 6 "npm run tsc -- --sourceMap && npm run nodemon -- --delay 2 --watch ./dist dist/server" \
7 "npm run tsc -- --sourceMap -w" 7 "npm run tsc -- --sourceMap --preserveWatchOutput -w"